blog.fukuchiharuki

Jekyll on GitHub Pagesでサイトマップを作成する方法

Posted at: April 1, 2017

せっかくブログを書くのですから、できるだけ多くの人に見てもらいたいものです。つい先日、はてなブログからJekyll on GitHub Pagesに乗り換えてブログを再開しました。Jekyllは検索エンジンに優しいのでしょうか。気になるところです。

サイトマップを作成しよう

Googlebot などの検索エンジンのウェブクローラは、このファイルを読み込んで、より高度なクロールを行います。
サイトマップについて

検索エンジンのクローラーはリンクを辿りますから、ページの一覧を用意する必要はないはずです。しかし被リンクが少ない場合、クローラーがサイトを検出できないことがあるようです。漏らさずクローラーに検出してもらえるよう、サイトマップを用意してページの存在を知らせましょう。

サイトマップはサイト内のページを一覧したXMLです。これはこのブログのサイトマップです。Jekyllでは記事の一覧を利用してコンテンツを作成することができるので、この仕組みを利用すればサイトマップも自作できるようです。

プラグインで自動生成できる

GitHub PagesではJekyllのプラグイン使用が制限されています。が、一部のプラグインは使用することができます。幸い、その中にサイトマップを作成するプラグインが含まれています。なお、GitHub Pagesで使用することができるJekyllのプラグインは次に一覧されています。

サイトマップを作成するプラグイン(jekyll-sitemap)を使用するには_config.ymlに次の内容を設定します。変更をコミットしてプッシュしたら/sitemap.xmlにアクセスしてサイトマップが作成されたことを確認しましょう。

gems:
  - jekyll-sitemap

最終更新日時を反映する

公式によると、jekyll-sitemapは最終更新日時<lastmod></lastmod>に次の値をセットします。

  1. 別のプラグイン(jekyll-last-modified-at)で取得できる最終更新日時(GitHub Pagesでは動かない)
  2. 記事に個別追加した変数(last_modified_at)
  3. 記事の投稿日付(post.date)

別のプラグイン(jekyll-last-modified-at)はGitHub Pagesでは動きません。ので、何もしなければ一番優先度の低い、記事の投稿日付が<lastmod></lastmod>にセットされてしまいます。

Googleのクローラーは最後のクロールより<lastmod></lastmod>が新しいものを優先するようです。ので、記事に加筆をした場合サイトマップの最終更新日時も更新するのがよさそうです。プラグインだけではこれを自動化することができないので、次の要領で記事にメタデータlast_modified_atを追加します。

---
layout: post
title: Jekyll on GitHub Pagesでサイトマップを作成する方法
last_modified_at: 2017-04-01T01:06:00+09:00
---

少々手間ですがこれで最終更新日時をサイトマップに反映できます。

まとめ

GitHub PagesではJekyllのプラグインが一部使用することができます。jekyll-sitemapはサイトマップを自動生成するプラグインで、GitHub Pagesで使用することができます。ただし、最終更新日時を自動で反映することができません。これについては各記事にメタデータlast_modified_atを追加することで対処することができます。

それではよいブログ生活を。