新闻详情

新闻详情

首页 / 资讯中心 / 详情

网页秒变Markdown:pi-skills内容提取管线Readability、JSDOM与Turndown原理解密

发布时间:2026/10/2 12:50:36来源:尧图网络
网页秒变Markdown:pi-skills内容提取管线Readability、JSDOM与Turndown原理解密
网页秒变Markdownpi-skills内容提取管线Readability、JSDOM与Turndown原理解密【免费下载链接】pi-skillsSkills for pi coding agent (compatible with Claude Code and Codex CLI)项目地址: https://gitcode.com/gh_mirrors/pi/pi-skillspi-skills 是面向 pi coding agent 的技能集合兼容 Claude Code 与 Codex CLI其中的内容提取管线可以用一句话概括把任意网页秒变干净、结构化的 Markdown 文本。它由三大开源引擎接力完成——Mozilla 的 Readability 负责找出正文JSDOM 提供无浏览器的 HTML 环境Turndown 负责把 HTML 翻译成 Markdown。本文带你完整拆解这条管线的原理与实现。三大引擎各司其职管线全景内容提取的核心代码位于 browser-tools/browser-content.js无浏览器场景的实现则在 brave-search/content.js。整个管线像一条流水线三个工具各有分工工具角色一句话原理JSDOM环境底座在 Node.js 中模拟浏览器 DOM让纯 JS 库可以读懂网页Readability正文猎手用启发式评分算法从整页 HTML 中剥离出正文内容Turndown格式翻译官将 HTML 节点逐层转换为 Markdown 语法网页 HTML ──▶ JSDOM构建 DOM──▶ Readability提取正文──▶ Turndown转 Markdown │ └─ 失败 ──▶ 兜底策略选择 main/article 主容器依赖版本可在 browser-tools/package.json 中查看例如mozilla/readability ^0.6.0、jsdom ^27.0.1、turndown ^7.2.2。第一步JSDOM——在 Node 里造一个浏览器网页是 HTML 文本但 Readability 需要的是一个活的 DOM 树。JSDOM 的作用就是这一步const doc new JSDOM(outerHTML, { url: finalUrl });相关实现见 browser-content.js 第58-61行。传入 HTML 字符串和原始 URL用于解析相对链接后JSDOM 在内存中构建出完整的文档对象模型doc.window.document就是一个可直接操作的标准 DOM。为什么需要它因为 Readability 原本是 Firefox 浏览器内的原生算法而 pi-skills 的脚本运行在无头 Node 环境JSDOM 就是连接两者的桥梁。第二步Readability——正文猎手的评分算法网页上除了正文还塞满了导航栏、侧边栏、广告、评论区……Readability 的核心任务是只留下正文。它的思路是启发式评分按块切割把p、div、section等元素切成候选块综合打分文字密度高的块加分类名/ID 含comment、footer、sidebar的块减分含article、content、body的块加分选出最优祖先取得分最高块所在的公共祖先容器整体输出为article.content。在 content.js 第51-60行 可以看到调用方式极其简洁——三行代码就拿到正文 HTML 和文章标题const reader new Readability(dom.window.document); const article reader.parse();第三步Turndown——HTML 到 Markdown 的精确翻译拿到正文 HTML 后Turndown 接管翻译工作。它不是简单的正则替换而是遍历 DOM 树、按节点类型匹配规则h1变#、strong变**、table变 GFM 表格……项目中的转换配置见 browser-content.js 第64-79行有几个值得注意的细节GFM 插件turndown.use(gfm)让表格、删除线等 GitHub 风格语法正确转换ATX 标题headingStyle: atx输出# 标题而非老式标题 围栏代码块codeBlockStyle: fenced使用风格自定义清理规则空链接a无文字直接移除避免产生[]()噪声正则后处理压缩多余空格、合并三连换行让输出更紧凑。容错设计Readability 失败时的兜底策略并不是每个网页都有标准正文——落地页、SPA 页面常让 Readability 返回空。pi-skills 为此设计了两级兜底逻辑见 browser-content.js 第84-96行级别策略效果一级Readability 解析适用于绝大多数文章页二级移除script/nav/footer等噪声节点按main article [rolemain] .content优先级找主容器覆盖非文章结构的页面三级若主容器文字少于 100 字符输出(Could not extract content)明确失败不产生垃圾输出这种优雅降级让 Agent 在网页格式千变万化的真实场景下依然稳定工作。两种调用场景带浏览器 vs 纯抓取pi-skills 用同一套三件套实现了两条管线应对不同需求场景一需要 JavaScript 渲染的页面browser-tools/SKILL.md 中的browser-content.js命令流程是browser-start.js启动带远程调试端口的 Chrome:9222通过 CDP 协议导航到目标 URL 并等待networkidle2JS 渲染完成用DOM.getOuterHTML拿到渲染后的完整 HTML再进入 JSDOM → Readability → Turndown 管线。这正是网页秒变 Markdown对动态页面也有效的原因——先让浏览器把 JS 跑完再提取。场景二轻量静态抓取brave-search/search.js 的--content模式则直接fetch网页带 10 秒超时不启动浏览器速度快得多每条结果还截断到 5000 字符方便喂给 AI 上下文。brave-search/SKILL.md 给出了完整用法说明。上手体验三步跑通提取管线如果你想在 pi-skills 中体验这条管线只需三步安装依赖进入 browser-tools/ 目录执行npm install一次性启动浏览器可选动态页面才需要运行browser-start.js执行提取运行browser-content.js 网页URL几秒后终端就会输出标题 干净的 Markdown 正文。⚡ 小技巧对静态文档页如技术文档、博客直接使用 brave-search/content.js 更快——无需浏览器一次 HTTP 请求即可完成提取。总结为什么这条管线值得学习pi-skills 的内容提取管线是一个教科书级的小而美设计三条经验值得借鉴组合优于自研JSDOM Readability Turndown 三个成熟引擎各司其职核心逻辑不足百行永远要有兜底Readability 失败时的降级策略是真实场景稳定性的关键为 AI 输出而格式化ATX 标题、GFM 表格、空行压缩——每一步后处理都为了让 Markdown 更贴近 AI 的阅读习惯。下次你需要把网页喂给大模型时不妨参考这套管线先渲染、再定位正文、最后翻译成 Markdown三步走又快又干净。【免费下载链接】pi-skillsSkills for pi coding agent (compatible with Claude Code and Codex CLI)项目地址: https://gitcode.com/gh_mirrors/pi/pi-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

