mcpField
M
market-finder

market-finder

github.com/nimblewayマーケティング・グロース6185 回インストール2 日前に更新
リポジトリ

market-finder について

Nimble を利用して企業を発見し、提供されたリストを新しい調査結果と照合する市場調査スキルです。地域別・SaaS 検索、情報補完、重複排除、評価、チェックポイントからの再開、調査深度の選択に対応します。

主な機能

  1. 01発見モードと監査モード
  2. 02地域別・SaaS 検索フロー
  3. 03企業情報の補完と検証
  4. 04エンティティの重複排除と評価
  5. 05チェックポイントと再開
  6. 06簡易・包括的な調査深度

活用シーン

  1. 01対象地域の企業の検索
  2. 02カテゴリ別の SaaS 製品の発見
  3. 03企業リストと新しい結果の照合
  4. 04以前の調査の再開

MCP 対応

セッション開始時に Nimble CLI または MCP トランスポートを選択できます。MCP リクエストの帰属情報はトランスポート層で処理されます。

インストール

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

$npx skills add https://github.com/nimbleway/agent-skills --skill market-finder

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

同梱ファイル

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

references/
audit-mode.md
memory-and-distribution.md
nimble-playbook.md
profile-and-onboarding.md
vertical-presets.md

詳細

Market Finder

Nimble Web Search Agents を活用した市場インテリジェンス。

ユーザーのリクエスト:$ARGUMENTS

コマンドを実行する前に、Claude Code の制約(シェル状態を保持しない、&/wait を使用しない、サブエージェントの権限、コミュニケーションスタイル)について、references/nimble-playbook.md を読んでください。


手順

ステップ 0:事前確認

references/nimble-playbook.md のトランスポート選択と標準の事前確認に従ってください。セッション開始時に CLI または MCP を選択し、標準の事前確認呼び出し(日付計算、今日の日付、プロフィール、メモリーインデックス)を並行して実行します。

同時に、以下も実行します。

  • mkdir -p ~/.nimble/memory/{reports,market-finder/checkpoints}
  • 既存のチェックポイントを確認:ls ~/.nimble/memory/market-finder/checkpoints/ 2>/dev/null

結果に基づいて、以下のように対応します。

  • CLI がない、または API キーが設定されていない → references/profile-and-onboarding.md を参照し、停止します
  • すべての nimble CLI 呼び出しに次のタグを付けます:nimble --client-source nimble-agent-skills <subcommand>。MCP リクエストはトランスポートレベルで帰属が記録されます。詳細は references/nimble-playbook.md を参照してください。
  • プロフィールがある場合 → 業界キーワードがあれば記録します。references/nimble-playbook.md のスマートな日付範囲設定を適用します。Market Finder の調整:クイック更新モードでは、エンリッチメントを省略し、新しい大都市圏の発見のみを行います。
  • プロフィールがない場合 → 問題ありません。Market Finder ではオンボーディングは不要です。ステップ 1 に進みます。
ステップ 1:リクエストを解析し、モードを判定する

$ARGUMENTS を解析し、業種、地域、条件、モード判定を抽出します。

モード判定

$ARGUMENTS に参照リストが含まれているか確認します。判定シグナルと解析ルールの詳細については、references/audit-mode.md を読んでください。

シグナルモード
Google Sheet の URL、CSV パス、または事業者が 3 件以上含まれるインラインリスト監査
明示的な監査を示す表現(「自分のリストを監査」「照合」「ギャップ分析」)監査
参照リストがない発見(デフォルト)

参照リストがあるものの意図が曖昧な場合は、次のように尋ねます:「リストを新たに発見した情報と照合して監査しますか。それとも、出発点として使いますか?」

監査を示す表現があるものの参照リストがない場合は、次のように尋ねます:「監査について言及されています。リスト(Google Sheet の URL、CSV ファイルのパス、またはインラインで貼り付けたリスト)をご提示ください。」参照リストを受け取るまで、監査モードで進めないでください。

フィールドの抽出
フィールド必須情報源
業種/分野はいユーザー入力(「歯科医」「SaaS CRM ツール」)
地域はい(SaaS を除く)ユーザー入力(「フロリダ州」「テキサス州オースティン」「全国」)
参照リスト監査モードのみGoogle Sheet の URL、CSV パス、またはインライン
選定条件任意ユーザー入力(「ウェブサイトが必須」「レビュー 10 件以上」)
出力の希望任意ユーザー入力(「簡単な要約」「完全なデータセット」)

