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. 47 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.
- 🔐 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
npm install -g @jackwener/opencliThen 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 outputgit clone git@github.com:jackwener/opencli.git
cd opencli && npm install
npx tsx src/main.ts list# npm global
npm update -g @jackwener/opencli
# Or reinstall to latest
npm install -g @jackwener/opencli@latestBrowser 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.
| Site | Commands | Mode |
|---|---|---|
| bilibili | hot search me favorite history feed user-videos subtitle dynamic ranking following |
🔐 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 | search |
🌐 Public |
| v2ex | hot latest topic |
🌐 Public |
| hackernews | top |
🌐 Public |
| bbc | news |
🌐 Public |
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# 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/dataExplore 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
See CLI-CREATOR.md for the full adapter guide (YAML pipeline + TypeScript).
# 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-tagsThe CI will automatically build, create a GitHub release, and publish to npm.
MIT