关于 community-pulse
community-pulse 是用于分析 Discord 社区并生成每周摘要的技能,面向社区管理者。它汇总成员增长、频道活动、贡献者、讨论主题和未答问题,并给出可执行建议。
主要功能
- 01对比每周成员增长
- 02按频道统计消息活动
- 03识别活跃贡献者与风险成员
- 04归纳主题、情绪和未答问题
- 05根据社区信号提出行动建议
适用场景
- 01定期检查 Discord 社区健康状况
- 02发现成员增长或频道活跃度变化
- 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 个,优先处理高信号频道):
- 调用
get_channel_messages(channel_id, limit=100)— 获取最近一批消息。 - 根据这批消息:
- 统计
timestamp在过去 7 天内的消息数 - 统计第 8–14 天的消息数(用于 WoW 对比)
- 本周的独立作者数
- 最近一条消息的时间戳
- 统计
- 如果这批消息中最早一条仍在过去 7 天内,则使用
before=<earliest message id>再翻一页。每个频道最多获取 200 条消息。 - 分类:
| 类别 | 标准 |
|---|---|
| 热门 | 本周消息数 ≥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):
- 按频道对消息分组,并阅读实际内容。
- 找出 3 个主导话题。某个话题在 ≥5 条消息中出现,或出现在 ≥2 个频道中,即为主导话题。
- 对每个话题:用一句话概括,引用 1–2 条代表性消息(匿名显示为“@member 表示:…”),并标注情绪(积极 / 中性 / 混合 / 令人担忧)。
- 标记 未获回答的问题——以“?”结尾、且在抽样线程中没有回复的消息。这些问题代表尚未满足的需求。
如果所有地方的 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 Intentbot_permission— 使用更广泛的权限集重新安装机器人
重要规则
- 每次运行只分析一个 guild。 如果机器人加入了多个 guild,选一个并完整分析——不要稀释报告内容。
- 先验证 intents。 如果
list_guild_members只返回 1 行,或所有content字段都为空,必须在报告最上方明确标出,再列出任何其他数字——否则报告其余内容会产生误导。 - 依据真实时间戳进行分桶,而不是按消息的位置。Discord 按时间倒序返回消息;请根据每条消息的
timestamp确认其是否位于 7 天窗口内。 - 遵守运行时上限——30 个频道、每个频道 200 条消息、5000 名成员。实用的输出胜过面面俱到。
- 匿名处理消息内容——显示名称加第一句话即可。除非消息已置顶,或作者是工作区所有者,否则不要粘贴完整消息正文。
- 默认只读。 不要调用
send_message(它不在允许的工具列表中)。这份摘要供用户采取行动,不是让机器人广播的。 - 看趋势,而非快照。 单周数据只是噪声,周环比变化才是信号。务必包含对比数据。
- 行动优先于观察。 第 8 步是这项技能的核心。如果你写了 8 段分析,却没有明确的 3 项后续行动,那就是分析过度——删减。