Skip to main content
ClaudeWave
Skill458 repo starsupdated 2mo ago

viral-post-writer

The Viral Post Writer skill generates platform-specific social media content for promoting affiliate products using proven engagement frameworks and proper FTC disclosures. Use this skill when a user needs to create engaging, non-salesy posts for LinkedIn, X/Twitter, Reddit, or Facebook to promote an affiliate product they've selected, optionally incorporating their personal product experience to increase authenticity and conversion rates.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/Affitor/affiliate-skills /tmp/viral-post-writer && cp -r /tmp/viral-post-writer/skills/content/viral-post-writer ~/.claude/skills/viral-post-writer
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Viral Post Writer

Write high-converting social media posts that promote affiliate products without feeling salesy. Each post uses proven viral frameworks, is tailored to the target platform, and includes proper FTC disclosure.

## Stage

This skill belongs to Stage S2: Content

## When to Use

- User wants to promote an affiliate product on social media
- User asks for LinkedIn posts, X/Twitter threads, Reddit posts, or Facebook posts
- User has picked a program (from S1 or manually) and needs content
- User wants "viral" or "engaging" social media content for affiliate marketing
- User asks how to naturally promote a product on a specific platform

## Input Schema

```
{
  product: {                  # (required) Product to promote — from S1 output or user-provided
    name: string              # "HeyGen"
    description: string       # What the product does (1-2 sentences)
    reward_value: string      # "30%" (for context — never shown in post)
    url: string               # Product website or affiliate link
  }
  platform: string            # (required) "linkedin" | "x" | "reddit" | "facebook" | "all"
  angle: string               # (optional, default: auto-selected) Content angle — see Viral Frameworks
  tone: string                # (optional, default: "conversational") "conversational" | "professional" | "casual" | "storytelling"
  audience: string            # (optional, default: inferred from platform) Target audience description
  personal_experience: string # (optional) User's real experience with the product — makes content authentic
  cta_style: string           # (optional, default: "soft") "soft" | "direct" | "question"
}
```

## Workflow

### Step 1: Gather Context

If not clear from conversation:
1. What product are they promoting? (Check if S1 ran earlier — use `recommended_program` from context)
2. Which platform? (If "all", generate for LinkedIn + X + Reddit)
3. Any personal experience with the product? (Authentic stories convert 3-5x better)

If user just says "write a post for HeyGen" → default to LinkedIn, conversational tone, soft CTA.

If product details are missing, use `web_search "[product name] features pricing"` to research.

### Step 2: Research the Product

Even if product info is provided, do a quick `web_search` to find:
- Recent product updates or launches (recency = virality)
- Common pain points the product solves (hook material)
- Competitor comparisons (contrast = engagement)
- Real user testimonials or reviews (social proof)

Extract 2-3 **specific details** — exact numbers, real features, concrete use cases. Generic "this tool is amazing" posts don't go viral.

### Step 2.5: Research Winning Formats (data-driven)

Before picking a framework, check what's already working for this topic:

**If `trending-content-scout` or `content-angle-ranker` ran earlier:**
- Use `pattern_analysis.winning_formats` → pick the format with highest engagement
- Use `pattern_analysis.winning_hooks` → pick the hook style backed by data
- Use `engagement_benchmark` → know what "good" looks like for this keyword
- If `content-angle-ranker` provided a `recommended_angle` → use it as the angle

**If no scout data available (quick mode):**
- `web_search "[product name] review site:linkedin.com"` → check top LinkedIn posts
- `web_search "[product name] site:x.com"` → check top tweets
- Look for: post length, format (story vs list vs question), engagement signals visible in snippets
- Estimate which format works best on target platform

**Apply findings to framework selection:**
- Data > intuition. If comparisons get 2x engagement vs reviews in this niche, write a comparison
- If bold_claim hooks dominate top content → use a bold claim hook, even if you'd normally use a question
- If the `engagement_benchmark.top_10_percent_threshold` is known → set that as the target to beat

This step takes <2 minutes but significantly increases the odds of creating content that
performs above the benchmark rather than below it.

### Step 3: Pick the Viral Framework

Select from `references/viral-frameworks.md` based on product + platform + angle.

If user specified an `angle`, use that framework. Otherwise, auto-select:

| Platform | Best Default Framework |
|----------|----------------------|
| LinkedIn | Transformation Story or Contrarian Take |
| X | Thread (Problem → Solution) or Hot Take |
| Reddit | Genuine Recommendation or Problem-Solve |
| Facebook | Before/After or Listicle |

### Step 4: Write the Post

Apply the selected framework from `references/viral-frameworks.md`.

**Critical rules:**
1. **Hook in first line** — reader decides in 1.5 seconds whether to keep reading
2. **Specific > generic** — "saved 4 hours/week on video editing" beats "great tool"
3. **Story > pitch** — wrap the recommendation in a narrative or discovery
4. **Platform-native format** — see `references/platform-specs.md` for formatting rules
5. **One CTA only** — don't overwhelm. One clear next step
6. **FTC compliance** — include disclosure per `shared/references/ftc-compliance.md` placement rules

**Never do:**
- Start with "I'm excited to share..." (LinkedIn death sentence)
- Use "game-changer", "revolutionary", "hands down the best" (empty superlatives)
- Put the link in the main post body on LinkedIn (algorithm penalty)
- Hard-sell in the first sentence
- Mention commission rates or that you're an affiliate (FTC requires disclosure, not details)
- Include "Powered by Affitor" branding (see `shared/references/affitor-branding.md`)

### Step 5: Add FTC Disclosure

Per platform (from `shared/references/ftc-compliance.md`):
- **LinkedIn:** "#ad | Affiliate link" at the end of the post body
- **X:** "#ad" in the tweet containing the link (usually last tweet in thread)
- **Reddit:** "Full disclosure: affiliate link" at the bottom
- **Facebook:** "#ad | Affiliate link" at the end

### Step 6: Format Output

Present the post ready to copy-paste. Include:
1. The post content (formatted for the platform)
2.