纵横秘湾黄金宫建造攻略:无限资源循环与自动化贸易实战 2026/10/2 13:32:05

纵横秘湾黄金宫建造攻略:无限资源循环与自动化贸易实战

1. 开局先聊清楚:这个“黄金宫”到底是个什么玩法《纵横秘湾 Corsair Cove》这个系列能出到第23期,本身就说明了一件事——它的玩法循环是经得起反复折腾的。这一期标题叫“打造黄金宫!无限资源启动”,关键词很直白:黄…

阅读更多 →
低配硬件AI本地部署实战:从模型选型到API服务 2026/10/2 13:32:05

低配硬件AI本地部署实战:从模型选型到API服务

“强者从不抱怨环境!直接去干!”这句话放在 AI 本地部署里,不是鸡汤,而是一条实战指令。很多朋友长期卡在“显卡不够好、显存不够大、机器太老”上,迟迟没有把模型跑起来。这篇文章不做“推荐配置党”的空谈&#xff0…

阅读更多 →
Windows下Claude Code落地指南:环境配置与避坑实践 2026/10/2 13:31:53

Windows下Claude Code落地指南:环境配置与避坑实践

做后端开发这几年,Claude Code 算是少数几个真正改变我日常节奏的终端工具。它不是一个普通的聊天窗口,而是一个直接跑在命令行里的 AI 编程代理:你给它一个目标,它在你的项目目录里读文件、改代码、跑命令、看报错,然…

阅读更多 →
Claude Code本地化部署:VS Code+CLI+本地模型深度集成指南 2026/10/2 13:31:53

Claude Code本地化部署:VS Code+CLI+本地模型深度集成指南

1. 项目概述:这不是另一个AI插件,而是一次IDE工作流的底层重写Claude Code不是VS Code里又一个“智能补全”或“聊天窗口”式的AI插件——它是一套从终端进程调度、代码上下文感知、到编辑器原生操作能力深度耦合的全新开发范式。我第一次在Ubuntu 24.04…

阅读更多 →
VBA模板自动同步总控台:母版-副本版本管理实战 2026/10/2 13:31:52

VBA模板自动同步总控台:母版-副本版本管理实战

最近我把手头最头疼的一件事彻底解决掉了——用 WorkBuddy 搭了一个“母版-副本自动同步总控台”,把散落在共享盘、各人电脑、邮件附件里的那几张 VBA 模板文档,从“各管各的”变成了“一套母版、自动下发”。干这行的人应该都有同感:VBA 模板…

阅读更多 →
云原生架构下的AI Agent生产级设计:并发、状态与安全边界实战 2026/10/2 13:31:52

云原生架构下的AI Agent生产级设计:并发、状态与安全边界实战

2026年了,AI Agent早就不该是“能跑通Demo”的水平。我见过太多团队,两周做出一个惊艳的Agent原型,一上生产就原形毕露:50个用户同时提问,服务直接超时雪崩;API账单翻着跟头往上涨;Agent在没人盯…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