OpenCLI
Make any website, Electron App, or Local Tool your CLI.
Zero risk · Reuse Chrome/Chromium 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 — Load the opencli-operate skill to give any AI agent (Claude Code, Cursor) direct browser control. Operate any website, then crystallize those interactions into reusable CLI commands. Configure opencli list in your AGENT.md or .cursorrules so the AI auto-discovers 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.
Highlights
- CLI All Electron — CLI-ify apps like Antigravity Ultra! Now AI can control itself natively.
- Browser Automation —
operate gives AI agents direct browser control: click, type, extract, screenshot — any interaction, fully scriptable.
- Website → CLI — Turn any website into a deterministic CLI: 70+ pre-built adapters, or crystallize your own with
opencli record.
- Account-safe — Reuses Chrome/Chromium logged-in state; your credentials never leave the browser.
- Anti-detection built-in — Patches
navigator.webdriver, stubs window.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 —
explore discovers APIs, synthesize generates adapters, cascade finds auth strategies, operate controls the browser directly.
- External CLI Hub — Discover, auto-install, and passthrough commands to any external CLI (gh, obsidian, docker, etc). Zero setup.
- Self-healing setup —
opencli doctor diagnoses and auto-starts the daemon, extension, and live browser connectivity.
- Dynamic Loader — Simply drop
.ts or .yaml adapters into the clis/ folder for auto-registration.
- 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 — 79+ sites across global and Chinese platforms (Bilibili, Zhihu, Xiaohongshu, Reddit, HackerNews, and more), plus desktop Electron apps via CDP.
Quick Start
1. Install Browser Bridge Extension
OpenCLI connects to your browser through a lightweight Browser Bridge Chrome/Chromium 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.
2. Install OpenCLI
Install via npm (recommended)
npm install -g @jackwener/opencli
npx skills add jackwener/opencli
3. Verify & Try
opencli doctor
opencli daemon status
Try it out:
opencli list
opencli hackernews top --limit 5
opencli bilibili hot --limit 5
4. Browser Automation — Make Websites Accessible for AI Agents
Point your AI agent (Claude Code, Cursor) to skills/opencli-operate/SKILL.md. It has everything needed — full command reference, examples, and workflow.
Available commands: open, state, click, type, select, keys, wait, get, screenshot, scroll, back, eval, network, init, verify, close.
Update
npm install -g @jackwener/opencli@latest
Install AI Skills
OpenCLI provides skills for AI agents (Claude Code, etc.):
npx skills add jackwener/opencli
npx skills add jackwener/opencli --skill opencli-usage
npx skills add jackwener/opencli --skill opencli-operate
npx skills add jackwener/opencli --skill opencli-explorer
npx skills add jackwener/opencli --skill opencli-oneshot
For Developers
Install from source
git clone git@github.com:jackwener/opencli.git && cd opencli && npm install && npm run build && npm link
Load Source Browser Bridge Extension
- Open
chrome://extensions and enable Developer mode (top-right toggle).
- Click Load unpacked and select the
extension/ directory from this repository.
Prerequisites
- Node.js: >= 20.0.0 (or Bun >= 1.0)
- Chrome or Chromium running and logged into the target site (e.g. bilibili.com, zhihu.com, xiaohongshu.com, goofish.com).
⚠️ Important: Browser commands reuse your Chrome/Chromium login session. You must be logged into the target website in Chrome or Chromium before running commands. If you get empty data or errors, check your login status first.
Built-in Commands
| xiaohongshu | search note comments feed user download publish 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 |
| tieba | hot posts search read |
| hupu | hot search detail mentions reply like unlike |
| twitter | 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 |
| reddit | hot frontpage popular search subreddit read user user-posts user-comments upvote upvoted save saved comment subscribe |
| zhihu | hot search question download follow like favorite comment answer |
| amazon | bestsellers search product offer discussion movers-shakers new-releases |
| 1688 | search item assets download store |
| gemini | new ask image deep-research deep-research-result |
| yuanbao | new ask |
| notebooklm | status list open current get history summary note-list notes-get source-list source-get source-fulltext source-guide |
| spotify | auth status play pause next prev volume search queue shuffle repeat |
| xianyu | search item chat |
| xiaoe | courses detail catalog play-url content |
| quark | ls mkdir mv rename rm save share-tree |
79+ adapters in total — → see all supported sites & commands
CLI Hub
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).
| gh | GitHub CLI | opencli gh pr list --limit 5 |
| obsidian | Obsidian vault management | opencli obsidian search query="AI" |
| docker | Docker | opencli docker ps |
| lark-cli | Lark/Feishu — messages, docs, calendar, tasks, 200+ commands | opencli lark-cli calendar +agenda |
| dingtalk | DingTalk — cross-platform CLI for DingTalk's full suite, designed for humans and AI agents | opencli dingtalk msg send --to user "hello" |
| wecom | WeCom/企业微信 — CLI for WeCom open platform, for humans and AI agents | opencli wecom msg send --to user "hello" |
| vercel | Vercel — deploy projects, manage domains, env vars, logs | opencli vercel deploy --prod |
Register your own — add any local CLI so AI agents can discover it via opencli list:
opencli register mycli
Desktop App Adapters
Control Electron desktop apps directly from the terminal. Each adapter has its own detailed documentation:
| 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.
Download Support
OpenCLI supports downloading images, videos, and articles from supported platforms.
| xiaohongshu | Images, Videos | Downloads all media from a note |
| bilibili | Videos | Requires yt-dlp installed |
| twitter | Images, Videos | From user media tab or single tweet |
| douban | Images | Poster / still image lists |
| pixiv | Images | Original-quality illustrations, multi-page |
| 1688 | Images, Videos | Downloads page-visible product media from item pages |
| 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 ./twitter
opencli 1688 download 841141931191 --output ./1688-downloads
Output Formats
All built-in commands support --format / -f with table (default), json, yaml, md, and csv.
opencli bilibili hot -f json
opencli bilibili hot -f csv
opencli bilibili hot -v
Exit Codes
opencli follows Unix sysexits.h conventions so it integrates naturally with shell pipelines and CI scripts:
0 | Success | Command completed normally |
1 | Generic error | Unexpected / unclassified failure |
2 | Usage error | Bad arguments or unknown command |
66 | Empty result | No data returned (EX_NOINPUT) |
69 | Service unavailable | Browser Bridge not connected (EX_UNAVAILABLE) |
75 | Temporary failure | Command timed out — retry (EX_TEMPFAIL) |
77 | Auth required | Not logged in to target site (EX_NOPERM) |
78 | Config error | Missing credentials or bad config (EX_CONFIG) |
130 | Interrupted | Ctrl-C / SIGINT |
opencli spotify status || echo "exit $?"
opencli github issues 2>/dev/null
[ $? -eq 77 ] && opencli github auth
Plugins
Extend 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
See Plugins Guide for creating your own plugin.
For AI Agents (Developer Guide)
Quick mode: To generate a single command for a specific page URL, see opencli-oneshot skill — just a URL + one-line goal, 4 steps done.
Full mode: Before writing any adapter code, read opencli-explorer skill. It contains the complete browser exploration workflow, the 5-tier authentication strategy decision tree, and debugging guide.
opencli explore https://example.com --site mysite
opencli synthesize mysite
opencli generate https://example.com --goal "hot"
opencli cascade https://api.example.com/data
Testing
See TESTING.md for how to run and write tests.
Troubleshooting
- "Extension not connected" — Ensure the Browser Bridge extension is installed and enabled in
chrome://extensions in Chrome or Chromium.
- "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/Chromium 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
Star History

License
Apache-2.0