核心用法
clawfetch 是一款基于 Node.js 的 Web 抓取 CLI 工具,通过 OpenClaw Skill 封装对外提供服务。其核心功能是将单个网页 URL 转换为规范化 Markdown 格式,并附加结构化元数据头部,便于下游 Agent 或知识库系统直接消费。
典型调用模式:
node node_modules/clawfetch/clawfetch.js <URL> [--max-comments N] [--no-reddit-rss]
三种优化场景:
1. 通用文章/文档:默认启动 headless Chromium(Playwright),经 Readability + Turndown 提取正文,过滤导航、广告等噪音
2. GitHub 仓库:智能识别仓库 URL,优先走 raw.githubusercontent.com 快速通道获取 README 原始内容,失败才回退到浏览器模式
3. Reddit 帖子:默认将帖子 URL 转换为 .rss 格式,以桌面浏览器 UA 抓取 Atom Feed,渲染为「主贴 + 评论」层级结构;支持 --max-comments 限制评论数,或用 --no-reddit-rss 强制浏览器抓取
输出格式包含标准化元数据块:Title、Author、Site、FinalURL、Extraction 策略标识及可选的 FallbackSelector,随后是 --- MARKDOWN --- 分隔的正文。
显著优点
- 轻量化封装:Skill 本身不内嵌源码,仅作为 npm 包的薄 wrapper,代码量小、可审计性强
- 依赖隔离:通过
bootstrap_deps.sh在 Skill 目录本地安装clawfetch@0.1.6,不污染全局 npm 环境 - 多源适配:针对主流内容平台(GitHub、Reddit、微信公众号、技术博客)有专门优化路径,输出质量高于通用抓取
- Agent 友好:输出格式稳定、元数据完整,便于自动解析与向量化入库
潜在缺点与局限性
- 手动初始化:npm 包不会随 Skill 安装自动部署,需显式执行
bootstrap_deps.sh,增加首次使用门槛 - 运行时依赖重:底层依赖 Playwright + Chromium,容器需满足 Node、npm 及网络访问条件,资源占用高于纯 HTTP 库方案
- 版本锁定:Skill 硬编码
clawfetch@0.1.6,无法自动获取上游补丁,需 Skill 作者手动更新 - Reddit RSS 策略风险:依赖 Reddit 的公开 RSS 接口,若平台限流或变更格式,抓取可能失败
- 单页限制:仅支持单 URL 抓取,无站点级爬虫、无链接跟随、无增量更新能力
适合人群
- 需要为 AI Agent 或 RAG 系统构建网页知识库的开发者
- 希望将分散的技术博客、GitHub README、Reddit 讨论批量转为 Markdown 归档的自动化工作流用户
- 在受控容器环境(OpenClaw)中运行、能接受手动初始化步骤的技术团队
常规风险
- 网络可达性:运行期需访问 npm registry 及目标网站,网络策略受限环境可能失败
- Chromium 启动开销:首次调用或冷启动时可能因浏览器初始化产生延迟(秒级)
- 内容平台反爬:高频率抓取可能触发 Cloudflare、Reddit 等平台的速率限制或阻断
- 依赖供应链:通过 npm 引入的 transitive dependencies 存在 supply chain 攻击面(如恶意包、篡改),虽版本锁定降低风险,但仍需信任
clawfetch作者及其依赖树