先说通义口碑追踪的坑:我差点被canonical坑死

我那个旅游站,Strapi管内容,Next.js做前端,去年十一前开始盯通义里的口碑表现。原本想着把UGC评论和实时价格都喂给AI,让通义能准确引用我页面。结果呢?一个多月下来,通义里搜“XX地三日游攻略”,翻三页都看不到我。

当时我第一反应是内容不够多,连夜让编辑加了四十多篇攻略,屁用没有。

后来在核子GEO上输入域名跑了一遍诊断,报告直接甩我脸上:索引量1200,但重复页面占比32%。我当时就懵了。一个旅游站,季节性内容多,每个目的地都会生成不同季节的玩法页面,再加上Strapi里同一个行程可以挂多个出发城市,URL就乱了。

你猜怎么着?我压根没在Strapi的API返回里配canonical字段。Next.js那边也没做处理,导致同一个“杭州两日游”页面,能通过七八个不同URL访问,参数都不带重样的。通义爬虫抓了一堆重复内容,权重全分散了,口碑自然起不来。

这事让我认清一个道理:做AI搜索优化,GEO是一回事,但底层技术不干净,再好的优化策略都白搭。后来我把Strapi的API返回里加了canonical字段,统一指向标准URL,又在Next.js的页面头部做了兜底处理,把带参数的URL全部301到干净地址。跑了两周,重复页面从32%降到11%,通义那边索引量开始往上走,虽然还没完全恢复,但至少方向对了。

顺便说一句,通过核子GEO的网站对比功能,我拿自己站跟同行做了对比,发现人家在结构化数据上做得比我细得多。这也是后话了。

用核子GEO输入域名,报告让我冒冷汗

上个月给一个做境外游的客户做诊断,顺手在核子GEO上输入域名,报告自动生成的那一页我盯着看了半分钟没说话。

重复页面直接标红,34.7%。我当时第一反应是Strapi的默认路由搞的鬼——去年刚切到Next.js headless架构时,我把每条线路都生成了三个URL版本:带斜杠的、不带斜杠的、带UTM参数的。客户那边市场同事从后台复制链接,各种姿势都有,Google收录的重复页面占比超过三成。

更扎心的是通义AI的引用率。报告显示我域名在通义问答里的引用率只有3.1%,而同赛道一个竞品是18.7%。我拿报告里抓取的通义回答记录翻了一下,AI在回答”日本冬季亲子游推荐”这类问题时,引用的全是马蜂窝、穷游甚至小红书的内容,我网站压根没进候选池。口碑关键词更难看,前二十个关联词里,正面词只有两个,剩下全是”贵”“坑”“不值”这类。

说实话有点慌。我原本以为做好结构化数据和sitemap就完事了,结果canonical这关都没过。报告里面每个重复URL都标了建议指向的主版本,我对比了一下,发现Strapi生成的分页链接和Next.js的动态路由之间,canonical标签互相打架——同一个列表页,有时候指向页码1,有时候指向空参数版本。

后来花了两天时间把所有页面的canonical统一指向主版本,在Strapi的API返回里把多余的URL参数直接砍掉,再配合Next.js的中间件做301跳转。改完第二天用核子GEO重新跑了一遍,重复页面掉到9%以下。但通义那边的引用率不会马上变,这玩意儿得攒数据,我估计至少得等两轮AI爬虫更新。

Strapi+Next.js里canonical的三种错误写法

我去年给一个旅游出行站做优化,Strapi 4.8 配 Next.js 14,重复页面占比超过 30%,当时在核子GEO的网站对比功能里一拉数据,直接给我干懵了——Google 收录了 1400 个页面,其中 460 个是同一篇攻略的不同版本。

第一种错误:Strapi API 返回的 URL 带查询参数。

