Hexo博客搜索引擎优化

1. 如何让自己的博客网站被收录

1.1. 首先检查自己的站点有没有被收录

以百度为例

  • 打开百度http://www.baidu.com
  • 在收索框输入 site: 你的网站域名
    • 如果你用 site:高级搜索没有搜索到你的网站,那么说明你的网站并没有被搜索引擎收录。
    • 如果搜索到了,但通过网站的关键词搜索不到,说明你的网站排名靠后,正需要 SEO 优化。

1.2. 让百度收录你的网站

  • 首先,进入百度搜索资源平台

  • 打开平台后,点击用户中心,点击站点管理,如果未登录,需要先登录;

  • 点击添加网站,选择你的协议头 http/https 按照自身情况选择,输入你的网站地址,点击下一步;

  • 验证网站: 一般验证网站有以下几种验证方法:

    1. 文件验证 (推荐)

      • 文件验证是指将百度给你的 html 文件放到 source 目录下(即 source/baidu_verify_code_xxxx.html)

      • 值得注意的是:文件验证的文件是一个 HTML 文件,hexo 可能会将他与主题镶嵌在一起,所以要在百度给你的 HTML 文件上加入以下代码:

        1
        2
        3
        ---
        layout: false
        ---
    2. html 标签验证

      • html 标签验证则是在 head 标签里添加百度所指定的代码
    3. CNAME 验证 (推荐)

      • CNAME 验证就是添加域名解析记录

        请将 code-xxxxx.guoapeng.github.io 使用 CNAME 解析到 ziyuan.baidu.com

        完成操作后请点击“完成验证”按钮。

        为保持验证通过的状态,成功验证后请不要删除该 DNS 记录

    对于 hexo 的博客来说,我个人建议 CNAME 和文件验证这两种

  • 网站验证成功后,就可以在站点管理管理你的网站了。

    提交完你的网站后,不出意外的情况下,搜索引擎会在几个星期内收录你的网站,一般不超过一个月,超过一个月的话可能就有问题了。

1.3. 让 Bing 收录你的网站

  • 首先,进入bing webmaster tools

  • 进入bing webmaster tools时,如果未登录,需要先登录;

  • 点击添加网站,输入你的网站地址,点击添加;

  • 验证网站: 一般验证网站有以下几种验证方法:

    1. xml 文件验证 (推荐) 文件验证是指将百度给你的 xml 文件放到 source 目录下(即 source/BingSiteAuth.xml)

    2. HTML Meta 标记验证

      • html 标签验证则是在 head 标签里添加百度所指定的代码
        <meta> 标记复制并粘贴到你网站的主页中。该标记应位于第一个 <body> 部分前面的 <head> 部分中。
        <meta name="msvalidate.01" content="xxxxxx" />

        要保持已验证状态,请勿移除 meta 标记,即使验证成功后也是如此.

    3. CNAME 验证 (推荐)
      手动将 CNAME 记录添加到域名服务器中
      添加名为 xxx 且值为 verify.bing.com 的 CNAME (别名)记录。

  • 以上三种验证方式, 任选一种, 进行验证

1.4. 优化结构

seo 搜索引擎优化认为,网站的最佳结构是用户从首页点击三次就可以到达任何一个页面,但是我们使用 hexo 编译的站点打开文章的 url 是:sitename/year/mounth/day/title 四层的结构,这样的 url 结构很不利于 seo,爬虫就会经常爬不到我们的文章,于是,我们可以将 url 直接改成 sitename/title 的形式,并且 title 最好是用英文,在根目录的配置文件下修改 permalink 如下:

1
2
3
4
5
6
7
8
url: http://你的网站
root: /
permalink: :title.html
permalink_defaults:
pretty_urls:
trailing_index: false # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks

这里建议添加 html 后缀, 这样搜索引擎从 url 后缀也能判断是 html 页面
这里建议将 trailing_index 设置为 false 这样生成的目录结构又会缩短一层变成’http://你的网站/category/title.html’
如果不设置为 false, 则页面的永久连接为’http://你的网站/category/title/index.html’

1.5. 添加 sitemap 站点地图

sitemap 站点地图可以让搜索引擎更便捷的抓取你的网站,一般为 XML 文件。

hexo 有两个插件可以自动生成 sitemap:

1
2
npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save

安装完成后,进入 hexo 根目录的_config.yml 配置文件,添加以下代码:

1.6. 自动生成 sitemap

