サイトマップの作り方|XMLサイトマップの3つの作り方と分け方・送信の手順
公開

サイトマップの作り方を調べると、制作の前にページの構成を描く図の作り方と、検索エンジンに送るファイルの作り方が混ざって出てきます。企業の Web 担当が作り、見直すのは、検索エンジン向けの XML サイトマップです。自動で作られることの多い XML サイトマップは、ファイルを開かないと、どの URL がいくつのファイルに分かれているかがわかりません。
株式会社メリルが自社の8つのサイトのサイトマップを取得して比べると、6サイトが索引ファイル(サイトマップ インデックス)を使い、4サイトはサイトマップを複数のファイルに分けていました。ただし、URL の数はどのサイトも1ファイルの上限の5万件に遠く届かず、分け方を決めていたのは作るソフトの決まりでした。この記事では、XML サイトマップの3つの作り方と載せる URL の決め方・分け方・lastmod の入れ方・送信と確かめ方を解説します。
記事を読めば、自社サイトに合うサイトマップの作り方を選び、公開した後に中身を確かめられます。XML サイトマップは手で書くより CMS やサイトのソフトに作らせ、載せる URL と lastmod の決まりを人が決めるのが基本です。
サイトマップの作り方はCMS・静的サイトの生成・手書きの3通り

この記事で作り方を解説するのは、サイトのページの URL を検索エンジンに伝える XML サイトマップです。「サイトマップ」の語は、ほかに2つの意味でも使われます。3つのサイトマップの違いは、以下の表のとおりです。
| 呼び方 | 中身 | 見る人 |
|---|---|---|
| サイトの設計図(構成図) | 制作の前にページの階層を描いた図 | 制作に関わる人 |
| HTML のサイトマップ | サイトのページへのリンクを一覧にしたページ | サイトの訪問者 |
| XML サイトマップ | ページの URL と更新日などを書いたファイル | 検索エンジン |
XML サイトマップの作り方は、サイトを動かす仕組みと URL の数で、以下の3通りから選びます。
- CMSやプラグインに作らせる
- 静的サイトはビルドの時に生成する
- URLが数十までなら手で書く
CMSやプラグインに作らせる
WordPress や Wix などの CMS を使うサイトでは、CMS がすでにサイトマップを用意している場合があります。WordPress は5.5から、/wp-sitemap.xml に索引ファイルを出す機能を標準で備えています。WordPress 標準のサイトマップに入るのは、公開している投稿・固定ページ・カテゴリ・投稿者の一覧などの URL です。1つのファイルに入る URL は、既定で2,000件までです。
SEO のプラグインやサイトマップのプラグインを入れると、WordPress 標準のサイトマップの代わりに、プラグインのサイトマップが使われることがあります。メリルが運営する WordPress の4サイトも、すべてプラグインがサイトマップを作っていました。3サイトは XML Sitemap Generator for Google、1サイトは Yoast SEO です。/wp-sitemap.xml を開いて、WordPress 標準の索引ファイルが返ったサイトはありません。
CMS を使うサイトでは、プラグインの設定画面でサイトマップの URL を確かめてから送信しましょう。サイトマップの URL は、使うプラグインによって変わるためです。
静的サイトはビルドの時に生成する
Astro などで作る静的サイトでは、ページの HTML を書き出すビルドの時に、サイトマップも一緒に書き出します。Astro の公式のサイトマップの機能(@astrojs/sitemap)は、astro.config.mjs に公開する URL(site)と sitemap() を書くと、ビルドのたびに sitemap-index.xml と sitemap-0.xml を作ります。載せないページを filter で外す書き方は、次のとおりです。
import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';
export default defineConfig({
site: 'https://example.com',
integrations: [
sitemap({
filter: (page) => !page.includes('/search/'),
}),
],
});
オウンドメディア相談室も、この機能でサイトマップを作っています。設定で決めているのは、以下の2つです。
- 404のページとサイト内の検索のページを載せない
- 記事のURLに、更新日か公開日をlastmodとして入れる
同じ Astro のサイトでも、メリルが運営する WWS メディア(wwstd.jp/media/)は公式の機能を使わず、サイトマップを出すページを自分のコードで書いています。
URLが数十までなら手で書く
URL が数十程度の小さなサイトは、テキスト エディタでサイトマップを手で書けます。2つのページを載せた XML サイトマップの書き方は、次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.example.com/</loc>
<lastmod>2026-10-30</lastmod>
</url>
<url>
<loc>https://www.example.com/service/</loc>
<lastmod>2026-10-01</lastmod>
</url>
</urlset>
手で書くときに守る決まりは、以下のとおりです。
- ファイルは UTF-8 で保存する
<urlset>で全体を囲み、1つの URL ごとに<url>と<loc>を書く- URL の中の & は
&と書く - ファイル名は URL に使える文字で自由に付ける
手で書いたサイトマップは、ページを足したり消したりするたびに書き直す必要があります。ページが増える見込みのあるサイトは、最初から CMS かビルドの仕組みで作りましょう。
XMLサイトマップに載せるURLとタグの決め方

