mcpField
R
reddit-sentiment-analysis

reddit-sentiment-analysis

github.com/nateaデータ・データベース463 回インストール53 週間前に更新
リポジトリ

reddit-sentiment-analysis について

製品、ブランド、ゲームなどをめぐる Reddit の議論を分析するワークフロー型スキルです。エージェントによる投稿・コメントの収集、感情分類、論点抽出を導き、製品や市場の判断に役立つ根拠付きレポートを作成します。

主な機能

  1. 01人気投稿とコメントの収集
  2. 02肯定・否定・中立・要望の分類
  3. 03製品の論点と頻出テーマの抽出
  4. 04期間や製品をまたいだ感情比較
  5. 05引用と件数を含む構造化レポート

活用シーン

  1. 01製品やゲームへの反応の把握
  2. 02よくある不満や機能要望の発見
  3. 03競合製品に対するコミュニティの見方の比較
  4. 04テーマへの感情の時間的変化の追跡

MCP 対応

Reddit MCP サーバーの設定が必要で、そのツールを使って subreddit の投稿やコメントを含む投稿内容を取得します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/natea/fitfinder --skill reddit-sentiment-analysis

インストール後、Claude Code で/reddit-sentiment-analysisを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

DEMO-RESULTS.md
examples.md
README.md

詳細

Reddit のセンチメント分析スキル

目的

このスキルでは、Reddit の議論を体系的に分析し、製品、ブランド、ゲーム、企業、その他のトピックに関するコミュニティの意見、好み、要望を把握できます。人々が気に入っている点、批判している点、望んでいる改善点について、実用的なインサイトを得られます。

このスキルを使う場面

次のような場合にこのスキルを使用します。

  • ゲーム、製品、ブランドに関するコミュニティのセンチメントを分析する
  • ユーザーがどの機能や側面を評価しているかを把握する
  • よくある不満や問題点を特定する
  • ユーザーが望んでいる改善や変更を見つける
  • コミュニティの議論から競合に関するインテリジェンスを得る
  • 特定のトピックに関するセンチメントの傾向を時系列で追跡する
  • ユーザーのフィードバックに基づき、データに裏付けられた製品の意思決定を行う

前提条件

このスキルを使用するには、Reddit MCP サーバーを .mcp.json で設定する必要があります。

{
  "mcpServers": {
    "reddit": {
      "command": "uvx",
      "args": ["mcp-server-reddit"]
    }
  }
}

基本的なワークフロー

フェーズ 1:対象の特定とデータ収集

1. 分析対象を定義する

  • 分析する製品、ブランド、ゲーム、トピックを特定します
  • 関連するサブレディットを決定します(例:r/gaming、r/Games、製品固有のサブレディット)
  • 期間を設定します(最近の投稿、月間/年間の人気投稿)
  • 範囲を定義します(分析する投稿やコメントの件数)

2. Reddit データを収集する

  • トレンドの議論には mcp__reddit__get_subreddit_hot_posts を使用します
  • 高評価のコンテンツには mcp__reddit__get_subreddit_top_posts を使用します
  • 投稿とコメントの詳細には mcp__reddit__get_post_content を使用します
  • 有意義な分析のため、最低 10~20 件の投稿を収集します
  • 投稿とトップレベルのコメントの両方を含めます
フェーズ 2:センチメント分類

3. 各議論を分析する

各投稿とコメントについて、センチメントを次のように分類します。

ポジティブなシグナル:

  • 明示的な称賛:「大好き」「素晴らしい」「最高」「すばらしい」
  • 推薦:「強くおすすめする」「ぜひ試すべき」「試す価値がある」
  • 感情的な肯定:「楽しい」「夢中になれる」「満足できる」「やみつきになる」
  • 問題の解決:「ついに修正された」「今は快適に動く」
  • 比較による称賛:「X より良い」「より優れている」