1
2
3
4
5
6
7
8
# common sitemap for all the search engines
sitemap:
path: sitemap.xml
tags: false
categories: false
# for baidy
baidusitemap:
path: baidusitemap.xml

为什么要配置tags:false 和categories: false 主要是为了解决“Noindex page in sitemap”的问题
hexo生成的tag页面和category页面中带有<meta name="robots" content="noindex"> 标记告诉search engine不要index该页面,
但是hexo-generator-sitemap又会将其保护到sitemap之中,导致Noindex page in sitemap问题的页面数量过高
详情参考Lei Mao的分析Google Search Console Coverage Error Fix for Hexo Blog

每次运行 hexo g ,则会在缓存文件夹下生成 sitemap.xml baidusitemap.xml 则为成功。

生成了 sitemap 后,则需要提交 sitemap 给搜索引擎:

百度则是进入搜索资源平台的站点管理,点击 sitemap,添加 baidusitemap.xml 的路径
谷歌则是进入 Google Search Console,进入站点地图,添加 sitemap.xml 的路径
其中 sitemap.xml 文件是搜索引擎通用的 sitemap 文件

1.7. 关键词与描述的优化

keywords 和 description 是告诉搜索引擎你这个网页的关键词和你这个网页是干什么的,不能乱写。

1.8. 代码压缩

网页的代码存在大量空白符,压缩代码可以提高网站被访问速度。

安装以上插件:

1
2
3

npm install hexo-neat --save

配置插件

修改根目录下的配置文件_config.yml 添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
neat_enable: true
neat_html:
enable: true
exclude:
neat_css:
enable: true
exclude:
- "**/*.min.css"
neat_js:
enable: true
mangle: true
output:
compress:
exclude:
- "**/*.min.js"
- "**/index.js"

1.9. 添加 robots.txt

在网站优化过程中,有些时候,网站中有重要及私密的内容,站长并不希望某些页面被蜘蛛抓取,比如后台的数据,测试阶段的网站,还有一种很常见的情况,搜索引擎抓取的大量没有意义的页面。

robots.txt 是一个纯文本文件,用于声明该网站中不想被蜘蛛访问的部分,或指定蜘蛛抓取的部分,当蜘蛛访问一个站点时,它会首先检查该站点是否存在,robots.txt,如果找到,蜘蛛就会按照该文件中的内容来确定抓取的范围,如果该文件不存在,那么蜘蛛就会沿着链接直接抓取。即,只有在需要禁止抓取某些内容是,写 robots.txt 才有意义.

robots 配置方法如下:

  • 在 …/source 路径下创建 robots.txt 文件,里面输入你的 robots 配置,如果不懂,可以百度 robots 的语法,修改后保存即可提交。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
# welcome to : eagle's blog
User-agent: *
Allow: /
Allow: /archives/
Allow: /categories/
Allow: /about/

Disallow: /js/
Disallow: /css/
Disallow: /fonts/
Disallow: /vendors/
Disallow: /lib/
Sitemap: https://your_site_address/sitemap.xml

注意 Disallow 与 Allow 行的顺序是有意义的

1
2
3
4
5
6
7
8
9
10
11
12
13
举例说明:
允许爬虫蜘蛛访问 /admin/ 目录下的seo文件夹  
  User-agent: *     
  Allow: /admin/seo/
  Disallow: /admin/

如果Allow 和 Disallow 的顺序调换一下:

  User-agent: *     
  Disallow: /admin/
  Allow: /admin/seo/
  爬虫蜘蛛就无法访问到 /admin/ 目录下的 seo 文件夹,因为第一个 Disallow: /admin/ 已匹配成功。

在百度站长平台监测并更新 Robots
提示检测到您更新了 Robots 文件即成功。

2. 开启百度推送

每次更新博客时,主动向百度提交链接,有利于 SEO.

  • 安装 hexo-baidu-url-submit