$ARGUMENTS から業種と地域の両方が明確にわかる場合は、簡潔に確認して進めます:「フロリダ州の歯科医を探しています……」(監査モードでは「リストを、フロリダ州の歯科医の新たな発見情報と照合して監査しています……」)

情報が部分的、または曖昧な場合は、まとめて 1 つの質問をします(AskUserQuestion の最大 2 回の質問のうち 1 回として数えます)。

AskUserQuestion を使い、最大 3 つの質問をします。

  1. 分野 — 「どのような業種ですか?」(選択肢:医療、SaaS/ソフトウェア、レストラン/食品、法律/金融、自動車/住宅サービス、その他)
  2. 地域 — 「対象地域はどこですか?」(自由入力、または都市、州、地域、全国)
  3. 詳細度 — 「簡易スキャンと包括的な発見のどちらにしますか?」

$ARGUMENTS ですでに回答されている質問は省略します。

詳細度モード(各ステップの作業量を決定します):

詳細度発見エンリッチメント検証配布
簡易スキャンすべての情報源を 1 回確認省略(または上位 5 件のみ)上位 5 件のエンティティ提案する
包括的すべての情報源を確認し、フォールバック再試行も実施全件すべてのエンティティ提案する
ステップ 2:業種の検出とプリセットの読み込み

references/vertical-presets.md を読み、ユーザーの業種をプリセットのトリガーキーワードと照合します。

一致状況対応
明確に一致該当するプリセットの WSA ルーティングとクエリパターンを読み込みます
部分的に一致「これは Healthcare のようです。Healthcare のプリセットを使用しますか?」と確認します
一致なしユーザーのキーワードを使用して Custom プリセットを使います
SaaS に一致地理情報を使用しないパイプラインに切り替えます(地理タイル分割なし)

プリセットで指定されている検出 WSA とエンリッチメント WSA を記録します。

ステップ 3:地理的範囲の設定

SaaS 業種ではこのステップをスキップします(地理情報は不要です)。

地理的範囲タイル分割方法
市単一クエリ、タイル分割なし
大都市圏WSA ごとに単一クエリ
州州内の主要な大都市圏 5~10 か所ごとに分割
地域州ごとに分割し、さらに州ごとの主要な大都市圏ごとに分割
全国すべての州ごとに分割し、さらに州ごとの主要な大都市圏ごとに分割

API 呼び出し数を見積もります: metros * discovery_wsas * (1 + enrichment_ratio)。ここで enrichment_ratio は約 0.3 です。references/nimble-playbook.md の Scaled Execution パターンに従い、 実行ティア(individual / batch / multi-batch / confirmation gate)を選択します。

Estimated API calls: ~1,560 (50 states x 8 metros x 3 WSAs + enrichment)
This is a nationwide search. Proceed? [Y/n]

チェックポイント用に slug を導出します。小文字でハイフン区切りにし、業種と地理情報を含めます (例:dentists-florida、saas-crm-tools、hvac-nationwide)。

ステップ 4:既存のチェックポイントを確認する

references/memory-and-distribution.md の Checkpointing & Resume パターンに従います。

次を確認します:cat ~/.nimble/memory/market-finder/checkpoints/{slug}/discovery.json 2>/dev/null

  • チェックポイントが見つかった場合 -> 「以前の実行結果が見つかりました({N} 件のエンティティ、{date})。再開して不足分を補いますか、それとも最初から始めますか?」と提示します。
  • チェックポイントが見つからない場合 -> ステップ 5 に進みます
ステップ 5:WSA の検出と実行
5a:利用可能な WSA を検出する

選択した業種プリセットの対象ドメインごとに、現在利用できる WSA を検出します。

nimble extract:templates list --limit 100  # then filter items for "{domain}"

次の検索を同時に実行します(対象ドメインごとに 1 つ)。結果から:

  1. entity_type でフィルタリングします(検出には SERP、エンリッチメントには PDP/Profile)
  2. managed_by: "community" より managed_by: "nimble" を優先します
  3. ドメインに対応する WSA が見つからない場合は、nimble search のフォールバック対象として記録します
  4. いずれのドメインにも WSA が見つからない場合は、すべての大都市圏について nimble search に全面的にフォールバックします

次に、検出した各 WSA の入力パラメーターを検証します。

nimble extract:templates get --extract-template-name {discovered_name}

検出した WSA 名とパラメーターを、この実行の残りの間キャッシュします。

5b:地理的な検出(SaaS を除くすべて)

