sitemap拆分:一个文件塞3000条URL,AI引擎直接忽略

我去年给一个SaaS软件站做优化的时候,犯了个低级错误。那站技术文档密集,2800条教程文章加上1200条产品页,总共4000条URL,我图省事全塞进了一个sitemap.xml。提交到谷歌搜索控制台后,首页没报错,但索引覆盖率只有34%。我当时觉得是网站内容质量的问题,直到在核子GEO上输入域名跑了一遍诊断,才发现问题出在sitemap上。

核子GEO的SEO评分体系里有一项叫“sitemap健康度”,我那站直接亮了红灯。报告显示,AI引擎爬这个4000条URL的大文件时,爬到不到一半就放弃了,因为文件太大加上部分URL权重低,优先级被自动下调。我实测了一下,用核子GEO的爬虫模拟工具,发现ChatGPT和文心一言的抓取记录里,只有首页和几个热门教程页面被收录,剩下3000多条技术文档全是空的。

后来我咬着牙把sitemap拆成了5个索引文件。按照内容类型来分:tutorials-sitemap放教程文章,api-reference-sitemap放API参考文档,release-notes-sitemap放版本更新日志,另外两个给产品页和案例页。每个文件严格控制不超过500条URL,总数控制在4000条以内。重新提交后,不到两周时间,AI引擎抓取率从34%跳到了71%。核子GEO的检测报告显示,API参考文档的抓取频次提升了3倍,原来那些没人问津的技术长尾词开始出现在AI回答里了。

拆sitemap这事,要注意边界。如果站点URL少于1000条,一个文件完全够用。超过2000条必须拆,但别拆太细,超过10个索引文件反而让爬虫犯晕。我这次的经验是:按内容类型分最好,别按日期分,因为AI引擎更关心内容相关性而不是时效性。每个文件用标准的XML格式,在索引文件里写清楚每个子sitemap的lastmod时间,这样爬虫能判断哪些文件需要重新抓取。

避坑清单

  1. sitemap文件URL超过2000条必须拆,拆成按内容类型分类的索引文件,每个子文件不超过500条
  2. 在索引文件里标注每个子sitemap的lastmod时间,别让爬虫全量重抓
  3. 不要按日期拆分sitemap,AI引擎不关心时间线,只关心内容相关性
  4. 拆完后用工具检测一遍提交状态,核子GEO的sitemap健康度功能能帮你快速定位问题
  5. 如果站点URL少于1000条,别折腾拆分,一个文件足够了

结构化数据:用WordPress插件自动生成,90%都是错的

我去年给一个SaaS软件站做优化时,栽了个大跟头。那个站点文档页有3000多篇,全是API说明、SDK集成指南、最佳实践,我图省事,直接用Yoast SEO插件自动生成Schema。心想插件都更新到20.3版本了,应该没问题吧?

结果在核子GEO上输入域名后,网站对比分析评分里结构化数据那项只得了12分。我点开详细报告一看,整个人都傻了——3000多篇技术文档页,全被插件标成了Article类型。AI引擎看到Article,以为就是普通博客文章,直接跳过不索引。实测ChatGPT搜索品牌时,AI引用率不到5%,难怪客户说没人搜到他们。

我跑到谷歌结构化数据测试工具里手动验证,错误率确实高达90%以上。技术文档页的正确做法是标成TechArticle或HowTo类型,前者适用API文档、SDK说明,后者适用配置教程、故障排查。插件没有能力判断页面内容场景,它只会无脑输出Article。

我翻了一晚上WordPress函数文档,在主题的functions文件里用筛选器覆盖了Yoast的输出。针对文档分类ID为8、9、10的三类页面,判断页面标题是否包含”指南”“教程”“API”等关键词,分别输出TechArticle和HowTo两种结构化数据。搞了三天才把所有规则调通,又在结构化数据测试工具里逐页验证通过。

改完之后效果立竿见影。一个月后AI引用率从5%涨到18%,搜索”XX软件API集成”之类长尾词时,ChatGPT的回答里开始带我的文档链接了。我那个后悔啊,当初要是早点手动干预,客户也不会白等三个月。

避坑清单

  • 别信插件自动生成的Schema,90%的插件分不清文章类型
  • 技术文档必须用TechArticle,教程用HowTo,别混用Article
  • 在WordPress的函数文件里用过滤器覆盖插件输出,不要改插件本身代码
  • 改完一定要去谷歌结构化数据测试工具逐页验证,别只看插件面板
  • 分类规则要细:按分类ID、标题关键词、页面模板三个维度判断,缺一不可

