product-research について
product-researchは、ニッチ市場の機会を探すプロダクト開発者向けのリサーチスキルです。Redditで課題を調査し、需要の新しさや既存製品、競合レビューを確認して、定められた基準で案を評価します。
主な機能
- 01Redditコミュニティの課題調査
- 02需要の新しさと既存製品の確認
- 03競合レビューと機能不足の分析
- 04複数の基準によるアイデア評価
- 05根拠ソースとスレッドURLの記録
活用シーン
- 01対象ユーザー向けの製品機会探し
- 02コミュニティで繰り返すニーズの検証
- 03既存ツールの不足点の比較
- 04開発上の制約に沿った案の絞り込み
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alexander-zuev/ agent-skills --skill product-researchインストール後、Claude Code で/product-researchを入力して読み込まれたか確認します。
詳細
プロダクトのリサーチとアイデアの検証
このスキルでできること
対象ニッチ市場で、プロダクトの機会を見つけて検証する2段階のリサーチプロセスです。
- 第1段階(Reddit): 実際のコミュニティでの会話から、未加工の悩み、不満、ツールへの要望を収集します
- 第2段階(裏付け調査): 情報の鮮度を確かめ、既存のソリューションを調べ、競合製品のレビューを読み、現在もその悩みが存在するかを確認します
入力
ユーザーが指定する項目:
- ニッチ市場/対象ユーザー(例:「Amazon FBAの出品者」「Shopifyのストアオーナー」「フリーランスのデザイナー」)
- 任意の制約(例:「個人開発」「シンプルに開発できるものがよい」「B2Bのみ」)
第1段階:Redditコミュニティのリサーチ
ブラウザーのセットアップ
必ず playwright-cli open --headed --persistent を使用してください。 両方のフラグが必要です。どちらかが欠けていると、Redditにブロックされます。headed を指定するとヘッドレス検出を回避でき、persistent を指定するとログインCookieが保持されます。
フェーズ1:コミュニティの特定(1分)
- ブラウザーを開きます:
playwright-cli open --headed --persistent - Redditにアクセスし、そのニッチ市場に関連する上位2~3件のサブレディットを特定します
- 優先順位を決めるため、登録者数を確認します(多い順)
フェーズ2:全体像の調査(サブレディットごとに3~5分)
各サブレディットで、JS evalを使って人気投稿を抽出します(スナップショットの解析は使用しません)。
# Navigate to top posts
playwright-cli goto "https://www.reddit.com/r/{subreddit}/top/?t=year"
# Extract titles + metadata in one shot
playwright-cli eval "JSON.stringify([...document.querySelectorAll('a[href*=\"/comments/\"]')].map(a => ({title: a.textContent?.trim()?.slice(0,150), href: a.href})).filter(x => x.title && x.title.length > 20 && !x.title.includes('Skip') && !x.title.includes('Navigate')).reduce((acc, x) => { if (!acc.seen.has(x.href)) { acc.seen.add(x.href); acc.result.push(x); } return acc; }, {seen: new Set(), result: []}).result.slice(0, 25))"
最近の傾向を把握するため、t=month でも繰り返します。
時期の偏りに注意してください。2026年を2025年より優先します。2024年より前のスレッドは背景情報としてのみ扱い、主要な根拠にはしないでください。
フェーズ3:スレッドの詳細調査(スレッドごとに2~3分)
シグナルの強いスレッドを4~5件読み、コメントを抽出します。
playwright-cli eval "JSON.stringify([...document.querySelectorAll('[id*=\"comment\"] p, article p')].map(p => p.textContent?.trim()).filter(t => t && t.length > 25).slice(0, 35))"
コメントで確認する点:
- 既存ツールへの不満(「Xは使いにくい」「XではYができない」)
- 明確な要望(「こんなものがあればいいのに……」「こういうツールを知っている人はいますか?」)
- ユーザーが説明している回避策(手作業でのプロセスは自動化の機会です)
- 繰り返し現れる不満(複数のスレッドで同じ問題が挙がっていれば、確度が高まります)
- ツールの推奨と、それでは不十分な理由
すべてのデータポイントについて、情報の鮮度を記録してください。
- 各スレッド/コメントの経過期間を記録します(Redditには「Xか月前」「X年前」のように表示されます)
- 12か月より古いものには、情報が古くなっている可能性があることを示します
- 同じ悩みを扱う最近のスレッド(3か月未満前)は、強いシグナルです
- 最近の同様のスレッドが見つからない古いスレッドは、問題が解決済みか、関連性がなくなっている可能性があります
フェーズ4:絞り込んだ検索(必要な場合のみ、2分)
フェーズ2~3で全体像を把握した後に限り実施します。一般的な「こんなツールがあればいいのに」という検索ではなく、すでに見られたパターンに基づいて、情報を踏まえた検索クエリを使います。
playwright-cli goto "https://www.reddit.com/r/{subreddit}/search/?q={informed_query}&sort=relevance&t=all"
フェーズ5:第1段階の調査結果をまとめる
第2段階に進む前に、スレッドのURLと情報の鮮度を示すタグを付けて、悩みの生データ一覧を作成します。
第2段階:裏付けと検証
第1段階で得た上位5~7件のアイデアについて、外部の情報源を使って検証します。「Redditで誰かが不満を述べていた」という話と、「実在し、現在も需要があるのに十分なサービスが提供されていない市場」とを区別するための段階です。
2A:情報の鮮度を確認
それぞれのアイデアについて、次の点を確認します。この悩みは今日も続いているでしょうか。それとも、すでに解決済み、あるいは無関係になっているでしょうか。
- 同じ悩みについて、直近3か月の投稿を検索します
- 悩みが古いもの(例:2019年にPPCが問題だった)なら、2025~2026年のスレッドにも同じ不満があるか、新しいツールによって解決されたかを確認します
- 「Xに乗り換えたら解決した」というコメントを探します。そうしたコメントがある場合、問題はすでに解決されている可能性があります
2B:既存ソリューションの調査
各アイデアについて、すでに存在するものを調べます。
# Search for existing tools
playwright-cli goto "https://www.google.com/search?q={niche}+{pain_point}+tool+OR+software+OR+app"
# Check review sites
playwright-cli goto "https://www.g2.com/search?query={tool_name}"
playwright-cli goto "https://www.capterra.com/search/?query={tool_name}"
記録する項目:
- ツール名、価格、評価
- レビューで多く見られる不満(1~2つ星のレビューは、満たされていないニーズが分かるため特に重要です)
- レビュアーが挙げている機能の不足
- 「Xから乗り換えた理由は……」というコメント
2C:競合の弱点分析
上位3件のアイデアについて、既存ソリューションの1つ星および2つ星のレビューを読みます。
# Extract review text
playwright-cli eval "JSON.stringify([...document.querySelectorAll('[class*=\"review\"] p, [class*=\"Review\"] p, [data-testid*=\"review\"] p')].map(p => p.textContent?.trim()).filter(t => t && t.length > 30).slice(0, 20))"
低評価レビューに見られる主なパターン:
- 「機能に対して高すぎる」→ 価格面で競争する機会
- 「UIが使いにくい/操作が難しい」→ UX改善の機会
- 「Xの機能がない」→ 機能面のギャップを埋める機会
- 「サポートがひどい」→ サービス改善の機会
- 「何年も更新されていない」→ 放置されたプロダクトに代わる機会
2D: 市場規模のシグナル
有望なアイデアごとに簡単に確認します。
- 主な既存ツールを Google で検索し、料金ページでプランの段階を確認します(市場の成熟度がわかります)。
- Chrome ウェブストアで関連する拡張機能を確認します(インストール数は市場規模の目安になります)。
- ProductHunt で類似のローンチを確認します(コメントから反応がわかります)。
スコアリングの枠組み
| 要素 | 1 | 2 | 3 |
|---|---|---|---|
| 課題の深刻度(P) | あれば便利 | 週に数時間を節約 | 収益や存続に不可欠 |
| 確信度(C) | 言及が1~2件 | スレッドが3~5件+賛成票 | 繰り返し見られる話題で、複数の情報源がある |
| 実現の容易さ(E) | 複雑なオーケストレーション、多数の連携 | 標準的なウェブアプリ、一部 API 作業あり | シンプルな SaaS、数週間で MVP を開発可能 |
| 宣伝のしやすさ(M) | リーチが難しい、エンタープライズ向けの販売 | ニッチなコミュニティ、口コミ | Reddit/YouTube/SEO と自然に相性がよく、拡散の可能性がある |
| TAM(T) | ニッチ市場の一部 | 活動中のメンバーの大半 | ニッチ市場の全員 |
| 新しさ(F) | 補正値:古いスレッドのみなら0.5倍、混在なら1倍、現在注目されているなら1.5倍 |
スコア = P x C x E x M x T x F(高いほど良い)
ユーザーの制約に応じた調整:
- ユーザーが「solo dev」または「作りやすい」と言った場合 → 実現の容易さの比重を上げます(E に1.5を掛けます)。
- ユーザーが「複雑でも問題ない」と言った場合 → 実現の容易さを理由に減点しません。
- ユーザーが収益モデルを指定した場合 → スレッドから支払い意思のシグナルを考慮します。
出力形式
# {Niche} App Ideas — Research Report
**Date:** YYYY-MM-DD
**Pass 1 Sources:** {subreddits with member counts}
**Pass 2 Sources:** {review sites, competitor tools checked}
## Scoring Framework
{table}
## Ranked Ideas
### 1. [Idea Name] — Score: X (P:X C:X E:X M:X T:X F:X)
**Problem:** What the audience is struggling with
**Freshness:** {ACTIVE / STALE / EMERGING} — {one-line justification, e.g., "3 threads in last 2 months, complaints intensifying due to 2026 fee changes"}
**Evidence (Reddit):**
- [Thread title](https://reddit.com/r/.../comments/...) — "key quote" (X upvotes, Y comments, Z ago)
- [Thread title](https://reddit.com/r/.../comments/...) — "key quote" (X upvotes, Z ago)
**Existing solutions & gaps:**
- {Tool} (${price}/mo, {rating} on G2) — Gap: "{what users complain about}"
- {Tool} (${price}/mo) — Gap: "{missing feature}"
**Opportunity angle:** What specifically to build differently
**MVP scope:** What v1 looks like + rough timeline
### 2. ...
## Top 3 Recommendation
{Brief rationale for the top picks given user's constraints}
動作ルール
- アクションの間に短いランダムな間隔を入れます:ナビゲーションの間に
sleep $((RANDOM % 2 + 1))を実行します。 - データの抽出にはスナップショットの解析ではなく、JS eval を使います — 10倍速く、信頼性も高くなります。
- まずは自然な形で閲覧します — 検索する前に人気の投稿を読み、状況を把握します。
- 文字どおりすぎる検索クエリは避けます — 人々は「X を作ってほしい」とは書きません。不満を述べたり、代替案を尋ねたり、回避策を説明したりします。
- タイトルだけでなくコメントも読みます — タイトルはクリックベイトで、コメントに本当の課題が書かれています。
- スレッドの経過期間を必ず記録します — 最近の言及がない3年前の課題は、すでに解決されている可能性があります。
- スコアを付ける前に裏付けを取ります — Reddit はシグナルを示し、Pass 2 は確信を深めます。Reddit だけを根拠に高く評価しないでください。
- 終了したらブラウザーを閉じます —
playwright-cli close - Pass 1 で10~15個のアイデアを目標にし、Pass 2 で上位5個を詳しく調べます — ニッチ市場ごとの合計所要時間が約30分を超えると、追加調査の効果は薄れます。
- 必ず
--headed --persistentを使います — ユーザーは操作を見たいと考えており、セッションも維持されます。 - スレッドの URL を必ず含めます — すべての根拠に情報源へのリンクを付け、ユーザーが自分で確認できるようにします。