面向 AI 爬虫的 robots.txt:该允许什么,该屏蔽什么
为你关心的每个 AI 爬虫单独设置一个 User-agent 规则组。如果希望被引用,请允许 OAI-SearchBot、Claude-SearchBot 和 PerplexityBot 等搜索爬虫,并单独决定 GPTBot、ClaudeBot、Google-Extended 和 Applebot-Extended 等训练标识。对某个爬虫来说,指名的规则组会取代 * 规则组。
robots.txt 是一个纯文本文件,可以追溯到 1994 年,并在 2022 年成为正式标准 RFC 9309。大多数 AI 厂商表示其爬虫遵循它,有几家还分别发布了搜索和训练的标识。只要规则的含义与你的理解一致,robots.txt 就是声明 AI 政策最简单的地方。
本页内容
AI 爬虫使用哪些 robots.txt 标识?
以下是各厂商在文档中列出的标识。根据 RFC 9309,匹配不区分大小写。
- OpenAI:
OAI-SearchBot(ChatGPT 搜索)、GPTBot(训练)、ChatGPT-User(用户要求的访问;OpenAI 表示 robots.txt 可能不适用)。 - Anthropic:
Claude-SearchBot(搜索)、ClaudeBot(训练)、Claude-User(用户要求的访问)。 - Perplexity:
PerplexityBot(搜索)、Perplexity-User(用户要求的访问;Perplexity 表示通常会忽略 robots.txt)。 - Google:
Googlebot(搜索,包括其 AI 功能)和Google-Extended,后者是没有独立爬虫的标识,用于控制内容是否用于 Gemini 的训练和接地(grounding)。 - Apple:
Applebot(Spotlight、Siri、Safari 搜索)和Applebot-Extended,后者不抓取内容,只控制内容是否用于训练 Apple 的基础模型。 - Meta:
meta-externalagent(训练和产品索引)和meta-webindexer(Meta AI 搜索)。 - Common Crawl:
CCBot,用于构建 Common Crawl 免费公开的网络数据存档。
一份好的 AI robots.txt 是什么样的?
这个示例允许 AI 搜索和用户抓取,选择退出主要的训练标识,并对所有人保持一个私密区域关闭:
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
User-agent: ChatGPT-User
User-agent: Claude-User
Allow: /
Disallow: /account/
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: meta-externalagent
User-agent: CCBot
Disallow: /
User-agent: *
Allow: /
Disallow: /account/
Sitemap: https://example.com/sitemap.xml
连续的多个 User-agent 行构成一个规则组,其下方的规则适用于其中每个爬虫。如果你确实希望内容被用于训练,只需去掉第二个规则组。屏蔽 Google-Extended 不会影响 Google 搜索:Google 表示它不影响被搜索收录,也不是排名信号。同样,Apple 表示禁止 Applebot-Extended 的页面仍然可以出现在其搜索结果中。
爬虫如何选择适用于自己的规则?
RFC 9309 对此有精确的定义,了解这些细节就能解释大多数意外情况:
- 爬虫会查找
User-agent与其产品标识匹配的规则组,不区分大小写。如果有多个规则组匹配,它们的规则会合并为一组。 - 只有在没有任何规则组匹配时,爬虫才会遵循
User-agent: *规则组。指名的规则组不会从*继承任何内容。 - 在规则组内,匹配路径最长的规则优先。对于
/blog/post,Allow: /blog/优先于Disallow: /。 - 如果
Allow和Disallow规则以相同长度匹配,应采用Allow。 - 路径中的
*匹配任意字符,$表示结尾,因此Disallow: /*.pdf$会覆盖所有 PDF。
robots.txt 最常见的错误有哪些?
- 期望指名的规则组继承
*。只有Allow: /的OAI-SearchBot规则组会开放所有路径,包括你在*下禁止的路径。 - robots.txt 地址返回 HTML 页面,通常是以状态码 200 返回的 404 页面。爬虫在其中找不到有效的规则。
- robots.txt 返回服务器错误。RFC 9309 规定,此时爬虫必须假定整个网站都被禁止。404 则不同:它表示没有限制。
- 本想屏蔽训练,却屏蔽了搜索标识,例如为避免模型训练而禁止
PerplexityBot或Claude-SearchBot。 - 依赖 robots.txt 来阻止用户要求的抓取。OpenAI 和 Perplexity 都表示其 user agent 可能不遵循它。
- 忘记子域名。每个主机都有自己的 robots.txt;Anthropic 的文档提醒网站所有者为每个子域名添加规则。
除了允许和禁止,还能声明 AI 使用政策吗?
Cloudflare 提出了为 robots.txt 增加 Content-Signal 行,包含三个信号:search(建立搜索索引并显示链接和简短摘录)、ai-input(将内容实时用于 AI 回答)和 ai-train(训练或微调模型)。Cloudflare 的托管 robots.txt 可以为你添加它。
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
和 robots.txt 里的其他内容一样,这些只是意愿表达,不是技术控制。Cloudflare 自己也指出,遵守 robots.txt 是自愿的。这一行是可选的,加上也无害,但它不能取代上面按爬虫分组的规则。
更改需要多久生效,如何检查?
RFC 9309 规定,爬虫使用缓存的 robots.txt 不应超过 24 小时,OpenAI 和 Perplexity 也都表示更改可能需要大约一天才会生效。还要记住,robots.txt 不是访问控制:即使你的规则允许某个爬虫,防火墙仍可能把它挡住。
AISeeWhy 会按 RFC 9309 为它测试的每个爬虫解析你的 robots.txt,标出无法访问或以 HTML 形式返回的文件,显示你的规则与服务器的不一致之处,并给出可直接使用的修改 diff。
常见问题
屏蔽 GPTBot 或 ClaudeBot 会降低我在 AI 回答中的可见度吗?
不会直接影响。两家厂商的搜索都使用独立的搜索爬虫,即 OAI-SearchBot 和 Claude-SearchBot。是否屏蔽训练爬虫是一个政策选择。
Google-Extended 能阻止 AI Overviews 吗?
不能。Google 表示,搜索中的 AI 功能使用 Googlebot 和常规的搜索控制手段,例如 nosnippet 和 noindex。Google-Extended 涵盖 Gemini 在其他 Google 产品中的训练和接地,不影响搜索。
AI 爬虫支持 Crawl-delay 吗?
它不属于 RFC 9309。Anthropic 表示将 Crawl-delay 作为非标准扩展来支持;其他厂商请查看各自的文档。
robots.txt 必须放在哪里?
放在每个主机的根目录,例如 https://example.com/robots.txt。位于子文件夹中的文件会被忽略,每个子域名都需要有自己的文件。
参考资料
- RFC 9309:Robots Exclusion Protocol
- OpenAI:OpenAI 爬虫概览
- Google:常见爬虫,包括 Google-Extended
- Apple:关于 Applebot
- Cloudflare:托管 robots.txt 与 Content Signals