- IndexNow 采用“一次提交、多引擎共享”机制,向 api.indexnow.org 或 www.bing.com 提交后可同步通知多个支持该协议的搜索引擎。
- 密钥验证文件(/{key}.txt)必须位于站点根路径且纯文本内容与密钥严格一致,推荐使用 Next.js rewrites + Route Handler 动态托管。
- 切勿对未发生内容变更的页面重复高频推送,应结合内容哈希(Content Hash)或发布事件触发增量推送。
一、从被动轮询到事件驱动:IndexNow 如何重塑收录效率
传统的搜索引擎抓取依赖爬虫周期性轮询站点 XML Sitemap 或沿着站内超链接深度遍历,新发布或更新的技术文档往往需要数小时乃至数天才能被发现。IndexNow 协议通过标准的 HTTP POST 接口,让站点在内容发布、更新或删除的瞬间主动通知搜索引擎,将“等待爬虫发现”升级为“事件驱动抓取”。
在白帽 SEO 工程实践中,IndexNow 是完全合规且受搜索引擎官方极力推荐的主动通知通道。只要站点在根目录下完成纯文本密钥所有权校验,即可单次批量提交多达 10,000 条新建或变更 URL,显著节省站点服务器带宽与爬虫无效轮询成本。
二、在 Next.js 中实现零静态文件污染的动态密钥托管
为了支持多环境密钥轮换,除了在 `public/` 目录下放置静态 `.txt` 文件外,我们可以在 `next.config.ts` 中配置正则重写规则 `/:key([a-f0-9]{8,128}).txt`,将所有符合十六进制密钥特征的根目录文本请求统一路由至 `/api/indexnow/key` 接口。
当 Bingbot 或 IndexNow 验证器请求 `https://www.siseo.cn/{INDEXNOW_KEY}.txt` 时,服务端直接校验环境变量并返回状态码 200 及纯文本密钥内容;对于未知密钥则返回 404,既保障安全性又免去了手动维护静态文件的繁琐。
export interface IndexNowPayload {
host: string;
key: string;
keyLocation: string;
urlList: string[];
}
export async function submitUrlsToIndexNow(urls: string[]): Promise<{
ok: boolean;
status: number;
submittedCount: number;
}> {
const key = process.env.INDEXNOW_KEY || "b9cb731c701da13268615f5193f2e3e8";
const host = "www.siseo.cn";
const payload: IndexNowPayload = {
host,
key,
keyLocation: `https://${host}/${key}.txt`,
urlList: Array.from(new Set(urls)).slice(0, 10000),
};
const response = await fetch("https://api.indexnow.org/indexnow", {
method: "POST",
headers: { "Content-Type": "application/json; charset=utf-8" },
body: JSON.stringify(payload),
});
return {
ok: response.status === 200 || response.status === 202,
status: response.status,
submittedCount: payload.urlList.length,
};
}三、幂等去重与状态码预检:防止错误推送拖累站点信誉
许多团队在接入自动化推送 API 时容易犯一个致命错误:不加校验地通过定时任务每小时把全站 URL 重复推送一遍,甚至把返回 404 或带有 `noindex` 标记的测试链接也塞进推送队列。这种行为会被搜索引擎判定为滥用配额,严重时会导致 API 接口被限流(HTTP 429)或站点信任度降权。
在 SISEO 自动化工作流引擎中,每一批待推送 URL 在进入发送队列前都会经过三道门禁:第一,预检目标 URL 的 HTTP 状态码必须为 200 OK;第二,校验页面 `<head>` 中的 `<link rel="canonical">` 必须指向自身规范地址;第三,比对页面正文摘要的 SHA-256 指纹,仅当指纹发生实质变化或首次发布时才放行推送。
- 确保密钥文件可通过 HTTPS 直接访问,Content-Type 为 text/plain; charset=utf-8。
- 推送列表中的所有 URL 域名必须与 host 字段完全匹配(统一使用 www.siseo.cn)。
- 在推送前执行自检,剔除所有含查询参数、301 跳转源地址或非 200 状态码的链接。
- 记录每次 API 响应状态码(200 成功、202 已接收待验证、422 URL 与 Host 不匹配、429 触发速率限制)。
本文常见问答(FAQ)
IndexNow 返回 HTTP 202 Accepted 代表什么意思?
HTTP 202 表示搜索引擎已成功接收您的 URL 列表,正在后台异步拉取您的 keyLocation 密钥文件以核验站点所有权。只要密钥文件可正常访问且内容匹配,稍后就会正式安排 Bingbot 抓取对应页面。
国内站点有必要同时配置百度普通收录 API 和 IndexNow 吗?
非常有必要。百度搜索主要依赖百度搜索资源平台的普通收录/快速收录 API 与 Sitemap,而必应(Bing 国内版与国际版)在 PC 端开发者人群中市场份额极高,且原生依赖 IndexNow。在工作流引擎中配置双通道并行推送可实现国内主流搜索引擎全覆盖。
一键开启双引擎 API 自动化推送流水线
在控制台中绑定站点密钥,自动完成 URL 存活预检、内容指纹去重与百度/必应双通道定时及事件触发推送。