mcpField
K
keyword-clustering

keyword-clustering

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

keyword-clustering について

keyword-clustering は、SEOやコンテンツ制作向けのスキルです。キーワードを検証し、トピックと検索意図で分類して、ダウンロード可能な Excel ワークブックを作成します。DataForSEO の指標と複数シートの集計で、キーワード調査を整理できます。

主な機能

  1. 01貼り付けやファイルのキーワードを解析
  2. 02DataForSEO で検索指標を取得
  3. 03検索ボリュームのない語句を除外
  4. 04トピックと検索意図で分類
  5. 05集計シート付き Excel を生成

活用シーン

  1. 01キーワード調査リストの整理
  2. 02検索ボリュームのある語句の抽出
  3. 03トピックと意図別のコンテンツ計画

インストール

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

$npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill keyword-clustering

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

詳細

キーワードクラスタリングスキル

生のキーワードリストを、構造化され検証済みのクラスターマップに変換し、ダウンロード可能な Excel ファイルとして提供します。


このスキルでできること

  1. 受け付けます:あらゆる形式の入力からキーワードを受け付けます
  2. 検証します:DataForSEO で各キーワードを検証し、検索ボリューム、KD、CPC を取得します
  3. 除外します:検索ボリュームが 0 または null のキーワード(検索されていないキーワード)を除外します
  4. クラスタリングします:検証済みのキーワードをトピックと検索意図で分類します
  5. 出力します:書式設定済みのダウンロード可能な Excel ファイルを出力します

ステップ 1:入力の処理

ユーザーが指定した入力形式を判別し、キーワードリストを抽出します。

貼り付けられたリスト

ユーザーがチャットにキーワードを直接貼り付けた場合(1 行に 1 つ、カンマ区切り、または番号付き)、各キーワードを抽出して整った配列にします。番号、箇条書き記号、余分な空白を取り除きます。

CSV または Excel のアップロード

ファイルは /mnt/user-data/uploads/ にあります。pandas で読み込みます:

import pandas as pd

# CSV
df = pd.read_csv('/mnt/user-data/uploads/filename.csv')

# Excel
df = pd.read_excel('/mnt/user-data/uploads/filename.xlsx')

# Identify keyword column: look for columns named 'keyword', 'keywords', 'query', 'term', 'search term'
# If ambiguous, pick the first text column or ask the user
keyword_candidates = ['keyword', 'keywords', 'query', 'term', 'search term']
keyword_col = next((col for col in df.columns if col.lower() in keyword_candidates), df.columns[0])
keywords = df[keyword_col].dropna().tolist()
Google Sheet の URL

web_fetch を使ってシートを CSV として取得します(ベース URL に /export?format=csv を追加)。pandas で解析します。

1 回の実行につき最大 500 キーワードです。 入力が 500 を超える場合はユーザーに伝え、最初の 500 件を処理するか、使用するサブセットを尋ねてください。


ステップ 2:DataForSEO による検証

dataforseo_labs_google_keyword_overview ツールを使ってすべてのキーワードを検証し、指標を取得します。API の制限内に収めるため、100 件ずつバッチ処理します。

キーワードごとに抽出する必須フィールド:

  • search_volume — 月間検索数(Google)
  • keyword_difficulty — KD スコア(0~100)

フィルタールール: search_volume が 0、null、または欠落しているキーワードを除外します。これらは検索されていないキーワードです。

開始時にユーザーへ次のように伝えます:「DataForSEO で [N] 件のキーワードを検証しています。しばらくかかる場合があります……」

検証後、次の内容を報告します:

  • 送信したキーワードの合計数
  • 条件を満たしたキーワード数(検索ボリュームあり)
  • 除外したキーワード数(検索ボリュームがゼロまたは null)— 除外されたものが分かるよう、一覧を表示します

DataForSEO が利用できない場合、またはエラーを返した場合: ユーザーに「DataForSEO の検証に失敗しました。検索ボリュームを検証できず、KD/CPC データも提供できませんが、リスト全体をクラスタリングします。」と伝えます。その後、未検証のリスト全体を使って処理を進め、出力では検索ボリューム、KD、CPC の列を省略します。


ステップ 3:クラスタリング

検証済みのキーワードのみを、次の 2 軸のアプローチでクラスタリングします。

軸 1:トピック別クラスタ

共通するトピックやテーマに基づいてキーワードをグループ化します。核となる概念を使ってクラスタ名を付けます。

ルール:

  • 各クラスタには、内容を表す2~5 語の名前を付けます(例:「メールマーケティングツール」、「Python データ分析」)
  • クラスタあたり3~8 個のキーワードを目指します。クラスタ数は少なくするより多くすることを優先します。トピックを 2 つの異なるサブトピックに合理的に分割できる場合は、分割してください
  • クラスタを過度に統合しないでください。異なる切り口、対象者、コンテンツ形式を狙うキーワードは、共通のルートワードがあっても別のクラスタに分けます
  • トピックの範囲が非常に広い場合は、必ずサブクラスタを作成します(例:「SEO – オンページ」、「SEO – テクニカル」のように親子の命名規則を使います)
  • 各クラスタに数値の Cluster ID(1、2、3…)を割り当てます
