HOME
サイトマップ (sitemap.xml) を作成することで Web サイトにどのようなページが含まれるのかを検索エンジンのクローラに提供できます。サイトマップの作り方、Google Search Console へ送信する方法について解説します。
サイトマップ (sitemap.xml) とは、サイト上のページや動画などのファイルについての情報や関係を、検索エンジンに伝えるためのファイルです。Web サイトの全体像を HTML 形式でまとめたコンテンツもサイトマップと呼びますが、本ページでは扱いません。本ページでは検索エンジン向けに XML 形式でまとめたサイトマップ (sitemap.xml) について解説します。
Google などの検索エンジンは、このファイルを読み込んで、より高度なクロールを行います。サイトマップはサイト内のどのファイルが重要かをクローラに伝えるだけでなく、重要なファイルについての貴重な情報(ページの最終更新日、ページの変更回数、すべての代替言語ページなど)も提供します。
Web サイトが検索エンジンのインデックスに登録されるためには、Google や Yahoo! などの検索エンジンのクローラにクロール (巡回) してもらう必要があります。検索エンジンは、Web ページのリンクをもとにクロールしていますが、サイトマップを登録すればクローラに効率よくクロールしてもらえます。なぜなら、サイトマップは Web ページの階層情報もリスト化しているため、Web サイトの構造をクローラに伝えることができるためです。ただし、Web ページの階層構造は、サイトマップに頼らなくてもユーザやクローラが迷わずにすむようにシンプルで巡回しやすいように設計しましょう。
サイトマップに書かれている情報は、ページのURL、最終更新日、更新頻度、ページの優先度などです。URL 以外の情報は URL のメタデータと呼ばれ、XML 形式で定義されます。この XML ファイルを Google など検索エンジンに登録することで、クローラは XML に定義された各 Web ページをクローリングします。
ただし、サイトマップに記載されている Web ページが必ずインデックスに登録されるわけではありません。逆に、サイトマップに記載されていない Web ページがインデックスに登録される場合もあります。サイトマップは、あくまでクローラに対して Web サイトの情報を伝えるためのファイルであり、インデックスに登録するかの最終的な判断は検索エンジンが行います。
それでは、実際にサイトマップがどのようなものか見てみましょう。
<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>
4 行目にWebページのURLが記載されており、5 ~ 7 行目に付随するメタデータが書かれています。具体的なサイトマップの構造は次章で詳しく説明します。
サイトマップは XML 形式で定義されています。使用できるタグや、タグの親子関係は決められており、非常にシンプルな構造となっています。
タグ | 定義 | 説明 |
---|---|---|
<urlset> | 必須 | サイトマップのプロトコル標準を参照するためのタグです。 |
<url> | 必須 | 各Webページの情報を定義します。 |
<loc> | 必須 | WebページのURLを定義します。 |
<lastmod> | 省略可能 | Web ページの最終更新日を以下のいずれかを W3C Datetime 形式で定義します。
2010-01-10T10:20:30+09:00 |
<changefreq> | 省略可能 | Web ページの目安となる更新頻度を定義します。検索エンジンのクローラはこの値を参考情報としてクロール頻度を調整しますが、指定した値とは異なる頻度でクロールされることがあります。有効な値は以下のとおりです。
|
<priority> | 省略可能 | Web サイト内の他ページと比較した場合の相対的な優先度を 0.0 ~ 1.0 で定義します。高いほど優先度が高くなり、デフォルト値は 0.5 です。この値は、クローラにページの優先度を通知するために使われます。 |
urlset
要素内にはネームスペース (プロトコル標準) を指定します。ネームスペースとは、XML ファイル内で要素や属性として使用できる名前のことです。XML ファイルにネームスペースを指定することで、サイトマップに含まれる情報の種類や、使用する要素をクローラに伝えることができます。
ネームスペースは、定義する URL、画像、動画などによって指定方法が異なります。例えば、動画のサイトマップのネームスペースは、xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"
を指定します。以下のサイトマップのように、ネームスペースに動画情報を定義すると、クローラに動画に関する要素や属性を使用していることを伝えられます。サイトマップの一部の要素が、指定されたネームスペースに属していない場合は、エラーになります。
以下のサイトマップは、ネームスペースに動画を定義した例になります。
<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
要素は、1 つのサイトマップに 50,000 個まで定義する必要があります。それ以上のページを定義する場合は、サイトマップを分割する必要があります。詳細は、後述する「サイトマップの上限と分割」を参照して下さい。
loc
要素は、サイト構成ページの URL を定義します。Web サーバによっては http または https から始まり、末尾にスラッシュを含める必要があります。この値は 2,048 文字以下で指定する必要があります。
lastmod
要素は、ファイルの最終更新日時を W3C DateTime形式 (ISO 8601) で定義します。定義できる形式は、以下のとおりです。
YYYY-MM-DD
YYYY-MM-DDThh:mm:ss+TZD
2010-01-10T10:20:30+09:00
changefreq
要素は、Web ページの目安となる更新頻度を定義します。検索エンジンのクローラはこの値を参考情報としてクロール頻度を調整します。ただし、最終的なクロール頻度は検索エンジンが判断するため、定義した値の頻度とは異なる場合があります。定義できる値は以下のとおりです。
always
hourly
daily
weekly
monthly
yearly
never
priority
要素は、サイト内の他の URL と比較した優先度を 0.0 ~ 1.0 の範囲で定義します。0.0 が重要ではないページ、1.0 が重要なページを意味します。省略した場合は、デフォルト値として 0.5 が設定されます。ページに割り当てた優先度は、検索エンジンの検索結果に表示されるページの掲載順位に影響しません。検索エンジンは、この情報を使用してサイトのどのページを優先的にクロール、およびインデックス登録するかを選択します。また、優先順位は相対的なものであるため、すべてのページを 1.0 と指定するべきではありません。
サイトマップには、URL 情報に加えて、画像、動画、モバイル、ニュースのコンテンツを定義できます。それらの拡張機能を利用する場合は、コンテンツのタイプに合わせたネームスペースを <urlset>
の属性として定義します。
タイプ | ネームスペース |
---|---|
URL | xmlns="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 Search Console のヘルプをご確認下さい。
サイトマップの文字コードは、UTF-8 にする必要があります。また、以下の文字はエスケープ文字に変換して記述します。
文字 | エスケープ文字 |
---|---|
& | & |
' | ' |
" | " |
< | < |
> | > |
サイトマップの <url>
タグの数と、ファイルサイズには上限があり、上限を超える場合はサイトマップを分割する必要があります。<url>
タグの上限数は 50,000 個まで、ファイルサイズは 10 MB 以下となります。検索エンジンのクローラは、サイトマップを gzip 形式で圧縮した形式でも読み取ってくれるため、gzip 形式に圧縮してファイルサイズを抑えることもできます。
サイトマップを分割した場合、サイトマップのインデックスファイルを作成します。サイトマップのインデックスファイルの構造は、各サイトマップの保存先を定義するシンプルな構造になっています。
<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 形式で定義します。
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: *
Sitemap:https://murashun.jp/sitemap.xml.gz
robots.txt には以下ように記述することで、クローラにサイトマップの保存先を伝えています。また、サイトマップを分割している場合は、"Sitemap:" にサイトマップのインデックスファイルを記述するか、複数行記述します。
User-agent: *
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
上記以外にも手動で検索エンジンに伝える方法があります。手動で伝える場合は、検索エンジンの送信インターフェースを利用するか、HTTP リクエストを利用します。
Googleは、Google Search Console サービスを提供しており、その中のサイトマップから送信できます。
HTTP リクエストを利用する方法は、もっとも直接的な方法です。パーセントエンコーディングされたサイトマップの保存先の URL を、各検索エンジンの登録 URL のパラメータとして送信します。下記の例では、サイトマップの保存先 URL をエンコードし、各検索エンジンの登録 URL のパラメータとして設定しています。
Googlehttp://www.google.com/webmasters/tools/ping?sitemap=
http%3A%2F%2Fmurashun.jp%2Fsitemap.xml.gz
Binghttp://www.bing.com/webmaster/ping.aspx?siteMap=
http%3A%2F%2Fmurashun.jp%2Fsitemap.xml.gz
サイトマップは絶対に必要というわけではありませんが、適切にクローリングをされるためには作成した方が良いでしょう。また、サイトマップや robots.txt などにエラーが発生していないかなどは、定期的に Google Search Console を確認して Web サイトの健全な運用を心がけましょう。