mcpField
G
geo-query-finder

geo-query-finder

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

geo-query-finder について

ChatGPT検索結果でブランドが表示されるロングテールクエリを調べるスキルです。DataForSEOのインデックス済み言及を手掛かりにし、OpenAIのウェブ検索モデルで追加のクエリを検証します。

主な機能

  1. 01DataForSEOでインデックス済みのAI言及を検索
  2. 02ブランド固有のロングテールクエリを生成
  3. 03ChatGPTのウェブ検索でクエリを検証
  4. 04ブランドへの言及と文脈を確認
  5. 05クエリ結果と不足領域を要約

活用シーン

  1. 01ブランドのGEO可視性を評価する
  2. 02ブランドが言及されるクエリを見つける
  3. 03インデックス済み言及と未検証領域を比較する
  4. 04ChatGPT検索でのブランド露出を追跡する

インストール

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

$npx skills add https://github.com/openclaudia/openclaudia-skills --skill geo-query-finder

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

詳細

GEO クエリファインダー

指定したブランドに言及する ChatGPT の検索クエリを特定します。ChatGPT のウェブ検索対応モデルでロングテールクエリをテストし、どのクエリでブランドが表示されるかを報告します。

トリガー

ユーザーが「[ブランド] のクエリを見つけて」「GEO の可視性を確認して」「[ブランド] に言及するクエリはどれ?」「geo query finder」「AI の言及を見つけて」「[ブランド] で ChatGPT のクエリをテストして」などと依頼した場合に使用します。

使用方法

/geo-query-finder <brand_name> [--industry <industry>] [--features <feature1,feature2,...>] [--queries <custom_query1;custom_query2;...>]

例:

  • /geo-query-finder "Acme Corp" — ブランドを自動調査してクエリを生成します
  • /geo-query-finder "Acme Corp" --industry "smart TV OS" --features "white-label,voice-control,OEM licensing"
  • /geo-query-finder "Acme Corp" --queries "best regulatory AI;eCTD validation tool;pharma compliance software"

仕組み

ステップ 0:インデックス済みの LLM による言及を取得する(DataForSEO)— 最初に実行してください

推測に基づくクエリを生成する前に、DataForSEO にブランドのドメインに関するインデックス済みの言及があるか確認します。あれば、OpenAI の利用料をかけて推測する代わりに、1 回の呼び出しで検索ボリューム付きの実際のクエリを取得できます。

認証には環境変数 DATAFORSEO_LOGIN / DATAFORSEO_PASSWORD を使用します。

AUTH=$(printf '%s' "$DATAFORSEO_LOGIN:$DATAFORSEO_PASSWORD" | base64)
# Google AI Overview citations
curl -s -X POST "https://api.dataforseo.com/v3/ai_optimization/llm_mentions/search/live" \
  -H "Authorization: Basic $AUTH" -H "Content-Type: application/json" \
  -d '[{"target":[{"domain":"<DOMAIN>","search_filter":"include","include_subdomains":true}],"platform":"google","limit":700}]'
# ChatGPT citations (substitute "platform":"chat_gpt")

重要なフラグ:

  • "include_subdomains": true — これを指定しないと、apex ドメインの結果は 0 件になります(www.X は別のドメインとして扱われます)。
  • グローバルな結果を取得するには location_code を省略します。米国に限定する場合のみ "location_code": 2840 を追加します。
  • platform の選択肢:"google"(AI Overview)、"chat_gpt"。このデータセットでは Perplexity はサポートされていません。

各 items[] から抽出する情報:

  • question — ブランドが引用された実際の検索クエリ
  • ai_search_volume — 月間 AI 検索ボリューム(優先順位付けに使用)
  • sources[] — domain がブランドと一致するエントリには、引用された正確な URL が含まれます
  • location_code、language_code、model_name — 地域/ロケール別の内訳に使用します
  • answer — LLM の回答テキスト(文脈を確認するため)

