メインコンテンツまでスキップ

XMLサイトマップの作り方

TL;DR

XMLサイトマップについての話

sitemap.xmlを作るためにsitemap.xmlを作るという小泉進次郎構文

layoutsフォルダに設置するだけ

サイトマップ(sitemaps)とは

Sitemaps(サイトマップ)標準は、ウェブマスターがサーチエンジンに、サイト内でクロールすべきURLを教えるための方式を規定するものである。サイトマップは、当該サイトにおけるURL全てをリストした、XMLファイルとして提供し、ウェブサイト運営者は各URLに付加的情報として、最終更新日時や更新頻度、他のURLとの相対的な重要度を加えたりできる。Sitemapsに対応したサーチエンジンでは、この情報を使って、サイトのクロールをより効率的に行えるようになる。サイトマップはサーチエンジンへのURL追加規約であり、URL排除規約であるrobots.txtを補完するものである。

Sitemaps :wikipedia

サイトマップの必要性

検索エンジンにブログ内の情報を効率的に知ってもらうために作成します。

定期的にクローラーが巡回していていつかは見に来てくれますが、

時間がかかりますし、効率的に収集できるサイトは評価が高くなると思います。

Hugoでのサイトマップの生成

Hugoには自動的にXMLサイトマップを生成してくれる機能があります。

Hugo コマンドでビルドを実行するとpublicの配下に作成されます。

│ config.toml
├─archetypes
├─content
├─data
├─layouts
├─public
│ │ .htaccess
│ │ index.html
│ │ index.xml
│ │ sitemap.xml   ←ココ!
│ ├─categories
│ ├─js
│ ├─page
│ ├─plugins
├─resources
├─static
└─themes

特にいじらなくてもサイトマップを作成してくれて便利なのですが、

全てのパスを載せているため不要な部分も載ってしまっています。

タグやアーカイブのパスは無駄なのでカスタマイズしたいと思います。

今回の記事は以下のサイトを参考に作成いたしました。

HUGOで必要最低限なサイトマップを作る

サイトマップをオリジナルで作成できるようにする

手順は結構簡単です。

ファイルの作成

まず、layoutsフォルダの直下にsitemap.xmlという名前のファイルを作成します。

ちなみに文字列形式はUTF-8で書いてます。

sitemap.xmlファイルの設置場所はココになります。

├─config.toml
├─archetypes
├─content
├─data
├─layouts
│ ├─_default
│ ├─partials
│ ├─robots.txt
│ └─sitemap.xml   ←ココ!
├─public
│ ├─.htaccess
│ ├─index.html
│ ├─index.xml
│ ├─sitemap.xml
│ ├─categories
│ ├─js
│ ├─page
│ ├─plugins
│ └─tags
├─resources
├─static
└─themes
└─liva-hugo-master

記述内容

以下の内容をファイルに記入して保存してください。

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{{ range .Data.Pages }}{{ if .IsPage }}
<url>
<loc>{{ .Permalink }}</loc>
{{ if not .Lastmod.IsZero }}
<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>
<changefreq>weekly</changefreq>
{{ end }}
</url>
{{ end }}{{ end }}
</urlset>

解説

基本的には参考元の受け売りになりますが、

Hugoが生成するページを全てSitemap.xmlに書き出します。

その過程でtagsなどのリンクがメインになっているページは

書き出さないように判定をしています。

XMLサイトマップを構成するタグは以下のサイトを参考にしています。

sitemaps.org

最低限必要な構成は以下の属性になります。

  • urlset
  • url
  • loc
  • lastmod

今回はこの項目に追加で<changefreq>を追加しています。

クロール頻度をタグとして与えるものですが、

クローラーの特性上、

更新頻度が高いと思ったらこの情報とは関係なくクロールしていきますし、

逆に更新が低い場所は関係なくクロール頻度が下がります。

ですのでおまじない程度の参考情報として提供します。

robots.txtの記入

配置が終わったらrobots.txtに記入して、

クローラーにファイルを読んでもらうように仕向けます。

robots.txtの書き方は別記事に書きます。

robots.txtの末尾に以下を記入します。

Sitemap : {{ $.Site.BaseURL }}sitemap.xml

ルート直下にsitemap.xmlが作成されるのでそれを見に行くように書いてます。

これでsitemap.xmlの作成は終わりです。

参考

GoogleはXMLサイトマップの「URL」と「最終更新日」を気にする