サイトマップに載せた URL は、検索結果に出したいページとして検索エンジンに伝わります。載せる URL とタグを決めるときの基本は、以下の3つです。
- 検索結果に出したい正規のURLだけを載せる
- URLごとに必須なのはlocだけで、changefreqとpriorityは読まれない
- URLはhttps://から始まる完全な形で書く
検索結果に出したい正規のURLだけを載せる
サイトマップには、検索結果に表示させたい URL だけを載せます。同じ内容のページに複数の URL があるときは、1つを正規の URL に選んでサイトマップに載せ、残りの URL は載せません。
サイトマップに載せない URL は、以下のとおりです。
- noindex を付けたページの URL
- 別の URL へ転送している URL
- 末尾の / の有無など、正規の URL と同じ内容の別の URL
- サイト内の検索結果や404のページ
転送している URL は、転送先の URL に置き換えて載せます。サイトマップの URL がリダイレクトを何度も重ねていると、Google がクロールを最後まで終えられないことがあるためです。
ページに noindex を付けたときは、サイトマップを開いて、そのページの URL が外れているかを確かめます。
» 重複コンテンツの対策は本文で見つける|canonical・統合・書き分けの選び方
URLごとに必須なのはlocだけで、changefreqとpriorityは読まれない
URL ごとに書く必要があるのは loc だけです。主なタグの書き方と Google の扱いは、以下の表のとおりです。
| タグ | 必須か | 書く内容 | Google の扱い |
|---|---|---|---|
| urlset | 必須 | ファイル全体を囲む | - |
| url | 必須 | 1つの URL ごとに囲む | - |
| loc | 必須 | ページの URL(2,048文字以下) | 読む |
| lastmod | 任意 | ページを最後に更新した日時 | 正確だと確かめられれば使う |
| changefreq | 任意 | 更新の頻度 | 使わない |
| priority | 任意 | サイトの中での優先度(0.0〜1.0) | 使わない |
Google は changefreq と priority の値を無視するため、Google 向けに値を決める必要はありません。サイトマップで正確に書く必要があるのは、loc の URL と lastmod の日付です。
URLはhttps://から始まる完全な形で書く
loc には、https:// から始まる完全な URL を書き、/service/ のような相対の書き方は使いません。サイトマップに載せる URL は、サイトマップのファイルと同じプロトコル・同じホストにそろえます。https://www.example.com/sitemap.xml に置いたサイトマップでは、以下の URL がサーチコンソールで「許可されていない URL」のエラーになります。
- www の無い https://example.com/ の URL
- http から始まる http://www.example.com/ の URL
- 別のサブドメインや別のドメインの URL
URL に & や引用符などの記号が入るときは、XML の決まりでエスケープが必要です。たとえば、& は &、< は < と書きます。CMS やビルドの仕組みで作るサイトマップでは、エスケープは通常ソフトが行います。
サイトマップの分け方と索引ファイルの使い方

