webfetch 定位为“面向 AI 智能体与人类的许可证优先图像层”。它的核心目标是解决手动获取图片时的四类问题:不清楚许可证因而无法安全发布、难以脚本化、Google 图片搜索 API 已停用且抓取脆弱且处于服务条款灰色地带、缺少共享缓存导致重复下载。
用途
webfetch 用于在 AI 智能体或自动化流程中搜索、筛选并下载图像,同时确保每一张返回的图片都有可追溯的许可证信息。它联邦聚合 25 个图像提供商,按许可证优先排序,并默认拒绝无法判定许可证的 UNKNOWN 结果。
主要能力
- 联邦搜索:跨 25 个图像提供商聚合结果,提供商均为具有稳定条款和结构化许可证元数据的直接来源 API。
- 许可证优先排序:排序依据依次为许可证标签、元数据置信度、分辨率、提供商优先级;UNKNOWN 默认被拒绝(依据伯尔尼公约,除非能证明否则多数网络内容保留所有权利)。
- 结果字段:返回许可证标签、署名字符串、尺寸与下载 URL。
- 多种接入方式:一个 MCP 服务器、一个 CLI、一个 HTTP 服务器;任何支持 MCP 的智能体(Claude Code、Cursor、Cline、Continue、Roo Code、Codex)可通过一行配置接入。
- 配套工具:Chrome 扩展、Python SDK、TypeScript SDK。
- 共享缓存:所有接口共享 ~/.webfetch/cache/,以 SHA-256 为键,CLI 下载的文件可被 MCP 服务器即时使用,反之亦然。
- 守护进程模式:webfetch watch 支持重复查询或增量刷新。
- 自带提供商插件 API。
- 托管层:getwebfetch.com 提供池化提供商密钥、受管浏览器回退、团队用量面板。
使用方式
30 秒用法示例:
- MCP:在任意支持 MCP 的智能体内直接调用。
- TypeScript 库方式调用。 安装方面,curl | bash 安装器会幂等地把 webfetch 接入 Claude Code 的 ~/.claude/settings.json,可随时重跑以更新。包级 API 说明见 packages/core/README.md、packages/browser/README.md 及其他 packages/ 下的 README。 本地与云模式:CLI 为本地优先,默认 webfetch search、artist、album、download、probe、license、batch 在进程内调用 webfetch-core,并使用环境变量中的提供商 API 密钥。传入 --cloud 或设置 WEBFETCH_MODE=cloud 可调用 https://api.getwebfetch.com/v1/*,需使用 WEBFETCH_API_KEY 或 webfetch config set apiKey wf_live_...。本地模式适用于直接调用提供商与本地缓存;云模式适用于托管鉴权、池化提供商密钥、受管浏览器回退、用量统计或团队管控。
适用场景
适用于需要在不经人工审核情况下安全发布图片的自动化流水线,尤其是 AI 智能体需要按许可证合规获取图像的场景。也适用于需要批量、可脚本化获取图片并保留署名信息的团队。
限制与默认策略
安全默认:licensePolicy 为 "safe-only"(允许开放、平台许可、编辑/新闻稿类别,拒绝 UNKNOWN);safeSearch 为 "strict";需选择加入的提供商(youtube-thumb、bing、serpapi、browser、managed-browser、europeana-archival)默认关闭;单次下载上限 20MB;内容类型守卫;主机黑名单;对通用页面探测遵循 robots.txt。 许可证迁移说明:旧版构建曾将 Unsplash、Pexels、Pixabay 视为 CC0,当前构建显式暴露其平台条款。多数调用方应保持 licensePolicy: "safe-only",因为它仍允许开放、平台、编辑与新闻稿类别同时拒绝 UNKNOWN;仅需知识共享或公共领域素材的流水线应使用 licensePolicy: "open-only",并更新类型守卫以分别处理这三个平台标签。 关于定价与具体收费信息,资料中仅提及托管层位于 getwebfetch.com 且包含价格信息,但未提供具体价格内容。
开发与贡献
欢迎提交 Issue 和 PR。可运行 bun install && bun test 开始,参考 docs/ 下各领域参考文档。