Skip to content
Marketing
Skill

/community-pulse

Weekly read on community health — Discord joins, active channels, top contributors, themes and unanswered questions, plus Crisp support conversations and YouTube comments when connected

From plugin
claude-code-marketing-skills
11462 skills

Claude Code

$ npx -y skills add cognyai/claude-code-marketing-skills --skill community-pulse --agent claude-code

SKILL.md

community-pulse.SKILL.md
name: community-pulse
description: Weekly read on community health — Discord joins, active channels, top contributors, themes and unanswered questions, plus Crisp support conversations and YouTube comments when connected
version: "1.1.2"
requires: cogny-mcp
author: Cogny AI
platforms: [discord, crisp, youtube]
user-invocable: true
argument-hint: ""
allowed-tools:
  # Discord MCP read tools (via Cogny MCP Proxy)
  - mcp__cogny__refresh_mcp_discovery
  - mcp__cogny__mcp__Discord__get_current_user
  - mcp__cogny__mcp__Discord__list_guilds
  - mcp__cogny__mcp__Discord__get_guild
  - mcp__cogny__mcp__Discord__list_guild_channels
  - mcp__cogny__mcp__Discord__get_channel
  - mcp__cogny__mcp__Discord__list_guild_members
  - mcp__cogny__mcp__Discord__get_channel_messages
  # Crisp support conversations (read-only)
  - mcp__cogny__mcp__Crisp__get_website_statistics
  - mcp__cogny__mcp__Crisp__list_conversations
  - mcp__cogny__mcp__Crisp__get_conversation
  - mcp__cogny__mcp__Crisp__get_conversation_messages
  # YouTube comments (read-only)
  - mcp__cogny__mcp__YouTube__get_channel
  - mcp__cogny__mcp__YouTube__list_channel_videos
  - mcp__cogny__mcp__YouTube__list_comment_threads
  - mcp__cogny__list_integrations
  # Cogny bookkeeping writes: create_ticket (Cloud) / create_finding (Solo). No integration write tools are pre-approved.
  - mcp__cogny__create_finding
  - mcp__cogny__create_ticket
  - WebFetch
  - Read
  - Write

Community Pulse — weekly community digest

Surface the signal in a busy Discord server. Who joined, which channels are hot, who's contributing, what's getting asked, and what's left hanging — in one digest you can act on in 15 minutes.

Works with

| Job | Primary | Also answers it | What differs | |-----|---------|-----------------|--------------| | Members, joins, channel activity, contributors | Discord | — | Only Discord has membership and channels | | Themes and unanswered questions | Discord (`get_channel_messages`) | Crisp (`list_conversations`, `get_conversation_messages`), YouTube (`list_comment_threads`) | Crisp is 1:1 support, so "unanswered" means `filter_state: "unresolved"`; YouTube marks `owner_replied` per thread | | Volume trend | Discord message counts | Crisp `get_website_statistics`, YouTube comment counts | Report each source in its own row; never add them up |

Discord is the primary source and drives steps 2-6. Crisp and YouTube are optional extra sources (step 7b). If Discord isn't connected but one of the others is, run steps 7, 7b, 8 and 9 for that source only and say so in the header.

Usage

`/community-pulse` — weekly digest of the connected Discord server (plus Crisp/YouTube if connected).

Pass a guild ID if the bot is in more than one server:

`/community-pulse 123456789012345678`

Step 0: Is Cogny connected?

If no `mcp__cogny__*` tools exist (no `list_integrations`, no `cogny_status`), print this and stop:

Community Pulse needs your marketing data through Cogny's MCP gateway.

1. Sign up at https://cogny.com and connect Discord (plus Crisp or YouTube if you use them).
2. Add Cogny to .mcp.json in your project:
   {"mcpServers": {"cogny": {"type": "http", "url": "https://app.cogny.com/mcp"}}}
3. Restart Claude Code; it opens a browser for the OAuth login on first use.

Nothing to run without Cogny.

If Cogny is connected but Discord isn't, say "connect Discord in Cogny" (Crisp and YouTube alone still give a partial digest).

Prerequisites

The Discord MCP needs **two privileged intents** enabled in the Discord Developer Portal → Bot tab → Privileged Gateway Intents:

  • **Server Members Intent** — without it, `list_guild_members` returns only

the bot itself.

  • **Message Content Intent** — without it, `get_channel_messages` returns

authors and timestamps but every `content` field comes back empty.

If the report comes back with a 1-element member list or empty message content, this is almost always why. The skill flags the gap loudly at the top of the output rather than silently producing misleading numbers.

The bot also needs **View Channel + Read Message History** in each channel you want analysed — these are channel-level permissions, not intents.

Steps

1. Sanity check the connection

Call `mcp__cogny__list_integrations` to see which of Discord, Crisp and YouTube are connected. Its `health_status` misses revoked tokens, so make one cheap read per connected source: Discord `get_current_user` (also confirms the bot identity), Crisp `get_website_statistics`, YouTube `get_channel`. A 401, `Forbidden` or scope error = 🔴 "reconnect <integration> in Cogny": name it in the header and don't retry. For Discord that means the bot token stored in Cogny is bad: "reconnect Discord in Cogny".

If a tool you expect is missing, call `mcp__cogny__refresh_mcp_discovery` once (never loop). New tools only load after the client reconnects, so skip that source this run and mark it ⚠ "needs reconnect".

2. Pick the guild

Call `list_guilds`. If exactly one guild, use it. If multiple, prefer the guild ID passed as an argument. If none was passed and there's more than one, list them and ask the user to specify.

Once chosen, call `get_guild(guild_id, with_counts=True)` for the baseline:

  • name, owner, premium tier
  • `approximate_member_count` (this is the "members" stat)
  • `approximate_presence_count` (online right now)

3. Inventory channels

Call `list_guild_channels(guild_id)`. Bucket channels into:

  • **High-signal** — channels matching `intro`, `welcome`, `feedback`,

`support`, `showcase`, `hiring`, `general` (these usually hold the signal for community health)

  • **Categories** — group containers (skip; they have no messages)
  • **Voice / stage** — skip for the weekly digest
  • **Private** — a channel is private when its `permission_overwrites` (or its parent category's) has an

entry with `id == guild_id` that denies `VIEW_CHANNEL` (bit 1024). Per-customer channels are usually private. Analyse them for

Read more
@cognyai
Ships withclaude-code-marketing-skills

AI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.

Stars on GitHub

Momentum

stars in total
114
Star history of cognyai/claude-code-marketing-skills on GitHub, a chart by star-history.com

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag3w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about community-pulse.

Which coding agents can use community-pulse?
community-pulse installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.