タイル分割計画内の大都市圏ごとに、検出した WSA を同時に実行します。

nimble extract:templates run --template {maps_wsa} --params '{...validated params...}'
nimble extract:templates run --template {yelp_wsa} --params '{...validated params...}'

ターシャリードメインの WSA は、プリセットに含まれており、かつプライマリーとセカンダリーの合計ユニーク結果がその大都市圏で 10 件未満の場合にのみ実行します。

ステップ 3 の推定呼び出し総数に基づき、references/nimble-playbook.md の Scaled Execution パターンに従って実行ティアを選択します。

5c:SaaS の検出(地理情報を使用しない)

SaaS では WSA の検出をスキップします。references/vertical-presets.md の SaaS プリセットで定義された 2 パスの検索クエリを実行します。

  • パス 1 -- 製品の検出: G2、Capterra、一般検索、ProductHunt、GitHub
  • パス 2 -- 財務情報の検出: Crunchbase、資金調達ニュース、市場の全体像

両方のパスを同時に実行します。パス 2 は重要です。これがないと、資金調達と事業の成長状況に関するデータが欠落したり、誤ったものになったりします。

5d:フォールバック

対象ドメインに対応する WSA が見つからない場合、または大都市圏で WSA の実行に失敗した場合:

nimble search --query "[type] in [metro]" --max-results 20 --search-depth lite

検出後:

  1. すべての結果を統合されたエンティティリストに解析します
  2. references/nimble-playbook.md の Entity Deduplication パターンに従って重複を排除します:place_id -> domain -> fuzzy name + city
  3. エンティティごとに source_count(そのエンティティが見つかった WSA/ソースの数)を記録します
  4. チェックポイントを保存します:~/.nimble/memory/market-finder/checkpoints/{slug}/discovery.json
Step 6: エンリッチメント

Step 5a で見つかった WSA を使用して、プリセットのエンリッチメント対象ドメインに対するエンリッチメントを実行します。ソース数が最も多いエンティティを優先します。references/nimble-playbook.md の Scaled Execution に従って実行階層を選択します。

nimble extract:templates run --template {enrichment_wsa} --params '{...validated params...}'

現在の業種のエンリッチメント対象に該当する WSA のみを実行します(references/vertical-presets.md を参照)。エンリッチメント WSA に必要な ID/URL がないエンティティはスキップします。

チェックポイントを保存します:~/.nimble/memory/market-finder/checkpoints/{slug}/enrichment.json

Step 6b: 財務情報の確認(SaaS 業種)

SaaS エンティティについては、報告する前に資金調達に関する主張を確認します。ソースなしで企業の資金調達段階を示してはいけません。

上位の結果に含まれる各エンティティについて(クイックスキャンでは上位 5 件、包括スキャンではすべて):

nimble search --query "{company name} funding raised series" --max-results 5 --search-depth lite
  • ソースが見つかった場合: ソースに記載された金額と日付を使用します
  • ソースが見つからない場合: 「非公開」と表示します。「初期段階」や「ブートストラップ」と推測してはいけません

このステップにより、未確認の財務情報を公開することを防ぎます。迅速に実行でき(エンティティごとに検索 1 回、ライトな深度)、ディレクトリサイトでは見つからない最近の資金調達ラウンドを検出できます。

Step 7: 重複排除とスコアリング

最終重複排除: references/nimble-playbook.md のエンティティ重複排除パターンに従い、すべてのフェーズにわたって最終的な重複排除を実行します。複数のソースのフィールドを統合し、エンティティごとに 1 つのレコードにまとめます。

発見の強度スコアリング(スキル固有で、業種によって異なります):

地理情報を扱う業種(医療、レストラン、法律、自動車/住宅、カスタム):

レベル基準
高3 件以上のソース、またはレビューが 50 件を超えるソースが 2 件以上
中2 件のソース、またはレビューが 10 件を超えるソースが 1 件
低ソースが 1 件のみで、レビューが少ないか、まったくない

SaaS 業種(レビュー数より資金調達とディレクトリ掲載状況が重視されます):

レベル基準
高1,000 万ドルを超える資金調達を確認済み、またはディレクトリソースが 3 件以上、または G2 レビューが 1,000 件以上
中1,000 万ドル未満の資金調達を確認済み、またはソースが 2 件、または G2 レビューが 100 件以上
低ソースが 1 件のみで、資金調達が確認されておらず、レビューが少ない

次の形式で表示します:*** High、** Medium、* Low

Step 7b: 監査比較(監査モードのみ)

