很多团队把三个不同的控制信号混成了一件事:
OAI-SearchBot:控制 ChatGPT 搜索中的发现与展示GPTBot:控制内容是否可用于模型训练ChatGPT-User:处理用户触发的访问请求
一旦混淆,robots.txt 就很容易配错。有人把所有 OpenAI bot 一刀切地屏蔽,之后又疑惑为什么自己的内容从来不出现在 ChatGPT 答案里。也有人为了争取 AI 曝光而全部放行,结果无意中连训练访问也一起放开了。
这篇文章给您的是可执行的版本。
如果您想在改规则前先做一轮基础检查,可以先跑 Fennec 的 Robots.txt 测试工具、Bot Simulator 和完整 SEO Audit。
OpenAI 官方目前怎么区分这些 bot
根据 OpenAI 当前的官方文档:
OAI-SearchBot用于 ChatGPT 搜索功能中展示网站内容GPTBot用于抓取可能被用于 OpenAI 基础模型训练的内容ChatGPT-User用于某些用户发起的动作,不是 ChatGPT 搜索资格控制点
所以,这不是“全开”或“全关”的二选一。
大多数发布者真正想要的默认方案
对大多数内容站、SaaS 官网、文档站来说,更合理的默认方案通常是:
- 允许
OAI-SearchBot - 单独决定是否允许
GPTBot - 不要把
ChatGPT-User当作搜索可见性的主控制项
这套方案之所以常见,是因为它同时满足三件事:
- 保留进入 ChatGPT 搜索答案的资格
- 把“是否训练”与“是否发现”拆开
- 更容易向法务、编辑、产品团队解释
一个够用的决策表
| 目标 | OAI-SearchBot | GPTBot | 说明 |
|---|---|---|---|
| 进入 ChatGPT 搜索,同时允许训练 | Allow | Allow | OpenAI 访问最宽松 |
| 进入 ChatGPT 搜索,但不允许训练 | Allow | Block | 最常见的发布者配置 |
| 同时屏蔽搜索与训练 | Block | Block | 限制最严格 |
| 先保守测试 | Allow | Block | 比双重屏蔽更稳妥 |
OpenAI 还说明了这两个设置彼此独立;如果您修改了 robots.txt,搜索侧的调整通常需要大约 24 小时生效。
与这些策略对应的 robots.txt 写法
1. 允许 ChatGPT 搜索,屏蔽训练
这通常就是大多数团队口中的“我们想要 AI 流量,但不想开放训练”。
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /
2. 搜索和训练都允许
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Allow: /
3. 搜索和训练都屏蔽
User-agent: OAI-SearchBot
Disallow: /
User-agent: GPTBot
Disallow: /
4. 只屏蔽敏感目录
如果您希望公开文章可被访问,但不希望预发布区、内部目录或低价值参数页被抓取:
User-agent: OAI-SearchBot
Disallow: /staging/
Disallow: /internal/
User-agent: GPTBot
Disallow: /
前提是这些路径本来就不应该被发现。如果页面应该保留可抓取性,只是想避免在传统搜索里被收录,那么 robots.txt 往往不是正确工具。
robots.txt 不等于去索引
Google 的官方说明对这个误区讲得最清楚:robots.txt 控制的是抓取,不是可靠的“从搜索结果移除”机制。
最常见的错误链路是:
- 在
robots.txt里屏蔽某个目录 - 同时在这些页面里加
noindex - 以为页面就会在各处都消失
问题在于,如果爬虫根本抓不到页面,它也就看不到 noindex。Google 官方明确说明,不管您用的是 meta robots 还是 X-Robots-Tag,要让 noindex 生效,页面本身必须仍然可被抓取。
因此,控制手段要分开使用:
- 用
robots.txt管抓取权限 - 用 meta robots 或
X-Robots-Tag管索引 - 对真正私密的内容,用鉴权或访问控制
如果您正在排查更广义的抓取与索引冲突,可以一起跑 Fennec 的 Canonical Checker、Sitemap Checker 和 Technical SEO。
我建议的实施清单
1. 先审计所有 crawler 控制层
不要只盯着根目录 robots.txt:
- CDN 或 WAF 规则
- bot 管理产品
- 源站 deny 规则
- 会区别对待 bot 的中间件
Cloudflare 的 AI Crawl Control 文档在这一步很有价值,因为它会把不同 crawler 的 allow/block 状态、bot 分类,以及 robots.txt 违规情况单独展示出来。很多团队就是在这里才发现:robots.txt 写的是允许,但上游 WAF 其实还在拦。
2. 按内容类型决策,不要按情绪一刀切
建议先把 URL 分成几类:
- 公开文章与文档
- 登录后内容或工具页
- 站内搜索页、筛选页、低价值参数页
- 预发布、测试、QA 环境
在不知道哪些 URL 真正值得暴露之前,不要先做站级封锁。
3. 让重要页面本身足够容易被发现
Google 在 AI features 官方文档里仍然强调基础项:
- 允许抓取
- 保持清晰的内部链接
- 重要内容要以文本形式可见
- 不要把核心信息藏在用户交互之后
这同样适用于 AI crawler。即使您允许了 OAI-SearchBot,如果最重要的页面是孤立页、内容太薄、或渲染链过于脆弱,也不容易得到稳定发现。可以把这一步和 Fennec 的 GSC Management 以及 AI Overview 工作流 一起看。
4. 改规则前先验证 bot 身份
User-Agent 是可以伪造的。如果日志里出现异常抓取,先验证,再封禁:
- OpenAI 为
OAI-SearchBot、GPTBot、ChatGPT-User提供了公开 IP JSON - Cloudflare 为主流 AI crawler 提供了 verified detection ID
- 服务器日志应能帮助您确认流量是否真来自官方 bot
这一步尤其适合安全团队。不要因为日志里看到“GPTBot”字样就立刻全站封掉。
5. 部署后做一轮短验证
建议至少做这五步:
- 直接请求
/robots.txt,确认返回200 - 确认目标
User-agent规则组确实存在 - 用 Bot Simulator 对关键 URL 做对比测试
- 确认重要页面仍然有内部链接且可访问
- 观察日志里不同 bot 的允许与拒绝情况
6. 监控结果,而不是只改规则
OpenAI 的 publisher FAQ 提到,来自 ChatGPT 的引荐链接会带上 utm_source=chatgpt.com。这意味着您在允许 OAI-SearchBot 后,可以在分析平台里建立清晰的追踪口径。
至少追这几项:
- ChatGPT 引荐会话数
- 承接这些会话的落地页
OAI-SearchBot的抓取命中- 可被引用内容的覆盖变化
如果策略改完没有回到数据上验证,那本质上只是改了一个文本文件。
常见误区
屏蔽 OAI-SearchBot,却期待出现在 ChatGPT 答案里
OpenAI 官方已经说明:如果站点选择退出 OAI-SearchBot,内容不会出现在 ChatGPT 搜索答案中。目标是可见性时,这个配置会直接反向作用。
该用 noindex 的地方,却误用 robots.txt
如果真正目标是“不想被传统搜索收录”,应该优先使用页面级或响应头级的索引控制。
忘了上游安全层
Cloudflare、自定义 WAF、bot 过滤器、源站限速,都可能覆盖您在 robots.txt 里的意图。
把 ChatGPT-User 当作普通自动爬虫
OpenAI 明确说了,ChatGPT-User 不用于自动网页抓取或搜索展示资格判断。它更像用户触发访问、Actions、风控审查的一部分,应该放进另一套安全讨论里。
适合大多数 Fennec 风格站点的建议配置
如果您的站点主要是公开营销页、博客、指南和产品文档,更稳妥的起点通常是:
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /
然后:
- 保证希望被引用的页面能被抓取
- 如果期待被发现,就不要误伤索引能力
- 验证 CDN 与 WAF 是否一致放行
- 上线后追踪 ChatGPT 引荐流量
这套方案简单、可回滚,而且与 OpenAI 当前“搜索访问”和“训练访问”分离的官方逻辑一致。
参考资料
- OpenAI crawler documentation
- OpenAI Publishers and Developers FAQ
- Google Search Central: robots.txt introduction
- Google Search Central: block indexing with noindex
- Google Search Central: robots meta tag and X-Robots-Tag
- Google Search Central: AI features and your website
- Cloudflare AI Crawl Control bot reference
- Cloudflare AI Crawl Control: manage AI crawlers
- Cloudflare AI Crawl Control with WAF
问答
不允许 GPTBot,我还能出现在 ChatGPT 搜索里吗?
可以。OpenAI 官方文档明确区分了 OAI-SearchBot 与 GPTBot:前者控制 ChatGPT 搜索发现,后者控制内容是否可用于模型训练。您可以允许 OAI-SearchBot,同时单独屏蔽 GPTBot。
屏蔽 GPTBot 会让我从 Google 或其他搜索引擎里消失吗?
不会。GPTBot 是 OpenAI 的训练爬虫,不是 Google 的搜索爬虫。Google 的索引控制是另一套机制;如果目标是从搜索结果中移除页面,应优先使用 noindex 或访问控制,而不是把 robots.txt 当成下架工具。
那 ChatGPT-User 该怎么处理?
应把 ChatGPT-User 看作用户触发的抓取流量,而不是自动搜索收录爬虫。OpenAI 说明它不用于决定内容是否出现在 ChatGPT 搜索中,因此搜索可见性应先用 OAI-SearchBot 来管理。