来源@Lete大佬教程,并对自己配置时遇到的问题进行更新
介绍
由于 Bing 和 Google 只爬 sitemap.xml 收录已经很快了,但总是爬 sitemap.xml 效率肯定没 Api 提交的快。
自己写了 Bing 的定时自动提交,目前还不支持 Google 定时自动提交,因为 Google 的 API 提交方式很鸡肋
Google indexing API 有两个问题
- 账户安全密钥不能被泄露 (谷歌只支持这种提交方式,对于没有后台的 hexo 来说是很致命的)
- API 提交只能使用 json,而这个 json 格式只能包含一个网站 url 链接
不能多 url 放到一个 json 里,所以需要多次请求提交 (baidu、bing、只需一次请求)
Google 最优提交方案是本地提交 (能解决以上两个问题)
安装插件
1
| npm i hexo-seo-autopush --save
|
配置
在 hexo 的 config.yml 里添加
hexo-seo-autopush 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # enable: 开启/关闭 推送 # count: 每次提交最新的10篇文章 # https://github.com/lete114/hexo-seo-autopush hexo_seo_autopush: baidu: enable: true count: 100 bing: enable: true count: 10 google: enable: true count: 10 google_file: google_service_account.json # 谷歌服务账户
|
添加Google Push
配置和解决 push 后没有 GitHub Actions .github\workflows\AutoPush.yml
文件的问题
1 2 3 4 5 6 7 8
| # Deployment ## Docs: https://hexo.io/docs/one-command-deployment deploy: - type: git repo: https://github.com/lete114/Test.git branch: main ignore_hidden: false # 忽略隐藏文件及文件夹(目录) - type: GooglePush # 谷歌提交
|
获取站长平台密钥
Baidu Key
- 打开百度站长平台,点击左侧的普通收录 https://ziyuan.baidu.com/

Bing Key
- 打开 Bing 站长平台,https://www.bing.com/webmasters/home
- 点击右上角头像 旁边的齿轮,跟着下图操作

Google Key
- 打开 Google indexing API 官网
- 选择创建项目,点击继续
- 点击转到凭据页面
- 跟着如下图片步骤 (可能稍有区别,大体差不多,只要最后导出json文件即可)




json 文件内的内容
1 2 3 4 5 6 7 8 9 10 11 12
| { "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": "googleindexing@elated-guild-298003.iam.gserviceaccount.com", "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" }
|
- 打开谷歌站长平台


配置博客仓库
- Name 必须是
baidu_token
和bing_apikey
(不区分大小写)

- 添加完成后

谷歌的一些问题
触发谷歌提交的命令是hexo d
由于谷歌需要配合 Google indexing API 平台提供的 json 进行提交,而这个 json 格式不能泄露
为防止 json 泄露只能本地提交,将 json 放到 hexo 根目录可自定义重命名 (必须对应插件的配置)
如果你的使用Github Actions自动部署的话请把仓库设置为私有

提交成功返回状态码
以上步骤完成后即可hexo d
部署了
- 看看 Github 仓库是否上传成功
[外链图片转存失败, 源站可能有防盗链机制, 建议将图片保存下来直接上传 (img-JKpARc5E-1612254394443)(https://cdn.jsdelivr.net/gh/lete114/lete114.github.io/img/Hexo-seo-autopush/code.png)]
- 点击
Actions
查看是否执行

- 点击
Auto Push
---->build
-----> 点击第 2 步自动提交
如图 43 行

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // baidu返回的结果 { "remain": 2060, // 表示当天剩余的可推送url条数 "success": 47 // 成功推送的url条数 } // bing返回结果(错误) { "ErrorCode": 2, // 错误 "Message": "ERROR!!! Quota remaining for today: 2, Submitted: 47" // Message:表示 你目前只剩2个url推送,而你现在推送的是47条url // bing新用户开始每日只有10个推送额,据我了解连续推送10天(这我也不确定) // 如果出现这个错误的话,你就只能先手动添加等系统给你分配额了(分配9999) } // bing返回结果(成功) {"d":null}
|
- Google 返回状态码
成功返回
1 2 3 4 5 6 7 8 9 10
| Google response: { urlNotificationMetadata: { url: 'https://blog.lete114.top/article/hexo-seo-autopush.html', latestUpdate: { url: 'https://blog.lete114.top/article/hexo-seo-autopush.html', type: 'URL_UPDATED', notifyTime: '2020-12-08T02:31:32.871417693Z' } } }
|
出现权限错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| INFO Deploy done: git INFO Deploying: GooglePush INFO Deploy done: GooglePush Google response: { error: { code: 403, message: 'Permission denied. Failed to verify the URL ownership.', status: 'PERMISSION_DENIED' } } Google response: { error: { code: 403, message: 'Permission denied. Failed to verify the URL ownership.', status: 'PERMISSION_DENIED' } }
|
-
打开管理资源所有者

-
进入需要添加验证权限的网站

-
点击添加拥有者,添加账号即可

出现此错误需要翻墙
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| FetchError: request to https://www.googleapis.com/oauth2/v4/token failed, reason: connect ETIMEDOUT 172.217.27.138:443 at ClientRequest.<anonymous> (D:\Lete\GitHub\Hexo-Butterfly\node_modules\node-fetch\lib\index.js:1461:11) at ClientRequest.emit (events.js:321:20) at TLSSocket.socketErrorListener (_http_client.js:426:9) at TLSSocket.emit (events.js:321:20) at emitErrorNT (internal/streams/destroy.js:92:8) at emitErrorAndCloseNT (internal/streams/destroy.js:60:3) at processTicksAndRejections (internal/process/task_queues.js:84:21) { message: 'request to https://www.googleapis.com/oauth2/v4/token failed, reason: connect ETIMEDOUT 172.217.27.138:443', type: 'system', errno: 'ETIMEDOUT', code: 'ETIMEDOUT', config: { method: 'POST', url: 'https://www.googleapis.com/oauth2/v4/token', data: { grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer', assertion: 'eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJnb29nbGVpbmRleGluZ0BzdGF0ZWx5LXRyYW5zaXQtMjk3NzE1LmlhbS5nc2VydmljZWFjY291bnQuY29tIiwic2NvcGUiOiJodHRwczovL3d3d
|
如果出现错误
1
| err: Error: Cannot find module 'request'
|
1
| err: Error: Cannot find module 'googleapis'
|
请执行
1
| npm install request googleapis
|