URL の多いサイトは、サイトマップを複数のファイルに分け、索引ファイル(サイトマップ インデックス)でまとめて検索エンジンに伝えます。サイトマップの分け方と索引ファイルの使い方は、以下の4つです。
- 1ファイル5万URL・50MBを超える前に分ける
- 索引ファイルに子のサイトマップを並べる
- サブディレクトリのサイトはその下にサイトマップを置く
- メリルの8サイトのサイトマップの分け方を比べた
1ファイル5万URL・50MBを超える前に分ける
1つのサイトマップに書ける URL は5万件までで、ファイルの大きさは圧縮していない状態で50MBまでです。上限はサイトマップの形式を問わず同じで、どちらかを超えるサイトは、超える前にファイルを分けます。
WordPress 標準のサイトマップや Astro の @astrojs/sitemap は、決まった件数でサイトマップを自動で分けます。1ファイルに入れる件数の既定は、WordPress 標準が2,000件、@astrojs/sitemap が4万5,000件です。
上限に届かないサイトでも、サイトマップを分けておく利点があります。サーチコンソールでは送信したサイトマップごとに検索パフォーマンスを追えるため、記事と固定ページを別のファイルにしておくと、種類ごとに確かめられます。
索引ファイルに子のサイトマップを並べる
索引ファイルは、分けたサイトマップの URL を並べたファイルです。サーチコンソールには索引ファイルだけを送れば、並べたサイトマップがまとめて伝わります。2つのサイトマップを並べた索引ファイルの書き方は、次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://www.example.com/sitemap-posts.xml</loc>
<lastmod>2026-10-30</lastmod>
</sitemap>
<sitemap>
<loc>https://www.example.com/sitemap-pages.xml</loc>
<lastmod>2026-10-01</lastmod>
</sitemap>
</sitemapindex>
索引ファイルには5万個までのサイトマップを並べられます。並べるサイトマップは、索引ファイルと同じサイトの、同じディレクトリかその下の階層に置きます。
索引ファイルの lastmod に書くのは、ページの更新日ではなく、並べたサイトマップのファイルを更新した日時です。
索引ファイルを送っておけば、ページが増えて子のサイトマップが増えても、送信する URL は変わりません。
サブディレクトリのサイトはその下にサイトマップを置く
サイトマップに載せられる URL は、サイトマップを置いた場所で決まります。https://example.com/media/sitemap.xml に置いたサイトマップに載せられるのは、/media/ から始まる URL です。
サイトマップはドメインのルートに置くのが基本です。ただし、メディアだけを /media/ などのサブディレクトリに置くサイトでは、そのディレクトリの下にサイトマップを置いてメディアの URL だけを載せます。
オウンドメディア相談室は blog-soudan.com の /owned-media/ に置く静的サイトで、サイトマップも /owned-media/ の下に書き出す設定です。同じドメインのルートでは掲示板の WordPress が動いており、ルートのサイトマップはプラグインが作っています。メリルが運営する WWS メディアと Web集客ブックも、ドメインの /media/ の下にサイトマップを置く同じ形です。
サブディレクトリに置いたサイトマップは、サーチコンソールのサイトマップ レポートで送信します。ルートの robots.txt を別の仕組みが出していても、サイトマップ レポートからなら送信できるためです。
メリルの8サイトのサイトマップの分け方を比べた
メリルは2026年10月30日に、自社の8つのサイトのサイトマップを取得し、索引ファイルの有無とファイルごとの URL の数を数えました。8サイトのサイトマップの作りは、以下の表のとおりです。
| サイト | 作っているソフト | 索引ファイル | サイトマップの数 | URL の数 | 1ファイルの最大 |
|---|---|---|---|---|---|
| blog-soudan.com | XML Sitemap Generator for Google | あり | 16 | 1,417 | 100 |
| meril-theme.com | XML Sitemap Generator for Google | あり | 3 | 44 | 32 |
| blogrank.jp | XML Sitemap Generator for Google | あり | 8 | 27 | 10 |
| bfb-plugin.com | Yoast SEO | あり | 4 | 24 | 12 |
| meril.co.jp | @astrojs/sitemap | あり | 1 | 279 | 279 |
| hands-plus.com/media/ | @astrojs/sitemap | あり | 1 | 17 | 17 |
| wwstd.jp/media/ | Astro の自作のページ | なし | 1 | 312 | 312 |
| touchai.jp | (印なし) | なし | 1 | 308 | 308 |
8サイトのうち6サイトが、索引ファイルの下にサイトマップを並べていました。URL が最も多い blog-soudan.com でも1,417件で、1ファイルの上限の5万件の3%に届きません。
分け方は、作っているソフトによって以下の3通りに分かれました。
- 件数で分ける: blog-soudan.com は投稿を100件ずつ14ファイルに分けている
- 月で分ける: blogrank.jp は投稿の種類と年月ごとにファイルを作り、10件を超える月は2つ目以降のファイルに分けている
- 種類で分ける: Yoast SEO の bfb-plugin.com は投稿・固定ページ・カテゴリ・投稿者の4ファイルに分けている
blog-soudan.com と blogrank.jp は同じプラグインでも、分け方が件数と月で違っていました。Astro の2サイトは索引ファイルの下に sitemap-0.xml が1つだけで、4万5,000件を超えると2つ目のファイルが増える作りです。touchai.jp のサイトマップには作ったソフトの印が無く、この集計ではソフトを確かめていません。
自社のサイトマップがどの決まりで分かれているかは、索引ファイルに並ぶサイトマップのファイル名を見るとわかります。
サイトマップのlastmodの入れ方

