Web 内容提取技能
触发条件
- 用户发来任何 URL 链接(公众号、知乎、skills.sh、API文档等)
- 用户要求"帮我读这篇文章"
- 需要提取网页内容进行分析、总结或翻译
核心工具链
1. web_extract(首选)
web_extract(urls=["https://..."])
- 提取页面正文内容,返回 markdown 格式
- 支持微信公众号、PDF、普通网页
- 上限 5 个 URL 同时提取
- 页面 < 5000 字符:返回完整 markdown
- 页面 > 5000 字符:LLM 摘要,约 5000 字符上限
- 页面 > 2MB:拒绝,需改用 browser 工具
2. web_search(辅助)
web_search(query="关键词", limit=5)
- 搜索关键词获取相关内容列表
- 可配合 site: 操作符限定域名
- 用于找不到具体 URL 时的探索
3. browser_extract(备用)
- 当 web_extract 失败时(反爬/动态渲染/登录墙)
- 使用 browser_navigate → browser_snapshot → 读取页面
- 速度较慢,仅用于必要场景
微信公众号文章提取
两种场景
场景 A:已有链接 → 用 scripts/fetch_weixin.sh(curl + Python 提取)
场景 B:只有关键词 → 用搜狗搜索 + 全文提取(见下方搜索流程)
优先级策略
- 首选:
web_extract直接提取(简单文章可用,但有配额限制) - 正文提取失败时(最常见):使用内置脚本
scripts/fetch_weixin.sh - 脚本也失败时:让用户复制粘贴文章内容
- web_extract 配额耗尽时:直接切换到 curl 脚本,不要再试 web_extract
⚠️ 关键教训(2026-06-20 记录)
web_extract工具有配额限制,耗尽后所有请求返回 402 Billing Error,不是网站问题。遇到连续失败时优先检查配额。- Firecrawl 之前尝试过,Key 验证通过但实际抓取报 Invalid Token,已卸载清理。
- 浏览器工具(browser_navigate)需要 Chrome 已安装(
agent-browser install),否则无法使用。 - 微信公众号文章的核心提取方式:curl 伪装手机 UA 抓取 HTML → Python 从
js_contentdiv 提取span leaf=""标签内容。这是最可靠的方式。
核心原理
微信公众号文章正文 CSS 设为 visibility: hidden,readability 提取器会跳过;
但正文在 HTML 源码中完整存在(<div id="js_content"> 内的 <span leaf=""> 标签)。
curl 抓取源码后直接从 js_content 区域提取,不执行 CSS/JS。
脚本用法
bash /root/.hermes/skills/web-content-extraction/scripts/fetch_weixin.sh 'URL'
输出:标题、作者、图片/视频/音频列表、全文纯文本。
提取范围
| 内容类型 | 能否提取 | 说明 |
|---|---|---|
| 正文文字 | ✅ | span leaf="" 标签提取 |
| 图片 | ✅ | data-src 属性提取 URL |
| 视频 | ⚠️ | 微信视频多为懒加载,静态 HTML 不一定包含 |
| 音频/音乐 | ⚠️ | 嵌入音乐通过 JS 动态插入,源码中可能缺失 |
URL 注意事项
- 必须用单引号包裹 URL(防止 shell 解析
&、?等特殊字符) - 微信短链
https://mp.weixin.qq.com/s/xxx可直接使用 - 带参数的长链接也可使用
skills.sh 技能市场浏览
- 访问 https://skills.sh/ 浏览可用技能
- 使用
web_extract读取技能市场页面内容 - 注意:skills.sh 的
npx skills add是面向 Claude Code/Cursor 等编辑器的 - 对于 Hermes Agent,技能需通过
skill_manage(action='create')创建
输出规范
- 提取内容后,给出 3-5 句结构化摘要
- 标注来源 URL
- 如用户要求深入分析,提取关键要点后提供解读
- 不存储提取内容到 memory,仅在对话中使用
微信公众号文章搜索(搜狗)
适用场景
- 用户说"帮我搜某关键词的公众号文章,并提取全文"
- 竞品公众号内容分析
- 热点文章追踪与内容参考
搜索 + 全文提取
# 仅搜索(返回标题、摘要、链接、来源、时间)
node /root/.hermes/skills/web-content-extraction/scripts/search_and_fetch.js "关键词" -n 10
# 搜索 + 提取全文
node /root/.hermes/skills/web-content-extraction/scripts/search_and_fetch.js "关键词" -n 5 -f
# 搜索 + 全文 + 保存结果到文件
node /root/.hermes/skills/web-content-extraction/scripts/search_and_fetch.js "关键词" -n 10 -f -o result.json
参数说明
query:搜索关键词(必填)-n, --num:返回数量(默认 10,最大 50)-f, --fetch:提取文章全文内容(会自动先解析真实 URL)-o, --output:输出 JSON 文件路径(可选)--no-resolve:不解析真实 URL(速度更快,但链接是搜狗中转链接)
注意事项
- 搜狗微信有反爬限制,解析真实 URL 偶尔会失败,属于正常情况
- 提取全文时请求间隔约 1-2 秒,避免被封
- 依赖 cheerio(已预装)
-
本工具仅用于学习和研究目的
-
微信公众号部分文章因反爬机制可能需要浏览器工具
- 需要登录才能查看的内容无法提取
- 纯图片/视频内容无法通过文本提取获取
- 大文件(PDF>5MB)需拆分处理