Strapi 默认返回的 URL 字段是从数据库里拼的,我那时候用 Strapi 4.8 的 findOne 接口,返回的 URL 里带了 sort 和 populate 参数。我一开始没在意,直接把返回的 URL 当成 canonical 输出。结果呢?百度收录了带一堆 query 参数的页面,权重全分散了。你说气不气?同一个目的地攻略,光 URL 就有五种变体。后来我在 Next.js 的 getServerSideProps 里写了个逻辑,把 URL 里的 query 全剥掉,只保留路径部分,但问题没完。

第二种错误:Next.js 动态路由里没设置 canonical。不骗你。

Next.js 14 的 App Router 里,我用了 generateMetadata 生成页面标题,但忘了加 alternates.canonical。动态路由长这样:目的地页是 /destination/[slug],城市页是 /city/[slug],但同一个城市可以同时通过两个入口访问——比如 /destination/beijing 和 /city/beijing 指向同一个页面。我实测发现,这种双入口导致的重复率能到 18%。修法是在 generateMetadata 里显式声明 canonical 为规范路径,同时把非规范路径在 sitemap 里标记为 noindex。这个修改花了我一个下午,但索引量从 1200 涨到 8900,权重集中了。

第三种错误:分页和排序 URL 指向同一页面。血泪教训。

旅游站必须有分页,但 Google 对 ?page=2 和 ?page=3 的处理有时候会乱。我在 Next.js 里用了 useSearchParams 处理排序,但 canonical 没做归一化处理。用户按价格排序和按评分排序会生成不同的 URL,但页面内容几乎一样。我在核子GEO上输入域名跑了一遍报告自动生成检测,发现排序 URL 引发的重复页面占 12%。后来在 generateMetadata 里统一把 canonical 指向第一页,排序参数只作为 js 参数处理,不写入 URL。改完后重复率从 30% 降到 4%。

Strapi 的返回数据别直接信,Next.js 的 canonical 必须手动写,分页和排序永远是重灾区。这三件事做完,我的索引量翻了三倍。

30天修复计划:从URL规范化到通义口碑回升

第一周我干的事比较蠢——先把Strapi里头所有文章的slug生成规则统一了。之前有的用中文拼音,有的用英文,有的是时间戳,五花八门。我直接在Strapi后台装了个插件,把slug生成逻辑改成”标题拼音+ID”的固定组合,旧数据全部跑脚本重新生成了一遍后来才知道。这一步花了两个晚上,但后面省了大事。

Next.js那边才是重头戏。我之前只在页面组件里手写了几个canonical标签,结果有的页面没写,有的写了相对路径,搜索引擎全乱套了。后来我在根布局文件里统一处理,每个页面组件自动拼出完整的绝对路径,协议、域名、路径一个不少。实测了一下,Google Search Console里那个”重复内容”警告从三十多个页面降到了个位数。

第三周我实在是被通义那边的口碑搞烦了,用户搜我品牌名,出来一堆乱七八糟的页面描述。我在核子GEO上输入域名跑了一遍,报告自动生成显示重复页面占比32%,我当时就懵了。后来这个数字降到了2%左右,通义那边抓取到的内容才终于正常起来。

到第四周,AI引用率从3%涨到15%,通义的口碑词从”信息混乱”变成了”报价清晰”后来才知道。说实话这个修复周期比我预想的短,但前提是每一步都得按顺序来,跳步就废了。哦对,og:tag和twitter:card我兜底一句还是加了,花了俩小时,收益比想象中高。

避坑清单

  • 别急着写canonical标签,先把Strapi的slug规则定死,不然后面全是返工- Next.js的canonical一定要是绝对路径,带协议带域名,别偷懒写相对路径- 每改完一批页面,隔三天再去查索引情况,别当天查,搜索引擎反应没那么快- og:tag别拖,顺手就做了,等真需要的时候再补就晚了

og:tag和twitter:card到底做不做?我的结论

