上一篇讲了静态博客 SEO 的完整流程:软 404、sitemap 纪律、RSS、结构化数据、收录提交。那篇是「施工图」,这篇是「竣工后的巡查记录」——只讲上线之后真正发生的坑、数字和观察。
IndexNow:提交了不等于收录了
我们的发布链路里,IndexNow 是全自动的:push 到 main,indexnow.yml 工作流跑 scripts/indexnow.py --new,从 sitemap 提取未提交过的 URL,POST 到 api.indexnow.org,成功后回写记录文件。目前 .indexnow-submitted.json 里躺着 18 条 URL——首页、归档、标签、说说、友链、关于加 12 篇文章,一条不落。
但必须泼一盆冷水:IndexNow 只负责「告知」,不负责「收录」。它的接入方是 Bing、Yandex、Seznam、Naver 这些引擎,百度不在其中。Google 则完全不走 IndexNow,它只认真理的 sitemap 和 Search Console。所以「三个入口都要交」不是洁癖,是分工:IndexNow 管 Bing 系,Search Console 管 Google,百度搜索资源平台管百度。各管一段,互不替代。
# IndexNow 的成功返回只有 200/202,语义是「已接收」不是「已收录」
python3 scripts/indexnow.py --new
# [indexnow] 模式: 增量(上限 10 条);待提交 6 条 URL
# [indexnow] 提交成功,HTTP 202(IndexNow API 已接收)
# [indexnow] 记录文件已更新(累计 18 条)
记录文件本身是个小宝藏:它让每次发文只推真正的新 URL,重复推送同一个 key 会被引擎侧判定为噪声。配合 CI 自动回写,「提交去重」这件事零维护。
百度:慢、配额,和不认 IndexNow
百度搜索资源平台(ziyuan.baidu.com)是另一套逻辑:站点验证靠 DNS TXT 或文件验证,提交入口有三个——sitemap、手动提交 URL、API 推送。手动提交有每日配额,收录周期以周甚至月计。我们的做法务实:sitemap 照交,新文章发布当天手动提一次,然后接受它的慢。个人站和百度之间没有技巧,只有耐心和持续更新。
一个被平台差异逼出来的分工:百度对「无扩展名 URL」的兼容历史上有过问题,所以 GitHub Pages 镜像端保留 .html 形态(sitemap-github.xml 的注释里写着这条),主域 CF Pages 端用无扩展名。同一篇文章两个 URL 形态,靠 canonical 把权重收拢到主域——这不是设计出来的优雅,是适配出来的生存。
sitemap 的新坑:lastmod 与「修订文章」的矛盾
上一篇立过规矩:lastmod 必须真实,取 posts.json 里的 date。执行下来发现一个边角——修订已发布文章时,date 不变,lastmod 就不动。搜索引擎对「声明从未更新」的页面会降低重抓频率,等于改了内容却对抓取端不可见。
我们的处理:文章正文有实质修订时,在 posts.json 里把 date 更新到修订日——对个人站来说,「发布时间」的精确语义可以让渡给「重抓信号」;纯笔误修复不动。两条路都不完美,但最差的选择是装死:声明与事实脱节,比二选一都伤信任。
另一个容易漏的动作:Search Console 和 Bing 站长平台要分别提交各自的 sitemap。robots.txt 里声明两条(主域加 GitHub 端)只是让爬虫「发现」文件,不代表站长平台「收录」了这份 sitemap——提交动作本身要在每个平台手动做一次,提交完还要盯一眼「已读取」状态。
结构化数据:写错是静默失效
每篇文章页现在由 gen_posts.py 注入两块 JSON-LD:BlogPosting(headline/datePublished/author/mainEntityOfPage)与 BreadcrumbList。最大的教训来自验证环节——JSON-LD 有语法错误时页面照常渲染,搜索引擎静默忽略整块数据,不报错、不告警、不降权,就是当你不存在。唯一可靠的验证是 Google Rich Results Test 和 Schema.org Validator,改完模板必须跑一遍,肉眼检查 JSON 等于没检查。
OG 分享卡同样有静默坑:og:image 尺寸不达标时,社交平台显示残缺缩略图而不是报错。我们用 scripts/gen_og_image.py 统一产出 1200×630 的默认分享图,全站一个出口——和文章页一样,模板化自动注入,杜绝手写页面漏配。
提交之后的观察:三类信号三种病
| Search Console 状态 | 含义 | 处方 |
|---|---|---|
| sitemap 报错 | 文件坏了或读不到 | 先修文件,再谈收录 |
| 已抓取 – 尚未编入索引 | 质量存疑或新站信任期 | 查重复内容,然后等 |
| 软 404 | 状态码错了 | 补 404.html(见上一篇) |
新站的信任期以月计,这期间最该做的三件事:保持更新频率(我们目前 18 篇,节奏稳定)、内链保证爬虫三跳内到达任何文章、收录未稳时绝不改 URL。改 URL 对 SEO 是拆迁——301 能搬走权重,搬不走重新建立信任的时间成本。
可执行清单
- 发布当天:IndexNow 自动推 Bing 系;百度手动提一次;两个站长平台确认 sitemap 状态
- 修订文章:date 与 lastmod 联动更新,宁可选「显示更新」,不选「装死」
- 改模板后:Rich Results Test 验证 JSON-LD,og:image 核对尺寸
- 每周一次:看覆盖率报告的三类信号,不做无观测的优化
SEO 到这个阶段,技术动作已全部自动化,剩下的比拼是谁更能诚实地面对数据。下一篇聊聊把这些自动化跑在 Cloudflare 免费额度里的成本账。