GEO 指南

GPTBot和ClaudeBot怎么配?先分清三类访问

王朋友 · 星盒AI 创始人发布于 17 分钟读完
GPTBot和ClaudeBot怎么配?先分清三类访问

先说结论

很多网站开始配置 AI(人工智能)爬虫时,首先想到的是:到底应该全部允许,还是全部拒绝?

很多网站开始配置 AI(人工智能)爬虫时,首先想到的是:到底应该全部允许,还是全部拒绝?

这个问题不能统一回答。因为爬虫——也就是自动访问网站、读取网页内容的程序——来到网站,可能是为了三件完全不同的事:训练模型、支持搜索,或者响应某位用户的具体请求。

网站通常通过 robots.txt 表达自己的抓取规则。它是放在网站根地址下的公开文本文件,例如 https://www.example.com/robots.txt,用于告诉愿意遵守规则的爬虫:哪些页面可以访问,哪些页面不希望被访问。

这也是做 GEO(生成式引擎优化,本文指围绕网站内容在生成式 AI 搜索中的可见性进行优化)时必须分清的一件事:允许 AI 搜索爬虫,不等于同时允许模型训练爬虫。

本文讨论的是 OpenAI 和 Anthropic 与训练、搜索、用户请求直接相关的六个 User-agent。User-agent 是爬虫访问网站时报告的身份名称。只有先认清每个身份的用途,才能把规则写对。

如果网站希望保留出现在 ChatGPT 和 Claude 搜索结果中的机会,同时不希望公开内容被训练爬虫抓取,可以先采用以下选择:

  • OpenAI:允许 OAI-SearchBot,拒绝 GPTBot;
  • Anthropic:允许 Claude-SearchBot,根据业务需要决定是否允许 Claude-User,拒绝 ClaudeBot;
  • ChatGPT-User 需要单独看待:它由用户操作触发,OpenAI 明确说明,robots.txt 规则可能不适用于这类访问。

先回答三个授权问题

配置前,不要先复制代码,先让内容、法务、安全和业务负责人回答三个问题。

一、是否允许公开内容用于模型训练抓取

模型训练,是指使用数据改进生成式 AI 模型的能力。

OpenAI 用 GPTBot 抓取可能用于训练生成式 AI 基础模型的内容;Anthropic 用 ClaudeBot 收集可能用于模型训练的网页内容。

如果网站不接受这类用途,就应分别拒绝这两个爬虫。拒绝训练爬虫,并不等于必须放弃 AI 搜索可见性。

二、是否希望内容进入AI搜索系统

OpenAI 用 OAI-SearchBot 支持 ChatGPT 搜索;Anthropic 用 Claude-SearchBot 改善 Claude 搜索结果的相关性和准确性。

允许这两个搜索爬虫,只表示网站没有通过 robots.txt 拒绝它们,并为页面进入相关搜索系统保留机会。它不保证页面一定会被抓取、收录、展示或引用。

OpenAI 明确说明,OAI-SearchBot 与 GPTBot 的设置彼此独立。网站可以允许前者,同时拒绝后者。OpenAI爬虫官方说明

三、是否允许AI根据用户请求读取网页

用户在 ChatGPT 或 Claude 中提出具体问题时,系统可能按需访问某个网页。这类访问分别对应 ChatGPT-User 和 Claude-User。

Anthropic 说明,网站可以通过 robots.txt 管理 Claude-User。拒绝它,可能导致 Claude 无法根据用户请求取回网页内容。

OpenAI 对 ChatGPT-User 的说明不同:这类访问由用户操作触发,不是自动遍历全网的爬取,robots.txt 规则可能不适用。它也不负责决定页面能否出现在 ChatGPT 搜索结果中。要管理搜索,应配置 OAI-SearchBot。Anthropic机器人官方说明

GPTBot和ClaudeBot怎么配?先分清三类访问

六个User-agent分别负责什么

平台 User-agent 官方用途 拒绝后的主要影响
OpenAI GPTBot 抓取可能用于训练生成式 AI 基础模型的内容 表示网站内容不应被用于相应的训练用途
OpenAI OAI-SearchBot 支持网站出现在 ChatGPT 搜索结果中 网站不会出现在 ChatGPT 搜索答案中,但仍可能以导航链接出现
OpenAI ChatGPT-User 在用户或自定义 GPT 提出请求时访问网页 robots.txt 规则可能不适用,不能把 Disallow 当成可靠的访问拦截手段
Anthropic ClaudeBot 收集可能用于模型训练的网页内容 表示网站未来的材料应排除在相应的训练数据抓取之外
Anthropic Claude-SearchBot 改善 Claude 搜索结果的相关性和准确性 可能降低网站在 Claude 搜索中的可见性及相关结果的准确性
Anthropic Claude-User 在用户提问时按需访问网页 可能导致 Claude 无法根据相关用户请求取回网页内容

