楔子
百度支持提交地址 但对于我们这种站是不支持sitemap的 你可以手动提交数据 我们就用Hexo来实现这个提交
实现思路
NodeJS是现学现卖的 Hexo开发也没接触过 我折腾了一下午加一晚上才弄了个半成品 还不知道怎么把它变成一个可以安装的包
思路是 在生成的时候生成一个urls.txt
文件 里面是所有文章的链接 注册一个submit
功能 这样的话 运行hexo submit
的时候用curl
把文件提交就可以了
下面把代码贴出来罢
index.js
1 2 3 4 5 6 7
| 'use strict';
hexo.extend.generator.register('submit', require('./lib/generator'));
hexo.extend.console.register('submit', 'Submit to Baidu.', { desc: 'Submit to Baidu search engine.' }, require('./lib/submit'));
|
/lib/generator.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 'use strict';
module.exports = function(locals){ var config = this.config; var posts = locals.posts.sort('-date'); posts = posts.limit(config.submit.limit || 20); var url = ""; posts.forEach(function(post){ url += encodeURI(post.permalink); url += '\n'; }); return { path: 'urls.txt', data: url }; };
|
submit.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
| 'use strict';
var fsFn = require('fs'); var util = require('hexo-util'); var spawn = util.spawn;
module.exports = function(locals){ var config = this.config; if (!config.submit.token) hexo.exit(); var sub_url = 'http://data.zz.baidu.com/urls?site='; sub_url += config.url.replace('http://', ''); sub_url += '&token='; sub_url += config.submit.token; console.log(sub_url); var params = [ '-H', '\'Content-Type:text/plain\'', '--data-binary', '\'@./public/urls.txt\'', '\'' + sub_url + '\'' ]; return spawn('curl', params, {verbose: true}).then(function(){ fsFn.unlink('./public/urls.txt', function (err){ if (err) throw err; }); }); };
|
本文标题:自动提交Hexo博客的地址到百度
文章作者:Chris
发布时间:2015-05-23
最后更新:2022-03-23
原始链接:https://chriszheng.science/2015/05/23/Submit-Hexo-URL-to-Baidu/
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!