SEO対策コース/カリキュラム/第2章: テクニカル SEO を自動チェック/2-2 robots.txt と sitemap.xml の書き方

2-2 robots.txt と sitemap.xml の書き方

無料

robots.txt の書き方と sitemap.xml の作成手順を Claude Code に任せる。検索エンジンと AI クローラー両対応の正しい記述ルールを、コピペで使える雛形付きで身につけます。

2章: テクニカル SEO を自動チェック45分

このレッスンで身につくこと

検索エンジンに見つけてもらう「最初の一歩」は、コンテンツの量でも被リンクでもなく、サイトの入り口を整えること です。次の 2 つのファイルを正しく置くだけで、Google のクローラーは効率よくサイトを巡回できるようになります。

  • robots.txt — クローラーへの「案内板」。どこを見ていいか、どこは見ないでほしいかを伝える
  • sitemap.xml — クローラーへの「目次」。サイトに存在する全ページのリスト
ポイント

このレッスンのゴール

  • robots.txt と sitemap.xml が 何のためにあるか を 1 文で説明できる
  • 自分のサイト用の robots.txt を 5 分で書ける
  • AI クローラー(GPTBot / ClaudeBot / PerplexityBot)への対応方針を持っている
  • sitemap.xml を Claude Code に自動生成させられる
  • Google Search Console にサイトマップを送信できる
  • 失敗パターン を覚えていて、本番サイトで踏まない

所要時間 — 約 45 分 難易度 — ★★☆☆☆

気づき

SEO は積み上げのゲーム。良い記事を書いても、入り口(robots.txt)が閉じていれば誰も読みにきません。サイトマップがなければ、書いたページの存在に気づいてもらえません。土台 → コンテンツ → 信頼性 の順で積み上げます。


robots.txt とは — クローラーへの「案内板」

お店に例えて理解する

