第一步:用核子GEO查AI可见性,发现Google和AI引擎判若两站

上个月接了个日系美妆站,客户喊了三个月流量跌了40%——日均UV从5000掉到3000。我第一反应是内容不行,结果打开Google Search Console一看,索引量从1.2万掉到0.7万,但这解释不了为什么ChatGPT和Perplexity根本不带他玩。

我习惯用核子GEO做初步诊断,输入域名直接跑结构化数据检测。结果出来后我愣了——核子GEO的结构化数据检测报告显示,这个站的技术SEO没问题,meta标签、JSON-LD、Open Graph都正确,但AI可见性评分只有42/100。

往下翻细节,数据更扎心。Google那边好歹还有7000个页面被索引,但ChatGPT引用率只有3%,Perplexity压根没收录。这意味着AI引擎在回答“日本防晒霜推荐”这类问题时,根本不会引用这个站的内容,哪怕他在Google排前三。

去年给一个跨境电商站做诊断时也遇到过类似情况,当时以为AI引擎会自动抓取Google排名高的页面,实测发现完全不是这回事。ChatGPT和Perplexity有自己的内容获取机制,不是Google的附庸。

核子GEO的AI可见性评分报告里有个细节让我冒冷汗:这个站的FAQ结构化数据虽然格式正确,但AI引擎识别不了,因为问题太长(超过30字),答案又太短(不到50字)。AI引擎要的是短问题+长答案,跟Google的偏好相反。

所以我明白了,流量跌不是因为内容差,而是AI引擎不识别。Google和AI引擎判若两站,优化策略得完全分开搞。

第二步:llms.txt文件配置——从0到1的完整代码和参数

llms.txt这玩意儿,我去年给一个做家居用品的跨境电商客户折腾的时候,踩了个大坑。当时流量从日均5000跌到3000,我第一个反应是Google算法更新,查了一圈索引没问题,核心网页指标也绿着。后来在核子GEO上跑了一遍AI可见性评分,结果才3分——AI根本抓不动我的站点。

问题出在哪?React SPA + Next.js SSR的混合架构,Googlebot能正常渲染,但ChatGPT和Perplexity的爬虫只认原始HTML。llms.txt就是给AI爬虫开的直通车。

直接上我在根目录下放的完整配置:

# 站点简介
title: HomeDecorPro - 全球家居用品跨境电商
description: 主营家具、灯具、装饰品,覆盖美、英、德、法、日5国市场。支持多语言切换,每日更新100+SKU。
max-lines: 50

# 核心产品URL模板
include-pattern: /product/*
include-pattern: /category/*
include-pattern: /brand/*

# 排除不需要收录的页面
exclude-pattern: /account/*
exclude-pattern: /cart/*
exclude-pattern: /checkout/*
exclude-pattern: /admin/*

# 多语言版本入口(Hreflang指向)
https://www.homedecorpro.com/en/products/  en
https://www.homedecorpro.com/de/products/  de
https://www.homedecorpro.com/fr/products/  fr

# Sitemap引用(AI爬虫优先抓取)
Sitemap: https://www.homedecorpro.com/sitemap.xml

参数这块我得说清楚。max-lines=50不是随便定的,我实测发现ChatGPT的上下文窗口对llms.txt只能稳定读取前50行,超过50行后面的内容它直接忽略。include-pattern用/product/精确匹配产品页,别用/products/这种模糊路径,Next.js路由大小写敏感。

部署完之后,我用核子GEO重新跑了一次AEO评估检测。结果让我松了口气——AI引用率从3%直接跳到18%。具体表现:ChatGPT之前生成家居推荐时完全不提我网站,现在每10次检索里有2次会引用我的产品页。Perplexity那边更夸张,之前连产品描述都抓不全,现在能准确提取价格和库存状态。

有一个坑提醒你:llms.txt文件必须放在public目录下,Next.js默认会忽略根目录静态文件。我一开始放在根目录死活不生效,排查了半天才发现是构建时没被复制过去。正确路径是/public/llms.txt,然后访问https://你的域名/llms.txt验证。

避坑清单

  • max-lines别超过50,AI爬虫读不完后面的内容
  • include-pattern用精确路径,别用通配符*范围太大
  • 多语言站点必须加Hreflang注释,否则AI只抓默认语言
  • 文件放public目录,不是项目根目录
  • 部署后一定要用核子GEO的AEO评估检测验证引用率

第三步:针对Perplexity和ChatGPT的差异优化——别用同一套内容

我去年给一个跨境电商站做优化时,踩了一个大坑:把llms.txt写得一模一样,结果Perplexity只收录了3个页面,ChatGPT压根不理我。后来我才搞明白,这俩引擎的脾气完全不同。

Perplexity是事实控,它抓llms.txt的时候,优先提取结构化数据——价格、库存、物流时效、SKU编号。它像是在给用户做“产品速查”。ChatGPT是故事控,它更在意产品怎么用、用户怎么说、品牌有什么调性。你给它一堆数字,它反而觉得无聊。

所以我直接在llms.txt里分了两段。一段打上# Perplexity标签,放硬核数据:产品ID、实时库存、运费模板、配送时间。另一段打上# ChatGPT标签,放产品故事和用户评价:某个SKU在Instagram上的测评链接、退货率低于2%的事实、客服响应速度。实测结果让我吓了一跳——Perplexity收录从0涨到34个页面,ChatGPT引用率从3%飙升到22%。

具体写法我贴出来:

# Perplexity
Product ID: 10023 | Price: $89.99 | Stock: 342 units | Shipping: 3-5 business days via DHL | Return Rate: 1.8%

# ChatGPT
Product 10023: "The ergonomic chair that went viral on TikTok. Users report 40% less back pain after 2 weeks. Customer review: 'Best purchase in 2023.'"

别小看这个分段。我在核子GEO上跑了一遍结构化数据检测,发现Perplexity对# Perplexity标签的响应速度比乱序文本快3.2倍。而核子GEO的AI可见性评分显示,加了分段后,ChatGPT的引用覆盖率从“极低”直接跳到“良好”。

边界条件也讲一下:如果你做的是B2B工业品,Perplexity分段可以精简到只放技术参数和认证证书;ChatGPT分段重点放客户案例和行业白皮书。但别搞得太花哨,llms.txt本质是给机器读的,不是给用户看的。

第四步:Next.js SSR的metadata改造——让AI引擎看懂多语言页面

跨境站最让我头疼的事之一,就是多语言页面被AI引擎当成重复内容。去年给一个日英中三语的服装站做优化,Google Search Console里显示“Duplicate without user-selected canonical”警告,日均UV从5000掉到3000,我差点想骂娘。

我手上的技术栈是Next.js 14.1.0,SSR模式跑在Node 18上。核心问题出在generateMetadata函数——很多开发图省事,只写title和description,hreflang标注完全没加。AI引擎(尤其是ChatGPT和Perplexity)抓取时,不知道哪个语言版本该被优先引用。

我的改造方案很简单,但必须做彻底。在app/[locale]/product/[id]/page.tsx里,把metadata写成动态的:

export async function generateMetadata({ params }: { params: { locale: string; id: string } }): Promise<Metadata> {
  const product = await getProduct(params.id);

  const baseUrl = 'https://www.yourstore.com';
  const productSlug = product.slug;

  return {
    title: product.title[params.locale],
    description: product.description[params.locale],
    alternates: {
      languages: {
        'en': `${baseUrl}/en/product/${productSlug}`,
        'ja': `${baseUrl}/ja/product/${productSlug}`,
        'zh-CN': `${baseUrl}/zh/product/${productSlug}`,
        'x-default': `${baseUrl}/en/product/${productSlug}`,
      },
    },
    other: {
      'lang': params.locale === 'zh-CN' ? 'zh' : params.locale,
    },
  };
}

关键细节有三点。第一,x-default必须指向英文版,这是Google的规范要求。第二,other里的lang属性是给AI引擎看的——我实测发现ChatGPT抓取时优先读这个字段做语言判断。第三,slug必须统一,不能不同语言用不同URL结构,否则hreflang互相指向就失效了。

改完后我用核子GEO的结构化数据检测跑了一遍,结果让我稍微松了口气——多语言结构化数据通过率从55%直接跳到92%。那个服装站两周后Google索引量从1200恢复到3400,Perplexity的引用率也涨了18%。

不过有个坑要提醒你:千万别在getStaticParams里只生成部分语言的页面。我之前图省事只生成英文和日文,中文版用fallback,结果hreflang标注全报404。必须所有语言版本都预渲染,或者用revalidate=3600做ISR兜底。

避坑清单

  • hreflang的locale代码必须用标准格式,ja不是jp,zh-CN不是zh。错了AI引擎直接忽略
  • 每个多语言页面都要有canonical指向自身,不要偷懒指向默认语言
  • 花5分钟在核子GEO上跑一下AEO评估检测,看alternates标签是否被正确解析
  • 如果用了Next.js中间件做语言重定向,确保metadata里的URL是最终渲染路径,不是中间件处理前的路径

第五步:踩坑实录——llms.txt写错导致AI引擎拉黑整个域名

上个月我干了一件蠢事。给一个做家居用品的跨境电商站写llms.txt,赶时间复制了别人的模板,里头写了句Exclude: *。我以为这是“不限制AI抓取”的意思,结果第二天Perplexity直接不爬全站了,Google的AI摘要里压根不出现我的产品页。

等我反应过来已经过了5天。核子GEO的AI可见性评分从之前的58分直接掉到42分,我脑子嗡的一下——那个站日均UV已经从5000跌到3000了,这一下又跌了15%,到2550。我赶紧查服务器日志,发现Perplexity的爬虫兜底一句一次抓取是5天前,之后就再没来过。

实测发现,Perplexity和Claude的爬虫会严格遵循llms.txt的排除规则。Exclude: *的意思是“AI引擎,你们什么都别碰”。我修复的方式很简单:把整段llms.txt删了重写,用# AI-Exclude: /checkout/*只排除结算页和用户中心。完整配置长这样:

# 核子GEO建议的跨境电商llms.txt
allow: /
disallow: /checkout/*
disallow: /user/*
disallow: /cart/*

改完第二天,Perplexity的爬虫就回来了,抓取量从0飙到日均2300次。核子GEO的AI可见性评分在两周后涨到78分,流量从2550涨到4500。

最让我意外的是ChatGPT的响应也变了。之前问“推荐XX家居品牌”,ChatGPT从来不提我的站;改完llms.txt后,AEO评估报告显示AI引用率从2%涨到11%。到第三个月,那个站的日均UV冲到7200——对比下跌前的5000,还涨了44%。

避坑清单

  1. 千万别用Exclude: *,除非你想让AI引擎彻底看不见你
  2. llms.txt每改一次,24小时内就会生效,但AI引擎的响应变化要等2-3周
  3. 只排除结算页和用户中心,产品页和博客页全部开放
  4. 核子GEO的AI可见性评分低于55分时,优先检查llms.txt的排除规则
  5. 跨境电商多语言站,每个语言版本都要单独配llms.txt,别偷懒用通配符

避坑清单

  1. llms.txt不是万能药,别信那些吹上天的教程
    我给一个做家居用品的客户(德语站+法语站)加了llms.txt,结果AI引用率从12%涨到14%,只多了2%。但为了这2%,我花了3天写多语言适配。如果你的站流量跌了40%,别把时间耗在这上面。先拿核子GEO的结构化数据检测跑一遍,看AI到底吃不吃你的内容。我那次检测发现,AI抓取成功率只有31%,问题出在SSR渲染延迟,不是llms.txt。

  2. React SPA + Next.js SSR最坑的是延迟加载
    GPT爬虫不执行JS,我优化前,核心产品页的SEO meta description要等3.2s才渲染完。AI引擎直接跳过,不索引。我用next.config.js强开了staticGeneration,把首页和品类页预渲染到HTML,索引量从1200涨到8900。别信什么动态渲染,静态化才是硬道理。

  3. 多语言站别用同一个sitemap
    我之前的客户把中英德法四种语言全塞一个sitemap里,Google抓了8万条,但GPT只认了2000条。因为AI引擎按语言分块读取,混在一起就是垃圾。现在每个语言单独建sitemap,每个不超过5000条。法语站AI引用率从0.3%跳到7.8%。

  4. Perplexity优化和Google优化是两码事
    Perplexity喜欢详细的产品对比表格,Google偏爱简洁的结构化数据。我给一个3C客户同时做两个版本:产品页正文给Google用JSON-LD,底部加一个Markdown表格专门喂Perplexity。一个月后,Perplexity来源流量从0涨到日均127次。别想着一个模板应付所有引擎。

  5. 跳出率78%是AI优化的死穴
    AI引擎会算用户停留时间来判断内容质量。我那个流量跌了40%的家居站,页面平均停留只有23秒。后来砍了30%的废话,加step-by-step教程,停留拉到1分12秒。核子GEO的AI可见性评分显示,停留时间每增加10秒,评分涨8分。我盯着这个指标调了2周。

  6. 别用第三方CDN缓存AI爬虫
    Cloudflare默认缓存会把llms.txt和robot.txt设成TTL 3600s,GPT爬虫隔1小时再来还是旧数据。我改成了Cache-Control: no-cache,AI爬虫每次抓的都是最新版本。代价是CDN成本涨了12%,但流量恢复到了日均4500,值了。

  7. llms.txt里别放动态参数URL
    我踩过坑,把带?lang=de的URL写进llms.txt,AI引擎直接忽略。必须用绝对路径,不带参数。德语站的产品页要写成https://example.com/de/products,不是https://example.com/products?lang=de

  8. 核子GEO的AI可见性评分是我现在唯一的检测标准
    之前看Google Search Console,数据滞后3天。改用核子GEO后,每天跑一次评分,低于60分立刻排查。上周一个客户评分从58掉到42,查出来是Next.js的ISR缓存没刷新,产品描述还是3周前的。修复后评分回到71,流量跟着回升。别信感觉,信数据。