name: sns-research description: | X (Twitter)・Reddit・Hacker News などの SNS から意見・評判・議論を収集しレポートにまとめる。 選ぶべき場合: 「Redditで何と言われているか」「Xでの反応」など SNS の声を調べたいとき 選ぶべきでない場合: 一般的なWeb調査、ニュース記事の収集、ドキュメント処理 triggers: keywords: ["Reddit", "reddit", "Twitter", "Hacker News", "HackerNews", "サブレディット", "subreddit"] max_movements: 999 initial_movement: gather movements: - name: gather edit: true persona: researcher instruction: | ## 調査計画 着手前に調査計画を立てる: 1. 調査対象と対象 SNS を決定する 2. 検索クエリ案を複数考える(日本語・英語の両方を検討) 3. verify からの差し戻しがある場合は、不足点を優先的に解消する 計画に従って SNS から情報を収集し、Write で output/raw/ にテキストファイルとして書き出す。 ## SNS 別の収集方針 ### X (Twitter) - キーワードで広く拾う → XSearch - 特定アカウントの発言を追う → XUserPosts - 議論の流れ・リプライツリーまで欲しい → XPostDetail ### Reddit BrowseWeb で必ず **old.reddit.com** を使う(軽量でテキスト抽出しやすい)。 - 検索: `old.reddit.com/search?q=キーワード` - スレッド: `old.reddit.com/r/{サブレディット}/comments/...` ### Hacker News WebFetch で Algolia API を使う。 - 検索: `https://hn.algolia.com/api/v1/search?query=キーワード` - 記事詳細: `https://hn.algolia.com/api/v1/items/{id}` ## ファイル命名規則 `output/raw/{platform}-{query-slug}.txt` 例: reddit-ollama-vs-vllm.txt, x-ollama-review.txt, hn-local-llm.txt ## SNS 調査の原則 モデルの内部知識だけで情報を書かないこと。必ず実際の SNS データを収集する。 検索ヒットがゼロだった場合も、その事実を raw ファイルに記録する(捏造しない)。 ## 画像・スクリーンショットの収集 SNS 投稿には画像・グラフが含まれることが多い。重要なビジュアルは DownloadFile で `output/images/{platform}-{slug}.png` に保存する。 ## 終了 / 遷移方法 - **次の analyze へ**: `transition({next_step: "analyze"})` - **追加収集のため同じ gather を続行**: `transition({next_step: "gather"})` - **対象が曖昧で確認が必要**: `complete({status: "needs_user_input", missing_info: "...", why_no_default: "..."})` - **技術的失敗で打ち切り**: `complete({status: "aborted", abort_reason: "..."})` allowed_tools: [XSearch, XUserPosts, XPostDetail, XFetchCardMedia, BrowseWeb, WebFetch, WebSearch, Read, Write, Edit, Glob, Grep, DownloadFile, SearchKnowledge, ListNamespaces, ListDocuments, SearchNotes, ReadNote, 'mcp__*'] default_next: analyze rules: - condition: 追加収集が必要(別のSNS、追加クエリ等) next: gather - condition: 十分な情報を収集した next: analyze - name: analyze edit: true persona: analyst instruction: | output/raw/ の収集データを読み込み、分析してレポートを作成する。 手順: 1. Glob で output/raw/ 内のファイル一覧を確認 2. 各ファイルを Read で読み込む 3. 重要な意見・トレンド・共通見解を抽出 4. ポジティブ/ネガティブな意見を分類 5. output/report.md にレポートを書き出す ## レポートの構成 - トピック概要 - SNS 別の主な意見(X / Reddit / HN それぞれ) - 共通する見解・分岐する意見 - まとめ ## 画像の活用 output/images/ に画像がある場合は必ずレポートに埋め込む: `![説明](./images/ファイル名.png)` 情報が不足している場合は gather に戻る(追加の検索クエリを明示すること)。 verify からの差し戻しがある場合は、指摘された不足点・期待する修正を優先的に解消すること。 allowed_tools: [Read, Write, Edit, Glob, Grep, WebSearch, WebFetch, DownloadFile, BatchReviewTextWithLLM, MergeReviewedResults, SearchKnowledge, ListNamespaces, ListDocuments, SearchNotes, ReadNote, 'mcp__*'] default_next: verify rules: - condition: output/report.md にレポートを書き出した next: verify - condition: 情報が不十分で追加収集が必要 next: gather - name: verify edit: false persona: supervisor instruction: | output/ のレポートを確認する。 確認手順: 1. Glob で output/ 内のファイル一覧を確認する 2. output/report.md がなければ「不足がある」と判断し analyze に差し戻す 3. ファイルがあれば Read で内容を確認し、網羅性・正確性・分かりやすさをチェックする 4. 不足があれば、`transition({next_step: "analyze", summary: ...})` で差し戻す。summary は次の形式で書く: [判定] needs_fix ## 問題点 - [ファイル名:行番号または項目名] 何が問題か ## 期待する修正 - 何をどう直すべきか ## 合格基準 - 再レビューで何を確認するか ## 次にやること - 差し戻し先で最初に着手すべき具体的な作業 5. summary は抽象論で終えず、具体的な不足点・期待する修正内容を必ず含める 追加チェック(画像): - output/images/ に画像があるのにレポートに `![` が一つもない場合、 画像埋め込み漏れとして analyze に差し戻す ## チェックシート確認 GetChecklist でチェックシートが存在する場合、全アイテムが完了(done/failed/skipped)していることを確認する。 remaining が 0 でないまま完了してはならない。 ## 合格時のユーザーへの返答(complete ツール) output/ の内容で合格と判断したら、`complete({status: "success", result: ...})` を呼ぶ。 result はそのままユーザーに表示される最終回答。output/report.md を Read で読み、その内容をベースに整形する。 - 「output/xxx.md を確認してください」のようなファイル参照ではなく、内容そのものを回答として返すこと - 【厳守】「✅ 完了」「レポートを作成しました」「確認しました」等のステータス表示・メタ説明は一切書かない。1行目からいきなり本題の内容を書き始めること - 調査結果・発見・結論を会話調で分かりやすく伝える - 表・リスト・見出しなど Markdown 書式を活用して読みやすくする ## 終了方法のまとめ - 合格: `complete({status: "success", result: "ユーザー向け最終回答"})` - 修正必要: `transition({next_step: "analyze", summary: "差し戻し指摘"})` (上記形式で) - 技術的失敗: `complete({status: "aborted", abort_reason: "..."})` allowed_tools: [Read, Glob, Grep] default_next: COMPLETE rules: - condition: output/ にファイルがない、または内容に不足がある next: analyze