サイトマップ (sitemap.xml) の作り方

公開日:
更新日:
0SEO

サイトマップとは

サイトマップ (sitemap.xml) とは、検索エンジンにクロールしてほしい Web ページをリストにしたものです。Web サイトの全体像をまとめたコンテンツもサイトマップと呼びますが、別物であり本ページでは扱いません。


Web サイトが検索エンジンのインデックスに登録されるためには、Google や Yahoo! などの検索エンジンのクローラーにクロールしてもらう必要があります。通常、検索エンジンは、Web ページのリンクをもとにクロールしていますが、サイトマップを登録すればクローラーに効率よく正確にクロールしてもらえます。サイトマップは、Web ページの階層情報もリスト化しているため、Web サイトの構造をクローラーに伝えることができるためです。ただし、大前提として Web ページの階層構造は、サイトマップに頼らなくてもユーザやクローラーが迷わずにすむようにシンプルで巡回しやすいように設計する必要があります。


サイトマップに書かれている情報は、ページのURL、最終更新日、更新頻度、ページの優先度などです。URL 以外の情報は URL の "メタデータ" と呼ばれ、XML 形式で定義されます。この XML ファイルを Google など検索エンジンに登録することで、クローラーは XML に定義された各 Web ページをクローリングします。


ただし、サイトマップに記載されている Web ページが必ずインデックスに登録されるわけではありません。逆に、サイトマップに記載されていない Web ページがインデックスに登録される場合もあります。サイトマップは、あくまでクローラーに対して Web サイトの情報を伝えるためのファイルであり、インデックスに登録するかの最終的な判断は検索エンジンが行います。


しかし、サイトマップはクローラにWebサイトの正確な構造を効率よく伝えることができるため、積極的に作成していきましょう。それでは、実際にサイトマップがどのようなものか見てみましょう。


<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <url>
    <loc>https://murashun.jp/index.html</loc>
    <lastmod>2010-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>

</urlset>
 サイトマップの例

上記が実際のサイトマップの例です。6 行目にWebページのURLが記載されており、7 ~ 9 行目に付随するメタデータが書かれています。具体的なサイトマップの構造は次章で詳しく説明します。


sitemaps.org - ホーム

サイトマップの構造

サイトマップは XML 形式で定義されています。使用できるタグや、タグの親子関係は決められており、非常にシンプルな構造となっています。

サイトマップの構造
タグ定義説明
<urlset>必須サイトマップのプロトコル標準を参照するためのタグです。
<url>必須各Webページの情報を定義します。
<loc>必須WebページのURLを定義します。
<lastmod>省略可能Webページの最終更新日を定義します。この日付は W3C Datetime 形式で記述します。日付のみ "YYYY-MM-DD" 、または日付、時間、分、秒、タイムゾーン "YYYY-MM-DDThh:mm:ss+TZD" の形式で記述します。
例) 2010-01-10T10:20:30+09:00
<changefreq>省略可能Webページの目安となる更新頻度を定義します。検索エンジンのクローラはこの値を参考情報としてクロール頻度を調整しますが、指定した値とは異なる頻度でクロールされることがあります。 有効な値は次のとおりです。
  • always: アクセス毎に内容が更新されるWebページ
  • hourly: 1時間毎に内容が更新されるWebページ
  • daily: 1日毎に内容が更新されるWebページ
  • weekly: 1週間毎に内容が更新されるWebページ
  • monthly: 1ヶ月毎に内容が更新されるWebページ
  • yearly: 1年毎に内容が更新されるWebページ
  • never: アーカイブされたWebページ
<priority>省略可能Webサイト内の他ページと比較した場合の相対的な優先度を 0.0 ~ 1.0 で定義します。デフォルトの優先度は 0.5 です。この値は、検索エンジンのクローラに重要なページを知らせるためのものです。

urlset 要素

サイトマップは、<urlset> で始まり、</urlset> で終わります。urlset 要素内にはネームスペース (プロトコル標準) を指定します。正しいネームスペースを指定されていない場合、クローラーは正しく処理できません。


