mcpField
S
seo-cluster

seo-cluster

github.com/agricidanielマーケティング・グロース23.3k6.9k 回インストール6 日前に更新
リポジトリ

seo-cluster について

seo-clusterは、テキストの類似度だけでなく、Googleの自然検索結果の重なりに基づいてキーワードをまとめ、SEOコンテンツ構成を設計するスキルです。ピラーとスポークの構造や内部リンク表を作り、インタラクティブなクラスター図も生成します。

主な機能

  1. 01シードキーワードの拡張
  2. 02SERPの重なりによるキーワード分類
  3. 03検索意図の分類とトピック構成の計画
  4. 04双方向の内部リンク表の生成
  5. 05インタラクティブなクラスター図の作成
  6. 06コンテンツ計画の実行とブリーフ作成

活用シーン

  1. 01トピックに沿ったピラー・スポーク記事の構築
  2. 02キーワードカニバリゼーションの抑制とページ割り当て
  3. 03コンテンツチーム向け記事ブリーフの作成
  4. 04制作状況とリンク整備の進捗確認

インストール

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

$npx skills add https://github.com/agricidaniel/claude-seo --skill seo-cluster

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
execution-workflow.md
hub-spoke-architecture.md
serp-overlap-methodology.md
templates/
cluster-map.html

詳細

セマンティックトピッククラスタリング

SERP の重複に基づく、コンテンツアーキテクチャ向けのキーワードクラスタリングです。テキストの類似性ではなく、Google の実際のランキング(上位 10 件の検索結果の重複)に基づいてキーワードをグループ化します。ハブ・アンド・スポーク型のコンテンツクラスターを設計し、内部リンクマトリクスを作成して、インタラクティブなクラスター マップを生成します。

スクリプト: プラグインのルートにある scripts/ ディレクトリに配置されています。


クイックリファレンス

コマンド実行内容
/seo cluster plan <seed-keyword>計画ワークフロー全体を実行します:拡張、クラスタリング、設計、可視化
/seo cluster plan --from strategy既存の /seo plan の出力をインポートします
/seo cluster execute計画を実行します:claude-blog でコンテンツを作成するか、ブリーフを出力します
/seo cluster mapインタラクティブなクラスターの可視化を再生成します

計画ワークフロー

ステップ 1:シードキーワードの拡張

WebSearch を使用して、シードキーワードを 30〜50 個のバリエーションに拡張します。

  1. 関連検索: シードを検索し、「関連検索」と「他のユーザーはこちらも検索」の項目を抽出します
  2. 関連する質問(PAA): SERP の結果から PAA の質問をすべて抽出します
  3. ロングテール修飾語: 「best」、「how to」、「vs」、「for beginners」、「tools」、「examples」、「guide」、「template」、「mistakes」、「checklist」など、一般的な修飾語を追加します
  4. 質問の抽出: who/what/when/where/why/how のバリエーションを生成します
  5. 検索意図の修飾語: 「pricing」、「review」、「alternative」、「comparison」、「free」、「top」など、商用目的の修飾語を追加します

重複排除: バリエーションを正規化し(小文字に変換し、冠詞を削除)、完全に重複する項目を削除します。 目標は、一意のキーワードバリエーションを 30〜50 個にすることです。30 個未満の場合は、 上位の PAA の質問をシードとして、2 回目の拡張を実行します。

ステップ 2:SERP の重複に基づくクラスタリング

これがこの手法の主な差別化要素です。アルゴリズムの詳細については、 references/serp-overlap-methodology.md を読み込んでください。

プロセス:

  1. 最初の検索意図の推定に基づいてキーワードをグループ化します(ペアごとの比較を減らします)
  2. グループ内の候補ペアごとに、両方のキーワードを WebSearch で検索します
  3. オーガニック検索結果の上位 10 件に含まれる共通 URL の数を数えます(広告、強調スニペット、PAA は除外します)
  4. 次のしきい値を適用します。