lastmod は、ページを最後に大きく更新した日時を検索エンジンに伝えるタグです。Google は lastmod の値が一貫して正確だと確かめられる場合に使うため、ページの実際の更新と合う日付を入れる必要があります。lastmod の入れ方の決まりは、以下の3つです。
- lastmodにはページを大きく更新した日時を入れる
- 記事の公開日と更新日のデータからlastmodを作る
- 日付はW3C Datetimeの形式で書く
lastmodにはページを大きく更新した日時を入れる
lastmod に入れるのは、ページの本文などを大きく変えた日時です。大きな更新に当たるのは本文・構造化データ・リンクの変更で、著作権の表記の年を変えただけでは当たりません。
lastmod の日付は、サイトマップを作った日時ではなく、ページを更新した日時にします。ビルドのたびに全ページの lastmod をその日の日付にすると、ページの実際の更新と合わない日付が並びます。
記事の公開日と更新日のデータからlastmodを作る
正確な lastmod を出すには、ページごとの公開日と更新日を、サイトマップを作る仕組みが読める形で持っておきます。CMS は投稿ごとに更新日時を記録しており、メリルの WordPress の4サイトでも、プラグインがすべての URL に日時入りの lastmod を入れていました。
静的サイトでは、記事のファイルに公開日と更新日を書き、ビルドの時に読み出して lastmod にします。オウンドメディア相談室と Web集客ブックは、記事の更新日(無ければ公開日)を記事の URL の lastmod に入れる作りです。
日付はW3C Datetimeの形式で書く
lastmod の日付は、W3C Datetime の形式で書きます。日付だけの 2026-10-30 の形でも、時刻まで入れた 2026-10-30T18:00:15+09:00 の形でも構いません。時刻を書くときは、+09:00 などの時差も書く必要があります。
メリルのサイトの lastmod の書き方は、作っているソフトによって以下の3通りに分かれていました。
| 書き方 | 例 | 使っていたサイト |
|---|---|---|
| 日付だけ | 2026-10-30 | WWS メディア・touchai.jp |
| 日時と時差 | 2021-08-29T04:13:56+00:00 | WordPress の4サイト |
| 日時(ミリ秒まで)と協定世界時の Z | 2026-10-29T00:00:00.000Z | Web集客ブック |
3通りとも W3C Datetime の形式に合っており、どれを使っても構いません。日付の形式が崩れていると、サーチコンソールのサイトマップ レポートに「無効な日付」のエラーが出ます。
サイトマップの送信と確かめ方

