smart_toy GEO 与 AI 搜索诊断

AI 爬虫访问检测

检查你的 robots.txt 放行还是拦截了各家 AI 爬虫——包括决定引用的检索型爬虫,和只用于模型训练的那一类。

language

为什么 AI 爬虫权限决定了你能不能被引用

越来越多的搜索行为发生在 ChatGPT、Claude、Perplexity 和 Gemini 里。想让内容被这些系统引用,前提是它们的爬虫能读到你的页面——而这一步由 robots.txt 决定。

先分清两类爬虫,这是最容易搞反的地方

各家 AI 厂商都派出了不止一个爬虫,它们的用途完全不同:训练型抓数据去训模型,屏蔽它只是拒绝内容被用于训练;检索型是回答问题时临时去读网页的那一个,它决定你会不会出现在答案的引用里。

现实中大量站点把这两类当成一回事,结果放行了训练型、拦掉了检索型——既没保住内容,又丢了曝光。

主要爬虫各自管什么

  • OAI-SearchBot、ChatGPT-User(OpenAI):决定 ChatGPT 引用。前者服务于 ChatGPT 的搜索能力,后者在用户让 ChatGPT 打开某个网址时触发。屏蔽任一个都会损失引用机会。
  • GPTBot(OpenAI):只用于训练。屏蔽它,你的内容不会进入后续 GPT 模型的训练数据——但对 ChatGPT 能否引用你毫无影响。
  • Claude-SearchBot、Claude-User(Anthropic):决定 Claude 引用,用于回答问题时检索和读取网页。
  • ClaudeBot(Anthropic):只用于训练。和 GPTBot 一样,屏蔽它不影响引用。
  • PerplexityBot、Perplexity-User(Perplexity):决定 Perplexity 引用。Perplexity 的回答高度依赖实时检索,屏蔽等于直接退出它的结果。
  • Googlebot(Google):既是常规搜索爬虫,也负责 AI Overviews 的内容来源。
  • Google-Extended(Google):这是个例外——同一个 token 同时管着 Gemini 的模型训练和 grounding(回答时引用网页),两者拆不开。所以屏蔽它不只是拒绝训练,同时也放弃了 Gemini 的引用。这一点常被误当成纯训练开关。
  • Applebot-Extended、Bytespider、CCBot:训练或数据集用途,不参与引用决策。

robots.txt 有个规则经常被忽略

如果某个爬虫有自己的 User-agent 分组,那么 User-agent: * 那一组对它完全不生效——按规范,专属分组存在时通配分组会被整组忽略,而不是两组叠加。很多"我明明在 * 里禁了"的困惑都出在这里。

能被抓到只是前提,不是目的。爬虫进得来之后,决定要不要引用你的是另一批因素——见如何成为 AI 回答引用的信息源

常见问题

GPTBot 和 ChatGPT-User 有什么区别?

GPTBot 是训练型爬虫,OpenAI 用它自动抓取网页数据来训练后续模型,屏蔽它不影响你被引用。ChatGPT-User 是检索型,只有当用户在对话中让 ChatGPT 去读某个网址时才会触发——它和 OAI-SearchBot 一起决定 ChatGPT 能不能引用你。把两者混为一谈,是这个领域最常见的误判。

该不该在 robots.txt 里屏蔽 AI 爬虫?

先分清屏蔽的是哪一类。不希望内容被拿去训练模型,屏蔽 GPTBot、ClaudeBot、Applebot-Extended 即可,不会损失任何引用机会。但如果连检索型爬虫一起屏蔽——OAI-SearchBot、Claude-SearchBot、PerplexityBot——那么 ChatGPT、Claude、Perplexity 在回答问题时就再也读不到你的内容,也就无从引用。现实中很多站点恰好搞反了:放行了训练型,拦掉了检索型。

怎么解除对某个爬虫的屏蔽?

在 robots.txt 里找到对应 User-agent 分组下的 Disallow: / 删掉,或者显式写一条 Allow: /。改完用这个工具再测一次确认生效。注意一点:如果某个爬虫有自己的专属分组,那么 User-agent: * 那一组对它完全不生效——按规范,专属分组存在时通配分组会被整组忽略。