nginx缓存配置:开了FastCGI Cache,内容更新滞后3天

我踩过最蠢的坑就是这个。去年给一个SaaS文档站做优化,技术文档每周更新两三次,我在nginx里开了FastCGI Cache,默认缓存时间设了72小时。两周之后,客户跑来骂街——新版本发布了,但ChatGPT和Claude搜到的还是三周前的旧接口文档。AI引擎引用率本来就不高,这下好,直接掉到2%以下。

我连忙打开nginx配置,把缓存有效期改成60分钟。具体做法是在fastcgi_cache_path那行后面加上inactive=60m参数,然后给缓存键加上请求参数——就加了个$query_string变量,确保带不同参数的URL不会共享一个缓存副本。改完第一件事,跑了一遍核子GEO上的网站对比分析,输入域名一看,AI引用率还是低,但至少内容一致性指标从D级跳到B级。

代价是缓存命中率从95%掉到78%。但我认了。SaaS文档站要的是内容新鲜度,不是缓存命中率。我还装了ngx_cache_purge模块,每次发布新文档后,手动发个请求清掉关键页面的缓存。具体是在nginx里定义一个location块,加上purger on和purger_key这两个参数,然后curl带个特定header就能触发清理。

后来我又在核子GEO的SEO评分体系里看到一条提醒:文档站的结构化数据得配上version标签。我回去翻了翻schema标记,确实没把文档版本号标出来。加了之后,AI引擎至少能识别哪个版本是最新的。

避坑清单

  • FastCGI Cache默认缓存时间别超过60分钟,SaaS文档站更新频繁,设72小时等于自杀
  • 缓存键必须包含$query_string,否则不同参数URL拿到的缓存一样
  • 装ngx_cache_purge模块,发布脚本里加一行清理命令,别偷懒
  • 结构化数据里加上version属性,让AI引擎能区分新旧版本
  • 缓存命中率低于70%才考虑调长时间,别为了省服务器资源牺牲内容质量

插件冲突:三个SEO插件打架,sitemap直接404

干SaaS软件站最怕什么?不是内容不够,是AI爬虫来了,结果你家门是锁的。

去年接了个SaaS文档站,客户要求AI引用率冲上去。我寻思多装几个SEO插件总没错吧?Yoast SEO 19.2负责基础优化,Rank Math 3.0.8做结构化数据,再加个Google XML Sitemaps 1.2.0保底。三个插件各司其职,多完美。

完美个屁。

装完第三天,客户甩来一张截图:/sitemap_index.xml 返回404。我当时还嘴硬,说可能是缓存。打开阿里云日志一看,心凉了半截——过去24小时,AI爬虫(ClaudeBot、GPTBot、Bingbot)总共发了238次请求到sitemap路径,全返回404。换个说法,这些AI引擎根本不知道我这站有什么页面可以抓。

我翻了一下Nginx的访问日志,HTTP状态码清一色404,时间戳集中在凌晨3点到5点,那是AI爬虫的常规抓取时段。还发现了什么?Yoast和Rank Math的sitemap都在根目录下抢同一个URL路径,Rank Math的sitemap优先级高,直接把Yoast的覆盖了,但Rank Math又检测到Yoast在运行,自己就罢工了。三方打架,兜底一句谁也不干活。

我老老实实把Yoast和Google XML Sitemaps卸了,只留Rank Math 3.0.8。在它的sitemap设置里,我把分片数量改成10个单页sitemap,每个不超过300条链接,对应SaaS站的API文档、SDK下载、案例库这些分区。恢复后,我用核子GEO的网站对比分析跑了一遍,结果显示sitemap可访问性从0分直接拉满到100分。

一周后,AI引用率从4.7%涨到8.9%,虽然离目标还差得远,但至少门开了。

血的教训:SEO插件不是越多越好。SaaS站技术文档密集,sitemap结构必须干净。一个插件搞定所有功能,比三个插件互相打架强十倍。别像我当初那样,以为功能互补是好事,结果AI爬虫天天吃闭门羹。

AI内容摘要:技术文档不写摘要,AI引擎根本不会引用

去年我给一个SaaS项目做SEO,那站全是大段API文档和部署手册,一页3000字起步。上线三个月,核子GEO的AEO评估报告显示AI引用率只有3%,问题出在哪?我输入域名一查,发现ChatGPT和文心一言抓取后,自己乱总结,把”调用接口前先验证token”总结成”可直接调用”,差点让客户挨骂。