サイトマップは置くだけでなく、検索エンジンに場所を知らせ、読み込まれたかを確かめます。送信してもサイトマップの URL がすべてクロールされる保証はありませんが、送信すると読み込みの状態とエラーを確かめられます。サイトマップの送信と確かめ方は、以下の4つです。
- ブラウザでサイトマップを開いて中身を確かめる
- サーチコンソールのサイトマップ レポートで送信する
- robots.txtのSitemapの行にも書く
- 送信した後はステータスと検出されたページ数を見る
ブラウザでサイトマップを開いて中身を確かめる
送信する前に、サイトマップをブラウザで開き、載っている URL を自分の目で確かめます。見た目を整える指定(XSL)が付いたサイトマップでも、ページのソースを表示すれば XML のままの中身を見られます。
公開したサイトマップを確かめる手順は、以下のとおりです。
- ブラウザで索引ファイルかサイトマップの URL を開く
- 索引ファイルに並ぶサイトマップを1つずつ開き、URL の数を数える
- noindex のページや転送している URL、404のページが入っていないかを見る
- URL 検査ツールでサイトマップの URL の「公開 URL をテスト」を行い、「ページの取得」が「成功」かを見る

オウンドメディア相談室の索引ファイル(https://blog-soudan.com/owned-media/sitemap-index.xml)をブラウザで開いた画面(2026年10月31日)。

オウンドメディア相談室の子のサイトマップ(https://blog-soudan.com/owned-media/sitemap-0.xml)をブラウザで開いた画面(2026年10月31日)。
サイトマップは、ログインや Basic 認証を求められずに開ける状態にしておく必要があります。ログインを求めると、Google がサイトマップを取得できないためです。
サーチコンソールのサイトマップ レポートで送信する
サイトマップの送信は、サイトマップがサイトのどこにあるかを Google に知らせる操作で、ファイルを Google にアップロードするわけではありません。サイトマップ レポートで送信するには、プロパティのオーナー権限が必要です。サーチコンソールでサイトマップを送信する手順は、以下のとおりです。
- サーチコンソールで、サイトマップを置いたサイトのプロパティを開く
- サイトマップ レポートを開く
- 「新しいサイトマップの追加」に、索引ファイルかサイトマップの URL を貼り付ける
- 「送信」をクリックする

出典:Google Search Console のサイトマップ レポート(オウンドメディア相談室が使っている blog-soudan.com のプロパティ。2026年10月31日の画面)。Google Search Console は Google LLC の商標です。オウンドメディア相談室は、Google が推奨・提携しているものではありません。
索引ファイルを使うサイトでは、索引ファイルの URL だけを送信します。一度読み込まれたサイトマップは Google が定期的に読み込み直すため、サイトマップを大きく変えたとき以外は送り直す必要はありません。
サイトマップ レポートに表示されるのは、レポートか API で送信したサイトマップだけです。robots.txt に書いただけのサイトマップは、Google が見つけて使っていても、レポートの一覧には出ません。
» サーチコンソールのインデックス登録リクエスト手順|読み込まれたかの確かめ方
robots.txtのSitemapの行にも書く
サイトのルートの robots.txt に Sitemap の行を書くと、Google 以外の検索エンジンにもサイトマップの場所を伝えられます。Sitemap の行は robots.txt のどこに書いてもよく、行の数にも制限はありません。
Sitemap: https://www.example.com/sitemap-index.xml
robots.txt に書いた Sitemap の行は、Google が次に robots.txt をクロールしたときに読まれます。サーチコンソールのオーナー権限が無い場合も、robots.txt に書けばサイトマップの場所を伝えられます。meril.co.jp は robots.txt も Astro のサイトの仕組みで出力しており、Sitemap の行は sitemap-index.xml の URL です。
» robots.txtの書き方|記述例と置く場所・確かめ方、noindexとの違い
送信した後はステータスと検出されたページ数を見る
サイトマップを送信したら、サイトマップ レポートの表のステータスを見ます。ステータスの見方は、以下のとおりです。
- 成功しました: サイトマップを読み込み、エラーなく処理できた
- エラーがあります: 読み込めたが、一部にエラーがある
- 取得できませんでした: サイトマップのファイルを取得できなかった
「検出されたページ数」には、サイトマップから読み取った URL の数が出ます。索引ファイルを送った場合は、並べたサイトマップの URL の合計で、重複した URL は1回だけ数えられます。自分で数えた URL の数と比べ、大きく違うときはサイトマップの中身を見直しましょう。

出典:Google Search Console のサイトマップ レポート(オウンドメディア相談室が使っている blog-soudan.com のプロパティ。2026年10月31日の画面)。Google Search Console は Google LLC の商標です。オウンドメディア相談室は、Google が推奨・提携しているものではありません。
オウンドメディア相談室は、2026年10月31日に索引ファイル(/owned-media/sitemap-index.xml)を送信しました。同じ日に読み込まれ、検出されたページ数は42で、サイトマップに載せた URL の数(42件)と同じでした。
「取得できませんでした」のときは、URL 検査ツールでサイトマップの URL を公開 URL としてテストし、「クロールを許可?」と「ページの取得」を見ます。Google は取得に失敗したサイトマップを数日かけて取得し直し、失敗が続くと取得をやめます。原因を直したら、サイトマップを送信し直してください。
サイトマップの作り方は作るソフトを決め、載せるURLとlastmodを確かめる
XML サイトマップは、CMS やサイトのソフトに作らせ、載せる URL と lastmod の決まりを人が決めるのが基本です。メリルのサイトでも、サイトマップの分け方や lastmod の書き方は、作っているソフトによって違っていました。
記事の要点は、以下のとおりです。
- 作り方はCMS・静的サイトの生成・手書きの3通り
- サイトマップには検索結果に出したい正規のURLだけを、完全な形で載せる
- lastmodにはページを大きく更新した日時を入れる
- 1ファイル5万URL・50MBを超えるときは分け、索引ファイルだけを送信する
- サブディレクトリのメディアは、その下にサイトマップを置く
- 送信の前後にサイトマップの中身とステータスを確かめる
サイトマップの中身は、ブラウザで URL を開けばすぐに確かめられます。まずは自社サイトのサイトマップを開き、作っているソフトと、載っている URL・lastmod が今のサイトに合っているかを確かめましょう。
この記事の数字の出どころ
- 株式会社メリルの自社サイト8件の XML サイトマップ2026年10月30日15時20分〜15時25分に、8つのサイトのサイトマップと、索引ファイルに書かれた子のサイトマップ(合計45本)を6秒おきに1回ずつ取得し、索引ファイルの有無・サイトマップの数・ファイルごとの URL の数・lastmod の書き方・作ったソフトの印をスクリプトで数えた
- メリルの Astro のサイトのサイトマップの設定オウンドメディア相談室・Web集客ブック(hands-plus.com/media/)・WWS メディア(wwstd.jp/media/)・meril.co.jp のサイトマップと robots.txt を作る設定とコード(2026年10月30日時点)
- オウンドメディア相談室のサイトマップ レポートの画面2026年10月31日に Search Console(blog-soudan.com のプロパティ)のサイトマップ レポートを開き、送信した索引ファイルのステータスと検出されたページ数を画面で読んだ。本番の sitemap-0.xml の URL の数(42件)は同じ日に取得して数えた
参考にしたページ
- サイトマップについて(Google 検索セントラル)(2026年10月30日に確認)
- サイトマップの作成と送信(Google 検索セントラル)(2026年10月30日に確認)
- サイトマップ インデックス ファイルでのサイトマップの管理(Google 検索セントラル)(2026年10月30日に確認)
- サイトマップ レポートを使用してサイトマップを管理する(Search Console ヘルプ)(2026年10月30日に確認)
- サイトマップの XML 形式(sitemaps.org)(2026年10月30日に確認)
- @astrojs/sitemap(Astro Docs)(2026年10月30日に確認)
- New XML Sitemaps Functionality in WordPress 5.5(Make WordPress Core)(2026年10月30日に確認)
- wp_sitemaps_get_max_urls()(WordPress Developer Resources)(2026年10月30日に確認)
運営:株式会社メリル(このメディアについて)。相談の内容を記事にするときは、ご本人の許可を取り、社名と数字を伏せます。


