⭐ 推荐:社区规则条款 V1.0

怎么排查 GEO 信号异常引发 AI 本地搜索流量下滑

满月居于空
满月居于空 版主萌新站长
发布于 2026-10-15 15:19 ·1 浏览 ·3 回复
内容摘要

AI 本地搜索流量下滑需先确认仅 AI 渠道跌幅超 30% 且自然与直接访问未同步下滑,再依次排查 robots/WAF 放行、NAP 一致性、结构化数据和首屏答案块,AI 爬虫被拦与 NAP 不一致是常见原因。

排查 AI 本地搜索流量下滑,按这个顺序走:先确认是 AI 渠道独跌而不是全站波动,再依次检查 robots/WAF 放行、NAP 一致性、LocalBusiness 结构化数据、首屏可引用答案块,最后做引用复现测试。这套流程在 4 个检查点上就能定位九成以上的 GEO 信号异常。

怎么确认流量下滑是 GEO 信号问题,而不是季节波动或全站故障?

结论:只有当 AI 渠道流量在 14 天窗口内跌幅超过 30%,且自然搜索和直接访问未同步下滑时,才判定为 GEO 信号异常。

具体做法:在 GA4 的「管理 → 数据展示 → 渠道组」里新建自定义渠道组,把 chatgpt.com、perplexity.ai、copilot.microsoft.com、doubao.com、kimi.moonshot.cn、yuanbao.tencent.com 这些 referrer 域名归入「AI 搜索」渠道,因为 GA4 默认把它们全算进 Referral,不单独拆出来根本看不出问题。

拆出来之后做三件事:一是对比最近 7 天与前 28 天的日均会话数;二是按品牌词和非品牌词分开看,品牌词跌说明是实体信号出问题,非品牌词跌说明是内容可引用性出问题;三是检查服务器日志有没有新增 5xx 或 429 响应。如果自然搜索和直接访问同步下跌,先修服务器,别往 GEO 方向查。

robots.txt 和 WAF 为什么是本地 AI 流量的第一杀手?

结论:AI 爬虫被 CDN 或 WAF 按 User-Agent 拦截,是本地 AI 流量断崖式下跌最常见的原因,且往往在运维改过一次安全策略后才暴露。

先确认 robots.txt 放行了这几类爬虫:GPTBot、OAI-SearchBot、ChatGPT-User、PerplexityBot、Google-Extended、ClaudeBot、Bytespider。任何一条写成 Disallow: /,对应的 AI 引擎就不会再引用你的本地页面。

然后用命令行实测放行状态:

curl -I -A "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)" https://你的域名/
curl -I -A "Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)" https://你的域名/

返回码必须是 200。出现 403、406 或 429,说明 Cloudflare、阿里云 WAF、腾讯云 EdgeOne 之类的防护层把爬虫挡在了外面——这类拦截经常只对特定 UA 生效,普通浏览器测试完全看不出来。修复方式是在 WAF 的 Bot 管理里把上述 UA 加白名单。

NAP 不一致会怎样影响 AI 本地推荐?

结论:NAP(Name、Address、Phone,即名称、地址、电话)在官网、地图平台、点评平台之间不一致,会让 AI 引擎无法把多个来源归并成同一个实体,直接导致本地推荐里不出现你的门店。

排查时至少核验 5 个来源:官网页脚、Google Business Profile、百度地图、高德地图、大众点评。逐字比对,注意这几类高频差异:门店名是否带「(XX路店)」后缀、地址里的「号」和「弄」是否统一、电话是否一个写成 400 一个写成手机号。

实体合并的粘合剂是 sameAs 字段。在 Organization 或 LocalBusiness 的 JSON-LD 里,sameAs 数组至少放 3 个平台主页链接,指向地图页、官方社媒、点评页。sameAs 为空是中小商户站点最普遍的缺失项。

LocalBusiness 结构化数据要检查哪几个字段?

结论:用 Google Rich Results Test 或 Schema Markup Validator 跑一遍,重点看 address 是否拆成 5 个子字段、geo 坐标是否填写、openingHoursSpecification 是否用标准格式。

最常见的错误是把 address 写成一整串字符串。正确写法必须拆开:

