毫无疑问大型语言模型LLM正在慢慢取代传统搜索。现代用户的旅程越来越不是从传统搜索引擎如Google开始而是由用户向ChatGPT、Perplexity、Claude或Gemini提问开始——而这些AI系统会代表你进行暗网浏览我不知道这是否是有效术语但我喜欢这么说**现代用户旅程现在看起来是这样的** 用户在LLM中提问 → LLM爬取相关网站 → 用户获得综合答案 → LLM可能向用户展示你网站的推荐链接 →⏰用户通过LLM推荐到达你的网站并参与内容典型用户旅程与数据来源但这里有个问题 当LLM爬取你的网站时它们不会触发你基于JavaScript的分析标签如Adobe Analytics或GA4。所以虽然你的仪表板可能显示0次会话但你的Web服务器日志却在静默记录着一切。你的Apache或Nginx访问日志是金矿——包含机器人和用户的所有请求。如果你的组织有Web服务器日志分析工具如Splunk你可以解码这些数据以了解LLM如何爬取你的网站、它们在读取什么以及这如何影响你在AI生态系统中的可见性。0. 为什么这很重要随着LLM驱动的流量增长了解哪些页面被AI模型索引和引用至关重要。如果你的关键内容没有被爬取或引用你在AI优先的新搜索世界中将面临隐形风险。示例日志行以下是标准Apache访问日志中LLM爬取的样子198.215.99.26 - - [30/Sep/2025:23:26:40 -0400] GET /guest/article123 HTTP/1.1 200 220 416 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 - Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; https://openai.com/bot 640 438 host ip-10-164-170-239.ec2.internal让我们来解析IP198.215.99.26时间30/Sep/2025:23:26:40 -0400请求的URL/guest/article123LLM爬虫ChatGPT-User/1.0用户代理字符串Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; https://openai.com/bot这将其识别为ChatGPT的爬虫。还有更多信息如状态码、协议等。你也可以解码用户代理以获取设备、操作系统等信息。Web服务器日志中还隐藏着更多有价值的信息——远比大多数人意识到的要多。Splunk现在提供Dashboard Studio可用于使用这些数据创建引人入胜的视觉故事。我写这篇文章不仅是为了分享我的发现而且是为了展示一些想法和现成的查询你可以调整这些来在Splunk中构建自己的GenAI机器人分析仪表板。你可以从日志中创建的报告包括机器人爬取信息— 数量、类别和爬取频率随时间变化的趋势爬取内容分析— URL、图片、PDF甚至blob资产是的认真地说地理位置洞察— 这些爬取来自世界何处⏰日期/时间趋势— 机器人何时最活跃地爬取你的网站以及它们多久返回一次一旦你建立了这个结构你可以使用Splunk查询更深入地研究以发现模式衡量可见性并识别LLM最感兴趣的内容。让我们深入一些示例查询。对于下面列出的所有查询我使用默认的index和source值。请根据你的设置替换为正确的值。这是一个简单的查询你可以用它来识别你是否已有数据。Indexprod sourceaccess_combined_prod chatgpt运行过去24小时并观察是否有任何事件。尝试详细模式以获得更好的答案。如果有那么你可以继续构建如下所示的仪表板。1. 获取机器人总点击量Indexprod (ChatGPT OR GPTBot OR OpenAI OR Claude OR Anthropic OR Perplexity OR Cohere OR AI21 OR Google-Extended OR BingPreview) | stats count AS total_hits此查询将为你提供符合LLM点击条件的事件总数用于所选时间范围。你可以将其保存在仪表板中。不要忘记将source与Input时间范围绑定以获取动态日期。2. 获取不同LLM的机器人点击量Indexprod (ChatGPT OR GPTBot OR OpenAI OR Claude OR Anthropic OR Perplexity OR Cohere OR AI21 OR Google-Extended OR BingPreview) | rex field_raw (?genai(ChatGPT|GPTBot|openai|Claude-SearchBot|Claude-User|ClaudeBot|PerplexityBot|Perplexity-User|Anthropic|Perplexity|Cohere|Gemini|AI21|Google-Extended|BingPreview)) | stats count BY genai | sort -count此查询从已知的LLM机器人中提取所有请求并统计每个机器人产生了多少次点击。我的日志中没有user-agent作为字段之一因此我使用正则表达式提取LLM源名称并存储为genai列。示例输出上述查询的示例输出3. 将机器人分类为不同类型一旦识别你可以对机器人进行分类以获得更丰富的见解。我发现这部分非常有趣因为它显示了不同类型的LLM如何不同地消费内容。详细分析超出了这篇文章的范围但如果有人有更多问题我很乐意进一步讨论。我列出了示例查询和一些你可能通过此分析发现的机器人类型。Indexprod (ChatGPT OR GPTBot OR OpenAI OR Claude OR Anthropic OR Perplexity OR Cohere OR AI21 OR Google-Extended OR BingPreview) | eval BotCategorycase( like(_raw,%GPTBot%) OR like(_raw,%Google-Extended%) OR like(_raw,%BingPreview%) OR like(_raw,%Claude%) OR like(_raw,%Anthropic%) OR like(_raw,%Cohere%) OR like(_raw,%AI21%) OR like(_raw,%Perplexity%), Training Bot, like(_raw,%ChatGPT-user%) OR like(_raw,%OpenAI-SearchBot%) OR like(_raw,%Perplexity-user%) OR like(_raw,%Claude-user%), User Query Bot, like(_raw,%searchbot%), Search Query Bot, true(), Other ) | stats count BY BotCategory识别的LLM机器人类型4. 提取访问最多的URL想知道哪些页面对LLM最有吸引力吗indexprod (ChatGPT OR GPTBot OR OpenAI OR Anthropic OR Perplexity OR Cohere OR AI21 OR Google-Extended OR BingPreview) | rex field_raw \GET\s(?url[^\s]) | stats count BY url | sort -count你可以看到每个机器人爬取了多少唯一URL以及频率——帮助你了解LLM爬取中哪些内容主题正在流行。你可以通过添加每种机器人类型使用的唯一URL数量、前10个URL、按URL的机器人爬取趋势等来进一步推进此分析。你甚至可以按网站部分或页面类型对爬取的页面进行分组并用机器人类别进行增强。这将为你提供关于什么内容被呈现给什么样的机器人的丰富见解。5. 机器人爬取趋势使用以下查询获取每日机器人爬取趋势。你可以按需要限制或扩展机器人。indexprod (ChatGPT OR GPTBot OR OpenAI OR Claude OR Anthropic OR Perplexity OR Cohere OR AI21 OR Google-Extended OR BingPreview) | timechart span1d count BY bot /*change to monthly trend*/ | eval monthstrftime(_time, %B %Y) | stats count AS hits BY month你可以获取数月的机器人趋势以查看你的内容增加/减少。你也可以用timechart替换为获取月度趋势。6. 识别机器人活动的国家你可以使用用户代理中的IP地址提取国家。在下面的查询中我还添加了访问的唯一URL数量以及总点击量。你可以根据报告要求调整查询。你可以在Splunk dashboard studio中使用Choropleth或地图来有效地可视化这些信息。Indexprod (ChatGPT OR GPTBot OR OpenAI OR Claude OR Anthropic OR Perplexity OR Cohere OR AI21 OR Google-Extended OR BingPreview) | rex field_raw (?urlGET\s\S) | rex field_raw (?useragent\[^\]\) | rex field_raw (?clientip\d\.\d\.\d\.\d) | iplocation clientip | stats dc(url) as UniqueURLs count as TotalHits by Country | sort -TotalHits7. 估算平均爬取深度、最大深度此查询提取平均爬取深度这会让你深入了解每个机器人如何爬取你的内容。indexprod (ChatGPT OR GPTBot OR OpenAI OR OAI-SearchBot OR Anthropic OR Perplexity OR Cohere OR AI21 OR Google-Extended OR BingPreview) | rex field_raw (?clientip\d{1,3}(?:\.\d{1,3}){3}) | rex field_raw (?genaiChatGPT|GPTBot|OpenAI-SearchBot|OAI-SearchBot|Perplexity|Claude|Anthropic|Cohere|AI21|Google-Extended|BingPreview) | rex field_raw GET\s(?URL\S) | search NOT URL*/robots.txt NOT URL*favicon.ico NOT URL*/wp-admin/* | eval BotNamecase( like(genai,%GPTBot%),GPTBot, like(genai,%ChatGPT%),ChatGPT-User, like(genai,%OpenAI-SearchBot%) OR like(genai,%OAI-SearchBot%),OpenAI-SearchBot, like(genai,%Perplexity%),Perplexity, like(genai,%Claude%) OR like(genai,%Anthropic%),Claude/Anthropic, like(genai,%Cohere%),Cohere, like(genai,%AI21%),AI21, like(genai,%Google-Extended%),Google-Extended, like(genai,%BingPreview%),BingPreview, true(),Other ) | bin _time span10m | stats dc(URL) as crawl_depth count as total_hits by BotName, clientip, _time | where crawl_depth 0 | sort -crawl_depth | stats avg(crawl_depth) as avg_depth, max(crawl_depth) as max_depth by BotName | sort -avg_depth使用以下方法从分析中排除robots.txt请求| search NOT request“*/robots.txt”奖励爬取深度指标要查看每个机器人在单次爬取中访问了多少页面(ChatGPT OR GPTBot OR OpenAI OR OAI-SearchBot OR Anthropic OR Perplexity OR Cohere OR AI21 OR Google-Extended OR BingPreview) | rex field_raw (?clientip\d{1,3}(?:\.\d{1,3}){3}) | rex field_raw (?genaiChatGPT|GPTBot|OpenAI-SearchBot|OAI-SearchBot|Perplexity|Claude|Anthropic|Cohere|AI21|Google-Extended|BingPreview) | rex field_raw GET\s(?URL\S) | search NOT URL*/robots.txt NOT URL*favicon.ico NOT URL*/wp-admin/* | eval BotNamecase( like(genai,%GPTBot%),GPTBot, like(genai,%ChatGPT%),ChatGPT-User, like(genai,%OpenAI-SearchBot%) OR like(genai,%OAI-SearchBot%),OpenAI-SearchBot, like(genai,%Perplexity%),Perplexity, like(genai,%Claude%) OR like(genai,%Anthropic%),Claude/Anthropic, like(genai,%Cohere%),Cohere, like(genai,%AI21%),AI21, like(genai,%Google-Extended%),Google-Extended, like(genai,%BingPreview%),BingPreview, true(),Other ) | bin _time span10m | stats dc(URL) as crawl_depth count as total_hits by BotName, clientip, _time | where crawl_depth 0 | sort -crawl_depth这个指标特别有见地——高爬取深度可能表明对你的网站内容有强烈兴趣。8、结束语建议每月监控LLM机器人模式以发现爬取行为的变化。提高LLM可发现性——确保你的内容可访问、加载快速且语义丰富。更新元数据和schema.org标记以提高AI引用质量。将来自chatgpt.com或perplexity.ai的推荐流量与潜在客户相关联以衡量真正的ROI。当我开始探索这些日志时我感到不知所措但同时也很兴奋地看到可以从中提取这么多信息。这些查询应该能很好地帮助你在机器人探索之旅上有一个良好的开端。我将在这里结束这篇文章但请随时让我知道你的想法、其他查询或你想深入研究的某些细分领域。我非常感兴趣了解这些数据如何塑造你的内容策略。我对此做了进一步分析并分析了来自LLM的推荐流量我是用Adobe Analytics做的。我也会很快发布另一篇关于此的文章。是的而这只是开始原文链接用Splunk分析AI机器人流量 - 汇智网