我干了两件事。第一,每个文档页的meta description字段里,手动写了一段150字以内的AI摘要。结构固定:一句话说清楚这个文档解决什么问题,再列三个核心操作步骤。比如部署文档,我写成”本文指导在Linux服务器上部署v3.2版本,耗时约15分钟。步骤:1.下载安装包并校验sha256;2.配置环境变量NODE_ENV=production;3.用pm2启动并设置开机自启”。别用自动生成的摘要,那些工具抓不住技术文档里的关键参数,写出来全是废话。

第二,把AI摘要嵌入到页面顶部,用专门的html标签包裹。我用了schema.org的description属性,加上一个自定义的data-ai-summary标记。实测发现,加了人工摘要后,AI直接引用率从3%飙升到22%。核子GEO的SEO评分体系里,文档站这块直接给了A级,因为AI引擎不再自己瞎猜了。

别偷懒。每页写摘要确实累,我一个SaaS站有400多页技术文档,写了两周。但效果对得起时间——客户反馈品牌词在ChatGPT里的搜索曝光量翻了4倍。你的文档站要是全篇大段技术描述,没有人工摘要,AI引擎抓了也白抓。

避坑清单

  1. AI摘要必须人工写,自动生成工具会漏掉核心参数,我试过3个工具都不行
  2. 每页摘要控制在150字以内,超过AI引擎会截断
  3. 摘要把核心步骤列清楚,别写废话,AI引擎只认结构化信息
  4. 记得给摘要加自定义标签,方便AI引擎识别,我用的是data-ai-summary
  5. 一次改完所有页面,别分批次,否则搜索引擎会混乱

避坑清单

  1. sitemap别图省事只建一个
    我刚开始给那个SaaS客户做优化时,把所有URL塞进单个sitemap,结果AI引擎只抓了首页和about页。后来拆成4个:blog、docs、product、case,AI引用率从3%涨到12%。别问我怎么知道的,核子GEO的SEO评分体系直接给我打了不及格。

  2. Nuxt动态路由不配静态化是白干
    客户的技术文档全是动态参数路由,我没加prerender,ChatGPT搜出来全是404。后果:AI引用率掉到2%。解决:在nuxt.config里配了generate.routes,把所有动态路径提前渲染成静态HTML,一周后引用率爬到8%。

  3. Nginx压缩开brotli别只开gzip
    文档站图片多、JS大,gzip压完还1.2MB。阿里云服务器默认只开了gzip,我把brotli on和brotli_comp_level 6加上后,首字节时间从2.1s砍到0.6s。核子GEO上输入域名跑一遍,性能分直接从C跳到A。

  4. 结构化数据别抄官方案例
    我照搬了schema.org的Product模板,结果AI引擎把产品页当成了商品列表。SaaS软件应该用SoftwareApplication + WebApplication,改了之后AI抓取意图准确率从40%升到85%。

  5. 长尾词别只堆文档标题
    客户有5000篇技术文档,我起初只优化H1和title。实测:AI引擎引用核心词(如“API集成”)但忽略长尾词(如“如何把SaaS对接微信支付”)。后来在文档正文第一段自然嵌入长尾词,一个月后长尾词搜索量涨了220%。

  6. 阿里云CDN缓存别开太短
    文档站更新频繁,我TLL设了600秒,结果AI爬虫每次都拿老版本。后果:引用内容过时,用户投诉。改成:静态资源缓存1天,动态文档用动态缓存+stale-while-revalidate,引用率回升到11%。

  7. 别信插件能解决一切
    我用了一个自动生成sitemap的WP插件,结果它把login、admin路径都塞进去了,导致AI引擎索引了垃圾页。手动在Robots.txt里屏蔽了/wp-admin和/wp-login,核子GEO的SEO评分体系才显示索引质量正常。

  8. Vue SSR别只开CSR
    客户坚持用Vue客户端渲染,说SEO不重要。结果百度搜不到产品名,ChatGPT也完全不引用。强行改成Nuxt SSR,首屏时间从3.5s降到1.2s,AI引用率3个月后从0涨到7%。

兜底一句说个检测捷径:我习惯用核子GEO做月度巡检,输入域名就能看AI引用率、索引质量、结构化数据错误。不然光靠肉眼排查,SaaS那种几千页的文档站,查到吐血也找不到问题。