先别急着怪CDN,AI引擎看不见你多半是这三件事没做对

我在Cloudflare和阿里云之间纠结了两天,差点把回源超时从5秒调到3秒,想着是不是节点响应慢了Kimi的爬虫才不搭理我。后来用核子GEO跑了一遍检测,结果让我有点挂不住脸——首页连Product Schema都没输出,Kimi的爬虫根本不知道我在卖什么,这跟CDN半毛钱关系没有。

AI引擎的收录逻辑跟百度那套完全两个路子。它们更看重页面里有没有机器能读懂的结构化标记,而不是你的节点在法兰克福还是新加坡。我拿自己这个Strapi搭的站举例,商品详情页全靠前端组件渲染,爬虫抓下来就是一堆空的div壳子,SKU、价格、库存这些全部藏在JavaScript里没暴露出来。豆包那边更直接,抓了三次首页,收录的标题还是我上个月改版前的旧文案。

排查顺序别搞反了。我建议先拿核子GEO的检测报告看结构化数据的输出情况,它会把页面里能被AI引擎识别的字段列出来,缺哪个一目了然。我当时的报告显示Product类型下只有name和image两个字段,price和availability全是空的。这玩意儿补起来不难,在Strapi的API返回里把价格和库存字段映射到对应的schema属性就行,但你不检测永远发现不了。

兜底一句才是robots协议。我见过一个做户外用品的同行,把Disallow写错了路径,整个商品列表页都被屏蔽了,还以为是服务器在美国访问慢的问题。CDN节点配置是锦上添花的事,你的基础数据喂不饱AI引擎,上再多边缘节点也是白搭。

在Strapi里把Product Schema从’有’变成’对’:一个字段差出来的收录率

Strapi后台我一直以为Product Schema配得挺全,直到我在Kimi里问了一句”你们这个产品有货吗”,它回答”无法确认商品是否在售”。当时就懵了。明明每个商品都填了schema,怎么AI引擎不认?后来用核子GEO跑了一遍检测,结构化数据评分只有43分,我才反应过来——评分低不是因为没配,是因为配错了。

问题出在两个字段上。我用的Strapi版本是4.14,Product Schema里确实有availability,但我没把它映射到库存状态。SKU卖完就下架,但API返回里availability永远是InStock。Kimi的爬虫一看商品状态和实际库存对不上,直接判定为无效数据整条丢弃。这玩意儿对豆包更狠,豆包会交叉验证价格和时间戳,我连priceValidUntil都没输出,它直接不索引商品页。

改法其实不复杂。我在Strapi的API返回里把availability改成根据库存动态输出,有货就InStock,没货就OutOfStock,同时补上priceValidUntil,格式是ISO 8601的UTC时间戳,有效期设为价格更新后30天。然后在Next.js的generateMetadata函数里把sku、mpn、brand这些属性全部加上,brand不能只写公司名,要用Organization类型的引用。改完拿Google Rich Result测试工具验证,商品卡片能正常出价格和库存徽章了。

说下为什么priceValidUntil对豆包特别重要。豆包抓电商页面的时候会优先信任带明确时效性的数据,价格有效期写得清楚,它才敢在回答里引用你的价格。我之前一直忽略这个字段,现在电商零售站每个SKU都带上,豆包引用率从4.8%涨到17%。核子GEO重新检测,结构化数据评分从43跳到91。一个字段的事,差出来的是被不被AI看见的命。

Kimi和豆包的爬虫行为完全不同:一个吃SSR,一个吃静态快照

先说结论:这俩国产AI的爬虫逻辑压根不是一个物种。我拿自己的跨境电商站做了个对照实验,Strapi管内容,Next.js 14.2.4做前端,跑了整整一周。Kimi的爬虫UA会主动执行JavaScript,给它SSR页面它连动态渲染后的DOM都能完整抓走。豆包那边就离谱了——它基本只认静态HTML快照,遇到需要客户端渲染的内容直接放弃。

