company-research
browserbase/skills
Browserbase Search API を活用し、「計画→調査→統合」というプロセスに従って、理想的な顧客プロファイルに合致する企業を特定・調査し、スコア付きレポートの作成やCSV形式でのエクスポートを行います。
...すべて拡張します企業調査
販売先となる企業を発見し、詳細に調査します。発見にはBrowserbase Search APIを使用し、詳細な情報充実化には「計画→調査→統合」というパターンを採用し、スコア付き調査レポートとCSVを出力します。
必要条件: BROWSERBASE_API_KEY 環境変数および browse CLIがインストールされていること。
初回実行時の設定:初回実行時には、承認を求めるプロンプトが表示されます browse cloud fetch, browse cloud search, cat, mkdir, sedなどの承認を求められます。各項目で「はい、かつ『browse cloud fetch:*』については今後確認しない」 (または同等の選択肢) を選択すると、そのセッション中は自動的に承認されます。恒久的に承認するには、これらを ~/.claude/settings.json に permissions.allow:
"Bash(browse:*)", "Bash(bunx:*)", "Bash(bun:*)", "Bash(node:*)",
"Bash(cat:*)", "Bash(mkdir:*)", "Bash(sed:*)", "Bash(head:*)", "Bash(tr:*)", "Bash(rm:*)"
パスルール:すべてのBashコマンドでは、常に完全なリテラルパスを使用してください — ~ や $HOME を使用しないでください(どちらも「シェル展開構文」の承認プロンプトを引き起こします))。ホームディレクトリは一度だけ解決し、どこでもそれを使用してください。サブエージェントのプロンプトを作成する際は、 {SKILL_DIR} を完全なリテラルパスに置き換えてください。
出力ディレクトリ:すべての研究成果は ~/Desktop/{company_slug}_research_{YYYY-MM-DD}/に保存されます。このディレクトリには、調査対象の各企業ごとに1つの .md 調査対象企業ごとに1つのファイルと、最終的な .csvが含まれます。ユーザーには、スコア付けされたスプレッドシートと完全な調査ファイルの両方がデスクトップに保存されます。
重要 — ツールの制限事項(メインエージェントおよびすべてのサブエージェントに適用):
- すべてのWeb検索:
browse cloud searchを使用してください。WebSearchは絶対に使用しないでください。 - すべてのページコンテンツ抽出:
node {SKILL_DIR}/scripts/extract_page.mjs "を使用してください。このスクリプトは" browse cloud fetch --output経由で取得し、タイトル+メタタグ+表示されている本文テキストを解析し、取得に失敗した場合や、JSでレンダリングされた内容が薄い場合は自動的にbrowse get markdownに自動的に切り替えます。手動でbrowse cloud fetch | sedパイプラインを絶対に手動で作成しないでください — メタタグが削除され、stdoutのJSONエンベロープが解析されません。WebFetchは絶対に使用しないでください。 - すべての研究成果:サブエージェントは企業ごとに1つのMarkdownファイルを作成し、
{OUTPUT_DIR}/{company-slug}.mdbashのheredocを使用して記述します。Writeツールやpython3 -cを使用してはなりません。ファイル形式についてはreferences/example-research.mdを参照してください。 - レポートおよびCSVの生成:
node {SKILL_DIR}/scripts/compile_report.mjs {OUTPUT_DIR} --openを使用してください。— 1つのステップでHTMLレポートとCSVを生成し、ブラウザで概要を表示します。 - URLの重複排除:
node {SKILL_DIR}/scripts/list_urls.mjs /tmpを使用してください。 - サブエージェントはBashツールのみを使用する必要があります。他のツールは一切使用できません。
- メインエージェントは、生のディスカバリ JSON バッチファイルを絶対に読み取らないでください。重複排除には
list_urls.mjsを使用してください。
重要 — 誤検知防止ルール(メインエージェントおよびすべてのサブエージェントに適用):
- 決して
product_description,industry、あるいはtarget_audienceを推測してはならない。これらは外観上の要素に過ぎず、企業が何を販売しているかについては何も示さない。 - ユーザーの独自のICPがターゲットの説明に漏れ出さないようにしてください。ターゲットが何をしているのかわからない場合は、
Unknown— 対象を自身のICPに当てはめてはなりません。 product_description必ず、extract_page.mjs出力(TITLE、META_DESCRIPTION、OG_DESCRIPTION、見出し、または本文)から具体的なフレーズを引用するか、言い換える必要があります。これらのフィールドのいずれからも認識可能な製品ステートメントが得られない場合は、Unknown — homepage content not accessible.- もし
product_descriptionがUnknownの場合、大文字icp_fit_scoreを3に制限し、icp_fit_reasoningをInsufficient evidence — homepage returned no readable content.
CRITICAL — 権限確認のプロンプトを最小限に抑える:
- サブエージェントは、連鎖したheredocを使用して、すべてのファイル書き込みを単一のBashコマンドにまとめなければなりません。1つのBashコマンド=1回の権限確認プロンプトです。
- すべての検索およびすべての取得を、
&&チェーン処理を使用して、すべての検索およびすべての取得を単一のBash呼び出しにまとめます。
パイプラインの概要
以下の5つの手順を順番に実行してください。手順を飛ばしたり、順序を変えたりしないでください。
- 企業調査 — ユーザーの会社、製品、および販売先について深く理解する
- 調査の深度の選択 — 対象となる企業の数に基づいて、調査の深度を選択する
- 発見 — 多様な検索クエリを使用してターゲット企業を見つける
- 詳細調査とスコアリング — 各企業を調査し、ICP(理想的な顧客プロファイル)との適合度を評価する
- レポートとCSV — 調査結果を提示し、スコア付け済みのCSVを作成する
ステップ0:出力ディレクトリの設定
開始する前に、ユーザーのデスクトップに出力ディレクトリを作成してください:
OUTPUT_DIR=~/Desktop/{company_slug}_research_{YYYY-MM-DD}
mkdir -p "$OUTPUT_DIR"
「 {company_slug} をユーザーの会社名(小文字、ハイフン区切り)に、 {YYYY-MM-DD} を本日の日付に置き換えてください。 {OUTPUT_DIR} (リテラルパスとして指定し、 ~)を指定して、すべてのサブエージェントのプロンプトに渡し、調査ファイルがそこに書き込まれるようにします。
また、以前の実行で生成されたディスカバリーバッチファイルを削除します:
rm -f /tmp/company_discovery_batch_*.json
ステップ1:企業に関する詳細な調査
これが最も重要なステップです。その後のすべての作業の質は、ユーザーの会社について深く理解しているかどうかにかかっています。
ユーザーに会社名またはURLを尋ねる
既存のプロファイルがあるか確認します:
- 以下のファイルをリストアップします
{SKILL_DIR}/profiles/(無視example.json) - 一致するプロフィールが存在する場合 → それを読み込み、ユーザーに「{researched_at}から貴社のプロフィールを取得しました。内容はまだ正確ですか?」と提示します。はいの場合 → ステップ2へスキップします。
- プロフィールが存在しない場合 → 以下の詳細調査に進む。
- 以下のファイルをリストアップします
「計画→調査→統合」のパターンに従い、ユーザーの会社について徹底的な調査を実行する。 サブ質問のテンプレートおよび調査方法については、
references/research-patterns.mdを参照してください。調査の主な手順:
- 検索:
browse cloud search "{company name}" --num-results 10 - ホームページの取得:
node {SKILL_DIR}/scripts/extract_page.mjs "{company website}" - サイトマップを介してサイトページを特定する(
/aboutや/customers):browse cloud fetch --allow-redirects "{company website}/sitemap.xml"のようなパスをハードコーディングしないでください — サイトマップは規模が小さく、未加工のbrowse cloud fetchは問題ありません- キーワードを含むURLをスキャンする:
customer,case-stud,pricing,about,use-case,industry,solution - 必要に応じて、
/llms.txtページの説明文も取得する - 最も関連性の高いURLを3~5件選び、以下で抽出する
extract_page.mjs(生データではなくbrowse cloud fetch)
- 外部のコンテキストや競合他社を検索する
- 信頼度レベルを付けて調査結果を蓄積する
プロファイルに統合する: 企業、製品、既存顧客、競合他社、ユースケース。 ICPやサブ業種は含めないこと — それらは実行ごとの判断事項である。
- 検索:
プロファイルをユーザーに提示し、確認を求める。確認が取れるまで次の段階に進まないこと。
確認済みのプロファイルを
{SKILL_DIR}/profiles/{company-slug}.jsonチェックボックスを使用して
AskUserQuestionチェックボックスを使用して明確化のための質問を行う:- 「どのセグメントをターゲットとしていますか?」(企業調査から導き出された選択肢付き)
- 「企業の成長段階は?」 — スタートアップ、中堅企業、大企業、すべて
- 「対象企業数/調査の深さ?」 — 簡易(
100社)、詳細(50)、詳細(約25) - これが唯一のユーザー操作です。これ以降は、結果が準備できるまでバックグラウンドで実行されます。
ステップ2:調査深度モードの選択
| モード | 企業ごとの調査 | 最適な用途 |
|---|---|---|
quick |
ホームページ + 1~2回の検索 | 約100社、広範囲な調査 |
deep |
2~3つのサブ質問、5~8回のツール活用 | 約50社、徹底的な調査 |
deeper |
4~5つのサブ質問、10~15回のツール利用 | 約25社、徹底的な調査 |
ステップ3:ディスカバリー
計算式: ceil(requested_companies / 35) 必要な検索クエリ。フィルタリングで通常50~70%が除外されるため、約2~3倍の量を調査しておく。
以下のパターンで検索クエリを生成する:
- 業界 + 企業のステージ + 地域(「フィンテック スタートアップ シリーズA ベイエリア」)
- 技術スタック + ユースケース(「ウェブスクレイピングにSeleniumを使用している企業」)
- 競合他社との近接性(「{ICP内の既知の企業}の代替案」)
- バイヤーペルソナ + 課題(「ブラウザ自動化に苦戦しているエンジニアリングチーム」)
手順:
- すべてのディスカバリー・サブエージェントを一度に起動します(1つのメッセージにつき最大約6つ)。各サブエージェントは、単一のBashコマンドでクエリを実行します:
browse cloud search "{query}" --num-results 25 --output /tmp/company_discovery_batch_{N}.json - すべてのウェーブが完了した後、重複を排除:
node {SKILL_DIR}/scripts/list_urls.mjs /tmp - URLリストをフィルタリングし、以下を除外:
- ブログ記事、ニュース記事(globenewswire.com、techcrunch.com など)
- ディレクトリ/アグリゲーター(tracxn.com、crunchbase.com、g2.comなど)
- ユーザー自身の競合他社および既存顧客(プロフィールから) 企業のホームページのみを残します。
サブエージェントのプロンプトテンプレートおよびウェーブ管理については references/workflow.md を参照してください。
ステップ 4: 詳細な調査とスコアリング
サブエージェントを起動して、企業を並行して調査します。 references/workflow.md を参照してください。詳細な調査方法については references/research-patterns.md を参照して、調査方法論の全容を確認してください。
プロセス:
フィルタリングされたURLをサブエージェントごとにグループ分けする(クイック:約10件、ディープ:約5件、ディーパー:約2~3件)
すべてのエンリッチメントサブエージェントを一度に起動する(1メッセージあたり最大約6つ)
各サブエージェントはBashのみを使用 — 各企業について:
フェーズA — 計画(クイックモードではスキップ): ICPおよびエンリッチメントフィールドに基づき、2~5つのサブ質問に分解する。
フェーズB — リサーチループ: ページを検索・取得し、調査結果を抽出する。ステップごとの予算を遵守する(クイック:2~3、ディープ:5~8、ディーパー:10~15)。
フェーズC — 統合: 証拠に基づいてICP適合度を1~10で評価する。調査結果からエンリッチメントフィールドを埋める。
サブエージェントは、連鎖したheredocsを使用して、単一のBash呼び出しで全てのMarkdownファイルを書き出し、
{OUTPUT_DIR}/すべてのサブエージェントが完了した後、ステップ5に進む
重要:確認済みのICP記述を、すべてのサブエージェントのプロンプトにそのまま含める。完全なリテラル {OUTPUT_DIR} パスを渡すこと。
ステップ 5:レポートと CSV
HTMLレポートとCSVを生成します(ブラウザで概要が自動的に開きます):
node {SKILL_DIR}/scripts/compile_report.mjs {OUTPUT_DIR} --openこれにより以下が生成されます:
{OUTPUT_DIR}/index.html— スコア付きテーブルを含む概要ページ(ブラウザで開きます){OUTPUT_DIR}/companies/*.html— 各企業の個別ページ(概要ページからリンクされています){OUTPUT_DIR}/results.csv— スプレッドシートやCRMにインポート可能なスコア付きスプレッドシート
チャットでも概要を表示:
## Company Research Complete
- **Total companies researched**: {count}
- **Depth mode**: {mode}
- **Score distribution**:
- Strong fit (8-10): {count}
- Partial fit (5-7): {count}
- Weak fit (1-4): {count}
- **Report opened in browser**: ~/Desktop/{company_slug}_research_{date}/index.html
- ICPスコア順に並べ替えた上位企業をテーブルで表示:
| Company | Score | Product | Industry | Fit Reasoning |
|---------|-------|---------|----------|---------------|
| Acme | 9 | AI inventory management | E-commerce SaaS | Series A, uses Selenium, expanding to EU |
- 上位3~5社については、調査の概要(主な発見点、適合理由、アプローチすべき具体的な切り口)を簡潔に表示します。
特定の企業についてさらに詳しく調査すること、スコアリング基準を調整すること、あるいは異なるクエリでディスカバリーを再実行することを提案する。
---
name: company-research
description: Discovers and researches companies matching an ideal customer profile, using Browserbase Search API and a Plan→Research→Synthesize pattern to produce scored reports and CSV exports.
license: MIT
---
# Company Research
Discover and deeply research companies to sell to. Uses Browserbase Search API for discovery and a Plan→Research→Synthesize pattern for deep enrichment — outputting a scored research report and CSV.
**Required**: `BROWSERBASE_API_KEY` env var and `browse` CLI installed.
**First-run setup**: On the first run you'll be prompted to approve `browse cloud fetch`, `browse cloud search`, `cat`, `mkdir`, `sed`, etc. Select **"Yes, and don't ask again for: browse cloud fetch:\*"** (or equivalent) for each to auto-approve for the session. To permanently approve, add these to your `~/.claude/settings.json` under `permissions.allow`:
```json
"Bash(browse:*)", "Bash(bunx:*)", "Bash(bun:*)", "Bash(node:*)",
"Bash(cat:*)", "Bash(mkdir:*)", "Bash(sed:*)", "Bash(head:*)", "Bash(tr:*)", "Bash(rm:*)"
```
**Path rules**: Always use the full literal path in all Bash commands — NOT `~` or `$HOME` (both trigger "shell expansion syntax" approval prompts). Resolve the home directory once and use it everywhere. When constructing subagent prompts, replace `{SKILL_DIR}` with the full literal path.
**Output directory**: All research output goes to `~/Desktop/{company_slug}_research_{YYYY-MM-DD}/`. This directory contains one `.md` file per researched company plus a final `.csv`. The user gets both the scored spreadsheet and the full research files on their Desktop.
**CRITICAL — Tool restrictions (applies to main agent AND all subagents)**:
- All web searches: use `browse cloud search`. NEVER use WebSearch.
- All page content extraction: use `node {SKILL_DIR}/scripts/extract_page.mjs "<url>"`. This script fetches via `browse cloud fetch --output`, parses title + meta tags + visible body text, and automatically falls back to `browse get markdown` when fetch fails or returns thin JS-rendered content. NEVER hand-roll a `browse cloud fetch | sed` pipeline — it strips meta tags and doesn't parse the stdout JSON envelope. NEVER use WebFetch.
- All research output: subagents write **one markdown file per company** to `{OUTPUT_DIR}/{company-slug}.md` using bash heredoc. NEVER use the Write tool or `python3 -c`. See `references/example-research.md` for the file format.
- Report + CSV compilation: use `node {SKILL_DIR}/scripts/compile_report.mjs {OUTPUT_DIR} --open` — generates HTML report and CSV in one step, opens overview in browser.
- URL deduplication: use `node {SKILL_DIR}/scripts/list_urls.mjs /tmp` after discovery.
- **Subagents must use ONLY the Bash tool. No other tools allowed.**
- **Main agent NEVER reads raw discovery JSON batch files.** Use `list_urls.mjs` for dedup.
**CRITICAL — Anti-hallucination rules (applies to main agent AND all subagents)**:
- NEVER infer `product_description`, `industry`, or `target_audience` from a site's fonts, framework (Framer/Next.js/React), design system, or typography. These are cosmetic and say nothing about what the company sells.
- NEVER let the user's own ICP leak into a target's description. If you don't know what the target does, write `Unknown` — do not pattern-match them onto the ICP.
- `product_description` MUST quote or paraphrase a specific phrase from `extract_page.mjs` output (TITLE, META_DESCRIPTION, OG_DESCRIPTION, HEADINGS, or BODY). If none of those fields yield a recognizable product statement, write `Unknown — homepage content not accessible`.
- If `product_description` is `Unknown`, cap `icp_fit_score` at 3 and set `icp_fit_reasoning` to `Insufficient evidence — homepage returned no readable content`.
**CRITICAL — Minimize permission prompts**:
- Subagents MUST batch ALL file writes into a SINGLE Bash call using chained heredocs. One Bash call = one permission prompt.
- Batch ALL searches and ALL fetches into single Bash calls using `&&` chaining.
## Pipeline Overview
Follow these 5 steps in order. Do not skip steps or reorder.
1. **Company Research** — Deeply understand the user's company, product, and who they sell to
2. **Depth Mode Selection** — Choose research depth based on how many targets they want
3. **Discovery** — Find target companies using diverse search queries
4. **Deep Research & Scoring** — Research each company, score ICP fit
5. **Report & CSV** — Present findings, compile scored CSV
---
## Step 0: Setup Output Directory
Before starting, create the output directory on the user's Desktop:
```bash
OUTPUT_DIR=~/Desktop/{company_slug}_research_{YYYY-MM-DD}
mkdir -p "$OUTPUT_DIR"
```
Replace `{company_slug}` with the user's company name (lowercase, hyphenated) and `{YYYY-MM-DD}` with today's date. Pass `{OUTPUT_DIR}` (as a full literal path, not with `~`) to all subagent prompts so they write research files there.
Also clean up discovery batch files from prior runs:
```bash
rm -f /tmp/company_discovery_batch_*.json
```
## Step 1: Deep Company Research
This is the most important step. The quality of everything downstream depends on deeply understanding the user's company.
1. Ask the user for their company name or URL
2. **Check for an existing profile**:
- List files in `{SKILL_DIR}/profiles/` (ignore `example.json`)
- If a matching profile exists → load it, present to user: "I have your profile from {researched_at}. Still accurate?" If yes → skip to Step 2.
- If no profile exists → proceed with deep research below.
3. **Run a full deep research on the user's company** using the Plan→Research→Synthesize pattern.
See `references/research-patterns.md` for sub-question templates and research methodology.
**Key research steps:**
- Search: `browse cloud search "{company name}" --num-results 10`
- Fetch homepage: `node {SKILL_DIR}/scripts/extract_page.mjs "{company website}"`
- **Discover site pages via sitemap** (do NOT hardcode paths like `/about` or `/customers`):
1. `browse cloud fetch --allow-redirects "{company website}/sitemap.xml"` — sitemap is small, raw `browse cloud fetch` is fine
2. Scan for URLs with keywords: `customer`, `case-stud`, `pricing`, `about`, `use-case`, `industry`, `solution`
3. Optionally also fetch `/llms.txt` for page descriptions
4. Pick 3-5 most relevant URLs and extract with `extract_page.mjs` (NOT raw `browse cloud fetch`)
- Search for external context and competitors
- Accumulate findings with confidence levels
**Synthesize into a profile**:
Company, Product, Existing Customers, Competitors, Use Cases.
Do NOT include ICP or sub-verticals — those are per-run decisions.
4. Present the profile to the user for confirmation. Do not proceed until confirmed.
5. **Save the confirmed profile** to `{SKILL_DIR}/profiles/{company-slug}.json`
6. **Ask clarifying questions** using `AskUserQuestion` with checkboxes:
- "Which segments are you targeting?" with options derived from the company research
- "Company stage?" — Startups, Mid-market, Enterprise, All
- "How many companies / depth?" — Quick (~100), Deep (~50), Deeper (~25)
- This is the ONLY user interaction. After this, execute silently until results are ready.
## Step 2: Depth Mode Selection
| Mode | Research per company | Best for |
|------|---------------------|----------|
| `quick` | Homepage + 1-2 searches | ~100 companies, broad scan |
| `deep` | 2-3 sub-questions, 5-8 tool calls | ~50 companies, solid research |
| `deeper` | 4-5 sub-questions, 10-15 tool calls | ~25 companies, full intelligence |
## Step 3: Discovery
**Formula**: `ceil(requested_companies / 35)` search queries needed. Over-discover by ~2-3x because filtering typically drops 50-70%.
Generate search queries with these patterns:
- Industry + company stage + geography ("fintech startups series A Bay Area")
- Technology stack + use case ("companies using Selenium for web scraping")
- Competitor adjacency ("alternatives to {known company in ICP}")
- Buyer persona + pain point ("engineering teams struggling with browser automation")
**Process**:
1. Launch ALL discovery subagents at once (up to ~6 per message). Each runs its queries in a SINGLE Bash call:
```bash
browse cloud search "{query}" --num-results 25 --output /tmp/company_discovery_batch_{N}.json
```
2. After all waves complete, deduplicate: `node {SKILL_DIR}/scripts/list_urls.mjs /tmp`
3. **Filter the URL list** — remove:
- Blog posts, news articles (globenewswire.com, techcrunch.com, etc.)
- Directories/aggregators (tracxn.com, crunchbase.com, g2.com)
- The user's own competitors and existing customers (from profile)
Keep only company homepages.
See `references/workflow.md` for subagent prompt templates and wave management.
## Step 4: Deep Research & Scoring
Launch subagents to research companies in parallel. See `references/workflow.md` for the enrichment subagent prompt template. See `references/research-patterns.md` for the full research methodology.
**Process**:
1. Split filtered URLs into groups per subagent (quick: ~10, deep: ~5, deeper: ~2-3)
2. Launch ALL enrichment subagents at once (up to ~6 per message)
3. Each subagent uses ONLY Bash — for each company:
**Phase A — Plan** (skip in quick mode):
Decompose into 2-5 sub-questions based on ICP and enrichment fields.
**Phase B — Research Loop**:
Search and fetch pages, extract findings. Respect step budget (quick: 2-3, deep: 5-8, deeper: 10-15).
**Phase C — Synthesize**:
Score ICP fit 1-10 with evidence. Fill enrichment fields from findings.
4. Subagents write ALL markdown files in a SINGLE Bash call using chained heredocs to `{OUTPUT_DIR}/`
5. After ALL subagents complete, proceed to Step 5
**Critical**: Include the confirmed ICP description verbatim in every subagent prompt. Pass the full literal `{OUTPUT_DIR}` path to every subagent.
## Step 5: Report & CSV
1. **Generate HTML report + CSV** (opens overview in browser automatically):
```bash
node {SKILL_DIR}/scripts/compile_report.mjs {OUTPUT_DIR} --open
```
This generates:
- `{OUTPUT_DIR}/index.html` — overview page with scored table (opens in browser)
- `{OUTPUT_DIR}/companies/*.html` — individual company pages (linked from overview)
- `{OUTPUT_DIR}/results.csv` — scored spreadsheet for import into sheets/CRM
2. **Present a summary in chat** too:
```
## Company Research Complete
- **Total companies researched**: {count}
- **Depth mode**: {mode}
- **Score distribution**:
- Strong fit (8-10): {count}
- Partial fit (5-7): {count}
- Weak fit (1-4): {count}
- **Report opened in browser**: ~/Desktop/{company_slug}_research_{date}/index.html
```
3. Show the **top companies** sorted by ICP score in a table:
```
| Company | Score | Product | Industry | Fit Reasoning |
|---------|-------|---------|----------|---------------|
| Acme | 9 | AI inventory management | E-commerce SaaS | Series A, uses Selenium, expanding to EU |
```
4. For the top 3-5 companies, show a brief research summary — key findings, why they're a good fit, and what specific angle to approach them with.
Offer to dig deeper into specific companies, adjust scoring criteria, or re-run discovery with different queries.
すべてのファイル
11件のファイルcompany-researchをインストール
スキルファイルをダウンロードし、.claude/skills/ ディレクトリに解凍してください。
ZIPをダウンロードリポジトリをクローンし、スキルファイルをプロジェクトにコピーしてください。
git clone https://github.com/browserbase/skills/tree/main/skills/company-research # Copy SKILL.md to your .claude/skills/ directory
コピー





家