ネームスペースとは、XMLファイル内で要素や属性として使用できる名前のことです。XML ファイルにネームスペースを指定することで、サイトマップに含まれる情報の種類や、使用する要素をクローラーに伝えることができます。


ネームスペースは、定義する URL、画像、動画などによって指定方法が異なります。例えば、動画のサイトマップのネームスペースは、xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" を指定します。以下のサイトマップのように、ネームスペースに動画情報を定義すると、クローラーに動画に関する要素や属性を使用していることを伝えられます。サイトマップの一部の要素が、指定されたネームスペースに属していない場合は、エラーになります。


<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
        
  <url> 
    <loc>動画を掲載したページの URL</loc>
    <video:video>
      <video:thumbnail_loc>サムネイル画像の URL</video:thumbnail_loc> 
      <video:title>動画のタイトル</video:title>
      <video:description>動画の説明</video:description>
      <video:content_loc>動画ファイルの URL</video:content_loc>
      <video:player_loc>動画プレイヤーの URL</video:player_loc>
      <video:duration>動画の長さ (0~28800 秒)</video:duration>
      <video:rating>動画の評価 (0.0~5.0)</video:rating> 
      <video:view_count>動画が再生された回数</video:view_count>
      <video:publication_date>動画の公開日時</video:publication_date>
      <video:category>動画のカテゴリ</video:category>
      <video:uploader>動画のアップロード者</video:uploader>
      <video:live>動画がライブストリームかを yes / no で指定</video:live>
    </video:video> 
  </url>
  
</urlset>
 動画のサイトマップの例

URL や、画像、動画などで指定する各ネームスペースは後述する "サイトマップの拡張" を参照して下さい。

url 要素

url 要素は、各エントリの親要素として定義します。url 要素は、1 つのサイトマップに 50,000 個まで定義する必要があります。それ以上のページを定義する場合は、サイトマップを分割する必要があります。詳細は、後述する "サイトマップの上限と分割" を参照して下さい。

loc 要素

loc 要素は、サイト構成ページの URL を記述するための必須要素です。Web サーバによっては http や https などのプロトコルから始まり、末尾にスラッシュを含める必要があります。この値は 2,048 文字以下で指定する必要があります。

lastmod 要素

lastmod 要素は、ファイルの最終更新日時を定義する任意要素です。W3C DateTime形式 (ISO 8601) に従う必要があります。日付のみ "YYYY-MM-DD" 、または日付、時間、分、秒、タイムゾーン "YYYY-MM-DDThh:mm:ss+TZD" の形式で記述します。

例) 2010-01-10T10:20:30+09:00


この値は、サーバが返す If-Modified-Since (304) ヘッダーとは別のものです。検索エンジンは、両方のソースからの情報を別々に使用することがあります。

changefreq 要素

changefreq 要素は、Webページの目安となる更新頻度を定義します。検索エンジンのクローラはこの値を参考情報としてクロール頻度を調整しますが、指定した値とは異なる頻度でクロールされることがあります。有効な値は次のとおりです。


  • always: アクセス毎に内容が更新されるWebページ
  • hourly: 1時間毎に内容が更新されるWebページ
  • daily: 1日毎に内容が更新されるWebページ
  • weekly: 1週間毎に内容が更新されるWebページ
  • monthly: 1ヶ月毎に内容が更新されるWebページ
  • yearly: 1年毎に内容が更新されるWebページ
  • never: アーカイブされたWebページ

priority 要素

priority 要素は、サイト内の他の URL と比較した優先度を 0.0 ~ 1.0 の範囲で定義します。0 が重要ではないページで、1 が重要なページを意味します。省略した場合は、デフォルト値として 0.5 が設定されます。ページに割り当てた優先度が、検索エンジンの検索結果に表示されるページの掲載順位に影響することはほぼありません。検索エンジンでは、この情報を使用して、サイトのどのページを優先的にクロール、およびインデックス登録するかを選択します。また、優先順位は相対的なものであるため、すべてのページを 1.0 と指定するべきではありません。

