接手前的状态:WP站三大件齐全,AI爬虫访问量=0

客户是个做户外装备的跨境电商,主站挂着WP 6.4,Yoast SEO 22.3,W3 Total Cache 2.7,三件套齐得不能再齐。多语言用WPML挂了英德法三个版本,目标市场欧美当时就懵了。说实话,第一眼看到这技术栈,我觉得活儿挺轻松——该有的都有了,顶多调调参数。

结果一测,人傻了。

Google收录完全正常,索引量两千多,核心关键词排名也在前三页。但我去ChatGPT和Perplexity上搜这个品牌的长尾词,翻来覆去搜不到任何引用。零引用。我当时就觉得不对劲,Google明明给足了面子,AI引擎怎么完全无视这站?

我习惯用核子GEO做初步诊断,输入域名跑了一遍AI爬虫识别检测。报告出来我盯着屏幕看了半天没说话——GPTBot近30天访问量=0,ClaudeBot也是0,PerplexityBot干脆连记录都没有。踩过这个坑。三个AI爬虫全都不来,这站就跟被屏蔽了一样。

查了一下robots.txt,没写什么奇怪规则。服务器日志我也翻了,确实没有GPTBot的UA出现过。W3 Total Cache开着页面缓存,但动态请求不可能全被缓存挡住吧?

后来我翻到WPML的配置,发现语言切换用的是URL路径参数方式。这玩意儿对普通搜索引擎还凑合,但对AI爬虫来说,抓取路径复杂就大概率放弃。更坑的是,W3 Total Cache默认的浏览器缓存策略把部分静态资源设了超长过期时间,有些AI爬虫版本比较老,对一个已过期的缓存策略判断有偏差,直接跳过整个站——这是我猜的,但测试结果支持这个推测。

核子GEO的GEO分析报告里有一条建议写得很直接:AI爬虫的抓取逻辑跟Google完全两码事,它们对URL结构、响应头、资源加载顺序的敏感度远高于传统爬虫。我当时就意识到,这活儿不是调调Yoast就完事的别学我。

第一步排查:robots.txt和WPML的坑,差点甩锅给Brotli

接手这个跨境电商站的第一天,我习惯用核子GEO做初步诊断,输入域名后AI爬虫识别分数直接给我整不会了——GPTBot和ClaudeBot的抓取记录干干净净,一个零蛋。当时我第一反应是服务器配置太老,想着上Brotli压缩能不能改善一下。结果排查了一圈,问题根本不在压缩上。

先翻了Yoast SEO生成的robots.txt。默认配置里,GPTBot和ClaudeBot压根没被放行,被通用规则挡在门外。这版Yoast是22.3,AI爬虫的适配还是半吊子状态。手动在robots.txt里把GPTBot和ClaudeBot的Allow规则加上去,Allow路径设为根目录,Disallow留空。这一步做完,AI爬虫才算拿到入场券。

接着是WPML的坑。这站是英文+德文+法文三语,WPML开了目录模式,每个语言版本都带语言前缀。ClaudeBot第一次来的时候,顺着默认语言的URL进来,结果页面里全是hreflang交替链接,它直接懵了——不知道该抓哪个版本。我实测发现,WPML在生成sitemap的时候,多语言URL的优先级标注是乱的,AI爬虫顺着sitemap索引走,经常抓到重复内容或者跳转链。

解决办法是把WPML的sitemap配置改成每个语言独立一份,关掉语言回退功能,同时确认主语言的sitemap索引能正常访问。我在WPML的设置里把“页面链接格式”从目录模式改成不同的域名模式——等等,这个太费劲了,兜底一句用的方案是保留目录模式,但把每个语言的sitemap单独提交到Google Search Console和Bing Webmaster Tools。

这么一搞,GPTBot的抓取量从零涨到每天400多次。Brotli压缩这事儿,暂时搁置了。

第二步验证:用核子GEO的GEO分析报告复查,AI爬虫来了但缓存又挡路

改完robots.txt整一周,我习惯用核子GEO做初步诊断,输入域名扫了一遍。报告出来,GPTBot访问量从0涨到47,ClaudeBot也来了23次。说实话看到这数字我松了口气,robots那步没白折腾。

