hexo使用hexo-submit-urls-to-search-engine插件后,可主动推送Hexo博客新链接至谷歌、必应、百度搜索引擎站长平台以提升网站收录质量和速度。本插件允许你向各大搜索引擎发送纯天然、植物饲养的索引编制请求,一劳永逸。

比如,现在我的一篇文章有时刚发布 5 分钟,即可在必应搜索到(这是最佳情况,不保证长期稳定)。看吧,这就是 hexo-submit-urls-to-search-engine 的威力。百度与谷歌略慢一筹。

这三大搜索引擎已占据 97% 的全球搜索引擎市场份额(包括元搜索引擎 多吉、Duckduckgo 等;使用 Bing 索引的雅虎、 Ecosia 等)。

警告

非专业使用其他类似的推送代码可能会导致危险的副作用,包括但不限于:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、怀疑人生、抑郁、头疼,甚至死亡、魂飞魄散、湮灭。

Github地址

官方交流 QQ 群 及 Telegram group 已经停止服务。请前往 Github issue 页面参与讨论。

操作步骤

快速入门:

  1. 获取各站长平台密钥
  2. 安装并配置hexo-submit-urls-to-search-engine插件
  3. hexo clean && hexo g && hexo d,并查询推送结果
  4. 如果推送成功,前往 Github 地址 点击 Star 按钮以支持
  5. 顺便 watch Github 项目获取插件升级提醒
  6. 还可以 点此去打赏

获取站长平台密钥

本节所“记下”的密匙均填写至 hexo 的 _config.yml ,格式在后文给出。

关于验证网站:有的 Hexo 主题支持添加站长平台 html 验证标签,填写有关设置后hexo g && hexo d即可验证。通用详细操作步骤请自行 谷歌 :hexo 站长平台 验证

百度

百度是中国的一款搜索引擎。除非在中国当局办理复杂的网站备案手续,否则网站很难被收录。

如果您的网站服务器位于中国境外,基本不可能办理网站备案手续。

请查看旧的说明文档了解如何提交链接到百度

必应

必应站长平台有新旧之分。

  1. 注册、登陆必应新站长平台 Bing Webmaster Tools
  2. 添加网站
  3. 进入网站管理页面,设置,API 访问,API 密钥 ,记下 API 密匙

从 URL 提交打开设置

API 访问界面

从必应新站长平台获取 API 密匙

(近期必应站长平台升级,服务器、版面不稳定,如果无法显示 token ,可以过段时间再试) 现在已经升级到新的站长平台了。

这是从必应旧站长平台获取的示意图:

从必应旧站长平台获取必应网站管理员 API 密匙

谷歌

如果您到服务器位于中国境内,请注意您的服务器需要能够访问国际互联网,才能推送到谷歌。

谷歌站长平台也有新旧之分,但两站关系没有必应处理得好。另外,我们使用的 Google Indexing API 不是站长平台提供的,而是隶属 google developers 谷歌开发平台。过程中,您可参考官方文档(中国内地可访问)进行配置。

使用步骤:

  1. 打开 官方文档 ,按提示创建项目、创建服务帐号。只需要按提示在网站进行配置操作即可,不需要完成获取访问令牌等后续操作
  2. 您仅按谷歌官方文档在 Google 新的“搜索控制台”中添加权限邮箱还是会提示“无权限”。请转到 旧的网站站长工具,点击您的网站,把邮箱地址添加到其中 现在直接在新的站长平台提交即可。
  3. 将获取到的 json 密匙文件放于 hexo 根目录(与hexo _config.yml文件位置相同)

谷歌旧的网站站长工具:

旧的网站站长工具1

旧的网站站长工具2

另外,其官方文档中有如下提示,请根据实际情况决定是否启用向谷歌提交链接的功能:

目前,Indexing API 只能用于抓取包含 JobPostingBroadcastEvent(嵌套于 VideoObject)的网页。对于包含很多短效网页(如招聘信息或直播视频)的网站,Indexing API 会通过为不同的内容分别推送更新,使搜索结果中的内容保持最新状态。

Indexing API 快速入门 | Google 搜索中心  |  Google for Developers

