mcpField
S
seo-sitemap

seo-sitemap

github.com/serankingマーケティング・グロース19176 回インストール18 週間前に更新
リポジトリ

seo-sitemap について

サイトの XML サイトマップを最新の SE Ranking 監査と照合し、欠落・孤立・エラーのある URL を見つけるスキルです。サイトマップのメタデータも確認し、データがない場合や不完全な場合は Firecrawl で URL を検出できます。

主な機能

  1. 01サイトマップ URL と監査ページの照合
  2. 02欠落ページと孤立ページの検出
  3. 03サイトマップ内のエラー項目の特定
  4. 04lastmod とサイトマップの検証
  5. 05Firecrawl による任意の URL 検出

活用シーン

  1. 01監査後のサイトマップ網羅状況の確認
  2. 02サイトマップにないページの特定
  3. 03内部リンクのないサイトマップ URL の調査
  4. 04サイト再編後のサイトマップ変更の確認

MCP 対応

監査とドメインページのデータ取得に、接続済みの SE Ranking MCP サーバーが必要です。サイトマップと照合し、Firecrawl MCP サーバーによる URL 検出も任意で利用できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/seranking/seo-skills --skill seo-sitemap

インストール後、Claude Code で/seo-sitemapを入力して読み込まれたか確認します。

詳細

出力例:examples/seo-sitemap-notion-so-20260514/SITEMAP.md

サイトマップ分析

ドメインの XML サイトマップを、最新の SE Ranking ウェブサイト監査と比較します。サイトマップが示す内容と、クローラーが実際に検出した内容を、両方の方向から明らかにします。

前提条件

  • SE Ranking MCP サーバーが接続されていること。
  • Claude の WebFetch ツールが利用可能であること。
  • ユーザーから対象ドメインが指定されること。任意で、/sitemap.xml 以外の場合はサイトマップ URL も指定できます(最初に robots.txt からの自動検出を試みます)。
  • 前提となるスキル: このドメインに対する seo-technical-audit(または以前の SE Ranking 監査)。既存の監査がない場合、このスキルでは比較対象がありません。先に seo-technical-audit を実行してください。

