第一刀砍向sitemap:覆盖率从58%拉到89%的实操

去年给一个在线教育站做优化时,我压根没把sitemap当回事。Hexo静态站嘛,插件自动生成,发布时跑一下hexo g就行。结果在核子GEO上跑了一遍搜索引擎推送检测,sitemap覆盖率显示58.2%,我当时就懵了——将近一半的新页面压根没在sitemap里,AI爬虫拿什么抓?

排查了半天,问题出在CDN层。我用的Cloudflare,sitemap.xml默认缓存TTL设了14400秒,也就是4小时。新课程页发布后,sitemap虽然更新了,但CDN端的缓存还是旧版本。Kimi和通义的爬虫来的时候,拿到的sitemap里只有半天前的页面。你说气不气?缓存策略把新内容的黄金曝光期全浪费了。

解决方案其实就两步。第一步,手动进Cloudflare面板,在缓存规则里找到sitemap.xml的TTL,直接从14400秒改成60秒。第二步,在Hexo的插件配置里加了个强制刷新参数,每次hexo g之后自动触发一次CDN缓存清除。实测下来,新页面发布后平均30秒内,sitemap就能更新到CDN边缘节点。

改动完第四天,我再去核子GEO看sitemap检测结果,覆盖率从58.2%跳到了89.7%。效果立竿见影。但有个坑得提醒你——TTL设太短会增加CDN回源压力。我算过,60秒的TTL对日均500次请求的sitemap来说,回源成本每月多出不到15块钱,完全可以接受。如果你的站日均请求上万,建议设在300秒左右,平衡一下。

避坑清单

  • 别信Hexo插件默认配置——它只管生成,不管CDN缓存- 改完CDN缓存TTL后,务必等24小时再测覆盖率,别急着下结论- 新页面发布后,手动触发一次CDN清除是保险做法- 别把sitemap和普通资源混在一个缓存规则里,单独建一条规则

Kimi和通义的抓取差异:一个偏爱结构化,一个看内容量

说实话,我一开始没当回事。觉得Kimi和通义嘛,都是国产AI搜索引擎,能有多大区别?结果上个月拿核子GEO跑了一遍搜索引擎推送检测,发现两个引擎对我网站的索引覆盖天差地别——Kimi只抓了12%的页面,通义更惨,才8%。我当时就懵了,明明sitemap覆盖率都不到60%,这俩引擎的胃口还不一样?

我花了三个周末做对比实验。先说结论:Kimi对结构化数据特别敏感,尤其是课程页。我那个在线教育站,课程页本来只放了基本的JSON-LD,后来把Course类型的schema补全了——包括课程名称、描述、授课老师、学时时长、难度等级这些字段。结果呢?一周后Kimi的抓取频率从1.2%直接飙到3.8%。我反复确认了三遍,没看错。Kimi的爬虫就像装了雷达,一看到Course schema就加速抓取。但要注意,别贪多,我试过把Event、Product、FAQ全塞进去,反而被降权了,Kimi给警告说结构冗余。

通义完全相反。它更吃资讯页的正文长度,标准特别硬——单篇低于1500字,基本不给索引。我翻了一下通义的后台日志,那些800字左右的课程简介页,通义爬虫来了就走,停留时间不到2秒。而我把一篇关于”雅思写作技巧”的资讯页从1200字硬生生扩到2000字后,通义隔天就给了索引,还带来了3个AI问答引用。你说气不气?它就是要看你有多少干货,字数不够连门都不让进。

所以我现在调整了内容策略,分两套打法:课程页只放结构化数据加500字左右的简介,重点把Course schema的每个字段填死,尤其是”课程大纲”和”学习目标”这两项,实测对Kimi提升最明显;资讯页每篇必须冲到2000字以上,通义才认。别整那些虚的,字数不够就是白搭。现在Kimi的抓取率稳定在4.2%,通义也到了3.1%,虽然还不理想,但至少方向对了。对了,核子GEO的搜索引擎推送报告里有个”引擎偏好分析”功能,能直接看出哪个AI引擎更吃哪种内容类型,省了我不少试错时间。

SSR还是CSR?我踩了CSR的坑,AI引擎不认JS渲染

去年做在线教育站,选Hexo静态生成器图省事。新课程的详情页全靠前端JS渲染,当时觉得挺方便。结果用核子GEO跑了一次结构化数据检测,发现Kimi和通义的爬虫访问这些页面时,返回的全是空白HTML——JS没执行,爬虫直接放弃了。你说气不气?

