我们将自己的博客信息主动报给百度搜索资源平台,能够具备很多优势。百度收录了我们的资源信息后,其他人使用百度搜索相关的关键字后我们的资源才有较大的可能被别人搜索到。

核心价值

  1. 快速收录:技术文章时效性强,必须快速被搜索到
  2. 精准流量:吸引真正需要你技术内容的读者
  3. 专业认证:在百度体系中建立技术权威形象
  4. 零成本高回报:30分钟配置,长期受益

注册百度搜索资源账号

  • 首先打开百度搜索资源平台网址,如果已经有百度账号则直接关联即可,没有则需要进行注册百度账号。
  • 注册完成后需要在搜索资源平台的站点管理中添加我们的站点。
  • 站点验证,百度会提供给我们验证码或者一个相关网页的形式让我们进行验证。
  • 我的博客是选择了百度网页,直接下载这个网页放到hexo博客的sources目录下。下次打包生成的时候会把这个html打进去,这样部署到服务端进行验证即可通过。

引入插件

在博客目录中引入hexo-baidu-url-submit插件模块,这样我们的博客就具备推送功能了。

1
2
3
$ pnpm install hexo-baidu-url-submit --save		
$ pnpm install hexo-generator-sitemap --save
$ pnpm install hexo-generator-baidu-sitemap --save

修改配置

在_config.yml中进行修改配置加入百度推送的配置参数

1
2
3
4
5
6
7
8
9
10
11
# 站点地图配置
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml
# 百度主动推送配置
baidu_url_submit:
count: 100
host: https://www.olinecloud.top # 注意:必须是 https://
token: #这个地方放入你的token,就是第二个图片中箭头所指的地方
path: baidu_urls.txt

特别注意

如果我们的博客中使用了landscape或者butterfly等主题,那么我们的博客目录底下会有两个yml文件。例如我的博客用的是butterfly主题,那我的目录下配置文件如图所示

以前都是想当然地将配置参数写入到config_butterfly.yml中。这样就会导致错误,报错提示:baidu_url_submit模块找不到count等参数。这就需要我们把百度主动推送配置写入到_config.yml中,这样百度推送模块的generator.js就能正确识别了。

排查过程

反复出现这个问题没法解决很郁闷,只好打开node_modules目录去看百度的插件源码,希望能够从这里找到一些信息。

1
2
3
$ cd node_modules/hexo-baidu-url-submit/lib
$ ls
generator.js submitter.js xz_submitter.js

当时hexo g生成博客的时候提示了generator.js中第4行报错。只好打开generator.js进行查看。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
module.exports = function (locals) {
var log = this.log;
var config = this.config;
var count = config.baidu_url_submit.count;
var urlsPath = config.baidu_url_submit.path;

log.info("Generating Baidu urls for last " + count + " posts");

// get last posts
var urls = [].concat(locals.posts.toArray())
.map(function(post) {
return {
"date": post.date,
"permalink": post.permalink
}
})
.sort(function(a, b) {
return b.date - a.date;
})
.slice(0, count)
.map(function(post) {
return post.permalink
})
.join('\n');

log.info("Posts urls generated in " + urlsPath + "\n" + urls);

return {
path: urlsPath,
data: urls
};
};

这个时候就加入一行打印console.log(JSON.stringify(config));再次执行hexo g的时候发现打印的配置文件是_config.yml中的。此时就恍然大悟了。赶紧把_config_butterfly.yml中关于百度推送的信息放入到_config.yml中解决问题。