更新记录

更新记录

2021-01-22

SEO优化说明:文章路径优化、百度/Google/必应等搜索引擎收录

2022-01-13

排查收录问题和数据分析

搜索引擎自定义域名调整:将原有github二级域名替换为自定义域名

hexo-butterfly-SEO优化

1.网站收录

​ 网站收录主要包括网站验证、链接提交两个核心步骤,此外还可扩展自动推送、robots、rel配置

hexo项目插件引入:生成站点地图

​ 分为手动提交和自动提交,此处采用sitemap方式自动提交

1
2
3
4
5
6
7
8
# 引入组件生成站点地图
npm install hexo-generator-seo-friendly-sitemap --save

# hexo sitemap配置网站地图(在hexo站的_config.yml文件添加配置)
sitemap:
path: sitemap.xml # 索引地图路径
tag: false # 标签页不添加到网站地图中
category: false # 分类页不添加到网站地图中

​ 配置完成执行hexo g后会在站点根目录/public生成相应的sitemap.xml,部署网站后,提交到百度/谷歌

1
2
# 站点地图地址
https://域名/项目/sitemap.xml

百度收录:百度搜索资源平台

​ 上述步骤完成,在百度搜索框内输入site:域名,查看收录情况,如果没有收录则提交网址进行收录,登录百度账号->用户中心->站点管理->添加网站(输入网站、配置站点属性、验证网站)

​ 验证网站有多种方式,采用文件验证的方式,下载baidu_verify_code-xxxx.html验证文件,随后将文件放置在配置域名的根目录下,此处放置在hexo博客项目source下,每次打包发布则不会被覆盖。

​ 我采用的是CNAME验证的方式进行验证,根据提示将指定的记录使用CNAME解析到ziyuan.baidu.com即可(例如使用github二级域名则为code-xxxxxxx.用户名.github.io,如果是自定义域名则参考提示进行配置)。例如使用自定义域名可以通过DNSPOD进行解析

主机记录 记录类型 记录值
code-xxxxxxx.用户名.github.io CNAME ziyuan.baidu.com
  • 普通收录方式

验证通过之后则可进入普通收录页面,上传sitemap文件

PS:百度对 github 托管的 sitemap 不太友好,如果网站是使用 github page 发布,建议删掉百度站长平台的 sitemap ,用 API 主动提交,避免出现抓取失败,影响网站权重。用 API 推送后,索引量迅速回升

​ 如果需要搜索引擎收录网站,则需要对应搜索引擎的管理平台进行提交,各自的验证码可以从管理平台获取

  • API提交方式收录(curl/post/php/ruby等多种不同的方式进行推送)
1
2
3
4
# 1.编写一个urls.txt文件,将要提交的链接按照每行一条的格式写入

# 2.git bash 执行curl:
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "推送接口API"

// 查看推送结果(具体可参考推送反馈)

字段 是否必选 参数类型 说明
success int 成功推送的url条数
remain int 当天剩余的可推送url条数
not_same_site array 由于不是本站url而未处理的url列表
not_valid array 不合法的url列表

必应:必应站长平台

​ 访问必应站长平台,可通过Google Search Console自动导入或者手动添加的方式构建(为了便于管理,可采用google账号登录链接或者用Microsoft账号登录绑定google search console)

​ 随后在Sitemaps选项卡中添加站点地图即可

google:Google Search Console

​ 进入Google Search Console

​ 登录->网址所有权验证

​ 域名验证参考文档说明:验证网站所有权验证域名(针对托管服务商)

DNSPOD 进行所有权验证

主机记录 记录类型 记录值
域名或者子域名配置对应 TXT google提供的TXT验证

​ 站点地图->添加新的站点地图,填充站点地图地址即可

2.自动推送

构建说明

<1>配置各个搜索引擎的站长平台秘钥

<2>引入hexo-submit-urls-to-search-engine插件,主配置文件_config.yml中引入配置

<3>hexo clean & hexo g & hexo deploy 自动推送

配置参考

<1>配置各个搜索引擎的站长平台秘钥

​ 登录百度搜索资源平台,访问用户中心->站点管理->普通收录->API提交(记录秘钥)

​ 对应的token则参考相应的推送接口URL中的token即可

​ 登录必应站长平台,访问设置->API access(API访问)->API Key(API秘钥)->Generate API Key,生成并记录API Key即可

​ (需科学上网)访问Google Indexing API ,根据提示在Google开发者平台创建项目、服务账号(IAM管理->服务账号),将服务账号添加为Google Search Console所有者,获取到相应的访问令牌

  • 创建项目

  • 添加服务账号(IAM管理->服务账号)

​ 填充账号信息,跳过权限(可选配置)设置相关,创建完成则“管理秘钥”->“添加秘钥”(创建新秘钥,选择JSON格式),随后保存下载的JSON秘钥即可(仅此一份需妥善保存)

​ 随后将获取到的 json 密匙文件放于 hexo 根目录(与hexo _config.yml文件位置相同)

​ 在此之前需要验证网站所有权,随后点击进入相应的内容添加所有者权限

​ 代理者服务账号:上述下载的JSON私钥中的client_email字段或者在服务账号管理页面中查看

