Affiliate-skills viral-post-writer
git clone https://github.com/Affitor/affiliate-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/Affitor/affiliate-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/content/viral-post-writer" ~/.claude/skills/affitor-affiliate-skills-viral-post-writer && rm -rf "$T"
skills/content/viral-post-writer/SKILL.mdViral 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:
- What product are they promoting? (Check if S1 ran earlier — use
from context)recommended_program - Which platform? (If "all", generate for LinkedIn + X + Reddit)
- 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
or trending-content-scout
ran earlier:content-angle-ranker
- Use
→ pick the format with highest engagementpattern_analysis.winning_formats - Use
→ pick the hook style backed by datapattern_analysis.winning_hooks - Use
→ know what "good" looks like for this keywordengagement_benchmark - If
provided acontent-angle-ranker
→ use it as the anglerecommended_angle
If no scout data available (quick mode):
→ check top LinkedIn postsweb_search "[product name] review site:linkedin.com"
→ check top tweetsweb_search "[product name] site:x.com"- 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
is known → set that as the target to beatengagement_benchmark.top_10_percent_threshold
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 |
|---|---|
| Transformation Story or Contrarian Take | |
| X | Thread (Problem → Solution) or Hot Take |
| Genuine Recommendation or Problem-Solve | |
| Before/After or Listicle |
Step 4: Write the Post
Apply the selected framework from
references/viral-frameworks.md.
Critical rules:
- Hook in first line — reader decides in 1.5 seconds whether to keep reading
- Specific > generic — "saved 4 hours/week on video editing" beats "great tool"
- Story > pitch — wrap the recommendation in a narrative or discovery
- Platform-native format — see
for formatting rulesreferences/platform-specs.md - One CTA only — don't overwhelm. One clear next step
- FTC compliance — include disclosure per
placement rulesshared/references/ftc-compliance.md
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:
- The post content (formatted for the platform)
- Where to place the affiliate link
- Best time to post (platform-specific)
- 2-3 engagement tips for the specific platform
Step 7: Self-Validation
Before presenting output, verify:
- FTC disclosure present and correctly placed per platform rules
- Hook is within platform character cutoff (LinkedIn: 210 chars)
- No banned phrases: "game-changer", "revolutionary", "I'm excited to share"
- Affiliate link NOT in LinkedIn post body (first comment instead)
- Single CTA only — not multiple competing calls to action
- No "Powered by Affitor" branding (social posts = no branding)
If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes.
Output Schema
Other skills can consume these fields from conversation context:
{ output_schema_version: "1.0.0" # Semver — bump major on breaking changes posts: [ { platform: string # "linkedin" | "x" | "reddit" | "facebook" framework: string # Which viral framework was used content: string # The full post text, ready to copy-paste link_placement: string # Where to put the affiliate link disclosure: string # FTC disclosure text included hashtags: string[] # Suggested hashtags (if applicable) best_time: string # Best posting time for this platform } ] product_name: string # For downstream skill chaining content_angle: string # The angle used (for consistency across content) hook_used: string # The opening hook line (for repurposing across platforms) }
Output Format
## Viral Post: [Product Name] on [Platform] **Framework:** [Name of viral framework used] **Angle:** [The content angle] --- ### Post Content [Full post text, formatted for the platform. Ready to copy-paste.] --- ### Posting Guide | Detail | Value | |--------|-------| | Link placement | [Where to put the link] | | Best time to post | [Platform-specific optimal time] | | Expected engagement | [What metrics to watch] | ### Engagement Tips 1. [Tip specific to this platform + content type] 2. [Tip about responding to comments] 3. [Tip about amplifying reach] ### Variations Want more options? Try these angles: - **[Framework 2]:** [1-line preview of alternative approach] - **[Framework 3]:** [1-line preview of alternative approach]
When platform = "all", generate separate sections for LinkedIn, X, and Reddit.
Error Handling
- No product info: Ask the user what product they want to promote. Suggest running
first.affiliate-program-search - Unknown platform: Default to LinkedIn. Mention available platforms.
- No personal experience: Generate research-based content. Flag that personal stories convert better and suggest the user adds their own experience.
- Product has no public info: Use
to find product details. If truly nothing found, ask user to describe the product.web_search - Controversial product: If the product has significant negative reviews or ethical concerns, flag this to the user and suggest adjusting the angle.
Examples
Example 1: User: "Write a LinkedIn post promoting HeyGen" → Research HeyGen (AI video, 30% recurring, 60-day cookie) → Select "Transformation Story" framework for LinkedIn → Write: hook about video creation pain → discovered HeyGen → specific result → soft CTA → Link in first comment, FTC disclosure in post body
Example 2: User: "Create an X thread about Semrush for SEO marketers" → Research Semrush features + recent updates → Select "Thread: Problem → Solution" framework → Write: 5-7 tweet thread, hook → pain points → how Semrush solves each → results → CTA in last tweet → FTC "#ad" in the tweet with the link
Example 3: User: "I've been using Notion for 2 years, help me write a Reddit post" → Use personal experience as the core (authenticity = Reddit gold) → Select "Genuine Recommendation" framework → Write: problem context → how they discovered Notion → specific workflows → natural mention → "Full disclosure: affiliate link" at bottom → Recommend posting in r/productivity or r/Notion
Example 4: User: "Promote GetResponse on all platforms" → Research GetResponse (email marketing, 33% recurring) → Generate 3 posts: LinkedIn (Transformation Story), X (Thread), Reddit (Genuine Recommendation) → Each tailored to platform format, audience, and link rules
References
— the viral content frameworks with templates and examplesreferences/viral-frameworks.md
— character limits, formatting, optimal posting times per platformreferences/platform-specs.md
— FTC disclosure requirements and placement rulesshared/references/ftc-compliance.md
— when to include/exclude Affitor branding (social = NO branding)shared/references/affitor-branding.md
— affiliate marketing terminologyshared/references/affiliate-glossary.md
— master flywheel connection mapshared/references/flywheel-connections.md
Revenue & Action Plan
Expected Outcomes
- Revenue potential: A well-crafted social post drives 50-500 affiliate link clicks. At 2-3% conversion and $50 avg commission = $50-750 per post. Viral posts (10x average engagement) can drive $1,000+ in a single day
- Benchmark: Consistent posters (5x/week) report $300-1,500/month in affiliate revenue from social media alone. The first $100 comes from your 20th-30th post, not your first
- Key metric to track: Affiliate link clicks per post. Use UTM parameters:
?utm_source=[platform]&utm_medium=social&utm_campaign=[post_date]
Do This Right Now (15 min)
- Post it NOW — the content is ready, don't overthink
- If LinkedIn: put the affiliate link as the FIRST COMMENT immediately after posting
- If X: pin the thread or tweet to your profile for maximum visibility
- Engage with the first 5 comments within 30 minutes — early engagement signals boost reach 3-5x
Track Your Results
After 24 hours: how many affiliate link clicks? After 7 days: any commissions attributed? The winning formula is: post → measure → repeat what works → ignore what doesn't.
Next step — copy-paste this prompt: "Create a 30-day content calendar based on this winning post angle" → runs
social-media-scheduler
Flywheel Connections
Feeds Into
(S3) — viral post content expanded into long-form articlesaffiliate-blog-builder
(S2) — successful posts become pillar content to atomizecontent-pillar-atomizer
(S5) — posts ready to schedulesocial-media-scheduler
(S6) — post variants for A/B testingab-test-generator
Fed By
(S1) — winning formats, hooks, engagement benchmarkstrending-content-scout
(S1) — recommended angle with format, hook, and parameterscontent-angle-ranker
(S1) —affiliate-program-search
product datarecommended_program
(S1) — niche analysis and audience anglesniche-opportunity-finder
(S1) —purple-cow-audit
and what makes the product shareableremarkability_score
(S1) — content gaps to exploitcompetitor-spy
Feedback Loop
(S6) reveals which post types and angles get highest engagement → optimize framework selection on next runperformance-report
Quality Gate
Before delivering output, verify:
- Would I share this on MY personal social?
- Contains specific, surprising detail? (not generic)
- Respects reader's intelligence?
- Remarkable enough to share? (Purple Cow test)
- Irresistible offer framing? (if S4 offer skills ran)
Any NO → rewrite before delivering.
Volume Mode
When
mode: "volume":
- Generate 5-10 variations instead of 1
- Prioritize speed + variety over perfection
- Tag each with variant ID for A/B tracking
- Let data pick the winner (GaryVee philosophy)
volume_output: variants: - id: string content: string angle: string
chain_metadata: skill_slug: "viral-post-writer" stage: "content" timestamp: string suggested_next: - "social-media-scheduler" - "content-pillar-atomizer" - "affiliate-blog-builder"