@jackwener/opencli
v1.7.18
Published
Make any website or Electron App your CLI. AI-powered.
Readme
OpenCLI
把网站、浏览器会话、Electron 应用和本地工具,统一变成适合人类与 AI Agent 使用的确定性接口。
复用浏览器登录态,先自动化真实操作,再把高频流程沉淀成可复用的 CLI 命令。
OpenCLI 可以用同一套 CLI 做三类事情:
- 直接使用现成适配器:B站、知乎、小红书、Twitter/X、Reddit、HackerNews 等 100+ 站点 开箱即用。
- 让 AI Agent 操作任意网站:在你的 AI Agent(Claude Code、Cursor 等)中安装
opencli-adapter-authorskill,Agent 就能用你的已登录浏览器导航、点击、输入/填充、提取任意网页内容。 - 把新网站写成 CLI:用
opencli browser原语 +opencli-adapter-authorskill,从站点侦察、API 发现、字段解码到opencli browser verify一条龙。
除了网站能力,OpenCLI 还是一个 CLI 枢纽:你可以把 gh、docker、tg-cli、discord-cli、wx-cli 等本地工具统一注册到 opencli 下,也可以通过桌面端适配器控制 Cursor、Codex、Antigravity、ChatGPT、Notion 等 Electron 应用。
亮点
- 桌面应用控制 — 通过 CDP 直接在终端驱动 Electron 应用(Cursor、Codex、ChatGPT、Notion 等)。
- AI Agent 浏览器自动化 — 安装
opencli-adapter-authorskill,你的 AI Agent 就能操作任意网站:导航、点击、输入/填充、提取、截图——全部通过你的已登录 Chrome 会话完成。 - 网站 → CLI — 把任何网站变成确定性 CLI:100+ 站点能力已注册,或用
opencli-adapter-authorskill +opencli browser verify自己写。 - 账号安全 — 复用 Chrome/Chromium 登录态,凭证永远不会离开浏览器。
- 面向 AI Agent — 一个 skill 带你走完站点侦察、API 发现、字段解码、适配器编写、验证的全流程。
- CLI 枢纽 — 统一发现、自动安装、纯透传任何外部 CLI(gh、docker、obsidian、tg-cli、discord-cli、wx-cli 等)。
- 零 LLM 成本 — 运行时不消耗模型 token,跑 10,000 次也不花一分钱。
- 确定性输出 — 相同命令,相同输出结构,每次一致。可管道、可脚本、CI 友好。
快速开始
1. 安装 OpenCLI
OpenCLI 要求 Node.js >= 21。
node --version
npm install -g @jackwener/opencli2. 安装 Browser Bridge 扩展
OpenCLI 通过轻量 Browser Bridge 扩展和本地微型 daemon 与 Chrome/Chromium 通信。daemon 会按需自动启动。
方式 A — Chrome Web Store(推荐): 在 Chrome Web Store 安装 OpenCLI 扩展。
方式 B — 手动安装:
- 到 GitHub Releases 页面 下载最新的
opencli-extension-v{version}.zip。 - 解压后打开
chrome://extensions,启用 开发者模式。 - 点击 加载已解压的扩展程序,选择解压后的目录。
3. 验证环境
opencli doctor4. 跑第一个命令
opencli list
opencli hackernews top --limit 5
opencli bilibili hot --limit 5给人类用户
如果你只是想稳定地调用网站或桌面应用能力,主路径很简单:
opencli list查看当前所有命令opencli <site> <command>调用内置或生成好的适配器opencli external register mycli把本地 CLI 接入同一发现入口opencli doctor处理浏览器连通性问题
扩展 OpenCLI
如果你想新增自己的命令,先看 扩展 OpenCLI。README 只保留入口;目录结构、源码管理方式和安装命令放在文档里。
| 需求 | 推荐路径 |
|------|----------|
| 把个人网站命令放在自己的 Git repo | opencli plugin create + opencli plugin install file://... |
| 快速写一个本机私人 adapter | opencli browser init <site>/<command>,放在 ~/.opencli/clis/ |
| 本地修改官方 adapter | opencli adapter eject <site> + opencli adapter reset <site> |
| 发布或安装第三方命令 | opencli plugin install github:user/repo |
| 包装已有本机 binary | opencli external register <name> |
给 AI Agent
OpenCLI 的 browser 命令是给 AI Agent 用的——不是手动执行的。把 skill 安装到你的 AI Agent(Claude Code、Cursor 等)中,Agent 就能用你的已登录 Chrome 会话替你操作网站。
安装 skill
npx skills add jackwener/opencli或只装需要的 skill:
npx skills add jackwener/opencli --skill opencli-adapter-author
npx skills add jackwener/opencli --skill opencli-autofix
npx skills add jackwener/opencli --skill opencli-browser
npx skills add jackwener/opencli --skill opencli-usage
npx skills add jackwener/opencli --skill smart-search选择哪个 skill
| Skill | 适用场景 | 你对 AI Agent 说的话 |
|-------|---------|-------------------|
| opencli-adapter-author | 实时操作任意网站,或为新站点写可复用适配器 | "帮我看看小红书的通知" / "帮我做一个抖音热门的适配器" / "帮我做一个抓取这个页面热帖的命令" |
| opencli-autofix | 内置命令失败时修复已有适配器 | "opencli zhihu hot 返回空了,修一下" |
| opencli-browser | 浏览器自动化参考文档 | "用浏览器命令抓取这个页面" |
| opencli-usage | 所有命令和站点的快速参考 | "OpenCLI 有哪些 Twitter 相关的命令?" |
| smart-search | 在现有 OpenCLI 能力里搜索 | "帮我找个 B 站热门相关的适配器" |
工作原理
安装 opencli-adapter-author skill 后,你的 AI Agent 可以:
- 导航到任意 URL,使用你的已登录浏览器
- 读取页面内容——通过结构化 DOM 快照(不是截图)
- 交互——点击按钮、填写表单、选择选项、按键
- 提取页面数据或拦截网络 API 响应
- 等待元素、文本或页面跳转
Agent 在内部自动处理所有 opencli browser 命令——你只需用自然语言描述想做的事。
Skill 参考文档:
skills/opencli-adapter-author/SKILL.md— 浏览器操作 + 适配器编写,全流程skills/opencli-autofix/SKILL.md— 修复已有适配器skills/opencli-browser/SKILL.md— 浏览器自动化参考skills/opencli-usage/SKILL.md— 命令和站点参考skills/smart-search/SKILL.md— 能力搜索
browser 可用命令包括:open、state、click、type、fill、select、keys、wait、get、find、extract、frames、screenshot、scroll、back、eval、network、tab list、tab new、tab select、tab close、init、verify、close。
opencli browser 命令必须显式传 --session <name>。opencli browser --session work open <url> 和 opencli browser --session work tab new [url] 都会返回 target ID。opencli browser --session work tab list 用来查看当前已存在 tab 的 target ID,再通过 --tab <targetId> 把命令明确路由到某个 tab。tab new 只会新建 tab,不会改变默认浏览器目标;只有显式执行 tab select <targetId>,才会把该 tab 设为同一 session 后续未指定 target 的默认目标。
核心概念
browser:AI Agent 的浏览器控制层
opencli browser 命令是 AI Agent 操作网站的底层原语。你不需要手动运行这些命令——把 opencli-adapter-author skill 安装到你的 AI Agent 中,用自然语言描述你想做的事,Agent 会自动处理浏览器操作。
比如你告诉 Agent:"帮我看看小红书的通知"——Agent 会在底层调用 opencli browser --session <name> open、state、click 等命令。
内置适配器:稳定命令
当某个站点能力已经存在时,优先使用 opencli hackernews top、opencli reddit hot 这类稳定命令。这些命令是确定性的,无需浏览器——人类和 AI Agent 都可以直接使用。
为新站点写适配器
当你需要的网站还没覆盖时,用 opencli-adapter-author skill,它会把 Agent 带到闭环:
- 侦察站点,分类 pattern(SPA / SSR / JSONP / Token / Streaming)
- 发现目标 endpoint——network 精读、initial state、bundle 搜索、token 溯源,或 interceptor 兜底
- 定认证策略——
PUBLIC/COOKIE/INTERCEPT/UI/LOCAL - 字段解码 + 设计输出列
opencli browser --session recon analyze <url>一步侦察,再opencli browser --session recon init <site>/<name>→ 写适配器 →opencli browser --session recon verify <site>/<name>- 把站点知识沉到
~/.opencli/sites/<site>/,下次写同站点的其他命令直接吃缓存
CLI 枢纽与桌面端适配器
OpenCLI 不只是网站 CLI,还可以:
- 统一代理本地二进制工具,例如
gh、docker、obsidian、tg-cli、discord-cli、wx-cli - 通过专门适配器和 CDP 集成控制 Electron 桌面应用
前置要求
- Node.js: >= 21.0.0(标准 npm 安装路径要求)
- Bun: >= 1.0(可选替代运行时)
- 浏览器型命令需要 Chrome 或 Chromium 处于运行中,并已登录目标网站
重要:浏览器型命令直接复用你的 Chrome/Chromium 登录态。如果拿到空数据或出现权限类失败,先确认目标站点已经在浏览器里打开并完成登录。
配置
| 变量 | 默认值 | 说明 |
|------|--------|------|
| OPENCLI_DAEMON_PORT | 19825 | daemon-extension 通信端口 |
| OPENCLI_WINDOW | 命令默认值 | 设为 foreground 或 background 来覆盖 Browser Bridge 窗口位置。浏览器型命令也支持 --window <foreground\|background> |
| OPENCLI_KEEP_TAB | 命令默认值 | 设为 true 或 false 来控制浏览器型 adapter 命令结束后是否保留 tab lease。浏览器型 adapter 命令也支持 --keep-tab <true\|false> |
| OPENCLI_BROWSER_CONNECT_TIMEOUT | 30 | 浏览器连接超时(秒) |
| OPENCLI_BROWSER_COMMAND_TIMEOUT | 60 | 单个浏览器命令超时(秒) |
| OPENCLI_CDP_ENDPOINT | — | Chrome DevTools Protocol 端点,用于远程浏览器或 Electron 应用 |
| OPENCLI_CDP_TARGET | — | 按 URL 子串过滤 CDP target(如 detail.1688.com) |
| OPENCLI_VERBOSE | false | 启用详细日志(-v 也可以) |
| DEBUG_SNAPSHOT | — | 设为 1 输出 DOM 快照调试信息 |
opencli browser * 必须显式传 --session <name>,默认使用前台窗口,并保留该 session 的 tab lease,直到你手动执行 opencli browser --session <name> close 或等空闲超时。浏览器型 adapter 默认使用后台 adapter 窗口并在命令结束后释放一次性 tab lease;如果需要调试最终页面,可以传 --window foreground --keep-tab true。
更新
npm install -g @jackwener/opencli@latest
# 如果你在用打包发布的 OpenCLI skills,也一起刷新
npx skills add jackwener/opencli如果你只装了部分 skill,也可以只刷新自己在用的:
npx skills add jackwener/opencli --skill opencli-adapter-author
npx skills add jackwener/opencli --skill opencli-autofix
npx skills add jackwener/opencli --skill smart-search面向开发者
从源码安装:
git clone [email protected]:jackwener/opencli.git
cd opencli
npm install
npm run build
npm link加载源码版 Browser Bridge 扩展:
- 打开
chrome://extensions并启用 开发者模式 - 点击 加载已解压的扩展程序,选择本仓库里的
extension/目录
内置命令
运行 opencli list 查看完整注册表。
| 站点 | 命令 | 模式 |
|------|------|------|
| twitter | trending search timeline tweets lists list-tweets list-add list-remove bookmarks profile thread following followers notifications post reply delete like likes article follow unfollow bookmark unbookmark download accept reply-dm block unblock hide-reply | 浏览器 |
| reddit | hot frontpage popular search subreddit read user user-posts user-comments upvote save comment subscribe saved upvoted | 浏览器 |
| tieba | hot posts search read | 浏览器 |
| hupu | hot search detail mentions reply like unlike | 浏览器 |
| cursor | status send read new dump composer model extract-code ask screenshot history export | 桌面端 |
| bilibili | hot search me favorite history feed subtitle video comments dynamic ranking following user-videos download | 浏览器 |
| codex | status send read new dump extract-diff model ask screenshot projects history export | 桌面端 |
| chatwise | status new send read ask model history export screenshot | 桌面端 |
| doubao | status new send read ask history detail meeting-summary meeting-transcript | 浏览器 |
| doubao-app | status new send read ask screenshot dump | 桌面端 |
| notion | status search read new write sidebar favorites export | 桌面端 |
| discord-app | status send read channels servers search members | 桌面端 |
| v2ex | hot latest topic node user member replies nodes daily me notifications | 公开 / 浏览器 |
| xueqiu | feed hot-stock hot search stock comments watchlist earnings-date fund-holdings fund-snapshot | 浏览器 |
| antigravity | status send read new dump extract-code model watch serve | 桌面端 |
| chatgpt-app | status new send read ask model | 桌面端 |
| xiaohongshu | search note comments notifications feed user download publish creator-notes creator-note-detail creator-notes-summary creator-profile creator-stats | 浏览器 |
| rednote | search note comments user download feed notifications | 浏览器 |
| xiaoe | courses detail catalog play-url content | 浏览器 |
| quark | ls mkdir mv rename rm save share-tree | 浏览器 |
| uiverse | code preview | 浏览器 |
| apple-podcasts | search episodes top | 公开 |
| baidu-scholar | search | 公开 |
| google-scholar | search cite profile | 公开 |
| gov-law | search recent | 公开 |
| gov-policy | search recent | 公开 |
| nowcoder | hot trending topics recommend creators companies jobs search suggest experience referral salary papers practice notifications detail | 公开 / 浏览器 |
| wanfang | search | 公开 |
| xiaoyuzhou | podcast* podcast-episodes* episode* download* transcript* auth | 本地凭证 |
| zhihu | hot search question download follow like favorite comment answer | 浏览器 |
| weixin | download | 浏览器 |
| youtube | search video transcript comments channel playlist feed history watch-later subscriptions like unlike subscribe unsubscribe | 浏览器 |
| boss | search detail recommend joblist greet batchgreet send chatlist chatmsg invite mark exchange resume stats | 浏览器 |
| coupang | search add-to-cart | 浏览器 |
| bbc | news | 公共 API |
| bloomberg | main markets economics industries tech politics businessweek opinions feeds news | 公共 API / 浏览器 |
| ctrip | search | 浏览器 |
| devto | top tag user | 公开 |
| dictionary | search synonyms examples | 公开 |
| arxiv | search paper | 公开 |
| pubmed | search article author citations related | 公开 |
| openreview | search venue paper reviews | 公开 |
| paperreview | submit review feedback | 公开 |
| wikipedia | search summary random trending | 公开 |
| hackernews | top new best ask show jobs search user | 公共 API |
| jd | item | 浏览器 |
| linkedin | search timeline | 浏览器 |
| reuters | search | 浏览器 |
| smzdm | search | 浏览器 |
| web | read | 浏览器 |
| weibo | hot search feed user me post comments | 浏览器 |
| yahoo-finance | quote | 浏览器 |
| sinafinance | news | 🌐 公开 |
| barchart | quote options greeks flow | 浏览器 |
| chaoxing | assignments exams | 浏览器 |
| grok | ask image | 浏览器 |
| hf | top | 公开 |
| jike | feed search create like comment repost notifications post topic user | 浏览器 |
| jimeng | generate history | 浏览器 |
| yollomi | generate video edit upload models remove-bg upscale face-swap restore try-on background object-remover | 浏览器 |
| linux-do | feed search categories tags topic topic-content user-posts user-topics | 浏览器 |
| stackoverflow | hot search bounties unanswered | 公开 |
| steam | top-sellers | 公开 |
| weread | shelf search book highlights notes notebooks ranking | 浏览器 |
| douban | search top250 subject photos download marks reviews movie-hot book-hot | 浏览器 |
| facebook | feed profile search friends groups events notifications memories add-friend join-group | 浏览器 |
| google | news search suggest trends | 公开 |
| amazon | bestsellers search product offer discussion movers-shakers new-releases rankings | 浏览器 |
| 1688 | search item assets download store | 浏览器 |
| gitee | trending search user | 公开 / 浏览器 |
| gemini | new ask image deep-research deep-research-result | 浏览器 |
| claude | ask send new status read history detail | 浏览器 |
| spotify | auth status play pause next prev volume search queue shuffle repeat | OAuth API |
| notebooklm | status list open current get history summary note-list notes-get source-list source-get source-fulltext source-guide | 浏览器 |
| 36kr | news hot search article | 公开 / 浏览器 |
| imdb | search title top trending person reviews | 公开 |
| producthunt | posts today hot browse | 公开 / 浏览器 |
| instagram | explore profile search user followers following follow unfollow like unlike comment save unsave saved | 浏览器 |
| lobsters | hot newest active tag read | 公开 |
| medium | feed search user | 浏览器 |
| sinablog | hot search article user | 浏览器 |
| substack | feed search publication | 浏览器 |
| pixiv | ranking search user illusts detail download | 浏览器 |
| tiktok | explore search profile user following follow unfollow like unlike comment save unsave live notifications friends | 浏览器 |
| bluesky | search trending user profile thread feeds followers following starter-packs | 公开 |
| xianyu | search item chat publish | 浏览器 |
| douyin | videos publish drafts draft delete stats profile update hashtag location activities collections | 浏览器 |
| yuanbao | new ask | 浏览器 |
100+ 站点能力 — → 查看完整命令列表
* opencli xiaoyuzhou podcast、podcast-episodes、episode、download、transcript 需要本地小宇宙凭证:~/.opencli/xiaoyuzhou.json。
外部 CLI 枢纽
OpenCLI 也可以作为你现有命令行工具的统一入口,负责发现、自动安装和纯透传执行。
| 外部 CLI | 描述 | 示例 |
|----------|------|------|
| gh | GitHub CLI | opencli gh pr list --limit 5 |
| obsidian | Obsidian 仓库管理 | opencli obsidian search query="AI" |
| docker | Docker 命令行工具 | opencli docker ps |
| lark-cli | 飞书 CLI — 消息、文档、日历、任务,200+ 命令 | opencli lark-cli calendar +agenda |
| dws | 钉钉 CLI — 钉钉全套产品能力的跨平台命令行工具,支持人类和 AI Agent 使用 | opencli dws msg send --to user "hello" |
| wecom-cli | 企业微信 CLI — 企业微信开放平台命令行工具,支持人类和 AI Agent 使用 | opencli wecom-cli msg send --to user "hello" |
| tg-cli | Telegram CLI — 基于 MTProto 的本地优先同步、搜索、导出,面向 AI Agent | opencli tg search "AI news" -f json |
| discord-cli | Discord CLI — 基于 SQLite 的本地优先同步、搜索、导出,面向 AI Agent | opencli discord recent --channel general |
| wx-cli | 微信本地数据 CLI — 会话、聊天记录、搜索、联系人、导出 | opencli wx search "OpenCLI" |
| vercel | Vercel — 部署项目、管理域名、环境变量、日志 | opencli vercel deploy --prod |
零配置透传:OpenCLI 会把你的输入原样转发给底层二进制,保留原生 stdout / stderr 行为。
自动安装:如果你运行 opencli gh ... 时系统中还没有 gh,OpenCLI 会优先尝试通过系统包管理器安装,然后自动重试命令。
注册自定义本地 CLI:
opencli register mycli桌面应用适配器
每个桌面适配器都有自己详细的文档说明,包括命令参考、启动配置与使用示例:
| 应用 | 描述 | 文档 | |-----|-------------|-----| | Cursor | 控制 Cursor IDE — Composer、对话、代码提取等 | Doc | | Codex | 在后台(无头)驱动 OpenAI Codex CLI Agent | Doc | | Antigravity | 在终端直接控制 Antigravity Ultra | Doc | | ChatGPT App | 自动化操作 ChatGPT macOS 桌面客户端 | Doc | | ChatWise | 多 LLM 客户端(GPT-4、Claude、Gemini) | Doc | | Notion | 搜索、读取、写入 Notion 页面 | Doc | | Discord | Discord 桌面版 — 消息、频道、服务器 | Doc | | Doubao | 通过 CDP 控制豆包桌面应用 | Doc |
下载支持
OpenCLI 支持从各平台下载图片、视频和文章。
支持的平台
| 平台 | 内容类型 | 说明 |
|------|----------|------|
| 小红书 | 图片、视频 | 下载笔记中的所有媒体文件 |
| B站 | 视频 | 需要安装 yt-dlp |
| Twitter/X | 图片、视频 | 从用户媒体页或单条推文下载 |
| Pixiv | 图片 | 下载原始画质插画,支持多页作品 |
| 1688 | 图片、视频 | 下载商品页中可见的商品素材 |
| 小宇宙 | 音频、转录 | 使用本地凭证下载单集音频和转录 JSON / 文本 |
| 知乎 | 文章(Markdown) | 导出文章,可选下载图片到本地 |
| 微信公众号 | 文章(Markdown) | 导出微信公众号文章为 Markdown |
| 豆瓣 | 图片 | 下载电影条目的海报 / 剧照图片 |
前置依赖
下载流媒体平台的视频需要安装 yt-dlp:
# 安装 yt-dlp
pip install yt-dlp
# 或者
brew install yt-dlp使用示例
# 下载小红书笔记中的图片/视频
opencli xiaohongshu download "https://www.xiaohongshu.com/search_result/<id>?xsec_token=..." --output ./xhs
opencli xiaohongshu download "https://xhslink.com/..." --output ./xhs
opencli rednote download "https://www.rednote.com/search_result/<id>?xsec_token=..." --output ./rednote
# 下载B站视频(需要 yt-dlp)
opencli bilibili download BV1xxx --output ./bilibili
opencli bilibili download BV1xxx --quality 1080p # 指定画质
# 下载 Twitter 用户的媒体
opencli twitter download elonmusk --limit 20 --output ./twitter
# 下载单条推文的媒体
opencli twitter download --tweet-url "https://x.com/user/status/123" --output ./twitter
# 下载豆瓣电影海报 / 剧照
opencli douban download 30382501 --output ./douban
# 下载 1688 商品页中的图片 / 视频素材
opencli 1688 download 841141931191 --output ./1688-downloads
# 下载小宇宙单集音频
opencli xiaoyuzhou download 69b3b675772ac2295bfc01d0 --output ./xiaoyuzhou
# 下载小宇宙单集转录
opencli xiaoyuzhou transcript 69dd0c98e2c8be31551f6a33 --output ./xiaoyuzhou-transcripts
# 导出知乎文章为 Markdown
opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./zhihu
# 导出并下载图片
opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --download-images
# 导出微信公众号文章为 Markdown
opencli weixin download --url "https://mp.weixin.qq.com/s/xxx" --output ./weixinopencli xiaoyuzhou download 和 transcript 需要本地小宇宙凭证:~/.opencli/xiaoyuzhou.json。
输出格式
所有内置命令都支持 --format / -f,可选值为 table、json、yaml、md、csv。
list 命令也支持同样的格式参数,同时继续兼容 --json。
opencli list -f yaml # 用 YAML 列出命令注册表
opencli bilibili hot -f table # 默认:富文本表格
opencli bilibili hot -f json # JSON(适合传给 jq 或者各类 AI Agent)
opencli bilibili hot -f yaml # YAML(更适合人类直接阅读)
opencli bilibili hot -f md # Markdown
opencli bilibili hot -f csv # CSV
opencli bilibili hot -v # 详细模式:展示管线执行步骤调试信息退出码
opencli 遵循 Unix sysexits.h 惯例,可无缝接入 shell 管道和 CI 脚本:
| 退出码 | 含义 | 触发场景 |
|--------|------|----------|
| 0 | 成功 | 命令正常完成 |
| 1 | 通用错误 | 未分类的意外错误 |
| 2 | 用法错误 | 参数错误或未知命令 |
| 66 | 无数据 | 命令返回空结果(EX_NOINPUT) |
| 69 | 服务不可用 | Browser Bridge 未连接(EX_UNAVAILABLE) |
| 75 | 临时失败 | 命令超时,可重试(EX_TEMPFAIL) |
| 77 | 需要认证 | 未登录目标网站(EX_NOPERM) |
| 78 | 配置错误 | 凭证缺失或配置有误(EX_CONFIG) |
| 130 | 中断 | Ctrl-C / SIGINT |
opencli bilibili hot 2>/dev/null
case $? in
0) echo "ok" ;;
69) echo "请先启动 Browser Bridge" ;;
77) echo "请先登录 bilibili.com" ;;
esac插件
通过社区贡献的插件扩展 OpenCLI。插件使用与内置命令相同的 JS 格式,启动时自动发现。
opencli plugin install github:user/opencli-plugin-my-tool # 安装
opencli plugin list # 查看已安装
opencli plugin update my-tool # 更新到最新
opencli plugin update --all # 更新全部已安装插件
opencli plugin uninstall my-tool # 卸载当 plugin 的版本被记录到 ~/.opencli/plugins.lock.json 后,opencli plugin list 也会显示对应的短 commit hash。
| 插件 | 类型 | 描述 | |------|------|------| | opencli-plugin-github-trending | JS | GitHub Trending 仓库 | | opencli-plugin-hot-digest | JS | 多平台热榜聚合 | | opencli-plugin-juejin | JS | 稀土掘金热门文章 | | opencli-plugin-vk | JS | VK (VKontakte) 动态、信息流和搜索 |
详见 插件指南 了解如何创建自己的插件。
致 AI Agent(开发者指南)
如果你是一个被要求查阅代码并编写新 opencli 适配器的 AI,请遵守以下工作流。
在动代码前,先读 opencli-adapter-author skill。它把整个流程串起来:
- 侦察站点,选定 pattern(SPA / SSR / JSONP / Token / Streaming)
- 用
opencli browser --session <name> network、eval、interceptor 等找到目标 endpoint - 定认证策略(
PUBLIC/COOKIE/INTERCEPT/UI/LOCAL) - 先用
opencli browser --session recon analyze <url>一步侦察,再字段解码、设计 columns、opencli browser --session recon init生成骨架 - 交付前用
opencli browser --session recon verify <site>/<name>验证
在仓库外写的私有适配器放到 ~/.opencli/clis/<site>/<name>.js;每个站点的 endpoint、字段映射、抓包样本会累积在 ~/.opencli/sites/<site>/,下次写同站点的其他命令可以直接复用。
常见问题排查
- "Extension not connected" 报错
- 确保你已从 Chrome Web Store 安装 OpenCLI 扩展,且在
chrome://extensions中已启用。
- 确保你已从 Chrome Web Store 安装 OpenCLI 扩展,且在
- "attach failed: Cannot access a chrome-extension:// URL" 报错
- 其他 Chrome/Chromium 扩展(如 youmind、New Tab Override 或 AI 助手类扩展)可能产生冲突。请尝试暂时禁用其他扩展后重试。
- 返回空数据,或者报错 "Unauthorized"
- Chrome/Chromium 里的登录态可能已经过期。请打开当前页面,在新标签页重新手工登录或刷新该页面。
- Node API 错误 / 缺少
fetch/ 旧 Node 启动即崩- OpenCLI 要求 Node.js >= 21。先执行
node --version,如果版本过低先升级,再重试命令。
- OpenCLI 要求 Node.js >= 21。先执行
- Daemon 问题
- 检查 daemon 状态:
curl localhost:19825/status - 查看扩展日志:
curl localhost:19825/logs
- 检查 daemon 状态:
