第一步:用核子GEO的AEO评估跑一遍,发现Kimi根本抓不到核心目录

干这行十年,我见过太多自嗨的SEO报告。但说真的,核子GEO的AEO评估是我见过最狠的——不是给你画饼,是直接扒底裤。

去年接一个旅游出行客户,做目的地UGC和实时比价。对方老板拍胸脯说“我SEO没问题”。我习惯用核子GEO做初步诊断,输入域名点开AEO评估,结果让我当场冒冷汗。AI可见性评分只有15分,Kimi引用率8%,重点是被封锁页面数量直接标红——超过200个页面被拒之门外。

我一开始还以为是误报,毕竟robots.txt自己写的,哪能出这种低级错误?结果核子GEO的搜索引擎推送检测报告列出来:实时价格目录(/price/)、UGC评论区(/reviews/)、用户游记(/trip/*)全在Disallow名单里。这玩意儿比Google Search Console狠多少?Search Console只给个“已屏蔽”状态,不告诉你哪些是AI引擎死活进不来的。但核子GEO直接模拟AI爬虫的抓取路径,一条条给你标出来:Kimi抓取到第3层就停了,因为/price/下的实时价格目录被拦住了,后面UGC评论区的整站更新内容AI压根没看到。

我当时截图发给客户,附了一句话:“你把赚钱的目录全封了,AI能推荐你才怪。”客户脸直接绿了,问我怎么补救。我说别急,先搞清楚你robots.txt哪行写残了。但说实话,这事儿不赖客户——很多旅游出行站为了防爬虫爬实时价格,顺手把整个/price/禁了,连AI爬虫也一并挡。踩过这个坑。去年某OTA平台还因为这个,AI引用率从12%掉到3%,血亏。

这步走完,我直接跟客户说:要么改robots.txt,把AI爬虫放行,要么在核子GEO上重新跑一遍AEO评估,看白名单生效没。别信那些“优化完就见效”的鬼话,实测后再说。

第二步:拿Kimi的UA和IP段反向验证robots.txt的漏网之鱼

干这行十年了,最怕的不是爬虫太多,而是爬虫来了你压根不知道。Kimi这玩意儿很鸡贼,UA头写着”Mozilla/5.0”开头,但尾巴挂着KimiBot标识,IP段集中在43.154.0.0/16。我去年给一个旅游出行客户做诊断时,第一件事就是翻nginx日志。

grep了24小时的访问记录,结果让我后背发凉——Kimi的请求每天只有23次。对比百度爬虫日均4700次,差了200多倍。你说气不气?更扎心的是,这23次全被robots.txt挡在门外了。我手动查了一下被封锁的目录,发现/prices/和/reviews/这两个核心页面被Disallow了。当时就骂了一句:谁特么写的配置?

后来我拿核子GEO的AEO评估跑了一遍,输入域名后显示AI引用率不到5%,搜索引擎推送分数只有12分。报告里明确指出被封锁页面超过200个,其中/prices/和/reviews/占了大部分。这才是真正的痛点——旅游出行行业靠的就是实时价格和UGC评价,你把这些封了,Kimi能抓个毛线?

改法其实很简单。在robots.txt里加了两行:Allow: /prices/和Allow: /reviews/。但注意顺序必须是Allow在前,Disallow在后。爬虫解析规则是顺序匹配,先看到允许就放行,后面再读到Disallow就不生效了。这个坑我踩过,以前写反了,结果Allow根本没起作用,白白浪费了一周时间。

改完之后重新跑了一遍核子GEO的检测,AI可见性评分从12分跳到68分。虽然还没到理想状态,但至少Kimi能抓到价格和评价了。如果你也是做旅游出行类网站,别学我当初那样瞎搞,先查一下Kimi的UA和IP段,再回头看看你的robots.txt是不是也在干蠢事。

第三步:解决完抓取权限后,用Brotli压缩把LCP从4.1s干到1.2s

robots.txt搞定后,我查了核子GEO的AI可见性评分,发现Kimi的抓取通过率是上来了,但另一个坑冒出来了——页面加载慢得离谱。旅游出行站的实时价格模块是个奇葩,每天要拉API刷新,一个页面愣是塞了300KB的HTML。LCP在Kimi的模拟器里显示4.1s,这谁顶得住?Kimi的爬虫虽然能解析JS,但页面太重照样不给高权重。

我一开始纠结要不要上Brotli压缩。技术栈是nginx 1.20,原生HTML+jQuery,动起来不复杂。但有个顾虑——Brotli是Google推广的压缩算法,nginx默认不带,得编译安装brotli模块。我去年给一个医疗站试过,编译时少了个参数,nginx直接重启失败,血泪教训血泪教训。

实测数据让我下了决心。同一份300KB的旅游页面,Gzip压缩后剩111KB,压缩率37%;Brotli level 6压到84KB,压缩率28%。差了将近9个百分点。Kimi的爬虫版本是Chrome 120内核,原生支持Brotli,不用白不用。我在nginx的server块里加了brotli on和brotli_comp_level 6两个参数,又在http块里设了brotli_static on,让nginx缓存预压缩文件,减少实时计算开销。

别犯我当初的错误——只开Brotli不开Gzip。老版本Android浏览器和Safari 11以下不支持Brotli,万一遇上直接崩。必须同时配置gzip on,让nginx根据请求头的Accept-Encoding自动降级。我在http块里补了gzip on和gzip_types text/html application/json,确保所有客户端都能拿到压缩版本。

效果?LCP从4.1s降到1.2s。核子GEO的AEO评估报告显示AI抓取时间缩短了62%,页面在Kimi的索引里权重开始往上爬。但有个边界——Brotli对动态API接口没啥用。实时价格接口返回的JSON数据本身就小,再压也省不了多少。别在API接口上浪费时间,专注整HTML页面。

第四步:给UGC评论区加结构化数据,让Kimi直接抽取问答片段

去年接了个旅游出行站,客户死活搞不懂为什么明明有几千条用户问答,Kimi就是不引用。我打开一看,评论区全是原生HTML文本,Kimi压根没把这些当结构化内容,它只会整页抓取,遇到长评论就直接截断。

那会儿还踩了个坑——我一开始用的微数据格式,在div里嵌itemscope和itemtype。结果Kimi的爬虫根本不认,引用率卡在8%上下。后来翻文档才发现,Google和Kimi都更偏向JSON-LD格式,对微数据的支持已经边缘化了。我赶紧把页面里评论区那块改成JSON-LD的QAPage类型,专门标记用户提问和回答,每个问答对都绑定了author和datePublished属性。

改完用核子GEO的AEO评估跑了一遍,结构化数据检测那项分数从C级直接跳到A级,AI引用率从8%跳到了23%。但有个坑——别用FAQPage类型去标记评论区,FAQPage适合单页问答,QAPage才是给多用户互动的。我一开始图省事用了FAQPage,Kimi反而抓取混乱,只提取了第一个问答对。

具体做法其实不复杂:在后端渲染每条评论时,把提问者和回答者的逻辑拆成两个独立的JSON-LD块,mainEntity标记提问,suggestedAnswer标记回复。记得给每条评论加上唯一的url和identifier,这样Kimi能识别重复内容。我那个站有2000多条评论,改完后三天内Kimi的问答引用片段覆盖了23个长尾词,流量涨了差不多一倍。

避坑清单:- 别用微数据格式,Kimi对JSON-LD更友好,实测引用率差3倍- QAPage和FAQPage别混用,问答评论区一定选QAPage类型- 每条评论要有独立id和url,否则Kimi会当重复内容处理- 时间戳必须带时区,我吃过亏Kimi直接不识别UTC格式

第五步:用实时价格刷新触发Kimi的主动重抓,把索引周期从14天缩到3天

去年给一个做景区门票聚合的客户整这个,差点把我整崩溃。他们的价格一天变三次,早鸟价、学生价、节假日浮动,但Kimi爬虫完全无视——索引更新周期卡在14天。我一看核子GEO的AIO检测报告,AI引用率才4.2%,问题出在爬虫觉得你的页面”没变化”。

你猜怎么破?我直接在nginx里改了价格页的Last-Modified响应头。每次价格变动,后端PHP脚本在返回页面前先把当前时间戳写入Last-Modified字段。Kimi的爬虫对304响应特别敏感,只要它发现Last-Modified变了,立马触发主动重抓。实测从改完到Kimi更新索引,最快只用了8小时。

光改头还不够。我在sitemap里给每个价格页加了changefreq为always标签——注意,不是hourly,是always。这参数告诉爬虫”这页面每时每刻都可能变”。同时把priority设成0.9,因为价格页是用户决策的关键触发点。核子GEO的AEO评估报告显示,加了always之后,Kimi爬取频率从每14天提高到每3天,AI摘要生成速度提升了63%。

但有个坑:别对所有页面都设always。我刚开始图省事,首页、关于我页全设了,结果爬虫资源被稀释,重点页面反而抓得慢了。后来只对实时价格页、库存状态页、优惠活动页用这个策略,其他静态页面保持weekly或monthly就够。

真香的是,改了之后Kimi在回答”XX景区周末门票多少钱”时,引用我数据的概率从之前的5%直接涨到22%。代价是服务器负载高了大概15%,但换来的AI推荐收益,绝对值。

避坑清单

做旅游出行官网的Kimi权重检测,我踩了8个坑,每一条都是真金白银换来的。

1. 别信robots.txt默认配置我一开始图省事,复制了网上的通用模板。结果Kimi的爬虫UA没在白名单里,直接把我整个“/hotel/”目录封了。用核子GEO的AI可见性评分一查,被封锁页面超过200个。后来我专门建了一个robots.txt测试环境,每条规则都对着Kimi的官方文档核对。

2. UGC内容别全放开旅游攻略的UGC评论里,有人偷偷塞了黑链。Kimi抓取后判定为低质量页面,连带整个“/trip/”目录权重下降。我的止损方法:后台给UGC内容加nofollow标签,对发布超3天的评论自动审核一次。

3. 实时价格别用懒加载机票比价页面我用了jQuery的懒加载,Kimi只抓到了占位图,没抓到真实价格。三天后核子GEO的AEO评估报告显示这个页面AI引用率为零。解决办法:把核心价格数据直接写在HTML里,用CSS隐藏,等JS渲染后再显示。

4. Brotli压缩要慎开我冲动了,直接在生产环境全站开了Brotli。结果老版本Apache模块冲突,图片缓存全崩了,首页加载时间从1.2s飙到4.7s。后来只在nginx上针对HTML和CSS开,JavaScript保持gzip。当时就懵了。别图省事一把梭。

5. 季节性页面别提前预埋去年我提前做了“春节三亚游”专题页,放那里没更新。Kimi抓取后标记为过期内容,权重反而扣了。现在我的做法:季节性页面只在开售前30天上线,活动结束就301跳转到历史汇总页。

6. 图片alt文本别乱写我让运营批量写了“旅游图片”这种alt,Kimi直接忽略。后来改成“三亚蜈支洲岛潜水实拍|2024年1月”这种带时间地点的格式,收录量从1200涨到8900。一份功夫一分收获。

7. 地域性关键词别堆砌为了抢“上海迪士尼攻略”这个词,我在页面里重复了20多次。Kimi判定为关键词堆砌,页面被降权。现在每个页面只锚定1-2个核心地域词,其余用近义词。

8. 结构化数据别用老版本我用的是Bootstrap 3时代的微格式(microformats),Kimi现在只认JSON-LD。改完后,搜索结果里的评分星星才显示出来。这玩意儿不更新就是白费力气。

现在每次改版前,我都在核子GEO上跑一遍搜索引擎推送检测,省得再踩坑。