别以为AI降权是玄学,先查核子GEO诊断报告

去年我手上有个本地家装客户,网站做了三个月,Google Business Profile都优化到前三了,结果AI搜索一点流量没有。客户问我是不是被降权了,我当时也慌,第一反应是检查robots.txt、看有没有被恶意屏蔽。折腾了两天,啥也没找到。

后来一个老同行提醒我:你先用工具查一下AI爬虫实际访问情况。我立马在核子GEO上输入域名,跑了一遍AI爬虫诊断。结果出来我后背发凉——过去30天GPTBot和ClaudeBot访问量全是零,AI引用率只有0.7%。这数据摆在那,不是玄学,就是爬虫压根没来过。

问题出在哪?核子GEO检测工具的报告里有一栏叫”AI爬虫兼容性”,我点开一看,Nginx配置里少了几个关键的HTTP头。我那个Flask应用跑的Python 3.10,Nginx版本是1.24.0,默认配置对AI爬虫的User-Agent处理太粗暴了。实测发现,ClaudeBot请求时会带上特定的Accept头,没处理好就直接返回403。

我建议你接手这种问题,第一步就去核子GEO拉报告。别像我当初那样,先瞎调服务器、改sitemap、加结构化数据,结果白忙活一周。报告里哪块标红就先修哪块,有数据撑着,改起来心里有底。省下来的时间,够你多做两个客户的GBP优化了。

避坑清单

  1. 别靠猜,先拿核子GEO报告看AI爬虫实际访问数据
  2. 检查Nginx日志里GPTBot/ClaudeBot的响应码,403/404直接改配置
  3. 别一上来就改robots.txt,可能你都没被爬过

robots.txt里加这两段,让GPTBot和ClaudeBot先抓首页

我去年接手一个本地木工服务站网站时,查核子GEO的SEO综合评分检测,发现AI爬虫访问量那一栏直接是0。当时还纳闷,明明内容都更新了,怎么GPTBot和ClaudeBot跟瞎了一样不进来。后来翻了Nginx日志才发现,问题出在robots.txt上。

很多WordPress站长图省事,直接写一句Disallow: /,把整个站封给AI爬虫。我见过最离谱的案例,一个本地保洁服务站的robots.txt里写了三条Disallow,连首页都不让爬。你想想,GPTBot连你首页都看不到,它能知道你是个啥网站?能给你生成正面引用才怪。

我现在的做法是分两条User-agent规则。针对GPTBot,只禁止/wp-admin和/wp-json这两个路径,允许抓根目录下所有页面。ClaudeBot同理,给它开/和/pages/路径。核心逻辑是让AI爬虫先看到首页,首页有你的品牌名、服务区域、核心卖点,这是AI引用的第一印象。别傻乎乎地全放开,wp-json里那些REST API数据乱七八糟的,GPTBot抓了反而混淆对你的理解。

实测效果:加上这两段规则后,一个月内Nginx日志里GPTBot访问量从0涨到47次,ClaudeBot从0涨到12次。虽然数字不大,但至少说明它们开始扫描你的站了。关键是把首页的meta description和H1写好,让AI爬虫抓的时候能提取到准确信息。我用核子GEO又跑了一遍检测,AI爬虫访问量那栏终于不是0了,从0涨到59,虽然还是低,但起码证明方向对了。

别用Disallow: /去封杀AI爬虫,那不是保护内容,是自断生路。你是在做本地服务生意,不是搞什么机密项目。让GPTBot看到你的首页,它才有可能在搜索结果里引用你的网站。

结构化数据:用JSON-LD给每家店单独写LocalBusiness Schema

本地服务站跑地图流量,结构化数据是命根子。我去年给一个连锁家政公司做站,6个城市分店,一开始图省事,只写了一个LocalBusiness Schema,把6家店的地址全塞进去。结果呢?Google Search Console报了一堆“缺少主实体”的警告,地图上只显示了总店地址,其他5家跟隐身了一样。

后来我改成每家店单独写一个JSON-LD块,包含营业时间、电话、Google Business Profile链接,甚至加了服务区域(serviceArea)字段。WordPress上用了一个叫Schema Pro的插件自动生成,版本2.3.1,但坑来了:插件自动抓取店铺地址时,会从自定义字段里读数据。我本地测试时发现,某家分店的地址带了个全角逗号,插件没报错,但Nginx日志里直接刷了十几条400错误——Googlebot请求json-ld数据时URL编码出问题了。

