mcpField
C
community-pulse

community-pulse

github.com/cognyaiマーケティング・グロース11147 回インストール2 週間前に更新
リポジトリ

community-pulse について

community-pulseは、コミュニティ管理者向けにDiscordサーバーの週次分析を作成するスキルです。メンバーの増減、チャンネル活動、投稿者、話題、未回答の質問をまとめ、実行可能な対応策を提示します。

主な機能

  1. 01週ごとのメンバー増減を比較
  2. 02チャンネル別のメッセージ活動を集計
  3. 03活発な投稿者と離脱リスクのあるメンバーを特定
  4. 04話題、感情、未回答の質問を要約
  5. 05コミュニティの状況に応じた対応策を提案

活用シーン

  1. 01Discordコミュニティの状態を定期確認
  2. 02メンバー増減やチャンネル活動の変化を把握
  3. 03回答すべき質問やフォロー対象のメンバーを特定

MCP 対応

Discord MCPを通じてサーバー、チャンネル、メンバー、メッセージのデータを読み取ります。Cognyのクラウド環境では提案をfindingとして記録できます。通常は読み取り専用で、メッセージは送信しません。

インストール

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

$npx skills add https://github.com/cognyai/claude-code-marketing-skills --skill community-pulse

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

詳細

コミュニティの動向 — Discord の週間ダイジェスト

活発な Discord サーバーの中から、重要な動きを見つけましょう。誰が参加したか、どのチャンネルが盛り上がっているか、誰が貢献しているか、どんな質問が寄せられているか、未解決のまま残っていることは何かを、15 分で対応できる 1 つのダイジェストにまとめます。

使い方

/community-pulse — 接続された Discord サーバーの週間ダイジェストです。

ボットが複数のサーバーに参加している場合は、ギルド ID を渡します。

/community-pulse 123456789012345678

前提条件

Discord MCP では、Discord Developer Portal → Bot タブ → Privileged Gateway Intents で2 つの特権インテントを有効にする必要があります。

  • Server Members Intent — 有効でない場合、list_guild_members が返すのはボット自身だけです。
  • Message Content Intent — 有効でない場合、get_channel_messages は投稿者とタイムスタンプを返しますが、すべての content フィールドが空になります。

メンバーリストが 1 件だけ、またはメッセージ内容が空でレポートが返ってきた場合、その原因はほぼ間違いなくこれです。このスキルは、誤解を招く数値を黙って出すのではなく、出力の先頭で不足を明確に示します。

また、ボットには、分析対象にする各チャンネルでView Channel + Read Message Historyの権限が必要です。これらはインテントではなく、チャンネル単位の権限です。

手順

1. 接続を確認する

mcp__cogny__discord__get_current_user を呼び出して、ボットの ID を確認します。 認証エラーで失敗した場合は、cogny ウェアハウスのボットトークンが無効です。app.cogny.com/warehouse/<id>/settings/api で再接続してください。

2. ギルドを選ぶ

list_guilds を呼び出します。ギルドが 1 つだけの場合は、それを使います。複数ある場合は、引数で渡されたギルド ID を優先します。引数が渡されておらず、複数ある場合は、一覧を表示してユーザーに指定を求めます。

選択したら、ベースラインを取得するために get_guild(guild_id, with_counts=True) を呼び出します。

  • 名前、オーナー、プレミアムティア
  • approximate_member_count(「メンバー」統計として使用)
  • approximate_presence_count(現在オンラインの人数)
3. チャンネルを一覧にする

list_guild_channels(guild_id) を呼び出します。チャンネルを次のように分類します。

  • 重要な情報が集まるチャンネル — intro、welcome、feedback、support、showcase、hiring、general に一致するチャンネル(コミュニティの健全性を示す情報が集まることが多いチャンネルです)
  • カテゴリ — グループ用のコンテナ(メッセージがないため対象外)
  • ボイス/ステージ — 週間ダイジェストでは対象外

分析対象は最大 30 チャンネルに制限し、実行時間を抑えます。

4. メンバーの増加 — 過去 7 日間

list_guild_members(guild_id, limit=1000) を呼び出し、すべて取得するか、5000 人を取得するまで after=<last user id> でページネーションします。