共通する検索結果関係対応
7〜10同じ記事1 つの対象ページに統合します
4〜6同じクラスター同じスポーククラスターの下にグループ化します
2〜3相互リンク隣接するクラスターに配置し、相互リンクを追加します
0〜1別々異なるクラスターに割り当てるか、除外します

最適化: キーワードが 40 個ある場合、すべてのペアを比較すると 780 回になります。代わりに、次のようにします。

  • 検索意図で事前にグループ化します(約 10 個ずつの 4 グループ=4 × 45=180 回)
  • グループ間の境界にあるキーワードのみを相互確認します
  • 同じヘッドタームのロングテールバリエーション同士のペアは省略します(同じクラスターと見なします)

DataForSEO の統合: DataForSEO MCP が利用可能な場合は、SERP データの取得に WebSearch の代わりに serp_organic_live_advanced を使用します。各バッチの前に "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_costs.py check serp_organic_live_advanced --count N を実行します。"status": "needs_approval" の場合は、費用の見積もりを表示してユーザーに確認します。 "status": "blocked" の場合は、WebSearch に切り替えます。

ステップ 3:検索意図の分類

各キーワードを、次の 4 つの検索意図カテゴリのいずれかに分類します。

検索意図シグナルクラスターに含めるか
情報収集how、what、why、guide、tutorial、learnはい
商用調査best、top、review、comparison、vs、alternativeはい
取引buy、price、discount、coupon、order、sign upはい
ナビゲーションブランド名、特定の製品名、loginいいえ(除外)

ナビゲーション目的のキーワードをクラスタリングから削除します。判断が難しいケースには フラグを付け、手動で確認します。キーワードの検索意図は複合することがあります(例:「best CRM software」は 商用目的と情報収集の両方です)。その場合は、優勢な検索意図に基づいて分類します。

ステップ 4:ハブ&スポークアーキテクチャ

詳細な仕様については、references/hub-spoke-architecture.md を読み込みます。

クラスター構造を設計します:

  1. 柱となるキーワードを選択します:検索ボリュームが最も大きく、検索意図が最も広く、他のキーワードとの SERP の重複が最も多いもの
  2. スポークをクラスターにグループ化します:各クラスターはサブトピック領域です(柱ごとに 2~5 クラスター)
  3. 投稿をクラスターに割り当てます:各クラスターには 2~4 件のスポーク投稿を配置します
  4. 投稿ごとにテンプレートを選択します:検索意図の分類に基づきます:
検索意図のパターンテンプレートの選択肢
情報収集(広範)ultimate-guide
情報収集(方法)how-to
情報収集(リスト)listicle
情報収集(概念)explainer
商用(比較)comparison
商用(評価)review
商用(ランキング)best-of
取引landing-page
  1. 目標文字数を設定します:

    • 柱ページ:2500~4000 語
    • スポーク投稿:1200~1800 語
  2. カニバリゼーションを確認します:同じ主要キーワードを共有する投稿が 2 件以上あってはなりません。SERP の重複が 7 以上の場合は、それらのキーワードを 1 件の投稿にまとめ、両方をターゲットにします。

ステップ 5:内部リンクマトリクス

双方向のリンク構造を設計します:

リンクの種類方向要件
スポークから柱spoke -> pillar必須(すべてのスポーク)
柱からスポークpillar -> spoke必須(すべてのスポーク)
スポーク間(クラスター内)spoke <-> spoke投稿ごとに 2~3 件のリンク
クラスター間spoke -> spoke (other cluster)投稿ごとに 0~1 件のリンク

ルール:

  • すべての投稿に、最低 3 件の内部リンクを向ける必要があります
  • 孤立ページを作成しないでください(すべての投稿に柱から 2 回のクリック以内で到達できること)
  • アンカーテキストには、ターゲットキーワードまたはその類義語を使用する必要があります(「ここをクリック」は不可)
  • リンクは本文内に配置します。ナビゲーションやサイドバーのみに配置してはいけません

リンクマトリクスを JSON 隣接リストとして生成します:

{
  "links": [
    { "from": "pillar", "to": "cluster-0-post-0", "type": "mandatory", "anchor": "keyword" },
    { "from": "cluster-0-post-0", "to": "pillar", "type": "mandatory", "anchor": "keyword" }
  ]
}
ステップ 6:インタラクティブなクラスターマップ

templates/cluster-map.html のテンプレートを使用して、cluster-map.html を生成します。

  1. テンプレートファイルを読み込みます
  2. クラスタープランから CLUSTER_DATA JSON オブジェクトを作成します:
    {
      pillar: { title, keyword, volume, template, wordCount, url },
      clusters: [{ name, color, posts: [{ title, keyword, volume, template, wordCount, url, status }] }],
      links: [{ from, to, type }],
      meta: { totalPosts, totalClusters, totalLinks, estimatedWords }
    }
    
  3. テンプレート内の CLUSTER_DATA プレースホルダーを実際の JSON に置き換えます
  4. 完成した HTML ファイルを出力ディレクトリに書き込みます
  5. ユーザーに次のように伝えます:「ブラウザーで cluster-map.html を開くと、インタラクティブなクラスター マップを確認できます。」

戦略のインポート

--from strategy を指定して呼び出された場合:

  1. 現在のディレクトリで最新の /seo plan の出力を探します(*SEO*Plan*、*strategy*、*content-strategy* に一致するファイルを検索します)
  2. Markdown テーブルを解析し、キーワード、ページの種類、コンテンツの柱、URL 構造を抽出します
  3. 抽出したデータを検証します:重複、キーワードの欠落、不完全な項目を確認します
  4. SERP データで補完します:抽出したキーワードの SERP 重複分析を実行します
  5. インポートしたキーワードを初期セットとして使用してクラスター計画を作成します(ステップ 1 はスキップします)

戦略ファイルが見つからない場合は、ユーザーに次のように促します:「現在のディレクトリに既存の SEO プランが見つかりません。まず /seo plan を実行するか、新しいクラスターを作成するためのシードキーワードを指定してください。」


実行ワークフロー

/seo cluster execute が呼び出された場合:

claude-blog の確認
Test: Does ~/.claude/skills/blog/SKILL.md exist?

claude-blog がインストールされている場合:

  1. 完全なアルゴリズムについては、references/execution-workflow.md を読み込みます
  2. 現在のディレクトリから cluster-plan.json を読み込みます
  3. 再開状態を確認します:出力ディレクトリをスキャンし、すでに書き込まれている記事を確認します
  4. 優先順位に従って実行します:まずピラー記事、次にボリュームの多い順でスポーク記事を処理します
  5. 各記事について、クラスターのコンテキストを含めて blog-write スキルを呼び出します:
    • クラスター内での役割(ピラーまたはスポーク)
    • クラスター内の位置(クラスターのインデックス、記事のインデックス)
    • ターゲットキーワードと関連キーワード
    • テンプレートの種類と目標文字数
    • 含める内部リンク(アンカーテキスト付き)
    • 今後の記事から受け取るリンク(プレースホルダーマーカー)
  6. 各記事の執筆後、過去の記事をスキャンしてバックリンクのプレースホルダーを探し、 新しい記事の URL を挿入します
  7. すべての記事の執筆後、クラスターのスコアカードを生成します

claude-blog がインストールされていない場合:

  1. クラスタープラン内の各記事について、詳細なコンテンツブリーフを生成します
  2. 各ブリーフには以下を含めます:
    • タイトルとメタディスクリプション
    • 主要キーワードと関連キーワード
    • テンプレートの種類と推奨構成(H2/H3 のアウトライン)
    • 目標文字数
    • 含める内部リンク(アンカーテキスト付き)
    • 網羅すべき重要なポイント
    • 差別化する競合ページ
  3. ブリーフを個別の Markdown ファイルとして cluster-briefs/ ディレクトリに保存します
  4. ユーザーに次のように伝えます:「コンテンツを自動作成するには、claude-blog をインストールしてください。ブリーフは cluster-briefs/ に保存されています。」

クラスタースコアカード

