SuperAPI AI 工具集

article-extractor

写作与研究

查看项目

更新于 10-15 08:33

技能介绍

用途

Article Extractor 用于从网页文章、博客文章和教程中提取正文内容。它会去除导航菜单、广告、 newsletter 订阅表单、相关文章侧边栏、评论区、社交媒体按钮、Cookie 提示等页面噪音,保存干净的、可读的文本文件。

主要能力

提取工具优先级

该技能按以下顺序检查并使用可用的工具:

  1. reader(推荐,基于 Mozilla Readability)

    • 检查命令:command -v reader
    • 安装命令:npm install -g @mozilla/readability-cli 或 npm install -g reader-cli
    • 优点:基于 Mozilla 的 Readability 算法,擅长去除冗余内容,保留文章结构。
  2. trafilatura(基于 Python,效果很好)

    • 检查命令:command -v trafilatura
    • 安装命令:pip3 install trafilatura
    • 优点:提取准确,适应多种网站结构,支持多语言。
    • 可用选项:--no-comments(跳过评论区)、--no-tables(跳过数据表格)、--precision(偏向精确率)、--recall(提取更多内容,可能包含噪音)。
  3. 后备方案(curl + 简易解析)

    • 在没有可用工具时使用基本的 curl 加文本提取,可靠性较低但无须依赖。

提取方法示例

方法 1:使用 reader

reader "URL" > article.txt

方法 2:使用 trafilatura

trafilatura --URL "URL" --output-format txt > article.txt
trafilatura --URL "URL" --output-format txt --no-comments --no-tables > article.txt

方法 3:后备方案 使用 curl 抓取页面,再通过 Python 的 HTMLParser 进行基础解析,跳过 script、style、nav、header、footer、aside 等标签,提取 p、article、main、h1-h6 等标签中的文本。该方式依赖较少但准确性较低。

获取文章标题

  • reader:输出 markdown,首行为标题(# 标题)。
  • trafilatura:通过 --json 输出元数据并解析其中的 title 字段。
  • curl 后备:从 HTML 的 <title> 标签中提取,并去除站点名称后缀。

文件名处理

提取标题后会清理文件名中的特殊字符(如 /、:、?、"、<、>、|),替换为 - 或删除,并限制长度(通常 80-100 字符以内),最后加上 .txt 扩展名。

完整工作流程

  1. 检查可用提取工具(reader → trafilatura → 后备方案)。
  2. 使用最佳可用工具下载并提取文章。
  3. 清理内容(去除多余空白,合理格式化)。
  4. 以文章标题作为文件名保存到文件。
  5. 向用户确认保存位置并展示预览(前 10 行)。

使用方式

当用户提供文章/博客 URL 并要求获取文本内容、下载文章、从 URL 提取内容或将博客文章保存为文本时,该技能被激活。技能会根据环境自动选择提取工具,若主工具失败则尝试备用工具,并始终保持向用户展示预览、验证提取成功后再保存。

适用场景

  • 从博客文章、新闻文章、教程中获取干净正文。
  • 需要保存文章为可读文本文件供后续阅读或处理。
  • reader 适用于大多数新闻网站和博客;trafilatura 适用于学术文章、新闻网站、复杂布局的博客以及非英文内容。

限制

  • 付费墙或需登录的文章可能提取失败,此时会提示用户该文章需要认证。
  • 大量使用 JavaScript 的网站可能无法提取内容,会尝试后备方法并在失败时告知用户。
  • 后备方案可能包含一些噪音,段落识别准确度较低。
  • 无效 URL 需要检查格式并尝试处理重定向。
  • 标题中的特殊字符需要清理以兼容文件系统。
  • 提取质量需通过预览确认,如有问题可尝试不同工具。

错误处理

  • 工具未安装:尝试备用工具,并提示安装命令(如 npm install -g reader-cli)。
  • 需要付费墙或登录:告知用户无法提取。
  • 无效 URL:检查格式,尝试带与不带重定向。
  • 无内容提取:站点可能使用大量 JavaScript,尝试后备方法,失败时告知用户。
  • 标题含特殊字符:清理文件名。

提取后输出

保存的文件包含:文章标题(如有)、作者(如工具提供)、正文、章节标题;不包含导航、广告或冗余内容。提取后会向用户显示:提取的文章标题、保存文件名、预览(前 10-15 行)、文件大小和位置。