各メンバーについて joined_at を解析し、次のように分類します。

  • 今週 — 過去 7 日間に参加
  • 先週 — 8~14 日前に参加
  • 既存 — 14 日より前に参加

次の項目を算出します。

  • 今週の参加者数(人数+名前/ID の一覧+曜日別の内訳)
  • 先週の参加者数(WoW 比較用)
  • WoW の増減(実数と割合)
  • 1 日の参加者が週間合計の 40% を超える場合は急増として指摘
5. チャンネルのアクティビティ

手順 3 で抽出した各テキストチャンネルについて(上限 30、重要な情報が集まるチャンネルを優先します)。

  1. get_channel_messages(channel_id, limit=100) を呼び出し、最新のメッセージを取得します。
  2. 取得したメッセージから、次の項目を集計します。
    • timestamp が過去 7 日間に含まれるメッセージ数
    • 8~14 日前のメッセージ数(WoW 比較用)
    • 今週のユニーク投稿者数
    • 最新メッセージのタイムスタンプ
  3. 取得したメッセージのうち最も古いものがまだ過去 7 日間に含まれる場合は、before=<earliest message id> で次のページを 1 ページ取得します。チャンネルごとに 200 件のメッセージを上限とします。
  4. 次のように分類します。
分類条件
活発今週のメッセージが 20 件以上、ユニーク投稿者が 5 人以上
安定メッセージが 5~19 件、ユニーク投稿者が 3 人以上
低調メッセージが 1~4 件
停滞今週のメッセージが 0 件で、最後のアクティビティが 14 日より前
6. 上位貢献者と潜在メンバーの活性化

ステップ 5 のメッセージサンプルを、すべてのチャンネルを対象に投稿者ごとに集計します。

  • 今週のメッセージ総数
  • 投稿したチャンネル
  • 受け取ったリアクション(各メッセージの reactions[].count の合計)

次に、以下を示します。

  • 上位 5 名の貢献者 — メッセージ数順
  • 新たに活発になったメンバー — 参加から 30 日以上経過し、今週のメッセージが 3 件以上、8~14 日前のメッセージが 0 件のメンバー。潜伏していたものの、活動を始めたメンバーです。
  • 離脱のリスクがある常連メンバー — 8~14 日前のメッセージが 10 件以上、今週のメッセージが 2 件以下のメンバー。活動が鈍っているため、様子を確認する価値があります。
7. トピックとテーマ

content が空でない場合(Message Content Intent が有効な場合):

  1. チャンネルごとにメッセージをグループ化し、実際のテキストを読みます。
  2. 主なトピックを 3 つ特定します。5 件以上のメッセージ、または 2 つ以上のチャンネルで取り上げられているトピックを、主なトピックとします。
  3. 各トピックについて、1 文で要約し、代表的な引用を 1~2 件(「@member の発言:…」の形式で匿名化)示し、センチメント(肯定的/中立/混在/懸念あり)を示します。
  4. 未回答の質問を特定します。サンプル内のスレッドで返信がない、「?」で終わるメッセージが対象です。これらは満たされていないニーズです。

どこでも content が空の場合は、このステップを省略し、次の注記を 1 行で記載します。 「トピック分析を利用できません — Discord Developer Portal でボットの Message Content Intent を有効にしてください。」

8. 3~6 件のアクションを提案する

各アクションには、以下の条件が必要です。

  • 根拠となった具体的なシグナルを示す(「今週の参加者数が 38% 減少」など)
  • 30 分未満で実行できる(大きな戦略転換ではなく、週次の活動でできること)
  • 明確な担当者と、完了条件を設定する

アクションの例:

  • 新たに活発になったメンバーを、名前を挙げて #general で歓迎する
  • 離脱のリスクがある常連メンバーに、個別 DM または @メンションで再度働きかける
  • 未回答の質問に答えるか、モデレーターに割り当てる
  • トピックに関する質問を投稿して Dead チャンネルを再活性化するか、アーカイブする
  • 週次まとめで上位貢献者を紹介する
  • Hot チャンネルのシグナルをプロダクトチームに共有する(例:機能リクエストの急増)
