npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@jackwener/opencli

v1.8.4

Published

Make any website or Electron App your CLI. AI-powered.

Readme

OpenCLI

把任意网站变成 CLI & 在你的登录态浏览器上跑 Browser Use。 把网站、浏览器会话、Electron 应用和本地工具,统一变成适合人类与 AI Agent 使用的确定性接口。 或者在任意页面上跑 Browser Use —— 导航、填表单、点击、抓取、自动化。

English npm Node.js Version License

OpenCLI 可以用同一套 CLI 做三类事情:

  • 直接使用现成适配器:B站、知乎、小红书、Twitter/X、Reddit、HackerNews 等 100+ 站点 开箱即用。
  • 让 AI Agent 操作任意网站:在你的 AI Agent(Claude Code、Cursor 等)中安装 opencli-browser skill,Agent 就能用你的已登录浏览器导航、点击、输入/填充、提取任意网页内容。
  • 把新网站写成 CLI:用 opencli browser 原语 + opencli-adapter-author skill,从站点侦察、API 发现、字段解码到 opencli browser verify 一条龙。

除了网站能力,OpenCLI 还是一个 CLI 枢纽:你可以把 ghdockerlongbridgetgdiscordwxntn(Notion)等本地工具统一注册到 opencli 下,也可以通过桌面端适配器控制 Cursor、Trae CN、Codex、Antigravity、ChatGPT、Trae SOLO 等 Electron 应用。

快速开始

1. 安装 OpenCLI

OpenCLI 要求 Node.js >= 20

node --version
npm install -g @jackwener/opencli

2. 安装 Browser Bridge 扩展

OpenCLI 通过轻量 Browser Bridge 扩展和本地微型 daemon 与 Chrome/Chromium 通信。daemon 会按需自动启动。

方式 A — Chrome Web Store(推荐):Chrome Web Store 安装 OpenCLI 扩展。

方式 B — 手动安装:

  1. 到 GitHub Releases 页面 下载最新的 opencli-extension-v{version}.zip
  2. 解压后打开 chrome://extensions,启用 开发者模式
  3. 点击 加载已解压的扩展程序,选择解压后的目录。

3. 验证环境

opencli doctor

4. 跑第一个命令

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-browser-sitemap
npx skills add jackwener/opencli --skill opencli-sitemap-author
npx skills add jackwener/opencli --skill opencli-usage

选择哪个 skill

| Skill | 适用场景 | 你对 AI Agent 说的话 | |-------|---------|-------------------| | opencli-adapter-author | 为新站点写可复用适配器,或给已有站点添加命令 | "帮我做一个抖音热门的适配器" / "帮我做一个抓取这个页面热帖的命令" | | opencli-autofix | 内置命令失败时修复已有适配器 | "opencli zhihu hot 返回空了,修一下" | | opencli-browser | 实时驱动 Chrome 页面——导航、填表单、点击、抓取 | "帮我看看小红书的通知" / "帮我填一下这个表单" / "用浏览器命令抓取这个页面" | | opencli-browser-sitemap | 使用站点 sitemap 上下文来操作浏览器任务 | "用 sitemap 帮我少走弯路地操作这个网站" | | opencli-sitemap-author | 创建或更新面向浏览器 Agent 的站点 sitemap | "把刚发现的稳定流程记录到这个站点的 sitemap" | | opencli-usage | 所有命令和站点的快速参考 | "OpenCLI 有哪些 Twitter 相关的命令?" |

工作原理

安装 opencli-browser skill 后,你的 AI Agent 可以:

  1. 导航到任意 URL,使用你的已登录浏览器
  2. 读取页面内容——通过结构化 DOM 快照(不是截图)
  3. 交互——点击按钮、填写表单、选择选项、按键
  4. 提取页面数据或拦截网络 API 响应
  5. 等待元素、文本或页面跳转

Agent 在内部自动处理所有 opencli browser 命令——你只需用自然语言描述想做的事。

Skill 参考文档:

browser 可用命令包括:openstateclicktypefillselectkeyswaitgetfindextractframesscreenshotscrollbackevalnetworktab listtab newtab selecttab closeinitverifyclose

opencli browser 命令必须紧跟一个 <session> 位置参数。opencli browser work open <url>opencli browser work tab new [url] 都会返回 target ID。opencli browser work tab list 用来查看当前已存在 tab 的 target ID,再通过 --tab <targetId> 把命令明确路由到某个 tab。tab new 只会新建 tab,不会改变默认浏览器目标;只有显式执行 tab select <targetId>,才会把该 tab 设为同一 session 后续未指定 target 的默认目标。

为新站点写适配器

