IndexNow 协议实战:让搜索引擎实时收录新文章与更新内容
传统的搜索引擎收录流程依赖爬虫定时抓取,周期长、浪费爬虫资源。IndexNow 协议由微软与 Bing 主导,现在已被 Yandex、Naver 等多家搜索引擎支持,甚至 Google 也已部分接入。通过在发布新文章或更新内容的瞬间通过 HTTP POST 通知搜索引擎,可将收录时间从数天缩短至分钟级。
IndexNow 的工作原理
IndexNow 的核心流程极其简单:站点向搜索引擎的 IndexNow 端点发送一个 HTTP POST 请求,包含文章的 URL 与最后修改时间。搜索引擎收到通知后,会立即抓取该 URL,并将其加入索引。整个过程不需要提交 sitemap,也不依赖 robots.txt 爬行发现。
Nginx 配置 IndexNow 端点
location = /indexnow {
root /var/www/zz1984;
add_header Content-Type "text/plain; charset=utf-8";
# 接受 POST 请求,返回 200 OK
if ($request_method = POST) {
default_type "text/plain";
return 200 "IndexNow received\n";
}
# GET 请求返回验证用的 token(若需要)
return 200 "IndexNow endpoint for POST only\n";
}
Python 脚本自动推送
import requests, time
KEY = "your-indexnow-api-key" # 从 Bing Webmaster Tools 获取
ENDPOINT = "https://api.bing.com/indexnow/siteurl"
urls = [
"https://www.zz1984.com/2150.html", # 新文章
"https://www.zz1984.com/2151.html", # 更新的旧文章
]
for url in urls:
payload = {"key": KEY, "url": url, "keyLocation": "https://www.zz1984.com/indexnowkey.txt"}
r = requests.post(ENDPOINT, data=payload, timeout=10)
print(f"Pushed {url} -> status={r.status_code}, body={r.text[:80]}")
time.sleep(0.5) # 稍作间隔,避免短时间大量请求
验收与监控
- 发布文章后 5 分钟内,在 Bing Webmaster Tools 或 Yandex.Webmaster 中检查是否出现新收录。
- 使用 site:www.zz1984.com 新文章URL 查验是否被收录。
- 若未及时收录,检查 IndexNow Key 是否正确放置于站点根目录,且 Nginx 配置已生效。
- 监控 robots.txt 是否屏蔽了 /indexnow 路径。
结语
IndexNow 协议为个人站长提供了一种轻量、即时的收录方式。配合 sitemap 与普通抓取,可形成“主动推送+被动爬行”双轮驱动的收录体系,显著提升新内容的曝光速度。