新站上线3个月一个页面没收,装了百度JS自动推送+每天手动提Sitemap,换成API主动推送配合定时任务后第4天就开始出词
前阵子看了一个做了大半年的新站数据,上线3个月,发了80多篇文章,百度只收了首页和几个分类页,文章页面一个没收。站长说他装了百度官方的JS自动推送代码,也提交了Sitemap,不知道为什么就是不收。翻了一下他的站长后台,发现他用的那套JS自动推送代码放在footer里,但网站本身日访问量不到50,也就是说每天实际上被触发推送的URL不超过50条。而Sitemap他只提交过一次,之后再没更新过。换句话说,这个网站看起来"做了推送",实际上搜索引擎根本不知道有新内容上线。
后来帮他接了百度API主动推送接口,配了宝塔定时任务,每6小时自动扫一次全站URL推一次,同时又接了IndexNow推到Bing和Yandex。第4天就开始看到有文章页面出词了,虽然排名不高,但至少进了索引。自动推送收录这件事,核心不是"装没装推送代码",而是推送的频率、方式和覆盖面能不能让搜索引擎真的收到信号。代码装错了、配额用完了、触发了反垃圾机制、只推百度不管其他引擎——任何一个环节掉链子,效果就归零。
自动推送收录,三个关键问题先想清楚
| 1 | 推送不是"装一次就完事",新内容产生后必须在最短时间内推出去,延迟超过24小时效果大打折扣 |
| 2 | 百度一套、Google一套、Bing/IndexNow一套,三条通道互相独立,只做其中一条等于漏掉另外两个引擎的流量 |
| 3 | 手动提交和自动推送的效率差距是几何级的,一个站还行,3个站以上必须走自动化方案,定时任务+脚本是基本盘 |
一、百度四条推送通道,区别不是"快慢"而是"谁在推"
百度搜索资源平台目前提供了四条链接提交通道:API主动推送、JS自动推送、Sitemap提交、手动提交。很多人以为这四种方式的区别只是"推送速度不一样",但真正的区别是触发机制完全不同,搞错了机制,效果就天差地别。
| 推送方式 | 触发机制 | 推送速度 | 适用场景 | 局限性 |
|---|---|---|---|---|
| API主动推送 | 服务器端主动发起HTTP POST,把URL列表推给百度接口 | 最快,几分钟内可被发现 | 新内容产出后立即推送;定时批量推送 | 需要开发能力;有每日配额限制(非VIP约100条) |
| JS自动推送 | 在页面中嵌入JS代码,用户访问时自动触发推送 | 取决于页面访问量,低流量站几乎无效 | 高流量站点做补充推送 | 低流量站触发次数太少;消耗服务器带宽 |
| Sitemap提交 | 上传XML/TXT站点地图,百度周期性抓取检查 | 较慢,取决于百度抓取周期 | 全站URL兜底覆盖 | 更新周期不可控;大站文件可能超出大小限制 |
| 手动提交 | 在站长后台手动输入URL逐条提交 | 中等 | 单页面紧急提交通知 | 效率极低,不适合批量操作 |
关键结论:API主动推送是唯一不依赖"外部触发"的推送方式。JS自动推送靠用户访问触发,Sitemap靠百度定时抓取触发,手动提交靠人操作触发。只有API主动推送是服务器端主动、实时发起的——你的内容一上线,代码就把它推出去。这才是"自动推送"的真正含义:不是等别人来触发,而是你自己主动通知。
配额问题值得单说:百度API主动推送的每日配额近几年经历过几次调整,从最早的1万条降到100条再到现在的动态配额。目前大多数普通站点的API推送日配额在100条左右,快速收录权限则需要单独申请且审核严格。如果每天新增内容超过配额,需要配合Sitemap做兜底——API推送当天新内容,Sitemap覆盖历史全量。
二、百度API主动推送怎么配,从拿到token到写定时脚本
配百度API推送只需要三步:在站长平台拿到接口地址和token、写一段POST请求代码、配定时任务让它自动跑。