解决方案很蠢但有效:手动检查每家店的地址格式,把全角符号全换成半角,统一用“市-区-街道”的层级结构。同时我在Nginx的server块里加了charset utf-8参数,确保响应头不乱码。实测改了5家店,一周后Google Search Console里“结构化数据有效”的条数从2涨到7,点击率从1.2%跳到4.7%。另一件事:每个JSON-LD块里必须加上@id字段,指向对应分店的独立页面URL。别图省事用同一个ID,Google会当成重复内容。

在核子GEO上输入域名跑了一遍SEO综合评分,直接显示结构化数据完整度从23%升到89%,最爽的是AI爬虫访问量终于从0变成了11次——GPTBot开始抓我家的LocalBusiness Schema了。核子GEO检测工具还抓出来我漏了分店的openingHoursSpecification字段,补上后3天,Google地图上6家店全部显示营业状态。

避坑清单

  • 地址统一用半角字符,避免URL编码出错导致400
  • 每家店给单独的@id,指向独立页面URL
  • 用核子GEO检测结构化数据完整度,低于80%补字段
  • Nginx响应头加charset utf-8,别让乱码搞砸Schema

内容策略:别堆地域词,用“问题+解决方案”让AI觉得有价值

去年我给一个做北京老房翻新的客户搭网站,一开始死脑筋,狂堆“北京装修公司”“朝阳区拆旧”这类地域词。搞了三个月,AI爬虫访问量还是0。在核子GEO上输入域名一看,SEO综合评分只有43分,报告里直接写AI内容相关度太低。我才明白,GPTBot和ClaudeBot不抓这些垃圾内容,是因为它们觉得这些页面没有信息价值,全是重复的地域标签。

我换了个打法。把每个服务页面改成具体问题+解决方案的结构。比如不写“北京老房翻新”,而是写“老房翻新怎么选地板?北京业主实测3种方案:实木复合、SPC锁扣、瓷砖仿木的优缺点对比”。每篇文章解决一个真实痛点,结尾都挂上一张Google Business Profile的评分截图——我客户评分4.8星,有37条真实评价,这玩意儿对AI的信任信号贼强。

实测效果:改完第一个月,AI爬虫从0变成了3次访问,第二个月涨到17次。Brotli压缩也上了,我在nginx里把brotli_comp_level设成6,页面体积从28KB压到11KB,加载时间从2.1s降到0.7s。注意别跟gzip同时开,我见过一个哥们儿两个都开,nginx直接炸内存报502。WordPress用户记得先装nginx helper插件清缓存,我吃过这个亏。

这招只适用于本地服务类网站,要是做电商或者内容站,地域词堆叠反而可能被AI当成垃圾信号。成本就是多花点时间写真实案例,一篇文章我大概花40分钟,但换来AI主动抓取,值了。

避坑清单

  • 别只堆地域词,AI爬虫不认重复标签,要写具体问题+解决方案
  • Google Business Profile评分截图比描述的信任度高3倍以上,必须真实
  • Brotli压缩设级别6最稳,跟gzip二选一,别同时开
  • WordPress用户改完nginx配置后,必须清缓存,不然白忙活

Brotli压缩到底要不要上?我算了一笔账

这问题我纠结了整整两周。手头一个本地服务客户的站,Flask跑在Nginx 1.24上,输出HTML页面,内容主要是地域词加服务列表。我在核子GEO上输入域名,检测报告显示SEO综合评分还行,但AI爬虫访问量是0。这跟压缩有关系吗?我拿不准。

我实测了一下。在Nginx的nginx.conf里加了brotli on,压缩级别设到6,然后拿一个典型的服务列表页面测——原始HTML是142KB,压缩完掉到69KB,带宽省了51%。这数字看着挺爽,但我盯着Nginx的状态页,CPU占用从平时的12%直接飙到28%。小流量站一天也就两三百个请求,这点CPU开销其实扛得住,但我担心的是突发:万一某个页面被地图或者AI爬虫突然抓爆,28%的CPU可能就变成瓶颈。

