序
hexo使用hexo-submit-urls-to-search-engine
插件后,可主动推送Hexo博客新链接至谷歌、必应、百度搜索引擎站长平台以提升网站收录质量和速度。本插件允许你向各大搜索引擎发送纯天然、植物饲养的索引编制请求,一劳永逸。
比如,现在我的一篇文章有时刚发布 5 分钟,即可在必应搜索到(这是最佳情况,不保证长期稳定)。看吧,这就是 hexo-submit-urls-to-search-engine
的威力。百度与谷歌略慢一筹。
这三大搜索引擎已占据 97% 的全球搜索引擎市场份额(包括元搜索引擎 多吉、Duckduckgo 等;使用 Bing 索引的雅虎、 Ecosia 等)。
警告
非专业使用其他类似的推送代码可能会导致危险的副作用,包括但不限于:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、怀疑人生、抑郁、头疼,甚至死亡、魂飞魄散、湮灭。
官方交流 QQ 群 及 Telegram group 已经停止服务。请前往 Github issue 页面参与讨论。
操作步骤
快速入门:
- 获取各站长平台密钥
- 安装并配置
hexo-submit-urls-to-search-engine
插件 hexo clean && hexo g && hexo d
,并查询推送结果- 如果推送成功,前往 Github 地址 点击 Star 按钮以支持
- 顺便 watch Github 项目获取插件升级提醒
- 还可以 点此去打赏
获取站长平台密钥
本节所“记下”的密匙均填写至 hexo 的 _config.yml
,格式在后文给出。
关于验证网站:有的 Hexo 主题支持添加站长平台 html 验证标签,填写有关设置后hexo g && hexo d
即可验证。通用详细操作步骤请自行 谷歌 :hexo 站长平台 验证
百度
百度是中国的一款搜索引擎。除非在中国当局办理复杂的网站备案手续,否则网站很难被收录。
如果您的网站服务器位于中国境外,基本不可能办理网站备案手续。
必应
必应站长平台有新旧之分。
- 注册、登陆必应新站长平台 Bing Webmaster Tools
- 添加网站
- 进入网站管理页面,设置,API 访问,API 密钥 ,记下 API 密匙
(近期必应站长平台升级,服务器、版面不稳定,如果无法显示 token ,可以过段时间再试) 现在已经升级到新的站长平台了。
这是从必应旧站长平台获取的示意图:
谷歌
如果您到服务器位于中国境内,请注意您的服务器需要能够访问国际互联网,才能推送到谷歌。
谷歌站长平台也有新旧之分,但两站关系没有必应处理得好。另外,我们使用的 Google Indexing API 不是站长平台提供的,而是隶属 google developers 谷歌开发平台。过程中,您可参考官方文档(中国内地可访问)进行配置。
使用步骤:
- 打开 官方文档 ,按提示创建项目、创建服务帐号。只需要按提示在网站进行配置操作即可,不需要完成获取访问令牌等后续操作
您仅按谷歌官方文档在 Google 新的“搜索控制台”中添加权限邮箱还是会提示“无权限”。请转到 旧的网站站长工具,点击您的网站,把邮箱地址添加到其中现在直接在新的站长平台提交即可。- 将获取到的 json 密匙文件放于 hexo 根目录(与hexo _config.yml文件位置相同)
谷歌旧的网站站长工具:
另外,其官方文档中有如下提示,请根据实际情况决定是否启用向谷歌提交链接的功能:
目前,Indexing API 只能用于抓取包含 JobPosting
或 BroadcastEvent
(嵌套于 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.html
和https://yoursite.com/b.html
,其更新时间与本插件运行时间之差分别为 800s 和 1000s(period 字段设为 900),则https://yoursite.com/a.html
会被提交,https://yoursite.com/b.html
不会 - google_proxy:向谷歌提交网址所使用的系统 http 代理,格式:
http://proxyhost:port
,修改proxyhost
、port
即可;Hexo 部署于境外可填 0 不使用。使用科学上网软件,proxyhost
一般为127.0.0.1
,port
可在软件中查看设置,一般为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 deploy
或hexo 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 得到错误的“文章最后修改时间”,就无法正常判断并提交最新的链接了。
- 请先在
hexo_submit_urls_to_search_engine:
的配置项baidu_token:
与bing_token:
处填写0
- 设置环境变量
BAIDU_TOKEN
,BING_TOKEN
,值为已获取的token
- 如果您使用 Github Action ,还需在
yml
文件中设置环境变量,下方有例子 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 等,通过电子邮件发送)
升级操作
请在 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=