技能opencli-reader
O

opencli-reader

适用于任何 opencli 支持但本仓库没有专用读取器的来源的通用只读回退方案——包括 Yahoo Finance、Bloomberg、Reuters、Barchart、东方财富、雪球、新浪财经、Reddit、HackerNews、Substack、Medium、微博、哔哩哔哩、小红书、知乎、arXiv、Google Scholar、Apple Podcasts、小宇宙、Spotify、YouTube、微信、Amazon 等。触发条件:“use opencli to read”、“grab the frontpage from hackernews”、“read reddit r/wallstreetbets”、“fetch Eastmoney hot stocks”、“pull Xueqiu feed”、“get Bloomberg markets headlines”、“search arXiv for”,以及任何要求从某个网站读取内容、但不存在对应专用技能而 opencli 支持该网站的请求。回退方案——如果来源匹配,优先使用 twitter-reader、linkedin-reader、discord-reader、telegram-reader 或 yc-reader。只读——绝不调用写入操作。

opencli-reader — opencli 通用只读读取技能

技能概述

opencli-reader 是一个只读的通用兜底技能:当某个数据源没有专用 reader 技能时,它通过 opencli 的适配器注册表读取该站点的公开内容——覆盖 Yahoo Finance、Bloomberg、Reuters、Barchart、东方财富、雪球、Reddit、HackerNews、Substack、arXiv、YouTube、B 站、小红书、知乎等 100+ 站点。它只读取,不会执行发帖、点赞、关注、删除等任何写操作。

适用场景

  1. 给 AI 智能体补充实时数据:需要行情、热榜、新闻头条或论文摘要时,用一条命令拿到结构化 JSON(-f json),直接交给下游处理,不用自己写爬虫。
  2. 跨站点的舆情与热点采集:同时关注 Reddit 讨论、HackerNews 榜单、东方财富热股、雪球动态、微博或知乎热榜时,用同一套命令风格跨站点读取,省去为每个站维护一套抓取逻辑。
  3. 读取需要登录才能看到的内容:Bloomberg、雪球、小红书等站点要求登录态,opencli 通过 Browser Bridge 复用 Chrome 里已有的登录会话读取,无需在脚本里保管账号密码。

注意:如果请求的是 Twitter/X、LinkedIn、Discord、Telegram 或 Y Combinator,请改用对应的专用技能(twitter-readerlinkedin-readerdiscord-readertelegram-readeryc-reader),它们的字段更完整、维护更及时。opencli-reader 是这些之外的兜底选项。

核心功能

  1. 通用适配器读取:用统一命令格式 opencli <site> <command> [args] [flags] 读取任意已支持站点,配合 -f json 输出结构化结果,方便程序解析。命令与参数以 opencli list -f json 为唯一事实来源,站点和命令每周都在新增,不要凭记忆猜命令名。
  2. 策略前置检查,避免白跑一趟:注册表为每条命令标注 strategy 字段——PUBLIC / LOCAL 无需浏览器即可直接读取;COOKIE / HEADER / INTERCEPT / UI 则需要 Chrome 已登录目标站点并装好 Browser Bridge 扩展。执行前先看一眼策略,能省掉大部分"为什么报错"的排查。
  3. 失败自修复路径:当某站点改版导致选择器失效、命令返回空结果时,用 OPENCLI_DIAGNOSTIC=1 重跑,会输出结构化的 RepairContext 指出失效适配器的源码位置,可据此走 opencli-autofix 技能或向上游仓库提 issue——而不是悄悄退化成一次性硬编码抓取。

常见问题

opencli-reader 支持哪些网站?和专用 reader 技能有什么区别?

它覆盖 opencli 适配器注册表里的 100+ 站点,财经方向包括 Yahoo Finance、Bloomberg、Reuters、Barchart、东方财富、雪球、新浪财经,内容方向包括 Reddit、HackerNews、Substack、Medium、arXiv、Google Scholar、YouTube、B 站、小红书、知乎、微博等。区别在于定位:专用技能(twitter-reader、linkedin-reader、discord-reader、telegram-reader、yc-reader)针对单一平台做了更细的字段和更及时的适配;opencli-reader 是这些平台之外的通用兜底。完整且最新的站点清单请运行 opencli list -f json,不要依赖本文的举例。

使用前需要安装什么?需要登录吗?

需要 Node.js >= 20(或 Bun >= 1.0),未安装时执行 npm install -g @jackwener/opencli,然后用 opencli doctor 检查环境。是否需要登录取决于命令的 strategy:标记为 PUBLICLOCAL 的命令纯 HTTP 或走本地服务,不需要浏览器;标记为 COOKIEHEADERINTERCEPTUI 的命令需要 Chrome 已登录目标站点,并从 GitHub Releases 下载 opencli-extension 解压后在 chrome://extensions 里以"加载已解压的扩展程序"方式启用。如果没登录就调用这类命令,会直接失败——先在 Chrome 里登录再重试。

这个技能安全吗?会不会动我的账号数据?

技能在设计上是只读的,明确禁止调用 opencli 暴露的任何写操作,包括 post、reply、comment、like、upvote、save、subscribe、follow、delete、bookmark、send、create-draft、reply-dm、accept 等。判断不确定时以 opencli list -f json 中该命令的 description 为准,只要描述里有变更语义就跳过。另外,浏览器会话属于隐私数据,使用过程中不应回显 CDP 端点、Cookie 或任何鉴权 token。

为什么读取返回了空结果?

常见原因有三类:一是站点改版导致适配器选择器失效,此时用 OPENCLI_DIAGNOSTIC=1 opencli <site> <command> 重跑拿到 RepairContext,再走 opencli-autofix 技能或向上游提 issue;二是目标站点有频率限制,等一会儿再重试即可;三是该命令的策略需要登录而当前 Chrome 没有登录态,先确认 strategy 字段再补齐登录。无论哪种情况,都不要绕过 opencli 去手写临时爬虫——那样只会把上游的 bug 藏起来。