探索モードではこのステップをスキップします。

完全な照合アルゴリズム、正規化ルール、出力テンプレートについては、references/audit-mode.md を読んでください。

  1. 参照リストを解析する — 形式(Google Sheet/CSV/インライン)を検出し、レコードを抽出して、references/audit-mode.md の解析ルールに従い {name, domain, city, state, phone} に正規化します
  2. 3 つの照合レイヤーを順番に実行する(ドメイン → 名前+都市 → 電話番号)。いずれかのレイヤーでエンティティが一致したら、その時点で終了します。一致を特定したレイヤーを記録します。
  3. すべてのエンティティを分類する:
    • matched — 参照リストと探索結果の両方に含まれる
    • discovered_only — 探索で見つかったが、参照リストには含まれない
    • reference_only — 参照リストには含まれるが、探索では見つからない
  4. カバレッジスコアを計算する — matched / reference_count × 100

分類した結果を使用して Step 8 に進みます。

Step 8: 出力
# Market Finder: [Business Type] in [Geography]
*Found [N] businesses | [Date] | Strength: [H] High, [M] Medium, [L] Low*

## Summary
- **Total discovered:** [N] unique businesses across [M] metros
- **Geographic breakdown:** [top 5 metros by count]
- **Source coverage:** [list each source used with entity counts]

## Top Results (High Strength)

| # | Name | Location | Rating | Reviews | Strength | Sources |
|---|------|----------|--------|---------|----------|---------|
| 1 | Acme Dental | Miami, FL | 4.8 | 312 | *** High | Maps, Yelp, BBB |
| 2 | WidgetCo Health | Orlando, FL | 4.6 | 89 | *** High | Maps, Yelp |
...

## All Results by Geography

### Miami, FL ([n] businesses)
[Table of businesses in this metro]

### Orlando, FL ([n] businesses)
[Table of businesses in this metro]
...

## What's Missing
[Data gaps: metros with low coverage, entities without websites, etc.]

SaaS 出力バリアント(業種が SaaS の場合は、「地域別の全結果」を階層別グループに置き換えます):

## Players by Tier

### Pure-Play (dedicated to this vertical)
| # | Name | Domain | Funding | Key Metric | Strength | Sources |
...

### Adjacent (feature overlap from larger platforms)
| # | Name | Domain | Funding | Key Metric | Strength | Sources |
...

### Open Source
| # | Name | Repo | Stars | Key Metric | Strength | Sources |
...

ソースリンクは必須です。 すべてのエンティティに、クリック可能なソース URL が少なくとも 1 つ必要です(Google Maps リンク、Yelp の掲載情報、ウェブサイト、BBB プロフィール、G2 ページ、または GitHub リポジトリ)。

監査出力バリアント(監査モードの場合は、上記の探索出力を置き換えます): references/audit-mode.md の監査出力テンプレートを使用します。主なセクションは、カバレッジスコアを含むサマリー、一致テーブル、発見のみのテーブル(拡大候補)、参照のみのテーブル(カバレッジの不足箇所)、および「これが意味すること」の解釈です。

Step 9: メモリに保存する

すべての書き込みを同時に実行します。

Discovery モード:

  • レポート -> ~/.nimble/memory/reports/market-finder-{slug}-{date}.md
  • エンティティデータ -> ~/.nimble/memory/market-finder/{slug}/entities.json

Audit モード:

  • レポート -> ~/.nimble/memory/reports/market-finder-audit-{slug}-{date}.md
  • 構造化データ -> ~/.nimble/memory/market-finder/{slug}/audit-{date}.json (一致メタデータを含む3つすべてのカテゴリ)

両方のモード:

  • プロファイル -> ~/.nimble/business-profile.json の last_runs.market-finder を更新します (プロファイルが存在する場合のみ)
  • references/memory-and-distribution.md にある Wiki 更新パターンに従います。影響を受けるすべてのエンティティファイルについて index.md の行を更新し、今回の実行内容を log.md に追記します。
  • チェックポイントを削除します(実行完了時)。実行が部分的な場合は保持します。
Step 10: 共有と配布

必ず配布を提案してください。この手順を省略しないでください。 コネクタの検出、共有フロー、ソースリンクの適用については、references/memory-and-distribution.md に従ってください。

Notion:結果の全テーブルを日付付きサブページとして作成します。 Slack:TL;DR と合計件数、およびエンティティ上位10件のみを共有します。

Step 11: フォローアップ