ネガティブなシグナル:

  • 明示的な批判:「嫌い」「ひどい」「最悪」「最低」
  • 失望:「期待外れ」「もっと期待していた」「過大評価されている」
  • 問題:「壊れている」「動かない」「バグが多い」「クラッシュする」
  • いら立ち:「うっとうしい」「イライラする」「ばかげている」
  • 後悔:「お金の無駄」「その価値はない」「返金した」

中立的なシグナル:

  • センチメントを伴わない質問
  • 事実に関する記述
  • 技術的な議論
  • 情報の問い合わせ

希望/要望のシグナル:

  • 「~だったらいいのに」「~すべきだ」「~ならもっと良くなる」
  • 「もっと~が必要」「~が足りない」「~がない」
  • 「~を追加してほしい」「~を待っている」
  • 機能のリクエストや提案
フェーズ 3:エンティティと側面の抽出

4. 言及されている具体的な側面を特定する

具体的に何について議論されているかを抽出します。

  • 機能:ゲームプレイの仕組み、UI/UX、具体的な機能
  • パフォーマンス:速度、安定性、最適化、バグ
  • コンテンツ:ストーリー、レベル、バリエーション、奥深さ
  • 価値:価格設定、マネタイズ、費用対効果
  • サポート:カスタマーサービス、アップデート、コミュニティとの関わり
  • 比較:競合製品、過去のバージョンとの比較
フェーズ 4:集約と要約

5. 構造化された要約を作成する

次の形式で出力を生成します。

# Sentiment Analysis: [Topic/Product Name]

**Analysis Period**: [Date Range]
**Subreddits Analyzed**: [List]
**Posts Analyzed**: [Number]
**Comments Analyzed**: [Number]

## Overall Sentiment Score
- Positive: X%
- Negative: Y%
- Neutral: Z%
- Mixed: W%

## What People LIKE
1. **[Aspect/Feature Name]** (mentioned X times, Y% positive)
   - Representative quotes: "[quote 1]", "[quote 2]"
   - Common themes: [summary]

2. **[Another Aspect]** (...)
   - Representative quotes: ...
   - Common themes: ...

[Continue for top 5-7 positive aspects]

## What People DISLIKE
1. **[Problem/Issue Name]** (mentioned X times, Y% negative)
   - Representative quotes: "[quote 1]", "[quote 2]"
   - Common complaints: [summary]
   - Severity: [Low/Medium/High based on frequency and intensity]

2. **[Another Issue]** (...)
   - Representative quotes: ...
   - Common complaints: ...
   - Severity: ...

[Continue for top 5-7 negative aspects]

## What People WISH FOR
1. **[Feature/Improvement Request]** (mentioned X times)
   - Representative quotes: "[quote 1]", "[quote 2]"
   - Common requests: [summary]
   - Urgency: [Low/Medium/High based on frequency and intensity]

2. **[Another Request]** (...)
   - Representative quotes: ...
   - Common requests: ...
   - Urgency: ...

[Continue for top 5-7 requests]

## Key Insights
- [Insight 1: Major finding about sentiment patterns]
- [Insight 2: Surprising or notable trend]
- [Insight 3: Competitive advantages/disadvantages]
- [Insight 4: Recommended actions based on sentiment]

## Trending Topics
- [Topic 1]: [Brief description of emerging discussion]
- [Topic 2]: [Brief description]

## Competitor Mentions
- [Competitor 1]: [Sentiment when mentioned, context]
- [Competitor 2]: [Sentiment when mentioned, context]

実装手順

ステップ 1:Todo リストを作成する
TodoWrite([
  "Identify target subreddits for analysis",
  "Collect hot posts from subreddit(s)",
  "Collect top posts from time period",
  "Fetch detailed post content and comments",
  "Classify sentiment for each post/comment",
  "Extract aspects and entities mentioned",
  "Aggregate positive sentiment patterns",
  "Aggregate negative sentiment patterns",
  "Aggregate wish/desire patterns",
  "Calculate sentiment percentages",
  "Generate structured summary report"
])
ステップ 2:データを並列に収集する

