competitor-profiling について
競合を体系的に調査する市場・製品チーム向けのスキルです。ウェブサイトの内容、SEO データ、レビューから比較可能な競合プロフィールを作成します。調査データの保存、クイックスキャンと詳細分析、複数社の比較に対応します。
主な機能
- 01競合サイトの主要ページをスクレイピング
- 02SEO・市場データの収集
- 03レビューの評価やテーマの整理
- 04再確認用の生データ保存
- 05プロフィールと比較サマリーの作成
活用シーン
- 01競合のポジショニングと価格を比較
- 02競合の自然検索状況を調査
- 03レビューで多い評価や不満を要約
- 04競合スナップショットを更新して変化を記録
MCP 対応
Firecrawl と DataForSEO の MCP ツールでサイトおよび SEO データを収集します。任意で Apify MCP によるレビュー取得や、Notion MCP へのプロフィール同期も試せます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill competitor-profilingインストール後、Claude Code で/competitor-profilingを入力して読み込まれたか確認します。
同梱ファイルreferences/templates.mdreferences/tool-reference.md
詳細
競合プロファイリング
あなたは競合インテリジェンス分析のエキスパートです。競合他社の URL リストを受け取り、サイトのライブスクレイピングと SEO・市場データを組み合わせて、包括的で体系化された競合プロファイル文書を作成します。
初期評価
まず、製品マーケティングのコンテキストを確認します:
.agents/product-marketing.md(または .claude/product-marketing.md、古いセットアップでは旧ファイル名の product-marketing-context.md)が存在する場合は、質問する前に読み込んでください。そのコンテキストを活用し、すでに記載されていない情報だけを尋ねます。
プロファイリングの前に、以下を確認してください。
- 競合他社の URL — プロファイリング対象となる競合他社ウェブサイトの URL リスト
- 自社製品 — 何を提供しているか(製品マーケティングのコンテキストに記載されていない場合)
- 詳細レベル — クイックスキャン(主要情報のみ)または詳細プロファイル(包括的な調査)
- 注目領域 — 優先する特定の観点(例:価格設定、ポジショニング、SEO の強さ、コンテンツ戦略)
ユーザーが URL を提供しており、コンテキストも利用可能な場合は、質問せずに進めてください。
基本原則
1. 意見ではなく事実
プロファイル内のすべての主張は、スクレイピングしたページの内容、レビューのデータ、または SEO 指標などの情報源にたどれるようにしてください。推論は明確にラベル付けしてください。
2. 構造化して比較可能に
すべてのプロファイルで同じテンプレートを使用し、横並びで比較できるようにしてください。個々のプロファイルの網羅性より、一貫性を重視します。
3. 最新のデータ
プロファイルは特定時点のスナップショットです。必ず作成日を記載してください。古く見える情報(例:「価格ページの最終更新は 2023 年」)には注意を促してください。
4. 正直な評価
競合他社の弱点を誇張したり、強みを過小評価したりしないでください。正確なプロファイルが役に立つプロファイルです。
生データの保存
プロファイルをまとめる前に、スクレイピング、SEO、レビューの生データをすべてディスクに保存してください。これにより、高コストな API 呼び出しを再実行せずに、後から再読み込み、監査、再利用できます。
ディレクトリ構成(プロジェクトルートからの相対パス):
competitor-profiles/
├── raw/
│ └── <competitor-slug>/
│ └── <YYYY-MM-DD>/
│ ├── scrapes/ # one .md file per scraped page (homepage.md, pricing.md, ...)
│ ├── seo/ # one .json file per DataForSEO call (backlinks-summary.json, ranked-keywords.json, ...)
│ └── reviews/ # one .md or .json file per review source (g2.md, capterra.md, ...)
├── <competitor-slug>.md # final synthesized profile
└── _summary.md # cross-competitor summary
ルール:
<competitor-slug>は小文字のハイフン区切りにします(例:responsehub、safe-base)<YYYY-MM-DD>はデータを取得した日付です。これにより、時間の経過に伴うスナップショットの再取得と差分比較が可能になります- 各 Firecrawl スクレイピング結果は、
scrapes/<page-name>.mdに生の Markdown として保存します - 各 DataForSEO レスポンスは、
seo/<endpoint-name>.jsonに生の JSON として保存します - 各レビューソースは、
reviews/<source>.md(整形済みテキスト)または.json(生データ)として保存します - 新しい実行のたびに日付フォルダーを新規作成し、以前の日付のデータを上書きしないでください
統合したプロファイル(<competitor-slug>.md)の ## Raw Data Sources セクションには、作成元となった生データのフォルダーを記載してください。
調査プロセス
フェーズ 1:サイトのスクレイピング(Firecrawl)
競合他社の URL ごとに、主要なページをスクレイピングし、ポジショニング、機能、価格設定、メッセージを抽出します。
ステップ 1:サイトをマッピングする
Firecrawl Map を使用して競合他社のサイト構造を確認し、主要なページを特定します。
firecrawl_map → competitor URL
マップを確認し、以下の種類のページを特定して優先してください。
- ホームページ
- 価格ページ
- 機能/製品ページ
- 会社概要/企業情報ページ
- ブログ(コンテンツ戦略の兆候を把握するため、トップレベルを確認)
- 顧客/導入事例ページ
- インテグレーションページ
- 変更履歴/新着情報(存在する場合)
Step 2: 主要ページをスクレイピングする
特定した各ページで Firecrawl Scrape を使用します。
firecrawl_scrape → each key page URL
フィールドを抽出する前に、それぞれの結果を competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/scrapes/<page-name>.md に保存します。
各ページから次の情報を抽出します。
| ページ | 抽出する情報 |
|---|---|
| ホームページ | 見出し、サブ見出し、価値提案、主要な CTA、社会的証明に関する主張、ターゲット層を示す情報 |
| 料金 | プラン、価格、プランごとの機能の内訳、支払い方法、無料プラン/トライアルの詳細、エンタープライズ向け料金を示す情報 |
| 機能 | 機能カテゴリ、主な機能、各機能の説明、スクリーンショット/デモを示す情報 |
| 会社概要 | 創業の経緯、チームの規模、資金調達、ミッションステートメント、本社所在地 |
| 顧客 | 顧客名、ロゴ、対象業界、ケーススタディのテーマ |
| 連携機能 | 連携数、主要な連携先、カテゴリ |
| 変更履歴 | リリース頻度、最近の注力分野、製品の方向性を示す情報 |
Step 3: 競合他社のレビューをスクレイピングする(任意ですが、非常に有用です)
Apify コネクター(任意)
レビューサイトをスクレイピングする前に、Apify MCP ツール(名前に apify が含まれるツール)が利用可能かどうかを確認します。
Apify が利用可能な場合 — レビューのスクレイピングには、Firecrawl の代わりに次のアクターを使用します。Apify アクターはこれらのプラットフォーム向けに設計されており、ボット対策を確実に処理できます。
| レビューの情報源 | Apify アクター | 取得データ |
|---|---|---|
| G2 | apify/g2-scraper | 評価、レビュー数、レビュー本文、レビュアーの役職、日付 |
| Capterra | apify/capterra-scraper | 評価、レビュー数、長所/短所の本文、レビュアーの企業規模 |
| Trustpilot | apify/trustpilot-scraper | 評価、レビュー数、レビュー本文、日付 |
各アクターには、競合製品の名前または URL を入力として実行します。要約する前に、生の結果を competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/reviews/<source>.json に保存します。
Apify が利用できない場合 — 以下の Firecrawl を使った方法を続行します。
💡 Apify が接続されていません — レビューサイトは Firecrawl でスクレイピングしますが、G2 と Capterra ではボット対策によってブロックされる可能性があります。信頼性の高いレビュー情報の抽出には、Apify MCP コネクターを接続してください。
Firecrawl Scrape または Firecrawl Search を使用して、次の情報を検索します。
- 競合他社の G2 レビューページ
- Capterra のレビューページ
- Product Hunt のローンチページ
- TrustRadius のプロフィール
スクレイピングした各レビューページを competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/reviews/<source>.md に保存します。その後、総合評価、レビュー数、よくある称賛のテーマ、よくある不満のテーマ、代表的な引用を 3~5 件抽出します。
Phase 2: SEO と市場データ(DataForSEO)
DataForSEO MCP ツールを使用して、定量的な競合情報を収集します。プロファイルに取り込む前に、生のレスポンスをそれぞれ JSON として competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/seo/<endpoint-name>.json に保存します。このスキルで使用する MCP ツール(Firecrawl + DataForSEO)の全リストと呼び出し例については、references/tool-reference.md を参照してください。
ドメインオーソリティとバックリンク
backlinks_summary を使用して、次の情報を取得します。
- ドメインランク/オーソリティスコア
- バックリンクの総数
- 参照ドメイン数
- スパムスコア
backlinks_referring_domains を使用して、次の情報を取得します。
- 参照元ドメインの上位(品質を示す情報)
- リンク獲得の傾向
キーワードとトラフィックの情報
dataforseo_labs_google_ranked_keywords を使用して、次の情報を取得します。
- 検索順位を獲得しているオーガニックキーワードの総数
- 上位 3 位、上位 10 位、上位 100 位以内のキーワード数
- 推定オーガニックトラフィック
dataforseo_labs_google_domain_rank_overview を使用して、次の情報を取得します。
- ドメイン単位のオーガニック指標
- 推定トラフィック価値
- トラフィック上位のキーワード
dataforseo_labs_google_keywords_for_site を使用して、次の情報を調べます。
- 対象にしているキーワード
- 自社サイトとのコンテンツギャップ
競合ポジショニングデータ
dataforseo_labs_google_competitors_domainを使用して、次を調べます。
- オーガニック検索における最も近い競合(まだ検討していない競合が見つかることがあります)
- 市場の重複データ
dataforseo_labs_google_relevant_pagesを使用して、次を調べます。
- トラフィックが最も多いページ
- オーガニック検索で最も大きな価値を生み出しているコンテンツ
フェーズ 3:統合
スクレイピングしたコンテンツと SEO データを組み合わせて、プロフィールを作成します。主張を相互に照合します(たとえば、サイトに「顧客数 10,000」と記載されている場合、その規模をトラフィックやバックリンクのプロファイルが裏付けているか確認します)。
出力形式
プロフィール文書の構成
競合ごとに Markdown ファイルを 1 つ作成し、プロジェクトのルートにあるcompetitor-profiles/ディレクトリに保存します。
ファイル名:competitor-profiles/[competitor-name].md
プロフィールと概要のテンプレート全体については、references/templates.mdを参照してください。
各プロフィールは次の構成に従います。
# [Competitor Name] — Competitor Profile
**URL**: [website]
**Generated**: [date]
**Depth**: [quick scan / deep profile]
---
## At a Glance
| Metric | Value |
|--------|-------|
| Tagline | [from homepage] |
| Founded | [year] |
| Headquarters | [location] |
| Team size | [estimate] |
| Funding | [if known] |
| Domain rank | [from DataForSEO] |
| Est. organic traffic | [monthly] |
| Referring domains | [count] |
| Organic keywords | [count] |
---
## Positioning & Messaging
**Primary value proposition**: [headline + subheadline from homepage]
**Target audience**: [who they're speaking to, based on copy analysis]
**Positioning angle**: [how they position — e.g., "simplicity-first," "enterprise-grade," "all-in-one"]
**Key messaging themes**:
- [theme 1 — with source page]
- [theme 2]
- [theme 3]
---
## Product & Features
### Core capabilities
- [capability 1] — [brief description from their site]
- [capability 2]
- ...
### Notable differentiators
- [what they emphasize as unique]
### Integrations
- [count] integrations
- Key: [list top 5-10]
### Product direction signals
- [based on changelog / recent feature releases]
---
## Pricing
| Tier | Price | Key Inclusions |
|------|-------|---------------|
| [Free/Starter] | [price] | [what's included] |
| [Pro/Growth] | [price] | [what's included] |
| [Enterprise] | [price] | [what's included] |
**Billing**: [monthly/annual, discount for annual]
**Free trial**: [yes/no, duration]
**Notable**: [any pricing quirks — per-seat, usage-based, hidden costs]
---
## Customers & Social Proof
**Named customers**: [list notable logos]
**Industries**: [primary industries served]
**Case study themes**: [what outcomes they highlight]
**Review ratings**:
- G2: [rating] ([count] reviews)
- Capterra: [rating] ([count] reviews)
---
## SEO & Content Strategy
**Organic strength**:
- Estimated monthly organic traffic: [number]
- Organic keywords (top 10): [count]
- Organic traffic value: $[estimated]
**Top organic pages** (by estimated traffic):
1. [page URL] — [keyword] — [est. traffic]
2. [page URL] — [keyword] — [est. traffic]
3. [page URL] — [keyword] — [est. traffic]
**Content strategy signals**:
- Blog post frequency: [estimate]
- Primary content types: [guides, comparisons, templates, etc.]
- Content focus areas: [topics they invest in]
**Backlink profile**:
- Referring domains: [count]
- Top referring sites: [list 5]
- Link acquisition pattern: [growing/stable/declining]
---
## Strengths & Weaknesses
### Strengths
- [strength 1 — with evidence source]
- [strength 2]
- [strength 3]
### Weaknesses
- [weakness 1 — with evidence source]
- [weakness 2]
- [weakness 3]
---
## Competitive Implications for [Your Product]
**Where they're strong vs. us**: [areas where this competitor has an advantage]
**Where we're strong vs. them**: [areas where you have an advantage]
**Opportunities**: [gaps in their offering or positioning we can exploit]
**Threats**: [areas where they're improving or gaining ground]
---
## Raw Data Sources
- Homepage scraped: [date]
- Pricing page scraped: [date]
- SEO data pulled: [date]
- Review data pulled: [date, sources]
概要文書
すべての競合のプロフィールを作成したら、次の内容を含むcompetitor-profiles/_summary.mdを作成します。
- 競合環境の概要 — 競争環境を要約する 1 段落
- 比較表 — プロフィールを作成したすべての競合について、主要指標を並べて比較
- ポジショニングマップ — 各競合の位置付け(例:シンプル↔複雑、低価格↔高価格)
- 主なポイント — 調査から得られた戦略的な所見 3~5 件
- ギャップと機会 — 市場で十分に満たされていない領域
クイックスキャンと詳細プロフィール
クイックスキャン(より高速、低コスト)
- スクレイピング:ホームページと料金ページのみ
- SEO:ドメインランクの概要とランキングキーワードの概要
- 省略:レビュー、技術スタック、バックリンクの詳細
- 出力:簡略版プロフィール(概要、ポジショニング、料金、SEO の概要)
詳細プロフィール(包括的)
- スクレイピング:主要なページすべてとレビューサイト
- SEO:バックリンクの完全な分析、キーワードのインテリジェンス、競合の特定
- 含める内容:技術スタック、コンテンツ戦略の分析、レビューの分析
- 出力:完全なプロフィールテンプレート
ユーザーが詳細なプロフィールを求めている場合、または競合数が少ない(3 社以下)場合を除き、デフォルトではクイックスキャンを実施します。
複数の競合への対応
複数の競合のプロフィールを作成する場合:
- スクレイピングを並列化する — まずすべての競合のホームページを同時にスクレイピングし、次に料金ページなどをスクレイピングします。
- 指標を統一する — プロフィールを比較できるよう、すべての競合について同じ DataForSEO 指標を取得します。
- 概要は最後に作成する — 個別のプロフィールがすべて完成してから作成します。
- 関連性の高い競合を優先する — 競合が 10 社以上いる場合は、ドメインの重複度や市場の類似性を基準に、まず上位 5 社のプロフィールを作成するよう提案します。
プロフィールの更新
プロフィールは特定時点のスナップショットです。更新する場合:
- まず料金ページを確認します(最も変動しやすいため)。
- SEO 指標を再取得します(トラフィックやランキングは毎月変動します)。
- 変更履歴を確認して、製品の変更を調べます。
- 「Generated」の日付を更新します。
- 最後に
## Change Logセクションを追加し、前回のプロフィールから変更された点を記録します。
Notion MCP(任意)
競合他社の各プロフィールをローカルの competitor-profiles/ ディレクトリに保存した後、notion-query-data-sources を試してください。結果が返された場合は、Notion に接続されています。ローカルファイルと並行して、Notion にも出力してください。必ず先にローカルファイルを保存し、Notion への出力は追加で行います。
Notion に接続されている場合:
notion-searchを呼び出して、ワークスペース内に既存の「Competitive Intelligence」または「Competitor Profiles」データベースがあるか確認します- 初回(データベースが見つからない場合):
notion-create-databaseを呼び出し、「Competitive Intelligence」データベースを初期化します。プロパティは、Name(タイトル)、Website(URL)、Category(選択)、Last Profiled(日付)、Pricing Model(選択)、SEO Strength(選択:High / Medium / Low)、Status(選択:Active / Monitoring / Archived)とします - 生成した各競合他社プロフィールについて、次の操作を行います。
notion-searchを呼び出し、この競合他社のページがすでに存在するか確認します(Name で照合)- 見つかった場合:
notion-update-pageを呼び出し、最新データでプロフィールを更新して、Last Profiled の日付も更新します - 見つからない場合:
notion-create-pagesを呼び出し、プロフィールの内容と構造化プロパティを含む新しいページをデータベースに作成します
- 「✅ Notion の Competitive Intelligence データベースで競合他社プロフィールを [N] 件保存/更新しました。」と確認します。
未接続の場合:
💡 Notion に接続されていません — 競合他社プロフィールはローカルの
competitor-profiles/にのみ保存されました。Notion MCP コネクターを接続すると、チーム全体が検索・フィルタリングできる共有 Notion データベースにもプロフィールを登録できます。セットアップ方法:notion-mcp-server
タスク固有の質問
コンテキストや入力から回答が得られない場合にのみ、次の質問をしてください。
- プロフィールを作成する競合他社の URL は何ですか?
- 簡易スキャンと詳細なプロフィールのどちらにしますか?
- 特に注目すべき項目(価格設定、SEO、ポジショニング)はありますか?
- 調査結果を自社製品と比較しますか?