niche-hunter
インターネット上の「悩み」や「不便」といったシグナルを自律的に収集し、小規模ビジネスとして成立するかをAIが検証・実証するマルチエージェントシステムです。
X(Twitter)や知恵袋、M&A市場などからリアルタイムに情報を収集。独自の6軸スコアリングによる事業性評価、LPの自動生成とデプロイ、さらには広告運用を通じたコンバージョン計測までを完全自動で実行します。
単なるアイデア出しに留まらず、実際に市場へ公開して「誰が、いくら払うのか」を実証し、勝ちパターンを学習し続けることで、エンジニアや連続起業家の事業探索コストを大幅に削減します。
zip未取得
Niche Hunter
ニッチ市場の機会を自律的に発見・検証・発信するマルチエージェントパイプライン
インターネット上の「困りごと」を収集し、AIが事業化可能なニッチ機会かどうかを多段階で自動検証。Gate を通過した機会は LP を自動生成・公開し、コンバージョンまで計測します。
---
アーキテクチャ概要
Scout層(収集)→ Evaluator(6軸評価)→ Validator層(多段検証)→ 配信・学習層
Scout層(信号収集)
| エージェント | 収集先 | 手法 |
|---|---|---|
| Scout-ToC | Yahoo!知恵袋 / OKWave / はてな匿名ダイアリー / note.com | スクレイピング・非公式API |
| Scout-ToB | Yahoo!知恵袋 / OKWave(業界×課題クエリ) | スクレイピング |
| Scout-X | X (Twitter) | X API v2 (Bearer Token) |
| Scout-MA | TRANBI / Batonz | スクレイピング(M&A市場の実在確認) |
Evaluator(6軸スコアリング)
収集機会を以下の重み付きスコアで評価し、Gate1通過分のみ Validator 層へ進む。
| 軸 | 重み |
|---|---|
| who(ターゲット明確さ) | 15% |
| what(問題の明確さ) | 15% |
| why_not_solved(既存解決策の不十分さ) | 20% |
| how_solvable(解決可能性) | 10% |
| why_now(緊急性) | 5% |
| monetizability(収益化可能性) | 35% |
Gate通過条件
| Gate | 条件 |
|---|---|
| Gate1 | overall ≥ 60 AND (monetizability ≥ 40 OR why_not_solved ≥ 70) |
| Gate2 | market_size_confirmed = true かつ revenue_model が空でない |
| Gate3 | social_score ≥ 20 |
| Gate4 | コンバージョン ≥ 1件 |
| Gate5 | コンバージョン ≥ 2件 かつ reproduce_score ≥ 50 |
Validator層(多段検証)
| エージェント | 役割 | モデル |
|---|---|---|
| Validator-Desk | GPT-4.1内部知識 + Google News RSS + PRtimes RSS による机上検証 | GPT-4.1 |
| Validator-Social | はてブ / Yahoo!ニュース / note / PRtimes の反応強度を計測 | Claude Sonnet |
| Validator-LP | LP自動生成 → Vercelデプロイ → コンバージョン計測 | Claude Sonnet |
| Validator-Reproduce | LP経由コンバージョン2件以上で再現性を確認 | GPT-4.1 |
配信・学習層
| エージェント | 役割 | モデル |
|---|---|---|
| NotePublisher | Playwright で note.com に記事投稿(承認フロー付き) | Claude Sonnet |
| OutreachAgent | 関連ツイートに返信投稿(note URLのみ) | Claude Sonnet |
| XAnnouncer | note投稿済み記事を X でアナウンス | Claude Haiku |
| PatternForge | 通過機会から勝ちパターンを抽出・蓄積 | Claude Sonnet |
| MetaLearner | 全体データを分析し改善提案を生成(6時間ごと) | Claude Sonnet |
| ReportGenerator | Gate3通過機会の仮説検証レポートを自動生成 | Claude Sonnet |
---
技術スタック
| カテゴリ | 内容 |
|---|---|
| バックエンド | Python 3.11 / Railway(Worker サービス) |
| ダッシュボード | Streamlit / Railway(Web サービス) |
| データベース | Supabase (PostgreSQL) |
| LP公開 | Vercel API(自動デプロイ) |
| LLM | OpenAI GPT-4.1 / Anthropic Claude Sonnet 4.6 / Claude Haiku |
| 通知 | Discord Webhook(notifications / approvals / alerts) |
| スクレイピング | BeautifulSoup4 / Playwright |
| スケジューラー | APScheduler |
---
セットアップ
1. リポジトリをクローン
git clone https://github.com/k-nagamoto/niche-hunter.git
cd niche-hunter
pip install -r requirements.txt
2. 環境変数を設定
.env.example をコピーして .env を作成し、各 API キーを入力します。
cp .env.example .env
必須の環境変数:
# LLM
ANTHROPIC_API_KEY=
OPENAI_API_KEY=
# Supabase
SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_ANON_KEY=
# Discord(通知先 Webhook URL)
DISCORD_WEBHOOK_NOTIFICATIONS=
DISCORD_WEBHOOK_APPROVALS=
DISCORD_WEBHOOK_ALERTS=
# Vercel(LP 自動デプロイ)
VERCEL_TOKEN=
オプション(未設定の場合は対応エージェントがスキップ):
# X (Twitter) API — Scout-X / OutreachAgent / XAnnouncer で使用
X_BEARER_TOKEN=
X_API_KEY=
X_API_SECRET=
X_ACCESS_TOKEN=
X_ACCESS_TOKEN_SECRET=
# note.com — NotePublisher で使用
NOTE_EMAIL=
NOTE_PASSWORD=
# Reddit API
REDDIT_CLIENT_ID=
REDDIT_CLIENT_SECRET=
3. Supabase のテーブルを作成
Supabase Dashboard の SQL Editor で以下のテーブルを作成してください。
| テーブル | 用途 |
|---|---|
| opportunities | 機会本体(current_stage で進捗管理) |
| evidences | 収集・検証データ |
| agent_states | エージェント実行状態・パラメータ |
| budget_ledger | API利用コストの記録 |
| learning_logs | MetaLearner の分析ログ |
| winning_patterns | PatternForge の抽出パターン |
| actions | エージェントのアクション履歴 |
4. 起動
# スケジューラー(Worker サービス)
python -m src.scheduler
# ダッシュボード(別ターミナル)
streamlit run dashboard/app.py
---
動作モード
SCHEDULER_ENABLED 環境変数でモードを切り替えられます。
| 値 | 動作 |
|---|---|
false(デフォルト) | Scout・Evaluator はダッシュボードの Run ボタンで手動実行。Validator 以降は自動実行 |
true | Scout・Evaluator も 30 分間隔で自動実行 |
---
予算管理
API 利用コストは自動管理されます。上限に達すると対象プロバイダーのエージェントが自動停止し、翌日リセット後に再起動します。
| プロバイダー | 日次上限 | 月次上限 |
|---|---|---|
| Anthropic | $3.00 | $10.00 |
| OpenAI | $6.00 | $20.00 |
---
ディレクトリ構成
niche-hunter/
├── src/
│ ├── agents/ # 各エージェントの実装
│ ├── scheduler.py # APScheduler 設定
│ ├── config.py # 環境変数・定数管理
│ └── business_rules.py # ドメイン知識・判断ルール
├── dashboard/
│ └── app.py # Streamlit ダッシュボード
├── scripts/ # 補助スクリプト
├── tests/ # テストコード
└── .env.example # 環境変数テンプレート
---
*2026/4/27 〜 5/20(HOOTL プロジェクト)*