First CH Apps / sitemap.xml 検証
sitemap.xml のURL(またはサイトのURL)を入れると、取得してXML構文を検証し、URL件数・lastmod の分布・サイトマップインデックスの展開を表示します。
サイトマップのURLを入れると、取得してXMLとして正しく読めるかを検証し、URLの件数・lastmod(更新日)の分布・サイトマップインデックスの中身(1階層)を表示します。サイトのURLだけを入れた場合は robots.txt の Sitemap 行から自動で探します。
<url><loc>https://example.com/search?q=shoes&page=2</loc></url>判定は「XML エラー」、警告に「行 3 エスケープされていない &」と「&page=2」が出ます。「&page=2」と書けば直ります。XMLパーサーはここで読み取りを止めるため、以降のURLは検索エンジンに届きません。
</urlset>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">2つ目の <urlset> の行(例では行 5)に「ルート要素が複数あります」が出ます。プラグインの出力を結合したときに起きやすく、2本に分けてサイトマップインデックスにまとめるのが正しい形です。
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">XMLとしては読めるので判定は「XML OK」のままですが、「名前空間が sitemaps.org の 0.9 ではありません」が出ます。名前空間は識別子なので、正しい値は http:// で始まる文字列そのものです。
<lastmod>2027-01-01</lastmod>
<lastmod>2026-10-01T10:00:00</lastmod>1行目は「lastmod が未来の日付です」(警告)、2行目は「時刻を書くならタイムゾーン(Z / +09:00)が必要です」(情報)になります。未来日は lastmod 全体が信用されなくなる典型例です。
上の表示は、このページの解析器に実際にその断片を通した結果です(2026-10-27 確認)。
サイトマップの構文が正しくても、中のURLが404になっていては意味がありません。HTTPステータス一括チェックにURLを貼ると、まとめて生死を確認できます。
HTTPステータス一括チェックへ →サイトマップの場所は robots.txt の `Sitemap:` 行で伝えられます。tools.first-ch.com の robots.txt ジェネレーターならフォームから生成できます(完全に端末内で処理され、ファイルは送信されません)。
robots.txt ジェネレーター(tools.first-ch.com)へ →送るもの: 入力されたURLだけ。当社サーバー(Cloudflare Workers)が、そのサイトマップ(と、必要なら /robots.txt、サイトマップインデックスなら子サイトマップ)を公開ページとして取得します。1回の検証で外部への取得は最大40本までに制限しています。
保存するもの: ありません。検証はリクエストの中だけで完結し、URLも解析結果もデータベース(KV/D1)へ書き込みません。処理が終わった時点でメモリから消えます。
返すもの: 解析結果だけです(件数・lastmod の分布・行番号つきの警告と、抽出した <loc> の先頭200件)。取得したXMLの原文は再配信しません。1ファイルから読み込むのは先頭1MBまで、解析にかけるのは1回の検証で合計60万字までです(無料枠のCPU上限に収めるため)。
この端末に保存するもの: 前回との比較のため、集計の数字だけ(サイトマップのURL・URL総数・lastmod 未設定率・子サイトマップ数・構文エラー数・日時)をブラウザの localStorage に保存します。サーバーへは送りません。最大30件で、結果欄の「この端末の記録を消す」でいつでも消せます。
注意: 取得は公開GETのみで、社内ネットワーク・localhost・プライベートIP宛のURLは受け付けません。ログイン後にしか見られないサイトマップは検証できません。
POST /sitemap-check/api/check に JSON({"url": "https://example.com/sitemap.xml"})またはフォームを送ると、同じ検証結果を JSON で返します。
sitemaps.org の上限は1ファイルあたり50,000URL・非圧縮50MBです。超える場合はサイトマップインデックスで分割します(インデックスの入れ子は認められていません)。
Googleは changefreq と priority を使いません。lastmod は「正確に運用されている場合に」クロールの優先度へ使われます——全URLに生成時刻を入れるような運用は、かえって無視される原因になります。
サイトマップに載せることはインデックス登録を保証しません。逆に、載っていないURLが検索結果に出ないわけでもありません(サイトマップは発見を助ける手段です)。