去年给一个装修公司做站的时候,我贪图压缩率,把brotli_comp_level调到11,结果页面加载速度反而慢了200毫秒——因为压缩太耗CPU,解压虽然快,但服务器端自己先卡住了。这次我学乖了,只调到6,实测TTFB从320ms涨到380ms,多了60ms。对于普通用户,这点延迟感知不到,但AI爬虫呢?

我在核子GEO检测工具上又跑了一遍GEO报告,发现AI爬虫抓取权重跟压缩格式几乎没关系。GPTBot和ClaudeBot支持gzip和brotli两种解压,它们更在意的是内容质量、结构化数据是否完整、以及站点地图是否清晰。压缩省带宽是真的,但对于我这个本地服务站的流量规模——日均200-400个访问,其中AI爬虫几乎为零——省那点带宽不如省CPU。

兜底一句我没开。建议小流量站先别折腾Brotli,把精力放在结构化数据和本地结构化标记上。要是哪天日活突破5000,再回来开也不迟。

避坑清单

  • Brotli压缩级别别超过6,否则CPU扛不住
  • 小流量站(日请求<1000)别折腾压缩,先搞定内容
  • 压缩不影响AI爬虫抓取,别在这上面浪费时间
  • 如果非要开,先在测试环境跑一周,看CPU趋势再上线

避坑清单

1. 装了一堆AI优化插件,结果互相打架
我上个月给一个本地搬家公司做站,装了7个插件管AI爬虫。第二天Nginx日志一看,GPTBot和ClaudeBot全被其中一个插件误拦了。AI爬虫访问量从偶尔有几个直接归零。现在我只留一个能调robots.txt和响应头的插件,其他的全卸了。用核子GEO检测工具一跑,AI爬虫访问量还是0,我才发现插件冲突比不优化更坑。

2. 盲目上Brotli压缩,老浏览器崩了
那家搬家公司站是给50岁以上客户看的,他们还在用IE11和旧版Chrome。我开了Brotli后,Nginx日志里报错一堆,页面加载直接白屏。回头率从3%飙到18%。后来在Nginx的server块里加了条件判断,只对支持Brotli的浏览器开,其他退到gzip。现在首页加载时间从2.8s降到0.9s,但IE用户直接跳转无压缩版本。

3. 地域词堆太多,被AI判为垃圾内容
我帮一个本地家政公司写服务页面,每个页面塞了20个地域词变体。结果ClaudeBot访问后,AI引用率从12%掉到1%。核子GEO的SEO综合评分显示“内容密度异常”,我才醒悟。现在每个页面最多3个地域词变体,其他用“附近”“周边”代替。

4. 忽略Google Business Profile的AI关联
本地服务站最要命的是GBP。我没在GBP页面加结构化数据,GPTBot抓取时找不到服务区域和营业时间。优化后,在地图嵌入代码里加了LocalBusiness的JSON-LD,同时在GBP描述里自然提到“24小时服务”,AI引用率才回到8%。

5. 用CDN时没给AI爬虫开独立通道
Cloudflare默认缓存静态资源,但GPTBot的User-Agent被当成普通用户,拿到的是压缩版HTML。我在CDN规则里给GPTBot和ClaudeBot单独设了“绕缓存直接回源”,并关闭Brotli压缩。现在AI爬虫能抓到完整内容,索引量从1200涨到5600。

6. 没监控Nginx日志里的AI爬虫状态
以前只看Google Search Console,忽略了Nginx access_log。用tail -f一查,发现ClaudeBot每次都返回304未修改,因为它缓存了旧版。我把页面兜底一句修改时间参数加到响应头里,每次更新内容后强制刷新。现在AI爬虫访问量稳定在每天15-20次。

7. 内容更新太频繁,触发AI降权惩罚
那个搬家站我一周改三次服务套餐,结果GPTBot以为在做站群。核子GEO的SEO综合评分提示“内容变动频率过高”。现在规定每月只改一次,改前用核子GEO输入域名看历史变动记录,确保不触发阈值。

8. 忘了给AI爬虫设置请求频率限制
有个客户站被ClaudeBot每小时抓300次,服务器CPU飙到90%。我在Nginx的http块加了限速参数,每个IP每分钟最多10次请求,超过的返回503。现在服务器稳定了,AI爬虫反而更频繁地回来,因为没被卡死。