XMLサイトマップとは?
XMLサイトマップ(sitemap.xml)とは、サイト内のページ一覧をXML形式で記述したファイルです。検索エンジンのクローラーにサイトの構造と各ページの存在を伝え、効率的なクロールとインデックスを支援します。
特にページ数が多いサイトや新しいサイトでは、内部リンクだけではクローラーが全ページを発見できない場合があります。サイトマップはそのギャップを埋める役割を果たします。
/* sitemap.xmlの基本構造 */
<?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-04-25</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/about</loc>
<lastmod>2026-04-20</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://example.com/blog/article-1</loc>
<lastmod>2026-04-18</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
</urlset>なぜサイトマップが重要なのか?
Googleはサイトマップを「ページの存在を知るための重要なシグナル」として利用しています。特に新しいページやリンクが少ないページは、サイトマップ経由で発見されることが多くあります。
50,000
1ファイルあたりの最大URL数
50MB
1ファイルの最大サイズ(非圧縮)
+26%
サイトマップ送信後のインデックス率向上(大規模サイト平均)
サイトマップの書き方(XML構造の解説)
サイトマップは標準のXML形式で記述します。以下の要素(タグ)を組み合わせて構成されます。必須タグは3つだけで、残りはオプションです。
| タグ | 説明 | 必須 |
|---|---|---|
| <urlset> | サイトマップのルート要素。xmlns属性でsitemapプロトコルを宣言します。 | 必須 |
| <url> | 個々のURLエントリを囲む要素。<urlset>の子要素として複数配置します。 | 必須 |
| <loc> | ページの完全なURL。https://を含む絶対URLで記述します。 | 必須 |
| <lastmod> | ページの最終更新日。W3C Datetime形式(YYYY-MM-DD)で記述します。 | 任意 |
| <changefreq> | 更新頻度のヒント。always/hourly/daily/weekly/monthly/yearly/neverから選択。Googleは参考程度に扱います。 | 任意 |
| <priority> | サイト内での相対的な優先度。0.0〜1.0の値。Googleはほぼ無視するため設定しなくても問題ありません。 | 任意 |
50,000URLを超える大規模サイトでは、サイトマップインデックスファイルを使って複数のサイトマップを管理します。
/* サイトマップインデックスの例 */
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-pages.xml</loc>
<lastmod>2026-04-25</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-blog.xml</loc>
<lastmod>2026-04-23</lastmod>
</sitemap>
</sitemapindex>設置のベストプラクティス
ルートディレクトリに配置(/sitemap.xml)
サイトマップはドメインのルート(https://example.com/sitemap.xml)に配置するのが標準です。検索エンジンのクローラーが最初にチェックする場所であり、robots.txtからの参照も簡潔になります。
robots.txtにサイトマップURLを記述
robots.txtの末尾に「Sitemap: https://example.com/sitemap.xml」と記述してください。これによりGooglebot以外のクローラー(Bingbot等)もサイトマップを自動発見できます。
Google Search Consoleで送信
Search Consoleの「サイトマップ」メニューからURLを送信してください。送信状況・エラー・インデックス済みURL数を管理画面で確認できます。
noindex・canonicalで除外したURLは含めない
noindexメタタグやcanonicalタグで別URLを指定しているページはサイトマップから除外してください。矛盾したシグナルはクロール効率を低下させます。
更新日(lastmod)を正確に設定
lastmodにはページの実際の更新日を設定してください。全ページに同じ日付を設定したり、更新していないのに日付を変更するとGoogleがlastmodを信頼しなくなります。
よくある失敗パターン
存在しないURLを含む(404ページ)
サイトマップに404を返すURLが含まれていると、Googleはサイトマップの品質が低いと判断します。定期的にサイトマップ内のURLを検証し、削除済みページを除外してください。
noindexページを含む
「インデックスしてほしい」というサイトマップのシグナルと「インデックスしないで」というnoindexが矛盾します。Search Consoleで「送信されたURLにnoindexタグが追加されています」というエラーが表示されます。
lastmodを全ページ同じ日付にする
すべてのURLに同じlastmodを設定すると、Googleはlastmodの信頼性を疑い、この情報を無視するようになります。更新していないページの日付は変更しないでください。
サイトマップを更新しない
新しいページを追加しても、サイトマップに反映されなければクローラーは発見できません。CMS連携や自動生成の仕組みを導入し、常に最新の状態を保ちましょう。
CMS別の設定方法
WordPress(Yoast SEO / RankMath)
WordPressでは、Yoast SEOやRankMathなどのSEOプラグインがサイトマップを自動生成します。プラグインを有効化するだけで /sitemap_index.xml(Yoast)または /sitemap_index.xml(RankMath)にアクセスできます。投稿・固定ページ・カテゴリなどの種類別に自動でサイトマップが分割され、新しいコンテンツも自動反映されます。
Next.js(app/sitemap.ts)
Next.js(App Router)では、app/sitemap.ts ファイルを作成するだけでビルド時にサイトマップが自動生成されます。MetadataRoute.Sitemap型を使って型安全にURLリストを返します。
// app/sitemap.ts
import type { MetadataRoute } from "next"
export default function sitemap(): MetadataRoute.Sitemap {
return [
{
url: "https://example.com",
lastModified: new Date(),
changeFrequency: "daily",
priority: 1,
},
{
url: "https://example.com/about",
lastModified: new Date(),
changeFrequency: "monthly",
priority: 0.8,
},
]
}手動作成
CMSを使わない静的サイトや小規模サイトでは、テキストエディタで直接XMLファイルを作成し、サーバーのルートディレクトリにアップロードします。URL数が少ない場合はこの方法が最もシンプルです。作成後はW3Cのバリデーターや当サイトのチェックツールで構文エラーがないか確認してください。