サイトマップの拡張

サイトマップには、基本的なURL情報に加えて、画像、動画、モバイル、ニュースのコンテンツを定義することもできます。それらの拡張機能を利用する場合は、コンテンツのタイプに合わせたネームスペースを <urlset> の属性として定義し、専用のタグを用いる必要があります。

コンテンツタイプ別のネームスペース
タイプネームスペース
URLxmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
画像xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
動画xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"
モバイルxmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0"
ニュースxmlns:news="http://www.google.com/schemas/sitemap-news/0.9"

詳細はGoogleウェブマスターツールのヘルプをご確認下さい。


サイトマップに画像情報を追加する
サイトマップに動画情報を追加する
サイトマップにモバイル情報を追加する
サイトマップにニュース情報を追加する

サイトマップにおける文字コードとエスケープ処理

サイトマップの文字コードは、サイトマップの1行目にエンコードの定義がされているように "UTF-8" にする必要があります。また、URLなどに含まれる以下の文字はエスケープ文字に変換して記述します。

サイトマップにおけるエスケープ文字
文字エスケープ文字
&&amp;
'&apos;
"&quot;
<&lt;
>&gt;

サイトマップの上限と分割

サイトマップの <url> タグの数と、ファイルサイズには上限があり、上限を超える場合はサイトマップを分割する必要があります。<url> タグの上限数は50,000 個まで、ファイルサイズは10 MB (10,485,760 バイト) 以下となります。ただし、サイトマップを gzip 形式で圧縮を行うことにより、ファイルサイズを抑えることができます。検索エンジンのクローラは gzip 形式でも読み取ってくれるため、特に理由がなければgzip形式で圧縮しておきましょう。


サイトマップを分割した場合、サイトマップのインデックスファイルを作成します。サイトマップのインデックスファイルの構造は、各サイトマップの保存先を定義するシンプルな構造になっています。


<?xml version="1.0" encoding="UTF-8"?>

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <sitemap>
    <loc>https://murashun.jp/sitemap1.xml.gz</loc>
    <lastmod>2010-01-01</lastmod>
  </sitemap>

  <sitemap>
    <loc>https://murashun.jp/sitemap2.xml.gz</loc>
    <lastmod>2010-02-01</lastmod>
  </sitemap>

</sitemapindex>
 サイトマップのインデックスファイル例

サイトマップのインデックスファイルの構造
タグ定義説明
<sitemapindex>必須サイトマップに関する情報を定義します。
<sitemap>必須各サイトマップの情報を定義します。
<loc>必須サイトマップの保存先を定義します。
<lastmod>省略可能サイトマップの更新日時を定義します。この日付は W3C Datetime 形式で記述します。日付のみ "YYYY-MM-DD" 、または日付、時間、分、秒、タイムゾーン "YYYY-MM-DDThh:mm:ss+TZD" の形式で記述します。
例) 2010-01-10T10:20:30+09:00

サイトマップの保存先

サイトマップに記述できるURLは、サイトマップが保存されたディレクトリと同一階層、または配下の階層になります。例えば、サイトマップを https://murashun.jp/contents/sitemap.xml に保存した場合、
https://murashun.jp/contents/ から始まるURLは記述できますが、
https://murashun.jp/blog/ から始まるURLは記述することができません。


Webサイトがサイトマップを分割するほど大規模でなければ、最上位の階層にサイトマップを保存します。もしもサイトマップを分割する場合は、サイトマップのインデックスファイルを最上位の階層に保存し、各サイトマップを適切な階層に保存するなど、スケーラビリティを考慮したファイル配置を検討します。

検索エンジンのクローラにサイトマップの保存先を伝える

検索エンジンのクローラにサイトマップの保存先を伝えるには、"robots.txt" に記述します。


User-agent: *
Disallow: /cgi-bin/