"address": {
  "@type": "PostalAddress",
  "streetAddress": "XX路 88 号 3 层",
  "addressLocality": "杭州市",
  "addressRegion": "浙江省",
  "postalCode": "310000",
  "addressCountry": "CN"
}

另外三个必填信号:geo 里的 latitude 和 longitude 精确到小数点后 6 位;openingHoursSpecification 用 opens/closes 的 24 小时制写法;priceRange 填「¥¥」这类符号区间。服务范围类商户再加 areaServed,列出覆盖的行政区名。

内容怎么写才容易被 AI 引用?

结论:AI 引擎抓取和引用的是能独立成句的短答案块,把关键事实放进页面首屏 300 字内、每块控制在 40 到 80 字,被引用概率最高。

三个硬性要求:营业时间、服务区域、价格区间这些本地高频问题,必须写在 HTML 源码里,不能只放在图片、iframe 或 JS 懒加载的模块里——主流 AI 爬虫不执行 JavaScript,懒加载内容等于不存在;每个答案块自带主语和谓语,比如写「本店营业时间为周一至周日 09:00-21:00,节假日不休」,而不是写「营业时间:见下方」;页面 URL 结构带城市和服务词,例如 /hangzhou/chuzu/。

改完之后做一次引用复现:在 Perplexity、AI Overviews、豆包里搜「品牌名 + 城市 + 服务词」,连续测 5 个查询,看答案里是否还带你的门店信息和来源链接。这一步是唯一能直接验证 GEO 信号是否恢复的方法。

排查优先级怎么排?

结论:按「robots 与 WAF 放行 → NAP 一致性 → schema 校验 → 首屏可引用块 → 引用复现」的顺序执行,每步留一次变更记录,方便回溯是哪次改动引起的下跌。前三步是阻断性问题,修复后 3 到 7 天能看到 AI 渠道会话数回升;后两步是增量优化,见效周期通常 14 到 30 天。

把这五步固化成一份检查表,每次运维改过安全策略、改过站点结构、换过域名之后都跑一遍,能挡掉绝大多数莫名其妙的本地 AI 流量下滑。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2116.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 3

周末
周末 萌新站长 1楼 2026-10-15 15:40

这套四步排查方向是对的,但顺序我建议调一下:把「服务器日志 + WAF 实测」提到第一步,GA4 渠道拆分别当主判据。

先说 GA4 那个坑。AI 平台的 referrer 丢失非常严重,ChatGPT 移动端、Perplexity 的直达访问经常不带 referrer,会话直接落进 Direct,你拆出来的「AI 搜索」渠道会系统性偏低,只能看趋势不能当证据。更硬的判据是日志按 UA 过滤:GPTBot、OAI-SearchBot、PerplexityBot、Bytespider 的请求数按天聚合,用 goaccess 或 awk 拉 14 天曲线,比 GA4 准得多。另外注意 OAI-SearchBot 和 GPTBot 是两个用途,前者管搜索引用、必须放,后者是训练抓取,拦不拦看你策略,别一刀切全放或全拦。

WAF 那步补一句:Cloudflare 的 Bot Fight Mode、Super Bot Fight Mode 里的「Definitely automated」会绕过你的白名单单独拦 GPTBot,光加 WAF 规则不够,得确认 Bot Fight Mode 关掉或把 verified bots 设为 allow。429 基本是限流,查 Cloudflare 的 crawler 限速和源站 rate limit。

阈值 30%/14 天在小站上太灵敏,一次改版就能造出 30% 波动。建议改成 7 日移动平均 + 连续两周同向下跌,再用 Bing Webmaster Tools 的抓取数据交叉验证一次。

帖子最后 sameAs 那段被截断了,补上:实体合并靠 sameAs 指向权威 ID——Wikidata QID、Google Business Profile 的 CID、百度地图 POI ID,光挂官网和社媒链接作用有限,所有 JSON-LD 里必须用同一组 sameAs。NAP 核对时也别拿大众点评的电话跟官网比,那常是平台转接号,以 GBP 和高德为准。

最后一个坑:引用复现测试别用自己的浏览器,登录态和地域信号会污染结果。用无痕 + 中立网络,同一 query 至少跑 3 次,看 citation 率而不是单次有没有出现,LLM 输出本身带随机性。

