百度搜索资源平台链接提交API实战:实时推送新文章

你有没有遇到过这种情况:文章发了一周了,百度还没收录?

我之前就经常遇到。后来发现,问题出在没有主动推送给百度

百度蜘蛛虽然会主动来爬你的网站,但它不是神仙,不可能时刻盯着你。你发了新文章,最好主动告诉百度一声:"嘿,我更新了,快来抓!"

今天讲讲怎么用百度搜索资源平台的API,实现新文章自动推送。

百度链接提交有哪几种方式?

百度搜索资源平台(以前叫百度站长平台)提供了几种链接提交方式:

1. 主动推送(API推送)

这是最快的方式。你发文章后,立即调用百度的API,把链接推送给它。

优点:最快,几分钟内百度就能收到

缺点:有配额限制,每天最多推多少条(新站配额少,老站配额多)

2. Sitemap提交

你把网站的所有链接整理成一个Sitemap文件,提交给百度。

优点:一次性提交大量链接,适合老站

缺点:百度不会立即抓取,可能要等几天

3. 手动提交

在百度搜索资源平台后台,手动输入链接提交。

优点:没优点,就是手动

缺点:麻烦,只适合临时用

推荐做法:API推送+Sitemap组合使用

新文章用API推送(保证快速收录),老链接放在Sitemap里(让百度慢慢抓)。

怎么申请百度链接提交API?

第一步:登录百度搜索资源平台

网址:https://ziyuan.baidu.com

用你的百度账号登录,然后添加你的网站(如果还没添加的话)。

第二步:获取推送接口调用地址

进入"链接提交" -> "主动推送",你会看到一个接口调用地址,类似这样:

```

http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx

```

这个地址里有两个重要参数:

  • `site`:你的网站域名
  • `token`:你的密钥(别泄露给别人)

第三步:测试接口是否可用

你可以用curl测试一下:

```bash

curl -H 'Content-Type:text/plain' -d 'https://www.wushuangbk.com/post/123.html' 'http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx'

```

如果返回类似这样的结果:

```json

{

"success": 1,

"remain": 4999

}

```

说明接口正常。`remain`表示今天还能推送多少条。

用Python写个自动推送脚本

有了接口地址,就可以写脚本自动推送了。

基础版本:推送单个链接

```python

import requests

def push_url(url):

api_url = "http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx"

headers = {"Content-Type": "text/plain"}

response = requests.post(api_url, headers=headers, data=url)

result = response.json()

if "success" in result:

print(f"推送成功!剩余配额:{result['remain']}")

else:

print(f"推送失败:{result}")

用法

push_url("https://www.wushuangbk.com/post/123.html")

```

进阶版本:批量推送

```python

def push_urls(url_list):

api_url = "http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx"

headers = {"Content-Type": "text/plain"}

# 把多个URL用换行符拼接

data = "\n".join(url_list)

response = requests.post(api_url, headers=headers, data=data)

result = response.json()

print(f"成功推送 {result.get('success', 0)} 条")

print(f"今天剩余配额:{result.get('remain', 0)}")

if "not_valid" in result:

print(f"无效的URL:{result['not_valid']}")

用法

urls = [

"https://www.wushuangbk.com/post/123.html",

"https://www.wushuangbk.com/post/124.html",

"https://www.wushuangbk.com/post/125.html",

用法-第1张图片-无双博客

]

push_urls(urls)

```

接入博客发布流程:发文章时自动推送

如果你用的是Z-Blog或者WordPress,可以写一个插件,在文章发布时自动调用推送接口。

Z-Blog的实现方法

Z-Blog有"模块插件"机制,你可以在文章发布后的钩子函数里调用推送接口。

```php

function push_to_baidu($post) {

$url = $post->Post_Url;

$api_url = "http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $api_url);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));

$result = curl_exec($ch);

curl_close($ch);

// 记录日志

file_put_contents("baidu_push.log", date('Y-m-d H:i:s') . " - " . $result . "\n", FILE_APPEND);

}

// 挂载到文章发布钩子

Add_Filter_Plugin('Filter_Post_Update', 'push_to_baidu');

```

WordPress的实现方法

WordPress有`publish_post`钩子,可以在文章发布时执行自定义函数。

```php

function push_to_baidu($post_id) {

$url = get_permalink($post_id);

$api_url = "http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx";

$response = wp_remote_post($api_url, array(

'headers' => array('Content-Type' => 'text/plain'),

'body' => $url

));

$result = wp_remote_retrieve_body($response);

error_log("Baidu push result: " . $result);

}

add_action('publish_post', 'push_to_baidu');

```

推送失败的常见原因

原因一:配额用完了

百度给每个网站的推送配额是有限的。新站可能一天只有几十条的配额,老站可能有几千条。

如果返回这样的结果:

```json

{

"error": 400,

"message": "over quota"

}

```

说明配额用完了,明天再推。

原因二:URL格式不对

百度要求推送的URL必须是:

  • 完整的URL(包含`http://`或`https://`)
  • 已经在你的网站上存在的页面
  • 不能是重复推送的(同一个URL一天只能推一次)

原因三:网站没验证

如果你在百度搜索资源平台里没验证网站所有权,接口会返回错误。

原因四:接口地址错了

检查你的接口地址是不是最新的。百度偶尔会更新接口地址,旧地址可能失效。

推送后的效果怎么样?

我自己测试过,用API推送的文章,收录速度明显快于不推送的。

实测数据:

推送方式平均收录时间
不推送7-14天
Sitemap提交3-7天
API推送1-3天

当然,这个数据仅供参考。收录速度还跟网站权重、内容质量、更新频率有关。

进阶玩法:用API推送新链接+更新链接

百度的接口不但可以推送新文章,还可以推送"更新过的文章"。

比如你修改了一篇老文章,想让百度重新抓取,就可以把URL再推一次(注意,同一个URL一天只能推一次)。

我自己的做法是:

  • 新文章发布时,立即推送
  • 老文章大改后,推送一次
  • 每天晚上,把当天更新的所有文章URL批量推送一次

这样可以保证百度最快速度发现你的网站变化。


FAQ

Q:推送了就一定会收录吗?

A:不一定。推送只是告诉百度"这个页面存在",至于收不收录,还得看内容质量。如果内容太水,推送了也没用。

Q:一天可以推送多少次?

A:没有次数限制,但有配额限制。比如你一天配额是500条,那你推送500条后就不能再推了。配额每天早上刷新。

Q:推送重复的URL会怎么样?

A:百度会忽略重复的推送,不会报错,但会浪费你的配额。所以别重复推送同一个URL。

Q:API推送和Sitemap提交冲突吗?

A:不冲突。你可以同时使用。事实上,推荐同时使用,API推新文章,Sitemap放老文章。

Q:百度的接口稳定吗?会不会经常挂?

A:还算稳定。我用了两年,只遇到过一次接口维护(大概停了半天)。如果接口挂了,你的文章也不会受影响,只是收录可能慢一点。


推荐阅读


联系方式

有百度收录问题欢迎交流,微信号:15207283116


标签:百度搜索资源平台, API推送, 链接提交