XMLサイトマップの作成・検証・送信
最終的な正規URLでサイトマップを作成し、エントリを検証して、内部リンクやrobots.txtと併用する方法を解説します。
XMLサイトマップは、検索エンジンに登録してほしいページを伝える、機械可読のURL一覧です。クロール可能な内部リンクを補うもので、インデックス登録を保証するものではありません。載せるのは、サイトのインデックス方針に合った最終的な正規URLだけです。
sitemaps.orgのプロトコルは2005年に登場しました。最初に採用したのはGoogleで、1年後にYandexが続きました。現在は主要な検索エンジンすべてがこの標準に対応しています。
XMLサイトマップとは何か、なぜ必要か
検索ボットがページを見つける方法は2つあります。内部リンクをたどる方法と、サイトマップを読む方法です。リンクをたどるクロールは、被リンクの多いページには有効です。一方、リンクのないページや公開直後のコンテンツ、内部リンクの少ないセクションは、見落とされたり発見が遅れたりします。サイトマップが役立つのは、まさにこの場面です。
クロールを速める
ボットがURL一覧を直接受け取るため、内部リンクをページ単位でたどる必要がありません。
更新を知らせる
lastmod属性で、ページが変更されて再クロールが必要なことを検索エンジンに伝えます。
ファイルの基本構造
有効な最小のサイトマップは、エンコーディング宣言、ルート要素のurlset、その中のurl要素からなるXMLファイルです。各urlには、必須の属性であるlocが最低1つ必要です。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2026-05-15</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/about</loc>
<lastmod>2026-04-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://example.com/blog/article-slug</loc>
<lastmod>2026-05-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
</urlset>ファイルはUTF-8でエンコードします。URL内の特殊文字はXMLエスケープが必要です。&は&に、<は<にします。1つのサイトマップファイルには、50,000 URL、非圧縮で50MBまでという上限があります。
属性:loc、lastmod、changefreq、priority
| 属性 | 必須 | 形式 | 説明 |
|---|---|---|---|
| loc | はい | 絶対URL | プロトコルとドメインを含む完全なページアドレス。最大2048文字。 |
| lastmod | いいえ | W3C Datetime(YYYY-MM-DD) | 最終更新日。Googleは、値が安定していて正確な場合にだけ信頼します。 |
| changefreq | いいえ | always / hourly / daily / weekly / monthly / yearly / never | 更新頻度のヒント。Googleはシグナルの1つとして使いますが、厳密には従いません。 |
| priority | いいえ | 0.0〜1.0 | サイト内でのURLの相対的な重要度。検索結果の順位には影響しません。 |
loc:唯一の必須属性
URLは絶対URLで、サーバーが実際に返すアドレスと一致させます。ページがHTTPSで配信されているなら、locもHTTPSにします。サイトがwwwを使うなら、locにもwwwを含めます。locと実際のアドレスが食い違うと、Googleはそのエントリを無視します。
lastmod:任意属性で最も価値が高い
日付には、テンプレートの更新やサイトマップの再生成ではなく、コンテンツの実際の変更を反映します。コンテンツを変えないままデプロイのたびにlastmodを更新すると、Googleはこのフィールドを信頼しなくなり、無視します。使える形式は、2026-05-15、2026-05-15T10:30:00+03:00、2026-05-15T07:30:00Zです。
changefreq:指示ではなくヒント
changefreqはクロールの頻度を制御しません。あくまでヒントです。Googleは、多数あるシグナルの1つとして使うと明言しています。Yandexもこのフィールドを参考情報として扱います。実用的な既定値は、ホームページがdaily、ブログ記事がmonthly、法務ページがyearlyです。
priority:サイト内での相対的な重要度
0.0から1.0のpriorityは、どのページをより重要と考えるかを検索エンジンに伝えます。比較対象は他サイトではなく、自サイト内です。全ページに1.0を付けても意味がありません。検索エンジンからは、優先度を付けていないのと同じに見えます。妥当な設定は、ホームページ1.0、セクションのハブ0.85、記事と商品0.7〜0.75、補助ページ0.5です。
サイトマップインデックス:1ファイルで足りないとき
ページ数が50,000を超える場合や、ファイルが50MBを超える場合は、サイトマップインデックスが必要です。これはURLを直接ではなく、子サイトマップを参照するXMLファイルです。子ファイルはそれぞれ通常のurlsetで、上限は50,000エントリです。
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap/blog.xml</loc>
<lastmod>2026-05-15T00:00:00Z</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap/products.xml</loc>
<lastmod>2026-05-14T00:00:00Z</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap/static.xml</loc>
<lastmod>2026-04-01T00:00:00Z</lastmod>
</sitemap>
</sitemapindex>分割の単位は、コンテンツの種類(ブログ、商品、静的ページ)でも、ロケール(ru.xml、en.xml)でも構いません。ロケールで分けると、言語ごとのインデックス登録の状況を個別に確認しやすくなります。
画像サイトマップ
画像はGoogle画像検索に表示され、追加のトラフィックをもたらします。クローラーが画像を見つけて理解しやすいよう、通常のurlsetに画像用の拡張を追加します。1つのurlエントリには、最大1,000枚の画像を含められます。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://example.com/gallery/city</loc>
<image:image>
<image:loc>https://example.com/images/city-skyline.jpg</image:loc>
<image:title>City skyline at sunset</image:title>
<image:caption>Downtown panorama taken from the observation deck, 2025</image:caption>
<image:geo_location>New York, USA</image:geo_location>
<image:license>https://creativecommons.org/licenses/by/4.0/</image:license>
</image:image>
</url>
</urlset><url>タグの属性と使える値は次のとおりです。| タグ | 必須 | 説明 |
|---|---|---|
| image:loc | はい | 画像の絶対URL。別ドメイン(CDNなど)でも構いません。 |
| image:title | いいえ | 画像のタイトル。img要素のtitle属性に相当します。 |
| image:caption | いいえ | 画像のキャプション。img要素のalt属性に相当します。 |
| image:geo_location | いいえ | 画像に写っている被写体の地理的な場所。 |
| image:license | いいえ | 画像のライセンスのURL。 |
サイトマップの画像情報は、HTMLのalt属性の代わりにはなりません。両方を併用します。サイトマップはクローラーが画像を見つける助けになり、altは画像の意味を伝えます。
動画サイトマップ
動画サイトマップを用意すると、Googleの動画検索や、動画プレビュー付きのリッチスニペットにコンテンツが表示される可能性があります。名前空間はvideoです。
<?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>https://example.com/tutorials/getting-started</loc>
<video:video>
<video:thumbnail_loc>https://example.com/thumbnails/tutorial-1.jpg</video:thumbnail_loc>
<video:title>Getting started with the product</video:title>
<video:description>Step-by-step guide for first-time users</video:description>
<video:content_loc>https://example.com/videos/tutorial-1.mp4</video:content_loc>
<video:duration>183</video:duration>
<video:publication_date>2026-03-10T12:00:00+00:00</video:publication_date>
<video:family_friendly>yes</video:family_friendly>
</video:video>
</url>
</urlset>video:durationの単位は秒です。video:content_locには、プレーヤーページではなく、再生可能なファイル(mp4、webm)を指定します。YouTubeやVimeoで配信している動画には、video:content_locではなくvideo:player_locを使います。
ニュースサイトマップ
Googleニュースサイトマップは、Googleニュースに参加するパブリッシャー向けの専用形式です。載せるのは、直近48時間以内に公開した記事だけです。それより古いコンテンツは含めません。ニュースのインデックスから自動的に外れます。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
<url>
<loc>https://example.com/news/tech-breakthrough-2026</loc>
<news:news>
<news:publication>
<news:name>Example Daily</news:name>
<news:language>en</news:language>
</news:publication>
<news:publication_date>2026-05-15T09:00:00+00:00</news:publication_date>
<news:title>Technology breakthrough set to transform the industry</news:title>
</news:news>
</url>
</urlset>多言語対応:サイトマップでのhreflang
サイトが複数の言語や地域向けに存在する場合は、対応するページ同士をhreflangで結びつける必要があります。方法は3つあります。HTMLのlink relタグ、HTTPのLinkヘッダー、そしてサイトマップへの直接記述です。サイトマップ方式は、ページテンプレートを変更しなくて済むので、大規模サイトでは最も実用的です。
サイトマップでは、xhtml名前空間でhreflangを宣言します。各ページをurlエントリとして記載し、各エントリには自分自身を含むすべての言語版を列挙します。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- Russian version -->
<url>
<loc>https://example.com/blog/seo-guide</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
</url>
<!-- English version -->
<url>
<loc>https://example.com/en/blog/seo-guide</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
</url>
</urlset>x-defaultの値は、フォールバック先のページを示します。明示的な言語設定のどれにも一致しないユーザーに表示されるページで、通常はサイトの主言語版を指定します。
| hreflangコード | 用途 |
|---|---|
| ru | ロシア語(地域を問わない) |
| en | 英語(地域を問わない) |
| en-US | 英語(米国) |
| ru-RU | ロシア語(ロシア) |
| x-default | 言語・地域を判別できない場合の既定ページ |
robots.txt:1行で十分
検索エンジンにサイトマップを見つけてもらうには、robots.txtにSitemapディレクティブを1行追加します。サイトマップインデックスを使っている場合は、そのインデックスを指定します。クローラーは、インデックスを通じてすべての子ファイルを自動的に見つけます。
User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /
Sitemap: https://example.com/sitemap.xmlルートのインデックスファイルが複数ある場合(たとえばruとenで別々)は、Sitemapディレクティブを複数書けます。
Sitemap: https://example.com/sitemap/index-ru.xml
Sitemap: https://example.com/sitemap/index-en.xmlGoogleとYandexのドキュメント
Yandex Webmaster公式のSitemapのドキュメント
Yandexはsitemaps.orgの標準に対応しており、ニュース拡張にも対応しています。changefreqとpriorityも読み取りますが、正確なlastmodを重視することを推奨しています。更新したページの再クロールには、lastmodのほうが効くためです。
チェックリスト
- ファイルがUTF-8で、1行目が<?xml version="1.0" encoding="UTF-8"?>になっている
- すべてのURLが絶対URL(プロトコルとドメイン付き)で、実際のcanonicalと一致している
- サイトがHTTPSなら、locもHTTPSにしている
- lastmodがビルド日ではなく、コンテンツの実際の変更日を反映している
- ファイルが50,000 URL、非圧縮50MBを超えていない
- 大規模サイトでは、子ファイルを持つサイトマップインデックスを使っている
- 多言語ページでは、x-defaultを含むhreflang付きのxhtml:linkを記述している
- メディアコンテンツには、対応する拡張(image、video、news)を使っている
- robots.txtに、絶対URLのSitemapディレクティブがある
- サイトマップをGoogle Search ConsoleとYandex Webmasterに送信している
- noindexのページをサイトマップに含めていない
- canonicalが別のURLを指すページを含めていない
FAQ
小規模サイトにもサイトマップは必須ですか?
noindexのページはサイトマップに含めるべきですか?
priorityは検索順位に影響しますか?
サイトマップはどのくらいの頻度で更新すべきですか?
robots.txtには、いくつのサイトマップを記載できますか?
Check it with SpiderHead
Free and local: run the audit on your own machine.



