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. 01定期检查 Discord 社区健康状况
  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 分钟内采取行动的摘要。

用法

/community-pulse — 生成已连接 Discord 服务器的每周摘要。

如果机器人加入了多个服务器,请传入一个 guild ID:

/community-pulse 123456789012345678

前提条件

Discord MCP 需要在 Discord Developer Portal → Bot 标签页 → Privileged Gateway Intents 中启用 两个特权意图:

  • 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 确认机器人身份。 如果因身份验证错误而失败,说明 cogny 仓库中的机器人令牌无效——请前往 app.cogny.com/warehouse/<id>/settings/api 重新连接。

2. 选择 guild

调用 list_guilds。如果只有一个 guild,就使用它。如果有多个,则优先使用作为参数传入的 guild 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),使用 after=<last user id> 翻页,直到没有更多成员或已获取 5000 名成员。

对每位成员解析 joined_at,并归入以下类别:

  • 本周 — 过去 7 天内加入
  • 上周 — 8–14 天前加入
  • 现有成员 — 14 天以前加入

计算:

  • 本周加入人数(数量 + 姓名 / ID 列表 + 按加入星期几的细分)
  • 上周加入人数(用于 WoW 对比)
  • WoW 变化的绝对值和百分比
  • 如果某一天的加入人数占本周总加入人数的 >40%,则提示峰值
5. 频道活跃度

针对步骤 3 中的每个文本频道(最多 30 个,优先处理高信号频道):

  1. 调用 get_channel_messages(channel_id, limit=100) — 获取最近一批消息。
  2. 根据这批消息:
    • 统计 timestamp 在过去 7 天内的消息数
    • 统计第 8–14 天的消息数(用于 WoW 对比)
    • 本周的独立作者数
    • 最近一条消息的时间戳
  3. 如果这批消息中最早一条仍在过去 7 天内,则使用 before=<earliest message id> 再翻一页。每个频道最多获取 200 条消息。
  4. 分类:
类别标准
热门本周消息数 ≥20,独立作者数 ≥5
稳定消息数 5–19,独立作者数 ≥3
安静消息数 1–4
死寂本周没有消息,且上次活跃时间在 14 天以前
6. 核心贡献者与潜水成员转化

按作者汇总第 5 步中所有频道的消息样本:

  • 本周消息总数
  • 发过消息的频道
  • 收到的回应(按每条消息的 reactions[].count 求和)

然后列出:

  • 前 5 名贡献者——按消息数量排序
  • 新近活跃成员——加入时间超过 30 天,本周发送了 ≥3 条消息,且第 8–14 天内没有发送消息。这些成员此前一直潜水,最近刚开始参与。
  • 有流失风险的常规成员——第 8–14 天发送了 ≥10 条消息,本周发送了 ≤2 条消息。他们正在变得沉默,值得主动问候。
7. 话题与主题

如果 content 非空(已开启 Message Content Intent):

  1. 按频道对消息分组,并阅读实际内容。
  2. 找出 3 个主导话题。某个话题在 ≥5 条消息中出现,或出现在 ≥2 个频道中,即为主导话题。
  3. 对每个话题:用一句话概括,引用 1–2 条代表性消息(匿名显示为“@member 表示:…”),并标注情绪(积极 / 中性 / 混合 / 令人担忧)。
  4. 标记 未获回答的问题——以“?”结尾、且在抽样线程中没有回复的消息。这些问题代表尚未满足的需求。

如果所有地方的 content 都为空,跳过此步骤并写一行说明: “话题分析不可用——请在 Discord Developer Portal 中为机器人启用 Message Content Intent。”

8. 推荐 3–6 项行动

每项行动必须:

  • 引用促使采取行动的具体信号(例如“本周加入人数下降了 38%”)
  • 能在 <30 分钟内完成(不做重大的战略调整——这是每周例行工作)
  • 明确负责人和清晰的“完成”标准

可参考的行动形式:

  • 在 #general 中点名欢迎新近活跃成员
  • 通过定向私信或 @提及,重新联系有流失风险的常规成员
  • 回答未获解答的问题,或指派版主处理
  • 在不活跃的频道中发布相关问题以恢复活跃,或将其归档
  • 在每周总结中表扬贡献最多的成员
  • 将活跃频道中的信号反馈给产品团队(例如功能请求激增)
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. 每次运行只分析一个 guild。 如果机器人加入了多个 guild,选一个并完整分析——不要稀释报告内容。
  2. 先验证 intents。 如果 list_guild_members 只返回 1 行,或所有 content 字段都为空,必须在报告最上方明确标出,再列出任何其他数字——否则报告其余内容会产生误导。
  3. 依据真实时间戳进行分桶,而不是按消息的位置。Discord 按时间倒序返回消息;请根据每条消息的 timestamp 确认其是否位于 7 天窗口内。
  4. 遵守运行时上限——30 个频道、每个频道 200 条消息、5000 名成员。实用的输出胜过面面俱到。
  5. 匿名处理消息内容——显示名称加第一句话即可。除非消息已置顶,或作者是工作区所有者,否则不要粘贴完整消息正文。
  6. 默认只读。 不要调用 send_message(它不在允许的工具列表中)。这份摘要供用户采取行动,不是让机器人广播的。
  7. 看趋势,而非快照。 单周数据只是噪声,周环比变化才是信号。务必包含对比数据。
  8. 行动优先于观察。 第 8 步是这项技能的核心。如果你写了 8 段分析,却没有明确的 3 项后续行动,那就是分析过度——删减。

评论

支持 Markdown