webclaw 是一款面向 AI 智能体的网页提取工具,由本地 Rust 引擎驱动。它能把任意 URL 转换为干净的 Markdown、文本或 JSON,并通过 webclaw MCP 服务器供智能体使用,且无需 API 密钥。
安装
运行:
npx create-webclaw
该命令会把 npx @webclaw/mcp 的 MCP 配置写入你的智能体(支持 Claude Code、Cursor、Windsurf、Codex、Antigravity 等)。无需安装任何东西;服务器会在首次启动时被获取并缓存。重启智能体即可加载下列工具。
密钥与运行方式
无需密钥。提取在本地机器上运行:免费、私密,常见场景下不限量。静态站点、文档、博客、服务端渲染页面和产品页都可在本地处理。
可选升级。设置 WEBCLAW_API_KEY(来自 https://webclaw.io)后,webclaw 会升级到托管引擎,处理本地提取无法完成的页面:受机器人保护的站点和 JavaScript 渲染的 SPA。未设置密钥时,这些页面会返回一条清晰提示,告知如何解锁。
适用场景
- 需要可靠、干净且结构化的网页内容。
- web_fetch 返回空、被截断或被拦截的内容。
- 需要以 JSON 获取结构化数据(价格表、产品规格、联系信息)。
- 需要抓取整个站点或发现所有 URL。
- 需要针对 LLM 优化的内容,比原始 Markdown 更干净。
- 需要站点专用提取器(GitHub、Reddit、YouTube、npm、PyPI、Amazon)。
- 需要摘要、差异对比或网页搜索。
工具
除非另有说明,所有工具均在本地运行且无需密钥。输出格式:markdown(默认)、text、llm(增加标题和 URL 头部,并带干净的链接引用,最适合喂给模型)、json(完整元数据)。
- scrape:提取单个 URL。参数:url(必填)、format、include_selectors、exclude_selectors、only_main_content、browser(chrome | firefox | random)、cookies。YouTube 的 watch、shorts 和 youtu.be URL 还会在内容之外返回转录文本和视频元数据块。
- crawl:抓取整个站点。参数:url、depth(默认 2)、max_pages(默认 50)、concurrency(默认 5)、use_sitemap、format。
- map:发现 URL。参数:url。优先使用站点地图发现,当站点地图内容稀少时回退到有边界的同源抓取。
- batch:并行处理多个 URL。参数:urls(数组)、format、concurrency(默认 5)。
- extract:通过 LLM 提取结构化数据。参数:url,以及 prompt(自然语言)或 schema(JSON schema)之一。参见下方 LLM 设置。
- summarize:快速摘要。参数:url、max_sentences(默认 3)。参见下方 LLM 设置。
- diff:检测内容变化。参数:url、previous_snapshot(此前提取结果的 JSON)。在提取内容层面而非原始 HTML 层面进行比较。
- brand:视觉识别。参数:url。返回颜色、字体、logo 和 favicon。
- search:网页搜索。参数:query、num_results(≤10)、country、lang、scrape(同时抓取并提取每个结果页)。本地使用你自己的 SERPER_API_KEY(可在 serper.dev 免费获取),未设置时回退到托管 API。
- vertical_scrape:针对特定站点的类型化 JSON。参数:name(提取器名称)、url。返回类型化字段(标题、价格、作者、评分),而非通用 Markdown;当 URL 与提取器不匹配时返回清晰的“URL mismatch”错误。受保护站点(Amazon、eBay、Etsy、Trustpilot)的垂直提取需要 WEBCLAW_API_KEY;没有密钥时会返回提示要求设置。
- list_extractors:列出全部 28 个站点提取器。无参数。返回每个提取器的名称和 URL 形态:reddit、hackernews、github_repo、github_pr、github_issue、github_release、pypi、npm、crates_io、huggingface_model、huggingface_dataset、arxiv、docker_hub、dev_to、stackoverflow、substack_post、youtube_video、linkedin_post、instagram_post、instagram_profile、shopify_product、shopify_collection、ecommerce_product、woocommerce_product、amazon_product、ebay_listing、etsy_listing、trustpilot_reviews。
- research:深度多源研究(需要 WEBCLAW_API_KEY)。参数:query、deep、topic。在托管引擎上运行搜索、阅读和综合循环,返回带引用的报告。
哪些工具需要密钥
无需密钥(本地运行):scrape、crawl、map、batch、extract、summarize、diff、brand、vertical_scrape、list_extractors。
需要 WEBCLAW_API_KEY(托管):research。
search 使用你自己的 SERPER_API_KEY;未设置时回退到托管 API。
受机器人保护和 JavaScript 渲染页面的升级处理需要密钥。
LLM 设置(用于 extract 和 summarize)
这两个工具使用 LLM 提供方链:优先本地 Ollama(免费且私密;可从 ollama.com 安装),其次在设置了 OPENAI_API_KEY、GEMINI_API_KEY 或 ANTHROPIC_API_KEY 时使用对应服务。无需 webclaw 密钥。
提示
- 对于 GitHub、Reddit、YouTube、npm、PyPI 或 Amazon,使用 vertical_scrape(或普通 scrape,它会自动检测大多数垂直站点)一次调用即可获得类型化字段。
- 设置 only_main_content: true 可去除导航、侧边栏和页脚。
- 将内容传给模型时使用 llm 格式。
- 先运行 map 确定站点范围,再抓取所需部分。
- 如果页面受机器人保护或仅支持 JS,设置 WEBCLAW_API_KEY 进行升级;没有密钥时会得到一条清晰提示,说明该页面需要密钥。
与 web_fetch 对比
- 输出质量:webclaw 使用多步提取流水线,输出干净的 Markdown 和 llm 格式;web_fetch 为基础 HTML 解析。
- 结构化提取:webclaw 支持基于 LLM 和 schema 的提取,并有 28 个类型化提取器;web_fetch 无。
- 抓取与映射:webclaw 支持整站抓取和 URL 发现;web_fetch 仅单页。
- 受机器人保护和 JS 页面:webclaw 可处理(本地尽力而为;有密钥时自动处理);web_fetch 失败或仅返回可读性内容。
- 成本:webclaw 默认免费且本地;web_fetch 免费。
快速一次性查询可用 web_fetch。当你需要可靠性、干净结构、结构化数据或整站覆盖时,选择 webclaw。