軸 2:検索意図

各キーワードに、標準的な 4 つの検索意図ラベルのいずれかを割り当てます。

ラベル意味シグナルとなる語句
Informationalユーザーは学習したいwhat is、how to、guide、tutorial、definition、examples
Navigationalユーザーは特定のサイトやブランドを探しているブランド名 + login/sign in/pricing
Commercialユーザーは選択肢を比較しているbest、top、vs、review、alternative、comparison
Transactionalユーザーは購入や行動を希望しているbuy、download、get、free trial、sign up、hire

検索意図が曖昧な場合は、キーワード全体から最も可能性の高いものを選びます。検索意図を空欄にしないでください。

クラスタリングのロジック

キーワードの意味を理解したうえで分類します。次の条件に当てはまるキーワードをグループ化します。

  • 同じ中心的なトピックや製品分野に関する
  • 同じコンテンツやサイトのセクションに掲載されるのが自然な
  • 同じオーディエンス段階を対象とする

単に共通の単語があるという理由だけでグループ化しないでください(例:「最高のメールマーケティングソフトウェア」と「メールマーケティングの統計」を、「メールマーケティング」という共通語だけを理由に同じクラスタに入れないでください。前者は商用、後者は情報提供を目的としており、異なるページに適しています)。


ステップ 4:Excel の出力を作成する

利用可能な場合は、最初に xlsx SKILL を読み込んでください。書式設定には openpyxl を使用します。

シート 1:「Keyword Clusters」(メインの出力)

列の順序:

列説明
Cluster ID数値のクラスタ番号
Cluster Name説明的なトピック名
Keyword検証済みのキーワード
Search VolumeDataForSEO による月間検索ボリューム
KDキーワード難易度(0~100)
Intent情報提供 / ナビゲーション / 商用 / 取引

並べ替え: Cluster ID の昇順、各クラスタ内では Search Volume の降順に並べます。

書式設定:

  • 1 行目:ヘッダーを太字、背景色を濃色(#1F2D40)、文字色を白、中央揃えにします
  • クラスタを視覚的に区別できるよう、クラスタグループごとに薄い行の網掛けを交互に適用します(1 つおきのクラスタグループを #F2F2F2 にします)
  • 先頭行を固定します
  • 列幅を自動調整します(最小 15、最大 40)
  • Search Volume の数値形式:#,##0
  • KD:整数
シート 2:「Cluster Summary」

クラスタごとに 1 行を記載します。

列説明
Cluster ID番号
Cluster Name名前
# Keywordsクラスタ内のキーワード数
Avg Search Volumeクラスタ内の平均検索ボリューム
Avg KD平均 KD
Dominant Intentクラスタ内で最も多いインテントのラベル
Top Keyword検索ボリュームが最も多いキーワード

Avg Search Volume の降順で並べ替え、最も有望なクラスタを先頭にします。

シート 3:「Dropped Keywords」

検証の段階で除外されたキーワードをすべて記載します。

列説明
Keyword除外されたキーワード
Reason「検索ボリュームがゼロ」または「データが返されなかった」

除外されたキーワードがない場合は、1 行だけ「キーワードは除外されませんでした。」と記載します。


ステップ 5:保存して納品する

# Save the workbook
output_path = '/mnt/user-data/outputs/keyword_clusters.xlsx'
wb.save(output_path)

数式を使用する場合は、続けて再計算を実行します。

python scripts/recalc.py /mnt/user-data/outputs/keyword_clusters.xlsx

present_files を使って、ファイルをユーザーに渡します。

ファイルを提示した後、チャットで簡単に次の内容をまとめます。

  • クラスタリングしたキーワードの合計数
  • 作成したクラスタ数
  • 除外したキーワード数
  • 平均検索ボリューム上位 3 クラスタ

エッジケース

  • 重複キーワード: 検証前に重複を削除します。重複があった場合は、その旨を伝えます。
  • 英語以外のキーワード: DataForSEO は多言語に対応しています。意味に基づいてクラスタリングします。言語を明記します。
  • すべてのキーワードが除外された場合: すべてのキーワードの検索ボリュームがゼロだったことをユーザーに伝えます。検証せずにクラスタリングすることを提案します。
  • キーワードが 1 つの場合: 有意義なクラスタリングには少なくとも 10 個のキーワードが必要であることをユーザーに伝えます。
  • 非常に多くの入力(200 個以上のキーワード): DataForSEO のバッチ処理に 2~3 分かかる場合があることを伝えます。そのまま自動的に処理を進めます。

コメント