网页内容抓取转Markdown
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 中的官方安装指南,把 @user_fccf428b/webpage-to-markdown-extractor 这个网页内容抓取转 Markdown 技能安装到我的 AI 助手中。
技能介绍
解决什么问题
命令行里抓一个网页,经常拿回来一段还没执行 JS 的骨架 HTML:正文在异步请求之后才注入,图片懒加载,评论区要滚动才出现。直接把它丢给 HTML 转 Markdown 的库,结果就是满屏 script/style 噪声、标签嵌套错乱、图片视频链接全部失效。更麻烦的是登录墙和验证码——抓取「成功」了,但保存下来的是登录页。
这个技能的目标是给 Agent 一条可复现的抓取链路:真渲染、可等待、输出路径可控、失败时能回溯现场。
技能如何工作
- 渲染抓取:底层调用
baoyu-fetch.mdCLI,通过 Chrome DevTools Protocol 拿到执行完脚本之后的 DOM,而不是原始 HTTP 响应。可用--headless强制无界面运行,或用--cdp-url复用已有的 CDP 端点。 - 站点适配器:
--adapter支持x、youtube、hn、generic,默认自动探测。适配器负责把各站点的非标结构(时间线、视频页、评论列表)归一化。 - 首次配置不静默:检测不到
EXTEND.md时流程会被阻塞,必须先询问媒体下载策略、默认输出目录、配置保存位置三项,再写入配置文件。不存在「默默用默认值跑完」这种路径。 - 输出路径由 Agent 构造:规则是
{base_dir}/{domain}/{slug}/{slug}.md,每个 URL 独占目录以便媒体文件隔离;同名冲突时追加时间戳后缀。 - 媒体处理:开启
--download-media后图片和视频落到同级的imgs/、videos/,Markdown 里的链接被改写为本地相对路径。 - 交互等待:
--wait-for interaction(别名--wait-for-login)让页面停在登录或验证码步骤等待人工处理,轮询间隔与超时时间可调,默认最长 10 分钟。 - 可回溯:
--debug-dir会写出document.json、page.html、markdown.md、network.json,排查渲染差异时能直接对比抓到的 DOM 和最终产物。
适用边界与注意点
- 默认 headless 抓取只能算临时结果。部分站点在无界面模式下渲染路径不同,CLI 不会报错,但会静默返回低质量内容。每次 headless 运行后都应检查保存下来的 Markdown,可疑时参考
references/quality-gate.md换捕获模式重试。 --download-media依赖--output已经设置,否则媒体目录无从确定。- 适配器覆盖范围有限,冷门站点会落到
generic分支,结构归一化效果取决于该站点的 DOM 组织方式。 - 安全边界:不自动安装依赖、不修改系统权限、不创建持久化任务。涉及发送、发布、删除、付款、部署等外部写入时,先展示目标和影响并取得明确确认。凭据只用于用户指定的对应服务,不回显、不记录、不转发。
使用场景
- 把靠 JS 渲染的博客文章页抓下来存成 Markdown,正文和图片链接都要能直接引用。
- 抓取 YouTube 视频页或 X 推文串,用对应 adapter 归一化结构后再归档成 Markdown。
- 目标页面有登录墙或验证码,需要 --wait-for interaction 停在页面上等人工完成后继续抓。
- 批量抓取多篇文章,每篇输出到独立目录,图片视频下载到本地并把链接改写为相对路径。
适合人员
- 负责内容库建设的技术编辑:需要把网页文章稳定转成干净 Markdown 入库,不想再写一次性脚本。
- 做资讯或竞品监控的数据分析师:定期抓页面存档,要求正文与媒体分目录存放、结果可追溯。
- 在 Agent 工作流里接网页抓取步骤的工程师:需要参数化、输出路径可控、失败可回溯的抓取环节。
- 处理视频转写或推文分析的研究者:需要先把 YouTube、X 页面归一化成结构化文本再喂给模型。