1
2
3
npm install hexo-baidu-url-submit --save
# 使用淘宝cnpm可以加快速度
cnpm install hexo-baidu-url-submit --save
  • 修改根目录下的_config 配置

    设置百度主动推送

    1
    2
    3
    4
    5
    baidu_url_submit:
    count: 200 # 比如200,代表提交最新的200个链接
    host: pengtech.net # 在百度站长平台中注册的域名
    token: your_token # 百度站长密钥
    path: baidu_urls.txt # 文本文档的地址, 新链接会保存在此文本文档里,这个默认
  • 修改根目录下的_config 配置 Deploy

  • 检验是否成功
    当出现类似以下信息,表示配置成功.

    1
    2
    3
    4
    5
    6
    INFO  Deploying: baidu_url_submitter
    INFO Submitting urls
    https://pengtech.net/20211028/linux/create_rpm_repository_on_linux/
    https://pengtech.net/20211028/linux/how_to_create_rpm_package/
    {"remain":2978,"success":22}
    INFO Deploy done: baidu_url_submitter

3. 谷歌收录站点

进行这个之前,首先友情提示下大佬们,最好开个 开启魔法,因为很多涉及谷歌服务,我这里用的是 V2Raya,网上有很多,可以参考2024 科学上网秘籍:v2rayA 安装与配置指南for Windows、Macos、Linux - 鹏叔的技术博客

打开 Google Search Console,添加博客地址。并进行相关验证,根据提示即可完成认证,认证成功如下:

认证方法其实这里方法和百度的类似,也有三种,我用的是直接下载文件,放到我的站点 source 目录下,然后我在 git 命令面板里输入以下指令(下面将这一套指令简称为更新并同步文件指令)

1
hexo clean && hexo g && hexo d

之后,我去 google 认证,发现并不能验证成功,后来去站点配置_config.yml 下添加了一句代码

1
google-site-verification: true

修改 Next theme 的_config.yml

1
2
3
# Google Webmaster tools verification.
# See: https://developers.google.com/search
google_site_verification: your_google_verification_code

4. 首页标题优化

SEO 最重要的是你的标题,一般搜索都是搜索你的标题。
更改 index.swig 文件(your-hexo-site\themes\next\layout\layout.njk);

1
<title>{% block title %} {% endblock %}</title>

修改为:

1
<title>{% block title %} - {{ theme.description }} {% endblock %}</title>

这时候你的首页会更符合网站名称 - 网站描述这习惯。

5. 补充: 让 bing, google, baidu 快速收录网站

对于 Hexo 博客,我们需要快速将内容主动提交给搜索引擎,其他人仅搜索文章的关键字时才能看到我们的文章,从而提高了曝光率。
这里需要安装插件 并修改 hexo 配置 hexo-submit-urls-to-search-engine
安装:

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

配置:
需要修改 hexo 的配置文件_config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
hexo_submit_urls_to_search_engine:
submit_condition: count # count/period The submitted condition, only supports count now
count: 20 ## Submit the latest 10 links
period: 900 #A period of time, in seconds, the update time of the article is away from the running time of the plugin. Within this period of time, the link will be submitted
google: 1 # 1/0->on/off Submit to Google
bing: 1 #Submit to bing
baidu: 1 #Submit to baidu
txt_path: submit_urls.txt ## The address of the text document, the link to be pushed will be saved in this text document
baidu_host: https://pengtech.net ## Domain name registered in Baidu webmaster platform
baidu_token: xxxxx ## Please note that this is your secret key, so do not publish the website source code in the public repository!
bing_host: https://pengtech.net ## Domain name registered in Bing webmaster platform
bing_token: xxxxx ## Please note that this is your secret key, so do not publish the website source code in the public repository!
google_host: https://pengtech.net ## Domain name registered in Google webmaster platform
google_key_file: Project.json #Store the json file of the google key in the root directory of the website (same location as the hexo config.yml file), please do not publish the source code of the website in the public warehouse!
google_proxy: 0 # 向谷歌提交网址所使用的系统 http 代理,填 0 不使用代理

记得看后面的注释说明,需要注意的是 google_proxy 这个配置项,如果本地能直接访问 google 设置为 0, 表示不通过代理,如果需要通过代理访问 google 服务,这里设为代理 url,如果 Hexo 源代码托管在可以直接访问 Google 的集成部署平台(如:Travis CI、Vercel、Github Actions…)请将代理配置设为 0,并将部署命令由 hexo generate 改为 hexo generate && hexo deploy

5.1. 如何获得 bing_token

登录 bing webmasters, 点击设置-> API 访问 管理凭据 -> API 密钥 管理密钥 -> 即可看到 api 密钥.

5.2. 添加新的 deploy

1
2
3
4
deploy:
- type: cjh_google_url_submitter
- type: cjh_bing_url_submitter
- type: cjh_baidu_url_submitter

发布

1
2
3

hexo clean && hexo generate && hexo deploy

