赞
踩
博客上线已经有些日子了,却发现百度迟迟没有收录我的博客页面,在百度推送工具当中除了有自动推送的代码嵌入网站之外,还有一个实时的主动推送更高效。
最近刚好了解到GitHub Actions的定时运行代码功能,可以用它来每天自动运行命令生成所有博客链接并进行一次性推送给百度。
GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,但也可用作代码运行环境。功能非常强大,能够玩出许多花样。
链接主动推送在百度站长中有介绍,如图。
具体使用方法就是创建一个文件urls.txt
,文件内每行一条链接的格式写入提交的多个链接,如图。
运行命令
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=xugaoyi.com&token=T5PEAzhG*****"
上面命令的地址和参数由百度站长提供。运行完命令会返回推送结果,不出意外的话就会把urls.txt
内的所有链接一次性推送给百度。
这个方法虽然比嵌入网站头部的自动推送更高效,但是也有它的麻烦之处,就是得自己填入链接到urls.txt
文件,然后手动运行命令。
没关系,技术的本质就是让人"偷懒"的。于是,我写了一个nodejs工具,用于把所有的博客页面链接生成到urls.txt
- // baiduPush.js
-
- /**
- * 生成百度链接推送文件
- */
- const fs = require('fs');
- const path = require('path');
- const logger = require('tracer').colorConsole();
- const matter = require('gray-matter'); // FrontMatter解析器 https://github.com/jonschlinkert/gray-matter
- const readFileList = require('./modules/readFileList');
- const urlsRoot = path.join(__dirname, '..', 'urls.txt'); // 百度链接推送文件
- const DOMAIN = process.argv.splice(2)[0]; // 获取命令行传入的参数
-
- if (!DOMAIN) {
- logger.error('请在运行此文件时指定一个你要进行百度推送的域名参数,例:node utils/baiduPush.js https://xugaoyi.com')
- return
- }
-
- main();
- function main() {
- fs.writeFileSync(urlsRoot, DOMAIN)
- const files = readFileList(); // 读取所有md文件数据
-
- files.forEach( file => {
- const { data } = matter(fs.readFileSync(file.filePath, 'utf8'));
-
- if (data.permalink) {
- const link = `\r\n${DOMAIN}${data.permalink}/`;
- console.log(link)
- fs.appendFileSync(urlsRoot, link);
- }
- })
- }
上面代码仅是针对我个人的博客生成链接到urls.txt
文件。更多代码在 这里
(opens new window)。
运行如下命令就可以生产一个包含博客所有链接的urls.txt
文件:
node utils/baiduPush.js https://xugaoyi.com
哈哈,第一个麻烦解决了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。