GEO优化 / 收录

百度收录接口,我们碰到的两个边界

往百度推 URL 这件事,我们踩过两个坑。一个在参数写法上,一个在判定规则上。这篇把两次实测的结论摆出来。

给站群做收录提交这件事,我们踩过的坑不多,但都踩得很实。挑两个跟百度有关的说,一个在参数上,一个在规则上。

参数上:site 不能做 URL 编码

往百度的普通收录接口推 URL,请求里的 `site` 参数要填你的站点。这个参数必须原样给,写成 `site=https://example.com` 就行。

我们当时手一抖,把它做了一次 URL 编码。接口返回 400,报 `site init fail`。

排查了半天才反应过来,它不解码。编码之后那串字符在它眼里不是站名,是一个不认识的字符串。看起来更规范的写法,在这里反而是错的。

这个错误我们犯了两次。头一回改好了,隔了几天写新脚本的时候又写进去了,因为它长得很像「应该被编码」的样子。

所以如果你写的是通用提交函数,记得给 `site` 单独留一条不带编码的路,别顺手跟其他参数一起处理。

规则上:能不能收,看的是两个条件

关于这个接口,网上流传的说法是「token 绑定域名」。我们实测下来,这个说法不准确,会让人绕远路。

10 月 5 日那天我们拿四种组合跑了一遍,结论是每次调用同时看两件事:

`site` 必须是你百度账号里已经添加并且验证过的站点。token 本身是账号级的,一个账号一个 token,不绑具体域名。

你提交的 URL 的 host,必须和 `site` 完全一致。

四种组合跑出来是这样:

`site` 填站群主域,推主域首页,通过。

`site` 填官网主域,推官网页面,通过。

`site` 填不带 www 的裸域,推带 www 的地址,返回 `not_same_site`。这就是 host 不一致。

`site` 填某个城市子域,推该子域的页面,返回 401 `site error`。原因是这个子域压根没在账号里注册过,前面那条就不满足。

之前我们还误判过一次,把 `not_same_site` 解释成「百度不接收子域名」。查清楚之后才发现,真实原因是 host 没对上,跟子域本身没关系。

这两条对我们的做法有什么影响

如果手上是一个主域加一堆子域的站群,最省事的做法不是给每个子域单独注册再去推。

每个子域都要在站长平台单独添加并验证,验证文件还得一个个放上去,维护成本会随着站数线性上涨。

我们最后走的是另一条路:把主域的 sitemap 做成索引文件,里面列出各个子域的 sitemap。提交一次主域的索引,搜索引擎顺着往下抓,各子域的 sitemap 自然会挨个被取走。这套我们实测是通的。

顺带一句,主域本身的推送也别浪费。主域的页面链着全部子站,百度重抓主域一次,就多一次发现子站的机会。

边界

上面这些只对百度的普通收录接口成立。Bing 和 IndexNow 是另一套规则,别混用。

另外,`site` 参数虽然不能编码,URL 本身还是要正常编码的,这两处别一起改错。

提交收录是 GEO 里最靠后,也最容易被忽略的一环。内容做得再好,页面进不了索引,等于没写。桐灼在给客户做交付的时候会把这一环单独列出来验收,就是因为它出问题的时候,前面所有工作都看不出来。

Talk to Tongzhuo

你遇到的问题,可以变成下一篇文章

桐灼做全域 AI 搜索的 GEO 优化,也把过程里真实发生的事写出来。有具体问题可以直接问。

预约业务诊断

先看清 AI 现在怎么描述你的企业,再决定投入。

联系我们 →