Sitemap:https://murashun.jp/sitemap.xml.gz
 robots.txtにサイトマップを記述する

"robots.txt" の詳細な説明は省略しますが、"Sitemap:https://murashun.jp/sitemap.xml.gz" のように記述することで、クローラにサイトマップの保存先を伝えています。また、サイトマップを分割している場合は、"Sitemap:" にサイトマップのインデックスファイルを記述するか、複数行記述します。


User-agent: *
Disallow: /cgi-bin/

Sitemap:https://murashun.jp/blog/sitemap-index.xml.gz
Sitemap:https://murashun.jp/contents1/sitemap.xml.gz
Sitemap:https://murashun.jp/contents2/sitemap.xml.gz
 robots.txtに複数のサイトマップを記述する

また、その他にも手動で検索エンジンに伝える方法があります。手動で伝える場合は、検索エンジンの送信インターフェースを利用するか、HTTPリクエストを利用します。

検索エンジンの送信インターフェースを利用する

ここでは、Googleを例に説明します。Googleは、"Google Search Console" というWebサイトを管理するサービスを提供しており、その中の "サイトマップ" から送信できます。"サイトマップを追加/テスト" をクリックすると、サイトマップの保存先を入力するボックスが表示されます。ボックス内に保存先を入力し、"サイトマップを送信する" をクリックすると送信が完了します。ただし、サイトマップを送信してもインデックスに登録されるまで、多少時間がかかる場合があります。Google Search Console を利用したサイトマップの追加方法は "Google Search Console の使い方 - サイトマップの追加" を参照して下さい。


ウェブマスターツールからsitemapの送信
ウェブマスターツールからsitemapの送信


Google ウェブマスターツールにサイトマップを送信する

HTTPリクエストを利用する

HTTPリクエストを利用する方法は、最も直接的な方法です。パーセントエンコーディングされたサイトマップの保存先のURLを、各検索エンジンの登録URLのパラメータとして送信します。下記の例では、サイトマップの保存先URLの ":" "%3A" "/" "%2F" にエンコーディングし、各検索エンジンの登録URLのパラメータとして設定しています。


Google
http://www.google.com/webmasters/tools/ping?sitemap=
http%3A%2F%2Fmurashun.jp%2Fsitemap.xml.gz


Bing
http://www.bing.com/webmaster/ping.aspx?siteMap=
http%3A%2F%2Fmurashun.jp%2Fsitemap.xml.gz

Google Sitemap Generatorによるサイトマップの自動作成

サイトマップはWebページを追加すると <url> タグの追記が必要になります。もしも <lastmod> タグも設定している場合は、Webページを修正してもサイトマップの修正が必要になり、手動で更新するのは非常に手間になります。そのため、サイトマップを自動で作成するプログラムの "Google Sitemap Generator" を使うと効率的です。


"Google Sitemap Generator"はPythonという言語で書かれているため、Pythonが動く環境を用意する必要があります。もしも、レンタルサーバーを利用している場合は、事前にPythonが利用できるかを確認しておきましょう。また、プログラム自体には変更を加えないため、Pythonの言語を理解していなくても大丈夫です。以降は、さくらインターネットのレンタルサーバーを例に説明しています。

Google Sitemap Generatorを入手する

Google Sitemap Generatorは、sourceforge.net で公開されています。下記のリンクから Google Sitemap Generator をダウンロードして下さい。


google-sitemap_gen - sourceforge.net

2005/06/16    AUTHORS                    23 byte
2005/06/16    COPYING                 1,791 byte
2005/12/05    ChangeLog               2,267 byte
2005/12/05    README                  1,111 byte
2005/09/07    example_config.xml      5,662 byte
2005/06/16    example_urllist.txt       996 byte
2005/12/05    sitemap_gen.py         73,063 byte
2005/09/07    test_sitemap_gen.py    28,551 byte
2005/12/05    setup.py                  317 byte
2005/12/05    PKG-INFO                  258 byte