実行後の品質レポートです。/seo cluster execute の後に自動で実行されるほか、 出力ディレクトリの分析を通じて任意のタイミングで実行できます。

指標目標測定方法
網羅率100%執筆済み記事数 / 計画記事数
リンク密度記事あたり 3 件以上記事ごとの内部リンク数をカウント
孤立ページ0被リンクが 1 件未満の記事
カニバリゼーション競合 0 件主要キーワードの重複を確認
画像数記事あたり 1 枚以上画像が 1 枚以上ある記事
ピラーリンク100%すべてのスポークがピラーにリンクし、その逆も同様
クロスリンク80% 以上推奨されるスポーク間リンクの実装率
コンテンツの欠落0スキップまたは未完了となった計画記事

マップの再生成

/seo cluster map を実行した場合:

  1. 現在のディレクトリから cluster-plan.json を読み込みます
  2. 出力ディレクトリをスキャンし、記事のステータス(計画済みか執筆済みか)を更新します
  3. 更新されたステータスで cluster-map.html を再生成します
  4. 執筆済み記事数と計画記事数、リンクの完了率を報告します

出力ファイル

すべての出力は現在の作業ディレクトリに保存されます:

ファイル説明
cluster-plan.json機械可読なクラスタープラン(全データ)
cluster-plan.md人間が読めるクラスタープランの概要
cluster-map.htmlインタラクティブな SVG ビジュアライゼーション
cluster-briefs/コンテンツブリーフ(claude-blog がない場合)
cluster-scorecard.md実行後の品質レポート

スキル間の連携

スキル関係
seo-planインポート元:戦略のインポート時に seo-plan の出力を読み込みます
seo-content品質チェック:生成コンテンツの E-E-A-T 検証
seo-schemaスキーママークアップ:クラスターのページに Article、BreadcrumbList、ItemList を適用
seo-dataforseoデータソース:DataForSEO MCP が利用可能な場合の SERP データ
seo-googleレポート作成:クラスタープランとスコアカードの PDF レポートを生成

クラスターの計画または実行が完了したら、次のように提案します: 「PDF レポートを生成しますか? /seo google report を使用してください」


エラー処理

エラー原因解決方法
"No seed keyword provided"引数がありませんシードキーワードまたは URL をユーザーに尋ねます
"Insufficient keyword variants"キーワードの拡張で 15 個未満しか得られませんでしたPAA の質問を使って 2 回目の拡張を実行します
"SERP data unavailable"WebSearch と DataForSEO の両方で失敗しています30 秒後に再試行します。解決しない場合は、警告を添えて検索意図のみでクラスタリングします
"No strategy file found"--from strategy が指定されていますが、プランがありません先に /seo plan を実行するようユーザーに案内します
"cluster-plan.json not found"プランニングせずに実行しました先に /seo cluster plan を実行するようユーザーに案内します
"claude-blog not installed"ブログスキルなしで実行しようとしました代わりにコンテンツブリーフを生成し、インストールを提案します
"DataForSEO budget exceeded"コストチェックで「blocked」が返されましたWebSearch に切り替え、ユーザーに通知します
"Duplicate primary keywords"カニバリゼーションが検出されました該当する投稿を統合するか、キーワードを再割り当てします
"Orphan page detected"投稿への内部リンクがありません同じクラスター内で最も近いページからリンクを追加します
"Resume state corrupted"プランと出力が一致しません出力ディレクトリをスキャンして状態を再構築します

セキュリティ

  • すべての URL は "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run render_page.py <url> --mode auto を介して取得されます(url_safety による SPA 対応の SSRF 保護)
  • 認証情報は保存も送信もされません
  • 出力ファイルに PII や API キーは含まれません
  • DataForSEO のコストチェックはすべての API 呼び出し前に実行されます

FLOW フレームワークとの統合

プロンプトに沿ったキーワード調査とギャップ分析には、/seo flow find [url|topic] を使用します。FLOW の 5 つの find ステージ用プロンプトは、SERP の重複に基づくクラスタリング手法を、体系的な探索プロンプトで補完します。

コメント