| name | daily-mentions-summary |
| description | End-of-day recap of <BRAND>'s social mentions using Octolens. Produces a Slack-ready summary with sentiment score, highlights, and lowlights. Use when the user asks for a daily mentions recap, EOD summary, or "what happened today in mentions".
|
Daily Mentions Summary
End-of-day recap for Slack. This is NOT for triaging replies (that happens throughout the day via Slack notifications) — this is a quick internal recap of what stood out.
Uses the Octolens MCP server.
Workflow
Step 1: Fetch today's mentions
- Call
list_mentions_context to get available keyword IDs and filter syntax.
- Identify the brand-related keywords (your brand name, your domain, and your GitHub org).
- Query
list_mentions with those keyword IDs, relevance=[0], and today's date range. Use startDate = today and endDate = tomorrow to ensure full coverage (single-day queries with identical start/end dates can return empty).
- Set
includeAll: false and limit: 100.
- Paginate with
cursor until exhausted or 500 mentions reached.
Step 2: Aggregate
Count totals by sentiment:
pos = number of positive mentions
neu = number of neutral mentions
neg = number of negative mentions
total = pos + neu + neg
Step 3: Compute sentiment score
daily_score = ((pos - neg) / total) * 100
Range: -100 (all negative) to +100 (all positive). Round to nearest integer.
Step 4: Identify patterns by sentiment
Before analyzing, filter out:
- employee posts (replies from team members to users — these are support, not organic mentions)
- Spam / reseller posts (e.g. discounted subscription sellers, engagement bait)
- Cross-post duplicates (same content posted to both Twitter and Bluesky — count once, prefer higher-reach version)
For each sentiment category (Positive, Neutral, Negative), identify 3-5 key themes or patterns. Focus on:
- What are users saying? What themes emerge?
- Are there patterns across multiple mentions?
- What's strategically meaningful vs. noise?
What to look for:
- Ecosystem signals: Third-party tools, integrations, content, partnerships
- Product feedback: Specific features, workflows, pricing, performance
- Competitive dynamics: Comparisons, switching behavior, positioning
- Market signals: New personas, geographies, use cases
- Sentiment drivers: What's causing the positive/negative reactions?
What to skip:
- One-off generic praise/complaints without insight
- Basic confirmations ("X works")
- Unclear context or vague posts
Step 5: Write pattern summaries
For each sentiment category, write 3-5 summary points that capture the key themes. Each point should:
- Be specific and concrete: What actually happened? Who said what?
- Be clear and direct: Skip corporate jargon, write like you're telling a teammate
- Give context: Include numbers (follower count, how many users) when they matter
- Show impact: Why does this pattern matter?
- Include 1-2 representative links as examples using markdown:
[link](url), [link](url)
For Positive section only: After pattern summaries, include 1-3 direct quotes that work as testimonials. Pick the most specific, enthusiastic quotes that show clear value. Format as:
_"[exact quote]"_ — <url|@username on platform>
Where platform is the source (e.g. "X", "Reddit", "Bluesky", "Hacker News"). This makes it clear the link goes to the post, not the user's profile.
Tone guidelines:
- Write conversationally, not formally
- Use specific details over abstract categories
- Lead with what happened, not a label
- Make it scannable and easy to understand quickly
Good examples:
Developer built an open-source agent monitoring dashboard with native <BRAND> support — getting traction in a niche community — [link](url)
Reddit thread: 3+ paying users burned hundreds of credits on login loops, saying they're close to switching to a competitor — [link](url), [link](url)
5 mentions of people evaluating tools — <BRAND> coming up alongside other tools, comparing features — [link](url), [link](url)
A dev platform added <BRAND> block embeds as a platform feature (alongside other tools) — [link](url)
Bad examples:
Ecosystem growth: Third-party integrations (too abstract)
Credit burn concerns: Multiple users reporting issues (not specific enough)
Positive sentiment observed (meaningless)
Step 6: Format output
Produce a single Slack message using Slack's mrkdwn format, ~300 words max:
*Daily Mentions Summary — <date>*
<total> mentions | 🟢 <pos> · ⚪ <neu> · 🔴 <neg> | score <daily_score>
*Positive*
• <pattern summary with count> — <url|link>, <url|link>
• <pattern summary with count> — <url|link>
...
_Testimonials:_
_"<exact quote>"_ — <url|@username on platform>
_"<exact quote>"_ — <url|@username on platform>
*Neutral*
• <pattern summary with count> — <url|link>, <url|link>
• <pattern summary with count> — <url|link>
...
*Negative*
• <pattern summary with count> — <url|link>, <url|link>
• <pattern summary with count> — <url|link>
...
Note: Use Slack's mrkdwn format: *bold* (single asterisks) and <url|link> for links.
If a sentiment category has no meaningful patterns (rare), you may omit that section.
Step 7: Send to Slack (optional)
Only proceed with this step if the user explicitly asks to "send the report", "send to Slack", "post to Slack", or similar. Do NOT send automatically.
- Check if
BUZZ_SLACK_TOKEN environment variable exists: echo $BUZZ_SLACK_TOKEN
- If the token exists, send the formatted summary to the channel in
$MENTIONS_SUMMARY_CHANNEL_ID using:
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $BUZZ_SLACK_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"channel\": \"$MENTIONS_SUMMARY_CHANNEL_ID\", \"text\": \"<formatted_summary_here>\", \"unfurl_links\": false, \"unfurl_media\": false}"
- If
BUZZ_SLACK_TOKEN is not set, let the user know they need to set it to send Slack notifications
Step 8: Send testimonials to #testimonials (optional)
Only proceed with this step when Step 7 is triggered (i.e. the user asked to send to Slack). If there are no testimonials (no positive quotes identified in Step 5), skip this step.
- Format a separate message using only the testimonial quotes from Step 5:
*Daily Social Mention Testimonials — <date>*
_"<exact quote>"_ — <url|@username on platform>
_"<exact quote>"_ — <url|@username on platform>
_"<exact quote>"_ — <url|@username on platform>
- Send to the testimonials channel in
$TESTIMONIALS_CHANNEL_ID using:
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $BUZZ_SLACK_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"channel\": \"$TESTIMONIALS_CHANNEL_ID\", \"text\": \"<formatted_testimonials_here>\", \"unfurl_links\": false, \"unfurl_media\": false}"
Edge Cases
- Very few mentions (<10): Still produce the summary but note the low volume. Don't force 5 highlights.
- No negative mentions: Skip the Lowlights section.
- Non-English mentions: Include them if noteworthy — note the language/region context in the takeaway (e.g. "Growing traction in the Chinese dev community").