SuperAPI AI 工具集

web-fetch

写作与研究

查看项目

更新于 10-14 10:10

技能介绍

web-fetch 是一个网页内容抓取技能,目标是把网页抓取为干净的 Markdown 文本。

用途 该技能用于按固定优先级抓取网页内容并转换为 Markdown:优先使用 Markdown 原生端点(content-type: text/markdown),其次对已知站点使用基于选择器的 HTML 提取,最后在选择器失效时使用内置的 Bun 兜底脚本。适合抓取文档、参考资料等类型的网页。

前置要求 提取前需确认所需工具是否可用:

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)"

if echo "$CONTENT_TYPE" | grep -q "markdown"; then curl -sL "$URL" else curl -sL "$URL"
| html2markdown
--include-selector "article,main,[role=main]"
--exclude-selector "nav,header,footer,script,style" fi

已知站点选择器

站点 Include Selector Exclude Selector
platform.claude.com #content-container -
docs.anthropic.com #content-container -
developer.mozilla.org article -
github.com (docs) article nav,.sidebar
Generic article,main,[role=main] nav,header,footer,script,style

示例:

curl -sL "<url>"
| html2markdown
--include-selector "#content-container"
--exclude-selector "nav,header,footer"

查找正确的选择器 当站点不在已知模式列表中时:

Check what content containers exist

curl -s "<url>" | grep -o '<article[^>]>|<main[^>]>|id="[^"]content[^"]"' | head -10

Test a selector

curl -sL "<url>" | html2markdown --include-selector "<selector>" | head -30

Check line count

curl -sL "<url>" | html2markdown --include-selector "<selector>" | wc -l

通用兜底脚本 当选择器输出效果不佳时,运行内置解析脚本:

bun ~/.claude/skills/web-fetch/fetch.ts "<url>"

如果已位于技能目录内:

bun fetch.ts "<url>"

选项参考 --include-selector "CSS" # Keep only matching elements --exclude-selector "CSS" # Remove matching elements --domain "https://..." # Convert relative links to absolute

故障排查

  • 选择器输出为空:页面可能是 Markdown 原生,先检查响应头:curl -sIL "<url>" | grep -i '^content-type:'
  • 选错内容:站点可能有多个 article/main 区域:curl -s "<url>" | grep -o '<article[^>]*>'
  • 找不到 html2markdown:先安装它,再重试基于选择器的提取。
  • bun 或脚本依赖缺失:运行 cd ~/.claude/skills/web-fetch && bun install。
  • 缺失代码块:检查站点是否使用了非标准代码格式。
  • 客户端渲染内容:如果 HTML 只有 "Loading..." 占位符,说明内容由 JS 渲染。curl 和 Bun 脚本都无法提取,需要使用基于浏览器的工具。

限制 该技能依赖 curl、html2markdown、bun 等外部工具;对于纯客户端(JS)渲染的页面,curl 与内置 Bun 脚本均无法提取内容,需改用基于浏览器的工具。收费、价格与平台等信息暂未提供。