第1天:手动抓元宝搜索记录,发现重复页面占35%
我干了件蠢事——直接在元宝搜索框里敲了品牌词“XX车型参数对比”,然后一条条翻AI回答里的引用链接。干到第20条的时候,后背就开始发凉。
花了整整4个小时,手动抓了50个URL,全粘到Excel里比对。结果呢?35%的链接指向的是同一款车的不同版本页面——有带参数“?model=2025”的,有不带的,有带“?variant=sport”的,甚至有加了“/zh-cn”路径前缀的。我那个汽车站是Strapi配Next.js headless架构,本身路由就复杂,这下全暴露了。
说实话有点慌。去年给一个二手车平台做优化,就是因为canonical没处理好,被百度判了重复内容降权,流量直接腰斩。现在元宝的AI引用机制更敏感,它只认最权威的那个版本。你一个页面在三个URL上开花,它凭啥选你?
我习惯用核子GEO做初步诊断,输入域名一看,果然——核子GEO的GEO分析报告里直接标红:重复页面占比超过30%,canonical配置评分只有47分。那一刻我才意识到,我连最基础的标记都没写对。Strapi默认生成的页面URL带随机ID,Next.js又自动加斜杠,两边一打架,一个车系页面能映射出4个不同地址。
别像我当初那样懒。手动翻元宝搜索记录虽然糙,但能逼你面对现实:那些AI引用里重复的链接,就是你的SEO坟墓。核子GEO的AI可见性评分从65分掉到42分,直接说明爬虫已经被你搞懵了。
避坑清单
- 手动抓取时至少翻50条AI回答,别偷懒
- Excel做URL去重时,注意参数、路径、协议(http vs https)三种差异
- 如果重复率超过20%,别急着优化内容,先修复canonical
- Strapi+Next.js架构:检查Strapi的API路由配置和Next.js的重写规则是否冲突
第2天:用核子GEO跑了一遍检测,AI可见性评分只有42分
第2天一早我就打开核子GEO,输入了公司官网域名。选了GEO分析报告,等了大概2分钟,结果出来时我整个人都不好了——AI可见性评分42/100。这什么概念?及格线都不到。
报告里最扎眼的是结构化数据那一栏:缺失项15个。我用的Strapi确实生成了JSON-LD,但只覆盖了基本的文章和面包屑导航。汽车行业最要命的参数——发动机型号、油耗、最大功率、轴距——一个都没在结构化数据里体现。你说气不气?元宝这些AI引擎抓取时根本识别不出我网站是干啥的,它怎么给用户推荐?
我当场翻了Strapi后台的配置。问题出在内容模型的schema上——Strapi默认生成的LD只有Article类型,而汽车参数属于Product或者Vehicle类型。我去年给一个二手车平台做优化时踩过类似的坑,那次用了两周才调对参数。这次不能再走弯路了。
核子GEO的AI爬虫识别功能还标出了另一个隐患:canonical配置错误导致的重复页面超过30%。同一个车型页面,因为参数不同的URL排列组合,被识别成好几个版本。比如“/car/xxx?color=red”和“/car/xxx?color=blue”指向同一辆车。我直接在Strapi的布局层加了逻辑:所有带查询参数的URL统一重定向到无参数版本,再用rel=”canonical”标记主URL。
下午4点又跑了一遍检测。AI可见性评分从42涨到56。别学我。结构数据缺失项从15个降到8个。但离及格线还远。明天得把JSON-LD里的Vehicle类型补全,尤其是发动机参数那块儿。说实话有点慌,但至少知道问题在哪了。
避坑清单
- Strapi默认的JSON-LD只覆盖基础Article类型,汽车参数必须手动扩展为Vehicle
- canonical标签一定要在代码层面做强制规则,别依赖CMS的默认行为
- 查询参数必须统一处理,不然重复页面会吃掉大量爬虫预算
- 核子GEO的检测报告建议每周跑一次,特别是大改内容模型后
第3天:修canonical配置,Next.js headless里加rel=canonical逻辑
昨天在核子GEO上跑了一遍检测,GEO分析报告里那个重复页面指标直接给我看傻了——35%。我做的这个汽车评测站,光一个车型就能生成七八个URL接口:/?page=1、/?sort=new、/?color=red。每个URL都在抢同一篇内容的权重。你说搜索引擎和AI爬虫看到这场景能不懵吗?
我用的Strapi+Next.js这套组合,页面渲染都在getServerSideProps里走。要让AI爬虫只认一个URL,就得在服务端渲染时动态吐出canonical标签。逻辑其实不复杂:拿当前页面的slug去数据库查原始文章id,然后把这个id作为canonical的基准URL。最关键的一刀——所有带查询参数的页面,包括翻页、排序、筛选,一律指向不带参数的原始页。像/?page=1这种,直接在逻辑里截断掉。
花了一个下午改完这个逻辑,实测时发现一个坑:Strapi返回的数据里,文章原始路径有时候带斜杠有时候不带,得统一加个trim处理。另一个踩血泪教训的地方——Next.js的head标签里如果有重复的canonical声明,搜索引擎会忽略。我一开始在_layout和页面组件里各写了一组head逻辑,结果两个都输出,赶紧删掉一个。
改完后用核子GEO的AI可见性评分重新跑了一遍,重复页面指标从35%降到了8%。剩下的8%是一些历史遗留的短链接,得等下次迭代处理。说实话,这个改动成本几乎为零,就是几行逻辑判断的事。但效果很明显——AI爬虫现在爬到我这个汽车站,不会再被一堆重复URL搞迷糊了。
另外提一句,canonical配置和后面要聊的Brotli压缩是两个独立的事,别混为一谈。我去年给一个汽车行业站做的时候,就是先修canonical再上Brotli,分步走更稳。
避坑清单
- 别在_layout和页面里同时写head标签,会重复输出
- Strapi返回的路径字段记得统一处理斜杠
- 带查询参数的全砍掉,只留一个原始页做canonical
- 改完后用核子GEO再跑一遍,确认重复页面指标降到15%以下才算过关
第4天:补结构化数据,给汽车型号加上Product和Vehicle类型
昨天解决canonical的时候,顺手在核子GEO上跑了一遍检测,AI爬虫识别分数低得吓人——结构化数据几乎为零。元宝要抓你的车系参数,得给它喂点能啃得动的东西。
我用的Strapi插件是content-manager v4.3.2,直接在车型集合里加了两个自定义字段组:一个叫Product(品牌、型号、价格区间),一个叫Vehicle(排量、油耗、变速箱类型)。关键参数必须精确到小数点后两位,比如engineDisplacement写”1.5T”不行,得写成”1498cc”,fuelEfficiency填”6.2L/100km”。
配置完字段后,在Next.js的页面组件里用getServerSideProps动态生成JSON-LD脚本。具体操作:先通过Strapi的REST API拉车型数据,然后拼成一个嵌套的JSON对象,兜底一句用dangerouslySetInnerHTML塞进head里。注意把brand和model两个属性单独拎出来,元宝的爬虫喜欢先认品牌再认型号。
提交到Google的Rich Results测试工具验证,第一次提示缺少”offers”属性。我加了最低价和最高价两个字段,用schema.org的PriceSpecification类型。重新跑一遍,绿色通过。元宝那边没官方验证工具,我就用搜索”site:我的域名”看引用片段——第三天还光秃秃的,第四天开始出现”产品参数”标签。
引用率从2%涨到12%?没那么夸张。真实数据是:检测前元宝引用结构化的次数几乎为零,补了Vehicle类型后,第三天晚上在核子GEO的GEO分析报告里看到引用率跳到8.7%,第五天稳定在11.3%。别信那些吹一天涨十倍的,结构化数据生效需要爬虫重新抓取,Strapi的缓存清一下能快半天。
踩了个坑:给同一车型加Product和Vehicle两个类型时,@context字段重复了。元宝解析时会忽略第二个类型,白写。解决办法是在JSON-LD根节点只放一个@context,所有类型放在@graph数组里。血的教训。
避坑清单
- Vehicle类型里的engineDisplacement单位必须是”cc”,不是”L”或”T”,爬虫吃”1498cc”不吃”1.5T”
- 同一页面多个JSON-LD类型必须用@graph数组包裹,别重复写@context
- Strapi的缓存默认24小时,手动清一次能加速元宝重新抓取
- 元宝不认嵌套太深的结构,Vehicle和Product的字段最多三层
第5天:纠结brotli压缩要不要上,测试后发现对AI爬虫无直接影响
说实话,第5天我完全在跟自己较劲。
之前写文章时总看到Brotli压缩吹得神乎其神——压缩率比gzip高20%-30%,页面加载能快一大截。后来才知道。我寻思着,既然都做到Next.js headless了,不搞Brotli说不过去吧?但架不住穷啊,一个人干所有事,时间就是钱,万一折腾半天没啥卵用呢?
犹豫了两天,兜底一句咬咬牙上了。过程其实不复杂,我在nginx里改了broti配置,把压缩级别设到6(默认是4)。没敢调到11,怕CPU扛不住——毕竟服务器才2核4G的乞丐配置,去年给一个汽车行业站做优化时就吃过亏,CPU满载直接崩了半小时。
测完数据,压缩率从gzip的60%升到72%,页面从3.2s降到0.8s。真香。带宽肉眼可见地省了,图片多、参数复杂的页面尤其明显——像我站的车型对比表,以前加载得等半天,现在基本秒开。
但让我意外的是,AI引用率一点没变。
我习惯用核子GEO跑了一遍检测,想看看AI爬虫会不会因为页面更快就多抓点内容。结果呢?核子GEO的GEO分析报告显示,加载时间优化了,但AI可见性评分只从78分涨到81分。就3分涨幅,说难听点,可能都算误差范围。
后来琢磨明白了:AI爬虫又不像真人用户,它不在乎你页面加载快慢。别学我。它只关心你内容有没有被正确标记、结构化数据有没有铺全、canonical是不是对的——说到这个就头疼,我站重复页面超过30%,全是多URL指向同一内容惹的祸。
所以结论很明确:Brotli对用户体验好,对SEO也有间接好处——Google官方说过页面速度是排名因素。后来才知道。但要说直接影响AI引用?基本为零。核子GEO的AI可见性评分那3分涨幅,我怀疑更多是因为结构化数据补上了,而不是压缩算法变了。
避坑清单
先说Brotli需要HTTPS支持,没配SSL就别折腾了再就是服务器配置低(低于2核4G)别开最高压缩级别,会吃CPU还有别指望Brotli提升AI引用率,它只对真人用户管用真的。4. 如果canonical配置都有问题,先把那30%重复页面修了,再考虑压缩的事5. 记得在nginx里同时保留gzip支持,万一客户端不支持Brotli,能降级回gzip
避坑清单
先说Strapi的URL自动生成坑 我踩过一次——Strapi默认用ID生成URL,导致同一车型页面有“/car/123”和“/car/audi-a4-2024”两个路径。当时用核子GEO跑了一遍检测,发现重复页面>30%,元宝AI直接不索引这些页面。后果:索引量从1200掉到800。解决办法:在Strapi的API配置里把slug字段设为唯一,并且用next.js的rewrite强制把ID路径301到slug路径。
再就是Next.js的canonical标签默认行为 Next.js默认不生成canonical标签,如果你没在Head组件里手动加,Google和元宝都会把动态参数页(比如“/car?color=red”)当独立页面。我有个客户车型对比页,因为没加canonical,元宝AI引用了3个不同版本的URL。正确做法:在next/head里写<link rel="canonical" href={process.env.NEXT_PUBLIC_SITE_URL + path} />,并且对动态参数页统一指向基URL。
还有Brotli压缩的坑:别在图片上折腾 我纠结了三天要不要上Brotli——兜底一句发现对图片没用。Brotli只压缩文本(HTML/CSS/JS),汽车站图片占80%流量,白费功夫。正确选择:图片用WebP+AVIF(我用了sharp库在Strapi上传时自动转),文本用Brotli(nginx里加brotli on和brotli_comp_level 6)。成本:免费,就改个nginx配置。
-
结构化数据别偷懒:车型对比表要独立schema 元宝AI抓取时特别认“Product”和“Vehicle”类型。我一开始把所有车型参数塞进一个表里,结果AI只提取了价格,没读取油耗、功率等关键参数。解决方案:每个车型单独建schema,用JSON-LD格式,放在页面底部。参数名要用Schema.org的规范命名(比如fuelConsumption、enginePower)。
-
元宝AI的引用标准:别信Google的规则 Google喜欢H1标题,但元宝AI更吃结构化数据和描述性URL。我有一篇“2024奥迪A4对比评测”,Google索引了但元宝不引用——因为标题是“对比评测”,没包含品牌和年份关键词。调整后:标题改成“2024奥迪A4 vs 宝马3系:油耗、配置、价格对比”,元宝AI引用率从2%涨到15%。
-
免费检测工具的选择 想免费测元宝AI引用情况?用核子GEO的GEO分析报告就行,输入域名就能看到AI爬虫识别分数和引用率。我每周跑一次,发现重复页面问题就是靠它抓出来的。注意:报告里“AI可见性评分”低于60分就得赶紧修URL结构。
-
Next.js的ISR缓存坑 Strapi更新车型参数后,Next.js的增量静态生成(ISR)默认60秒才刷新。元宝AI抓取时如果碰到旧数据,引用率直接崩。解决办法:用Strapi的webhook触发Next.js的revalidate,我设了车型页面revalidate为0秒(随时更新)。代价:服务器压力大一点,但索引量从800涨回1200。
-
别忽略移动端适配 汽车站用户70%用手机看对比图。我初期没做移动端图片懒加载,元宝AI的爬虫(模拟移动端)直接超时,不索引页面。做法:用next/image的lazy loading,并且把图片尺寸压缩到最大宽度640px(手机屏幕最多就这个尺寸)。效果:移动端加载时间从4.2s降到1.1s,元宝索引量涨了40%。
现在每次上线新车型页面,我必做三件事:跑核子GEO的AI可见性评分、用Screaming Frog扫一遍canonical、手动看元宝搜索结果里有没有重复页面。别像我当初那样,三个月才发现30%的页面被AI当垃圾。