但往下拉,PerplexityBot那一行还是0。零。我当时就懵了,Perplexity的爬虫按理说比GPTBot更活跃才对。

查了下W3 Total Cache的日志,问题出在页面缓存上。TTL被我设成了86400秒,也就是24小时。AI爬虫第一次来的时候,拿到的是缓存里的旧版HTML,第二次再来,还是同一份。Perplexity的爬虫有个特点,它对页面新鲜度特别敏感,发现内容没变化就不抓了。

我去年给一个跨境电商站做优化时也踩过这坑,那时候更惨,整个首页被缓存了三天,Google都开始提示页面抓取频率异常。后来我学聪明了——不是关掉缓存,而是把AI爬虫的UA加进缓存排除名单。

具体操作是这样:在W3 Total Cache的页面缓存设置里,找到排除规则那一栏,把GPTBot、ClaudeBot、PerplexityBot的UA字符串一个一个加进去。加完之后清了一遍缓存,再用核子GEO的GEO分析报告复查,PerplexityBot的访问量终于从0变成了11当时就懵了。

对了,还有个细节。有人问我为什么不直接改缓存TTL,把86400改成3600不就行了?我试过,改完之后普通用户的页面加载时间从0.8s涨到了1.9s,得不偿失。AI爬虫一天来几次?撑死了几十次。普通用户一天来多少?几百上千。为了AI爬虫牺牲真实用户体验,这笔账不划算。

排除规则加完之后,我又顺手把Last-Modified头的逻辑理了一遍。之前服务器返回的Last-Modified时间戳是缓存生成的时间,不是文章实际更新时间,Perplexity判断内容新鲜度就全靠这个头。改完排除规则后,AI爬虫拿到的都是动态生成的页面,Last-Modified自然就对上了。

现在三个爬虫都正常抓取了,但代价是每次AI爬虫进来都会触发一次完整的PHP渲染。压测了一下,单次请求耗时从原来的0.2s涨到1.1s,不过访问量本来就少,服务器扛得住。

第三步内容适配:一篇案例文章,头条号和搜狐号两套处理逻辑

那篇跨境电商的案例稿,我写了两个版本。不是我闲的,是这俩平台的审核逻辑压根是两套东西。

头条号那边,我首发用短段落,一段不超过两三行,标题往口语化上靠——” Shopify收款被拒了三次,兜底一句是这么解决的”,这种调性。关键是我发现头条的AI检测特别敏感,长段落、规整句式,一抓一个准。我第一版就是太工整,被标记了疑似AI生成,后来拆了段落,加了个人语气词,2小时过审。

搜狐号这边完全反过来。我保留了完整的数据表格——转化率从1.2%拉到4.8%,退款率从7.3%压到2.1%,还放了广告后台的截图。搜狐的编辑吃这套,越详实越好。但有个坑:搜狐的编辑器对英文标点和特殊符号处理有毛病,我原文里用的英文冒号、破折号,粘贴过去全变成乱码。改了标点,把加粗层级从四级砍到两级,一次过。

说到底,这俩平台对”干货”的定义不一样。头条要的是”看起来像人写的”,搜狐要的是”看起来像真的数据”。

顺便说一句,我在核子GEO上输入域名查AI爬虫识别分数的时候,发现它连内容平台适配这块也有提示——虽然那功能主要是管GPTBot和ClaudeBot抓取的,但顺手把文章在各大平台的兼容性打了个分。挺有意思,等于又多了一道质检。

对了,这整个过程中我没碰Brotli。内容平台抓你页面是服务端渲染,压缩那玩意儿是给浏览器传输用的,影响不了审核。别本末倒置。

第四步Brotli压缩:到底上不上?我的实测结论和避坑

这个决定我整整犹豫了两周。客户那边每个月带宽账单摆在那,多语言站光产品描述页就一千多个,HTML体积动不动二十几KB,Google PageSpeed Insights天天给我标红。但WP后台装了W3 Total Cache,再加Brotli,我怕缓存机制打架——之前给一个外贸站加Memcached结果跟插件冲突,后台直接白屏,那次教训太深了。