重要:Reddit API の呼び出しはすべて、1 つのメッセージにまとめて実行します。

[Single Message - All Data Collection]:
  mcp__reddit__get_subreddit_hot_posts({subreddit_name: "gaming", limit: 20})
  mcp__reddit__get_subreddit_top_posts({subreddit_name: "gaming", time: "month", limit: 20})
  mcp__reddit__get_subreddit_hot_posts({subreddit_name: "Games", limit: 20})
  mcp__reddit__get_subreddit_top_posts({subreddit_name: "Games", time: "month", limit: 20})
ステップ 3:コメントを並列に分析する

関連する各投稿 ID について、詳細を並列に取得します。

[Single Message - All Post Details]:
  mcp__reddit__get_post_content({post_id: "abc123", comment_depth: 3, comment_limit: 20})
  mcp__reddit__get_post_content({post_id: "def456", comment_depth: 3, comment_limit: 20})
  mcp__reddit__get_post_content({post_id: "ghi789", comment_depth: 3, comment_limit: 20})
  // ... up to 10-20 posts in parallel
ステップ 4:センチメント分析エンジン

コンテンツ(投稿タイトル、投稿本文、コメント)の各項目について、次の処理を行います。

  1. テキストをトークン化して正規化する

    • 小文字に変換します
    • URL と特殊文字を削除します
    • キーフレーズを特定します
  2. センチメントスコアリングを適用する

    function analyzeSentiment(text) {
      const positive_score = countMatches(text, POSITIVE_KEYWORDS);
      const negative_score = countMatches(text, NEGATIVE_KEYWORDS);
      const wish_score = countMatches(text, WISH_KEYWORDS);
    
      return {
        sentiment: determineOverallSentiment(positive_score, negative_score),
        confidence: calculateConfidence(positive_score, negative_score),
        wishes: wish_score > 0,
        aspects: extractAspects(text)
      };
    }
    
  3. 文脈と側面を抽出する

    • どの名詞や機能が話題になっていますか?
    • どの形容詞がそれを説明していますか?
    • どの動詞が行動や要望を示していますか?
ステップ 5:レポートを生成する

構造化された要約を /docs/reddit-sentiment-analysis-[topic]-[date].md に保存します。

設定オプション

基本分析(クイック)
  • サブレディット:1~2
  • 投稿:10~20
  • 投稿あたりのコメント:10~15
  • 所要時間:約5分
包括的な分析(詳細)
  • サブレディット:3~5
  • 投稿:40~60
  • 投稿あたりのコメント:20~30
  • 所要時間:約15分
競合分析(広範囲)
  • サブレディット:5~10(競合のサブレディットを含む)
  • 投稿:60~100
  • 投稿あたりのコメント:15~20
  • 所要時間:約20分

使用例

例 1:ゲームの感情分析
User: "Analyze Reddit sentiment about Elden Ring"

Agent workflow:
1. Create todos for analysis pipeline
2. Identify subreddits: r/Eldenring, r/gaming, r/Games
3. Collect hot + top posts (parallel): 60 posts total
4. Fetch post details (parallel): 30 most relevant posts
5. Analyze ~500 comments for sentiment
6. Extract aspects: combat, difficulty, exploration, story, performance
7. Generate summary showing:
   - LIKES: Combat system (95%), exploration (92%), art direction (88%)
   - DISLIKES: Performance issues (67%), unclear quest objectives (54%)
   - WISHES: Better quest tracking, PC optimization, more checkpoints
8. Save report to docs/reddit-sentiment-analysis-eldenring-2025-01-26.md
例 2:製品ブランドの分析
User: "What do people think about Tesla on Reddit?"

Agent workflow:
1. Create todos for brand analysis
2. Identify subreddits: r/teslamotors, r/electricvehicles, r/cars
3. Collect discussions mentioning "Tesla" (100 posts)
4. Analyze sentiment across aspects: quality, service, pricing, features
5. Generate brand perception summary:
   - LIKES: Autopilot, acceleration, software updates
   - DISLIKES: Build quality, service wait times, pricing
   - WISHES: Better quality control, more service centers, lower prices
   - Competitive position vs. other EVs

