解读AI爬虫日志:GPTBot实际请求了什么
AI爬虫会在你的服务器日志里留下非常易读的模式。如何对机器人进行分群,每个机器人的抓取模式意味着什么,以及在接触GEO工具之前值得回答的两个问题。

大多数 GEO 建议都从内容开始。我们认为应该从日志开始,因为你的服务器已经保存了 AI 可见性方面最廉价的数据集:一份带时间戳的记录,说明哪些助手机器人抓取了哪些页面、抓取频率如何、顺序如何。阅读它能回答任何仪表盘都无法回答的两个问题——是否真的有 AI 在阅读我们,以及_它们认为什么值得抓取_。
这是我们的 AI 爬虫指南的实操后续。角色阵容相同;这次我们看看它们在握手之后会做什么。
首先:对机器人进行细分,否则数据就是噪音
常见的错误是把“AI 流量”当作一个整体。这些机器人的行为完全不同,把它们混在一起会得出毫无意义的平均值。
- 训练爬虫——
GPTBot、ClaudeBot、anthropic-ai、Google-Extended、CCBot——稳定而广泛地爬取。它们的抓取会喂给未来的模型权重,而不是今天的答案。 - 搜索爬虫——
OAI-SearchBot、PerplexityBot——构建搜索支持的答案所引用的索引。你希望它们把注意力放在_本周_的新页面上。 - 用户触发的抓取器——
ChatGPT-User、Claude-User、Perplexity-User——仅在特定用户的对话需要时才抓取页面。这里的每一次命中都是一张收据:一个真实的人_此刻_问到了你。
命令
在任何访问日志上(nginx/Caddy 格式都可以),先跑一遍:
# All AI crawler hits in the current log, newest last
grep -E "GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|anthropic-ai|PerplexityBot|Perplexity-User|Google-Extended" access.log \
| awk '{print $NF}' | sort | uniq -c | sort -rn# All AI crawler hits in the current log, newest last
grep -E "GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|anthropic-ai|PerplexityBot|Perplexity-User|Google-Extended" access.log \
| awk '{print $NF}' | sort | uniq -c | sort -rn这会给出原始的量级排名。更有意思的切分是机器人 × 路径:
# Which pages each bot fetches
grep "GPTBot" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20# Which pages each bot fetches
grep "GPTBot" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20要寻找两种模式。一个训练爬虫先抓取 /robots.txt,然后广泛而均匀地抓取页面,这是在建立索引。一个搜索爬虫先抓取 /、你的 sitemap,然后抓取一组_范围很窄_的特定页面,这是在追随相关性——而它忽略的页面,就是它认为不可引用的页面。
三个值得诊断的模式
1. 搜索机器人从不出现。 如果 OAI-SearchBot 或 PerplexityBot 在一个月内零命中,通常原因是 robots.txt 允许列表是从旧模板复制来的(它禁止了它们所属的通用模式),或者网站很少变化——搜索索引会跳过静态网站。修复方法是robots.txt 和 llms.txt 相关工作,再加上可见的更新节奏。
2. 用户触发的命中在你什么都没做的日子里激增。 ChatGPT-User 和 Perplexity-User 只在实时用户的对话需要该页面时才会抓取。你这边没有发布内容却出现爆发,通常意味着有人分享或讨论了你的产品——这是分析仪表盘不会如此标记的社区流量。值得在同一天 grep 你的引荐来源。
3. 训练爬虫抓取你的私有页面。 如果 GPTBot 正在访问 /dashboard 或 /settings,那么你的 robots.txt 并不是你以为的那样——一个拼错的 User-agent 行会静默地禁用整个组。我们的 robots.txt 模板 会保持私有路径被阻止,同时让与引用相关的页面保持开放。
两个诚实的提醒
User-agent 字符串是声明,不是身份。 任何人都可以用 User-agent: GPTBot 发起 curl。用于计数目的这没问题;但若出于“竞争对手是否抓取了我整个网站”的偏执,在得出结论之前,要按主要提供商记录的方式验证所有权(对支持该方式的提供商使用反向 DNS)。
量级不是 KPI。 一个训练爬虫抓取 4,000 个页面,只能说明你进入了未来模型的食谱。真正能付房租的数字,是那些能转化的页面上的_用户触发和搜索_抓取次数——这才是管道中今天的一次抓取可能在明天变成访客的部分。
两个问题
运行一次细分,回答这些问题,你就会比大多数买了 GEO 订阅的网站知道得更多:
- 搜索支持的机器人是否会在发布后几天内抓取我的新页面? 如果不会,那么提供可引用答案的索引就不知道你的存在。
- 哪些页面是搜索机器人从不抓取的? 无论这些页面的内容有多好,它们对助手来说都是不可见的。
这两个修复都不光鲜——robots.txt 更正、内部链接、更新节奏——这正是为什么日志值得在其他任何事情之前先读。