第一步:获取token
登录百度搜索资源平台(ziyuan.baidu.com),添加并验证站点后,进入"普通收录"→"API提交"页面。你会看到一个接口调用地址,格式是:
http://data.zz.baidu.com/urls?site=你的域名&token=你的token这个token就是你的推送凭证,每个站点一个token,不要跨站混用。如果有多个域名,每个域名都要单独获取。
第二步:写推送脚本
百度API推送的本质是一次HTTP POST请求,把URL列表(每行一个URL)放在请求体中发过去。下面是一段PHP脚本,放在网站根目录,通过浏览器访问或命令行执行即可完成推送:
<?php$urls = array('https://你的域名.com/article-1.html','https://你的域名.com/article-2.html','https://你的域名.com/article-3.html',);$api = 'http://data.zz.baidu.com/urls?site=你的域名&token=你的token';$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $api);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_POSTFIELDS, implode("\n", $urls));curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));$result = curl_exec($ch);curl_close($ch);echo $result;?>返回结果中,success字段表示成功推送的条数,remain字段是当天剩余配额。如果返回error,常见的错误是token过期或站点未验证。
Python版本(适合服务器端定时任务):
import requestsurls = ['https://你的域名.com/page1.html', 'https://你的域名.com/page2.html']api = 'http://data.zz.baidu.com/urls?site=你的域名&token=你的token'headers = {'Content-Type': 'text/plain'}resp = requests.post(api, data='\n'.join(urls), headers=headers)print(resp.json())第三步:配定时任务
脚本写好后不能每次手动跑。在服务器上配置定时任务让它自动执行。以宝塔面板为例:进入"计划任务",添加一个Shell脚本任务,执行周期设为每小时或每6小时,脚本内容大致是:
#!/bin/bash# 获取最近1小时内新增的文章URL列表# 方法1:从数据库直接查# 方法2:扫描sitemap中新增的URL# 然后调用Python脚本推送到百度python3 /www/wwwroot/你的站点/baidu_push.py定时任务的核心逻辑是:只推新增内容,不重复推老URL。重复推送同一个URL不仅浪费配额,还可能被百度判定为异常行为。实现方式有两种:一是从数据库记录上次推送时间,只查之后新增的文章;二是在推送脚本里维护一个已推送URL的日志文件,每次推送前先对比去重。
三、Google收录怎么自动推?两条路:Indexing API和Sitemap ping
Google的收录推送逻辑和百度不太一样。Google没有像百度那样对所有站点开放一个简单的"提交URL列表"的API。Google提供的是Indexing API,但这个API有明确的使用场景限制。
路径一:Indexing API
官方设计给JobPosting(招聘信息)和BroadcastEvent(直播活动)类页面用的。理论上只有这两类页面才能合法使用,但实际上很多站长用它推所有类型页面,Google目前没有严格封禁。配置流程:在Google Cloud Console创建服务账号→启用Indexing API→下载JSON密钥→用Python调用。每天200条配额。
路径二:Sitemap + Ping
对所有站点通用的方案。在Google Search Console提交Sitemap后,可以通过ping的方式通知Google重新抓取:http://www.google.com/ping?sitemap=你的sitemap地址。另外GSC后台的"网址检查"功能可以提交单个URL进行索引请求,单日限额约10-15条。
Indexing API的配置相对繁琐,需要Google Cloud Console、服务账号、OAuth 2.0认证等一系列操作。下面是核心Python代码:
from google.oauth2 import service_accountfrom googleapiclient.discovery import buildSCOPES = ['https://www.googleapis.com/auth/indexing']KEY_FILE = '你的服务账号密钥.json'credentials = service_account.Credentials.from_service_account_file(KEY_FILE, scopes=SCOPES)service = build('indexing', 'v3', credentials=credentials)# 推送新URL(通知Google有新页面)body = {'url': 'https://你的域名.com/new-page.html','type': 'URL_UPDATED'}response = service.urlNotifications().publish(body=body).execute()print(response)一个常见的坑:Indexing API需要在Google Search Console中先验证域名所有权,且服务账号的邮箱要添加到GSC的用户管理里(权限设为"拥有者")。很多人配完了API调用返回403,就是漏了这一步。另外每天200条的配额用完就报429错误,需要做频率控制。
四、IndexNow:一个key搞定Bing+Yandex+Seznam三个引擎
IndexNow是Bing和Yandex联合推出的推送协议,目前支持的搜索引擎包括Bing、Yandex、Seznam.cz、Naver。它的最大优势是一次推送,多个引擎同时收到——你把URL推给IndexNow,所有支持IndexNow的搜索引擎都会去抓取。不需要每个引擎单独配一套API。
配置IndexNow非常简单。首先需要一个API Key(就是一个字符串,自己随便定义一个就行,比如一个UUID),把这个key文件放到网站根目录:
# 在网站根目录创建一个文本文件,文件名就是你的key值# 例如 key = abc123def456,那么文件路径是:# https://你的域名.com/abc123def456.txt# 文件内容也是:abc123def456然后通过HTTP请求推送URL,接口格式为:
POST https://api.indexnow.org/indexnowContent-Type: application/json{"host": "你的域名.com","key": "abc123def456","keyLocation": "https://你的域名.com/abc123def456.txt","urlList": ["https://你的域名.com/page1.html","https://你的域名.com/page2.html"]}一次请求最多可以推1万条URL,而且IndexNow没有每日配额限制——这是它和百度API、Google Indexing API最大的区别。对于内容更新频繁的站点,IndexNow是最省心的推送方案。
| 对比维度 | 百度API推送 | Google Indexing API | IndexNow |
|---|---|---|---|
| 覆盖引擎 | 百度 | Bing、Yandex、Seznam、Naver | |
| 每日配额 | 约100条(普通站) | 200条 | 无限制 |
| 配置难度 | 低(一个token) | 高(GCP+OAuth+服务账号) | 极低(一个txt文件) |
| 使用限制 | 无场景限制 | 官方限定JobPosting/BroadcastEvent | 无场景限制 |
| 推送生效速度 | 快(分钟级) | 较快(小时级) | 快(分钟到小时级) |
五、推送不是推了就完事,推完不查等于没推
很多人把推送脚本配好、定时任务跑起来就以为万事大吉了。但实际上推送这件事有很多"暗坑":推送成功不等于收录成功,推送失败也可能没有明显的报错提示。
推送返回success但实际未收录
百度API返回success只表示"百度收到了你的推送请求",不代表页面会被收录。如果页面内容质量差、被判定为低质内容,推送成功也不会收录。推送解决的是"发现"问题,不是"质量"问题。
配额在后台悄悄用完了
百度API返回的remain字段要关注。如果remain变成0,后续推送都会被拒绝。很多定时脚本没有做配额检查,配额用完了还在跑,推了个寂寞。

