> Write SEO-optimized affiliate blog articles, product reviews, comparison posts, listicles, "best [category] article", "comparison blog", "affiliate blog", "SEO article", "write a review", "product roundup", "blog content for affiliate", "how to use [product] blog post", "listicle about [category]", "[product] vs [product] blog", "content for my affiliate site".
npx skills add https://github.com/Affitor/affiliate-skills --skill affiliate-blog-builder
Write full SEO-optimized blog articles that rank on Google and drive passive affiliate revenue. Supports four formats: product review, head-to-head comparison, best-of listicle, and how-to guide. Each article includes keyword strategy, structured headings, comparison tables, CTAs, FAQ schema, and FTC-compliant disclosure.
S3: Blog — The highest-value content type in the affiliate funnel. Blog articles rank on Google, drive organic traffic for months/years, and convert at higher rates than social posts because readers have high purchase intent.
product: # REQUIRED — the affiliate product to feature
name: string # Product name (e.g., "HeyGen")
description: string # What it does
reward_value: string # Commission (e.g., "30% recurring")
url: string # Affiliate link URL
reward_type: string # "recurring" | "one-time" | "tiered"
cookie_days: number # Cookie duration
tags: string[] # e.g., ["ai", "video", "saas"]
format: string # OPTIONAL — "review" | "comparison" | "listicle" | "how-to"
# Default: "listicle" (highest traffic potential)
compare_with: object[] # OPTIONAL — competitors for comparison/listicle formats
- name: string # Competitor name
description: string # Brief description
url: string # URL (non-affiliate OK)
pricing: string # Starting price
target_keyword: string # OPTIONAL — primary SEO keyword to target
# Default: auto-generated from product name + category
blog_platform: string # OPTIONAL — "wordpress" | "ghost" | "hugo" | "astro" | "webflow" | "markdown"
# Default: "markdown" (universal)
tone: string # OPTIONAL — "professional" | "conversational" | "technical"
# Default: "conversational"
word_count_target: number # OPTIONAL — override default word count for the format
Chaining from S1: If affiliate-program-search was run earlier in the conversation, automatically pick up recommended_program from its output as the product input. The field mapping:
recommended_program.name → product.namerecommended_program.description → product.descriptionrecommended_program.reward_value → product.reward_valuerecommended_program.url → product.urlrecommended_program.reward_type → product.reward_typerecommended_program.cookie_days → product.cookie_daysrecommended_program.tags → product.tagsIf the user says "now write a blog about it" after running S1 — use the recommended program. No need to ask again.
Choose the article format based on user request or defaults:
| Signal | Format |
|---|---|
| User says "review", "my experience with" | review |
| User mentions two+ products, "vs", "compare" | comparison |
| User says "best", "top", "roundup", numbers | listicle |
| User says "how to", "tutorial", "guide", "step by step" | how-to |
| No clear signal | listicle (default — highest traffic potential) |
If format = comparison and compare_with is empty or has only 1 product:
web_search to find 2-3 top competitors in the same category"best alternatives to [product.name]" OR "[product.name] vs" site:g2.com OR site:capterra.comIf format = listicle and compare_with is empty:
web_search to find 4-6 products in the same category"best [product category] tools [year]"Read references/seo-checklist.md for the complete SEO guidelines. Then:
[product name] review[product A] vs [product B]best [category] toolshow to [goal] with [product/category]web_search for: "[target keyword]" related searches and "People Also Ask"[product] pricing, [product] alternatives, [product] pros and cons, is [product] worth itRead references/blog-templates.md and use the template matching the chosen format. Then write the full article following these rules:
Content Rules:
tone (default: conversational)Required Sections (all formats):
shared/references/ftc-compliance.md and use the medium formatAffiliate CTA Placement (2-4 per article):
CTA Formats:
Try [Product] free →Ready to get started? Sign up for [Product] →Our recommendation: Get [Product] here — [brief value prop].Things to AVOID:
Produce the final output in this exact structure:
Part 1: SEO Metadata Block
---
SEO METADATA
---
Title: [SEO title]
Slug: [url-slug]
Meta Description: [150-160 chars]
Target Keyword: [primary keyword]
Secondary Keywords: [comma-separated list]
Word Count: [actual count]
Format: [review/comparison/listicle/how-to]
---
Part 2: Full Article
The complete markdown article ready to paste into any blogging platform.
Part 3: Supplementary Data
---
SUPPLEMENTARY
---
FAQ Questions (for schema markup):
1. [Question] → [Answer]
2. [Question] → [Answer]
...
Image Suggestions:
1. [Description] — alt: "[alt text]"
2. [Description] — alt: "[alt text]"
...
Products Featured:
- [Product 1]: [affiliate URL] (featured/mentioned)
- [Product 2]: [affiliate URL] (compared/mentioned)
...
Next Steps:
- Personalize: Add your own experience, screenshots, and results
- Images: Take product screenshots and add them at suggested locations
- Links: Replace affiliate URLs with your own tracking links
- Publish: See references/wordpress-deploy.md for WordPress setup guide
- Promote: Run viral-post-writer to create social posts promoting this article
---
Before presenting output, verify:
If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes.
output_schema_version: "1.0.0" # Semver — bump major on breaking changes
article:
title: string # SEO-optimized title
slug: string # URL-friendly slug
meta_description: string # 150-160 character meta description
target_keyword: string # Primary keyword targeted
format: string # review | comparison | listicle | how-to
content: string # Full markdown article
word_count: number # Actual word count
headings: # Article structure
- level: number # 2 for H2, 3 for H3
text: string # Heading text
seo:
secondary_keywords: string[] # 3-5 secondary keywords used
faq_questions: # For FAQ schema markup
- question: string
answer: string
image_suggestions: # Recommended images
- description: string # What to screenshot/create
alt_text: string # SEO alt text
placement: string # After which section
products_featured: # All products mentioned
- name: string
url: string # Affiliate URL
role: string # "primary" | "compared" | "mentioned"
reward_value: string # Commission info
pricing: string | null # Starting price (e.g., "$49/mo") — for S4 landing page chaining
Present the output as a single markdown document with three clearly separated sections:
The article should be immediately publishable — not a draft or outline. The user should be able to copy-paste it into their blog editor, add their own screenshots and personal touches, and publish.
/affiliate-program-search first to find one, or tell me the product name and I'll research it."web_search. Search: "best alternatives to [product]" on G2/Capterra.web_search to research the product. If still insufficient: "I couldn't find enough information about [product] to write a credible article. Can you provide more details about features, pricing, and your experience?"User: "Now write a detailed review of HeyGen for my blog"
Context: S1 previously returned HeyGen as recommended_program
Action: Auto-detect format=review, pick up HeyGen product data from S1 output, generate full review article targeting "heygen review" keyword.
User: "Write a comparison blog post: HeyGen vs Synthesia vs Colossyan for AI video creation"
Action: Format=comparison, primary product=HeyGen (if from S1, else first mentioned), compare_with=[Synthesia, Colossyan], target keyword="heygen vs synthesia vs colossyan".
User: "Write a blog post about the best AI video tools"
Action: Format=listicle (matches "best"), web_search for top AI video tools, target keyword="best ai video tools", write 3-5K word roundup with 5-7 products.
User: "Write a tutorial blog post on how to create AI-generated videos for YouTube with HeyGen"
Action: Format=how-to (matches "tutorial", "how to"), target keyword="how to create ai videos for youtube", write step-by-step guide featuring HeyGen with affiliate CTAs.
User: "Blog post about Semrush"
Action: No format specified → default to listicle? No — single product implies review. Use format=review, web_search Semrush for features/pricing/reviews, target keyword="semrush review", generate full article.
Format detection logic for ambiguous cases: If only one product is mentioned with no format keyword, default to review. If a category is mentioned with no specific product, default to listicle.
references/seo-checklist.md — Title formulas, meta description rules, heading hierarchy, keyword density, content depth guidelines. Read in Step 2.references/blog-templates.md — Four article format templates (review, comparison, listicle, how-to) with exact structure. Read in Step 3.references/wordpress-deploy.md — WordPress publishing guide, Yoast SEO setup, Pretty Links, FAQ schema implementation. Reference in Step 4 next steps.shared/references/ftc-compliance.md — FTC disclosure requirements and format templates. Read in Step 3 for disclosure text.shared/references/affitor-branding.md — Affitor brand guidelines. Note: NO Affitor branding in article body (user's blog). Only in tool output metadata.shared/references/affiliate-glossary.md — Affiliate marketing terminology reference.shared/references/flywheel-connections.md — master flywheel connection maplanding-page-creator (S4) — products_featured for comparison landing pagescontent-pillar-atomizer (S2) — blog article as pillar content to atomize into socialbonus-stack-builder (S4) — products featured inform bonus designinternal-linking-optimizer (S6) — new article needs internal links within 48 hoursaffiliate-program-search (S1) — recommended_program product datakeyword-cluster-architect (S3) — target keywords and cluster topicsproprietary-data-generator (S7) — unique data for differentiated articlesinternal-linking-optimizer (S6) — link suggestions for existing articlescontent-decay-detector (S3) — refresh instructions for decaying articlesseo-audit (S6) and performance-report (S6) track article rankings and traffic → identify which article formats and topics perform best → optimize content strategyBefore delivering output, verify:
Any NO → rewrite before delivering.
chain_metadata:
skill_slug: "affiliate-blog-builder"
stage: "blog"
timestamp: string
suggested_next:
- "content-pillar-atomizer"
- "landing-page-creator"
- "internal-linking-optimizer"
- "seo-audit"
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Extracts and analyzes competitors' ads from ad libraries (Facebook, LinkedIn, etc.) to understand what messaging, problems, and creative approaches are working. Helps inspire and improve your own ad campaigns.
Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Complete App Store Optimization (ASO) toolkit for researching, optimizing, and tracking mobile app performance on Apple App Store and Google Play Store
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Materials science toolkit. Crystal structures (CIF, POSCAR), phase diagrams, band structure, DOS, Materials Project integration, format conversion, for computational materials science.
Transforms vague UI ideas into polished, Stitch-optimized prompts. Enhances specificity, adds UI/UX keywords, injects design system context, and structures output for better generation results.
Take affitor/affiliate-blog-builder from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.