当你需要的网站还没覆盖时,用 opencli-adapter-author skill,全流程:

  1. 侦察站点,分类 pattern(SPA / SSR / JSONP / Token / Streaming)
  2. 发现 endpoint——network 精读、initial state、bundle 搜索、token 溯源,或 interceptor 兜底
  3. 定认证——PUBLIC / COOKIE / INTERCEPT / UI / LOCAL
  4. 字段解码 + 设计输出列
  5. opencli browser recon analyze <url>opencli browser recon init <site>/<name> → 写适配器 → opencli browser recon verify <site>/<name>
  6. 站点知识沉到 ~/.opencli/sites/<site>/,下次同站点直接吃缓存

配置

| 变量 | 默认值 | 说明 | |------|--------|------| | OPENCLI_DAEMON_PORT | 19825 | daemon-extension 通信端口 | | OPENCLI_WINDOW | 命令默认值 | 设为 foregroundbackground 来覆盖 Browser Bridge 窗口位置。浏览器型命令也支持 --window <foreground\|background> | | 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> 位置参数,默认使用前台窗口,并保留该 session 的 tab lease,直到你手动执行 opencli browser <session> close 或等空闲超时。浏览器型 adapter 默认使用后台 adapter 窗口并在命令结束后释放一次性 tab lease;如果需要调试最终页面,可以传 --window foreground --keep-tab true

内置命令

运行 opencli list 查看完整注册表。

| 站点 | 命令 | |------|------| | xiaohongshu | search ask note comments notifications feed user download publish follow unfollow creator-notes creator-note-detail creator-notes-summary creator-profile creator-stats | | bilibili | hot search me favorite history feed subtitle summary video comments dynamic ranking following follow unfollow user-videos download | | zhihu | hot search question download follow like favorite comment answer | | hackernews | top new best ask show jobs search user | | geogebra | eval add-point add-line add-circle add-polygon triangle hexagon list info | | linkedin | connect inbox job-detail jobs-preferences post-analytics posts profile-experience profile-projects profile-read profile-analytics safe-send search people-search services-read sent-invitations thread-snapshot timeline salesnav-search salesnav-inbox salesnav-message salesnav-thread | | reddit | hot frontpage popular search subreddit read user user-posts user-comments upvote save comment subscribe saved upvoted | | twitter | trending search timeline tweets lists list-tweets list-create list-delete list-add list-add-batch list-remove list-remove-batch bookmarks profile thread following followers notifications post reply delete like likes article follow unfollow bookmark unbookmark download accept reply-dm block unblock hide-reply | | claude | ask send new status read history detail | | gemini | new ask image deep-research deep-research-result | | notebooklm | status list open current get history summary note-list notes-get source-list source-get source-fulltext source-guide | | amazon | bestsellers search product offer discussion movers-shakers new-releases rankings | | upwork | search feed detail | | slock | message-send message-read message-search channel-list channel-info channel-create channel-members channel-join task-list task-create task-claim task-status task-convert task-delete thread-list thread-follow attachment-upload attachment-download bookmark-add inbox dm-list server-list server-use whoami | | huodongxing | events |

精选清单 — → 查看全部 100+ 站点和命令(小红书 / B站 / 知乎 / Twitter / Reddit / 抖音 / 微博 / 微信读书 / 小宇宙 / 1688 / 夸克 / Spotify / 牛客 / arxiv / Chess.com / Bilibili / 等)。

外部 CLI 枢纽

把现有命令行工具统一接入 opencli <tool> ...

gh · docker · vercel · wrangler · obsidian · longbridge · lark-cli · ntn(notion) · dws(DingTalk Workspace) · wecom-cli(企业微信) · tg(tg-cli) · discord(discord-cli) · wx(wx-cli)

注册自定义本地 CLI:opencli external register <name>;查看所有:opencli external list

桌面应用适配器(Electron,通过 CDP):Cursor / Trae CN / Codex / Antigravity / ChatGPT App / ChatWise / Qoder / Discord / Doubao / Trae SOLO — 详见 docs/adapters/desktop/

下载支持

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 ./weixin

opencli xiaoyuzhou downloadtranscript 需要本地小宇宙凭证:~/.opencli/xiaoyuzhou.json

输出格式

所有内置命令都支持 --format / -f,可选值为 tablejsonyamlmdcsvlist 命令也支持同样的格式参数,同时继续兼容 --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,CI / 脚本可按失败模式分支:0 成功、66 无数据、69 Browser Bridge 未连接、75 超时、77 需要认证、78 配置错误、130 Ctrl-C。完整参考:docs/zh/guide/exit-codes.md

插件

通过社区贡献的插件扩展 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) 动态、信息流和搜索 |

详见 插件指南 了解如何创建自己的插件。

常见问题排查

  • "Extension not connected" 报错
    • 确保你已从 Chrome Web Store 安装 OpenCLI 扩展,且在 chrome://extensions已启用
  • "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 >= 20。先执行 node --version,如果版本过低先升级,再重试命令。
  • Daemon 问题
    • 检查 daemon 状态:curl localhost:19825/status
    • 查看扩展日志:curl localhost:19825/logs

Star History

Star History Chart

License

Apache-2.0