New adapters ported from bb-sites: - bbc/news: BBC News RSS headlines (public API) - weibo/hot: 微博热搜 (browser) - boss/search: BOSS直聘搜索职位 (browser) - yahoo-finance/quote: 股票行情 (browser) - reuters/search: 路透社新闻搜索 (browser) - smzdm/search: 什么值得买搜索好价 (browser) - ctrip/search: 携程旅行搜索 (browser) - youtube/search: YouTube视频搜索 (browser) Also: build script adds clean-yaml step, docs updated to 28 commands / 16 sites
4.8 KiB
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. 28+ commands across 16 sites — bilibili, zhihu, xiaohongshu, twitter, reddit, 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 - 📝 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 | |
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 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