IndexNow:通过 API 向搜索引擎提交页面
IndexNow 是一个免费、开放的协议,让你可以把 URL 变更直接推送给参与其中的搜索引擎,无需等待爬虫。在这篇文章里,我会带你了解它是什么、哪些引擎真正支持它、什么时候值得用,以及如何通过 API 提交页面。我还会分享一个脚本,它会解析你的 sitemap 并在一次批量请求中提交全部内容,外加我常用来让提交自动运行的那些工具。
什么是 IndexNow?
IndexNow 是一个开放协议,它让网站所有者可以在网站内容准备好被索引时,直接通知参与其中的搜索引擎。
在 IndexNow 之前,每个搜索引擎用的都是基于拉取(pull)的发现模型。机器人按自己的时间表来爬取你的网站,而你对它们何时抓到某个变更毫无控制权。
IndexNow 把这一切反了过来。它是一个基于推送(push)的协议,由 Microsoft Bing 和 Yandex 共同开发,于 2021 年 10 月推出,它让你可以在一个 URL 被创建、更新或删除的那一刻就通知参与其中的搜索引擎。你不再等着被发现,而是发送一个 ping,引擎便会把该 URL 排入优先抓取的队列。
哪些搜索引擎支持 IndexNow?
截至 2026 年年中,已确认的参与者有 Bing、Yandex、Naver、Seznam 和 Yep(Ahrefs 自家的搜索引擎)。由于 DuckDuckGo 在很大程度上依赖 Bing 的索引,通过 IndexNow 提交的内容往往也会在那里出现,从而让你间接触达搜索流量的另一部分。
| 搜索引擎 | 是否支持 IndexNow | 备注 |
|---|---|---|
| Bing | 是 | 主要采用者,协议的共同开发方 |
| Yandex | 是 | 与 Bing 共同开发 |
| Naver | 是 | 2023 年 7 月采用 |
| Seznam | 是 | 捷克搜索引擎 |
| Yep | 是 | Ahrefs 的搜索引擎 |
| DuckDuckGo | 间接 | 受益于 Bing 的索引 |
| 否 | 截至 2026 年仍依赖爬虫 |
Google 是那个引人注目的例外。尽管自 2021 年 10 月起就一直在测试这个协议,Google 仍然依赖自己的爬取基础设施。对于 Google,你依然要依靠 XML sitemap、Search Console 的 URL 检查工具,以及抓取预算(crawl budget)。
IndexNow 真的有用吗?你什么时候该用它?
简短的回答:有用,但它不是魔法。
IndexNow 并不保证被索引。它所做的,是向参与其中的引擎发出信号,表明某个 URL 此刻值得被抓取。引擎在决定是否索引该页面之前,仍会应用自己的质量过滤。内容单薄的页面、被 robots.txt 屏蔽的页面,或已有抓取错误的 URL,依然可能被跳过。
IndexNow 真正大放异彩的地方,是对时间敏感的发布。如果你运营一个新闻网站、一个频繁变动的产品目录,或任何对新鲜度有要求的网站,那么在几分钟内被发现和几天后被发现之间的差别是实实在在的。Bing 表示,在其结果中被点击的所有 URL 里,如今有相当大且不断增长的一部分来自 IndexNow 提交,这个数字逐年攀升。
关于何时提交的几条实用规则:
- 一篇新的博客文章或页面上线
- 你对某个页面做了实质性的内容更新
- 某个页面被移除或重定向
- 你做了一次重要的抓取或 URL 重构
而不该提交的:细微的 CSS 调整、仅涉及布局的改动,或那些你本来就不想被索引的页面。每次提交都会计入你的抓取预算,所以要发送有质量的信号,而不是噪音。
对于 Google,继续做你已经在做的事:sitemap 和 Search Console。把 IndexNow 看作面向网络其余部分的一个补充层,而不是你 Google SEO 工作流的替代品。
如何提交单个 URL:IndexNow 密钥与 API 端点
要使用 IndexNow API,你首先需要证明域名所有权。机制很直接:生成一个密钥(一个 8 到 128 个字符之间的随机字符串,只能包含字母、数字和连字符),然后在你域名的根目录下托管一个以该密钥命名的纯文本文件。
例如,如果你的密钥是 abc123xyz,你就会在这里托管一个文件:
https://example.com/abc123xyz.txt那个文件的内容应该就是密钥本身! 搜索引擎会抓取这个文件,以在接受你的提交之前验证你确实控制着该域名。
这一切就绪后,提交单个 URL 就是一个简单的 GET 请求:
一次成功的提交会返回 HTTP 200。如果你得到的是别的,最常见的罪魁祸首是缺少密钥文件、密钥格式无效,或提交得太频繁。无论你访问哪个参与引擎的端点,API 都是一样的。
批量提交:解析 sitemap 并提交所有 URL
单个 URL 的 ping 很适合用在你发布工作流中的实时钩子上。但如果你是在一个已有的网站上设置 IndexNow,或者你想要一个能定期把 sitemap 与所有参与引擎同步的脚本呢?这时就轮到批量提交端点登场了。
批量 API 接受一个 JSON POST 请求体,单次请求最多可包含 10,000 个 URL 的列表。
下面是我写的脚本,它会抓取你的 sitemap,从中解析出每一个 URL,并分批把它们发送到 IndexNow 的批量端点:
如果你的密钥文件位于域名根目录,keyLocation 字段是可选的,但显式地把它加上是个好习惯。你也可以把密钥文件托管在子目录里,如果你只想为某个特定路径授权提交,位于 /blog/abc123.txt 的密钥文件就只能为 /blog/ 下的 URL 授权。
关于上面这个实现,有几点值得注意:
- 分批: IndexNow 批量端点每次请求最多接受 10,000 个 URL。
- 错误处理: 200 响应意味着引擎收到了你的 URL,而不是它们已被索引。记录响应码,并留意 4xx 错误,它们通常指向密钥或主机配置问题。
- 速率限制: 别猛轰端点。推荐的模式是在内容变更时提交 URL,而不是把这个脚本放在一个紧凑的循环里运行。
让提交自动运行的工具
每次发布都手动跑一遍脚本是不可持续的。好消息是,大多数现代 CMS 平台和托管服务商已经内置了 IndexNow,Wix、Shopify、Cloudflare(通过 Crawler Hints),以及 WordPress 生态中通过 Yoast 和 Rank Math 之类插件的方案,一旦配置好都会自动处理提交。
对于一个更有条理的 SEO 工作流,我最常回头去用的工具是 Ahrefs。我在 SEO 工作中大量使用 Ahrefs,而它在 Site Audit 里的 IndexNow 集成,说实话是我见过的更实用的实现之一。一旦你在 Site Audit 的抓取设置里加上你的 IndexNow API 密钥,它就能在每次抓取时自动检测内容变更,并代你把相关的 URL 提交给参与其中的搜索引擎,无需手动触发。
Ahrefs 还会呈现一个「待提交到 IndexNow 的页面」的预配置问题项,它会标记出有实质内容变更的页面、新增的重定向,或被移除的页面,这样如果你更喜欢手动控制,就可以在它发出去之前先审阅这个队列。对于那些我想要完全自动化的网站,我会开启自动提交,让它伴随 Ahrefs 的 Always-on 审计一起运行,那个审计是持续抓取的,而不是按固定时间表。
对于纯定制或 headless 的搭建,也就是你用代码管理一切的情况,上面那个脚本搭配一个部署钩子或一个 cron job,是最直接的做法。但如果你已经投入到像 Ahrefs 这样的工具里,那么让它来处理提交这一层,会比你单独维护一个脚本更合理。