手动集成 IndexNow:静态网站与自定义站点快速索引指南 (无需CMS插件)
如果您的网站没有使用像 WordPress 这样的内容管理系统 (CMS),您仍然可以利用 IndexNow 来加快搜索引擎的索引速度。IndexNow 是一种协议,让您可以主动通知搜索引擎您网站上新增、更新或删除的页面。(关于 IndexNow 的介绍及其与 Bing URL 提交 API 的比较,请参阅我们之前的文章“IndexNow 与 Bing URL 提交 API 对比:让您的网站更快被收录”。)本文将重点介绍拥有静态网站或自定义服务器端渲染的开发者和网站所有者如何在没有 CMS 插件的情况下手动集成 IndexNow。
为何在静态或自定义网站上使用 IndexNow
许多流行的 CMS 平台都内置了 IndexNow 功能,或通过插件提供,当内容发生变化时会自动通知搜索引擎。但是,如果您部署的是静态网站或使用自定义框架,就不会有这种开箱即用的集成。IndexNow 允许您将网站更新直接推送给搜索引擎,确保它们几乎立即知晓更改。这可以显著缩短新增或修改内容被抓取和索引所需的时间。您无需等待爬虫偶然发现您的更新,而是主动通知它们——这对于那些爬虫访问频率不高的网站来说,在 SEO 方面是一个巨大的优势。
手动设置 IndexNow (无需 CMS)
在自定义网站上实施 IndexNow 只需几个简单步骤。核心在于,您需要通过 IndexNow 密钥来证明所有权,然后在有新的或更新的 URL 时发送 POST 请求。具体操作如下:
获取 IndexNow API 密钥并将其托管在您的网站上: 生成一个唯一的密钥(一个由 8-128 个字母数字字符组成的字符串;建议使用 32 个以上字符)。您可以使用 Bing 的 IndexNow 密钥生成器或创建一个随机的十六进制字符串。将此密钥字符串保存到一个名为
YOUR_KEY.txt
的文本文件中,并将其放置在您网站的根目录下(例如https://changjiu365.cn/your-indexnow-key.txt
)。该文件应仅包含密钥字符串。这个密钥文件向搜索引擎证明您拥有该网站。为简单起见,建议使用根目录,这样您可能不需要在请求中单独指定 “keyLocation”(下文详述)。点击生成API秘钥(Generate API Key) 点击下载并上传至您的网站根目录 构建 IndexNow JSON 负载: 要通知搜索引擎 URL 的更改,您需要发送一个 JSON 格式的 HTTP POST 请求。JSON 负载包含四个字段:
host
、key
、keyLocation
和urlList
。- host: 您网站的域名(不含协议)。例如:
"host": "changjiu365.cn"
。 - key: 您生成的 IndexNow 密钥(与密钥文件中的字符串相同)。
- keyLocation: 您的密钥文件所在的完整 URL。例如:
"keyLocation": "https://changjiu365.cn/your-indexnow-key.txt"
。 (如果您的密钥文件位于根目录且文件名与密钥完全相同,搜索引擎可以自动找到它。如果密钥文件不在根目录或位置非标准,则明确包含 keyLocation
是可选但推荐的做法。) - urlList: 您希望通知为已添加或已更新的页面 URL 数组。这些应该是包含
https://
的完整 URL,并且必须属于host
域名。
例如,一个通知两个已更新 URL 的 JSON 负载可能如下所示:
这是 IndexNow 官方用于批量 URL 提交的模式。请确保
host
与您的域名完全匹配,并且urlList
中的每个 URL 都以该域名开头。- host: 您网站的域名(不含协议)。例如:
将 JSON POST 到 IndexNow API 端点: 准备好 JSON 后,将其发送到搜索引擎的 IndexNow 端点。您只需提交到一个端点,因为启用了 IndexNow 的搜索引擎会相互共享提交内容。例如,您可以使用 Microsoft Bing 的端点或中立的 IndexNow.org 端点。中立端点会自动将您的 URL 转发给所有参与的引擎。IndexNow 服务的 URL 是:
https://api.indexnow.org/indexnow
您可以使用命令行工具或代码来 POST 您的 JSON。以下是一个用于快速测试的
curl
示例:这将向 IndexNow API 发送一个带有 JSON 负载的 POST 请求。成功的请求应返回 HTTP
200 OK
,表示 URL 已被接收。(请注意,“200 OK” 并不意味着页面被立即索引;它仅确认通知已收到。抓取和索引仍取决于搜索引擎的处理过程。)您可以将此过程集成到您的部署或构建脚本中。例如,如果您发布新页面或更新内容,可以自动为这些 URL 触发 IndexNow POST 请求。或者,您可以批量处理多个 URL(每次 API 调用最多 10,000 个)并一次性发送——例如,一次性发送当天所有新增/更新的 URL。
检查管理员工具是否出现IndexNow的提交记录(我第一次提交后只出现了一个提交记录,但是几个小时后恢复正常,可能是在验证?)
查看提交记录
IndexNow 最佳实践与常见问题解答
即使您是手动触发 IndexNow,遵循一些最佳实践以有效使用 API 并避免错误也很重要:
我可以每天提交我所有的 URL 吗? – IndexNow 的设计初衷是仅通知搜索引擎关于新增、更新或删除的页面,而不是在网站 URL 未更改的情况下重复提交整个网站的 URL。实际上,官方指南建议仅对最近更改过的 URL 使用 IndexNow(除非网站上的每一个页面都刚刚更新,否则不应提交所有 URL)。对于静态网站,这意味着当您添加新页面或对现有页面进行重大更新时,才应调用 IndexNow。如果 URL 没有更改,请勿反复提交相同的 URL——这是不必要的。为了覆盖您网站上的所有页面,您仍应维护一个 XML 站点地图;搜索引擎会定期抓取您的站点地图以发现那些未被单独提交的页面。
我可以一天内多次重新提交同一个 URL 吗? – 频繁重新提交相同的 URL 通常没有帮助,尤其是在内容未更改的情况下。避免每 10 分钟内重复提交同一 URL 超过一次。如果一个页面被频繁编辑,IndexNow FAQ 建议在编辑之间等待大约 10 分钟再通知搜索引擎。如果页面内容不断更新(例如,实时股票行情或天气信息),您不应该在每次微小更改时都通知 IndexNow——搜索引擎可能会认为这是垃圾信息。相反,应针对有意义的更新使用 IndexNow,并且如果页面频繁更改,则考虑一个合理的重新通知间隔。对于每天都有内容更改的情况,每天提交是可以的,但不要在短时间内重复提交相同的 URL。
当我调用 IndexNow 时,HTTP 422 错误是什么意思? – IndexNow API 返回的 HTTP 422 “Unprocessable Entity”(无法处理的实体)响应表示服务器理解了请求,但请求中的某些内容无效,因此 URL 未被接受。根据 IndexNow 文档,如果
urlList
中的 URL 不属于指定的主机,或者您的密钥格式不正确,则会返回 422。在实践中,导致 422 的常见原因包括:-
host
字段与您网站的域名不完全匹配。(例如,使用"host": "changjiu365.cn"
而不是"www.changjiu365.cn"
——它必须与提交的 URL 的域名匹配。) - 密钥不正确或格式不规范。确保您使用的是生成的精确密钥字符串(仅限字母数字,长度在 8-128 个字符之间)。不符合协议模式的密钥或空密钥都会导致错误。
- 密钥文件无法访问或不包含密钥。如果搜索引擎无法在您提供的 URL 处检索到密钥文件(或者文件存在但其中的密钥错误/缺失),则请求将无法验证。在这种情况下,您甚至可能会收到 403 “Forbidden”(密钥无效)错误,但也可能根据错误的解释方式导致 422。
- JSON 负载格式错误。例如,缺少必需字段或存在语法错误(这也可能触发 400 Bad Request)。仔细检查您的 JSON 结构,并确保设置了
Content-Type: application/json
标头。
如果您遇到 422 错误,请检查以上所有方面:验证主机字符串、URL、密钥和密钥文件以及 JSON 语法。修复任何不一致之处,然后重试。通常,一旦您的密钥文件正确设置并且 JSON 遵循正确的格式,对于有效的提交,您应该会收到 200 响应。
-
我应该多久通知一次 IndexNow? – IndexNow 没有提及严格的每日限制,但适度是关键。将 IndexNow 用作实际更改的实时警报,而不是持续的 ping 操作。一个好的做法是在新页面发布或页面有重大更新后立即发送通知。对于大多数网站而言,这可能意味着每天或每周提交少量 URL,具体取决于您的发布频率。如果需要,您可以批量处理 URL(同样,一个请求中最多 1 万个)以减少调用次数。如果您在短时间内多次更新一个页面,则无需每次都 ping——可以考虑等到最终编辑完成或达到稳定状态,或者使用上面提到的 10 分钟规则。此外,避免在短时间内用过多请求淹没 API;如果您收到 HTTP 429 “Too Many Requests”(请求过多)错误,则表示您需要放慢速度。
手动使用 IndexNow 可能需要一些脚本编写或命令行操作,但这过程非常直接。通过将这些步骤集成到您的静态网站部署流程中,您可以确保 Bing、Yandex 等搜索引擎立即了解您的内容更改。这种主动的索引方法,即使没有传统 CMS 的帮助,也能让您的内容更快地在搜索结果中可见。请记得监控您的服务器日志或 API 响应,以发现任何错误(例如前面讨论的 422 响应),并进行相应调整。