写作与公文
需要把网页文档/文章抓取为干净 Markdown 时,用…
适用于 http/https URL 的文档、文章和参考页面,优先获取 markdown-native 响应,失败时用 selector 或 Bun 脚本提取 Markdown。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要把网页文档/文章抓取为干净 Mark特定
解决思路
- 按顺序抓取网页内容:优先使用 markdown-native 端点(`content-type: text/markdown`);其次对已知站点使用基于 selector 的 HTML 提取;当 selector 失败时使用内置 Bun fallback 脚本。
- 提取前验证所需工具是否可用:`command -v curl >/dev/null || echo "curl is required"`,`command -v html2markdown >/dev/null || echo "html2markdown is required for HTML extraction"`,`command -v bun >/dev/null || echo "bun is required for fetch.ts fallback"`。
- 为内置脚本安装 Bun 依赖:`cd ~/.claude/skills/web-fetch && bun install`。
- 对任意 URL 执行默认工作流:设置 `URL="<url>"`,并用 `CONTENT_TYPE="$(curl -sIL "$URL" | awk -F': ' 'tolower($1)=="content-type"{print tolower($2)}' | tr -d '\r' | tail -1)"` 获取 `Content-Type`。
- 如果 `CONTENT_TYPE` 匹配 `markdown`,直接执行 `curl -sL "$URL"`。
- 否则执行 `curl -sL "$URL" | html2markdown --include-selector "article,main,[role=main]" --exclude-selector "nav,header,footer,script,style"` 进行 HTML 转 Markdown。
- 对已知站点使用对应 selector:`platform.claude.com` 使用 include `#content-container`;`docs.anthropic.com` 使用 include `#content-container`;`developer.mozilla.org` 使用 include `article`;`github.com`(docs)使用 include `article`、exclude `nav,.sidebar`;通用站点使用 include `article,main,[role=main]`、exclude `nav,header,footer,script,style`。
- 已知站点 selector 示例:`curl -sL "<url>" | html2markdown --include-selector "#content-container" --exclude-selector "nav,header,footer"`。
- 当站点不在 patterns 列表中时,查找合适 selector:用 `curl -s "<url>" | grep -o '<article[^>]*>\|<main[^>]*>\|id="[^"]*content[^"]*"' | head -10` 检查存在哪些内容容器。
- 测试 selector:`curl -sL "<url>" | html2markdown --include-selector "<selector>" | head -30`。
- 检查行数:`curl -sL "<url>" | html2markdown --include-selector "<selector>" | wc -l`。
- 当 selector 输出效果差时,运行内置解析脚本:`bun ~/.claude/skills/web-fetch/fetch.ts "<url>"`。
- 如果已经在 skill 目录中,运行 `bun fetch.ts "<url>"`。
- 使用选项参考:`--include-selector "CSS"` 只保留匹配元素;`--exclude-selector "CSS"` 移除匹配元素;`--domain "https://..."` 将相对链接转换为绝对链接。
- 排障:selector 输出为空时,页面可能是 markdown-native,先检查 headers:`curl -sIL "<url>" | grep -i '^content-type:'`。
- 排障:选错内容时,站点可能有多个 article/main 区域,运行 `curl -s "<url>" | grep -o '<article[^>]*>'`。
- 排障:`html2markdown` not found 时,安装它,然后重试 selector-based extraction。
- 排障:`bun` 或脚本依赖缺失时,运行 `cd ~/.claude/skills/web-fetch && bun install`。
- 排障:缺失代码块时,检查站点是否使用非标准代码格式。
- 排障:客户端渲染内容时,如果 HTML 只有 "Loading..." 占位符,内容由 JS 渲染,`curl` 和 Bun 脚本都无法提取,改用 browser-based tools。
适用边界 · 注意事项
- 当页面内容为客户端 JS 渲染,HTML 只有 "Loading..." 占位符时,`curl` 和 Bun 脚本无法提取;应改用 browser-based tools。
- 当 `html2markdown` 或 `bun` 未安装、依赖缺失且无法安装时,selector 提取和 Bun fallback 不可用。
- 当站点不在已知 selector patterns 中且内置 fallback 输出仍差时,需要手动寻找 selector 或改用浏览器工具。