更新记录
2021-01-22
SEO优化说明:文章路径优化、百度/Google/必应等搜索引擎收录
2022-01-13
排查收录问题和数据分析
搜索引擎自定义域名调整:将原有github二级域名替换为自定义域名
网站收录主要包括网站验证、链接提交两个核心步骤,此外还可扩展自动推送、robots、rel配置
hexo项目插件引入:生成站点地图
分为手动提交和自动提交,此处采用sitemap方式自动提交
# 引入组件生成站点地图
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
,部署网站后,提交到百度/谷歌
# 站点地图地址
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 推送后,索引量迅速回升
如果需要搜索引擎收录网站,则需要对应搜索引擎的管理平台进行提交,各自的验证码可以从管理平台获取
# 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
登录->网址所有权验证
域名验证参考文档说明:验证网站所有权、验证域名(针对托管服务商)
DNSPOD 进行所有权验证
主机记录 | 记录类型 | 记录值 |
---|---|---|
域名或者子域名配置对应 | TXT | google提供的TXT验证 |
站点地图->添加新的站点地图,填充站点地图地址即可
构建说明
<1>配置各个搜索引擎的站长平台秘钥
<2>引入hexo-submit-urls-to-search-engine插件,主配置文件_config.yml中引入配置
<3>hexo clean & hexo g & hexo deploy 自动推送
登录百度搜索资源平台,访问用户中心->站点管理->普通收录->API提交(记录秘钥)
对应的token则参考相应的推送接口URL中的token即可
登录必应站长平台,访问设置->API access(API访问)->API Key(API秘钥)->Generate API Key,生成并记录API Key即可
(需访问国外网站)访问Google Indexing API ,根据提示在Google开发者平台创建项目、服务账号(IAM管理->服务账号),将服务账号添加为Google Search Console所有者,获取到相应的访问令牌
填充账号信息,跳过权限(可选配置)设置相关,创建完成则“管理秘钥”->“添加秘钥”(创建新秘钥,选择JSON格式),随后保存下载的JSON秘钥即可(仅此一份需妥善保存)
随后将获取到的 json 密匙文件放于 hexo 根目录(与hexo _config.yml文件位置相同)
在此之前需要验证网站所有权,随后点击进入相应的内容添加所有者权限
代理者服务账号:上述下载的JSON私钥中的client_email字段或者在服务账号管理页面中查看
引入插件
npm install --save hexo-submit-urls-to-search-engine
文件配置
为了避免token直接暴露在仓库中(尤其是针对公共的仓库,可以通过CI的环境变量设置记录秘钥保证安全性)
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_TOKEN
,BING_TOKEN
,值为已获取的token
此处可构建Travis CI配置,自动部署hexo项目,使用Travis持续集成
<3>如果使用 Github Action ,还需在 yml
文件中设置环境变量
github对应hexo发布仓库:Settings->Secrets->Actions->New repository secret
参数 | 说明 |
---|---|
BAIDU_TOKEN | 根据文档指示生成 |
BING_TOKEN | 根据文档指示生成 |
# 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.1
,port
可在软件中查看设置,一般为8080
。Win10 可在 设置->代理处查看
replace:URL替换
针对域名解析的情况可将生成的github.io类型的url替换为对应的自定义域名,或者将中文域名替换成转码后的域名
replace: 0 # 是否替换链接中的部分字符串,可选值:1 | 0(0:否;1:是)
find_what: http://xxx.github.io/blog
replace_with: https://xxx.com
发布
# 配置_config.yml deploy属性(通过"-"符号区分不同的发布url)
deploy:
- type: cjh_google_url_submitter
- type: cjh_bing_url_submitter
- type: cjh_baidu_url_submitter
# 配置完成执行hexo deploy指令则可自动推送链接
hexo deploy
# 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'
}
}
}
指令执行完成,可查看响应状态(根据响应报文检查数据推送是否正常),搜索引擎每天有一定数量的链接提交限制,如果是提交失败的url则相应进行检查,手动修改自动提交的txt文件中的url,去除已经成功推送的内容,随后重新尝试推送即可
索引查询
打开任意搜索引擎,输入site:网站,访问是否正常,如果是新站索引量0->1需要一定的时间,收录速度也收其他因素影响
推送记录查询
登录相应的站长平台,随后访问对应网域资源,查看统计数据统计
为网站使用到的所有外链添加rel=”noopener external nofollow noreferrer”, 可以有效地加强网站SEO和防止权重流失
npm i hexo-filter-nofollow --save
nofollow:
enable: true
field: site