"sitemap_gen-1.4.zip" を解凍すると上記のファイルが展開されますが、必要なファイルは "example_config.xml" と "sitemap_gen.py" の2ファイルだけで問題ありません。プログラムを実行する前に、動作環境に合わせて設定値を変更する必要があります。

sitemap_gen.pyを変更する

1行目に定義されているプログラムのコマンドパスを、利用しているサーバ環境に合わせて修正します。プログラムのコマンドパスは環境によって異なるため、公式のヘルプページなどを参考に修正します。


修正前

#!/usr/bin/env python

修正後

#!/usr/local/bin/python
 "sitemap_gen.py" の 1行目

2.2. プログラムのコマンドパス - さくらインターネット公式サポートサイ

example_config.xmlを変更する

"example_config.xml" は "sitemap_gen.py" の設定ファイルで、内容を変更することでプログラムの動き方を変えることができます。利用しているサーバ環境に合わせて修正していきます。


Webサイトの基本情報定義部(必須定義)

サイトマップの適用範囲、サイトマップの保存先、プログラムの動作について定義できます。


修正前

<site
  base_url="http://www.example.com/"
  store_into="/var/www/docroot/sitemap.xml.gz"
  verbose="1"
  >

修正後

<site
  base_url="https://murashun.jp/"
  store_into="/home/murashun/www/sitemap.xml.gz"
  verbose="1"
  >
 "example_config.xml" の 34行目~38行目
siteタグの属性
属性定義説明
base_url必須サイトマップの適用範囲である最上位の階層を設定します。特に理由がなければ、Webサイトのトップページを指定します。
store_into必須サイトマップの保存先を設定します。設定する値はURLではなくWebサーバ上のパスであることに注意して下さい。
verbose省略可能"0"から"3"までの値を設定します。デバッグログの設定値で、大きい数字ほど詳細なログを出力します。プログラムが動かない場合は、詳細なログを出力することで解決するヒントが見つかります。
suppress_search_engine_notify省略可能"1"を設定します。プログラムを試験的に動かす場合の誤送信防止を行う設定で、"1"を設定すると実行時にGoogleへの通知を行いません。


Webページ取得定義部(必須定義)

Webページの取得に関する定義は、 <url> , <urllist> , <directory> , <accesslog> の4種類用意されています。いずれかのタグを定義する必要がありますが、同一タグを複数、または異なるタグを組み合わせて定義することもできます。


 <url>

修正前

<url  href="http://www.example.com/stats?q=name"  />
<url
   href="http://www.example.com/stats?q=age"
   lastmod="2004-11-14T01:00:00-07:00"
   changefreq="yearly"
   priority="0.3"
/>

修正後

<url
   href="https://murashun.jp/index.html"
   priority="1.0"
/>
 "example_config.xml" の 60行目~66行目
urlタグの属性
属性定義説明
herf必須URLを指定します。
lastmod省略可能Webページの最終更新日を定義します。この日付は ISO 8601 形式で記述します。日付のみ "YYYY-MM-DD" 、または日付、時間、分、秒、タイムゾーン "YYYY-MM-DDThh:mm:ss+TZD" の形式で記述します。
例) 2010-01-10T10:20:30+09:00
changefreq省略可能Webページの目安となる更新頻度を定義します。検索エンジンのクローラはこの値を参考情報としてクロール頻度を調整しますが、指定した値とは異なる頻度でクロールされることがあります。 有効な値は次のとおりです。
  • always: アクセス毎に内容が更新されるWebページ
  • hourly: 1時間毎に内容が更新されるWebページ
  • daily: 1日毎に内容が更新されるWebページ
  • weekly: 1週間毎に内容が更新されるWebページ
  • monthly: 1ヶ月毎に内容が更新されるWebページ
  • yearly: 1年毎に内容が更新されるWebページ
  • never: アーカイブされたWebページ
priority省略可能Webサイト内の他ページと比較した場合の相対的な優先度を 0.0 ~ 1.0 で定義します。デフォルトの優先度は 0.5 です。この値は、検索エンジンのクローラに重要なページを知らせるためのものです。


 <urllist>

