
做SEO的同行都知道,百度快照一旦卡壳,整站流量就像被按了暂停键。上周我手里的一个B2B站,快照整整滞后了11天,老板急得把咖啡泼键盘上。我连夜把站点从手工提交改成API主动推送,凌晨一点推送,早上九点快照就跳到了最新文章。下面把全过程拆开,你照着做,三小时见效不是吹。
一、先搞清楚:快照更新慢的根子在哪
百度站长后台给出的官方口径是“系统按站点质量自动调度”。翻译成人话:服务器响应、页面改动幅度、抓取频次、链接健康度四条线,只要有一条掉链子,快照就原地踏步。
我拉了近30天日志,发现最坑的是服务器TTFB高于600ms,蜘蛛来了三次都被504劝退。把Nginx缓存开了以后,TTFB压到180ms,再配合API推送,才算把蜘蛛重新请回来。
二、API推送的门槛与避坑
很多人以为拿到token就万事大吉,结果推送返回{“remain”:0},直接被打回。我踩过的坑:
- 域名必须已验证主域,子域推送无效。
- 单次最多2000条,多了直接丢包。
- 推送地址要URL Encode,带中文会报400。
最稳妥的做法:用Python写个脚本,每次推送前校验HTTP状态码,200才进队列。
三、三小时实战流程(附代码)
1. 拿到token
登录百度站长平台 → 我的站点 → 资源提交 → API提交 → 复制token。
2. 准备链接池
把当天更新的URL丢进txt,每行一条。我写了个Shell一行搞定:
find /var/www/html -type f -name "*.html" -mtime -1 | awk -F'/' '{print "https://你的域名.com/"$NF}' > new.txt
3. 推送脚本
用curl最干脆,三秒一条,避免被限流:
#!/bin/bash
while read line; do
curl -H 'Content-Type:text/plain' --data-binary "$line" "http://data.zz.baidu.com/urls?site=https://你的域名.com&token=你的token&type=realtime"
done < new.txt
4. 验证效果
推送完十分钟,site:域名查看最新一条快照时间;三小时后,基本同步。
四、把API推送嵌进日常流程
我现在的做法:用Git钩子触发。每次git push到生产分支,钩子自动跑上面的脚本,推送新生成的URL。一天发十篇,蜘蛛就爬十趟,快照延迟从三天缩短到三小时以内。
注意:老文章改标题或内链,也要重新推送,不然快照不会刷新。
五、常见疑问一次性答完
Q:推送了没收录怎么办?
A:先查返回码,{“success”:0}多半是token错;{“success”:1}但site不到,说明页面质量不过关,先把重复内容清干净。
Q:能不能用第三方插件?
A:WordPress的Baidu Submit插件我测过,推送成功率只有78%,不如自己写脚本稳。
Q:每天推送上限是多少?
A:官方没给死数,我试过一天推两万条,remain值降到个位数就停手,第二天继续。
六、2025年实测数据
上个月我跑了三组对比:
站点 | 推送方式 | 平均快照延迟 |
---|---|---|
A | 手动提交 | 4.2天 |
B | API实时推送 | 1.8小时 |
C | API+服务器优化 | 0.9小时 |
光推送不够,服务器响应和页面质量要同步抓。
脚本你拿去改两行就能跑。今晚推送,明早看快照,别再让流量卡在旧页面上。
暂无评论内容