social-engagement-responder
Generates contextual replies to comments, mentions, and DMs on social posts. Classifies engagement as lead signal, customer question, partnership opportunity, or troll/spam. Uses brand voice from agen
Files2
View on GitHubSKILL.mdskills/capabilities/social-engagement-responder/SKILL.md
GitHubSocial Engagement Responder
Generates contextual, on-brand replies to social media engagement (comments, mentions, DMs, tags). Classifies each interaction for CRM routing and prioritizes lead signals.
Prerequisites
agency.config.jsonpopulated (outreach tone, services, case studies)- Engagement data: the comment/mention/DM text, platform, context (original post if available)
Phase 0: Intake
Read agency.config.json:
agency.name,agency.founder-- for sign-offs and personal touchesoutreach.tone-- voice baselineoutreach.banned_phrases-- never use in repliesservices[]-- for contextual service mentionscase_studies[]-- for proof points when relevant
Accept parameters:
engagement-- (required) object containing:platform--linkedin,twitter,instagram,reddittype--comment,mention,dm,tag,replytext-- the engagement textauthor-- name/handle of the personcontext-- (optional) the original post or thread contextauthor_profile-- (optional) brief profile info (title, company, follower count)
batch-- (optional) array of engagement objects for bulk processingauto_classify-- boolean, classify without generating reply. Default:false
Phase 1: Classification
Classify each engagement into one of these categories:
| Category | Signals | Priority | Action |
|---|---|---|---|
| LEAD_SIGNAL | Asks about services, pricing, availability; mentions pain points; DMs asking for help | HIGH | Reply + flag for CRM |
| CUSTOMER_QUESTION | Existing client asking for support, updates, or clarification | HIGH | Reply + flag for account team |
| PARTNERSHIP_OPPORTUNITY | Collaboration offers, co-marketing, referral partner signals | MEDIUM | Reply + flag for founder |
| GENUINE_ENGAGEMENT | Thoughtful comments, shares experience, adds to discussion | MEDIUM | Reply to nurture |
| SIMPLE_REACTION | "Great post!", "Agree!", emoji-only, basic compliments | LOW | Short thank-you or skip |
| TROLL_SPAM | Hostile, irrelevant, promotional spam, bot-like | IGNORE | Do not reply, flag for review |
Classification output:
{
"category": "LEAD_SIGNAL",
"confidence": "HIGH",
"reasoning": "Asked about Shopify development pricing and mentioned they need help with their store",
"suggested_action": "Reply with value, DM to continue conversation",
"crm_flag": true
}
Phase 2: Reply Generation
LEAD_SIGNAL replies
- Acknowledge their need specifically
- Provide one piece of genuine value (tip, insight, quick observation)
- Soft pivot to conversation ("Happy to share more, DM me?" or "We actually helped a brand with exactly this")
- Never hard pitch in a public reply
- If DM: be more direct, offer a quick call or audit
CUSTOMER_QUESTION replies
- Answer directly and helpfully
- If complex, acknowledge + offer to follow up via DM/email
- Reference their specific situation if known
- Keep professional but warm
PARTNERSHIP_OPPORTUNITY replies
- Express interest without over-committing
- Ask a qualifying question ("What kind of collaboration are you thinking?")
- Offer to take it to DM/email
GENUINE_ENGAGEMENT replies
- Match their energy level
- Add value to the conversation (expand on a point, share a related insight)
- Ask a follow-up question to deepen engagement
- Keep it conversational, not corporate
SIMPLE_REACTION replies
- Short acknowledgment: "Thanks!", "Appreciate that", "Glad it resonated"
- Or skip entirely if volume is high (flag as "no reply needed")
TROLL_SPAM replies
- Do not reply
- Flag for manual review
- If borderline, respond once with facts, then disengage
Phase 3: Platform-Specific Formatting
| Platform | Reply Style | Length |
|---|---|---|
| Professional, can be 1-3 sentences, use their name | 20-80 words | |
| Casual, punchy, match their tweet energy | Under 280 chars | |
| Friendly, use their handle, casual | 10-40 words | |
| Helpful, detailed if they asked a question, no self-promo | 30-200 words |
Phase 4: Quality Check
- Banned phrase scan: Check against
outreach.banned_phrases - Self-promo check: Public replies should not read as ads. Lead with value.
- Tone match: Reply tone should match the engagement's tone (serious reply to serious question, casual to casual)
- Platform limits: Twitter replies under 280 chars
- No emoji overload: Max 1-2 per reply
Phase 5: Output
Return structured JSON:
{
"engagements": [
{
"platform": "linkedin",
"type": "comment",
"author": "Priya Mehta",
"original_text": "This is really insightful. We've been struggling with our Shopify product pages for months.",
"classification": {
"category": "LEAD_SIGNAL",
"confidence": "HIGH",
"reasoning": "Mentions struggling with Shopify product pages, matches our CRO service",
"crm_flag": true
},
"reply": "Priya, product pages are where most D2C brands leave the most revenue on the table. One quick win: make sure your above-the-fold shows social proof + a clear size/variant selector without scrolling. Happy to share a few more specifics if useful, feel free to DM.",
"follow_up_action": "If she DMs, share Kibi Sports case study and offer a free CRO audit",
"word_count": 47
}
],
"summary": {
"total_processed": 12,
"lead_signals": 2,
"customer_questions": 1,
"partnership": 0,
"genuine_engagement": 5,
"simple_reactions": 3,
"troll_spam": 1,
"replies_generated": 8,
"skipped": 4
},
"generated_at": "2026-03-13T10:00:00Z"
}
Phase 6: CRM Handoff
For LEAD_SIGNAL engagements:
- Write to CRM via
crm-writerwith: author name, platform, signal text, classification, reply sent, follow-up action - Set lead stage = NEW if not already in CRM
- Tag source =
social_engagement
Example Usage
Trigger phrases:
- "Process today's LinkedIn comments and mentions"
- "Classify and reply to these Instagram DMs"
- "Handle the comments on my latest LinkedIn post"
- "Check for lead signals in this week's social engagement"
- "Draft replies for these Reddit mentions"
- "Triage my social media inbox"