修正前

<urllist  path="example_urllist.txt"  encoding="UTF-8"  />

修正後

<urllist  path="*_urllist.txt"  encoding="UTF-8"  />
 "example_config.xml" の 79行目
urllistタグの属性
属性定義説明
path必須URLリストを記述したファイルの保存先を指定します。ワイルドカード "*" を用いた指定もできます。
encoding省略可能文字コードを指定します。特に理由がなければ "UTF-8" を指定します。


 <directory>

修正前

<directory  path="/var/www/icons"    url="http://www.example.com/images/" />
<directory
   path="/var/www/docroot"
   url="http://www.example.com/"
   default_file="index.html"
/>

修正後

<directory
   path="/home/murashun/www/"
   url="https://murashun.jp/"
/>
 "example_config.xml" の 93~98行目
directoryタグの属性
属性定義説明
path必須ディレクトリのパスを設定します。設定する値はURLではなくWebサーバ上のパスであることに注意して下さい。
url必須pathタグに設定したパスに対応するURLを設定します。
default_file省略可能HTMLファイル省略時のデフォルトドキュメントを設定します。


 <accesslog>

修正前

<accesslog  path="/etc/httpd/logs/access.log"       encoding="UTF-8"  />
<accesslog  path="/etc/httpd/logs/access.log.0"     encoding="UTF-8"  />
<accesslog  path="/etc/httpd/logs/access.log.1.gz"  encoding="UTF-8"  />

修正後

<accesslog  path="/home/murashun/log/access_log.gz" encoding="UTF-8"  />
 "example_config.xml" の 112~114行目
accesslogタグの属性
属性定義説明
path必須URLリストを記述したファイルの保存先を指定します。
encoding省略可能文字コードを指定します。特に理由がなければ "UTF-8" を指定します。


サイトマップ定義部(省略可能定義)

別のプロセスで作成したサイトマップを定義できます。サイトマップが複数ある場合は、同一タグを複数定義することもできます。ただし、この定義はWebページを収集しない点に注意して下さい。


修正前

<sitemap    path="/var/www/docroot/subpath/sitemap.xml" />

修正後

<!-- 省略可能  -->
<sitemap    path="/home/murashun/www/sitemap.xml.gz" />
 "example_config.xml" の 125行目
sitemapタグの属性
属性定義説明
path必須サイトマップのパスを設定します。設定する値はURLではなくWebサーバ上のパスであることに注意して下さい。

応用的な使い方としては、"config.xml" を分割して個別にサイトマップを作成し、最後にまとめてからGoogleに通知します。また、個別のサイトマップ作成時は、Googleに通知しないように <site suppress_search_engine_notify="1"> を指定するか、実行時に --testing パラメータを付与します。以下は、コマンドラインの実行例です。


# sitemap1.xmlを作成
$ python sitemap_gen.py --config=config1.xml --testing
# sitemap2.xmlを作成
$ python sitemap_gen.py --config=config2.xml --testing

# sitemap1.xml と sitemap2.xml を含む sitemap.xml を作成してGoogleに通知する
$ python sitemap_gen.py --config=config.xml
 別プロセスでsitemapを作成する

フィルター定義部(省略可能定義)

サイトマップに含めたいURL、含めたくないURLのフィルタリングを定義できます。また、フィルタリング指定にはワイルドカードや正規表現も使用できます。


修正前

  <!-- Exclude URLs that end with a '~'   (IE: emacs backup files)      -->
  <filter  action="drop"  type="wildcard"  pattern="*~"           />

  <!-- Exclude URLs within UNIX-style hidden files or directories       -->
  <filter  action="drop"  type="regexp"    pattern="/\.[^/]*"     />

