
sitemap.xmlとrobots.txtの役割と作り方
sitemap.xmlとrobots.txtの違いと作り方を初心者向けに解説。クローラーへの正しい指示の与え方、設置場所、Search Consoleへの送信方法まで実例付きで紹介します。
目次(70項目)
- はじめに
- sitemap.xmlとrobots.txtの違い
- 「アクセル」と「ブレーキ」のメタファー
- 役割の境界線まとめ
- sitemap.xmlとは
- sitemap.xmlの基本構造
- sitemap.xmlを作る方法
- sitemap.xmlのGoogleへの送信
- robots.txtとは
- robots.txtの基本構造
- robots.txtの注意点
- robots.txtのよくある書き方
- 全クローラー許可(基本)
- 管理画面・プライベートエリアを除外
- AI クローラーをブロック(2025年以降一般化)
- sitemap.xmlとrobots.txtの動作確認
- やってはいけないミス
- sitemap.xmlの種類
- sitemap.xml の最適な構成
- 標準的な構成
- 大規模サイトの分割パターン
- 分割サイトマップインデックスの実例
- robots.txt の典型パターン
- 基本構成
- AI クローラーの個別制御
- 機密領域の保護
- AI クローラー制御の詳細
- 主要 AI クローラー一覧
- 学習用と検索用を分けるパターン
- AI クローラー設定の意思決定マトリクス
- llms.txt との関係
- よくある実装ミス
- 失敗事例から学ぶトラブルシューティング
- 事例1: ステージング環境の robots.txt を本番にデプロイ
- 事例2: lastmod を全 URL 同一日付で出力
- 事例3: サイトマップに canonical 先以外を載せた
- 事例4: robots.txt で JS / CSS をブロック
- 事例5: 大規模ECで巨大単一サイトマップを送信
- 自動化の実装
- Next.js(App Router)
- WordPress
- 大規模サイト
- 動的サイトマップ生成のベストプラクティス
- Cron による定期再生成パターン
- 構造化データとの併用
- 業界別の実装例
- ECサイト(数万〜数十万URL)
- ニュースメディア
- SaaS / コーポレートサイト
- メディア・ブログ
- 業界別の優先設定マトリクス
- 検証ツール
- 実務でのチェックフロー
- よくある質問
- Q1. sitemap.xmlを送信すると順位が上がりますか?
- Q2. robots.txtがなくても大丈夫ですか?
- Q3. Disallowしたページはインデックスされませんか?
- Q4. sitemap.xmlは何度送信していいですか?
- Q5. AIクローラーをブロックすると検索順位は下がりますか?
- Q6. サイトマップにすべてのページを入れるべき?
- クロールバジェットとサイトマップの関係
- バジェット浪費の典型パターン
- バジェット最適化のステップ
- モバイルファーストインデックスとサイトマップ
- 国際化サイト(hreflang)とサイトマップ
- CDN・ホスティング別の設置場所
- まとめ
- 関連用語
- 関連記事
- 参考文献・出典
sitemap.xmlとrobots.txtの役割と作り方
この記事の結論: sitemap.xmlは「クロールしてほしいURLを伝える」、robots.txtは「クロール禁止を伝える」ファイルです。両方を正しく設置すると、インデックス効率が大きく改善します。
最終更新日: 2026-05-05
はじめに
「sitemap.xmlってなぜ必要なの?」「robots.txtってどう書くの?」という初心者の疑問に答える記事です。両者の役割の違いと作り方を、Google公式仕様に基づいて解説します。本記事はSEOの技術基盤としての位置づけだけでなく、ChatGPT・Perplexity・Claudeなど生成AIによる引用最適化(LLMO)の文脈でも重要となる、クローラー制御の全体像をカバーします。
→ 詳しくはSEO 完全ガイド
sitemap.xmlとrobots.txtの違い
両者は混同されがちですが、役割が逆です。
| ファイル | 役割 | 強制力 |
|---|---|---|
| sitemap.xml | クロール対象URLの一覧 | 推奨(必ずクロールするとは限らない) |
| robots.txt | クロール禁止URLの指定 | 強制(Googlebotは従う) |
「アクセル」と「ブレーキ」のメタファー
sitemap.xmlがクローラーに対して「ここを優先的に見てほしい」というアクセル役を担うのに対し、robots.txtは「ここには立ち入らないで」というブレーキ役を担います。両者は対立する仕組みではなく、相互補完の関係です。よくある誤解として「robots.txtで除外したページはsitemap.xmlに書いてもよい」と考えるケースがありますが、これは不整合シグナルとなりクローラーの混乱を招くため避けるべきです。
→ 詳しくは検索エンジンの仕組み
役割の境界線まとめ
| やりたいこと | 使うべき仕組み |
|---|---|
| 新規ページを早くインデックスさせたい | sitemap.xml に追加 |
| 一部 URL をクロールさせたくない | robots.txt の Disallow |
| 検索結果に出したくない | meta robots の noindex |
| 重複ページを正規化したい | canonical タグ |
| AI の学習だけ拒否したい | robots.txt の AI ボット個別指定 |
sitemap.xmlとは
sitemap.xmlは、サイト内のURL一覧を検索エンジンに伝えるための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-05-04</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/articles/seo-basics/</loc>
<lastmod>2026-05-04</lastmod>
</url>
</urlset>
<loc>は必須、その他はオプションです。Googleは現在changefreqとpriorityをほぼ無視しているため、<loc>と<lastmod>があれば十分です。
sitemap.xmlを作る方法
- WordPress: Yoast SEO、Rank Math、SEO SIMPLE PACKが自動生成
- Next.js / Astro / Hugo: ビルド時に自動生成プラグイン
- 手動作成: ページが少ないなら手書きでもOK
- オンラインジェネレーター: xml-sitemaps.comなど(小規模サイト向け)
sitemap.xmlのGoogleへの送信
- ファイルを
https://example.com/sitemap.xmlに配置 - Google Search Console > サイトマップから送信
- robots.txtに
Sitemap: https://example.com/sitemap.xmlを追記
→ 詳しくはSearch Console の使い方
ポイント: 大規模サイトはサイトマップを分割して、サイトマップインデックスファイルにまとめます。1ファイル50,000URL・50MBが上限です。
robots.txtとは
robots.txtは、検索エンジンのクローラーに「ここは見ないでください」を伝えるテキストファイルです。
robots.txtの基本構造
User-agent: *
Disallow: /admin/
Disallow: /private/
User-agent: Googlebot
Allow: /
Sitemap: https://example.com/sitemap.xml
| 命令 | 意味 |
|---|---|
| User-agent | 対象クローラー(*は全て) |
| Disallow | クロール禁止 |
| Allow | クロール許可(Disallowの中の例外) |
| Sitemap | サイトマップの場所 |
robots.txtの注意点
- 設置場所はルート直下のみ:
https://example.com/robots.txt - noindexと混同しない: robots.txtでブロックしてもインデックスされる場合がある
- 検索結果から消したい場合は
noindexを使う
robots.txtのよくある書き方
全クローラー許可(基本)
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
管理画面・プライベートエリアを除外
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-login.php
Disallow: /tag/
Sitemap: https://example.com/sitemap.xml
AI クローラーをブロック(2025年以降一般化)
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: PerplexityBot
Disallow: /
ただしAIクローラーをブロックすると、AI検索からの流入機会も失います。慎重に判断しましょう。
sitemap.xmlとrobots.txtの動作確認
設置後は次で確認します。
- ブラウザで直接アクセス:
https://example.com/robots.txtと/sitemap.xml - Search Consoleのサイトマップ機能: 認識・取得状況
- Search Consoleのrobots.txtテスター: 構文エラーチェック
- URL検査ツール: 個別URLがクロール可能か確認
やってはいけないミス
- robots.txtで全サイトをブロック(
Disallow: /)してしまう - sitemap.xmlに
noindexページを含める - robots.txtでブロックしながら、Search Consoleでインデックスを期待する
- sitemap.xmlを更新したのにSearch Consoleに再送信しない
sitemap.xmlの種類
通常のサイトマップ以外にも特殊なサイトマップがあります。
| 種類 | 用途 |
|---|---|
| 画像サイトマップ | 画像検索向け |
| 動画サイトマップ | YouTube/動画SEO向け |
| ニュースサイトマップ | Googleニュース向け(48時間以内の記事) |
通常サイトはまず標準サイトマップを優先しましょう。
sitemap.xml の最適な構成
sitemaps.org の仕様 によると、1ファイルあたり最大 50,000 URL / 50MB(非圧縮)が上限。これを超える大規模サイトはサイトマップインデックスで分割します。
標準的な構成
<?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-04</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/articles/seo-basics</loc>
<lastmod>2026-05-04</lastmod>
</url>
</urlset>
<changefreq> と <priority> は Google が「ヒント程度しか使わない」と公式発表。<lastmod> は重要シグナルなので必ず正確に設定します。
大規模サイトの分割パターン
sitemap-index.xml
├── sitemap-articles.xml (記事一覧)
├── sitemap-products.xml (商品ページ)
├── sitemap-categories.xml (カテゴリページ)
└── sitemap-images.xml (画像)
カテゴリ別に分けると、各セクションのインデックス状況を Search Console で個別に把握できます。
分割サイトマップインデックスの実例
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-articles.xml</loc>
<lastmod>2026-05-05</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-products.xml</loc>
<lastmod>2026-05-05</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-categories.xml</loc>
<lastmod>2026-05-04</lastmod>
</sitemap>
</sitemapindex>
サイトマップインデックスから参照する子サイトマップは、必ず同一ホスト・同一プロトコルである必要があります。例えば https://example.com/sitemap-index.xml から http://example.com/sitemap-products.xml を参照すると、Googleは「クロスドメイン違反」とみなして無視します。
→ 詳しくは検索エンジンの仕組み
robots.txt の典型パターン
基本構成
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
これで Google・Bing 含む全クローラーが許可されます。
AI クローラーの個別制御
# 全AIクローラー許可(学習・検索両方)
User-agent: GPTBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
# 学習用は拒否、検索用は許可(OpenAIの場合)
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Allow: /
OpenAI のクローラー一覧 では、学習目的の GPTBot と検索目的の OAI-SearchBot が分離されています。
機密領域の保護
User-agent: *
Disallow: /admin/
Disallow: /private/
Disallow: /api/
ただし robots.txt はあくまで「お願い」レベル。本当に秘匿したい URL はサーバー側で認証必須にします。
AI クローラー制御の詳細
2025年以降、生成AI各社が独自のクローラーを公開しており、それぞれ User-agent が異なります。LLMO(生成AI最適化)の文脈では、自サイトを「学習データ」として渡すか、「検索引用ソース」として渡すかをボット単位で判断する必要があります。
→ 詳しくはLLMO 完全ガイド
主要 AI クローラー一覧
| User-agent | 運営 | 主な用途 | 推奨設定(多くのメディア) |
|---|---|---|---|
GPTBot | OpenAI | ChatGPT モデルの学習データ収集 | Disallow(学習されたくない場合) |
OAI-SearchBot | OpenAI | ChatGPT Search の引用元クロール | Allow(流入を取りたい場合) |
ChatGPT-User | OpenAI | ChatGPT のオンデマンド取得 | Allow |
ClaudeBot | Anthropic | Claude モデルの学習・検索 | 用途別に判断 |
Claude-Web | Anthropic | Claude のオンデマンド取得 | Allow(要約利用が見込める) |
PerplexityBot | Perplexity | Perplexity の引用元クロール | Allow(引用流入が大きい) |
Google-Extended | Bard / Gemini 学習向け | Disallow(学習拒否) | |
Bytespider | ByteDance | 学習データ収集 | Disallow が一般的 |
CCBot | Common Crawl | オープンデータセット | 判断分かれる |
学習用と検索用を分けるパターン
「ChatGPTで自社が引用されてほしい、ただし学習データには使われたくない」というニーズは多く存在します。OpenAIはこのために GPTBot(学習用)と OAI-SearchBot(検索用)を分離しているため、次のような書き方が有効です。
# 学習はNG、検索引用はOK
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
# Google の生成AI学習も拒否
User-agent: Google-Extended
Disallow: /
→ 詳しくはllms.txt とは
AI クローラー設定の意思決定マトリクス
| サイトの性質 | 学習用ボット | 検索用ボット | 備考 |
|---|---|---|---|
| ニュース・報道 | Disallow | Allow | 記事の二次利用防止 |
| ブログ・メディア | 判断分かれる | Allow | 流入優先なら全許可 |
| EC サイト | Allow | Allow | ブランド露出最優先 |
| 専門技術記事 | Disallow | Allow | 知財保護+引用獲得 |
| 会員制コンテンツ | Disallow | Disallow | パスワード保護も併用 |
llms.txt との関係
近年提案されている llms.txt は、サイトのコンテンツを生成AIが要約・引用しやすい形でまとめた追加ファイルです。robots.txt が「クロールしていいか/だめか」のゲート制御であるのに対し、llms.txt は「このサイトをどう要約してほしいか」という意味的ガイドラインです。両者は競合せず、併用して効果を発揮します。
→ 詳しくはllms.txt 完全ガイド
よくある実装ミス
| ミス | 問題 |
|---|---|
robots.txt で Disallow: / のまま公開 | 全ページがクロール拒否、検索結果から消失 |
sitemap.xml に noindex ページを含める | クローラーが混乱 |
| sitemap.xml の URL に http と https が混在 | 正規化エラー |
| Sitemap 行を robots.txt に書き忘れる | クローラーがサイトマップを見つけられない |
lastmod を全 URL で同じ日付 | 鮮度シグナルとして機能しない |
失敗事例から学ぶトラブルシューティング
実際の現場で起きた失敗パターンを把握しておくと、同じ轍を踏まずに済みます。
事例1: ステージング環境の robots.txt を本番にデプロイ
開発環境で User-agent: * / Disallow: / を入れていたものを、CI/CDの設定ミスで本番に反映してしまい、2週間で検索流入が80%以上消えたケース。Disallow: / は最も致命的なミスのため、本番デプロイ前のチェックを必ず仕込むべきです。
→ 詳しくはSearch Console の使い方
事例2: lastmod を全 URL 同一日付で出力
サイトリニューアル時に「全URLを更新扱いにすれば良い」と考え、5万件のURLすべてに <lastmod>2026-05-01</lastmod> を入れて再送信したケース。Googleはこれを「鮮度シグナルが信頼できない」と判断し、クロール頻度がむしろ下がる結果となりました。
事例3: サイトマップに canonical 先以外を載せた
重複URLを canonical で正規化していたのに、sitemap.xmlには非正規URL(パラメータ付きURLなど)を載せてしまい、Googleが「どれが正?」と迷い、結果的に評価が分散しました。サイトマップに載せるのは canonical 先のみが鉄則です。
→ 詳しくはcanonical タグとは
事例4: robots.txt で JS / CSS をブロック
「不要なリソースは抑える」という発想で Disallow: /assets/ を入れたところ、Googlebotが JavaScript や CSS を読めず、レンダリング結果が壊れて評価が下がったケース。CSSやJSはブロックしないのが現代SEOの基本です。
事例5: 大規模ECで巨大単一サイトマップを送信
10万URLを1つの sitemap.xml に詰め込んだところ、50,000URL上限を超えてGoogleがエラー扱い。本来はサイトマップインデックス+分割で送るべき構成でした。
| 失敗カテゴリ | 検出方法 | 復旧アクション |
|---|---|---|
Disallow: / 誤デプロイ | Search Consoleの「カバレッジ」急減 | robots.txt を即座に修正、再送信 |
| 同一 lastmod 大量送信 | クロール統計の頻度低下 | 実際の更新日に基づき再生成 |
| canonical 先と sitemap の不一致 | 「重複」レポート増加 | sitemap を canonical 先のみに修正 |
| JS/CSS ブロック | URL 検査のレンダリング結果 | Disallow を撤回、Allow を追加 |
| 50,000URL 超過 | サイトマップ送信エラー | サイトマップインデックスに分割 |
自動化の実装
Next.js(App Router)
app/sitemap.ts で動的生成:
import type { MetadataRoute } from "next";
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const articles = await getArticles();
return articles.map(a => ({
url: `https://example.com/articles/${a.slug}`,
lastModified: a.updatedAt,
changeFreq: "weekly" as const,
}));
}
WordPress
Yoast SEO / Rank Math が自動生成。手動で追加 URL を含める必要は基本ありません。
大規模サイト
専用のサイトマップ生成サービス(XML-Sitemaps.com や Screaming Frog)でクロール後出力するのが確実。
動的サイトマップ生成のベストプラクティス
動的生成のメリットは「コンテンツ追加と同時にサイトマップが更新される」点です。一方、毎リクエスト全件DBクエリを叩くと負荷が高いため、次のような工夫が必要です。
- キャッシュ: 1時間〜24時間単位でキャッシュ、コンテンツ更新時に invalidate
- インクリメンタル生成: ビルド時に静的ファイルとして出力(Next.js の
generateSitemaps) - CDNエッジ配信: Cloudflare Workers などで地理分散配信
- HTTPヘッダ:
Last-Modifiedを返してクローラーの差分取得を許可
Cron による定期再生成パターン
# 毎日午前3時にサイトマップを再生成し、Google に ping 送信
0 3 * * * cd /var/www && node scripts/build-sitemap.js && \
curl "https://www.google.com/ping?sitemap=https://example.com/sitemap.xml"
なお、Googleの ping エンドポイントは2023年に廃止されたため、現在はGSCからの再送信もしくはGSC APIを推奨します。
→ 詳しくはSearch Console の使い方
構造化データとの併用
サイトマップから参照されるページは、構造化データ(JSON-LD)を入れておくとAI Overviewsや強調スニペットでの引用率が上がります。sitemap.xml が「ページの存在」を伝えるのに対し、JSON-LDは「ページの意味」を伝える役割で、両輪で機能します。
業界別の実装例
ECサイト(数万〜数十万URL)
sitemap-index.xml
├── sitemap-products-active.xml (在庫あり商品)
├── sitemap-products-out.xml (在庫切れ=noindex候補)
├── sitemap-categories.xml (カテゴリページ)
├── sitemap-brands.xml (ブランド一覧)
├── sitemap-articles.xml (ブログ・コラム)
└── sitemap-images.xml (商品画像)
robots.txt では Disallow: /search? のように検索クエリパラメータURLを除外し、無限クロールを防ぎます。
ニュースメディア
sitemap-index.xml
├── sitemap-news.xml (48時間以内、Googleニュース用)
├── sitemap-articles-archive.xml (アーカイブ記事)
└── sitemap-authors.xml (著者ページ)
ニュースサイトマップは独自仕様(<news:news> 要素)で、48時間以内の記事のみが対象です。
SaaS / コーポレートサイト
User-agent: *
Disallow: /app/ # ログイン後画面
Disallow: /api/
Disallow: /admin/
Allow: /
Sitemap: https://example.com/sitemap.xml
ログイン後アプリケーション領域は確実に Disallow し、マーケティングサイト領域だけクロールさせます。
メディア・ブログ
シンプルに記事一覧 + カテゴリ一覧をサイトマップに入れ、tag/ などの薄いページは noindex とサイトマップ除外を併用します。
業界別の優先設定マトリクス
| 業界 | sitemap 重点 | robots.txt 重点 | AIクローラー方針 |
|---|---|---|---|
| EC | 商品・カテゴリ | 検索パラメータDisallow | 流入優先で許可 |
| ニュース | 48hニュース | 会員専用Disallow | 学習NG・検索OK |
| SaaS | LP・ドキュメント | アプリ領域Disallow | ドキュメントは全許可 |
| 個人ブログ | 記事 | tag/Disallow | 全許可(露出最大化) |
| BtoB専門 | ホワイトペーパー | フォーム後ページDisallow | 学習NG・検索OK |
検証ツール
- Google Search Console のサイトマップレポート
- Bing Webmaster Tools のサイトマップレポート
- robots.txt Tester
実務でのチェックフロー
- 公開前:
curl https://example.com/robots.txtで内容を目視確認 - 公開直後: Search Console の URL検査で代表ページを取得テスト
- 1週間後: サイトマップレポートで「検出URL数」「インデックス済み」を確認
- 月次: クロール統計レポートで Googlebot の挙動を観察
- 不整合検出時: ステージング環境のrobots.txtが本番に紛れ込んでいないかチェック
→ 詳しくはSearch Console の使い方
よくある質問
Q1. sitemap.xmlを送信すると順位が上がりますか?
A. 直接の順位向上はありません。ただしクロール効率が上がり、新規記事のインデックスが早くなる効果があります。検索順位はコンテンツ品質・被リンク・E-E-A-Tなど別要素で決まります。
Q2. robots.txtがなくても大丈夫ですか?
A. 必須ではありませんが、設置を推奨します。なくても全クロール許可とみなされます。ただしサイトマップの所在を伝える Sitemap: 行を書ける利点があるため、空のrobots.txtを置く価値はあります。
Q3. Disallowしたページはインデックスされませんか?
A. クロールはされませんが、外部リンクからURL情報だけインデックスされる場合があります。完全に削除したい場合はnoindexを使います。Disallowとnoindexは併用すると逆に効かないため、検索結果から消したいなら noindex 単独が原則です。
Q4. sitemap.xmlは何度送信していいですか?
A. 何度でもOKです。大幅更新後は再送信を推奨します。ただし lastmod が変わっていないと「変更なし」とみなされて再クロールはされません。
Q5. AIクローラーをブロックすると検索順位は下がりますか?
A. 直接の影響はありません。GooglebotとAIクローラー(GPTBot等)は別物で、互いに独立しています。ただし Google-Extended を Disallow すると、Geminiなどの生成AI回答での引用機会は失います。
Q6. サイトマップにすべてのページを入れるべき?
A. 「インデックスさせたいページ」だけ入れるのが正解です。noindexページや低品質ページ、canonical先でないURLは入れません。これは品質シグナルにも関わるため、量より質で判断します。
→ 詳しくはcanonical タグとは
クロールバジェットとサイトマップの関係
クロールバジェットとは、Googlebot が一定期間内に1サイトに割り当てるクロール量のことです。中小規模サイト(〜数千URL)では意識する必要はほぼありませんが、数万URL以上の規模になると、クロールバジェットの最適化がインデックス率に直結します。サイトマップとrobots.txtは、このバジェットを「どこに集中投下するか」を制御する主要な手段です。
→ 詳しくは検索エンジンの仕組み
バジェット浪費の典型パターン
| 浪費要因 | 対処法 |
|---|---|
検索結果ページ(?q=...) | robots.txt で Disallow |
| カートやウィッシュリスト | robots.txt で Disallow |
| 無限スクロールの動的URL | canonical で正規化 |
重複パラメータ(?utm=...) | canonical で集約 |
| ファセットナビゲーション全展開 | meta robots noindex + Disallow |
バジェット最適化のステップ
- Search Console の「クロール統計」で総リクエスト数を把握
- ログ解析で Googlebot がどのURL群に時間を使っているかを可視化
- 不要URL群を特定し、robots.txt または canonical で制御
- sitemap.xml で「ここを優先してほしい」というシグナルを強化
- 1〜2週間後にクロール統計の変化を確認
→ 詳しくはSearch Console の使い方
モバイルファーストインデックスとサイトマップ
2024年以降、Googleは完全にモバイルファーストインデックスへ移行しました。これに伴い、サイトマップに記載するURLは「モバイル版URLそのもの」または「PC/モバイル統一URL(レスポンシブ)」が正解です。古い実装で m.example.com のような別ドメインを運用している場合は、モバイル版URLをサイトマップに記載する必要があります。
| 構成タイプ | サイトマップに書くURL |
|---|---|
| レスポンシブ(推奨) | 統一URLのみ |
| 動的配信(同一URLで出し分け) | 統一URLのみ |
| 別URL(m.example.com) | モバイル版URLを記載 |
レスポンシブ構成の場合は、追加の対応は不要です。canonical タグも統一URLを指していれば問題ありません。
→ 詳しくはcanonical タグとは
国際化サイト(hreflang)とサイトマップ
多言語サイトでは、サイトマップ内に hreflang 情報を埋め込むことで言語ターゲティングを明示できます。
<url>
<loc>https://example.com/ja/articles/seo</loc>
<xhtml:link rel="alternate" hreflang="ja" href="https://example.com/ja/articles/seo" />
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/articles/seo" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/articles/seo" />
</url>
x-default を必ず指定するのが定石です。これがないとGoogleが「どの言語をデフォルトとするか」を判断できず、地域ターゲティングが弱まります。
CDN・ホスティング別の設置場所
| 環境 | sitemap.xml 配置 | robots.txt 配置 |
|---|---|---|
| 自社サーバー(Nginx/Apache) | ドキュメントルート直下 | ドキュメントルート直下 |
| Vercel | public/sitemap.xml または動的生成 | public/robots.txt |
| Netlify | public/ または _redirects | public/robots.txt |
| Cloudflare Pages | public/ ディレクトリ | public/robots.txt |
| WordPress | プラグインが自動配置 | プラグインまたは手動 |
| Shopify | 自動生成(編集不可) | テーマで一部編集可能 |
ShopifyやBASEなどのSaaSプラットフォームは、サイトマップが自動生成・編集不可なケースが多く、その代わりにrobots.txtも限定的にしか触れません。プラットフォームの仕様確認が最優先です。
まとめ
sitemap.xml と robots.txt は、SEOおよびLLMOの最も基礎的な技術ファイルです。難しい概念ではありませんが、運用ミスがそのまま検索流入消失に直結するクリティカルな存在でもあります。本記事のポイントを再掲します。
- sitemap.xml は「来てほしい」、robots.txt は「来ないで」
<lastmod>だけは正確に保つ、他のタグはGoogleがほぼ無視- robots.txt はステージングと本番で必ず分離
- AI クローラーは学習用(GPTBot等)と検索用(OAI-SearchBot等)を分けて制御
- llms.txt との併用で生成AI時代の引用最適化に対応
- 大規模サイトはサイトマップインデックスで分割
- 失敗の99%は「ステージング設定の本番混入」「Disallow過剰」「sitemap-canonical 不整合」
→ 詳しくはSEO 完全ガイド / LLMO 完全ガイド
関連用語
関連記事
- 検索エンジンの仕組み|クローラー・インデックス・ランキングを図解
- Google Search Consoleの使い方|初心者の最初の30分
- canonicalタグとは?重複コンテンツ対策の基本
- llms.txtとは?AIクローラー向け新標準
- 構造化データ(JSON-LD)の書き方
- SEO 完全ガイド
- LLMO 完全ガイド
参考文献・出典
- sitemaps.org — サイトマップ仕様の公式サイト
- Google Search Central — sitemap.xml — Google公式
- Google Search Central — robots.txt — robots.txt仕様
- robotstxt.org — robots.txt仕様
- sitemaps.org — XML サイトマップ公式仕様
- OpenAI Platform — Bots — OpenAI クローラー仕様
- Anthropic — ClaudeBot — Anthropic クローラー仕様
関連用語
- E-E-A-T
E-E-A-Tとは、Googleがコンテンツ品質を評価する4つの観点「Experience(経験)・Expertise(専門性)・Authoritativeness(権威性)・Trustworthiness(信頼性)」のこと。SEOとLLMO両方で最重要の概念です。
- インデックス
インデックスとは、クローラーが集めたページをGoogleがデータベースに登録すること。インデックスされて初めて検索結果に表示される対象になります。「索引」とイメージすると分かりやすい用語です。
- hreflang
hreflangとは、多言語サイトで「このページは何語版か」「他の言語版はどこにあるか」を検索エンジンに伝えるタグ。日本人には日本語版、英語ユーザーには英語版を表示するために使います。
- llms.txt
llms.txtとは、サイト運営者がAIクローラーに「このサイトの重要な情報はここ」と伝えるためのMarkdownファイルの提案。2024年9月にJeremy Howard氏が提唱し、急速に普及しつつある新しい標準です。
- クエリ
クエリとは、ユーザーが実際に検索窓に入力した検索語のこと。SEOで使う「キーワード」と似ていますが、キーワードが事前に狙う言葉、クエリが実際に打たれた言葉、というニュアンスの違いがあります。
- クローラー
クローラーとは、Web上のページを自動巡回してデータを集めるプログラムのこと。Googleの「Googlebot」が代表例で、これに見つけてもらわないと検索結果に表示されません。
関連記事
最新記事
SEO カテゴリの他の記事
- FAQリッチリザルト廃止後のスキーマ優先順位を徹底見直し【2026年版】
- 指名検索はAI引用後に増えるのか——引用前後の実測データと再現条件
- PerplexityがRedditを46%引用する理由と日本語サイトの代替UGC戦略
- 直答ブロックの文字数とAI引用率の関係:実測データで見る最適解
- 見出し位置とAI引用率の相関を実測データで検証する
- 質問形式の見出しでAEO引用を獲得する実装ガイド
- 見出し直下 結論配置でAI引用率を上げるスニペット設計の全手法
- FAQPageスキーマ実装でAI引用率3倍:当社実測検証と再現条件
- AIに引用されやすい文章パターン実測分析:定義文・数値・構造の効果を検証
- 結論ファースト記事構成でAI引用率を上げる完全ガイド
- 構造化データの実装優先順位|AIO引用率を高めるスキーマ順序2026
- スキーマのネスト深さとAI引用率:当社検証で約40%向上した構成の実測レポート
- HowToスキーマ vs FAQPageスキーマ:AI引用率の実測比較と使い分け
- コンテンツ鮮度と更新頻度がAI引用率を左右する理由【GEO実践】
- FAQPage × Article × ItemList 三重スタックでAI引用率1.8倍|独自集計データで読む効果【2026年版】
- スキーマ AI引用率「効果なし」は本当か|Ahrefs 1885ページ研究への反論と効く条件
- Organization Schema でAI引用率を上げる設定・実装ガイド【2026年版】
- 構造化データ スキーマ種類別 AI引用率 比較 実測 2026|独自集計データで読む効果の差
- リスト記事の順位はAI引用シェアオブボイスを左右する——Peec AI実測データ(200K回分析)
- 著者情報 Person Schema でAI引用率を上げる実装ガイド【2026年版】
- 構造化データ実装前後でAI引用率はどう変わるか|実測データ比較【2026年版】
- GEOランディングページ AI引用 設計の完全ガイド|海外ローカライズ対応で引用率を高める実践手順【2026年版】
- Reddit AI引用 日本語コンテンツ戦略|海外ローカライズで引用を獲得する実践ガイド
- 著者ページ設計でE-E-A-Tを最大化する完全ガイド【2026年版】
- Gemini Focus Mode と情報源指定で検索意図に応える SEO 戦略【2026年版】
- AI Overview 段落最適化の完全手順|海外ローカライズ対応で引用率を高める実践ガイド
- JSON-LD構造化データがAI検索の理解を高める理由と実装ガイド
- エンティティ最適化とAI検索:日本語サイトが取り組むべき実践ガイド
- AI Overview FAQスキーマ vs 他スキーマ比較|AI引用確率を上げる選択ガイド
- AI検索 新規サイトのドメインパワーと引用の関係【2026年完全ガイド】
- 新規ドメインがAI Overviewで引用されない原因と突破戦略
- FAQスキーマでAI引用を増やす実装ガイド:JSON-LDから効果測定まで
- Perplexityに引用されるReddit戦略:アルゴリズムの仕組みと実践設計
- AI Overview引用率を上げる8つの実践的手法【2026年版】
- AI検索で引用されない原因7選と改善策【2026年最新】
- YouTubeタイトルの文字数は何文字がベスト?表示上限・デバイス別・SEO最適解2026年版
- YouTube タグの効果は 2026 年もある?最新アルゴリズムでの正しい使い方
- LLMO と SEO の違い完全マップ|KPI・計測・施策を全部対比【2026年版】
- トピッカルオーソリティの作り方
- タイトルタグとメタディスクリプションの書き方|CTRを上げる型
- 構造化データJSON-LDの書き方3ステップ|リッチリザルト&AI検索対策【2026年版】
- 検索意図の4分類(Know/Go/Do/Buy)と記事構成への活かし方【2026年完全版】
- Google Search Consoleの使い方|初心者の最初の30分
- ピラーページ&クラスター戦略5ステップ|SEO内部リンク設計【2026年版】
- SEO×LLMO効果測定の7指標|GSC・GA4・AI検索計測【2026年版】
- キーワード選定の基本|検索意図とロングテールの見つけ方【2026年完全版】
- 内部リンク・外部リンクの設計|SEOで効くつなぎ方
- 検索エンジンの仕組み|クローラー・インデックス・ランキングを図解
- 見出しタグ(h1/h2/h3)の正しい使い方
- E-E-A-Tとは?経験・専門性・権威性・信頼性の高め方
- Core Web Vitals入門|LCP・INP・CLSをやさしく解説
- コンテンツギャップ分析のやり方
- 競合サイト分析の手順|SEO/LLMO両軸で
- canonicalタグとは?重複コンテンツ対策の基本
- SEO×LLMOで勝つ記事構成テンプレート
- 既存記事リライトの優先度と手法
