Make any website, Electron App, or Local Tool your CLI. Zero risk · Reuse Chrome login · AI-powered discovery · Universal CLI Hub
A CLI tool that turns any website, Electron app, or local CLI tool into a command-line interface — Bilibili, Zhihu, 小红书, Twitter/X, Reddit, YouTube, Antigravity, gh, docker, and many more — powered by browser session reuse and AI-native discovery.
Built for AI Agents — Configure an instruction in your AGENT.md or .cursorrules to run opencli list via Bash. The AI will automatically discover and invoke all available tools.
CLI Hub — Register any local CLI (opencli register mycli) so AI agents can discover and call it alongside built-in commands. Auto-installs missing tools via your package manager (e.g. if gh isn't installed, opencli gh ... runs brew install gh first then re-executes seamlessly).
CLI for Electron Apps — Turn any Electron application into a CLI tool. Recombine, script, and extend apps like Antigravity Ultra from the terminal. AI agents can now control other AI apps natively.
- CLI All Electron — CLI-ify apps like Antigravity Ultra! Now AI can control itself natively.
- Account-safe — Reuses Chrome's logged-in state; your credentials never leave the browser.
- Anti-detection built-in — Patches
navigator.webdriver, stubswindow.chrome, fakes plugin lists, cleans ChromeDriver/Playwright globals, and strips CDP frames from Error stack traces. Extensive anti-fingerprinting and risk-control evasion measures baked in at every layer. - AI Agent ready —
explorediscovers APIs,synthesizegenerates adapters,cascadefinds auth strategies. - External CLI Hub — Discover, auto-install, and passthrough commands to any external CLI (gh, obsidian, docker, etc). Zero setup.
- Self-healing setup —
opencli doctordiagnoses and auto-starts the daemon, extension, and live browser connectivity. - Dynamic Loader — Simply drop
.tsor.yamladapters into theclis/folder for auto-registration. - Dual-Engine Architecture — Supports both YAML declarative data pipelines and robust browser runtime TypeScript injections.
There are many great browser automation tools. Here's when opencli is the right choice:
| Your need | Best tool | Why |
|---|---|---|
| Scheduled data extraction from specific sites | opencli | Pre-built adapters, deterministic JSON, zero LLM cost |
| AI agent needs reliable site operations | opencli | Hundreds of commands, structured output, fast deterministic response |
| Explore an unknown website ad-hoc | Browser-Use, Stagehand | LLM-driven general browsing for one-off tasks |
| Large-scale web crawling | Crawl4AI, Scrapy | Purpose-built for throughput and scale |
| Control desktop Electron apps from terminal | opencli | CDP + AppleScript — the only CLI tool that does this |
What makes opencli different:
- Zero LLM cost — No tokens consumed at runtime. Run 10,000 times and pay nothing.
- Deterministic — Same command, same output schema, every time. Pipeable, scriptable, CI-friendly.
- Broad coverage — 50+ sites across global and Chinese platforms (Bilibili, Zhihu, Xiaohongshu, Reddit, HackerNews, and more), plus desktop Electron apps via CDP.
For a detailed comparison with Browser-Use, Crawl4AI, Firecrawl, and others, see the Comparison Guide.
OpenCLI connects to your browser through a lightweight Browser Bridge Chrome Extension + micro-daemon (zero config, auto-start).
- Go to the GitHub Releases page and download the latest
opencli-extension.zip. - Unzip the file and open
chrome://extensions, enable Developer mode (top-right toggle). - Click Load unpacked and select the unzipped folder.
Install via npm (recommended)
npm install -g @jackwener/opencliopencli doctor # Check extension + daemon connectivityTry it out:
opencli list # See all commands
opencli hackernews top --limit 5 # Public API, no browser needed
opencli bilibili hot --limit 5 # Browser command (requires Extension)npm install -g @jackwener/opencli@latestInstall from source
git clone git@github.com:jackwener/opencli.git && cd opencli && npm install && npm run build && npm linkLoad Source Browser Bridge Extension
- Open
chrome://extensionsand enable Developer mode (top-right toggle). - Click Load unpacked and select the
extension/directory from this repository.
- Node.js: >= 20.0.0 (or Bun >= 1.0)
- Chrome running and logged into the target site (e.g. bilibili.com, zhihu.com, xiaohongshu.com).
⚠️ Important: Browser commands reuse your Chrome login session. You must be logged into the target website in Chrome before running commands. If you get empty data or errors, check your login status first.
| Site | Commands |
|---|---|
| xiaohongshu | search feed user download publish comments notifications creator-notes creator-notes-summary creator-note-detail creator-profile creator-stats |
| bilibili | hot search history feed ranking download comments dynamic favorite following me subtitle user-videos |
trending search timeline bookmarks post download profile article like likes notifications reply reply-dm thread follow unfollow followers following block unblock bookmark unbookmark delete hide-reply accept |
|
hot frontpage popular search subreddit user user-posts user-comments read save saved subscribe upvote upvoted comment |
65+ adapters in total — → see all supported sites & commands
OpenCLI acts as a universal hub for your existing command-line tools — unified discovery, pure passthrough execution, and auto-install (if a tool isn't installed, OpenCLI runs brew install <tool> automatically before re-running the command).
| External CLI | Description | Example |
|---|---|---|
| gh | GitHub CLI | opencli gh pr list --limit 5 |
| obsidian | Obsidian vault management | opencli obsidian search query="AI" |
| docker | Docker | opencli docker ps |
| gws | Google Workspace CLI | opencli gws docs list |
Register your own — add any local CLI so AI agents can discover it via opencli list:
opencli register mycliControl Electron desktop apps directly from the terminal. Each adapter has its own detailed documentation:
| App | Description | Doc |
|---|---|---|
| Cursor | Control Cursor IDE — Composer, chat, code extraction | Doc |
| Codex | Drive OpenAI Codex CLI agent headlessly | Doc |
| Antigravity | Control Antigravity Ultra from terminal | Doc |
| ChatGPT | Automate ChatGPT macOS desktop app | Doc |
| ChatWise | Multi-LLM client (GPT-4, Claude, Gemini) | Doc |
| Notion | Search, read, write Notion pages | Doc |
| Discord | Discord Desktop — messages, channels, servers | Doc |
| Doubao | Control Doubao AI desktop app via CDP | Doc |
To add a new Electron app, start with docs/guide/electron-app-cli.md.
OpenCLI supports downloading images, videos, and articles from supported platforms.
| Platform | Content Types | Notes |
|---|---|---|
| xiaohongshu | Images, Videos | Downloads all media from a note |
| bilibili | Videos | Requires yt-dlp installed |
| Images, Videos | From user media tab or single tweet | |
| douban | Images | Poster / still image lists |
| pixiv | Images | Original-quality illustrations, multi-page |
| zhihu | Articles (Markdown) | Exports with optional image download |
| weixin | Articles (Markdown) | WeChat Official Account articles |
For video downloads, install yt-dlp first: brew install yt-dlp
opencli xiaohongshu download abc123 --output ./xhs
opencli bilibili download BV1xxx --output ./bilibili
opencli twitter download elonmusk --limit 20 --output ./twitterAll built-in commands support --format / -f with table (default), json, yaml, md, and csv.
opencli bilibili hot -f json # Pipe to jq or LLMs
opencli bilibili hot -f csv # Spreadsheet-friendly
opencli bilibili hot -v # Verbose: show pipeline debug stepsExtend OpenCLI with community-contributed adapters:
opencli plugin install github:user/opencli-plugin-my-tool
opencli plugin list
opencli plugin update --all
opencli plugin uninstall my-tool| Plugin | Type | Description |
|---|---|---|
| opencli-plugin-github-trending | YAML | GitHub Trending repositories |
| opencli-plugin-hot-digest | TS | Multi-platform trending aggregator |
| opencli-plugin-juejin | YAML | 稀土掘金 (Juejin) hot articles |
See Plugins Guide for creating your own plugin.
Quick mode: To generate a single command for a specific page URL, see CLI-ONESHOT.md — just a URL + one-line goal, 4 steps done.
Full mode: Before writing any adapter code, read CLI-EXPLORER.md. It contains the complete browser exploration workflow, the 5-tier authentication strategy decision tree, and debugging guide.
opencli explore https://example.com --site mysite # Discover APIs + capabilities
opencli synthesize mysite # Generate YAML adapters
opencli generate https://example.com --goal "hot" # One-shot: explore → synthesize → register
opencli cascade https://api.example.com/data # Auto-probe: PUBLIC → COOKIE → HEADERSee TESTING.md for how to run and write tests.
- "Extension not connected" — Ensure the Browser Bridge extension is installed and enabled in
chrome://extensions. - "attach failed: Cannot access a chrome-extension:// URL" — Another extension may be interfering. Try disabling other extensions temporarily.
- Empty data or 'Unauthorized' error — Your Chrome login session may have expired. Navigate to the target site and log in again.
- Node API errors — Ensure Node.js >= 20. Some dependencies require modern Node APIs.
- Daemon issues — Check status:
curl localhost:19825/status· View logs:curl localhost:19825/logs