robots.txt は、サイトのルート(https://example.com/robots.txt)に置く テキストファイル 1 枚 です。役割は「クローラーへの案内板」。リアル店舗に例えると下記のとおりです。

案内板robots.txt
「客席は自由に見てください」Allow: / — サイト全体は OK
「厨房は立ち入り禁止」Disallow: /admin/ — 管理画面は見ないで
「メニュー一覧はあちら」Sitemap: ... — 目次はここにあります

==Google のクローラーはサイトに最初に来たとき、まず /robots.txt を読みます==。ここに書かれた指示に従って、どこを巡回するかを決めます。

何を Disallow すべきか

「全部見せたほうが SEO に良いのでは?」と思うかもしれませんが、逆です。見せる必要のないページを除外する ことで、クローラーは大事なページに集中できます。

Disallow すべきもの理由
/admin/ /dashboard/管理画面。検索結果に出る意味がない
/api/API エンドポイント。HTML ではない
/search?q=サイト内検索結果。無限に URL が生成される
/tmp/ /private/一時ファイル・非公開資料

逆に、絶対に Disallow してはいけないのは ==/(サイト全体) /blog/ /posts/(記事ページ) /css/ /js/ /images/(スタイルや画像。レンダリングが崩れる)== の 3 つです。

Bad

「security のために全部 Disallow しておこう」は最悪手。robots.txt は 立ち入り禁止の貼り紙 であって、鍵ではありません。攻撃者は普通にアクセスできます。逆に Google には「ここ見ないで」と伝わるので、検索結果から消えるだけです。本当に守りたい情報は、サーバー側の認証(Basic 認証、ログイン)で守ります。

クロールバジェットという考え方

クロールバジェット とは、Google が「1 つのサイトに 1 日にどれくらいクロールするか」の予算です。商品 10 万件の EC で検索結果ページ(/search?q=...)を無制限にクロールさせると、肝心の商品ページがいつまでも巡回されません。robots.txt で検索結果ページを Disallow しておくと、商品ページに予算が集中 します。中小サイト(1,000 ページ以下)では気にする必要はほぼありませんが、管理画面と API は Disallow しておくのが行儀です。


robots.txt の書き方と最低限の設定

構文の基本

robots.txt の構文はとてもシンプルで、覚えることは 4 つだけです。

User-agent: <対象クローラー名>   # 誰に対する指示か
Allow: <パス>                    # 許可するパス
Disallow: <パス>                 # 禁止するパス
Sitemap: <URL>                   # サイトマップの場所

User-agent: ** は「すべてのクローラー」を意味します。特定のクローラーだけに別ルールを当てたいときは、別のブロックを書きます。

最低限のテンプレート(コピペ用)

ほとんどのサイトはこのテンプレートで OK です。あなたのドメインに合わせて Sitemap の URL だけ書き換えてください。

# robots.txt — 標準テンプレート

User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /private/
Disallow: /search

Sitemap: https://example.com/sitemap.xml

これだけで、管理画面と API と検索結果ページを除外しつつ、サイトマップの場所も伝える という最低限の役割が果たせます。

配置場所のルール

robots.txt は必ずサイトのルート に置きます。サブディレクトリに置いても認識されません。

OK   https://example.com/robots.txt
OK   https://blog.example.com/robots.txt  (サブドメイン単位で別ファイル)
NG   https://example.com/docs/robots.txt  (サブディレクトリ × )

サブドメインごとに別の robots.txt を置けるのは便利な特徴です。本番(www.example.com)とステージング(staging.example.com)で別の設定にしておけば、ステージング環境を誤って検索結果に出してしまう事故を防げます。

ポイント

ステージング環境では User-agent: * / Disallow: / を書いて 全 Disallow にしておきます。本番には絶対に反映されないように、デプロイ時に環境変数で切り替える運用が安全です。

Claude Code に robots.txt を書いてもらう

設定方針を日本語で伝えれば、Claude Code が一発で生成します。

> robots.txt を作って。サイトは example.com で、
  /admin/ /api/ /search は除外したい。sitemap.xml も指定してね。

プロジェクトのフレームワーク(Next.js / Astro / React Router など)に応じて、正しい配置先 も Claude が自動で判断します。「public/ の下に置けばビルド時にルートに配信される」といった現代フレームワーク特有の置き場所も把握しています。


AI クローラー対応(GPTBot, ClaudeBot, PerplexityBot)

なぜ AI クローラー対応が必要か

2024 年以降の大きな変化 は、Google 以外に「AI クローラー」と呼ばれる新種のクローラーが急増したことです。ChatGPT・Claude・Perplexity などの AI サービスは、Web を独自にクロールして学習データや検索結果ソースに使います。

クローラー名運営用途
GPTBotOpenAIChatGPT の学習・Web 検索ソース
ClaudeBot Claude-UserAnthropicClaude の Web 検索・回答ソース
PerplexityBotPerplexityPerplexity の回答ソース
Google-ExtendedGoogleBard / Gemini の学習データ
CCBotCommon Crawl多くの LLM が利用する学習データセット

判断ポイントは 学習データに使われていいかAI 検索の回答ソースに使われたいか の 2 軸。学習はイヤだけど引用はされたい、という選択もできます。

3 つの典型パターン

パターン A — 全 AI クローラーをブロック(情報を絞りたい企業向け)

User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: PerplexityBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: CCBot
Disallow: /

パターン B — 全 AI クローラーを許可(SEO/AIO どちらも狙う公開サイト向け)。robots.txt に何も書かなければデフォルトで Allow です。

パターン C — ブログだけ AI に許可、商品ページは除外(B2C EC の典型)。各 AI クローラーに対して Allow: /blog/Disallow: / を組み合わせて書きます。

ポイント

AI クローラー対応の判断基準

  • 公開情報メインのメディア・ブログ → パターン B(許可)。AI 検索で引用されると流入の新ルートになる
  • 有料コンテンツがある SaaS・教育サービス → パターン C(公開部分のみ許可)
  • 機密性が高い B2B 製品サイト → パターン A(全ブロック)も選択肢

Claude Code に AI クローラー設定を任せる

> robots.txt に AI クローラー対応を追加して。
  /blog/ は GPTBot ClaudeBot PerplexityBot に許可、それ以外はブロック。

Claude Code は主要な AI クローラー名を把握しているので丸投げで問題ありません。心配なら生成後に「OpenAI / Anthropic / Perplexity 公式の最新情報と一致してる?」と聞き返すと、参照リンク付きで答えてくれます。

気づき

GEO(Generative Engine Optimization) という新しい SEO 用語が出てきています。「AI 検索エンジンで引用される最適化」のことで、2026 年現在は「AI クローラーをブロックしない」だけで他社と差がつく 段階です。


sitemap.xml とは — クローラーへの「目次」

サイトマップが必要な理由

サイトマップは、サイト内の全ページのリストを XML 形式で書いたファイルです。レストランのメニュー一覧のように「うちのサイトにはこれだけのページがありますよ」と Google に伝えます。

サイトマップがあると、新しいページが検索結果に出るまでの時間が大幅に短くなります。サイトマップがないと、Google は リンクをたどって ページを発見するしかなく、リンクが少ないページは 1 年経っても気づかれない こともあります。新規サイト・大規模サイト・動的生成のページが多いサイト・孤立ページがあるサイトで特に効きます。

XML サイトマップの構造

中身は次のような XML ファイルで、1 ページ 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-19</lastmod>
  </url>
  <url>
    <loc>https://example.com/blog/seo-basics</loc>
    <lastmod>2026-05-12</lastmod>
  </url>
</urlset>

タグは <loc>(URL、必須)/ <lastmod>(最終更新日、推奨)/ <changefreq>(更新頻度、任意)/ <priority>(重要度、任意)の 4 つ。==現在の Google は <changefreq><priority> をほぼ無視 しているので、実質的に意味があるのは <loc><lastmod> の 2 つだけ== と覚えておけば OK です。

サイズと分割ルール

サイトマップ 1 ファイルあたりの上限は 50,000 URL / 50MB(未圧縮) です。超える場合は複数に分割して、それらをまとめる サイトマップインデックスsitemap-index.xml)を作ります。大規模 EC では「商品」「カテゴリ」「ブログ」「ヘルプ」のようにテーマ別に分割するのが一般的です。中小サイトはこの構造を意識する必要はありません。


