res-deep について
res-deepは、ウェブやソーシャル、開発者向け、金融メディアを複数ラウンドで調査するリサーチスキルです。比較、全体像、詳細調査、意思決定の形式で結果を整理し、xAI検索を使うモードとウェブのみのモードに対応します。
主な機能
- 01多様なソースを複数ラウンドで検索
- 02情報の不足を分析して追加調査
- 03詳細モードで主張を検証
- 04複数ソースの結果を統合・重複排除
- 05構造化された形式で調査結果を整理
活用シーン
- 01製品やアプローチの比較
- 02市場やエコシステムの把握
- 03トピックの詳細な調査
- 04選択肢の評価と意思決定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ molechowski/ claude-skills --skill res-deepインストール後、Claude Code で/res-deepを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/iterative-research.mdoutput-frameworks.mdsearch-patterns.mdscripts/xai_search.py詳細
ディープリサーチ
Web、Reddit、X/Twitter、GitHub、Hacker News、Substack、金融メディア、LinkedIn などを対象とした反復型の複数ラウンドリサーチ。比較、全体像、詳細分析、意思決定の構造化フレームワークを使って出力します。
アーキテクチャ
| ソース | ツール | コスト |
|---|---|---|
| Web | Claude Code WebSearch + xAI web_search | 無料 + $0.005/回 |
Claude Code WebSearch (site:reddit.com) + xAI web_search | 無料 + $0.005/回 | |
| X/Twitter | xAI x_search のみ | $0.005/回 |
| GitHub | Claude Code WebSearch (site:github.com) + xAI web_search | 無料 + $0.005/回 |
| Hacker News | Claude Code WebSearch (site:news.ycombinator.com) + xAI web_search | 無料 + $0.005/回 |
| Substack | Claude Code WebSearch (site:substack.com) + xAI web_search | 無料 + $0.005/回 |
| 金融メディア | Claude Code WebSearch (サイト指定) + xAI web_search | 無料 + $0.005/回 |
| Wall Street Oasis | Claude Code WebSearch (site:wallstreetoasis.com) | 無料 |
Claude Code WebSearch (site:linkedin.com) + xAI web_search | 無料 + $0.005/回 | |
| Crunchbase | Claude Code WebSearch (site:crunchbase.com) | 無料 |
| YouTube | Claude Code WebSearch (site:youtube.com) | 無料 |
| テックブログ | Claude Code WebSearch (サイト指定) | 無料 |
複数のソースから得た結果を統合し、重複を排除して包括的に情報を網羅します。
前提条件
必須ツール
| ツール | 用途 | インストール |
|---|---|---|
| uv | Python パッケージマネージャー(依存関係を管理) | curl -LsSf https://astral.sh/uv/install.sh | sh |
任意ツール
| ツール | 用途 | インストール |
|---|---|---|
| scrapling | WebFetch をブロックするサイト(403、CAPTCHA、空の応答)向けのヘッドレスブラウザの代替手段 | uv tool install 'scrapling[all]' |
API キー
| サービス | 用途 | 必須 | キーの取得先 |
|---|---|---|---|
| xAI | X/Twitter 検索 + Web/GitHub/HN の補足検索 | 推奨 | https://console.x.ai |
注: xAI キーがなくてもスキルは動作します(Claude Code による Web 専用モード)。ただし、X/Twitter のデータや、より広範な情報収集には xAI が必要です。
キーチェーンの設定(xAI 向け、初回のみ)
# 1. Create a dedicated keychain
security create-keychain -p 'YourPassword' ~/Library/Keychains/claude-keys.keychain-db
# 2. Add keychain to search list
security list-keychains -s ~/Library/Keychains/claude-keys.keychain-db ~/Library/Keychains/login.keychain-db /Library/Keychains/System.keychain
# 3. Store your xAI API key
echo -n "Enter xAI API key: " && read -s key && security add-generic-password -s "xai-api" -a "$USER" -w "$key" ~/Library/Keychains/claude-keys.keychain-db && unset key && echo
使用前に実行します: security unlock-keychain ~/Library/Keychains/claude-keys.keychain-db
ワークフローの概要
| ステップ | 操作 | 目的 |
|---|---|---|
| 0 | xAI キーを検出 | フルモードと Web 専用モードを判定 |
| 1 | クエリを解析 | TOPIC、FRAMEWORK、DEPTH を抽出 |
| 2 | 第 1 ラウンド:広範な検索 | エンティティ、テーマ、初期の調査結果を見つける |
| 3 | ギャップ分析 | 不足している視点や未検証の主張を特定 |
| 4 | 第 2 ラウンド:対象を絞った追加調査 | ギャップを埋め、主張を検証し、網羅性を高める |
| 5 | 第 3 ラウンド:検証 | (詳細モードのみ)一次情報源を検証 |
| 6 | 統合 | フレームワークのテンプレートに沿って調査結果を整理 |
| 7 | エキスパートモード | キャッシュ済みの結果に基づいて追加質問に回答 |
ステップ 0:xAI キーの検出
必須 — 各リサーチセッションの開始前に実行してください。
security find-generic-password -s "xai-api" -w ~/Library/Keychains/claude-keys.keychain-db 2>/dev/null && echo "XAI_AVAILABLE=true" || echo "XAI_AVAILABLE=false"
- XAI_AVAILABLE=true:フルモードを使用します — Claude WebSearch と xAI スクリプトを並行して実行します。
- XAI_AVAILABLE=false:Web 専用モードを使用します — Claude WebSearch のみを実行します。xAI の設定を勧める注記を追加します。
このステップは省略できません。リサーチを始める前に必ず確認してください。
ステップ 1:クエリの解析
ユーザー入力から次の情報を抽出します。
1a. TOPIC
調査対象となるテーマです。フレームワークを示す表現と深度を指定する修飾語を取り除きます。
1b. フレームワーク
クエリのパターンから出力フレームワークを検出します。
| フレームワーク | 検出パターン | 例 |
|---|---|---|
| COMPARISON | 「X vs Y」、「X と Y を比較」、「X か Y」、「どちらがよいか」 | 「エンタープライズアプリには React と Vue のどちらがよいか」 |
| LANDSCAPE | 「landscape」、「エコシステム」、「市場」、「どんな選択肢があるか」、「概要」 | 「AI エージェントフレームワークの全体像」 |
| DEEP_DIVE | 「深掘り」、「X はどのように機能するか」、「説明して」、「X について教えて」、「X とは」 | 「WebAssembly を深掘りする」 |
| DECISION | 「〜すべきか」、「評価する」、「どれを使うべきか」、「推奨」 | 「Kafka と RabbitMQ のどちらを使うべきか?」 |
明示的な上書き:クエリ内の任意の場所に [comparison]、[landscape]、[deep-dive]、または [decision] を指定すると、ユーザーがフレームワークを強制できます。
デフォルト:フレームワークが検出されない場合は、DEEP_DIVE を使用します。
1c. 深さ
| 深さ | トリガー | ラウンド数 | 目標ソース数 |
|---|---|---|---|
| quick | 「quick」、「brief」、「overview」 | 1 | 10-15 |
| default | (なし) | 2 | 25-40 |
| deep | 「deep」、「comprehensive」、「thorough」 | 3 | 60-90 |
Step 2: ラウンド 1 — 幅広い検索
クエリの生成
トピックのさまざまな側面を網羅するクエリを 6~9 個生成します。
- 直接クエリ:
"{TOPIC}"— 指定されたトピック - 時期を指定したクエリ:
"{TOPIC} 2026"または"{TOPIC} latest" - Reddit クエリ:
site:reddit.com "{TOPIC}" - GitHub クエリ:
site:github.com "{TOPIC}" - HN クエリ:
site:news.ycombinator.com "{TOPIC}" - フレームワーク固有のクエリ:
- COMPARISON:
"{Alt A} vs {Alt B}" - LANDSCAPE:
"{TOPIC} ecosystem" OR "{TOPIC} landscape" - DEEP_DIVE:
"how {TOPIC} works" OR "{TOPIC} explained" - DECISION:
"{TOPIC}" experience OR recommendation
- COMPARISON:
- Substack クエリ:
site:substack.com "{TOPIC}" - 金融メディアのクエリ:
site:tradingview.com OR site:benzinga.com OR site:seekingalpha.com "{TOPIC}"(金融・経済のトピックの場合) - LinkedIn クエリ:
site:linkedin.com "{TOPIC}"(トピックに人物や企業が関わる場合)
並列実行
検索を同時に実行します。
Claude Code(無料):
WebSearch:直接クエリWebSearch:時期を指定したクエリWebSearch:Reddit を対象としたクエリWebSearch:GitHub を対象としたクエリWebSearch:HN を対象としたクエリWebSearch:Substack を対象としたクエリWebSearch:金融メディアを対象としたクエリ(金融・経済のトピックの場合)WebSearch:LinkedIn を対象としたクエリ(トピックに人物や企業が関わる場合)WebSearch:YouTube を対象としたクエリWebSearch:WSO を対象としたクエリ(金融のトピックの場合)WebSearch:Crunchbase を対象としたクエリ(企業・スタートアップのトピックの場合)
xAI スクリプト(利用可能な場合は、バックグラウンドの Bash タスクとして実行):
uv run scripts/xai_search.py web "{TOPIC}" --json &
uv run scripts/xai_search.py reddit "{TOPIC}" --json &
uv run scripts/xai_search.py x "{TOPIC}" --json &
uv run scripts/xai_search.py github "{TOPIC}" --json &
uv run scripts/xai_search.py hn "{TOPIC}" --json &
uv run scripts/xai_search.py substack "{TOPIC}" --json &
uv run scripts/xai_search.py finance "{TOPIC}" --json &
uv run scripts/xai_search.py linkedin "{TOPIC}" --json &
統合と重複排除
MERGED_WEB = dedupe(claude_web + xai_web)
MERGED_REDDIT = dedupe(claude_reddit + xai_reddit)
MERGED_GITHUB = dedupe(claude_github + xai_github)
MERGED_HN = dedupe(claude_hn + xai_hn)
MERGED_SUBSTACK = dedupe(claude_substack + xai_substack)
MERGED_FINANCE = dedupe(claude_finance + xai_finance)
MERGED_LINKEDIN = dedupe(claude_linkedin + xai_linkedin)
X_RESULTS = xai_x_results (no Claude equivalent)
WSO_RESULTS = claude_wso (WebSearch only)
CRUNCHBASE_RESULTS = claude_crunchbase (WebSearch only)
YOUTUBE_RESULTS = claude_youtube (WebSearch only)
URL で重複を排除し、メタデータがより多い項目を残します。
ラウンド 1 の内部メモ
(出力には含めず、内部で)記録します。
KEY_ENTITIES: [specific tools, companies, people discovered]
THEMES: [recurring themes across sources]
GAPS: [what's missing — feed into Step 3]
CONTRADICTIONS: [conflicting claims]
LEADS: [URLs worth deep-reading via WebFetch (or scrapling fallback) in Round 2]
Step 3: ギャップ分析
ラウンド 1 の後にギャップ分析を実行します。完全なチェックリストについては references/iterative-research.md を参照してください。
ギャップのカテゴリ
| ギャップ | 確認事項 | 対応 |
|---|---|---|
| 視点の不足 | 開発者、運用担当者、ビジネスの視点があるか? | 不足している視点を対象にする |
| 未検証の主張 | 1 つのソースにしかない主張があるか? | 裏付けを探す |
| 浅い網羅性 | 言及されているものの、説明されていない項目があるか? | その項目を深掘り検索する |
| 古いデータ | 重要な事実が 12 か月以上前のものか? | 最近の更新を検索する |
| ソースの種類の不足 | Reddit/GitHub/HN/X/ブログが不足しているか? | そのプラットフォームを対象にする |
| 金融・ビジネスの文脈の不足 | Substack/金融メディア/LinkedIn/Crunchbase が不足しているか? | そのプラットフォームを対象にする |
ラウンド 2 の計画
優先度の高いギャップを 4~6 個選び、それぞれに絞ったクエリを生成します。複数ラウンドでの絞り込みパターンについては references/search-patterns.md を参照してください。
深さが quick の場合(1 ラウンドのみ)は、Step 6 に進みます。
Step 4: ラウンド 2 — 対象を絞った追加調査
クエリのルール
- ラウンド 1 のクエリを繰り返さない
- エンティティ固有のクエリ — ラウンド 1 で見つかった対象の名前やツールを指定します
- ソースタイプ固有のクエリ — ラウンド 1 で十分に扱われなかった対象プラットフォームを指定します
- フレームワークに合わせたクエリ —
references/iterative-research.mdのターゲティング表を参照してください
実行
ラウンド 1 と同じ並列パターンで、対象を絞ったクエリを使用します。
さらに、ラウンド 1 で見つかった価値の高い URL に対して WebFetch を使用します。
- 公式ドキュメントページ
- ベンチマーク結果ページ
- エンジニアリングブログ記事
- 方法論が示された比較記事
ラウンド 2 での WebFetch 呼び出しは最大 4~6 回です。
Scrapling フォールバック: WebFetch が 403、空のコンテンツ、CAPTCHA ページ、またはブロックされた応答を返した場合は、cli-web-scrape の自動エスカレーションプロトコルを使って再試行します。
scrapling extract get "URL" /tmp/scrapling-fallback.md→ 読み込み → コンテンツを検証- コンテンツが不十分な場合(JS のみのシェル、データなし、ナビゲーションリンクが大半)→
scrapling extract fetch "URL" /tmp/scrapling-fallback.md --network-idle --disable-resources→ 読み込み → コンテンツを検証 - それでもブロックされる場合 →
scrapling extract stealthy-fetch "URL" /tmp/scrapling-fallback.md --solve-cloudflare - すべての段階で失敗した場合 → URL をスキップし、「scrapling blocked」と記録
信頼度の更新
ラウンド 2 の後、すべての主張を再評価します。
| 変更前 | 新しい証拠 | 変更後 |
|---|---|---|
| [LOW] | 2 つ目のソースが見つかった | [MEDIUM] |
| [MEDIUM] | 3 つ目のソースが見つかった | [HIGH] |
| いずれか | 矛盾がある | 矛盾を記録し、両方の見解を提示 |
深度が default の場合は、ステップ 6 に進みます。
ステップ 5:ラウンド 3 — 検証(Deep のみ)
ラウンド 3 は検証のみを行います。新たな発見は行いません。
上限
以下を対象とする WebFetch の呼び出しは最大 6~10 回です。
| 対象 | 目的 | 最大呼び出し数 |
|---|---|---|
| 重要な主張に関する一次情報源 | 正確性を検証 | 3~4 |
| 独立系ベンチマークサイト | パフォーマンスに関する主張を検証 | 1~2 |
| 矛盾する両方の見解 | 矛盾を解消 | 1~2 |
| バージョンや日付に関する公式サイト | 最新性を確認 | 1~2 |
Scrapling フォールバック: ラウンド 2 と同じ自動エスカレーションプロトコルを使用します。HTTP 段階を試し、コンテンツを検証してから、不十分またはブロックされている場合は Dynamic/Stealthy にエスカレーションします。
ルール
- 発見ではなく検証 — 新たなトピックの探索は行いません
- 影響の大きい主張を優先 — 推奨内容を変える可能性のある主張を対象にします
- 一次情報源を確認 — 要約ではなく、元の情報源を確認します
- 信頼度を更新 — 調査結果に応じて信頼度を上げるか下げます
- 二次情報源より一次情報源を優先 — 一次情報源が二次情報源と矛盾する場合は、その旨を記録します
ステップ 6:統合
フレームワークの選択
references/output-frameworks.md を読み込み、検出された FRAMEWORK に合致するテンプレートを選択します。
テンプレートへの記入
- ヘッダーブロック — フレームワークの種類、トピック、深度、ソース数、日付
- 主要コンテンツ — 調査結果をフレームワークの各セクションに記入
- 信頼度の指標 — 各主張に
[HIGH]、[MEDIUM]、または[LOW]を付与 - コミュニティの見解 — Reddit/X/HN/GitHub の反応を統合
- 統計フッター — ソース数とエンゲージメント指標
- ソースセクション — プラットフォーム別に URL と指標を整理
エンゲージメントを加味した統合
シグナルの強さに応じて、ソースに重み付けします。完全な重み付け表は references/iterative-research.md を参照してください。
| シグナル | しきい値 | 重み |
|---|---|---|
| Reddit の賛成票 | 100+ | 高 |
| X のエンゲージメント | 50+ 件の「いいね」 | 高 |
| GitHub のスター | 1000+ | 高 |
| HN のポイント | 100+ | 高 |
| Substack の「いいね」 | 50+ | 高 |
| 複数プラットフォーム間の一致 | 3+ ソース | 高 |
| 2 つのエンジンでの一致 | Claude + xAI | 高 |
| Seeking Alpha のコメント | 20+ | 中 |
| WSO の賛成票 | 10+ | 中 |
| YouTube の再生回数 | 10K+ | 中 |
| 最近のもの(7 日未満) | いずれか | 中 |
| ソースが 1 つのみ | いずれか | 低 |
統計フッターの形式
Research Statistics
├─ Reddit: {n} threads │ {upvotes} upvotes
├─ X: {n} posts │ {likes} likes │ {reposts} reposts
├─ GitHub: {n} repos │ {stars} total stars
├─ HN: {n} threads │ {points} total points
├─ Substack: {n} articles │ {likes} likes
├─ Financial: {n} articles │ {sources}
├─ LinkedIn: {n} profiles/articles
├─ YouTube: {n} videos
├─ WSO: {n} threads
├─ Crunchbase: {n} profiles
├─ Web: {n} pages │ {domains}
├─ Merged: {n} from Claude + {n} from xAI
└─ Top voices: r/{sub1} │ @{handle1} │ {blog1}
Web のみのモードのフッター:
Research Statistics
├─ Reddit: {n} threads (via Claude WebSearch)
├─ GitHub: {n} repos (via Claude WebSearch)
├─ HN: {n} threads (via Claude WebSearch)
├─ Substack: {n} articles (via Claude WebSearch)
├─ Financial: {n} articles (via Claude WebSearch)
├─ LinkedIn: {n} profiles/articles (via Claude WebSearch)
├─ YouTube: {n} videos (via Claude WebSearch)
├─ Web: {n} pages
└─ Top sources: {site1}, {site2}
Add X/Twitter + broader coverage: Set up xAI API key (see Prerequisites)
ステップ 7:エキスパートモード
調査結果を提示した後、エキスパートモードに入ります。
- キャッシュ済みの結果に基づいて追加の質問に回答します
- 明示的に依頼されない限り、新たな検索は行いません
- 複数の情報源を相互参照します
新たな検索のトリガー(エキスパートモードを終了):
- 「もう一度検索して…」
- 「…についてさらに調べて」
- 「調査を更新して…」
- 「…をさらに深く調べて」
運用モード
| モード | 情報源 | 条件 |
|---|---|---|
| フル | Claude WebSearch + xAI(web + X + Reddit + GitHub + HN + Substack + Finance + LinkedIn) | ステップ 0 で XAI_AVAILABLE=true が返された場合 |
| Web のみ | Claude WebSearch のみ | ステップ 0 で XAI_AVAILABLE=false が返された場合 |
モードはステップ 0 で決まります。省略したり、確認せずに Web のみと判断したりしないでください。
深度の制御
| 深度 | ラウンド数 | 情報源 | xAI 呼び出し回数(フル) | 用途 |
|---|---|---|---|---|
| quick | 1 | 10-15 | 8 | 手早い概要、時間的制約がある場合 |
| default | 2 | 25-40 | 13 | バランスの取れた調査 |
| deep | 3 | 60-90 | 18 + 6-10 WebFetch | 包括的な分析、重要な意思決定 |
コストに関する注意
| アクション | コスト |
|---|---|
| Claude Code WebSearch | 無料(サブスクリプション) |
| xAI 検索呼び出し(種類を問わず) | 1 回あたり $0.005 |
| WebFetch(組み込み) | 無料 |
| scrapling フォールバック(任意) | 無料 |
調査セッションあたりの推定コスト:
| 深度 | フルモード | Web のみ |
|---|---|---|
| quick | ~$0.04(xAI 呼び出し 8 回) | 無料 |
| default | ~$0.065(xAI 呼び出し 13 回) | 無料 |
| deep | ~$0.09(xAI 呼び出し 18 回) | 無料 |
コスト削減の戦略:
- ほとんどのニーズには Claude WebSearch を使用します(無料)
- xAI は X/Twitter(独自の価値)と、プラットフォームごとのより広範なカバレッジを追加します
- 特定の URL を詳しく読むには WebFetch を使用します(無料)。ブロックされたサイトには scrapling をフォールバックとして使用します
重要な制約
必ず行うこと:
- すべての調査セッションの前にステップ 0(xAI キーの検出)を実行します
- xAI キーがある場合:Claude WebSearch と xAI スクリプトを並行して実行します(フルモード)
- xAI キーがない場合:Claude WebSearch のみを使用します(Web のみモード)
- ラウンド間でギャップ分析を行います。省略しないでください
- URL に基づいて結果を統合し、重複を排除します
- アーカイブ済みの GitHub リポジトリはメンテナンスされておらず読み取り専用のため、結果から除外します
- すべての主張に信頼度を示します:
[HIGH]、[MEDIUM]、または[LOW] - 既存の知識ではなく、実際の調査に基づいて総合的な分析を行います
- URL を含む具体的な情報源を引用します
- プログラムで解析するため、xAI スクリプトの呼び出しには
--jsonフラグを使用します references/output-frameworks.mdからフレームワークのテンプレートを読み込みます
行わないこと:
- Claude Code WebSearch を省略しないでください(無料です)
- 並行実行が可能な場合に、検索を順番に実行しないでください
- 異なる検索エンジンから得た重複結果を表示しないでください
- 1 つの情報源から 125 文字を超えて引用しないでください
- ラウンドをまたいでクエリを繰り返さないでください。各ラウンドでは前のラウンドで見つかったギャップを対象にします
- quick または default の深度でラウンド 3 を追加しないでください。ラウンド 3 は deep 専用です
- ラウンド 3 で新しいトピックを見つけないでください。検証のみ行います
トラブルシューティング
xAI キーが見つからない場合:
security find-generic-password -s "xai-api" ~/Library/Keychains/claude-keys.keychain-db
見つからない場合は、上記のキーチェーン設定を実行します。
キーチェーンがロックされている場合:
security unlock-keychain ~/Library/Keychains/claude-keys.keychain-db
X/Twitter の結果がない場合: 有効な xAI API キーが必要です。https://console.x.ai で確認してください。
WebFetch がブロックされた場合(403/CAPTCHA/空の結果): scrapling をインストールし、cli-web-scrape の自動エスカレーション手順(HTTP → 検証 → Dynamic → Stealthy)に従います。
uv tool install 'scrapling[all]'
scrapling install # one-time: install browser engines for Dynamic/Stealthy tiers
スクリプトエラー: uv がインストールされていることを確認します:which uv。インストールされていない場合:curl -LsSf https://astral.sh/uv/install.sh | sh
参考資料
references/output-frameworks.md— フレームワークのテンプレート(比較、概観、詳細分析、意思決定)references/search-patterns.md— 検索演算子と複数ラウンドのクエリパターンreferences/iterative-research.md— ギャップ分析、ラウンドの手順、相互参照の方法