反正我提交了。谷歌不抓取网站,怎么知道您的网页不包含招聘信息或直播视频呢?既然抓了,即使没发现招聘信息或直播视频,又有什么原因浪费资源、把已抓取的信息弃之不用呢?既然用,我们的目的就达到了。实际使用过程中,谷歌好像也没有对此进行降权。也许是谷歌忘了改文档?我目前就发现这个文档中有两处多年未改的严重错误。

配置hexo

安装本插件

请在 hexo 根目录运行:

当然,在大中华地区使用cnpm下载速度更快

npm install --save hexo-submit-urls-to-search-engine

本插件也支持yarn安装:

yarn add hexo-submit-urls-to-search-engine

编辑hexo的_config.yml

hexo-submit-urls-to-search-engine

配置 hexo-submit-urls-to-search-engine 插件,将下方粘贴至 hexo 的_config.yml

提示

您当然可以利用环境变量设置记录密匙,这样即使源码放在公开仓库,也不会泄露秘钥

hexo_submit_urls_to_search_engine:
  submit_condition: count #链接被提交的条件,可选值:count | period 现仅支持count
  count: 10 # 提交最新的10个链接
  period: 900 # 提交修改时间在 900 秒内的链接
  google: 0 # 是否向Google提交,可选值:1 | 0(0:否;1:是)
  bing: 1 # 是否向bing提交,可选值:1 | 0(0:否;1:是)
  baidu: 1 # 是否向baidu提交,可选值:1 | 0(0:否;1:是)
  txt_path: submit_urls.txt ## 文本文档名, 需要推送的链接会保存在此文本文档里
  baidu_host: https://cjh0613.github.io ## 在百度站长平台中注册的域名
  baidu_token: 请按照文档说明获取 ## 请注意这是您的秘钥, 所以请不要把它直接发布在公众仓库里!
  bing_host: https://cjh0613.github.io ## 在bing站长平台中注册的域名
  bing_enable_indexnow: false # 是否用 indexNow 提交链接给必应: true (Yes) | false (No). 只有 2.1.1 及之后的版本才可以开启这个功能。
  bing_token: 请按照文档说明获取 ## 请注意这是您的秘钥, 所以请不要把它直接发布在公众仓库里!
  google_host: https://cjh0613.github.io ## 在google站长平台中注册的域名
  google_key_file: Project.json #存放google key的json文件,放于网站根目录(与hexo _config.yml文件位置相同),请不要把json文件内容直接发布在公众仓库里!
  google_proxy: http://127.0.0.1:8080 # 向谷歌提交网址所使用的系统 http 代理,填 0 不使用
  replace: 0  # 是否替换链接中的部分字符串,可选值:1 | 0(0:否;1:是)
  find_what: http://cjh0613.github.io/blog
  replace_with: https://cjh0613.com

将密钥公开的后果

您的“冤家”、有自我意识的人工智能、恐怖分子可能使用您的密钥向搜索引擎推送不存在的页面链接。既消耗您的配额让您无法正常推送,又因推送死链导致网站权重下降