プロセス

  1. 対象を検証し、監査を確認する

    • ドメインを正規化します。
    • DATA_listAudits → このドメインの監査が存在することを確認します。存在しない場合は、「まず seo-technical-audit を実行してください。このスキルではサイトマップをその監査のクロール結果と比較します。」という明確なメッセージを表示します。
    • デフォルトでは、最新の done 監査を使用します。
    • Firecrawl の利用可否を確認します。 mcp__firecrawl-mcp__firecrawl_map が利用可能な場合、サイトマップが見つからない場合や疑わしい場合に、モード 2(クロールによる URL 検出)を選択できます。費用は検出 URL あたり約 0.5 Firecrawl クレジットで、上限は 500 URL(約 250 クレジット)です。Firecrawl を利用できない場合、スキルはモード 1 のみで実行し、モード 2 が必要だった場合はその旨を記載します。ユーザーは --no-firecrawl を指定して、Firecrawl が利用可能な場合でもモード 1 を強制できます(クレジットを節約できますが、サイトマップが壊れている場合は孤立ページや未検出ページの分析ができなくなります)。
  2. URL リストを作成する WebFetch(サイトマップ)+ mcp__firecrawl-mcp__firecrawl_map(任意のモード 2)

    • モード 1(デフォルト)。 https://{domain}/sitemap.xml を試します。404 の場合は /robots.txt を取得し、Sitemap: ディレクティブを探します。サイトマップインデックスの場合は、各子サイトマップを再帰的に取得します。サイトマップから正規 URL リストを作成します。
    • モード 2 の開始条件。 (a)サイトマップにアクセスできない、(b)サイトマップに含まれる URL が監査の DATA_getCrawledPages 件数の 10% 未満、または(c)ユーザーが明示的に --discover を指定した場合、モード 2 に切り替えます。モード 2 の実行前に、開始条件と費用の見積もりを必ずユーザーに提示します。
    • モード 2 の実行(Firecrawl が必要):firecrawl_map(url=domain, limit=500) を呼び出します。応答は、ホームページと内部リンクから Firecrawl が検出できた URL のリストです。ステップ 6 では、このリストを「サイトマップ相当」として使用します。差分の処理は同じで、宣言されたサイトマップ URL の代わりに検出された URL を使います。
    • モード 2 が必要だが Firecrawl を利用できない場合: モード 1 で取得できたサイトマップデータ(空の場合もあります)を使って続行します。SITEMAP.md に次の内容を明記します:Mode-2 (Firecrawl URL discovery) needed but Firecrawl not installed — sitemap-vs-audit diffs run on partial data only.
  3. 監査でクロールされたページを取得する DATA_getCrawledPages

    • クローラーが検出したすべての URL と、ステータスコード、インデックス登録可否フラグ、深さを取得します。
  4. ドメインのページを取得する DATA_getDomainPages

    • ドメインレベルのページ一覧を取得します(場合によっては監査のクロール範囲より広範囲です)。
  5. 孤立ページに関する問題を取得する DATA_getAuditPagesByIssue

    • 孤立ページおよび深さに関する問題で絞り込みます。これらはサイトマップ分析に関連します。
  6. 4 つの差分を計算する

    • サイトマップにない URL: DATA_getCrawledPages に含まれる(ステータス 200、インデックス登録可能)ものの、サイトマップには含まれていない URL です。追加が必要な可能性があります。
    • サイトマップ上の孤立ページ: サイトマップには含まれているものの、クローラーが内部リンク経由で見つけられなかった URL です(DATA_getAuditPagesByIssue の孤立フラグと照合)。サイトマップだけがそれらを参照しています。内部リンクを追加するべきか調査してください。
    • サイトマップ上のリンク切れ: 監査のクロールで 200 以外のステータスが返されたサイトマップ URL です。サイトマップから削除するか、URL を修正してください。
    • lastmod の問題: (a)すべての <lastmod> の日付が同一(遅延生成)、または(b)ページが変更されたにもかかわらず、<lastmod> が監査でのページのクロール日より古い(古い情報)サイトマップ項目です。
  7. 検証

    • ファイルごとの URL 数が 50,000 未満(サイトマッププロトコルの上限)であること。超過している場合は警告します。
    • サイトマップが robots.txt で参照されていること。
    • エンコーディング:各 URL が XML の形式に適合していること(アンパサンドがエスケープされているなど)。
    • HTTPS の一貫性:サイトマップ URL が正規 URL のプロトコルと一致していること。
    • Google が現在も読み取る唯一の任意タグは <lastmod> です。 検証してください(ステップ 6)。<priority> と <changefreq> は Google によって何年も前から明示的に無視されています(Google のサイトマップに関するドキュメントには「Google は priority と changefreq の値を無視します」とあります)。これらは検証しないでください。存在する場合は、ユーザーが削除してサイトマップを縮小できる、重要度の低いノイズとして警告します。
  8. SITEMAP.md をまとめる

出力形式

seo-sitemap-{target-slug}-{YYYYMMDD}/ フォルダーを作成します。内容は次のとおりです。

