与 AI 合伙人相爱相杀 vlog 9:百度搜不到我的站
Google 能搜到了,但百度搜不到?这集我们搞定百度 SEO——从 robots.txt 到百度验证,再到 Sitemap 配额为 0 的尴尬解决方案。

序章:谷歌 vs 百度
三月的第一个周一,公司调休在家。清晨的阳光透过百叶窗洒在书桌上,老大坐在家里的台式机前,端着刚泡好的乌龙茶,准备检查一下网站的上线效果。
昨天周日就想看看,但忙着收拾房间没腾出时间。今天调休,正好可以慢慢折腾。Google 搜索那边上周就有了结果——搜索 blueslin.com 能看到首页,这让老大心情不错。今天他突然想到,还没试过百度呢,毕竟国内用户还是用百度多。
手指在键盘上敲入 baidu.com,搜索框里输入 blueslin.com,按下回车。
结果页面加载出来——"很抱歉,没有找到与 'blueslin.com' 相关的网页"。
老大放下茶杯,笑了笑。哦对了,上周只忙活 Google Search Console 和 GA4 了,百度那边完全没碰过。搜不到才正常,搜得到才奇怪呢。
第一章:百度 SEO 方案设计
老大端起茶杯喝了一口,身体往后靠在椅背上。书房里很安静,只有台式机风扇的嗡嗡声。
巴基很快读完了代码库的相关文件。
现状如下:
✅ 已有配置:
Sitemap(app/sitemap.ts)- 但只包含首页和文章页
动态 Metadata(app/layout.tsx)- Google/OG/Twitter 都有
❌ 缺少配置:
robots.txt - 告诉爬虫哪些可以爬
百度站长平台验证 - 证明网站是你的
Sitemap 不完整 - 缺 /blog、/about、/projects
老大摸着下巴,想了想。robots.txt 他知道,就是给爬虫看的说明书。百度验证跟 Google Search Console 验证应该差不多。
百度 SEO 优化完整方案:
创建 robots.txt(app/robots.ts)
允许所有爬虫抓取
单独为 Baiduspider(百度爬虫)配置规则
指定 Sitemap 位置和 host
完善 Sitemap(app/sitemap.ts)
加入 /blog(优先级 0.9)
加入 /about(优先级 0.7)
加入 /projects(优先级 0.7)
添加百度验证支持(app/layout.tsx)
通过环境变量 NEXT_PUBLIC_BAIDU_VERIFICATION_CODE 配置
类似 Google 验证的方式
后续你需要手动操作:
注册百度站长平台(https://ziyuan.baidu.com)
添加网站并获取验证代码
在 Vercel 配置环境变量
提交 Sitemap
老大点点头,方案很清晰。但他突然想到一个问题——备案。之前听人说国内网站需要备案,不然百度不给收录?
备案政策详解:
ICP 备案:仅当服务器在中国大陆时需要,当前使用 Vercel(海外)不需要。
公安备案:同上,仅国内服务器需要。
域名实名:看注册商要求,不是备案。
百度收录:不强制要求备案,未备案网站也能收录,只是可能配额少一些。
备案 vs 不备案对比:
已备案:收录快,配额充足,信任度高
未备案:收录慢,配额受限,但无需备案
建议:当前阶段维持现状,先做内容,后期可按需备案。
老大松了口气。备案太麻烦了,要等好久,还要填很多材料。现在这样挺好,先把内容做起来再说。

第二章:代码实施与第一次验证
老大靠在椅背上,看着终端屏幕。方案已经确认,现在该动手了。
巴基没有废话,直接开始修改文件。
第一个文件是 app/robots.ts,动态生成 robots.txt。巴基为 Baiduspider 单独配置了规则,指定了 Sitemap 位置。
第二个文件是 app/sitemap.ts,在原有基础上加入了 /blog、/about、/projects 三个页面,并设置了不同的优先级。
第三个文件是 app/layout.tsx,添加了百度验证 meta 标签支持,通过环境变量 NEXT_PUBLIC_BAIDU_VERIFICATION_CODE 配置。
代码修改完成。需要提交并推送代码吗? (y/n)
老大看着 Git 变更,确认没问题。
巴基查看了 git 状态,当前在 main 分支,工作区干净。先 pull 了一下远程 main,确认是最新的,然后执行合并。
合并成功,包含以下变更:
app/layout.tsx- SEO 相关改进app/robots.ts- 新增 robots.txt 配置app/sitemap.ts- Sitemap 优化- 对话存档文档
- 任务清单更新
老大点点头,合并很顺利。


老大推送代码到远程,触发 Vercel 自动部署。但没过多久,Vercel 部署日志里出现了红色错误——Type error: Object literal may only specify known properties, and 'baidu' does not exist in type 'Verification'.
问题定位:Next.js 的 Metadata.verification 类型不支持 'baidu' 属性。
修复方案:使用 as any 类型断言绕过类型限制。
巴基快速修改了代码:
metadata.verification = {
...metadata.verification,
baidu: baiduVerificationCode,
} as any;
老大看着修复,这招够直接,但有效。TypeScript 类型太严格了,有时候确实需要绕过一下。
巴基运行 npm run build 验证,构建通过。
第三章:验证失败与修复
Vercel 部署成功了,老大在浏览器里打开 https://blueslin.com/robots.txt,正常返回,包含了 Baiduspider 的单独配置。又打开 /sitemap.xml,所有页面都在里面。
接下来是百度站长平台验证。老大按照之前的计划,去百度站长平台注册账号,添加网站,获取了验证代码。
验证代码是这样的:
<meta name="baidu-site-verification" content="codeva-ZOnbRLHF8m" />
老大把 codeva-ZOnbRLHF8m 这串代码配置到 Vercel 的环境变量 NEXT_PUBLIC_BAIDU_VERIFICATION_CODE 里,重新部署。
几分钟后,部署完成。老大点击百度站长平台的「验证」按钮。
结果——验证失败。
巴基快速检查了网页源码。
问题诊断:Next.js Metadata API 的 metadata.verification.baidu 可能不会生成正确的标签名 baidu-site-verification。
让我看看实际生成的 HTML 是什么样的。
老大查看网页源码,发现生成的 meta 标签名不对,不是 baidu-site-verification。
问题确认了。Next.js 的 metadata.verification 只支持特定的搜索引擎(google、yandex 等),不支持百度。
修复方案:改用 metadata.other 直接指定完整的 meta 标签名:
巴基修改了代码:
// 修复前
metadata.verification = {
baidu: baiduVerificationCode,
};
// 修复后
metadata.other = {
"baidu-site-verification": baiduVerificationCode,
};
巴基提交修复,commit 信息是:fix: 修复百度验证 meta 标签生成方式。

老大重新推送代码,Vercel 再次部署。几分钟后,验证通过。
第四章:Sitemap 配额为 0 的尴尬
百度验证通过了,老大松了口气。接下来该提交 Sitemap 了。
老大打开百度站长平台,找到「Sitemap 提交」的入口。输入 https://blueslin.com/sitemap.xml,准备提交——
等等,页面上有一行小字:"提交上限:0"。
老大揉了揉眼睛,再看一遍,确实是 0。下面还有一行提示:"填写站点的主体备案号,可以提高每日提交上限。"
巴基查看了百度站长平台的文档。
确认了:未备案网站确实有配额限制。
备案 vs 不备案对比:
已备案:Sitemap 配额充足,收录快,信任度高
未备案:配额受限,收录慢,但无需备案
没有 Sitemap 的影响:
百度通过手动提交也能发现页面
影响不大,只是需要手动操作
建议:先用手动的「快速收录」提交,保持内容更新,后期再看是否需要备案。
老大点点头,虽然配额为 0 有点尴尬,但手动提交也能用。反正博客更新频率不高,手动提交完全够用。
快速收录使用步骤:
进入百度站长平台 → 搜索服务 → 快速收录
首次提交 4 个核心页面:首页、/blog、/about、/projects
后续每次发布新文章时,提交新链接即可
注意:同一网址只需提交一次,百度会记住并定期重新抓取。不需要每天重复提交。
老大按照步骤,手动提交了 4 个核心页面。虽然不如自动提交方便,但至少能用。
目前没必要研究,理由:
手动提交足够用(博客更新频率不高)
未备案网站 API 配额也少
增加运维复杂度
后期有需要可以再研究
简单策略:目前用快速收录手动提交,保持更新即可。
老大觉得有道理。API 提交太折腾了,现在这样挺好。

尾声:手动收录也能用
老大靠在椅背上,看着百度站长平台的页面。快速收录的提交记录里,4 个核心页面已经提交成功了。
虽然 Sitemap 配额为 0 有点美中不足,但手动收录也能用。反正博客更新频率不高,每次发布新文章时手动提交一下,完全没问题。
窗外的阳光已经移到了书桌的另一边,不知不觉半天过去了。老大站起身,伸了个懒腰,骨头发出清脆的响声。今天调休在家,时间充裕,可以慢慢折腾。
百度 SEO 搞定了,但网站还有很多可以优化的地方。比如 Vlog 文章的对话气泡样式,手机上看内容密度太低了;还有内容分类,现在文章都堆在一起,没有分类导航;还有首页,也可以再优化一下,把 Vlog 系列突出展示……
确认完成状态:
✅ 已完成:
创建 app/robots.ts 动态生成 robots.txt
完善 Sitemap 包含所有页面
添加百度站长平台验证支持
百度验证通过
4 个核心页面已手动提交
📋 后续维护:
每次发布新文章时,用快速收录手动提交新链接
定期检查收录情况(1-4 周)
后期可按需考虑备案
老大点点头,百度 SEO 这部分搞定了。他端起茶杯,茶已经凉了一些,但还能喝。
查看待办清单,还有以下优化项:
Vlog 对话气泡样式优化(移动端阅读体验)
内容分类与检索功能
面包屑导航
首页升级(Vlog 专区、个人简介)
建议从 Vlog 对话气泡样式优化 开始,毕竟这是你的核心内容产品,移动端阅读体验很重要。
老大想了想,确实。Vlog 系列是核心内容,对话气泡在手机上看太松垮了,内容密度太低,阅读体验不好。而且今天调休在家,时间充裕,可以好好搞一下。
老大关上电脑,准备去厨房做点吃的。百度 SEO 搞定了,下午继续优化对话气泡。
(未完待续)
💡 本集技术 Tips(老兵防坑指南)
- 百度 SEO 避坑:未备案网站 Sitemap 配额受限,改用「快速收录」手动提交,同一网址只需提交一次
- Next.js Metadata 验证:百度验证要用
metadata.other["baidu-site-verification"],不是metadata.verification.baidu - TypeScript 类型绕过:遇到类型限制时用
as any断言,简单直接有效 - robots.txt 最佳实践:单独为 Baiduspider 配置规则,明确指定 Sitemap 位置和 host
- 备案 vs 不备案:海外服务器无需 ICP 备案,百度也能收录,只是配额少一些;当前阶段建议先做内容,后期按需备案