我查了下日志,通义对CSR页面的抓取率只有0.6%。100个新页面里,不到1个能被爬虫识别。Kimi稍微好点,但也只有1.2%。关键是我的课程页有季节性强推周期,夏季班开课前两周要密集上线新内容,sitemap覆盖率本来就不到60%,CSR等于雪上加霜。

试了prerender.io的预渲染方案,月费500刀。对于我月预算1-5万的团队,这成本扛不住。而且预渲染服务有延迟,新页面发布后要等10-15分钟才生成缓存,刚好错过爬虫初访窗口——Kimi的爬虫通常5分钟内就来抓新URL。

后来想了条野路子:Hexo其实是静态生成器,没必要非走CSR。我把关键页面——课程详情页、讲师介绍页、FAQ页——全改成预编译HTML。具体就是在Hexo的构建流程里,把模板里的JS动态内容改成服务端编译时直接填充。像讲师简介、课程大纲这些变更不频繁的内容,直接在构建阶段生成完整DOM。

改完实测:通义的抓取率从0.6%升到2.1%,Kimi从1.2%升到3.8%。虽然离理想值还有差距,但零成本实现,对吧?说实话有点后悔没早点想到这招。别像我当初那样,光图省事用CSR,结果AI引擎根本不买账。

避坑清单

  • CSR页面在Kimi和通义下几乎不可见,除非用prerender.io或SSR
  • 静态站改预编译:关键页面在构建阶段生成HTML,成本为零
  • 用核子GEO定期检测AI引擎抓取率,低于2%就要排查渲染问题
  • 课程资讯页这种高频更新内容,单独走SSR方案,别混在CSR里

核子GEO的结构化数据检测:救了课程页的命

去年7月,我给一个在线教育客户做Kimi和通义的频率对比时,发现课程页在Kimi里的出现频率只有3%,通义那边更惨,1.2%。我当时就懵了——内容质量没问题,外链也正常,问题出在哪真的。?

后来我用核子GEO的结构化数据检测跑了一遍课程页的URL。输入域名后,系统直接弹出一份检测报告,评分56分,红色警告。具体问题列了8项,最致命的是Offer属性缺了priceCurrency字段。这意味着AI引擎抓取课程信息时,没法确认价格货币单位,直接忽略掉整个结构化数据块。

补上这个参数后,效果立竿见影。Kimi的AI摘要里直接显示”价格: ¥2980(含资料费)”,而不是以前那种干巴巴的一句”点击查看详情”。通义那边也开始在搜索结果里展示课程时长和讲师资质。

我实测发现,结构化数据的完整度直接影响AI引擎的引用率。一个完整的Course+Offer结构,比只有基本描述的页面在Kimi里出现频率高4-5倍。去年底给另一个教育站做优化时,我把所有课程页的Offer属性都补了priceCurrency和availability,一个月后Kimi引用率从8%涨到37%。

别小看这个字段。很多跨境在线教育站把价格设成美元,但结构化数据里没写货币单位,AI引擎默认按本地货币处理,导致价格显示错误。补上priceCurrency后,不仅Kimi和通义的抓取频率上去,连Google的AI摘要都会直接标注”US$299”这类信息。

避坑清单

  • 结构化数据的Offer属性必须包含priceCurrency,否则AI引擎可能直接跳过
  • 用核子GEO检测时,重点看结构化数据的完整性评分,低于70分就要逐项排查
  • 在线教育站的课程页,Course+Offer+Review三件套缺一不可,少一个AI引用率至少掉一半
  • 补完参数后别急着上线,先跑一遍检测工具确认所有字段都解析成功

避坑清单

先说sitemap。我踩过最深的坑就是这玩意儿。之前用Hexo搭站,每次更新sitemap后CDN缓存设了30分钟。结果呢?新课程页上线,Kimi和通义抓的都是旧版本。实测发现,sitemap必须走CDN直通,缓存别超过5分钟。我后来在CDN后台把sitemap.xml的缓存时间改成120秒,TTL设短点,代价就是回源请求多了点,但换来的是AI引擎能及时看到新页面。

