本文へスキップ
サイト総合診断

sitemap.xml の作り方と送信方法

サイトマップ(sitemap.xml)は、サイト内の URL を一覧でクローラーに伝える XML ファイルです。ただしクロールを補助する地図であって、載せれば必ず掲載される保証はありません。効きやすいのは大規模サイト・新規サイト・内部リンクが薄いサイト。robots.txt での宣言と Search Console への送信の両方で知らせ、200 で index 可能な正規 URL だけを載せるのが基本です。

執筆: 公開:

サイトマップ(sitemap.xml)とは何ですか?

サイトマップは、サイト内の URL とその更新情報を XML 形式で一覧にし、検索エンジンに「このサイトにはこういうページがある」と伝えるファイルです。あくまでクロールを助ける地図であって、送信したページの掲載順位や掲載自体を保証するものではありません。クローラーが自力で見つけにくい URL を、漏れなく知らせる用途に向きます。

サイトマップは、検索エンジンに渡す「サイトの地図」です。クローラーは通常、リンクをたどってページを見つけますが、 その経路から漏れた URL は見つけてもらえないことがあります。サイトマップはこうした URL を明示的に一覧化し、「ここに載っているページも見に来てほしい」と伝える手段です。ただし勘違いしやすいのは、これがクロールの補助であって、 掲載や順位の保証ではないという点です。載せたからといって必ず index されるわけではありません。

  • できること — URL の存在と最終更新をクローラーに知らせ、発見を助ける
  • できないこと — 掲載の保証、順位の底上げ、低品質ページの救済

どんなサイトにサイトマップが必要ですか?

効果が大きいのは、ページ数が非常に多いサイト、公開直後で外部リンクの少ない新規サイト、内部リンクが薄くクローラーがたどりにくいサイトです。逆に、数ページで全ページが相互にしっかりリンクされた小さなサイトでは、サイトマップが無くてもクロールはほぼ行き渡るため、必須ではありません。要否はサイトの規模と構造で決まります。

サイトマップは「あれば必ず得をする」ものではなく、クローラーが自力で全ページを見つけにくいサイトほど効くものです。 自分のサイトがどれに当たるかで、優先度が変わります。

サイトの状況とサイトマップの有効度
サイトの状況有効度理由
数万ページ規模の大規模サイト高いリンクだけでは新規・深い階層のページが漏れやすい
公開直後の新規サイト高い外部リンクが少なく、クローラーが到達しにくい
内部リンクが薄いサイト高い回遊経路が乏しく、孤立ページが生まれやすい
数ページの小規模サイト低い全ページが相互にリンクしていれば自然にクロールされる

サイトマップの XML はどう書きますか?

urlset を親要素にして、URL ごとに url 要素を並べ、その中に loc(URL の絶対パス)を書きます。必要に応じて lastmod(最終更新日)を添えます。文字コードは UTF-8、特殊文字はエンティティ化し、loc には canonical と同じ正規の絶対 URL を書きます。changefreq や priority は Google がほぼ無視するため、無理に付ける必要はありません。

書式は sitemaps.org のプロトコルで決まっています。最上位に <urlset> を置き、URL 1 件ごとに <url> を並べ、 その中に必須の <loc>(絶対 URL)と、任意の <lastmod>(最終更新日)を書きます。文字コードは UTF-8 に統一し、&< などはエンティティに置き換えます。

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-07-01</lastmod>
  </url>
  <url>
    <loc>https://example.com/guide/sitemap</loc>
    <lastmod>2026-07-15</lastmod>
  </url>
  <!-- 載せる URL は 200 で返る index 可能な正規 URL だけ -->
</urlset>

<loc> に書く URL は、必ずそのページの正規 URL(canonical と一致する絶対 URL)にします。changefreqpriority という要素も規格上は存在しますが、Google は現在ほぼ参照しないと明言しているため、 手間をかけて付ける価値は低いです。迷ったら loc と lastmod だけで十分です。

作ったサイトマップはどう送信しますか?

robots.txt に Sitemap 行でサイトマップの絶対 URL を書き、あわせて Google Search Console のサイトマップ機能から送信します。robots.txt の宣言は Google 以外のクローラーにも届き、Search Console の送信は取得状況やエラーを画面で確認できます。片方だけでなく両方でクローラーに知らせておくのが確実です。

