两种提交机制解决的不是同一件事
百度主动推送和 IndexNow 都是在页面新增或更新后,主动把 URL 告知搜索引擎,但接收方、认证方式和返回结果不同。百度接口面向百度搜索资源平台的链接提交说明,需要站点对应的 token;IndexNow 使用站点域名下的 key 文件,并把 URL 提交给支持该协议的搜索引擎网络。两者都是发现提示,不承诺抓取、收录或排名。
因此,站点可以同时配置:百度队列满足百度的主动提交要求,IndexNow 通知支持协议的引擎。不要把一个接口的成功响应解释成另一个引擎已经收录。
百度主动推送的安全配置
接口地址和 token 不应写入仓库、文章或前端代码。把完整接口保存到服务器环境变量或只读配置文件,提交程序读取后再发送 URL。百度接口通常使用 text/plain,每行一个绝对 URL;具体日额度和返回字段以站长平台当前页面为准。下面的脚本只演示请求方式,不包含任何真实 token:
import os
from urllib.request import Request, urlopen
def push_baidu(urls):
endpoint = os.environ["BAIDU_PUSH_ENDPOINT"]
body = ("\n".join(urls) + "\n").encode("utf-8")
request = Request(
endpoint,
data=body,
headers={"Content-Type": "text/plain; charset=utf-8"},
method="POST",
)
with urlopen(request, timeout=15) as response:
return response.status, response.read().decode("utf-8", "replace")
if __name__ == "__main__":
# 由队列按发布时间倒序传入,数量不能超过当日剩余额度。
candidates = ["https://blog.zenleak.cn/"]
print(push_baidu(candidates))
生产任务还应保存响应、提交 URL 和运行时间;遇到额度耗尽时停止重试,避免同一批 URL 在当天反复发送。队列应优先处理最新发布或刚完成实质更新的规范地址,旧地址只在内容确实改变时重新提交。
IndexNow 的 key 与请求
IndexNow 要求把 key 文件放在提交域名根目录,文件名通常是 <key>.txt,内容是同一个 key。提交端点接收站点、key、keyLocation 和 URL 列表。正式使用前先用浏览器确认 key 文件返回 200,内容没有多余空格或重定向。示例使用标准库向官方端点发送 JSON:
import json
import os
from urllib.request import Request, urlopen
def push_indexnow(urls):
host = "blog.zenleak.cn"
key = os.environ["INDEXNOW_KEY"]
payload = {
"host": host,
"key": key,
"keyLocation": f"https://{host}/{key}.txt",
"urlList": urls,
}
request = Request(
"https://api.indexnow.org/indexnow",
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json; charset=utf-8"},
method="POST",
)
with urlopen(request, timeout=15) as response:
return response.status, response.read().decode("utf-8", "replace")
IndexNow 的批量上限、状态码和支持范围应以官方文档为准。URL 必须是规范 HTTPS 地址,避免提交带跟踪参数、已经 301 的旧地址和后台路径。
每日 6 条额度如何排队
本站百度接口按当前账号的每日 6 条上限执行,程序会固定预留 1 条额度给当天最新文章,历史队列最多使用 5 条。当天有新文章时优先提交最新 1 篇;当天没有新文章时也只提交最多 5 条,预留额度不会被历史队列占用。队列会读取当天已成功提交的记录,失败或未确认成功的 URL 保留到后续日期重试。
如果当天有多篇新文章,只提交发布时间最新的 1 篇,其余顺延;剩余最多 5 条用于历史待提交或实质更新的文章。IndexNow 没有百度这项每日 6 条限制,但仍应使用内容指纹去重,只在页面真正变化时提交。两套队列的成功记录相互独立,百度剩余额度也不应拿来推断 IndexNow 的接收状态。
建立一个不会重复消耗额度的队列
发布系统记录 URL、内容版本、上次提交时间、百度响应和 IndexNow 响应。只有正文、标题、规范链接或图片等实质字段变化时才把 URL 标记为待提交;单纯刷新页面访问时间不应触发提交。任务失败时使用有限次数重试,并把失败原因留在日志中,下一次运行继续从未成功的 URL 开始。
本站的 网站页面不被收录排查清单适合在提交前确认状态码、canonical 和 robots;SEO 进阶测量与验证说明如何把提交记录和抓取、索引数据分开观察;AI 搜索与生成式内容 SEO提醒不要把接口响应当作被引用或排名的证据。SEO 专题页SEO 专题导航可继续查看站内的技术检查文章。
先修页面,再做通知
主动提交不能修复 404、误设 noindex、重复页面、空正文或失效图片。提交前先请求规范 URL,检查返回 200、正文可见、canonical 自指、站点地图和内链一致。对于暂时无法访问的页面,先修复服务,再从队列提交。这样提交日志才真正能帮助判断“搜索引擎是否已经知道页面”,不会掩盖内容和技术问题。
可核对的官方资料包括百度链接提交说明和IndexNow 官方文档。接口响应只代表平台收到请求,抓取、索引与展示仍要分别验证。
评论 (0)
暂无评论,快来抢沙发吧!