修正後

  <filter action="pass" type="wildcard" pattern="*/index.html" />
  <filter action="pass" type="wildcard" pattern="*/contents/*.html" />
  <filter action="pass" type="wildcard" pattern="*/blog/*.html" />
  <filter action="drop" type="wildcard" pattern="*"/>
 "example_config.xml" の 158~162行目
filterタグの属性
属性定義説明
action省略可能"pass" または "drop" を指定します。省略時は "drop" になります。
"pass" は "pattern" に一致するURLをサイトマップに含めます。
"drop" は "pattern" に一致するURLをサイトマップから除外します。
type省略可能"wildcard" または "regexp" を指定します。省略時は "wildcard" になります。
"wildcard" は "pattern" に "*" および "?" が使用できます。
"regexp" は "pattern" に正規表現が使用できます。
pattern必須フィルタリングを行うURLを指定します。

sitemap_gen.pyを実行する

sitemap_gen.pyはコマンドラインから実行します。"sitemap_gen.py" と "config.xml" をFTPサーバーにアップロードし、SSHで接続して実行します。


# sitemap_gen.pyを実行
$ python sitemap_gen.py --config=config.xml
Reading configuration file: /home/murashun/www/config.xml
Walking DIRECTORY "/home/murashun/www/"
Sorting and normalizing collected URLs.
Writing Sitemap file "/home/murashun/www/sitemap.xml.gz" with 15 URLs
Notifying search engines.
Notifying: www.google.com
Count of file extensions on URLs:
      15  .html
Number of errors: 0
Number of warnings: 0
$
 "sitemap_gen.py" の実行例

11行目の "errors" と12行目の "warnings" が0であれば正常に終了しています。実行後は、保存先に "sitemap.xml.gz" が作成されるため、アーカイブをダウンロードするか、以下のコマンドで確認します。


# gunzipでgzを解凍
$ gunzip sitemap.xml.gz

# catでsitemap.xmlの中身を表示
$ cat sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
  ・・・ 中略 ・・・
</urlset>
$ 
 "sitemap.xml" の確認

CRONによるGoogle Sitemap Generatorの自動実行

ここからは更に発展的なプロセスですが、CRONを使うことによりサイトマップのメンテナンスフリーが実現できます。CRONとは、特定のコマンドを定期的に実行する機能で、さくらインターネットのレンタルサーバーでは "スタンダード" 以上のプランから利用できます。 ただし、CRONの設定や実行するプログラムによってはサーバーに負荷がかかり、サーバーを共有している他のユーザに影響を与える場合がありますので、利用には注意が必要です。


CRONで sitemap_gen.py を実行するには、パーミッションを "700(rwx------)" に設定します。そして、一般的にはcrontabコマンドでCRONの設定をしますが、さくらインターネットではサーバコントロールパネルでCRONを設定できますので、そちらで設定していきます。


左のメニューから "アプリケーションの設定" の中にある "CRONの設定" をクリックし、">> 新規項目の追加" を選択します。


sitemapのCRON設定
sitemapのCRON設定


"実行コマンド" に以下を設定します。コマンドパスや、ディレクトリパスなどは実行環境によって変更して下さい。


/usr/local/bin/python /home/murashun/www/sitemap_gen.py --config=/home/murashun/www/config.xml
 CRONの設定

sitemapのCRON設定
sitemapのCRON設定


"実行日時" には毎月、毎日、0時、0分に起動するように設定しています。上記の例では1日に1回の実行としていますが、サイトマップ作成時にはGoogleへの通知(HTTPリクエスト)が発生するため、頻繁な実行は避けた方が無難です。また、CRONをテストする場合は、必要に応じて --testing パラメータを付与するなどして、余計なHTTPリクエストを発生させないようにしましょう。

まとめ

サイトマップの構造、作成、自動実行までを一通りまとめました。サイトマップは絶対に必要というものではありませんが、クローリングを適切に行ってもらうためには作成した方が良いかと思います。また、サイトマップやrobots.txtなどにエラーが発生していないかなどは、定期的にGoogle ウェブマスターツールを確認してWebサイトの健全な運用を心がけましょう。