Discovery モードのフォローアップ:

  • 「#N の詳細を教えて」 -> そのエンティティの詳細をすべて表示します
  • 「[criteria] で絞り込んで」 -> 既存の結果を再度絞り込みます
  • 「[new geography] に範囲を広げて」 -> 都市圏を追加して Discovery を再実行します
  • 「CSV としてエクスポートして」 -> entities.json から CSV を生成します
  • 「すべてをエンリッチメントして」 -> エンリッチメントの対象を上位エンティティ以外にも広げます
  • 「既存のリストと照合して」 -> 今回の実行結果を使って Audit モードに切り替えます
  • 「問題ありません」 -> 完了です

Audit モードのフォローアップ:

  • 「発見のみの項目を、アウトリーチ用に CSV としてエクスポートしますか?」 -> 拡張候補の CSV を作成します
  • 「参照のみの不足項目を調査しますか?」 -> reference_only のエントリを対象に検索します
  • 「新たに発見した企業に company-deep-dive を実行しますか?」 -> discovered_only を対象に詳細調査します
  • 「地域を変えて再実行しますか?」 -> 同じリストを新しい地域で監査します
  • 「問題ありません」 -> 完了です

関連スキルの提案:

次のステップ:

  • リスト内の企業について全方位のプロフィールを作成するには、company-deep-dive を実行します
  • この市場の主要企業を比較するには、competitor-positioning を実行します
  • ソーシャル情報と地図を活用して近隣レベルで発見するには、local-places を実行します

サブエージェント戦略

大規模なジョブでは、nimble extract:templates batch が WSA の並列処理をサーバー側で実行します(references/nimble-playbook.md の「スケール実行」を参照)。サブエージェントは、バッチ入力の準備と結果の処理には役立ちますが、個々の WSA 呼び出しの実行には使用しません。

次の場合は、nimble-researcher エージェント(agents/nimble-researcher.md)を使用します。

  • 広範囲な地域の都市圏クエリリストを作成する場合(州ごとに1つのエージェント)
  • バッチ結果を並列で処理し、重複を除去する場合

サブエージェントの起動ルール(references/nimble-playbook.md)に従ってください(bypassPermissions、バッチ上限4、失敗時のフォールバック)。


エージェントチームモード(二重モード)

起動時に確認します:echo $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS

チームモード(フラグが設定されている場合):並列フェーズのためにチームメイトを起動します。

  • Discovery チームメイト: 都市圏バッチ全体で Discovery WSA をすべて実行します
  • Enrichment チームメイト: 上位エンティティに対して Enrichment WSA を実行します
  • リード(あなた):調整、範囲設定、重複除去、スコアリング、出力生成を行います

ソロモード(フラグが設定されていない場合):ステップ5〜8の標準的な逐次フローに従います。


エラー処理

標準的なエラー表(API キーの欠落、429、401、空の結果、抽出データの破損)については、references/nimble-playbook.md を参照してください。このスキル固有のエラーは以下のとおりです。

  • WSA が見つからない場合: 何も通知せずスキップし、他の発見元に依存します。利用できなかった WSA をログに記録します。
  • 検索で 500 エラー/タイムアウトが発生した場合: --focus フラグを付けずに一度再試行します。それでも失敗する場合は、クエリを簡略化して再試行します。失敗をログに記録しますが、検索カテゴリ全体はスキップしないでください。データがないより、一部でもあるほうがよいためです。
  • 大都市圏で結果が見つからない場合: 「[type] は [metro] で見つかりませんでした。次の大都市圏に進みます。」と伝えます。結果が空の大都市圏が1つあっても、ジョブ全体を中断しないでください。
  • 事業種別が曖昧な場合: 「[option A] と [option B] のどちらをお探しですか?」と尋ねます(例:「practice」は医療、歯科、法律のいずれかを指す可能性があります)。
  • SaaS と地域指定の場合: 選択したプリセットに地域別タイル分割がないものの、ユーザーが地域を指定した場合は、代わりに検索条件として指定することを提案します。
  • 参照リストの解析に失敗した場合: Google Sheet の抽出結果が不正なデータである場合、または CSV の形式が正しくない場合は、データをそのまま貼り付けるようユーザーに依頼します。
  • 参照リストが空の場合: 解析済みリストに有効なレコードが0件の場合は警告し、Discovery モードへの切り替えを提案します。
  • 一致が見つからない場合: 3つすべての照合レイヤーで一致が0件の場合は、その結果を報告します。カバレッジスコアが0%でも有効な情報です。

コメント