推送的URL格式不对
带参数的URL、URL中包含中文、http和https混用、URL中带了#锚点——这些都可能导致推送失败或被搜索引擎忽略。推送前要做URL规范化处理。
推送频率过快触发限流
短时间内连续推送大量URL,可能被百度判定为异常行为并暂时封禁token。建议推送间隔至少1秒,单次推送不超过2000条。
推送完成后需要做的事:去百度站长平台的"索引量"页面看推送后的索引变化趋势;在Google Search Console的"覆盖率"报告里检查已提交URL的索引状态;IndexNow推送后可以在Bing Webmaster Tools里查看URL提交记录。如果发现推送了但一直没被索引,回头检查页面本身的质量——是不是内容太少?是不是被noindex了?是不是robots.txt挡住了?
六、一个站好说,十个站怎么办
单站推送配置一次也就十几分钟的事。但如果手上有5个、10个甚至更多的站点,每个站都要分别配置百度token、Google服务账号、IndexNow key,还要分别写定时脚本、分别监控推送状态——这个工作量就不是简单的倍数关系了。
多站推送有几个绕不开的问题:
· token/密钥管理混乱。每个站一个token、一个key、一个服务账号JSON,时间一长容易搞混哪个文件对应哪个站。
· 推送状态不可见。每个站推送成功了多少条、失败了多少条、剩余配额多少,没有统一的地方看。
· 定时任务分散在各台服务器上。如果站点部署在不同服务器,定时任务也分散在各处,某个任务挂了可能很久才发现。
· 推送策略不统一。有的站推百度+IndexNow,有的只推百度,有的忘了配IndexNow,覆盖面不一致。
多站场景下,用UC建站系统的双通道推送可以统一解决:系统后台集中管理所有站点的推送凭证,内容发布后自动触发百度API推送和IndexNow推送两条通道,每个站的推送状态、成功率、配额消耗在一个看板里一目了然。相比每个站单独写脚本配定时任务,多站管理的效率差距在10倍以上。
| 站点规模 | 推荐方案 | 百度推送 | Bing/Yandex | 管理方式 | |
|---|---|---|---|---|---|
| 1个站 | 手写脚本+定时任务 | PHP/Python脚本 | Sitemap ping | IndexNow脚本 | 宝塔定时任务 |
| 2-5个站 | 统一推送脚本+配置文件 | 多token循环推送 | Sitemap ping | 多key循环推送 | 统一crontab |
| 5个站以上 | 系统化推送平台 | 自动双通道推送 | Indexing API | IndexNow批量推送 | 统一看板监控 |
七、推送之外的三个兜底手段
推送是收录加速器,但不是收录保证书。推送做得再好,如果搜索引擎来了发现页面质量不行,照样不收。所以在推送体系之外,有三个兜底手段不能忽略。
第一个是Sitemap。不管推送做得多好,Sitemap是底线兜底方案。推送可能会漏(配额用完、脚本出错、token过期),但Sitemap只要提交了,搜索引擎早晚会来抓。Sitemap的更新频率建议至少每天一次,如果站点更新频繁可以更高。WordPress可以用Yoast SEO或Rank Math自动生成并更新Sitemap,静态站可以用脚本在构建时生成。
第二个是内链结构。搜索引擎发现新页面的方式不止推送一种,通过已有页面的链接也能发现。如果你的站内链接结构清晰——每篇新文章至少在首页或分类页有入口,文章之间有合理的相关推荐链接——即使推送出了问题,蜘蛛爬老页面的时候也能顺着链接摸到新内容。反过来,如果新页面是"孤岛",没有任何内部链接指向它,光靠推送被发现,收录后排名也会很差。
第三个是外链触发。一个新页面如果能从外部获得一两个高质量链接(哪怕只是社交媒体分享),搜索引擎发现它的速度会比单纯等推送快得多。这不是说要去买外链,而是在内容发布后主动做一些分发——发到知乎、发到相关论坛、发到社交媒体——这些平台本身被搜索引擎高频抓取,蜘蛛顺着这些平台的链接就能很快到达你的新页面。
仅靠推送
1-4天
从发布到索引的平均时间
推送+完善内链
几小时-1天
从发布到索引的平均时间
推送+内链+外链分发
几分钟-几小时
从发布到索引的平均时间
八、推送上线前的六项检查清单
在把推送体系正式上线之前,有几项检查不能省。下面这张清单涵盖了最常见的翻车点:
| # | 检查项 | 不做的后果 | 怎么做 |
|---|---|---|---|
| 1 | 百度token是否有效 | 推送全部失败,返回error | 手动POST一条URL测试返回success |
| 2 | robots.txt是否阻挡了目标URL | 推送成功但蜘蛛被robots挡住无法抓取 | 检查robots.txt,确保没有Disallow目标路径 |
| 3 | 页面是否有noindex标签 | 搜索引擎收到推送但拒绝索引 | 检查页面meta标签,确保没有<meta name="robots" content="noindex"> |
| 4 | 定时任务是否正常运行 | 以为在推,实际上脚本没在跑 | 查看crontab日志,确认最近一次执行时间和结果 |
| 5 | 推送的URL是否都是200状态码 | 推了404/301/500页面,浪费配额且影响信用 | 推送前用脚本批量检查URL状态码,过滤掉非200的 |
| 6 | IndexNow key文件是否可访问 | IndexNow推送被拒绝 | 浏览器访问https://你的域名.com/key值.txt,确认返回200 |
自动推送收录这件事,说到底不难——百度一条API、Google一条Indexing API、Bing/Yandex一条IndexNow,配好定时任务让它们自己跑。但难在三点:一是三条通道要配全,不能只盯着一家引擎;二是推送后要看反馈,不能推完就不管了;三是站点多了之后要从手工脚本升级到系统化管理。
最后说一句:推送解决的是"让搜索引擎知道你发了新内容"的问题,但它解决不了"搜索引擎觉得你内容值不值得收"的问题。如果推送了很久还是不收录,别死磕推送频率和配额,回头看看页面本身——内容厚度够不够、有没有原创价值、页面加载速度怎么样、是不是被判定为低质模板页。推送是加速器,不是起死回生药。
