Jekyll Blog 的 SEO 优化技巧

2012-10-28 Sunday     Blog, Others


所谓的 SEO 也就是搜索引擎优化,指遵循搜索引擎的搜索原理,对网站结构、网页文字语言和站点间互动外交略等进行合理规划部署,以改善网站在搜索引擎的搜索表现,进而增加客户发现并访问网站的可能性。

这里针对通过 Jekyll 搭建的 Blog 查看如何进行优化。

简介

搜索引擎会通过 Robots 尽量扫描所有的网站,然后将数据保存下来,当用户搜索的时候会从保存的数据中查询相关的记录,同时根据一些参数对结果进行排名。

SEO 的全称是 Search Engine Optimization 也就是根据搜索引擎的排名策略,对网站进行优化,大部分的优化 Tag 都需要添加到网站的 <head> 字段内。

如上,那么 SEO 的关键是,如何被各个搜索网站有效抓取,同时提高搜索排名。以 Google 为例,可以使用 site: yourdomain.com 查看是否被 Google 抓取;不过其排名的参数有两百多个,很难全部覆盖,如下介绍常见的优化技巧。

标题和描述

搜索结果中会显示对应标题和描述内容,如果没有指定,一般会自动选择第一段内容 (当然不一定严格准确)。所以,标题尽量简单吸引人,而描述可以简要介绍这篇文章的概要内容、要解决的问题等

标题

建议在 _config.yml 中添加 title 配置项,这样就可以通过 site.title 直接引用,同时方便修改;而在文章的头部,通过 title 指定文章相关标题,那么就可以设置如下内容。

<title>
   {%if page.title %}
       {{ page.title }}
   {% else %}
       {{ site.title }}
   {% endif %}
</title>

在头部中,尽量包含与文章相关的关键词,这样更容易被选中。

描述

与上面类似,在 _config.yml 中添加主页相关的描述信息,在每篇文章的头部添加与文章相关的描述信息。长度尽量小于 160 字节,否则可能会被识别为垃圾信息或者关键字。

<meta itemprop="description" name="description" content="{% if page.description %}{{ page.description | truncate: 160 }}{% else %}{{ site.description | truncate: 160  }}{% endif %}" />

描述只会用来在搜索结果中展示,并不会参与排名,但是仍然建议在开始几句话中包含相关的关键字,这样可以方便用户查阅,从而增加用户的点击率。

另外 <meta name="keywords" content="XXX" /> 对于 Google 来说已经取消了参考该因子作为排名,主要是因为用户可以任意修改,可能会污染排名结果,详见 Google does not use the keywords meta tag in web ranking 中的介绍。

URL 路径

尽量在 URL 中包含与主题相关的信息,一些搜索引擎可以判断 URL 是否与主题相关,这样可以有更好的搜索排名,所以,不建议使用文章 ID 作为 URL 的内容,而且希望其长度尽量简短。

在 Jekyll 中,默认路径会使用到日期,例如 https://yourname.github.io/2010/08/15/your-post-name.html ,其实,除非文章真正与时间相关 (例如游记、周更漫画等) 不建议添加日期。

也就是 “Permanent link” 的缩写,意为 “永久链接”,即浏览器访问站点资源的完整路径地址。

可以在 _config.yml 中修改 Permalink 配置,默认是 /:categories/:year/:month/:day/:title:output_ext ,可以修改为 permalink: /:title/ 或者 permalink: /:title.html 即可。

减少使用停用词

所谓的停用词 (Stop-Words) 常见的有 and or but of the a etc ,这些会增加 URL 的长度,而且没有太多实际含义。例如 optimize-jekyll-blog-seo.mdhow-to-optimize-jekyll-blog-for-seo.md 基本可以表达相同的意思,而前者更加简练。

另外,不太建议使用中文路径,因为复制之后链接地址会被转义,很难看出具体是什么样的链接。

所以,URL 应该尽量简短,而且要包含与文章主题相关的关键字

添加 Sitemap

一般是 xml 格式,通过 sitemap.xml 用于告知搜索引擎,在该网站上有哪些可供抓取的网页,以便搜索引擎可以更加智能地抓取网站。

最简单的就是 xml 文件,在其中列出网站中的网址以及关于每个网址的其他元数据,包括了上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度等信息。

可以通过 jekyll-sitemap 插件自动生成,也可以手动添加,该文件设置的内容直接参考如下,可以查看 本站 sitemap.xml

---
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for post in site.posts %}
    <url>
      <loc>{{ site.url }}{{ post.url | remove: 'index.html' }}</loc>
    </url>
{% endfor %}
</urlset>

生成之后,搜索机器人会定期查找,当然也可以通过 Google Search Console百度搜索资源平台 提交。

爬虫设置

互联网上的大部分内容都会被搜索引擎爬虫抓取,而搜索引擎会依据站点根目录下 robots.txt 文件所定义的规则去抓取当前站点的内容。

有一部分内容不想被抓取,这样可以通过该文件进行配置,示例如下。

User-agent: *                     # 指定Agent
Disallow: /assets/                # 禁止目录,需要以/结尾,常规资源目录
Disallow: /norobots/              # 杂七杂八敏感文件
Disallow: /targer_file.extension  # 禁止文件

可以添加如下内容,这样会通过 Jekyll 自动渲染。

---
layout: null
permalink: robots.txt
---

User-agent: *

Disallow: /assts/
Disallow: /norobots/

Sitemap: {{ site.url }}/sitemap.xml

注意,例如上述的 /norobots/ 目录不想被爬虫访问,同时也不想被外部访问,那么就可以通过重定向来保护,可以使用 jekyll-redirect-from 插件设置,在 _config.xml 添加如下配置。

redirect_from:
  - /norobots/

这样访问时会直接返回 404 。

其它

增加 Open Graph

所谓的 Open Graph Protocol 开放内容协议,是由 Facebook 发起的,用来更好的理解一个链接,因为在分享链接时,可能会因为各种原因导致一些有效信息丢失,也可能会有异常数据。

<meta property="og:site_name" content="WebJeda Blog">
<meta property="og:type" content="article">
<meta property="og:url" content="{{ site.url }}{{ page.url }}">
<meta property="og:title" content="{%if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}">
<meta property="og:description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}">

图片增加 alt 标签

所谓的 alt 标签,其实是当图片无法加载时显示的文字内容,所以尽可能在里面添加与文章以及图片相关的关键字,在使用 Markdown 语法时,可以通过如下方式指定。

![ALT Tag Content](/Your/Picture/Path/Name.png "Some Content When Hover")

Jekyll SEO Tag

实际上 GitHub 支持使用 Jekyll SEO Tag 插件,可以支持很多搜索引擎,使用方式如下。

  1. 本地通过 gem 'jekyll-seo-tag' 命令安装;
  2. _config.yml 配置文件中,添加 jekyll-seo-tag 插件;
  3. {% seo %} 添加到 </head> 之前;

注意,如果 Jekyll 的版本小于 3.5.0 ,那么添加插件时应该使用:

gems: [jekyll-seo-tag]

而不是

plugins:
  - jekyll-seo-tag

站长工具

通常有 GoogleBaidu 等搜索引擎的站长工具,通常需要在网站的 <head> </head> 头部添加类似如下的特定元标记,用于标记确实是你网站,也就是用于认证。

<meta name="baidu-site-verification" content="B786jeR0MV" />

这样就有利于搜索引擎的收录。

参考



如果喜欢这里的文章,而且又不差钱的话,欢迎打赏个早餐 ^_^