来源@Lete大佬教程,并对自己配置时遇到的问题进行更新


介绍

由于 Bing 和 Google 只爬 sitemap.xml 收录已经很快了,但总是爬 sitemap.xml 效率肯定没 Api 提交的快。
自己写了 Bing 的定时自动提交,目前还不支持 Google 定时自动提交,因为 Google 的 API 提交方式很鸡肋

Google indexing API 有两个问题

  1. 账户安全密钥不能被泄露 (谷歌只支持这种提交方式,对于没有后台的 hexo 来说是很致命的)
  2. 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

  1. 打开百度站长平台,点击左侧的普通收录 https://ziyuan.baidu.com/

Bing Key

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

Google Key

  1. 打开 Google indexing API 官网
  2. 选择创建项目,点击继续
  3. 点击转到凭据页面
  4. 跟着如下图片步骤 (可能稍有区别,大体差不多,只要最后导出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"
}
  1. 打开谷歌站长平台

配置博客仓库

  1. Name 必须是baidu_tokenbing_apikey(不区分大小写)
  2. 添加完成后

谷歌的一些问题

触发谷歌提交的命令是hexo d

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

提交成功返回状态码

以上步骤完成后即可hexo d部署了

  1. 看看 Github 仓库是否上传成功
    [外链图片转存失败, 源站可能有防盗链机制, 建议将图片保存下来直接上传 (img-JKpARc5E-1612254394443)(https://cdn.jsdelivr.net/gh/lete114/lete114.github.io/img/Hexo-seo-autopush/code.png)]
  2. 点击Actions查看是否执行
  3. 点击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}
  1. 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'
}
}
  • 打开管理资源所有者
    image-20211119184016178

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

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

    image-20211119183858416

出现此错误需要翻墙

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