此时可以看到日志中已经可以提交连接到百度和 bing

5.3. 如何获得 google_key_file

详情请参考: https://blog.dejavu.moe/posts/hexo-seo

https://cjh0613.com/20200603HexoSubmitUrlsToSearchEngine

打开 Google Indexing API 的官方文档可以看到 使用 Indexing API 的前提条件,按照该文档完成以下步骤:

  1. 打开服务帐号页面,登陆。
  2. 为客户端创建一个项目
  3. 创建服务账号
    • 输入账号名,继续
    • 选择角色: owner
    • 继续
  4. 添加密钥
    • 点击服务账号,进入详情,切换到密钥 tab
    • 注意在 创建密钥时以 json 格式保存密钥,点击 创建 会自动下载密钥文件,请妥善保存后面会用到
  5. 返回 google console 设置
    导航到 设置 =》用户和权限 =》添加用户, 将创建服务账号是生成的服务邮箱地址添加为新用户,并授予所有者权限
  6. 将 json 文件放置到与_config.yml 同级别目录
  7. 修改_config.yml 的 google_key_file 属性指向正确的 keyfile
  8. 打开google cloud console 开启 google api

6. 使用 indexnow 快速提交链接

说明: 如果使用了 indexnow 提交链接,那么前面一节讲的 hexo-submit-urls-to-search-engine 中关于向 bing 提交链接的方式可以关闭。
更推荐使用 indexnow 向 bing 提交链接。

Bing IndexNow 是一个由微软 Bing 与俄罗斯搜索引擎 Yandex 联合推出的新技术协议,旨在提高搜索引擎对网站内容更新的响应速度和索引效率。

IndexNow 协议允许网站在内容被创建、更新或删除时,通过 API 主动通知搜索引擎。这改变了传统搜索引擎通过爬虫主动抓取网站内容的方式,转变为被动等待网站通知的推送模式。

目前,IndexNow 协议已经被 Bing 和 Yandex 等多个搜索引擎采用,并且已经有超过 8 万个网站开始使用并享受其带来的好处。

6.1. 生成接口密钥

获取 indexnow API Key:
随后打开一个搜索引擎的 indexnow 界面,例如微软必应 indexnow
向下滑界面,找到 Generate API Key , 将值复制下来

6.2. 验证网站所有权

首先按照 bing index 的指导将 1f571e3a4aed400d811a524c70eda337.txt 文件放在本机 hexo/source 目录下

然后部署一次:

1
hexo c && hexo g && hexo d

最后访问 https://your_domain/1f571e3a4aed400d811a524c70eda337.txt 应该看到:

1
1f571e3a4aed400d811a524c70eda337

6.3. 安装 hexo-indexnow 插件

1
2
3
4
5

yarn add hexo-indexnow
# 或
npm i hexo-indexnow --save

6.4. 配置 hexo-indexnow

在根目录 _config.yml 添加如下配置:

1
2
3
4
5
6
7
8
9
10

hexo_indexnow:
count: 10 # 数字或者 "latest"(=1)
txt_name: indexnow.txt # 链接文件名
apikey: xxxxxx # 你的 apikey
server: bing # indexnow 服务器,可选值有:bing、yandex、indexnow

deploy:
- type: indexnow_url_submitter

6.5. 查看推送结果

在执行 hexo deploy 的时候,indexnow_url_submitter 将会发挥作用,将连接推送到 bing indexnow。

提交了哪些 urls 可以在 hexo/.deploy_git/indexnow.txt 文件中找到

1
2
3
4
5

INFO Submitting indexnow urls
.....
INFO indexnow submitted

然后打开 https://www.bing.com/webmasters 中查看 IndexNow,查看推送结果。

补充:indexnow 也支持使用 http post 提交 urls, 如下所示:

1
2
3
4
5
6
{
"host": "www.your_domain.xyz",
"key": "1f571e3a4aed400d811a524c70eda337",
"keyLocation": "https://your_domain.xyz/1f571e3a4aed400d811a524c70eda337.txt",
"urlList": ["https://www.your_domain.xyz/example.html"]
}

7. 相关阅读

使用 Hexo 搭建自己的博客网站

Hexo 命令详解

Hexo 博客添加评论功能

Hexo 配置 Next 主题

Hexo 博客搜索引擎优化

作者

鹏叔

发布于

2021-10-26

更新于

2024-11-13

许可协议

评论