Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lete114/hexo-seo-autopush
Daily automatic submission of urls to baidu and Google bing | 每天自动提交url到百度和谷歌必应
https://github.com/lete114/hexo-seo-autopush
autopush baidu baidu-api bing bing-api google google-indexing-api hexo hexo-plugin seo submit
Last synced: about 11 hours ago
JSON representation
Daily automatic submission of urls to baidu and Google bing | 每天自动提交url到百度和谷歌必应
- Host: GitHub
- URL: https://github.com/lete114/hexo-seo-autopush
- Owner: Lete114
- Created: 2020-12-02T10:37:34.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-07-07T12:42:29.000Z (4 months ago)
- Last Synced: 2024-11-06T04:02:55.837Z (7 days ago)
- Topics: autopush, baidu, baidu-api, bing, bing-api, google, google-indexing-api, hexo, hexo-plugin, seo, submit
- Language: JavaScript
- Homepage: https://blog.imlete.cn/article/hexo-seo-autopush.html
- Size: 97.7 KB
- Stars: 84
- Watchers: 2
- Forks: 17
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## 说明
每天中午 12 点推送一次网站信息到 Baidu 和 Bing,提高爬虫抓取几率
可手动点击`star`触发 Actions
简述一下整个流程。
以`bing`搜索引擎为例,插件运行以后会生成两个文件,一个是`.github/workflows/HexoSeoAutoPush.yml`的`Github Action`配置文件,一个是`bing.json`存放需要推送的`url`。我自己只推送给了`bing`引擎,其他引擎若有细微区别,请自研。这些都会生成在打包的文件当中,最终会被推送到部署分支。`HexoSeoAutoPush.yml`会读取部署分支的`bing.json`的内容然后进行推送。因此注意到一件事情,不管是每天自动触发,还是手动`star`触发的`Action`,都需要保证`HexoSeoAutoPush.yml`位于项目的默认分支才能生效。结合起来可以知道,部署分支必须是默认分支才能使得插件生效。问题来了,不是每个人的部署分支都是默认分支。比如我的默认分支就是源代码分支,部署分支就是普遍的`gh-pages`。
那该如何解决这个问题呢?留意到`actions.js`中使用了[actions/checkout@main](https://github.com/actions/checkout)来`checkout`一个仓库,但是没有添加部署分支的相关属性,默认这里是`checkout`默认分支,和上面对应。得知这一点以后,顺理成章加上部署分支`deployBranch`的相关逻辑,彻底将部署分支和默认分支区别开。这样最终的使用方法就明确了。在打包文件中生成`HexoSeoAutoPush.yml`以后,手动将他拷到默认分支的`.github/workflows/`中。记得如果有时间周期、提交数目或者部署分支的改动以后,请同步此文件到默认分支。其他使用方式同原插件不变。
## 使用
1. 安装
```bash
npm install hexo-seo-autopush --save
```2. 配置文件
在 hexo 的 \_config.yml 配置文件中添加以下内容```yml
# enable: 开启/关闭 推送
# cron: 执行时间周期
# deployBranch: 部署分支
# count: 每次提交最新的10篇文章,输入0或者不填写则默认为所有文章(建议是最新的10篇文章)
# date: 更新时间(updated)|创建日期(created)
# https://github.com/Lete114/hexo-seo-autopush.git
hexo_seo_autopush:
cron: 0 4 * * *
deployBranch:
baidu:
enable: true
date: created
count: 10
bing:
enable: true
date: created
count: 10
google:
enable: true
date: created
count: 10
```由于生成的 actions 是在`.github/workflows/HexoSeoAutoPush.yml`,点开头的文件或文件夹都会被视为隐藏文件,所以 hexo 不会将隐藏文件部署到 pages,需要新增配置`ignore_hidden`
```yml
deploy:
type: git
repo: https://github.com//
# example, https://github.com/hexojs/hexojs.github.io
branch: gh-pages
ignore_hidden: false # 忽略隐藏文件及文件夹(目录)
```3. 安全设置
打开你博客仓库地址如下图
![Secrets](https://user-images.githubusercontent.com/48512251/137736248-80c8ae8d-7f5e-40b1-81f9-4a1bb78fcd8f.png)| Name | Value | 说明 |
| ------------------- | ----------------- | ------------------------------------------------------------------------------------------------------ |
| baidu_token | UlxxxxxxxxxxxxxB9 | 【必填】Value 输入百度的 token |
| bing_apikey | 47xxxxxxxxxxxxx91 | 【必填】Value 输入必应的 apikey |
| google_private_key | xxxxxxxxxxxxxxxxx | 【必填】Value 输入谷歌的 private_key (注意:填写的时候需要使用**双引号**包起来,如: `"private_key"`) |
| google_client_email | xxxxxxxxxxxxxxxxx | 【必填】Value 输入谷歌的 client_email |## Baidu key
打开百度站长平台,点击左侧的普通收录[https://ziyuan.baidu.com](https://ziyuan.baidu.com)
![baidu](https://user-images.githubusercontent.com/48512251/162598076-98018258-293a-49b8-8b3c-6f985c1df7e5.png)## Bing key
1. 打开 Bing 站长平台 [https://www.bing.com/webmasters/home](https://www.bing.com/webmasters/home)
2. 点击右上角头像 旁边的齿轮,跟着下图操作
![bing](https://user-images.githubusercontent.com/48512251/162598122-120851b9-65c3-42ee-b847-dbc5bc06abcd.png)## Google key
### (1) 开启Indexing API
打开[Google indexing API](https://console.developers.google.com/flows/enableapi?apiid=indexing.googleapis.com&credential=client_key)
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-开启-创建项目.jpg)
如果账号中没有项目, 点击`创建项目`, 创建完项目后继续下面的操作.
点击`下一步`, `开启`即可.
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-开启-开启API.jpg)
开启完成就是这样, 感觉像是卡住了.
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-开启-开启完成.jpg)
### (2) 打开凭证页面![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-创建凭证-进入创建页面.jpg)
### (3) 创建服务账号
点击`创建凭证`, 点击`服务账号`.
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-创建凭证-创建服务账号.jpg)
`输入`服务账号名称, 然后直接点击`完成`,
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-创建凭证-服务账号名称.jpg)
### (4) 创建凭证
点击刚刚创建的服务账号
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-创建凭证-服务账号详情.jpg)
点击`密钥`标签, 点击`添加密钥`, 点击`创建新密钥`.
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-创建凭证-创建密钥2.jpg)
选择JSON格式, 点击`创建`, 然后JSON格式的密钥就会自动下载到电脑中.
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-创建凭证-json密钥.jpg)
json文件内的内容,
> 以下信息已经过修改,并且已删除相关的申请,仅用于参考
>
> 其中`private_key`和`client_email`是该项目需要的,
>
> 注意在GitHub中的Secrets名为, `google_private_key`和`google_client_email````json
{
"type": "service_account",
"project_id": "elated-guild-298003",
"private_key_id": "cf58d669c0e8c8e082b2c403ade5e2548078e384",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDEAJw89yeylRrA\nB+bzOAfQQNgOCABIwEKCy5mMxWSaiXy2RktyCJWjMR2Pgz770NJgClQHPJjsFn0c\nukHufpnuiX3VPlimLANPCRFdU/qp+yiaw4quIhYF1UZJkhmhL30anghUcvi+r9hQ\nw+RwcKrgA4EUzqUJaPdvjtzSoo315PPGfR91ASD5S8gE02yVI8igtYMX7v2x1JYR\n7PwHJwOVemiM9lot8ilvoUbV4BU0vSlwFoxKMJAbEXTmJjEKQi9992rcMW0GzXO8\ncHldUUtURXkt3VFjYTH27KhHiTkTXw+uZRBu1rkubDJkS8lGIWN7Fc/r4HMMCVTu\nXPS6HbJ/AgMBAAECggEANSS7OBaFd3jRL3cVCiZLjA5A5pEJzq/+eKtOn2oYDISx\nwVRO+YTVWdGj47kg1zM4D11NikbGaeDxHFxuKwW9o/04lpyYebneTcw2Hpl6EiOs\nz0WssOlCEmPQ8nrAI0GWiKSHuqoPwtg37TIoGsqZsjKRCby759DDokZYnm3/0sc+\niEllT0ZyBZhGDzyguVLEdCIR2P02q/hQzLyd6ejWGGwZebImbGoILhmuOjVrco0p\nV0JbrrNskjM5Epe7w+CpGftEASJ7Dxa8oj0qIT6cyAipra2AZAGnG9jrLcWpJuhu\nvNeDIFnTfpNEac+khXZZE2++MIQfTX9wGJc8tox2vQKBgQD6yiNvAL7sxExiy6ER\ntLtFQ3bvmMpKRFGvFOyPOtMbmjZ3D1GEtNNKGH4v1TI+tncEy7Q5Dm7nWwpi8yvL\nbh8xKghelAc/CU1nw0xDEDCkMbAwpFg5A5ZDImy3LZsQh0kNXniIMy1vMSt5yLKS\n80gXQKGCxG8t3rP8Qd/2a55g1QKBgQDIExP1nG9sHJaigmitEUwr0Ow6Shqr56Me\nd7995gaV1oLWWCQzrXt/viWkb1W5ZGIxzcWNWz99m4CbvqfewRr598Eenald0csN\nVcIEk+0C+6KqA+jU9Tfs2zow/C7JuKULP2N++o0EoSz/ngokP7f1yLOYbr507v/R\n0cLElQBQAwKBgAbxDWYHKUG4dTzO0hiBXiWepm4fVooTtgcYlyunvywmapeFDwaT\nUr3cS7HbPtbJiiXR1Z02rw8sT+9JN88brzVXKoAjrMer5D6ZA0Vf71i8H1pZUi/R\nz5jwHP48/uvIMtdx4/gxInLPc5qdWYQDw90Q5ueNtF4aqfSzhhV2CR45AoGBAJN9\nPOF6iMjx6jmyWOf8MGK8iOgPaMoA4Ea9j/SHdaNPlvPb1hQid0AcNDObv14Dmj+M\nqW0jLxKxZ4VobufPAsvyz/J51zjKRx11cqldQwNH7QnYB/O1MZzxn1wtC3C5JTG9\ncONSYFJhXoKxRliigEI3ye089jnNVdifAS1ZiflxAoGBANTX1fEMEeNuYU0v3rtd\n5CkPZg4TNZ+y2MGl5xR1LdIgrJ8c9xKoW4rpp7SsOIvHpWX494f90D7o9uFEGSQ4\nyQK53jVzJ0ekGV5BdPF3n3/2j2VEqFLHi7LL4CJSxr6ci7OfBoHOGE8odhevQCCK\njnFzEin0QsBEgIC73fBh6XcH\n-----END PRIVATE KEY-----\n",
"client_email": "[email protected]",
"client_id": "103034240916368863393",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/googleindexing%40elated-guild-298003.iam.gserviceaccount.com"
}
```### (5) 为服务账号授权
打开[谷歌站长](https://search.google.com/search-console), `选择`需要设置的网站, 点击`设置`, 点击`用户和权限`, 点击`添加用户`.
电子邮箱地址: json文件中的client_email字段
权限: 选择`拥有者`, 选择`完整`GitHub执行时会报权限错误.
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-开启-站长授权.jpg)
### (6) GitHub填入secrets
google_private_key: json文件中的private_key字段, 填入时要带双引号
google_client_email: json文件中的client_email字段, 填入时不带双引号![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-GitHub-secrets.jpg)
### (7) 官网说明
由于谷歌常更新页面, 所以如果以上操作出现问题, 可参考官方教程, 不过官方教程也不是完成100%跟页面同步的.
[使用 Indexing API 的前提条件 | Google Developers](https://developers.google.com/search/apis/indexing-api/v3/prereqs?hl=zh_CN)
## 验证
取消Star, 再点击Star, 触发自动提交.
### GitHub Action结果
点击Actions, 查看执行情况.
如果返回更新内容, 就说明成功了.
```text
# 百度的
{"remain":2990,"success":10}
# 必应的
{"d":null}
# 谷歌的
Google response: {...}
```![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-测试.jpg)
### 百度页面结果
打开[百度站长](https://ziyuan.baidu.com/linksubmit/), 选择对应站点, 选择普通收录中的数据反馈.
看到当日API提交有值, 说明成功了. 但是这个页面好像有延迟, 不是GitHub Action那么指定完这个页面就能刷出来结果.
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/百度站点提交结果.jpg)
### 必应页面结果
打开[Home - Bing Webmaster Tools](https://www.bing.com/webmasters/), `URL提交`标签
有提交信息说明成功了.
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/必应站点提交结果.jpg)
### 谷歌页面结果
在[Google Cloud Platform](https://console.cloud.google.com/apis/dashboard) 中查看.
错误率只要不是100%, 就说明成功了.
![](https://img-res.oss-cn-beijing.aliyuncs.com/img/谷歌IndexingAPI-测试2.jpg)