OpenCLI 完全指南:把任何网站变成命令行工具
OpenCLI(github.com/jackwener/opencli)是一个开源 CLI 工具,能够把任何网站(B站、知乎、小红书、Twitter 等 79+ 平台)、Electron 桌面应用(Cursor、ChatGPT、Antigravity)以及本地 CLI 工具统一转化为命令行接口。
核心特点:零风控 · 复用 Chrome 登录态 · AI 原生 · 零 LLM 成本
亮点功能一览
Section titled “亮点功能一览”- 79+ 网站适配器 — 覆盖 B站、知乎、小红书、Twitter、Reddit、HackerNews 等国内外主流平台
- Electron 应用控制 — 通过 CDP 协议直接控制 Cursor、ChatGPT、Antigravity 等桌面应用
- CLI 枢纽 — 统一入口调用 gh、docker、vercel 等本地 CLI,支持自动安装缺失工具
- AI Agent 原生 — 可被 Claude Code、Cursor 等 AI Agent 直接调用,实现浏览器自动化
- 零成本运行 — 运行时不消耗任何 LLM Token,调用无限次也不花钱
- 账户安全 — 复用 Chrome/Chromium 登录态,凭证不离开浏览器
- Node.js: >= 20.0.0(或 Bun >= 1.0)
- Chrome 或 Chromium 浏览器正在运行,且已登录目标网站
⚠️ 重要:大多数命令复用你的 Chrome/Chromium 登录状态。运行命令前,必须先在 Chrome 中登录目标网站。
第一步:安装 Browser Bridge 扩展
Section titled “第一步:安装 Browser Bridge 扩展”OpenCLI 通过轻量级 Chrome 扩展与浏览器通信:
- 到 GitHub Releases 下载最新的
opencli-extension.zip并解压 - 打开
chrome://extensions,启用右上角开发者模式 - 点击加载已解压的扩展程序,选择解压后的文件夹
第二步:安装 OpenCLI
Section titled “第二步:安装 OpenCLI”npm install -g @jackwener/opencli
# 安装 AI Skills(供 Claude Code / Cursor 使用)npx skills add jackwener/opencli第三步:验证
Section titled “第三步:验证”opencli doctor # 检查扩展 + daemon 连通性opencli daemon status # 查看 daemon 运行状态opencli list # 查看所有可用命令8 大实战使用场景
Section titled “8 大实战使用场景”场景一:社交媒体管理
Section titled “场景一:社交媒体管理”# B站热门视频 TOP10opencli bilibili hot --limit 10
# Twitter 热搜前5opencli twitter trending --limit 5
# Reddit 热门帖子opencli reddit hot --limit 10
# 小红书搜索opencli xiaohongshu search 程序员穿搭 --limit 10
# 知乎热榜opencli zhihu hot --limit 5
# HackerNews(公共 API,无需浏览器)opencli hackernews top --limit 5场景二:内容下载
Section titled “场景二:内容下载”从各平台下载图片、视频、文章为本地文件。
# 小红书笔记(图片 + 视频)opencli xiaohongshu download <笔记ID> --output ./downloads
# B站视频(需先安装 yt-dlp)brew install yt-dlpopencli bilibili download BV1xxx --output ./bilibili --quality 1080p
# Twitter 用户媒体opencli twitter download elonmusk --limit 20 --output ./twitter
# 导出知乎文章为 Markdown(可下载图片)opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./zhihu
# 微信公众号文章opencli weixin download <文章链接> --output ./weixin
# Pixiv 插画(支持多页作品)opencli pixiv download 12345678 --output ./pixiv场景三:AI 应用控制
Section titled “场景三:AI 应用控制”通过命令行控制 Cursor、ChatGPT、Antigravity 等 AI 应用。
# Cursor IDEopencli cursor status # 查看状态opencli cursor send "用 Python 写快速排序" # 向 Composer 发指令opencli cursor screenshot # 截取当前界面opencli cursor composer "重构这段代码" # 使用 Composer
# ChatGPT 桌面客户端opencli chatgpt new "解释什么是微服务架构" # 新建对话opencli chatgpt send "继续" # 继续对话
# Antigravity Ultraopencli antigravity statusopencli antigravity send "分析这篇文档"场景四:开发者工具枢纽
Section titled “场景四:开发者工具枢纽”OpenCLI 作为统一入口,调用本地 CLI 工具,支持自动安装缺失工具。
# GitHub CLIopencli gh pr list --limit 5opencli gh repo list
# Dockeropencli docker psopencli docker images
# Vercelopencli vercel deploy --prodopencli vercel logs
# 飞书 CLI(200+ 命令)opencli lark-cli calendar +agendaopencli lark-cli doc create --title "我的文档"
# 钉钉 / 企业微信opencli dingtalk msg send --to user "hello"opencli wecom msg send --to user "hello"零配置透传:OpenCLI 会把你的输入原样转发给底层二进制,保留原生 stdout/stderr 行为。如果工具未安装,会自动尝试通过包管理器安装后再执行。
场景五:AI Agent 浏览器自动化
Section titled “场景五:AI Agent 浏览器自动化”给 AI Agent(Claude Code、Cursor)加载 opencli-operate skill,实现直接控制浏览器操作任意网站:
# 安装 operate skillnpx skills add jackwener/opencli --skill opencli-operate之后 AI Agent 即可使用以下命令操作浏览器:
opencli operate open https://bilibili.com # 打开页面opencli operate click .video-card # 点击元素opencli operate type input[name=search] "程序员" # 输入文字opencli operate screenshot # 截图opencli operate get .title # 获取文本opencli operate scroll 300 # 滚动opencli operate network # 查看网络请求场景六:金融数据查询
Section titled “场景六:金融数据查询”# 雪球热门股票opencli xueqiu hot --limit 10
# 雅虎财经行情opencli yahoo-finance quote AAPL
# 豆瓣电影 TOP250opencli douban top250 --limit 10场景七:求职招聘
Section titled “场景七:求职招聘”# Boss 直聘搜索opencli boss search 前端工程师 --city 广州
# LinkedIn 搜索opencli linkedin search "software engineer" --limit 10场景八:输出格式控制
Section titled “场景八:输出格式控制”# JSON 输出(方便脚本处理)opencli hackernews top --limit 5 -f json
# YAML 输出opencli zhihu hot --limit 5 -f yaml
# 默认表格输出(人类可读)opencli bilibili hot --limit 5内置命令速查表
Section titled “内置命令速查表”| 平台 | 命令 | 模式 |
|---|---|---|
| B站 | hot, search, ranking, download, dynamic | 浏览器 |
| 知乎 | hot, search, question, download | 浏览器 |
| 小红书 | search, feed, user, download, publish | 浏览器 |
| Twitter/X | trending, search, timeline, post, like | 浏览器 |
hot, frontpage, popular, search, subreddit | 浏览器 | |
| HackerNews | top, new, best, ask, show, jobs | 公共 API |
| Cursor | status, send, composer, screenshot, dump | 桌面端 |
| ChatGPT | status, new, send, read, model | 桌面端 |
| Antigravity | status, send, dump, watch | 桌面端 |
| GitHub (gh) | pr list, repo, issue, workflow | 透传 |
| Spotify | auth, play, pause, search, queue | OAuth API |
| Notion | status, search, read, write, export | 桌面端 |
完整 79+ 适配器列表请查看:github.com/jackwener/opencli/docs/adapters/index.md
自定义适配器:创建自己的 CLI 命令
Section titled “自定义适配器:创建自己的 CLI 命令”OpenCLI 支持深度扩展,除了内置的 79+ 适配器,你还可以将本地项目、GitHub 仓库、甚至自己开发的工具封装成 CLI 命令。以下介绍三种主流场景。
方式一:注册已有本地 CLI 工具
Section titled “方式一:注册已有本地 CLI 工具”opencli register 可以把任何本地已安装的 CLI 工具注册到 OpenCLI 统一入口,实现自动发现和透传执行。
# 注册任意本地 CLI(OpenCLI 会自动检测)opencli register mycli
# 注册后即可通过 opencli 调用opencli mycli --help
# 未安装时会自动尝试安装opencli mycli some-command# → 检测到未安装 → 自动 brew install mycli → 重试示例:将 GitHub CLI 封装调用:
# gh 已注册,opencli 自动透传所有参数opencli gh issue list --state open --limit 10
# 支持管道化opencli gh repo list | grep "my-project"方式二:为 Electron 桌面应用创建适配器
Section titled “方式二:为 Electron 桌面应用创建适配器”Electron 应用(如自研工具、内部系统)可以通过 Chrome DevTools Protocol(CDP)直接接入 OpenCLI。
Step 1:确认应用是 Electron
# macOS 检查方式ls /Applications/YourApp.app/Contents/Frameworks/Electron\ Framework.frameworkStep 2:启动调试端口
# 以调试模式启动应用/Applications/YourApp.app/Contents/MacOS/YourApp --remote-debugging-port=9222
# 设置 CDP 端点环境变量export OPENCLI_CDP_ENDPOINT="http://127.0.0.1:9222"Step 3:创建基础适配器(clis/yourapp/status.ts)
export default async function (args: any, ctx: any) { const res = await ctx.cdpFetch("http://127.0.0.1:9222/json"); const data = await res.json(); return { success: true, title: data[0]?.title, url: data[0]?.webSocketDebuggerUrl, };}Step 4:创建 DOM 读取命令(clis/yourapp/dump.ts)
export default async function (args: any, ctx: any) { // 获取 DOM 快照用于分析页面结构 const result = await ctx.cdpCommand("DOM.getDocument", {}); return { html: result.root?.outerHTML || "" };}Step 5:创建操作命令(clis/yourapp/send.ts)
export default async function (args: any, ctx: any) { // 在 Composer 输入框中填写内容并提交 await ctx.cdpCommand("Runtime.evaluate", { expression: ` document.querySelector('.composer-input').focus(); document.execCommand('insertText', false, '${args.message}'); `, }); // 按下回车提交 await ctx.cdpCommand("Input.dispatchKeyEvent", { type: "keyDown", key: "Enter", }); return { success: true };}标准五命令集:每个 Electron 适配器建议按以下结构实现:
| 命令文件 | 作用 | 核心逻辑 |
|---|---|---|
status.ts | 验证 CDP 连接 | 访问 /json 端点 |
dump.ts | 探测 DOM 结构 | DOM.getDocument + DOM.getOuterHTML |
read.ts | 读取目标内容 | 精确定位感兴趣的区域 |
send.ts | 写入内容并提交 | evaluate + Input.dispatchKeyEvent |
new.ts | 创建新会话/标签页 | Tab.create 或快捷键模拟 |
方式三:录制浏览器操作生成适配器
Section titled “方式三:录制浏览器操作生成适配器”OpenCLI 支持记录你在浏览器中的操作,自动生成适配器代码框架。
# 启动录制模式opencli record
# 在浏览器中进行一系列操作# 例如:打开网页 → 搜索 → 点击结果 → 获取内容
# 录制结束后,自动生成 .ts 适配器文件到 clis/# 生成的文件结构:clis/ mysite/ search.ts # 搜索命令 read.ts # 读取内容 status.ts # 连接状态生成的代码可直接修改调整,无需从零编写。
方式四:YAML 声明式适配器(无代码)
Section titled “方式四:YAML 声明式适配器(无代码)”对于简单场景,可直接编写 YAML 配置文件,无需 TypeScript:
name: mysitecommands: search: url: "https://mysite.com/search?q={query}" selector: ".result-item h3" extract: "textContent" hot: url: "https://mysite.com/hot" selector: ".hot-list .item" fields: - title: "h3" - link: "a@href" - views: ".views"将 .yaml 文件放入 clis/ 目录,OpenCLI 自动加载注册。
注册自定义适配器到 AI Agent
Section titled “注册自定义适配器到 AI Agent”创建好适配器后,配置 AI Agent(Claude Code、Cursor)自动发现:
在项目根目录创建或修改 .cursorrules / AGENT.md:
## 可用工具
通过 OpenCLI 可调用以下命令:
### 本地 CLI- `opencli gh ...` — GitHub CLI- `opencli docker ...` — Docker 管理
### 浏览器自动化- `opencli operate open <url>` — 打开页面- `opencli operate click <selector>` — 点击元素- `opencli operate type <selector> <text>` — 输入文字- `opencli operate screenshot` — 截图- `opencli operate get <selector>` — 获取文本
### 自定义适配器- `opencli mysite search <keyword>` — 搜索我的网站- `opencli myapp send <message>` — 向我的应用发消息Q: 为什么返回空数据?
Section titled “Q: 为什么返回空数据?”大多数命令依赖 Chrome 的登录态。请确认:
- Chrome/Chromium 已打开并登录目标网站
- 运行命令时浏览器没有被其他进程占用
Q: 如何诊断问题?
Section titled “Q: 如何诊断问题?”opencli doctor # 自动诊断并修复问题opencli daemon status # 查看 daemon 是否正常运行opencli daemon stop # 停止 daemonopencli daemon start # 手动启动 daemonQ: 如何自定义适配器?
Section titled “Q: 如何自定义适配器?”OpenCLI 支持深度扩展,详见上文「自定义适配器」章节。三种方式:
opencli register注册已有本地 CLIopencli record录制浏览器操作自动生成代码- 手动编写 TypeScript 或 YAML 适配器放入
clis/目录
Q: 视频下载需要什么?
Section titled “Q: 视频下载需要什么?”B站等平台需要先安装 yt-dlp:
brew install yt-dlp# 或pip install yt-dlpOpenCLI 是一个极具创新性的工具,用统一 CLI 接口打破了网站、应用、工具之间的边界:
- ✅ 零配置:安装即用,不需要 API Key
- ✅ 零成本:运行不消耗 Token
- ✅ 账户安全:复用浏览器登录,凭证不外泄
- ✅ 79+ 平台:覆盖全球和中国主流平台
- ✅ AI 原生:天然支持 AI Agent 调用
- ✅ 可扩展:支持自定义适配器和注册本地 CLI