我用 Vibe Code 做出了漂亮的 Web 应用,但 AI 依然无法为 Google Search 自动生成一个简单的 Sitemap
即便现在有很多所谓的 AI 构建平台能快速帮你做 Web 应用和前端交互,但在SEO、搜索引擎索引 机制这样的细节上,它们依然表现得非常粗糙。AI 生成代码固然方便,但它并不能完全替代开发者对底层原理的理解。如果你想让自己的网站被 Google 真正收录、被用户检索到,还是需要对 Sitemap、域名策略、响应头、内容更新策略等有深入控制。AI 只是帮你提高速度,不是替代专业。
我用 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 只是帮你提高速度,不是替代专业。
更多推荐

所有评论(0)