サイトマップ作成ツール
URLを入力すると、クローラーが内部リンクをたどり(最大200ページ)、検索エンジンがインデックスできるページだけ — ステータス200、noindex なし、canonical が自分自身 — を残して、ダウンロードやコピーができるシンプルなXMLサイトマップを書き出します。サイトがすでに公開しているサイトマップも読み取り、両方向のギャップを表示します: サイトマップに載っていないインデックス可能ページと、クロールが到達しなかったサイトマップのURL。lastmod、priority、changefreq は捏造しません。24時間を超えて保存されるものはありません。
クロールは当社サーバーで実行されます: 1秒に1リクエスト、robots.txt を遵守、JavaScript は実行しません。保持するのは開始URLとこの要約のみで、24時間後に削除されます。
仕組み
1. 当社のクローラー(InsighthackerzBot、1秒に1リクエスト、JavaScriptなし)はまず robots.txt とそこに宣言されたサイトマップを取得し、指定したURLから内部リンクを幅優先でたどります — 同一ホストのみ、www ありなしは同じサイトとして扱います 2. 上限: 1回あたり50・100・200ページ、1ページ2 MB、1リクエスト15秒、1URLあたりリダイレクト5回。robots.txt が当クローラーのUAに禁止するURLはスキップして計数し、nofollow 指定のページは取得しますがそのリンクはたどりません 3. すべてのHTMLページは on-page SEOチェッカーと同じエンジンを通ります: title、description、H1、canonical、robots ディレクティブ、語数、alt のない画像 — 警告と失敗はページごとに保持し、HTMLは保持しません 4. クロール中に切れていると判明した内部リンク(4xx、5xx、タイムアウト)はリンク元ページとともに一覧化。外部リンクは HEAD のみで確認(サーバーが HEAD を拒否した場合は GET を1回)、1回あたり最大100件、nofollow リンクは除外 5. 結果は当社サーバー上の1ジョブです: 開始URLと要約のみを保持し、24時間後に失効し、他の用途には一切使いません 6. サイトマップの規則: 200を返し、noindex(meta または X-Robots-Tag)がなく、canonical が未指定か自分自身を指すURLを掲載。リダイレクト、エラー、canonical が別の場所を指すページは除外。出力は <loc> のみ、アルファベット順
XMLサイトマップと、このツールが何を含めるかについて
XMLサイトマップは、検索エンジンに知らせたいURLのリストです。ページを上位表示させるものでも、インデックスを強制するものでもありません。深い階層のページ、新しいページ、内部リンクの少ないページなど、クローラーが遅れて、あるいはまったく到達できないかもしれないページを見つける助けになるヒントです。Google は <loc> 要素を読み、信頼できる場合は <lastmod> も読みます。<priority> と <changefreq> は無視すると公言しています。このツールが <loc> だけを書くのは、クロールではページの最終更新日を知ることができず、推測すればその項目が無価値になるからです。
本当の問題はどのページをサイトマップに含めるかで、生成されたサイトマップの多くはここで間違えます。サイトマップには正規のインデックス可能なURLだけを載せ、それ以外は載せるべきではありません。リダイレクトする、エラーを返す、noindex が付いている、別のURLを canonical として宣言しているURLは、Google に矛盾したシグナルを送ります — サイトマップは「インデックスせよ」、ページは「するな」。このツールはまさにその4つのフィルターを適用し、どのページがなぜ除外されたかを示すので、ダウンロードするリストは検索エンジンが受け入れるリストになります。
サイト既存のサイトマップとの比較は、新しいファイルそのものより役立つことがよくあります。公開済みサイトマップに載っていないインデックス可能ページは、たいていCMSが忘れたページです — 後から追加したカテゴリ、ブログ外のランディングページなど。クロールが到達しなかったサイトマップのURLは、リンクされていない(サイトマップだけが知っている孤立ページ)か、消えたページです。200ページのクロールでは大きなサイト全体は見えません。どちらのリストも監査ではなくサンプルとして扱ってください。
頻繁に更新されるサイトでは、生成したサイトマップはアップロードした翌日には古くなります。長期的に正しい答えはCMSやフレームワーク自身が生成するサイトマップです。このツールは単発の用途 — 静的サイト、移行時の確認、管理していないクライアントのサイト — と、クローラーがあなたのリンクをたどったとき実際に何を見つけるかを確かめるためのものです。
よくある質問
- 生成されたサイトマップにあるページが含まれないのはなぜですか?
- 理由は4つで、いずれも意図的です: ページが200以外を返した、noindex が付いている、canonical が別のURLを指している、またはページ上限内でクロールが到達しなかった。監査タブはクロールしたすべてのページをステータスとディレクティブ付きで一覧表示します。クローラーが見落としたと考える前にそちらを確認してください。
- なぜ lastmod がないのですか?
- クロールではページがいつ変更されたか分からないからです — HTTPの Last-Modified ヘッダーはほとんどのサイトで欠けているか誤っており、日付をでっち上げれば Google はあなたのサイトマップを信用しなくなります。Google は lastmod が一貫して正確な場合にのみ使います。CMSが日付を知っているなら、CMS自身のサイトマップがそれを持つべきです。このファイルは知っているふりをしません。
- Google は priority と changefreq を使いますか?
- いいえ。Google は2015年から両方を無視すると述べており、2023年にドキュメントから削除しました。Bing もほぼ同じことを言っています。ファイルを正直で小さく保つため、ここでは省いています。
- 「既存のサイトマップにない」とはどういう意味ですか?
- クローラーは robots.txt が宣言するサイトマップ(なければ /sitemap.xml)を取得し、見つけたページと比較しました。インデックス可能なのにサイトマップに載っていないページがそこに表示されます — 通常はサイトマップ生成後に追加されたページや、CMSが含めないセクションです。逆のリスト、クロールが到達しなかったサイトマップのURLは、孤立したか削除されたページを示します。
- サイトに200ページ以上あります。どうなりますか?
- クロールは上限で停止し、そのことを表示します。生成されたファイルは完全なサイトマップではなくサンプルです — 構造の確認には役立ちますが、アップロード用ではありません。大規模サイトには、CMSが生成し、1ファイル最大50,000 URL・50 MBに分割してサイトマップインデックスをその上に置いたサイトマップが必要です。
- ファイルはどこに置けばいいですか?
- 慣例ではサイトのルート(/sitemap.xml)で、置き場所は掲載するURLと同じホストである必要があります。次に robots.txt に Sitemap: 行で宣言し、Search Console に一度送信します。その後は Google が自身のスケジュールで再取得します。
- クロールは私のサイトにとって安全ですか?
- 1秒に1リクエスト、InsighthackerzBot と名乗り、robots.txt に従い、最大200ページ・各2 MBまでしか読まず、JavaScript は実行しません。この負荷に耐えられないサイトは、サイトマップより大きな問題を抱えています。締め出したい場合は robots.txt で InsighthackerzBot を禁止してください。クロールは最初のページで止まります。