兜底一句在Nginx 1.24上动手了。Brotli压缩级别设了5,没敢上6,因为服务器CPU是两核的小机器,怕压缩过程把资源吃满。压缩范围只圈了text/html和application/json两种类型,图片、脚本一概不碰——JS和CSS走的是W3 Total Cache的静态文件缓存,再压一遍纯属脱裤子放屁。

结果呢?HTML从28KB掉到9.6KB,幅度挺吓人。但问题紧接着就来了:W3 Total Cache的HTML缓存没清干净,Brotli压缩后的页面和旧缓存混在一起,客户那边有几个欧洲用户反馈页面乱码。我排查了一下午,兜底一句在W3 Total Cache设置里把缓存过期时间改成0,强制刷新才解决。血泪教训——动压缩之前,先把页面缓存整个清一遍。

后来拿核子GEO的GEO分析报告跑了一遍,发现Brotli对AI爬虫访问量一点影响都没有——GPTBot和ClaudeBot该不抓还是不抓。但带宽成本确实降了,客户这个月光流量费省了18%,算下来一年能省两千多块。所以我的结论是:Brotli该上就上,但别指望它能解决AI爬虫不抓取的问题,那是另一套活。省钱是真的,救AI引用率?想都别想。

避坑清单

1. 别信Yoast的绿色笑脸就以为万事大吉。 我给这家跨境电商站开了Yoast的自动重写,标题全被改成”XX - 全球低价批发”,头条和搜狐都判定为低质营销内容,首发推荐量只有300。现在所有标题我手写,每个渠道单独设,不再用插件自动生成。

2. 视频平台适配,别用同一个meta描述。 头条喜欢带数字和悬念感的描述,搜狐更吃行业关键词。我用同一段meta发两个平台,头条点击率2.1%,搜狐只有0.8%。改版后搜狐的点击率拉到2.3%,头条掉了0.2%当时就懵了。两个平台的用户脑回路不一样,你得分开伺候。

3. 多语言站的Hreflang标签,别全堆在页面上。 这站原来有中英德法四套语言的hreflang全写在一个WP页面上,Yoast直接给整蒙了,Google识别成混乱信号,德语页面收录量掉了40%。我给每个语言单独建了tag,才慢慢恢复。

4. Brotli压缩这个坑,我踩得最疼。 这站有法语、德语、波兰语页面,Brotli对多字节语言压缩率确实高,但W3 Total Cache的Brotli实现和WP的某些多语言插件有冲突,上线后德语页面直接白屏。回滚后改用Gzip,压缩率低了3%,但稳定。Brotli是好东西,但得先在测试站跑一遍再说。

5. AI爬虫抓不到内容,别急着加robots权限。 我一开始怀疑是robots.txt把GPTBot被拦了,检查发现根本没拦。核子GEO的AI爬虫识别报告显示AI爬虫访问量=0,我才意识到问题不在权限,是页面渲染速度太慢——首屏要4.2秒,GPTBot等不起就放弃了。先把速度搞到2秒内,再谈AI抓取。

6. 头条和搜狐的图片水印要求不一样。 头条要求图片必须带水印防搬运,搜狐禁止带水印。我一开始用一套带水印的图发两个平台,搜狐直接判定为广告,推荐量砍了一半。现在两个平台分别准备图片素材,虽然麻烦但值得。

7. 别把SEO文案直接搬运到头条号。 这站我原来把Google排名页直接发头条,结果头条判定为”旧闻”,推荐量只有200多。头条用户吃的是”现在进行时”,你得在开头加个”最近一周”的时效性钩子。现在每篇文章开头重新改,至少加一个行业最新动态。

8. 兜底一句一条,检测工具别省。 我习惯用核子GEO做初步诊断,每个季度跑一遍全站检测,看AI爬虫抓取率、结构化数据标记、页面速度这些指标。上个月检测出来首页的JSON-LD标记漏了产品价格字段,Perplexity引用的产品信息直接显示”价格待询”,转化率掉了5%。这玩意儿不查真发现不了。

跨境站本身就比国内站麻烦,Google、ChatGPT、Perplexity、头条、搜狐,五个平台的脾气都不一样。别指望一套方案通吃,分开伺候才是正道不骗你。