OpenCLI

Make any website your CLI.
Zero risk · Reuse Chrome login · AI-powered discovery

中文文档

npm

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 readyexplore discovers APIs, synthesize generates adapters, cascade finds auth strategies
  • 🚀 Dynamic Loader — Simply drop .ts or .yaml adapters into the clis/ 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

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:

  1. Chrome running and logged into the target site (e.g. bilibili.com, zhihu.com, xiaohongshu.com)
  2. Playwright MCP Bridge extension installed
  3. 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
twitter trending bookmarks profile search timeline 🔐 Browser
reddit hot frontpage search subreddit 🔐 Browser
weibo 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 detection
  • endpoints.json — scored API endpoints with response schemas
  • capabilities.json — inferred capabilities with confidence scores
  • auth.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

S
Description
将任意网站转为命令行接口,让 AI 智能体使用你的浏览器。|GitHub 镜像 28.5k · 🍴 2.8k
https://github.com/jackwener/opencli Readme 18 MiB
Languages
JavaScript 79.8%
TypeScript 17.7%
HTML 2.5%