新站几天不被收录?用 IndexNow 主动提交给 Bing 和 Yandex
新站为什么收录慢
域名刚上线时,搜索引擎对它一无所知:没有历史、没有外链、没有抓取记录。爬虫发现的途径只有几条——别人链接了你、你在 sitemap 目录站登记了、或者你手动提交过。
即便 sitemap 提交了,排队也慢。Google 官方说法是「发现到抓取可能需要几天到几周」,新域名更要等。这段时间里,你的内容等于不存在。
有一个协议专门解决「主动敲门」这件事:IndexNow。
IndexNow 是什么
一个由 Microsoft 和 Yandex 推动的开放协议(2021 年发布),机制极简:
- 你在站点根目录放一个
<key>.txt文件,内容是 key 本身——证明你控制这个域名 - 你 POST 一个 JSON 到它的 API,列出「这些 URL 有变化」
- 搜索引擎收到后,把它们加入抓取队列
参与方:Bing、Yandex、Seznam、Naver,以及一些下游搜索引擎(DuckDuckGo 的部分结果来自 Bing,所以间接受益)。
Google 不参与 IndexNow,这条要记住——Google 只能靠 sitemap + Search Console 手动请求编入索引。
关键区别在于:sitemap 是「我这份清单你什么时候想看就看」,IndexNow 是「这条内容变了,现在去看」。
部署 key 文件
先造一个 key,任意 8~128 位十六进制字符串:
1 | python -c "import secrets; print(secrets.token_hex(16))" |
把它做成站点根目录的 5d8e7cc06ed678995baa492258001796.txt,文件内容就是这串 key 本身(不要加换行以外的任何东西)。
部署后必须能访问:
1 | curl -s https://example.com/5d8e7cc06ed678995baa492258001796.txt |
返回 200 且内容是 key,才算通过验证。这一步是硬门槛——后面所有提交都依赖它,key 文件不可访问时 API 会返回 403,而且这个 key 可能被标记为不可信。
⚠️ 顺序不能颠倒。我一开始的脚本是「生成 key → 立刻提交」,结果全站提交失败,因为文件还在本地、没有构建部署。正确顺序是:生成 key → 构建 → 部署 → 确认线上 200 → 再提交。
提交 API
请求体:
1 | { |
POST 到任意一个通用端点,它会转发给所有参与方:
https://api.indexnow.org/indexnowhttps://www.bing.com/indexnowhttps://yandex.com/indexnow
返回码含义:
| 状态码 | 含义 |
|---|---|
| 200 | 已接收 |
| 202 | 已接收,key 待验证(最常见) |
| 400 | 请求格式错误 |
| 403 | key 验证失败(文件不可访问或内容不匹配) |
| 422 | URL 不属于该 host,或数量超限 |
| 429 | 提交过于频繁,被限流 |
可复用的脚本
把它做成可重复执行的小工具,比每次手写 curl 靠谱:
1 | #!/usr/bin/env python3 |
两个设计细节值得说明:
直连与代理双通道。IndexNow 的端点在部分网络环境下不可直连,脚本先试直连、失败转代理,比写死一种方式稳。注意直连时要显式传 ProxyHandler({})——否则 urllib 会去读系统代理环境变量,反而绕不开。
只推增量。不要每次都把全站 URL 推一遍。虽然协议允许(单次上限 10000 条),但频繁的全量提交会被判定为噪音。按文章日期过滤最近 3 天,是合理的粒度。
挂进发布流程
最关键的一步不是提交本身,而是让它自动发生。发布脚本里部署成功后直接调用:
1 | if grep -q "Deploy done" "$DEPLOY_LOG"; then |
注意这里是 if/else 而不是 set -e 之下的裸调用——收录提交失败不能拖垮发布。发布是主线,收录是加分项,两者的失败等级不同。
它做不到什么
诚实地说清楚边界,避免误判效果:
- 不提升排名。它只影响「多快被发现」,不影响「排第几」。排名还是看内容质量、外链、域名权重
- 不保证收录。搜索引擎有权忽略你的通知。内容质量差、页面重复,通知了也不收
- 不覆盖 Google。Google 占中文搜索之外的大头,但它不走这条路
- 不解决「搜不到」。如果你的标题没人搜,收录了也带不来流量——这个问题 IndexNow 帮不上
最后一条最重要。收录是必要条件,不是充分条件。让内容被看见的前提是「有人在找这个东西」,而这件事由选题决定,不由提交协议决定。
收口
对新建站点,收录流程可以固定成三步:
- sitemap + robots.txt 就位,GSC / Bing Webmaster 提交
- IndexNow key 部署并验证可访问,接入发布流程自动提交
- GSC 手动「请求编入索引」 处理重点页面(Google 的唯一加速途径)
第 1 步是一次性的,第 2 步之后全自动,第 3 步按需手动。三条加起来,新站从上线到被搜到的时间能从「数周」压到「数天」。
这个脚本已经跑在博客的每日刷新链路里,实际执行记录见 用本地 Ollama 模型批量重写了 112 篇文章的 meta description。域名迁移的收尾清单见 Hexo 换域名后 canonical 和 sitemap 还指着旧域。