我用 Vibe Code 做出了漂亮的 Web 应用,但 AI 依然无法为 Google Search 自动生成一个简单的 Sitemap

在最近一段时间里,我看到很多开发者和创业者开始用 AI 工具做网站、Web 应用这些东西,比如所谓的 vibe coding 平台:快速生成页面、美观的前端、自动部署等等。乍一看体验很棒,但当你开始关注 SEO 和搜索引擎索引时,这一切就变得很不那么简单了。

我自己做过很多网站的 SEO,这本应该是个“十分钟搞定”的事儿 —— “生成 sitemap.xml,提交到 Google Search Console,搞定。” 但是在实际操作中,问题远比想象复杂。


项目背景

我做的第一个项目是一个在线餐厅目录:收集了所有提供食物过敏菜单的餐厅信息,供过敏患者快速查询。这个目录在本地运行良好,页面内容齐全,理应被搜索引擎收录。

可当我想让 Google 开始索引这些页面时,我遇见了 Sitemap 和 AI 的真实一面。


问题一:本地有效、部署后失效

在本地测试时,生成的 sitemap 路由是正常的。但当部署到线上环境后,这个路由却失效了。即便我多次用各种提示词让 AI 去修复它,还是不断出现问题,直到我花掉了大量的 Lovable 服务积分才修复过来。


问题二:错误的域名

你可能以为 sitemap 只要能访问就行,但 Google 有非常明确的规则:Sitemap 必须与主站点域名一致,才能被 Search Console 接受。 最开始我的 sitemap 出现在了一个随机的 AI 生成域名下,这导致它被直接拒绝。


问题三:动态页面无法更新 sitemap

即便问题解决了,新的餐厅被添加时,sitemap 并不会更新。这意味着即使有新页面存在,它们也不会出现在 sitemap 里,搜索引擎也就无法正确索引它们。


问题四:React 路由与 Headers 混战

这才是真正“让人发疯”的地方:

大多数基于 React 的单页应用默认返回的其实是 HTML 内容,而不是标准的 XML。由于这种种原因 —— 比如路由、响应头错误等 —— sitemap 的响应其实被包装成了 HTML,而不是 Sitemap 规范里要求的纯 XML。即使浏览器看起来没问题,Google 还是会拒绝。

这一切让我白白浪费了大约 25–30% 的 AI 信用额度,只为实现一个原则上非常基础的网页索引功能。


最后奏效的解决方案

直到我放弃了现代 SPA 栈的思路,靠纯技术老方法反而解决了问题:

✅ 方案一:放弃 XML,改用 TXT

Google 官方文档说明:除了 XML,谷歌也支持 TXT 格式的 sitemap,只要里面列出你想让它抓取的 URL 即可。TXT 方案不需要 XML 解析,也不会因为响应头或路由被拒绝。

✅ 方案二:把它做成静态文件

不要任何动态路由,也不要 React 去拦截它,把 sitemap.txt 当成普通的静态资源放在网站根目录下:

https://www.example.com/sitemap.txt

然后在 Search Console 提交它。Google 立刻就接受了。


静态 vs 动态:如何保持 sitemap 更新

静态文件固然简单,但每次有新页面加入的时候,它必须被重新生成。最终我写了一个钩子,在每次新增内容时自动更新 sitemap.txt,这才真正实现了:

静态交付 + 动态更新 = 可被搜索引擎索引的 sitemap


总结:AI 能做很多事情,但 SEO 仍需人工

即便现在有很多所谓的 AI 构建平台能快速帮你做 Web 应用和前端交互,但在 SEO、搜索引擎索引 机制 这样的细节上,它们依然表现得非常粗糙。AI 生成代码固然方便,但它并不能完全替代开发者对底层原理的理解。

如果你想让自己的网站被 Google 真正收录、被用户检索到,还是需要对 Sitemap、域名策略、响应头、内容更新策略等有深入控制。 AI 只是帮你提高速度,不是替代专业。


Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