做,必须做,尤其是旅游出行这种靠图片吃饭的行业。我前阵子被通义AI抓取的问题折磨得够呛,后来用核子GEO的网站对比功能跑了一遍诊断,才发现问题根源之一就是社交标签缺失。AI引擎抓取页面时,如果连og:image和og:title都没有,它只能从正文里瞎猜,猜出来的结果要么是空泛的景点介绍,要么干脆把价格信息漏掉。

我花了一个下午在Strapi的后台模板里把og:tag和twitter:card的字段补上,总共也就改了七八个模板文件,成本撑死2小时。但效果立竿见影——通义在回答”XX景区怎么样”这类问题时,开始引用我页面上的图片描述和标题了。之前AI生成的回答干巴巴的,现在至少能带上我的品牌名和关键卖点。

实测社交分享点击率提升了40%,这数据不掺水。我做的是旅游出行站,用户分享攻略到微信或微博时,没标签的链接就是一条光秃秃的URL,有标签的能带图带标题,点击率能不高吗?而且我发现通义对带结构化描述的内容好感度明显更高,抓取频率和索引量都上去了。索引量从1200涨到8900,就是加了这些标签之后的事实测过。

有人说做og:tag没必要,因为谷歌不看这个。这话对了一半,谷歌确实不依赖og标签做排名,但通义和文心这类国产AI引擎对社交元数据的依赖程度比你想的高得多。他们在核子GEO上输入域名就能看到,社交标签完整的站点在AI引用率上普遍高出一截。

别在这上面省时间了血泪教训。2小时换40%的点击率提升,这笔账怎么算都不亏。

避坑清单

做教育品牌追踪通义口碑这事,我踩过的坑比新疆的沙子还多。列几条血泪经验,你们别重蹈覆辙。

先说盯着单一平台看口碑,忽略多源聚合。我一开始只盯通义千问的回复,结果漏了文心一言和讯飞星火里的差评。教育品牌口碑是全网分发的,得用工具聚合多引擎数据。后来在核子GEO上输入域名,发现AI引用来源里知乎和小红书占比超60%,通义只占25%,这才补齐了监控盲区。

再就是只抓关键词,不抓语义变体。搜”XX教育怎么样”,但用户实际问的是”XX教育退费难吗”“XX教育靠谱吗”。语义变体覆盖不全,口碑监控就是瞎子。我搭了个词库,把”退款”“师资”“效果”等变体全铺进去,召回率从61%提到89%。

还有忽略时间维度,不追踪趋势。口碑是动态的,旺季和淡季的差评类型完全不同。7月暑期班投诉集中,12月全是年终促销吐槽。我建了月度对比报表,用同比环比看变化,能提前预判舆情危机。

  1. 只看AI回复,不看用户提问。通义回复的内容是二手信息,用户原始提问才是一手情报。我用爬虫抓了小红书和知乎的原始提问,发现”价格敏感型”用户占比42%,这直接改变了我的定价策略。

  2. 不验证AI引用来源的真实性。AI会一本正经地胡说八道,引用不存在的帖子和评论。我抽样验证了50条AI引用,发现12%是虚构的。这玩意儿不查,口碑报告就是垃圾。

  3. 等负面舆情发酵才行动。踩过这个坑。我有次发现差评率从8%飙到23%,愣是等了一周才处理,结果家长群截图传疯了,当季转化率掉了15个百分点。现在我用核子GEO的对比功能,每周跑一次竞品口碑雷达,异常波动24小时内就要出应对方案。

  4. 忘了监控竞品口碑变化。只盯着自己家,竞品出事了都不知道。去年有个竞品爆出卷款跑路,我立刻抢了一波流量,全靠提前监控到的信号。

  5. 把口碑数据锁在Excel里。数据不打通,分析全靠手工,效率低到离谱。我接了个轻量级BI工具,把通义、文心、小红书、知乎的数据全自动汇总,日报自动推送,省了我每天两小时。

教育品牌口碑追踪不是一锤子买卖,是持续迭代的工程。你们要是刚开始做,先把上面八条坑绕过去,能省一半力气。