9. 出力

次の形式でレポートを出力します。

Community Pulse — <guild-name>
Week of <YYYY-MM-DD> – <YYYY-MM-DD>

⚠️  Intent gap: Message Content Intent off — topic analysis disabled.
    (Skip this line if intents are configured.)

Pulse
- Members: 1,247 (+18 WoW · +1.4%)
- Active authors: 34 (+6 WoW)
- Total messages sampled: 412 (+71 WoW)
- Online ratio: 11% (last week 9%)

Channel Activity
| Channel        | Msgs | Authors | Status |
|----------------|------|---------|--------|
| #introductions | 28   | 19      | Hot    |
| #general       | 142  | 22      | Hot    |
| #showcase      | 8    | 5       | Steady |
| #help          | 3    | 2       | Quiet  |
| #off-topic     | 0    | 0       | Dead   |

Top Contributors
1. @member (24 messages, 31 reactions, 4 channels)
…

Newly Active (lurker → contributor this week)
- @member  joined 2026-02-14, 5 messages this week, top channel #showcase
…

At-Risk Regulars (going quiet)
- @member  was 18/wk last week → 1/wk this week, top channel #general
…

Top Themes (Message Content Intent required)
1. …

Unanswered Questions
- #help  "How do I …" — @member, 2 days ago

Recommended Actions
1. Welcome @member1, @member2, @member3 in #general
   Why: 3 lurkers became active this week
   Owner: community manager · Done when: posted by EOW
2. …
10. 調査結果を記録する(クラウドティアのみ)

mcp__cogny__create_finding が利用可能な場合は、推奨する各アクションをファインディングとして登録し、ウェアハウスのアクションキューに表示されるようにします。

{
  "title": "Welcome 3 newly-active members in #general",
  "body": "Lurkers @x, @y, @z each posted ≥3 messages this week after >30 days quiet. Acknowledge to lock them in.",
  "action_type": "community_engagement",
  "expected_outcome": "Each replies or reacts within 48h",
  "estimated_impact_usd": 0,
  "priority": "medium"
}

Discord のアクションタイプ:

  • community_engagement — 歓迎、メンション、離脱リスクがある常連メンバーへの連絡
  • content_response — 未回答の質問への回答、まとめの投稿
  • channel_management — 活動のないチャンネルのアーカイブ、再編成、権限の修正
  • intent_configuration — Server Members または Message Content Intent の再有効化
  • bot_permission — より広い権限セットでのボットの再インストール

重要なルール

  1. 1 回の実行につき 1 つのギルドを対象にします。 ボットが複数のギルドに参加している場合は、1 つ選んで完全に分析し、レポートを分散させないでください。
  2. まず Intent を確認します。 list_guild_members が 1 行を返す場合、またはすべての content フィールドが空の場合は、ほかの数値を示す前に冒頭で目立つように警告してください。レポートの残りの部分が誤解を招くものになります。
  3. メッセージの位置ではなく、実際のタイムスタンプで分類します。 Discord はメッセージを新しい順に返します。各 timestamp が 7 日間の対象期間内かを確認してください。
  4. 実行時の上限を守ってください — チャンネル数は 30、チャンネルごとのメッセージ数は 200、メンバー数は 5000 です。完全なレポートより、役に立つレポートを優先してください。
  5. メッセージ内容は匿名化してください — 表示名と最初の文だけで十分です。メッセージがすでにピン留めされている場合、または投稿者がワークスペースのオーナーである場合を除き、メッセージ本文全体を貼り付けないでください。
  6. デフォルトは読み取り専用です。 send_message は呼び出さないでください(許可されたツールのリストにありません)。ダイジェストはユーザーが行動するためのものであり、ボットが配信するためのものではありません。
  7. 単一時点の数値ではなく、推移を重視します。 1 週間分の数値はノイズであり、週ごとの差分がシグナルです。必ず比較を含めてください。
  8. 観察よりアクションを重視します。 このスキルの要点はステップ 8 です。明確な次のステップを 3 つ示さずに分析を 8 段落書いたなら、分析しすぎです。内容を削ってください。

コメント