サイトマップの自動生成(Claude Code に書かせる)

静的サイトの場合

Astro / Next.js / Nuxt などのフレームワークには、サイトマップを自動生成するプラグインがあります。

> このプロジェクトに sitemap.xml の自動生成を仕込んで。
  ビルド時にすべてのページが含まれるようにしたい。

Claude Code は package.json を読んでフレームワークを判定 → 適切なプラグインを選定(例: @astrojs/sitemap)→ bun add でインストール → 設定ファイルに追加 → ローカルビルドで dist/sitemap-index.xml が生成されるか確認、という手順を自分で組み立てます。

動的サイトの場合

DB から動的にページを生成しているサイト(CMS、EC など)では、DB を直接読んでサイトマップを構築するスクリプトを書きます。> /scripts/generate-sitemap.ts を作って。posts テーブルから published のレコードを全件取り出して /blog/[slug] の URL リストを sitemap.xml として書き出す。lastmod は updated_at から。 のように依頼すれば一発。CI に組み込めばデプロイのたびに最新のサイトマップが生成 される運用が完成します。

サイトマップのチェック

すでに本番にサイトマップがある場合は、> /seo sitemap https://example.com と投げるだけで、サイトマップの存在 / XML の正しさ / URL の重複 / 404 や 301 にリダイレクトされる URL / HTTPS と HTTP の混在 / 上限超過、をまとめて診断してくれます。特に多い問題は 古い URL が残っている ことで、記事を削除したのに sitemap.xml には残っていて Google が毎日 404 を踏む — というケースは中小サイトでもよく見ます。


Google Search Console への登録

サイトマップは「置くだけ」では足りない

サイトマップを作って https://example.com/sitemap.xml に置いただけでは、Google は 気づかない可能性 があります。robots.txt に書いておくか、Google Search Console(GSC) から能動的に送信するのが確実です。

Search Console での送信手順

https://search.google.com/search-console にアクセス → プロパティを追加(ドメイン or URL プレフィックス)→ 所有権の確認(DNS レコード / HTML タグ / ファイルアップロードのいずれか)→ 左メニュー「サイトマップ」→ 「新しいサイトマップの追加」に sitemap.xml を入力して送信。

送信後 24〜48 時間で「成功しました」と表示されれば OK。エラーが出る場合はサイトマップの中身に問題があります。

Search Console から得られる情報

送信後は次のような数字が確認できます。検出された URL 数 / インデックス登録された URL 数 / 除外された URL 数とその理由 / サイトマップ最終読み込み日。検出 100 / インデックス 30 みたいに大きな差がある場合は、コンテンツの質や重複の問題があります。第 3 章のコンテンツ品質編で対策を扱います。

ポイント

Search Console は SEO の体重計 です。週 1 で開く習慣をつけると、サイトの健康状態が肌感覚で分かるようになります。日本では Bing のシェアは数 % ですが、Bing の検索結果は ChatGPT の Web 検索ソース でもあるので、Bing Webmaster Tools にも同じサイトマップを送っておくと効果的です。


失敗パターン — 本番で踏みたくない罠

ここからは「やってしまうと痛い」失敗パターンを見ていきます。経験者ほどこのセクションに価値を感じます

失敗 1 — 本番で Disallow: / を書いてしまう