注释

  • submit_condition:支持两种是否提交链接的判断方式,即 count | period 。分别应用下方 count | period 配置项
  • period:一段时间,单位秒,若文章更新时间与本插件运行时间之差小于这个数值,其链接会被提交。例如:有两个文件 a.html 和 b.html,分别对应 https://yoursite.com/a.htmlhttps://yoursite.com/b.html,其更新时间与本插件运行时间之差分别为 800s 和 1000s(period 字段设为 900),则 https://yoursite.com/a.html 会被提交,https://yoursite.com/b.html 不会
  • google_proxy:向谷歌提交网址所使用的系统 http 代理,格式:http://proxyhost:port,修改proxyhostport即可;Hexo 部署于境外可填 0 不使用。使用科学上网软件,proxyhost一般为127.0.0.1port可在软件中查看设置,一般为8080。Win10 可在 设置->代理 处查看
  • replace: 部分链接可能生成不正确(如中文域名,首页位于http://cjh0613.github.io/blog等情况)。这是一个简单粗暴的替换功能,将生成的全部链接中的指定字符串以替换。示例中将 http://cjh0613.github.io/blog 替换为 https://cjh0613.com。也可将中文域名替换为转码后的域名。

2020.7.12 更新本节注释,感谢 liuyib 提供建议 2021.5.12 添加 google_proxy

完成上述配置后,你在 Hexo 根目录下运行 hexo generate 指令时,会生成一个 .txt 文件来存储要推送的链接。

您可以打开此文件查看链接是否正确,如不正确,请访问 hexo 的 _config.yml 进行配置。您也可以手动修改此 .txt 文件后再推送链接。

deploy

如果您之前没有添加过 deploy: 配置项,直接将下方粘贴至 hexo 的 _config.yml ,覆盖默认的 deploy: 配置项。

deploy:
- type: cjh_google_url_submitter
- type: cjh_bing_url_submitter
- type: cjh_baidu_url_submitter

完成这一步之后,运行 hexo deploy 命令时就可以自动推送链接至搜索引擎了。

  • 您必须运行 hexo deployhexo d 命令以触发推送,无论您之前是否使用这条命令进行部署。

当然此前您需要运行 hexo generate 生成最新的 .txt 文件来存储要推送的链接。

如果可以推送成功,烦请至 Github 仓库 Star 支持一下,谢谢!

如果已设置过 deploy: 配置项,直接粘贴上述代码块会提示 配置冲突,直接在已有 deploy: 配置项下添加即可。如:

deploy:
- type: git
  repo: 
    coding: git@xxx
  branch: master 
  
  #添加本插件的配置项:
- type: cjh_google_url_submitter
- type: cjh_bing_url_submitter
- type: cjh_baidu_url_submitter

注意:上面每个 type: 前都有 -

持续集成支持

本节为 hexo 存放于公开仓库,且使用 CI (持续集成,如 Github action, travis, coding-ci, netlify 等)编译发布的部署方式提供参考。

百度、必应可利用环境变量记录密匙,谷歌有其他解决办法,参见下文

请注意,如果您使用 CI 自动部署,请务必在每个页面的 Front-matter (.md文件最上方以 --- 分隔的区域,用于指定个别文件的变量)中添加updated: 来告知 Hexo 修正“文章最后修改时间”,举例来说:

---
title: Hello World
date: 2013/7/13 20:46:25
updated: 2020-08-25 9:36:00
---

这是因为,文件放在本地计算机上时,如果没有updated: ,Hexo 会读取文件属性,使用“文件最后修改时间”作为“文章最后修改时间”,可以正常判断并提交最新的 10 个链接;而 CI 自动部署时,由于 Hexo 资源都是才 clone 到服务器上的,如果没有添加updated: ,Hexo 同样会读取文件属性,但此时属性中最后修改时间是完全相同的 git clone 的时间,Hexo 得到错误的“文章最后修改时间”,就无法正常判断并提交最新的链接了。

  1. 请先在hexo_submit_urls_to_search_engine:的配置项baidu_token: bing_token: 处填写0
  2. 设置环境变量BAIDU_TOKENBING_TOKEN,值为已获取的token
  3. 如果您使用 Github Action ,还需在 yml 文件中设置环境变量,下方有例子
  4. hexo clean && hexo generate && hexo deploy享受生活

设置环境变量

参考:

hexo_submit_urls_to_search_engine:
  submit_condition: count #链接被提交的条件,可选值:count | period 现仅支持count
  count: 10 # 提交最新的10个链接
  period: 900 # 提交修改时间在 900 秒内的链接
  google: 1 # 是否向Google提交,可选值:1 | 0(0:否;1:是)
  bing: 1 # 是否向bing提交,可选值:1 | 0(0:否;1:是)
  baidu: 1 # 是否向baidu提交,可选值:1 | 0(0:否;1:是)
  txt_path: submit_urls.txt ## 文本文档名, 需要推送的链接会保存在此文本文档里
  baidu_host: https://en.cjh0613.com ## 在百度站长平台中注册的域名
  baidu_token: 0 ## 请注意这是您的秘钥, 所以请不要把它直接发布在公众仓库里!
  bing_host: https://en.cjh0613.com ## 在bing站长平台中注册的域名
  bing_token: 0 ## 请注意这是您的秘钥, 所以请不要把它直接发布在公众仓库里!
  google_host: https://en.cjh0613.com ## 在google站长平台中注册的域名
  google_key_file: Project.json #存放google key的json文件,放于网站根目录(与hexo _config.yml文件位置相同),请不要把json文件内容直接发布在公众仓库里!
  google_proxy: 0 # 向谷歌提交网址所使用的系统 http 代理,填 0 不使用
  replace: 0  # 是否替换链接中的部分字符串,可选值:1 | 0(0:否;1:是)
  find_what: http://cjh0613.github.io/blog
  replace_with: https://cjh0613.com

Github Action ,还需在 yml 文件中设置环境变量:

- name: xxxx #随便填
  env:
    BAIDU_TOKEN: ${{ secrets.BAIDU_TOKEN }} # 注意这里,其他的都是浮云
    BING_TOKEN: ${{ secrets.BING_TOKEN }} # 注意这里,其他的都是浮云
  run: |
    npm i -g hexo-cli # 安装hexo
    npm i
    ……
    hexo deploy    

至于推送链接至谷歌,json密钥文件里信息那么多,复制粘贴设置环境变量……实在是麻烦。我将json密钥文件放入一个私有仓库, 再 clone ,复制到根目录下解决。

插件升级

插件升级提醒

您安装本插件后,请从 Github watch 本项目,以获得插件升级提示选择 Releases only 仅获取升级提示,选择 Watching 还会推送 Issues ,Pull requests 等,通过电子邮件发送

选择 Releases only

升级操作

请在 hexo 根目录运行:

当然,在大中华地区使用cnpm下载速度更快

npm install --save hexo-submit-urls-to-search-engine@版本

我之前给出的是另一个命令:npm update --save hexo-submit-urls-to-search-engine,但我实测时出现了问题。

yarn升级:

yarn add hexo-submit-urls-to-search-engine@版本

不兼容升级

警告

有时,插件升级不向下兼容,可能会需要您修改 hexo 的_config.yml中与本插件有关的配置项,或作其他修改。 此情况一般伴随 版本号中第一个小数点前的数字增加 出现。如 ^1.0.0 升级至 ^2.0.0

1.x.x升级至2.x.x:

您需要给hexo_submit_urls_to_search_engine:配置项添加以下三个配置项:

  replace: 0  # 是否替换链接中的部分字符串,可选值:1 | 0(0:否;1:是)
  find_what: http://cjh0613.github.io/blog
  replace_with: https://cjh0613.com

好吧,我发现这次升级是向下兼容的,即使没有这三个配置项也不会报错……

返回信息

成功推送信息

必应

Bing response:  { d: null }

谷歌

Google response:  { urlNotificationMetadata:
   { url:
      'https://cjh0613.github.io',
     latestUpdate:
      { url:
         'https://cjh0613.github.io',
        type: 'URL_UPDATED',
        notifyTime: '2020-06-12T05:37:25.701779228Z' } } }

其他

其他返回可参考它们的官方文档,但一般翻译一下返回就知道原因了。

有时是因为搜索引擎每天只允许提交一定数量的链接。可登陆它们的官网查询。我站点域名cjh0613.github.io换为 cjh0613.com 后,必应配额 10 条,连续推送 10 天后,配额突然从 10 变为 10000。

若部分链接推送失败请人工处理:根据反馈来修改保存提交链接的 txt (一般把成功推送的链接去掉),然后只运行 hexo deploy 重新推送,不必重新生成网站。

如果想每天向搜索引擎推送链接,每天运行hexo d即可,也可以设置 Github Action 每天运行hexo g && hexo d,不必重造轮子。

查询结果

查询索引

以查询本站索引为例,打开任一搜索引擎,输入 site:域名 ,这里即:

site:cjh0613.github.io

搜索即可。

新站索引量 0→1 需要的时间可能很长,也许一个月……请耐心等待

实际收录速度还与其他因素有关,网上 SEO 资料很多,但都是以官方说明为中心的。

查询推送记录

必应

可登陆必应新站长平台查到详细的推送链接列表(实时更新):

https://www.bing.com/webmasters/submiturl?siteUrl=你的网站链接

必应推送记录及剩余配额查询

谷歌

仅可在下方地址“错误”表格中查到一段时间内(最多近30天)累计推送链接数量及失败推送所占百分比(实时更新),虽然给了每天提交数据图,但相当于没给……

https://console.developers.google.com/apis/api/indexing.googleapis.com/metrics?project=

谷歌推送推送链接数查询

我开发这个插件的参考资料

请查看旧的说明文档