Hexo博客搜索引擎优化
1. 如何让自己的博客网站被收录
1.1. 首先检查自己的站点有没有被收录
以百度为例
- 打开百度http://www.baidu.com
- 在收索框输入 site: 你的网站域名
- 如果你用 site:高级搜索没有搜索到你的网站,那么说明你的网站并没有被搜索引擎收录。
- 如果搜索到了,但通过网站的关键词搜索不到,说明你的网站排名靠后,正需要 SEO 优化。
1.2. 让百度收录你的网站
首先,进入百度搜索资源平台;
打开平台后,点击用户中心,点击站点管理,如果未登录,需要先登录;
点击添加网站,选择你的协议头 http/https 按照自身情况选择,输入你的网站地址,点击下一步;
验证网站: 一般验证网站有以下几种验证方法:
文件验证 (推荐)
文件验证是指将百度给你的 html 文件放到 source 目录下(即 source/baidu_verify_code_xxxx.html)
值得注意的是:文件验证的文件是一个 HTML 文件,hexo 可能会将他与主题镶嵌在一起,所以要在百度给你的 HTML 文件上加入以下代码:
1
2
3---
layout: false
---
html 标签验证
- html 标签验证则是在 head 标签里添加百度所指定的代码
CNAME 验证 (推荐)
CNAME 验证就是添加域名解析记录
请将 code-xxxxx.guoapeng.github.io 使用 CNAME 解析到 ziyuan.baidu.com
完成操作后请点击“完成验证”按钮。
为保持验证通过的状态,成功验证后请不要删除该 DNS 记录
对于 hexo 的博客来说,我个人建议 CNAME 和文件验证这两种
网站验证成功后,就可以在站点管理管理你的网站了。
提交完你的网站后,不出意外的情况下,搜索引擎会在几个星期内收录你的网站,一般不超过一个月,超过一个月的话可能就有问题了。
1.3. 让 Bing 收录你的网站
首先,进入bing webmaster tools;
进入bing webmaster tools时,如果未登录,需要先登录;
点击添加网站,输入你的网站地址,点击添加;
验证网站: 一般验证网站有以下几种验证方法:
xml 文件验证 (推荐) 文件验证是指将百度给你的 xml 文件放到 source 目录下(即 source/BingSiteAuth.xml)
HTML Meta 标记验证
- html 标签验证则是在 head 标签里添加百度所指定的代码
将<meta>
标记复制并粘贴到你网站的主页中。该标记应位于第一个<body>
部分前面的<head>
部分中。<meta name="msvalidate.01" content="xxxxxx" />
要保持已验证状态,请勿移除 meta 标记,即使验证成功后也是如此.
- html 标签验证则是在 head 标签里添加百度所指定的代码
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 | url: http://你的网站 |
这里建议添加 html 后缀, 这样搜索引擎从 url 后缀也能判断是 html 页面
这里建议将 trailing_index 设置为 false 这样生成的目录结构又会缩短一层变成’http://你的网站/category/title.html’
如果不设置为 false, 则页面的永久连接为’http://你的网站/category/title/index.html’
1.5. 添加 sitemap 站点地图
sitemap 站点地图可以让搜索引擎更便捷的抓取你的网站,一般为 XML 文件。
hexo 有两个插件可以自动生成 sitemap:
1 | npm install hexo-generator-sitemap --save |
安装完成后,进入 hexo 根目录的_config.yml 配置文件,添加以下代码:
1.6. 自动生成 sitemap
1 | # common sitemap for all the search engines |
为什么要配置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 |
|
配置插件
修改根目录下的配置文件_config.yml 添加以下代码:
1 | neat_enable: true |
1.9. 添加 robots.txt
在网站优化过程中,有些时候,网站中有重要及私密的内容,站长并不希望某些页面被蜘蛛抓取,比如后台的数据,测试阶段的网站,还有一种很常见的情况,搜索引擎抓取的大量没有意义的页面。
robots.txt 是一个纯文本文件,用于声明该网站中不想被蜘蛛访问的部分,或指定蜘蛛抓取的部分,当蜘蛛访问一个站点时,它会首先检查该站点是否存在,robots.txt,如果找到,蜘蛛就会按照该文件中的内容来确定抓取的范围,如果该文件不存在,那么蜘蛛就会沿着链接直接抓取。即,只有在需要禁止抓取某些内容是,写 robots.txt 才有意义.
robots 配置方法如下:
- 在 …/source 路径下创建 robots.txt 文件,里面输入你的 robots 配置,如果不懂,可以百度 robots 的语法,修改后保存即可提交。
例如:
1 | # welcome to : eagle's blog |
注意 Disallow 与 Allow 行的顺序是有意义的
1 | 举例说明: |
在百度站长平台监测并更新 Robots
提示检测到您更新了 Robots 文件即成功。
2. 开启百度推送
每次更新博客时,主动向百度提交链接,有利于 SEO.
- 安装 hexo-baidu-url-submit
1 | npm install hexo-baidu-url-submit --save |
修改根目录下的_config 配置
设置百度主动推送
1
2
3
4
5baidu_url_submit:
count: 200 # 比如200,代表提交最新的200个链接
host: pengtech.net # 在百度站长平台中注册的域名
token: your_token # 百度站长密钥
path: baidu_urls.txt # 文本文档的地址, 新链接会保存在此文本文档里,这个默认修改根目录下的_config 配置 Deploy
检验是否成功
当出现类似以下信息,表示配置成功.1
2
3
4
5
6INFO 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 | # Google Webmaster tools verification. |
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 | hexo_submit_urls_to_search_engine: |
记得看后面的注释说明,需要注意的是 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 | deploy: |
发布
1 |
|
此时可以看到日志中已经可以提交连接到百度和 bing
5.3. 如何获得 google_key_file
详情请参考: https://blog.dejavu.moe/posts/hexo-seo
https://cjh0613.com/20200603HexoSubmitUrlsToSearchEngine
打开 Google Indexing API 的官方文档可以看到 使用 Indexing API 的前提条件,按照该文档完成以下步骤:
- 打开服务帐号页面,登陆。
- 为客户端创建一个项目
- 创建服务账号
- 输入账号名,继续
- 选择角色: owner
- 继续
- 添加密钥
- 点击服务账号,进入详情,切换到密钥 tab
- 注意在 创建密钥时以 json 格式保存密钥,点击 创建 会自动下载密钥文件,请妥善保存后面会用到
- 返回 google console 设置
导航到 设置 =》用户和权限 =》添加用户, 将创建服务账号是生成的服务邮箱地址添加为新用户,并授予所有者权限 - 将 json 文件放置到与_config.yml 同级别目录
- 修改_config.yml 的 google_key_file 属性指向正确的 keyfile
- 打开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 |
|
6.4. 配置 hexo-indexnow
在根目录 _config.yml 添加如下配置:
1 |
|
6.5. 查看推送结果
在执行 hexo deploy 的时候,indexnow_url_submitter 将会发挥作用,将连接推送到 bing indexnow。
提交了哪些 urls 可以在 hexo/.deploy_git/indexnow.txt 文件中找到
1 |
|
然后打开 https://www.bing.com/webmasters 中查看 IndexNow,查看推送结果。
补充:indexnow 也支持使用 http post 提交 urls, 如下所示:
1 | { |
7. 相关阅读
Hexo博客搜索引擎优化