跳转到内容

OpenCLI 完全指南:把任何网站变成命令行工具

OpenCLIgithub.com/jackwener/opencli)是一个开源 CLI 工具,能够把任何网站(B站、知乎、小红书、Twitter 等 79+ 平台)、Electron 桌面应用(Cursor、ChatGPT、Antigravity)以及本地 CLI 工具统一转化为命令行接口。

核心特点:零风控 · 复用 Chrome 登录态 · AI 原生 · 零 LLM 成本

  • 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 中登录目标网站。

OpenCLI 通过轻量级 Chrome 扩展与浏览器通信:

  1. GitHub Releases 下载最新的 opencli-extension.zip 并解压
  2. 打开 chrome://extensions,启用右上角开发者模式
  3. 点击加载已解压的扩展程序,选择解压后的文件夹
Terminal window
npm install -g @jackwener/opencli
# 安装 AI Skills(供 Claude Code / Cursor 使用)
npx skills add jackwener/opencli
Terminal window
opencli doctor # 检查扩展 + daemon 连通性
opencli daemon status # 查看 daemon 运行状态
opencli list # 查看所有可用命令
Terminal window
# B站热门视频 TOP10
opencli bilibili hot --limit 10
# Twitter 热搜前5
opencli 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

从各平台下载图片、视频、文章为本地文件。

Terminal window
# 小红书笔记(图片 + 视频)
opencli xiaohongshu download <笔记ID> --output ./downloads
# B站视频(需先安装 yt-dlp)
brew install yt-dlp
opencli 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

通过命令行控制 Cursor、ChatGPT、Antigravity 等 AI 应用。

Terminal window
# Cursor IDE
opencli cursor status # 查看状态
opencli cursor send "用 Python 写快速排序" # 向 Composer 发指令
opencli cursor screenshot # 截取当前界面
opencli cursor composer "重构这段代码" # 使用 Composer
# ChatGPT 桌面客户端
opencli chatgpt new "解释什么是微服务架构" # 新建对话
opencli chatgpt send "继续" # 继续对话
# Antigravity Ultra
opencli antigravity status
opencli antigravity send "分析这篇文档"

OpenCLI 作为统一入口,调用本地 CLI 工具,支持自动安装缺失工具。

Terminal window
# GitHub CLI
opencli gh pr list --limit 5
opencli gh repo list
# Docker
opencli docker ps
opencli docker images
# Vercel
opencli vercel deploy --prod
opencli vercel logs
# 飞书 CLI(200+ 命令)
opencli lark-cli calendar +agenda
opencli lark-cli doc create --title "我的文档"
# 钉钉 / 企业微信
opencli dingtalk msg send --to user "hello"
opencli wecom msg send --to user "hello"

零配置透传:OpenCLI 会把你的输入原样转发给底层二进制,保留原生 stdout/stderr 行为。如果工具未安装,会自动尝试通过包管理器安装后再执行。

给 AI Agent(Claude Code、Cursor)加载 opencli-operate skill,实现直接控制浏览器操作任意网站:

Terminal window
# 安装 operate skill
npx skills add jackwener/opencli --skill opencli-operate

之后 AI Agent 即可使用以下命令操作浏览器:

Terminal window
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 # 查看网络请求
Terminal window
# 雪球热门股票
opencli xueqiu hot --limit 10
# 雅虎财经行情
opencli yahoo-finance quote AAPL
# 豆瓣电影 TOP250
opencli douban top250 --limit 10
Terminal window
# Boss 直聘搜索
opencli boss search 前端工程师 --city 广州
# LinkedIn 搜索
opencli linkedin search "software engineer" --limit 10
Terminal window
# JSON 输出(方便脚本处理)
opencli hackernews top --limit 5 -f json
# YAML 输出
opencli zhihu hot --limit 5 -f yaml
# 默认表格输出(人类可读)
opencli bilibili hot --limit 5
平台命令模式
B站hot, search, ranking, download, dynamic浏览器
知乎hot, search, question, download浏览器
小红书search, feed, user, download, publish浏览器
Twitter/Xtrending, search, timeline, post, like浏览器
Reddithot, frontpage, popular, search, subreddit浏览器
HackerNewstop, new, best, ask, show, jobs公共 API
Cursorstatus, send, composer, screenshot, dump桌面端
ChatGPTstatus, new, send, read, model桌面端
Antigravitystatus, send, dump, watch桌面端
GitHub (gh)pr list, repo, issue, workflow透传
Spotifyauth, play, pause, search, queueOAuth API
Notionstatus, search, read, write, export桌面端