seo-sitemap-{target-slug}-{YYYYMMDD}/
├── SITEMAP.md                       (synthesised report — primary deliverable)
├── recommended-sitemap-diff.md      (proposed changes: add X, remove Y — load-bearing artefact engineering applies to sitemap.xml)
└── evidence/
    └── source-data.md               (consolidated raw step output: fetched sitemap content, Firecrawl-discovered URLs if Mode-2 ran, audit's crawled-pages list, the four diffs (missing/orphans/broken/lastmod-issues) — preserved for reproducibility)

トップレベルには SITEMAP.md と recommended-sitemap-diff.md を配置します。7 つのステップの生データファイル(01-sitemap-raw、01b-firecrawl-discovered、02-audit-pages、03-missing-from-sitemap、04-orphans-from-sitemap、05-broken-entries、06-lastmod-issues)は、evidence/source-data.md という 1 つのドキュメントに統合し、各ステップのセクション見出しはそのまま維持します。差分を再現したい読者は、7 つのファイルではなく、この 1 つのファイルですべての生データを確認できます。

SITEMAP.md は次の形式にします。

# Sitemap Analysis: {domain}

> Sitemap pulled {YYYY-MM-DD} · Audit reference {audit-date}

## Mode

- **Mode-1 (sitemap-vs-audit):** {ran / skipped — no sitemap reachable}
- **Mode-2 (Firecrawl URL discovery):** {ran with {n} URLs / not triggered / triggered but Firecrawl not installed}

## Health summary

| Metric | Value | Status |
|---|---|---|
| Sitemap URLs (Mode-1) | {n} | — |
| Discovered URLs (Mode-2, if ran) | {n} | — |
| Audit crawled URLs (200, indexable) | {n} | — |
| Missing from sitemap (probable adds) | {n} | {🔴 if >5%} |
| Orphans from sitemap (probable cuts or link-ins) | {n} | {🟡 if >5} |
| Broken sitemap entries (non-200) | {n} | {🔴 if >0} |
| Lastmod issues | {n} | {🟡 if uniform; 🔴 if stale} |

## Recommended changes

### Add to sitemap ({n} URLs)
- {URL} — found by crawler at depth {n}, status 200, indexable.
- ...

### Remove from sitemap ({n} URLs)
- {URL} — returns {status code}.
- ...

### Investigate (orphan from sitemap, {n} URLs)
- {URL} — in sitemap but not reachable via internal links. Either link from {suggested parent} or remove from sitemap.
- ...

### Fix lastmod ({n} URLs)
- {URL} — lastmod is {date} but the audit crawled the page on {date} and detected changes since.
- ...

## Validation

- Total URL count: {n} ({✓ under 50k limit | ✗ exceeds — split into sitemap-of-sitemaps})
- Referenced in robots.txt: {✓/✗}
- HTTPS consistency: {✓/✗}
- Encoding: {✓/✗}

## Apply
- See `recommended-sitemap-diff.md` for the proposed sitemap.xml changes.
- After applying, re-run `seo-technical-audit` to refresh the crawl, then re-run this skill to verify.

ヒント

  • まず seo-technical-audit を実行してください。監査がなければ、このスキルで比較する対象がありません。
  • ページ一覧が変わるデプロイ(新しいコンテンツ、ページの削除、URL の再構成)の後に再実行してください。
  • 大規模なサイトでは、サイトマップインデックスからの取得対象が多くなることがあります。このスキルはすべての子サイトマップを再帰的に取得します。子サイトマップが 50 個以上あるサイトでは、実行時間の大半を取得処理が占めますが、クレジットコストには影響しません。
  • <priority> と <changefreq> は役に立たないシグナルです。Google はどちらも明示的に無視しています。これらの調整に時間をかけないでください。サイトマップ生成ツールが出力している場合、そのバイト数は純粋なオーバーヘッドです。<lastmod> は引き続き読み取られるため、正確な状態を保ってください。
  • 「孤立ページを調査」のリストは、最も効果の高い指摘事項になることがよくあります。存在するのにリンクされていないページは、通常、意図せず孤立しているため、内部リンクを 2、3 個追加するだけで再び見つけられるようになります。
  • seo-drift と組み合わせると、サイトマップの構成(URL 数、lastmod のパターン)の経時的な変化を追跡できます。
  • コスト:通常、SE Ranking クレジットは約 5~10 クレジットです(主に getCrawledPages と getDomainPages の呼び出し)。モード 2 では Firecrawl クレジットが発見した URL 1 件あたり約 0.5 クレジット追加されるため、実行前に見積もりを提示してください。

コメント