因此,放行 GPTBot 和 ClaudeBot 不是保留 AI 搜索机会的必要条件。它们处理的是训练抓取授权,不是搜索展示授权。

GPTBot和ClaudeBot怎么配?先分清三类访问

写配置前,必须知道六条边界

1. 三类访问需要分别决定

训练、搜索和用户触发访问是三项不同选择。不要因为希望页面进入 AI 搜索,就默认允许训练爬虫;也不要因为拒绝训练抓取,就连搜索爬虫一起拒绝。

2. Allow不等于保证收录

Allow: / 的意思是允许该爬虫访问全部路径。它只说明 robots.txt 没有拒绝访问,不代表平台一定会抓取、收录、展示或引用页面。

3. Disallow不是安全措施

Disallow: / 的意思是请求该爬虫不要访问任何路径。它表达的是网站的抓取偏好,不是身份验证,也不能阻止所有访问者打开页面。

RFC 9309 是 robots.txt 所依据的互联网标准。该标准明确说明,robots 规则不能代替内容安全措施。敏感内容必须使用登录验证、访问权限、网络隔离等方式保护。RFC 9309

4. robots.txt按主机分别生效

主机在这里指一个具体的域名入口。example.com、www.example.com 和 help.example.com 即使属于同一家公司,也需要分别检查和配置自己的 robots.txt。

5. Crawl-delay不是通用标准

Crawl-delay 的意思是设置抓取间隔。Anthropic 支持这项非标准指令,但它不属于 RFC 9309。不能因为 Anthropic 支持,就认为 OpenAI 或其他爬虫也会执行。

6. ChatGPT-User需要单独处理

在 robots.txt 中为 ChatGPT-User 写入 Allow 或 Disallow,可以表达网站偏好,但不能据此认定用户触发访问一定会被允许或阻止。OpenAI 的官方说明是:这类访问由用户发起,robots 规则可能不适用。

方案一:允许搜索,拒绝训练

如果网站希望保留 AI 搜索机会,同时谨慎处理训练授权,可以从下面这套配置开始:

User-agent: OAI-SearchBot
Allow: /

User-agent: GPTBot
Disallow: /

User-agent: ChatGPT-User
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: Claude-User
Allow: /

User-agent: ClaudeBot
Disallow: /

Sitemap: https://www.example.com/sitemap.xml

这套示例允许两家的搜索爬虫,拒绝两家的训练爬虫,并表达了允许用户触发访问的偏好。需要再次提醒:OpenAI 说明 ChatGPT-User 访问可能不受 robots 规则约束。

Sitemap 是网站地图文件,用于列出希望爬虫发现的页面。示例中的地址必须替换成网站自己的地址。

上线前,必须把这些内容与现有 robots.txt 合并,不能覆盖线上原文件。原有的 Googlebot、bingbot、后台目录、账户页、购物车、站内搜索页、参数页和测试目录等规则,都要继续保留。

方案二:搜索和训练都允许

如果公司已经确认,公开内容可以被两家的训练爬虫访问,可以采用以下配置:

User-agent: OAI-SearchBot
Allow: /

User-agent: GPTBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: Claude-User
Allow: /

User-agent: ClaudeBot
Allow: /

采用这套方案前,应由内容、法务、安全和业务共同确认授权范围。

即使写了 Allow: /,付费内容、客户数据、合同资料、个人信息和未发布页面也不能直接暴露在公网。robots.txt 是公开的抓取规则,不是保护敏感内容的工具。

方案三:只开放指定公开目录

如果网站只准备向训练爬虫开放公开知识库,可以按路径配置:

User-agent: GPTBot
Allow: /knowledge/
Disallow: /

User-agent: ClaudeBot
Allow: /knowledge/
Disallow: /

这组规则表示:允许访问 /knowledge/ 目录,其他路径全部拒绝。

RFC 9309 规定,当多条规则都能匹配同一个访问路径时,应采用匹配内容更长、也就是更具体的那条规则。由于 /knowledge/ 比 / 更具体,所以知识库目录会被允许,其他目录仍然被拒绝。

这段代码只演示训练爬虫的目录控制。搜索爬虫和用户触发访问是否也按目录开放,仍要分别配置。

规则上线后,还要查看服务器日志并进行实际测试。服务器日志会记录访问者使用的身份名称、访问路径、访问时间和服务器返回结果。只查看 robots.txt 的文字,不能证明爬虫已经按预期访问。

已有robots.txt,应该怎样合并

第一步:保存线上原文件

先保存生产环境正在使用的 robots.txt,并记录修改时间。不要用网上找到的模板直接覆盖原文件。

第二步:整理现有User-agent组

列出文件中的全部 User-agent。如果同一个 User-agent 分散在多个位置,尽量整理到同一组,减少后续检查和维护中的混乱。

第三步:保留原有业务限制

后台、账户、购物车、站内搜索、参数页、测试目录和重复网址等现有规则,不能因为新增 AI 爬虫配置而丢失。

第四步:分别决定六类访问