域名注册
域名注册 版主萌新站长 👑黑卡会员 #1925 2楼 2026-10-15 15:55
周末:这套四步排查方向是对的,但顺序我建议调一下:把「服务器日志 + WAF 实测」提到第一步,GA4 渠道拆分别当主判据。 先说 GA4 那个坑。AI 平台的 r…

同意日志优先,但「按 UA 过滤」这一步本身不够硬,得再加一道 IP 校验。

UA 可伪造,而且 Cloudflare 默认会改写或隐藏上游 UA,你在 Nginx 里看到的未必是原始值。OpenAI 公布了官方 IP 段清单(openai.com/gptbot.json、searchbot.json),Perplexity 也有;最稳的做法是在边缘层把 cf-verified-bot 或 botManagement.verifiedBot 落盘,源站再按 IP 段反查一次。否则那条 14 天曲线里可能掺着伪装爬虫,拿它当判据反而比 GA4 更容易误导。

阈值那块再补一个维度:小站样本量小,百分比波动没意义。日均 UA 请求数不到 50 的站直接看绝对值,从 40 掉到 20 就该查,别等跌破 30%。另外要分引擎看,如果只有 ChatGPT 一家跌、Perplexity 和豆包都稳,先怀疑引擎侧改版或引用策略调整,不是你的信号出问题,这种情况通常等一两周自己回来。

sameAs 再补个降级方案:拿不到 Wikidata QID 的小站,给 Organization 一个稳定 @id 锚点(https://域名/#organization),所有页面 JSON-LD 互相引用同一个 @id,再把 GBP 的 CID 挂上去,闭环也能立起来;别为了凑 sameAs 挂一堆平台主页,反而稀释实体信号。

复现测试提醒一句:本地 query 必须带地域词,测试出口 IP 也要落在目标城市,不然你测出来的是通用结果,根本不是本地包。

juming
juming 初级会员萌新站长 #1927 3楼 2026-10-15 16:14
域名注册:同意日志优先,但「按 UA 过滤」这一步本身不够硬,得再加一道 IP 校验。 UA 可伪造,而且 Cloudflare 默认会改写或隐藏上游 UA,你在 Ng…

IP 校验这条我完全同意,而且它确实是这套流程里最容易漏的一环——单看 UA 的日志曲线在小站上基本等于自欺欺人。补一个降级落地方式:不是所有站都有 Cloudflare Enterprise 的 botManagement.verifiedBot,免费版拿不到这个字段。替代方案是把 OpenAI 和 Perplexity 公布的 IP 段清单同步进边缘 WAF 的自定义规则,用 Workers 在边缘做一次 UA + 来源 IP 双因子校验,校验结果写进自定义请求头(比如 X-Verified-Bot)透传给源站,源站只认这个头、不再自己解析 UA。这样既绕开了 Cloudflare 改写上游 UA 的问题,也省得每次爬虫段更新都去改 Nginx。

阈值按绝对值看这点也对,我再加一句:固定百分比和固定阈值都容易被业务节奏带偏,用 14 天滚动中位数配 MAD(中位数绝对偏差)做异常检测更稳,超过 3 倍 MAD 才报警。另外按引擎拆分时注意样本量,单个引擎日均请求不到 10 次的,涨跌都是噪声,别当信号追。

sameAs 的 @id 降级方案很实用,只提醒两个细节:@id 的写法要全站绝对一致(https、有无尾斜杠、有无 www 必须统一),否则等于建了多个实体;Organization 和 LocalBusiness 之间建议用父子关系显式关联,LocalBusiness 的 @id 用 https://域名/#store,再 sameAs 回 Organization 的 @id,GBP 的 CID 挂在这个 LocalBusiness 上,闭环才真正合上。

复现测试再补一点:uule、gl、hl 这些参数只是软提示,不能替代真实出口 IP,最稳的还是目标城市真 IP + 多 IP 交叉,同一个 query 跑 3 到 5 次看命中率而不是看单次结果。

最后提醒一句:日志至少留 30 天,字段固定成时间、UA、IP、ASN、校验标记、路径、状态码七项,AI 爬虫的抓取周期不规律,留短了根本对不上流量曲线的拐点。