OpenCLI
Make any website your CLI.
Zero risk · Reuse Chrome login · AI-powered discovery
A CLI tool that turns any website into a command-line interface. 46 commands across 17 sites — bilibili, zhihu, xiaohongshu, twitter, reddit, xueqiu, github, v2ex, hackernews, bbc, weibo, boss, yahoo-finance, reuters, smzdm, ctrip, youtube — powered by browser session reuse and AI-native discovery.
✨ Highlights
- 🔐 Account-safe — Reuses Chrome's logged-in state; your credentials never leave the browser
- 🤖 AI Agent ready —
explorediscovers APIs,synthesizegenerates adapters,cascadefinds auth strategies - 🚀 Dynamic Loader — Simply drop
.tsor.yamladapters into theclis/folder for auto-registration - 📝 Dual-Engine Architecture:
- YAML Declarative Engine: Most adapters are minimal ~30 lines of YAML pipeline
- Native Browser Injection Engine: Advanced TypeScript utilities (
installInterceptor,autoScroll) for XHR hijacking, GraphQL unwrapping, and store mutation
🚀 Quick Start
Install via npm (recommended)
npm install -g @jackwener/opencli
Then use directly:
opencli list # See all commands
opencli hackernews top --limit 5 # Public API, no browser
opencli bilibili hot --limit 5 # Browser command
opencli zhihu hot -f json # JSON output
Install from source
git clone git@github.com:jackwener/opencli.git
cd opencli && npm install
npx tsx src/main.ts list
Update
# npm global
npm update -g @jackwener/opencli
# Or reinstall to latest
npm install -g @jackwener/opencli@latest
📋 Prerequisites
Browser commands need:
- Chrome running and logged into the target site (e.g. bilibili.com, zhihu.com, xiaohongshu.com)
- Playwright MCP Bridge extension installed
- Configure
PLAYWRIGHT_MCP_EXTENSION_TOKEN(from the extension settings page) in your MCP config:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest", "--extension"],
"env": {
"PLAYWRIGHT_MCP_EXTENSION_TOKEN": "<your-token>"
}
}
}
}
Public API commands (hackernews, github search, v2ex) need no browser at all.
⚠️ 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.
📦 Built-in Commands
| Site | Commands | Mode |
|---|---|---|
| bilibili | hot search me favorite history feed user-videos subtitle dynamic ranking |
🔐 Browser |
| zhihu | hot search question |
🔐 Browser |
| xiaohongshu | search notifications feed me user |
🔐 Browser |
| xueqiu | feed hot-stock hot search stock watchlist |
🔐 Browser |
trending bookmarks profile search timeline |
🔐 Browser | |
hot frontpage search subreddit |
🔐 Browser | |
hot |
🔐 Browser | |
| boss | search |
🔐 Browser |
| youtube | search |
🔐 Browser |
| yahoo-finance | quote |
🔐 Browser |
| reuters | search |
🔐 Browser |
| smzdm | search |
🔐 Browser |
| ctrip | search |
🔐 Browser |
| github | trending search |
🔐 / 🌐 |
| v2ex | hot latest topic |
🌐 Public |
| hackernews | top |
🌐 Public |
| bbc | news |
🌐 Public |
🎨 Output Formats
opencli bilibili hot -f table # Default: rich table
opencli bilibili hot -f json # JSON (pipe to jq, feed to AI)
opencli bilibili hot -f md # Markdown
opencli bilibili hot -f csv # CSV
opencli bilibili hot -v # Verbose: show pipeline steps
🧠 AI Agent Workflow
# 1. Deep Explore — discover APIs, infer capabilities, detect framework
opencli explore https://example.com --site mysite
# 2. Synthesize — generate YAML adapters from explore artifacts
opencli synthesize mysite
# 3. Generate — one-shot: explore → synthesize → register
opencli generate https://example.com --goal "hot"
# 4. Strategy Cascade — auto-probe: PUBLIC → COOKIE → HEADER
opencli cascade https://api.example.com/data
Explore outputs to .opencli/explore/<site>/:
manifest.json— site metadata, framework detectionendpoints.json— scored API endpoints with response schemascapabilities.json— inferred capabilities with confidence scoresauth.json— authentication strategy recommendations
🔧 Create New Commands
See CLI-CREATOR.md for the full adapter guide (YAML pipeline + TypeScript).
Releasing New Versions
# Bump version
npm version patch # 0.1.0 → 0.1.1
npm version minor # 0.1.0 → 0.2.0
npm version major # 0.1.0 → 1.0.0
# Push tag to trigger GitHub Actions auto-release
git push --follow-tags
The CI will automatically build, create a GitHub release, and publish to npm.
📄 License
MIT