用途
Article Extractor 用于从 URL 中提取网页文章的正文内容(如博客文章、文章、教程),并保存为可读的文本文件。当用户提供文章/博客链接并希望获取其文本、要求“下载这篇文章”“从某 URL 提取内容”“把这篇博客保存为文本”,或需要去除干扰的干净文章文本时,可以启用该技能。
主要能力
该技能可从网页文章中提取主要内容,去除导航、广告、newsletter 注册提示等杂乱内容,保存为干净、可读的文本。提取后输出的文件通常包含文章标题(如有)、作者(如工具提供)、正文、章节标题,不包含导航、广告或杂乱内容。被移除的内容包括:导航菜单、广告与推广内容、newsletter 注册表单、相关文章侧栏、评论区(可选)、社交媒体按钮、Cookie 提示。
使用方式与工具优先级
技能按以下优先级检查并使用工具:
- reader(推荐,基于 Mozilla Readability):用
command -v reader检查,未安装则npm install -g @mozilla/readability-cli或npm install -g reader-cli。提取命令:reader "URL" > article.txt。优点是擅长去除杂乱内容、保留文章结构。 - trafilatura(基于 Python):用
command -v trafilatura检查,未安装则pip3 install trafilatura。提取命令:trafilatura --URL "URL" --output-format txt > article.txt,可选参数--no-comments、--no-tables、--precision、--recall。优点是提取准确、适应多种站点结构、支持多语言。 - 回退方案(curl + 简单解析):在前两者不可用时使用 curl 下载并用 Python 的 HTMLParser 做基础提取,可靠性较低但无需依赖。
标题获取:使用 reader 时取输出 markdown 第一行(head -n 1 | sed 's/^# //');使用 trafilatura 时通过 --json 元数据解析 title;回退方案用 curl 抓取 <title> 标签。文件名会做清理(移除 / : ? " < > | 等字符、限制长度)并以 .txt 结尾。
完整工作流会检查工具、提取内容、清理文件名、移动到最终文件名,并输出确认信息和前 10 行预览。
适用场景
- 用户提供文章或博客 URL,想要其文本内容
- 用户要求下载文章、提取某 URL 的内容、把博客保存为文本
- 需要无干扰的干净文章文本(如新闻站点、博客等)
最佳实践建议:提取后始终向用户展示预览(前 10 行);保存前确认提取成功;清理文件名以兼容文件系统;主方法失败时尝试回退方案;告知用户使用了哪个工具;文件名长度保持合理(少于 100 字符)。
工具的适用差异:reader 适合大多数文章(基于 Firefox 阅读模式,适用于多数新闻站点和博客);trafilatura 适合学术文章、新闻站点、布局复杂的博客以及非英文内容;回退方案可能包含噪声、段落识别准确性较低,但对简单站点仍可使用。
限制与错误处理
- 工具未安装时,尝试替换工具(reader → trafilatura → 回退),并可提示安装命令。
- 付费墙或需要登录时,提取工具可能失败,应向用户说明“该文章需要认证,无法提取”。
- URL 无效时,检查 URL 格式,尝试带与不带重定向的方式。
- 未提取到内容时,站点可能使用大量 JavaScript,可尝试回退方法;若提取失败需告知用户。
- 标题含特殊字符时,需为文件系统清理(移除 / : ? " < > |,替换为 - 或删除)。
价格、平台、效果等更多信息暂未提供。