知らせ方は 2 通りあり、両方やっておくのが確実です。1 つは robots.txt に Sitemap: 行で場所を書く方法。 これは Google に限らず、robots.txt を読む各種クローラーに届きます。もう 1 つは Search Console のサイトマップ機能からの送信で、取得の成否や検出 URL 数を画面で確認できるのが利点です。

robots.txt での宣言(絶対 URL で書く)
# robots.txt — サイトマップの場所を宣言する
User-agent: *
Allow: /

# 絶対 URL で書く。相対パスは不可
Sitemap: https://example.com/sitemap.xml

サイトマップに載せてはいけない URL は?

載せてよいのは、ステータス 200 で返り、noindex でなく、canonical が自分自身を指す「正規かつ index 可能な URL」だけです。noindex のページ、404 やリダイレクトになる URL、canonical で別 URL に正規化される非正規 URL を混ぜると、クローラーに矛盾した信号を送ることになります。サイトマップは掲載してほしい URL の一覧に保ちます。

サイトマップは「掲載してほしい URL の一覧」です。ここに index させたくない URL や、そもそも表示されない URL を混ぜると、 クローラーに矛盾した信号を送り、無駄なクロールを誘発します。次のような URL は載せてはいけません

サイトマップに載せてよい URL / いけない URL
URL の状態載せる?理由
200 で返る index 可能な正規 URL載せる(正しい掲載してほしい対象そのもの
noindex のページ載せない「掲載してほしい」と「掲載するな」で矛盾する
404 / 410 になる URL載せない存在しないページを案内することになる
リダイレクトする URL載せない最終的な到達先(正規 URL)を直接載せる
canonical が別 URL を指す非正規 URL載せない正規化先と食い違い、信号が濁る

URL が多い大規模サイトはどうしますか?

1 ファイルにつき URL 50,000 件、または非圧縮で 50MB を超える場合は、複数のサイトマップに分割し、それらをまとめるサイトマップインデックスを作ります。インデックスは sitemapindex 要素の中に各サイトマップの場所を並べたファイルで、robots.txt や Search Console にはこのインデックスを 1 つ知らせれば済みます。大規模サイトは最初から分割を前提に設計すると管理が楽です。

サイトマップ 1 ファイルには上限があります。URL 50,000 件、または非圧縮で 50MBのどちらかを超えたら、 ファイルを分割しなければなりません。分割した複数のサイトマップは、サイトマップインデックスという別のファイルで束ねます。 インデックスは <urlset> ではなく <sitemapindex> を使い、各サイトマップの場所を <loc> で並べます。

サイトマップインデックス(sitemapindex)
<?xml version="1.0" encoding="UTF-8"?>
<!-- 上限を超えたら分割し、この索引で束ねる -->
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-1.xml</loc>
    <lastmod>2026-07-15</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-2.xml</loc>
    <lastmod>2026-07-15</lastmod>
  </sitemap>
</sitemapindex>

インデックスを使えば、robots.txt や Search Console に知らせるのはインデックス 1 本だけで済みます。 クローラーがインデックスをたどって各サイトマップを取得してくれるためです。.gz で gzip 圧縮して転送量を減らすこともできますが、50MB の上限は圧縮前のサイズで判定される点に注意します。

正しく認識されたか、どう確認しますか?

Search Console のサイトマップレポートで、送信したサイトマップが「成功」になり、検出 URL 数が想定どおりかを確認します。取得エラーや、送信 URL 数に対して極端に少ないインデックス数が出ていないかも見ます。加えて lastmod に嘘が無いか(更新していないのに日時だけ今にしていないか)を点検すると、クローラーの信頼を保てます。

送信して終わりにせず、Search Console のサイトマップレポートで結果を確認します。ステータスが「成功」で、 検出 URL 数が想定どおりなら、まずは正しく読み取られています。逆に取得エラーや、 送信 URL 数に対してindex 数が極端に少ない場合は、非正規 URL の混入や品質の問題を疑います。

サイトマップはクロールの入口を整える施策であり、単体で順位が上がるものではありません。 載せた URL が確実に index 可能な正規 URL であることを前提に、 回答として引用されやすい本文の作り方は AI に回答として引用される文章の構造、 構造化データによる裏づけは 構造化データ(JSON-LD)の書き方 も合わせて参照してください。

参考にした一次情報

関連する解説

自分のサイトは、実際どうなっているか

この記事で説明した項目は、すべて無料の診断ツールで実測できます。URL を入れるだけ・登録不要です。

無料で診断する