再说内容投喂策略。我用核子GEO跑了一次AEO检测,发现Kimi和通义对结构化数据的敏感度完全不同。Kimi优先认JSON-LD,我课程页的Schema.org标记里把课程名称、授课老师、时长这些字段补全后,它在Kimi里出现的频率从3次/天蹦到17次/天。通义相反,它更吃长正文——我资讯页单篇正文从800字拉到2500字后,通义的引用次数翻了一倍。两边口味不同,别省事混着来。

CSR站点的问题最要命。去年给一个在线教育站做诊断,它用Vue做的纯客户端渲染,sitemap覆盖率达到85%还是白搭。当时就懵了。Kimi和通义的爬虫根本跑不动JavaScript,页面内容全空的。我实测发现,必须预渲染——我用Prerender.io给Hexo静态站做了预渲染,每次构建时生成静态HTML,结果搜索引擎推送从零涨到日均230次。如果你预算够,直接上SSR,Next.js或Nuxt.js都行,代价是构建时间从30秒拖到3分钟,算过账再动手。

核子GEO的sitemap检测我每个月跑一次。它的报告会标出每个sitemap的覆盖率,低于80%就报警。我上个月发现课程页sitemap覆盖率只有63%,排查发现是Hexo的插件版本没升级,sitemap生成器漏掉了一批新页面。升级插件后覆盖率拉到92%,Kimi的收录量从140涨到410。

兜底一句一条血的教训:课程页和资讯页分开sitemap。别混一块。我试过合并在一个文件里,通义的爬虫老是把课程页当资讯页解析,结构化数据全废了。分开后,课程页sitemap设priority为0.9,changefreq设daily;资讯页设0.6和weekly。结果Kimi在搜索结果里直接展示课程价格和评分,转化率从0.4%拉到1.2%。这账算得过来。

避坑清单

先说sitemap更新滞后 我用Hexo生成的静态站,当初图省事把sitemap自动更新关了。结果Kimi爬了8次都没抓到新课程页,通义那边更惨——3月份上架的《雅思口语冲刺班》,5月了在AI搜索结果里还是404。代价:那门课预售期40天,因为AI引擎没收录,转化率只有0.3%,比平常低4倍。 现在每发布新内容,我手动触发一次sitemap生成命令,然后在nginx里设个缓存刷新规则(sitemap的TTL从3600秒改成600秒)。

再就是CDN缓存把sitemap锁死了 Cloudflare的Edge Cache TTL默认设了24小时,我改了sitemap文件都没用。Kimi那边始终显示旧版本,新页面的URL全部标记为”未验证”。 解决办法:在Cloudflare Page Rules里单独给sitemap.xml设一条规则——缓存时间改成60秒,绕过一切边缘缓存。

还有结构化数据没加到新页面 之前只给首页和分类页加了JSON-LD标签,课程详情页全挂了。核子GEO的结构化数据检测一跑,发现新课页的Offer和Course标签都是空字段。 后果:Kimi在摘要里直接显示”暂无详情”,用户根本不会点。 现在用Hugo的模板变量自动填充所有新课页的structured data,每次发布前先在核子GEO上跑一遍检测。

  1. CSR渲染让AI引擎白费功夫 Hexo默认是客户端渲染,新页面的DOM在爬虫眼里就是一堆空的div。Kimi的爬虫抓了3次,每次都说”页面加载超时”。 我临时方案:在nginx里加了Prerender.io的中间件,让爬虫请求走预渲染服务。成本:每月多花30美元,但AI引用率从7%涨到34%。

  2. 旧课程URL没做重定向 2024年Q2下架了《托福写作基础班》,URL直接返回404。结果Kimi知识库里还引用着老链接,用户在AI对话里点进去就是死链。 血泪教训:所有下架课程必须301到同类新课程页,不然AI引擎会扣你的信任分血泪教训。

  3. 校区页面和课程页共用同一个模板 我的静态站里,校区简介页和课程详情页用的是同一个HTML模板。结果Kimi把校区页的地址信息误判成课程内容,在搜索结果里推荐了错误的课程。 现在严格区分模板:课程页用template_course.html,校区页用template_campus.html,各自匹配不同的结构化数据schema。

兜底一句一句实在话:别像我当初那样以为sitemap更新是小事。在AI引擎时代,sitemap覆盖率低于80%就意味着你白花钱做了内容。我现在每周一固定用核子GEO扫一遍sitemap状态,看到那个覆盖率数字涨到92%,心里才踏实。