完整 79+ 适配器列表请查看:github.com/jackwener/opencli/docs/adapters/index.md

自定义适配器:创建自己的 CLI 命令

Section titled “自定义适配器:创建自己的 CLI 命令”

OpenCLI 支持深度扩展,除了内置的 79+ 适配器,你还可以将本地项目、GitHub 仓库、甚至自己开发的工具封装成 CLI 命令。以下介绍三种主流场景。

opencli register 可以把任何本地已安装的 CLI 工具注册到 OpenCLI 统一入口,实现自动发现和透传执行。

Terminal window
# 注册任意本地 CLI(OpenCLI 会自动检测)
opencli register mycli
# 注册后即可通过 opencli 调用
opencli mycli --help
# 未安装时会自动尝试安装
opencli mycli some-command
# → 检测到未安装 → 自动 brew install mycli → 重试

示例:将 GitHub CLI 封装调用:

Terminal window
# 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

Terminal window
# macOS 检查方式
ls /Applications/YourApp.app/Contents/Frameworks/Electron\ Framework.framework

Step 2:启动调试端口

Terminal window
# 以调试模式启动应用
/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)

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)

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)

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 支持记录你在浏览器中的操作,自动生成适配器代码框架。

Terminal window
# 启动录制模式
opencli record
# 在浏览器中进行一系列操作
# 例如:打开网页 → 搜索 → 点击结果 → 获取内容
# 录制结束后,自动生成 .ts 适配器文件到 clis/
# 生成的文件结构:
clis/
mysite/
search.ts # 搜索命令
read.ts # 读取内容
status.ts # 连接状态

生成的代码可直接修改调整,无需从零编写。

方式四:YAML 声明式适配器(无代码)

Section titled “方式四:YAML 声明式适配器(无代码)”

对于简单场景,可直接编写 YAML 配置文件,无需 TypeScript:

clis/mysite.yaml
name: mysite
commands:
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(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>` — 向我的应用发消息

大多数命令依赖 Chrome 的登录态。请确认:

  1. Chrome/Chromium 已打开并登录目标网站
  2. 运行命令时浏览器没有被其他进程占用
Terminal window
opencli doctor # 自动诊断并修复问题
opencli daemon status # 查看 daemon 是否正常运行
opencli daemon stop # 停止 daemon
opencli daemon start # 手动启动 daemon

OpenCLI 支持深度扩展,详见上文「自定义适配器」章节。三种方式:

  1. opencli register 注册已有本地 CLI
  2. opencli record 录制浏览器操作自动生成代码
  3. 手动编写 TypeScript 或 YAML 适配器放入 clis/ 目录

B站等平台需要先安装 yt-dlp

Terminal window
brew install yt-dlp
# 或
pip install yt-dlp

OpenCLI 是一个极具创新性的工具,用统一 CLI 接口打破了网站、应用、工具之间的边界:

  • 零配置:安装即用,不需要 API Key
  • 零成本:运行不消耗 Token
  • 账户安全:复用浏览器登录,凭证不外泄
  • 79+ 平台:覆盖全球和中国主流平台
  • AI 原生:天然支持 AI Agent 调用
  • 可扩展:支持自定义适配器和注册本地 CLI

项目地址github.com/jackwener/opencli