对 GPTBot、OAI-SearchBot、ChatGPT-User、ClaudeBot、Claude-SearchBot 和 Claude-User 逐项判断。

不要只写 User-agent: *。通配规则只能表达统一选择,无法准确体现网站对训练、搜索和用户访问的不同态度。

第五步:逐个主机部署

主域名、www 域名、帮助中心和其他子域的 robots.txt 互不替代。每个主机都要单独检查、部署和验证。

Crawl-delay什么时候使用

Anthropic 支持非标准扩展 Crawl-delay。如果服务器承受的访问压力较大,但网站又不希望完全拒绝 ClaudeBot,可以参考以下配置:

User-agent: ClaudeBot
Crawl-delay: 1
Allow: /

这项指令只适用于明确表示支持它的爬虫,不能当成通用配置。

如果服务器持续出现高频访问、403、429 或超时,还要检查 CDN、WAF、缓存和服务器容量。

CDN 是内容分发网络,用于把网站内容分发到不同节点;WAF 是网站应用防火墙,用于识别和拦截异常访问。403 通常表示服务器拒绝访问,429 表示请求过于频繁。robots.txt 不能代替服务器限流和访问控制。

上线前后检查这十项

HTTP 状态码是服务器返回的访问结果代码。配置完成后,至少检查以下内容:

检查项 通过标准
文件位置 每个主机都能通过根地址下的 /robots.txt 访问规则文件
HTTP状态 返回 200,即服务器正常提供文件,而不是登录页或验证码页面
文件格式 使用 UTF-8 这种通用文本编码,并以纯文本显示,没有乱码
GPTBot用途 团队已经明确允许或拒绝潜在训练抓取
ClaudeBot用途 团队已经明确允许或拒绝潜在训练抓取
搜索爬虫 OAI-SearchBot、Claude-SearchBot 已单独配置
用户访问 ChatGPT-User、Claude-User 已分别评估,并理解两家的规则差异
原有规则 后台、账户、参数页和 Sitemap 等原有规则仍然保留
WAF和CDN 没有把需要允许的官方请求全部拦截为 403 或 429
日志复核 可以按 User-agent、路径、状态码和时间查看访问记录

三个常见误区

误区一:放行GPTBot,就能进入ChatGPT搜索

不对。

ChatGPT 搜索对应的是 OAI-SearchBot,GPTBot 对应潜在训练用途。两项设置彼此独立。

误区二:放行ClaudeBot,就等于放行Claude搜索

不对。

Anthropic 已经将 ClaudeBot、Claude-SearchBot 和 Claude-User 分开。要保留搜索可见性,需要单独配置 Claude-SearchBot。

误区三:robots.txt能保护敏感数据

不能。

robots.txt 是公开文件,任何访问者都可以看到其中列出的路径。敏感内容必须通过登录验证、访问权限、网络隔离和服务器配置进行保护。

最后应该怎么选

如果只想保留 AI 搜索机会,可以允许 OAI-SearchBot 和 Claude-SearchBot,先拒绝 GPTBot 和 ClaudeBot。

如果已经完成内容授权评估,再决定是否放行两家的训练爬虫。

如果只准备开放部分知识内容,就按目录编写规则,并通过服务器日志确认实际访问结果。

不要把六个 User-agent 统一设置为 Allow,也不要统一设置为 Disallow。训练、搜索和用户请求是三个不同的业务选择,应该分别决定、分别配置、分别验证。

常见问题

1. GPTBot和OAI-SearchBot有什么区别?

GPTBot 用于抓取可能进入生成式 AI 基础模型训练流程的内容;OAI-SearchBot 用于支持 ChatGPT 搜索。两项 robots 设置彼此独立。

2. ClaudeBot和Claude-SearchBot有什么区别?

ClaudeBot 收集可能用于模型训练的网页内容;Claude-SearchBot 用于改善 Claude 搜索结果的相关性和准确性。

3. 不放行GPTBot,会影响ChatGPT搜索吗?

按照 OpenAI 当前说明,GPTBot 和 OAI-SearchBot 可以独立配置。要保留搜索机会,应重点确认 OAI-SearchBot 没有被 robots.txt、WAF 或服务器拒绝。

4. 不放行ClaudeBot,还能出现在Claude搜索中吗?

Anthropic 将 ClaudeBot 和 Claude-SearchBot 分开。网站可以拒绝 ClaudeBot,同时允许 Claude-SearchBot,但页面最终是否被展示或引用仍不能保证。

5. Crawl-delay是通用标准吗?

不是。它不属于 RFC 9309 的标准指令。Anthropic明确表示支持该扩展,其他爬虫是否支持,需要查看各自的官方文档。

6. 修改后多久生效?

不同平台的处理周期不同。OpenAI 说明,其搜索系统可能需要约 24 小时才能根据更新后的 robots.txt 调整。因此,不能在保存配置后立即根据一次问答结果判断是否生效。

官方资料