ベストプラクティス

DO:
  • ✅ バランスの取れた視点を得るため、複数のサブレディットを分析する
  • ✅ 新しさと質を両立するため、「hot」と「top」の両方の投稿を含める
  • ✅ 投稿のタイトルだけでなく、コメントも読む(コメントには豊かな感情が表れています)
  • ✅ 根拠として直接引用を提示する
  • ✅ 割合と件数で感情を定量化する
  • ✅ 肯定的/否定的だけでなく、観点や機能ごとに整理する
  • ✅ レポートを /docs/ ディレクトリに保存する
  • ✅ すべての API 呼び出しを 1 つのメッセージにまとめる
DON'T:
  • ❌ 1 つのサブレディットだけを分析する(偏りのリスクがあります)
  • ❌ コメントの感情を無視する(投稿だけでは不十分です)
  • ❌ 引用による根拠なしに主張する
  • ❌ 1 回の分析で複数の製品を混在させる(混乱を招きます)
  • ❌ レポートをルートディレクトリに保存する
  • ❌ API 呼び出しを逐次実行する(並列でまとめて実行します)

高度な機能

時系列での感情追跡

期間ごとの感情を比較します:

[Parallel Time-Based Analysis]:
  get_subreddit_top_posts({time: "week"})
  get_subreddit_top_posts({time: "month"})
  get_subreddit_top_posts({time: "year"})

感情の変化を示すトレンドレポートを生成します。

競合ベンチマーク

複数の製品を同時に分析します:

[Parallel Competitive Analysis]:
  // Collect data for Product A
  // Collect data for Product B
  // Collect data for Product C

感情の比較マトリックスを生成します。

観点別の詳細分析

すべての言及から、1 つの機能や観点に焦点を当てます:

// Filter all content mentioning "multiplayer" or "co-op"
// Analyze sentiment specifically about that aspect
// Generate aspect-focused report

出力ファイル

すべての分析レポートは以下に保存されます:

  • /docs/reddit-sentiment-analysis-[topic]-[date].md - メインレポート
  • /docs/reddit-raw-data-[topic]-[date].json - 生データ(任意)

他のスキルとの連携

このスキルは以下と相性よく連携します:

  • competitive-analysis:感情データを市場でのポジショニングに活用します
  • product-roadmap:ユーザーの要望に基づいて機能の優先順位を決めます
  • market-research:他のデータソースと組み合わせます
  • trend-analysis:感情の変化を時系列で追跡します

トラブルシューティング

問題:見つかった投稿が少なすぎる

  • 解決策:対象のサブレディットを増やし、期間を広げます

問題:感情が極端に偏っている(すべて肯定的、または否定的)

  • 解決策:サブレディットの偏りを確認します(ファン向けと一般向け)

問題:分析で重要な観点が抜けている

  • 解決策:コメントの取得数と深さを増やします

問題:分析に時間がかかりすぎる

  • 解決策:投稿数を減らし、上位の投稿だけに絞ります

まとめ

このスキルは、構造化されていない Reddit の議論を、実用的な感情分析の知見に変換します。具体的には、以下を行います。

  1. 関連する投稿とコメントを体系的に収集する
  2. 文脈と根拠に基づいて感情を分類する
  3. 議論されている具体的な観点や機能を抽出する
  4. 傾向を集約して構造化された要約にまとめる
  5. 直接引用を添えて、定量化した知見を提示する
  6. ユーザーが好む点、好まない点、望んでいる点を特定する
  7. 製品やビジネスの意思決定にすぐ活用できるレポートを提供する

出力されるのは、コミュニティの感情を根拠に基づいて包括的に把握したものであり、製品開発、マーケティング戦略、競争上のポジショニングに役立てることができます。

コメント