判断基準:

  • クエリが 20 件以上返された場合 → ステップ 1~4 はすべて省略します。これらを実際の言及として報告し、ステップ 5 ではギャップ分析に重点を置きます(ボリューム順に並べ、/guides/ と /tools/ のような URL セクション別に成果が高いものを見つけます)。
  • クエリが 20 件未満の場合 → ステップ 2 のシード入力として使います(DataForSEO がすでに確認したクエリのテーマからバリエーションを生成します)。その後、ギャップに対してのみステップ 3~4 を実行します。
  • クエリが 0 件の場合 → そのドメインは AI に引用されていません。代替手段として、従来どおりステップ 1~5 の推測に基づくテストを進めます。
ステップ 1:ブランドを調査する

--industry または --features が指定されていない場合は、ウェブ検索を使って以下を把握します。

  • ブランドの事業内容/業界
  • 競合他社に対する主な差別化要因
  • 競合他社にはない独自の機能
ステップ 2:ロングテールクエリを生成する

以下のカテゴリから 15~20 件のロングテールクエリを生成します。

  1. 機能に特化したクエリ(このブランドだけが持つ独自の機能)
  2. B2B/意思決定者向けクエリ(消費者ではなく購入者によるクエリ)
  3. 問題解決型クエリ(「Y を使わずに X する方法」)
  4. 比較/代替案のクエリ(「[主要プレイヤー] の代替」)
  5. ユースケースに特化したクエリ(ブランドが強みを発揮するニッチなシナリオ)

主要プレイヤーが常に優位になるような汎用的なクエリは避けます。

ステップ 3:OpenAI Search API で ChatGPT に問い合わせる

ウェブ検索を有効にした OpenAI の gpt-4o-search-preview モデルを使用します。

OPENAI_API_KEY from environment variable
import json, os, urllib.request, ssl

OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]

data = json.dumps({
    "model": "gpt-4o-search-preview",
    "web_search_options": {"search_context_size": "medium"},
    "messages": [{"role": "user", "content": "<query>"}],
    "max_tokens": 1000
}).encode()

req = urllib.request.Request(
    "https://api.openai.com/v1/chat/completions",
    data=data,
    headers={
        "Authorization": f"Bearer {OPENAI_API_KEY}",
        "Content-Type": "application/json"
    }
)

resp = urllib.request.urlopen(req, context=ssl.create_default_context(), timeout=45)
result = json.loads(resp.read())
answer = result["choices"][0]["message"]["content"]
ステップ 4:言及を確認する

各クエリについて、ChatGPT の回答にブランド名(または既知の別名)が含まれているか確認します。

  • 大文字と小文字を区別せずに照合します
  • 表記の違い(スペース、ピリオド、ハイフンの有無)も確認します
  • 言及されている場合は、その前後の文脈を抽出します(言及箇所の前後 200 文字)
  • 掲載位置を記録します(最も推奨されているか、多数の候補の一つとして列挙されているか、さりげなく言及されているか)
ステップ 5:結果を報告する

以下の要約テーブルを出力します。

## GEO Query Finder Results: [Brand Name]

### Mentioned (X/N queries)
| Query | Position | Context |
|-------|----------|---------|
| ... | #1 | "Brand is the leading..." |

### Not Mentioned (Y/N queries)
| Query | What ChatGPT Recommended Instead |
|-------|----------------------------------|
| ... | Competitor A, Competitor B |

### Recommendations
- Queries where brand is ALREADY mentioned: create more authoritative content to maintain/improve position
- Queries where brand is NOT mentioned but SHOULD be: these are content gaps — create targeted pages
- Queries to AVOID: too generic, dominated by big players, not worth the effort

レート制限

  • レート制限を回避するため、クエリを 1~2 秒の間隔を空けて順番に実行します
  • OpenAI API では、クエリ 1 件あたり約 0.01 ドルかかります
  • デフォルト:1 回の実行につき 15~20 件(約 0.15~0.20 ドル)

メモ

  • 結果は、ウェブ検索を有効にした ChatGPT(リアルタイムのウェブ検索結果に基づく)のものです
  • 検索結果の鮮度により、実行ごとに結果が多少異なる場合があります
  • これは ChatGPT に特化したテストです。Gemini や Copilot では異なる結果になることがあります
  • 継続的にモニタリングするには、定期的に実行して、時間の経過に伴う可視性の変化を追跡することを検討してください

コメント