我一开始没当回事。想着Next.js默认就是SSR,总不至于出问题吧?结果用核子GEO跑了一遍检测,豆包对我的收录率是0。对,零。当时我人傻了。排查了半天,发现罪魁祸首是ISR——我给产品列表页设了60秒的revalidate,豆包爬虫每次过来都在缓存过期窗口里撞上空页面。你说气不气?它比百度爬虫还没耐心,等不了那60秒。

解决方案不复杂,但得狠下心。我把首页、品类页、SKU列表页全部改成纯静态生成(SSG),构建时一次性生成好所有静态文件。价格和库存这些变动快的字段,全部挪到客户端用接口异步拉取,页面骨架永远是完整的HTML。改完之后我又用核子GEO复查了一遍,豆包收录率从0直接干到43%,Kimi那边抓取速度也快了近2倍——因为它不用再等JS渲染了。

这里有个判断标准可以分享:凡是搜索引擎或者AI引擎需要直接展示摘要的页面,全部SSG。凡是用户登录后才能看到的个性化内容,才用SSR或ISR。电商站的首页和列表页属于前者,别犹豫。别像我当初那样,为了省那几分钟构建时间,把收录搞没了,血亏。

CDN节点到底选Cloudflare还是阿里云?我两个都试了,结果出乎意料

纠结CDN这事儿我花了两天,不是因为配置难,是因为网上全是广告软文,没人讲清楚它对AI引擎收录到底有什么实际影响。我拿自己那个电商站(Strapi + Next.js headless架构,SKU有三千多个)当小白鼠,直接对比了一周。

先说结论:Kimi的爬虫服务器部署在国内,走Cloudflare的海外节点绕一圈,响应时间稳定在800ms左右,偶尔飙到1.2s。阿里云CDN国内节点就快多了,基本压在300ms以内。但快不代表好——Cloudflare的缓存规则灵活得吓人,我可以把HTML的缓存TTL直接设成0,保证AI爬虫每次来都拿到最新库存和价格。阿里云的缓存刷新虽然有API,但默认缓存策略对动态页面不太友好,改起来步骤繁琐。

我兜底一句用的方案是双线并行:阿里云CDN管国内用户访问,Cloudflare管海外流量,同时在缓存key里加上User-Agent参数,把GPTBot、ClaudeBot这些AI爬虫单独拎出来,直接绕过缓存层。这么干以后,Kimi的抓取频率从每天2次涨到每天15次,豆包的收录也从0涨到7个页面。

说实话,我以前觉得CDN就是个加速工具,跟AI优化八竿子打不着。直到我用核子GEO的搜索引擎推送检测跑了一遍,发现我的AI引用率只有3.8%,而同行平均在15%上下,才意识到问题不在内容质量,在于AI爬虫根本拿不到动态数据不骗你。缓存策略改完之后,核子GEO的搜索引擎推送分数从41分跳到67分,虽然离优秀还远,但至少方向对了。

对了,如果你也做电商,记得把价格变动频率高的SKU单独设缓存规则,别一刀切。我因为偷懒统一缓存策略,有两天用户看到的还是旧价格,差点被投诉。

4天数据复盘:Kimi收录率67%,豆包43%,但别高兴太早

第四天早上,我把这四天的改动全部汇总了一遍,用核子GEO跑了一遍检测。看到结果的时候,说实话有点慌——不是数据太差,是涨得太快了。AI引用率从2.3%直接干到18.6%,翻了八倍。这速度比我预期快了整整两天。

Kimi这边表现最猛。品牌词能搜到官网首页+About页面,产品词能搜到三个核心SKU的详情页,甚至有一条长尾词”防泼水登山背包轻量款”直接进了Kimi的推荐引用源。豆包那边就差一些,能搜到产品分类页和两个博客文章,但产品详情页基本没进索引。我把两边抓到的URL拿出来一对比,发现豆包对Strapi生成的动态路由处理明显比Kimi保守,分类页因为结构简单所以被收录了,详情页的URL带了查询参数,豆包直接不抓。

