CastReader 是 ClawHub 上唯一能把网页 URL 转成音频的 OpenClaw 技能。在 Telegram 给你的 OpenClaw agent 发一个链接,它就会提取文章内容、用 Kokoro TTS 模型生成语音、返回一个 MP3 文件。kokoro-tts、openai-tts 这些技能只能转纯文本,而 CastReader 能处理微信读书的 Canvas 渲染、Kindle 的加密字体、Notion 的复杂 DOM。安装命令:clawhub install castreader。
我第一次试 OpenClaw 的 TTS 技能时,发了一条微信读书的链接过去。
啥也没回。
换了 kokoro-tts,告诉我"请输入要转换的文本"。又试了 openai-tts,一样——只接受纯文本,不认 URL。
问题很明显:网页朗读不只是"文字转语音"这一步。在生成音频之前,你得先把网页里的正文提取出来。而提取这件事,比大多数人想象的要难得多。
现有 TTS 技能的局限
ClawHub 上有十几个 TTS 相关的技能。kokoro-tts 用的是开源 Kokoro 模型,音质不错,免费。openai-tts 调的是 OpenAI 的 API,声音更自然,但要付费。它们有一个共同点:只处理纯文本输入。
你给它一段话,它返回一段音频。很合理。
但在实际使用中,你想朗读的内容几乎都不是"纯文本"。它在一个网页里。被导航栏、侧边栏、广告、评论区、页脚版权信息包裹着。你需要有人帮你把正文摘出来。
传统的做法是复制粘贴。打开网页,手动选中正文区域,复制,粘贴到 TTS 技能的对话框里。这对一篇 500 字的短文还行。但如果是一篇 3000 字的深度报道?一本微信读书的章节?十篇 RSS 订阅更新?
没人愿意这么干。
CastReader 解决了什么问题
CastReader 把"提取"和"朗读"合并成了一步。你发一个 URL,它返回一个 MP3。中间发生了什么:
- 无头浏览器加载页面,等待渲染完成
- 自动选择对应平台的专用提取器(15+ 平台)
- 提取正文段落,过滤掉导航、广告、UI 文本
- 用 Kokoro TTS 模型逐段生成语音
- 拼接成完整 MP3 返回
关键在第 2 步。CastReader 不是用一个通用规则去处理所有网页——那样会漏掉微信读书、搞砸 Kindle、被 Notion 的嵌套 block 绕晕。它为每个主流平台写了专用的提取器。
微信读书:Canvas 里没有文字
微信读书用 Canvas 渲染文字。右键检查元素,DOM 里一个汉字都找不到。所有 TTS 扩展在这里全军覆没——Read Aloud 静音,NaturalReader 报错,Speechify 直接忽略。
CastReader 的做法是在页面加载前注入 main-world 脚本,拦截微信读书的 fetch 请求,从 API 响应中直接获取章节数据。Canvas 只是用来显示的,真正的文本在网络层。这不是常规的 DOM 提取——是针对微信读书架构的逆向工程。
想了解完整的微信读书朗读方案,看这里:微信读书朗读指南。
Kindle Cloud Reader:加密字体
Kindle 的问题更离谱。亚马逊用自定义字体子集做 DRM——DOM 里的字符和屏幕上显示的不是同一个。"Hello" 在 HTML 源码里可能是 "∆♦◊●♠"。浏览器靠下载亚马逊的私有字体文件才能正确渲染。
CastReader 通过本地 OCR(Tesseract.js,不上传任何数据)识别屏幕上的实际字符,再与字体解码结果交叉校准,最终还原出真实文本。整个过程在你的电脑上完成,零 API 成本。
详细技术方案:Kindle 朗读指南。
其他平台
Notion 的嵌套 block 结构、Google Docs 的自定义渲染引擎、语雀和飞书的企业文档系统、ChatGPT/Claude/Gemini 的对话页面——CastReader 都有专用提取器。不需要你告诉它"这是什么网站",它根据域名自动匹配。匹配不到专用提取器?还有一个通用算法兜底,融合了 Readability.js 和 JusText 的思路,覆盖大多数标准网页。
安装和使用
三步:
# 1. 在 Telegram 找到你的 OpenClaw agent
# 2. 安装 CastReader 技能
clawhub install castreader
# 3. 发送任意网页链接
https://mp.weixin.qq.com/s/xxxxxAgent 收到链接后会自动提取并生成音频。通常 30 秒到 2 分钟,取决于文章长度。返回的 MP3 可以直接在 Telegram 里播放,也可以下载到本地。
如果你是第一次使用 OpenClaw,可以参考我们的完整安装指南,从零开始一步步配置。
几个实际场景:
- 通勤路上听完今天的微信公众号推送
- 跑步时听一篇知乎万赞回答
- 做饭时把 Kindle 买的书听几章
- 睡前听完一篇英文长报道,不用盯屏幕
免费,无限制,不需要注册账号。
与其他方案对比
| 方案 | 接受 URL | 微信读书 | Kindle | 音质 | 价格 |
|---|---|---|---|---|---|
| CastReader (OpenClaw) | 是 | 是 | 是 | Kokoro 神经网络 | 免费 |
| kokoro-tts | 否(纯文本) | 否 | 否 | Kokoro | 免费 |
| openai-tts | 否(纯文本) | 否 | 否 | OpenAI | 按量付费 |
| 微信读书自带朗读 | — | 机器人音质 | — | 系统 TTS | 免费 |
| Speechify | 否 | 否 | 否 | 高级声音 | $139/年 |
核心差异很简单:其他 TTS 技能是"文本转语音"工具,CastReader 是"网页转语音"工具。差了一个"提取"的环节,但这个环节决定了你能不能真正用起来。
高级用法:浏览器扩展模式
OpenClaw 适合"发链接、收音频"的异步场景。但如果你想边看边听——段落级高亮跟随、点击任意段落跳转、调节语速——那需要 Chrome 扩展。
CastReader Chrome 扩展做的就是这件事。打开任意网页,点击扩展图标,当前段落高亮,自动滚动跟随。和 Google 翻译插件一样的交互模型——页面渲染好了,你点一下,它处理当前 DOM。
扩展的提取器和 OpenClaw 技能用的是同一套代码。15+ 平台专用提取器,同一个通用算法兜底。区别在于扩展直接在浏览器里运行,延迟更低,而且支持实时高亮和段落跳转。
两种模式可以配合使用:在电脑前用扩展边看边听,出门了用 Telegram agent 收 MP3 路上听。同一篇文章,两种消费方式。
想试试?在 Telegram 给你的 OpenClaw agent 发一条微信读书的链接。30 秒后你会收到一个 MP3——这在以前是做不到的事。
安装命令:clawhub install castreader