文章指出训练爬虫与搜索引用爬虫使用不同的身份和屏蔽规则,仅在 robots.txt 禁止 GPTBot 不会让页面退出 ChatGPT 搜索。站点应分别配置 GPTBot、OAI-SearchBot 和 ChatGPT-User,以独立控制训练使用与搜索曝光。
最初发布于 NextFuture。
你在 robots.txt 中添加了 User-agent: GPTBot Disallow: /,以为自己的文章已经从 ChatGPT 中“消失”了。几天后,你尝试直接在 ChatGPT 中搜索文章标题——结果它依然出现在那里,还附有准确的链接和引用。问题在于:你屏蔽错了 bot,并不是屏蔽没有生效。
根据 Dev.to 上的分析,OpenAI、Anthropic、Google 和 Perplexity 都把 crawler 分成两组:训练 bot(training)和引用 bot(citation)。这两组 bot 不共享 blocklist——屏蔽其中一组不会对另一组产生任何影响,因为它们的运作方式就像来自两家不同公司的系统。
| 公司 | Training bot(屏蔽后不会被用于训练 model) | Citation bot(屏蔽后会从 AI search 中消失) |
|---|---|---|
| OpenAI | GPTBot | OAI-SearchBot、ChatGPT-User |
| Anthropic | ClaudeBot | Claude-SearchBot、Claude-User |
| Google-Extended | Googlebot(传统搜索 bot,已经抓取 Web 数十年) | |
| Perplexity | —(不自行训练 model) | PerplexityBot、Perplexity-User |
| Meta | meta-externalagent | —(目前还没有公开的搜索产品) |
之所以要拆分成两类 bot,是因为 training bot 以批处理方式运行:它会批量扫描大量页面,有时几个月后才会再次访问。它需要的是规模,而不是最新数据。Citation bot 则正好相反:当有人提出问题时,它会在极短时间内精准抓取某一个页面。它需要的是速度和时效性,而不是扫描整个网站。与其把这两项任务合并到一个 bot 中,运行两套独立系统要容易得多,因此各家公司都会将它们拆开。
如果你希望阻止内容被用于训练 model,同时仍允许 ChatGPT、Claude 或 Perplexity 在用户提问时引用这些内容,可以参考下面这份将两组 bot 明确分开的配置示例(示例来自原文——应用到真实网站之前,建议重新核对最新的 bot 列表):
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
需要牢记的重点是:robots.txt 遵循“没有点名,就默认允许”的原则。如果你只屏蔽 training bot,却没有明确声明 citation bot,那么网站“可以出现在”AI search 中这件事,实际上依赖的是各家公司当前的默认规则。它们随时可能在更新 crawler 逻辑时修改这些规则,而且不会提前通知你。
打开你正在运行的网站或博客的 robots.txt,对照上表检查是否屏蔽了正确的 bot。如果你的目标是“不被用于训练,但仍能被引用”,就应该明确声明每一个 bot,而不是依赖默认规则。同时还要持续关注:未来一年,各家 AI 公司的 bot 列表几乎肯定会继续变长。今天正确的 robots.txt,几个月后未必仍然正确。
本文最初发布于 NextFuture。关注我们,获取更多 fullstack 与 AI engineering 内容。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。