史上最悪のミス。サイト全体を Google から消す、検索流入ゼロ化の魔法です。User-agent: * / Disallow: / を書いた瞬間、全ページが対象になります。これが起きるのは大抵 「ステージングの robots.txt を本番に持ってきてしまった」 ケース。リカバリは設定を直して数日待つだけですが、検索順位が戻るのに数週間かかる ことがあります。

Bad

ステージングと本番で robots.txt を分ける運用を最初から作ること。環境変数で出力を切り替える のがフレームワーク的にも標準です。

失敗 2 — sitemap.xml の URL が間違っている

サイトマップに書く URL は ==絶対 URL(https:// から始まる完全な URL)== である必要があります。相対パス(/blog/seo)、プロトコルなし(example.com/blog/seo)、HTTPS 運用なのに HTTP で書いたもの — これらは全部 NG です。サブドメインの揺れwww. の有無)にも注意し、canonical URL(正規 URL)と一致させます。

失敗 3 — Disallow したページをサイトマップに入れる

「見ないで」と言いながら目次には載せる、矛盾した指示です。Search Console で警告が出るだけでなく、Google からの サイトの信頼度 にも影響します。robots.txt で /admin/ を Disallow しているのに、sitemap.xml に https://example.com/admin/dashboard が紛れ込んでいる、というケースが典型例。サイトマップを動的生成にしておけば、機械的に整合させやすくなります

失敗 4 — noindexDisallow を併用

noindex メタタグ(HTML 内に書く)と robots.txt の Disallow は、似ているようで動きが違います。

設定クローラーの動き
noindex のみページは読まれるが、検索結果に出ない
Disallow のみページは読まれない(URL だけ検索結果に出ることはある)
両方==noindex が読まれないので、URL が検索結果に残り続ける==

==noindex を効かせたいページは Disallow してはいけません==。クローラーが HTML を読まないと noindex メタタグの存在に気づけないからです。「検索結果から消したい」なら noindex メタタグのみ、「クロールバジェットを節約したい」なら Disallow のみ、と目的で切り分けます。

失敗 5 — 古い URL がサイトマップに残り続ける

半年前に消した記事の URL がサイトマップに残っていて、Google が毎日 404 を踏みに来る — 中小サイトで一番よく見る問題です。Search Console の「サイトマップ」レポートを月 1 で確認するか、サイトマップを動的生成にして DB と常に同期させるのが解決策。Claude Code に > このサイトマップに 404 になる URL が含まれていないかチェックして。 と投げると、各 URL に HEAD リクエストを送って 404 / 301 のリストを返してくれます。


まとめ

このレッスンで押さえてほしいポイントを 6 つ並べます。

  1. robots.txt はクローラーへの案内板。管理画面・API・検索結果ページは Disallow、それ以外は Allow が基本
  2. ==Disallow: / は破壊魔法==。本番で絶対に書かない。ステージングの設定が紛れ込む事故に注意
  3. AI クローラー(GPTBot / ClaudeBot / PerplexityBot) への対応方針を決めておく
  4. サイトマップは目次<loc><lastmod> だけ意識すれば OK
  5. Search Console に送信 して検出数・インデックス数を毎週確認
  6. robots.txt とサイトマップの整合性 を取る。Disallow したページはサイトマップから外す
章末演習

章末演習 — 自分のサイト(または身近なサイト)で次の 3 つを確認してください。所要時間 10 分。

  1. https://対象サイト.com/robots.txt をブラウザで開いて、何が書かれているか読む。Disallow: / が紛れていないか確認
  2. https://対象サイト.com/sitemap.xml を開いて、URL がいくつ載っているか数える。古い URL や 404 になる URL がないか目視チェック
  3. Claude Code に > /seo technical https://対象サイト.com と投げて、robots.txt とサイトマップのスコアを確認。指摘事項を 1 つ以上選んで修正 してみる

<Quiz question="robots.txt で「見ないで」と指定したページはサイトマップに入れるべきですか?" options={["入れない — Google が混乱する","入れる — 全ページを含めるべき","どちらでもよい"]} answer={0} />

<Quiz question="本番サイトの robots.txt に絶対に書いてはいけないのは?" options={["Disallow: / (サイト全体を検索結果から消してしまう)","Disallow: /admin/","Sitemap: https://example.com/sitemap.xml"]} answer={0} />

<Quiz question="AI クローラーの代表例として正しい組み合わせは?" options={["GPTBot / ClaudeBot / PerplexityBot","Googlebot / Bingbot / Yahoo Slurp","Chrome / Safari / Firefox"]} answer={0} />


次のレッスン 2-3: モバイル対応とセキュリティ では、Google が評価の基準にしているスマホ表示と HTTPS の話に進みます。