用途
Article Extractor 用于从网页文章、博客文章和教程中提取主要内容,去除导航菜单、广告、订阅表单、相关文章侧栏、评论区和社交媒体按钮等干扰元素,将干净、可读的文本保存为文件。
主要能力
- 从 URL 提取文章正文,去除页面杂乱内容
- 支持三种提取工具,按优先级自动选择:reader(基于 Mozilla Readability)、trafilatura(Python)、curl 回退方案
- 自动获取文章标题并用作文件名
- 清理文件名中的特殊字符,确保文件系统兼容
- 保存后显示文件位置和内容预览
使用方式
前置条件
至少满足以下之一:
- Node.js 18+ 和 npm — 用于 reader(
npm install -g reader-cli) - Python 3 和 pip — 用于 trafilatura(
pip3 install trafilatura)
若两者均未安装,技能会回退到基于 curl 的基础提取(无需安装)。
触发场景
当用户出现以下情况时激活:
- 提供文章/博客 URL 并希望获取文本内容
- 要求“下载这篇文章”
- 要求“从 [URL] 提取内容”
- 要求“将这篇博客文章保存为文本”
- 需要无干扰的干净文章文本
工作流程
- 按顺序检查已安装的工具(reader 或 trafilatura)
- 使用最佳可用工具下载并提取文章
- 清理内容(去除多余空白,正确格式化)
- 以文章标题作为文件名保存到文件
- 确认位置并显示预览
提取方法
方法一:reader(推荐,基于 Mozilla Readability)
reader "URL" > article.txt
优点:基于 Mozilla Readability 算法,擅长去除杂乱内容,保留文章结构。
方法二:trafilatura(基于 Python,适合博客/新闻)
trafilatura --URL "URL" --output-format txt > article.txt
可选参数:--no-comments(跳过评论区)、--no-tables(跳过数据表格)、--precision(偏向精确率)、--recall(提取更多内容,可能包含噪声)。
优点:提取准确,适应多种网站结构,支持多语言。
方法三:回退方案(curl + 基础解析)
使用 curl 下载页面,通过 Python 的 HTMLParser 进行基础文本提取。可靠性较低,但无需依赖。
获取文章标题
- reader:输出 Markdown,标题在首行(
# 标题) - trafilatura:通过
--json获取元数据中的 title 字段 - curl 回退:从
<title>标签提取并去除站点名
文件名处理
清理标题中的特殊字符(/、:、?、"、<、>、|),替换为 - 或移除,限制长度(建议 100 字符以内),添加 .txt 扩展名。
适用场景
- 用户提供文章 URL 并希望获取纯文本内容
- 需要保存博客文章为文本文件
- 需要无干扰的干净文章文本用于后续处理
- 学术文章、新闻网站、复杂布局博客、非英文内容的提取
限制
- 付费墙或需要登录的文章可能提取失败
- 重度依赖 JavaScript 的网站可能无法提取
- 回退方法可能包含噪声,段落检测准确性较低
- 需要至少安装 reader 或 trafilatura 之一以获得最佳效果
- 提取质量因网站结构而异,建议始终向用户显示预览并确认
输出格式
保存的文件包含:文章标题(如可用)、作者(如工具提供)、正文文本、章节标题。不包含导航、广告或杂乱内容。
错误处理
- 工具未安装:尝试替代工具,或提示安装命令
- 付费墙/需登录:告知用户无法提取
- 无效 URL:检查格式,尝试处理重定向
- 无内容提取:尝试回退方法,告知用户
- 标题含特殊字符:清理文件名