OpenCLI
Make any website your CLI.
Zero risk · Reuse Chrome login · AI-powered discovery
OpenCLI turns any website into a command-line tool by bridging your Chrome browser through Playwright MCP. No passwords stored, no tokens leaked — it just rides your existing browser session.
✨ Highlights
- 🌐 25+ commands, 8 sites — Bilibili, Zhihu, GitHub, Twitter/X, Reddit, V2EX, Xiaohongshu, Hacker News
- 🔐 Account-safe — Reuses Chrome's logged-in state; your credentials never leave the browser
- 🤖 AI Agent ready —
explorediscovers APIs,synthesizegenerates adapters,cascadefinds auth strategies - 📝 Declarative YAML — Most adapters are ~30 lines of YAML pipeline
- 🔌 TypeScript escape hatch — Complex adapters (XHR interception, GraphQL) in TS
🚀 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 |
🔐 Browser |
| zhihu | hot search question |
🔐 Browser |
| xiaohongshu | search notifications feed |
🔐 Browser |
trending |
🔐 Browser | |
hot |
🔐 Browser | |
| github | trending search |
🔐 / 🌐 |
| v2ex | hot latest topic |
🌐 Public |
| hackernews | top |
🌐 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 SKILL.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
opencli can do, how to discover adapters, what flags and output formats are…; opencli-browser: Use when an agent needs to drive a real Chrome window via opencli — inspect a page, fill forms, click through logged-in flows, or extract data ad-hoc. Covers…; opencli-autofix: Automatically fix broken OpenCLI adapters when commands fail. Load this skill when an opencli command fails — it guides you through co…