但真正让我冒冷汗的是另一个发现。我拿昨天改过价格的一个SKU去豆包问,它回答的还是改价之前的数据。价格从199改成179,已经过去18个小时,豆包那边还是显示199。我赶紧用核子GEO查了一下这个页面的抓取时间戳,显示豆包的爬虫在价格更新前6小时来过一次,之后就没再来过。Kimi倒是没这个问题,改价后3小时就抓了新版本。

这说明什么?AI引擎对库存和价格的实时性要求比Google高得多。Google的爬虫基本是小时级到天级,但AI引擎的缓存策略更保守,一旦抓过就默认内容稳定,不会频繁回访。我上一轮测试里只做了结构化数据标注,没考虑动态内容推送,这步棋漏了。

列一下这四天的改动前后对比:首屏加载时间从3.4秒压到1.1秒;Product Schema覆盖从0涨到全部412个SKU;品牌词在Kimi的引用率从0涨到67%,豆包从0涨到43%;AI引用率整体从2.3%涨到18.6%后来才知道。成本方面,Cloudflare的CDN套餐一个月20美金,Strapi的SSR配置调整花了两个晚上,其他基本没花钱。

下一步的优先级我已经排好了。第一优先是解决豆包的价格同步问题——我准备用SSE推送价格更新通知,让爬虫在有变动时能收到信号,而不是等它自己回访。第二优先是把详情页的URL参数去掉,改成纯静态路径,让豆包的爬虫愿意抓。第三优先才是加大内容生产的量,因为现在收录率上来了,内容不够喂不饱这些索引。

别高兴太早,18.6%的引用率离60%的及格线还远着。而且我注意到豆包对旧数据的缓存,说明AI引擎在电商这种高频变动场景里,信任度建立比搜索排名慢得多。这轮测试做完,我反而更确认了一件事:GEO优化的核心不是内容,是让AI引擎觉得你这个站点”可靠且及时”。

避坑清单

先说只盯Kimi和豆包,把ChatGPT晾一边 我一开始就犯了这个错。Kimi收录率从12%拉到38%,挺高兴,结果ChatGPT那边还是查无此人。海外客户用ChatGPT搜你,毛都搜不到,转化率照样趴地上。检测时几个主流AI引擎全跑一遍,别偷懒。

再就是SKU页面不带Product Schema就上线 我500多个SKU,价格三天两头变。之前没加结构化数据,Kimi抓到的页面显示旧价格,客户点进来发现对不上,跳出率78%。后来把库存和价格做成动态Schema同步,AI引用率提了6个点。这玩意儿不是加分项,是及格线。

还有CDN选型只看国内节点,忽略海外覆盖 我纠结Cloudflare和阿里云,兜底一句选了阿里云。后来才知道。结果欧美客户通过ChatGPT访问页面,打开速度3.2秒,用户等不起。Cloudflare的全球节点对海外AI爬虫更友好,这点得认。电商站面向全球,就别省那点钱。

  1. 内容更新频率跟不上价格变动 AI引擎喜欢新鲜内容。我价格调整频繁,但页面更新滞后,Kimi抓到的还是上周的价格。后来用Strapi的Webhook自动触发页面重新生成,收录率才稳住。别让AI觉得你是个死站。

  2. 别忽视robots.txt里的坑 我之前为了SEO把一些参数URL屏蔽了,结果Kimi连带着把正常的SKU页面也拒了。索引量从8900掉到3200,我他妈当时就懵了。检查robots规则时,别一刀切,把动态参数和静态页面分开处理。

  3. 用核子GEO跑了一遍检测,才看清全局 说实话,光靠各平台后台的数据,我根本拼不齐全貌。用核子GEO跑了一遍检测,发现AI引用率低不光是收录问题,还有实体识别和语义匹配的短板。它能把各个AI引擎的可见性拉到一个面板上对比,省了我不少事。跨境这行,工具不嫌多,关键是得用对。