<2>引入hexo-submit-urls-to-search-engine插件,主配置文件_config.yml中引入配置

引入插件

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

文件配置

为了避免token直接暴露在仓库中(尤其是针对公共的仓库,可以通过CI的环境变量设置记录秘钥保证安全性)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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://username.github.io # 在百度站长平台中注册的域名
baidu_token: # 百度推送API秘钥(不建议直接发布在公共仓库)-token/0
bing_host: https://username.github.io # 在bing站长平台中注册的域名
bing_token: # 必应推送API秘钥(不建议直接发布在公共仓库)-token/0
google_host: https://username.github.io # 在google站长平台中注册的域名
google_key_file: Project.json # 存放google key的json文件(不建议直接发布在公共仓库)
google_proxy: http://127.0.0.1:8080 # 向谷歌提交网址所使用的系统 http 代理,填0不使用
replace: 0 # 是否替换链接中的部分字符串,可选值:1 | 0(0:否;1:是)
find_what: http://xxx.github.io/blog
replace_with: https://xxx.com

​ 上述配置完成,执行hexo g指令会生成txt文件存储要推送的连接,可检查文件内容是否正常

配置步骤说明

<1>在hexo_submit_urls_to_search_engine:的配置项baidu_token:bing_token:处填写0

<2>设置环境变量BAIDU_TOKENBING_TOKEN,值为已获取的token

​ 此处可构建Travis CI配置,自动部署hexo项目,使用Travis持续集成

<3>如果使用 Github Action ,还需在 yml 文件中设置环境变量

​ github对应hexo发布仓库:Settings->Secrets->Actions->New repository secret

参数 说明
BAIDU_TOKEN 根据文档指示生成
BING_TOKEN 根据文档指示生成
1
2
3
4
5
6
7
8
9
10
# 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

<4>hexo clean && hexo generate && hexo deploy自动推送

注意事项

​ 如果使用CI自动部署,则必须在每个页面的front-matter中配置updated属性用于标示hexo修正文章最后更改时间(如果没有指定,则hexo读取文件属性是以CI自动部署概念git资源clone的时间为参考,从而导致修改时间显示异常)

​ 此外区分本地部署和CI部署,如果是本地部署则需指定BAIDU_TOKEN、BING_TOKEN的值,如果是CI部署则将baidu_token&bing_token设置为0并配置相应的环境变量(Github Actions、Travis CI);还需区分Google环境配置是否正常(本地通过google key直接配置),CI则相应考虑对应的配置是否正常,一一排查,需注意不同环境部署的切换触发的不同结果,根据响应结果进行排查

​ 如果三种方式都要满足,则相应要满足对应的条件:

参数配置 本地部署 远程
配置开关
baidu\bing\google
1 1
baidu_token 对应token值 设置为0并配置CI环境变量
bing_token 对应token值 设置为0并配置CI环境变量
baidu_token google key引入、代理服务支持(可引入本地代理) google key引入、代理服务支持(需集成代理环境)

google_proxy:向谷歌提交网址所使用的系统 http 代理

​ 格式:http://proxyhost:port

​ Hexo 部署于境外可填 0 不使用。使用科学上网软件,proxyhost一般为127.0.0.1port可在软件中查看设置,一般为8080。Win10 可在 设置->代理处查看

replace:URL替换

​ 针对域名解析的情况可将生成的github.io类型的url替换为对应的自定义域名,或者将中文域名替换成转码后的域名

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

发布

1
2
3
4
5
6
7
8
# 配置_config.yml deploy属性(通过"-"符号区分不同的发布url)
deploy:
- type: cjh_google_url_submitter
- type: cjh_bing_url_submitter
- type: cjh_baidu_url_submitter

# 配置完成执行hexo deploy指令则可自动推送链接
hexo deploy
  • 响应结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# baidu
Baidu response: {"remain":2999,"success":1}

# bing
Bing response: { d: null }

# google
Google response: {
urlNotificationMetadata: {
url: 'url',
latestUpdate: {
url: 'url',
type: 'URL_UPDATED',
notifyTime: '2021-02-11T04:59:54.251941474Z'
}
}
}
<3>hexo clean & hexo g & hexo deploy 自动推送

​ 指令执行完成,可查看响应状态(根据响应报文检查数据推送是否正常),搜索引擎每天有一定数量的链接提交限制,如果是提交失败的url则相应进行检查,手动修改自动提交的txt文件中的url,去除已经成功推送的内容,随后重新尝试推送即可

结果查询

索引查询

​ 打开任意搜索引擎,输入site:网站,访问是否正常,如果是新站索引量0->1需要一定的时间,收录速度也收其他因素影响

推送记录查询

​ 登录相应的站长平台,随后访问对应网域资源,查看统计数据统计

百度资源平台必应站长工具谷歌站长工具

3.优化项

添加rel

​ 为网站使用到的所有外链添加rel=”noopener external nofollow noreferrer”, 可以有效地加强网站SEO和防止权重流失

  • 装载组件:hexo-filter-nofollow
1
npm i hexo-filter-nofollow --save
  • 修改主配置文件
1
2
3
nofollow:
enable: true
field: site