Voice Builder
charlie947/social-media-skills
Build a personalised voice profile inside a Codex or Claude project from a short interview plus 3 to 5 sample pieces of writing.
Write "X vs Y" comparison blog posts that help readers choose between two competing products.
$ npx skills add Affitor/affiliate-skills --skill comparison-post-writer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Affitor/affiliate-skills comparison-post-writer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Affitor/affiliate-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/blog/comparison-post-writer .claude/skills/comparison-post-writer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "comparison-post-writer" agent skill from https://github.com/Affitor/affiliate-skills/tree/main/skills/blog/comparison-post-writer into .claude/skills/comparison-post-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "comparison-post-writer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Affitor/affiliate-skills/tree/main/skills/blog/comparison-post-writerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Affitor/affiliate-skills --skill comparison-post-writer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Affitor/affiliate-skills comparison-post-writer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Affitor/affiliate-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/blog/comparison-post-writer .agents/skills/comparison-post-writer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "comparison-post-writer" agent skill from https://github.com/Affitor/affiliate-skills/tree/main/skills/blog/comparison-post-writer into .agents/skills/comparison-post-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "comparison-post-writer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Affitor/affiliate-skills --skill comparison-post-writer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Affitor/affiliate-skills comparison-post-writer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Affitor/affiliate-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/blog/comparison-post-writer .cursor/skills/comparison-post-writer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "comparison-post-writer" agent skill from https://github.com/Affitor/affiliate-skills/tree/main/skills/blog/comparison-post-writer into .cursor/skills/comparison-post-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "comparison-post-writer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Affitor/affiliate-skills.git --path skills/blog/comparison-post-writer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Affitor/affiliate-skills --skill comparison-post-writer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Affitor/affiliate-skills comparison-post-writer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Affitor/affiliate-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/blog/comparison-post-writer .gemini/skills/comparison-post-writer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "comparison-post-writer" agent skill from https://github.com/Affitor/affiliate-skills/tree/main/skills/blog/comparison-post-writer into .gemini/skills/comparison-post-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "comparison-post-writer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Affitor/affiliate-skills comparison-post-writerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Affitor/affiliate-skills --skill comparison-post-writer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Affitor/affiliate-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/blog/comparison-post-writer .github/skills/comparison-post-writer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "comparison-post-writer" agent skill from https://github.com/Affitor/affiliate-skills/tree/main/skills/blog/comparison-post-writer into .github/skills/comparison-post-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "comparison-post-writer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Affitor/affiliate-skills --skill comparison-post-writer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Affitor/affiliate-skills comparison-post-writer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Affitor/affiliate-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/blog/comparison-post-writer .opencode/skills/comparison-post-writer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "comparison-post-writer" agent skill from https://github.com/Affitor/affiliate-skills/tree/main/skills/blog/comparison-post-writer into .opencode/skills/comparison-post-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "comparison-post-writer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
comparison-post-writerWrite "X vs Y" comparison blog posts that help readers choose between two competing products.
Comparison Post Writer is an agent skill from Affitor/affiliate-skills. Write "X vs Y" comparison blog posts that help readers choose between two competing products. Triggers on: "write a comparison post", "X vs Y blog post", "compare [product A] and [product B]", "which is better [A] or [B]", "head to head comparison", "[product] vs [product] article", "comparison review", "write a versus article", "side by side comparison blog", "which should I choose [A] or [B]", "compare these two products for my blog".
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file. Compatibility notes: Claude Code, ChatGPT, Gemini CLI, Cursor, Windsurf, OpenClaw, any AI agent
It sits in Writing & Content, covering Blog and article writing and Social media posts. The repository describes itself as: 50 AI agent skills for affiliate marketing. Research trending content, write data-backed posts, generate infographics, build landing pages, deploy — full flywheel with social… The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e43bfae. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Claude Code, ChatGPT, Gemini CLI, Cursor, Windsurf, OpenClaw, any AI agent
From compatibility in the SKILL.md frontmatter.
Comparison Post Writer loads about 3.6k tokens when it runs. Until then it costs about 116 tokens; SKILL.md has 1,471 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Affitor/affiliate-skills at commit e43bfae, republished under its MIT licence (© Affitor). 1,471 words, ~3,562 tokens.
.claude/skills/comparison-post-writer/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Write high-converting "X vs Y" comparison blog posts that rank on Google and help readers make a confident buying decision. Each post includes a feature comparison table, individual product breakdowns, pros and cons, a clear winner recommendation, and affiliate CTAs placed at maximum-intent moments.
Parse the user's request for product names. You need a minimum of 2 and a maximum of 3 products.
If only 1 product is provided:
web_search to find the top 1-2 competitors"[product name] alternatives" OR "[product name] vs" site:g2.com OR site:capterra.com OR site:trustradius.comIf 3+ products are provided:
Affiliate priority: The user's affiliate product goes first (featured position). If both products have affiliate links, feature the higher-commission one in the "winner" slot unless the product genuinely loses on quality.
For each product, use web_search to gather:
"[product A] vs [product B]" — check if autocomplete shows this is a real querySearch queries to run per product:
"[product name] review [year]""[product name] pricing""[product name] pros cons"Determine the 6-10 comparison dimensions that matter most for this product category. These should be:
Example dimensions by category:
Assign a winner per dimension based on research. Mark ties where genuine.
Choose one of three angles based on what the data shows:
| Angle | When to use | Headline formula |
|---|---|---|
| Clear winner | One product is genuinely better for most users | "[A] vs [B]: [A] Wins for Most, But [B] Is Better If..." |
| It depends | Products serve different audiences | "[A] vs [B]: Which Is Right for You? (Honest Comparison)" |
| Upset | Lesser-known product beats the market leader | "[A] vs [B]: Why [Lesser-Known] Is Actually Better in [Year]" |
Default to "clear winner" — readers want a recommendation, not a non-answer.
Write the full comparison post following this exact structure:
1. FTC Disclosure (3 lines, above the fold)
Read shared/references/ftc-compliance.md and use the medium format. Insert immediately after the title.
2. Introduction (150-250 words)
3. Quick Verdict Box (immediately after intro) A scannable summary for readers who won't read the full article:
**Quick Verdict**
- Best overall: [Product A] — [one-line reason]
- Best for [use case]: [Product B] — [one-line reason]
- Best for budget: [Product X]
- Skip if: [edge case where neither works]4. Product Overviews (200-300 words each) One H2 section per product:
[Try [Product] free →](affiliate_url)5. Feature Comparison Table A full markdown table with all comparison dimensions:
| Feature | [Product A] | [Product B] |
|---|---|---|
| [Dimension 1] | ✅ Yes | ❌ No |
| [Dimension 2] | ⭐ Better | Good |
| Price | $X/mo | $Y/mo |Use ✅ / ❌ / ⚠️ (partial) for binary features. Use descriptive text for nuanced ones. Bold the winner per row.
6. Deep-Dive Sections (one H2 per key dimension, 3-4 total) Pick the 3-4 dimensions that drive 80% of buying decisions. For each:
7. Pricing Breakdown
8. Pros and Cons Two H3 sections (one per product), each with 4-6 bullet points per list.
9. Who Should Choose Each Product Two H3 sections with bullet lists:
10. The Verdict (200-300 words)
**Get started with [Product A] →**(affiliate_url)11. FAQ Section (5-7 questions) Address the real questions people type into Google:
Produce output in three parts:
Part 1: SEO Metadata
---
SEO METADATA
---
Title: [title]
Slug: [product-a]-vs-[product-b]
Meta Description: [150-160 chars comparing both products with clear angle]
Target Keyword: [product-a] vs [product-b]
Secondary Keywords: [product-a] review, [product-b] alternatives, best [category] tool, [product-a] pricing
Word Count: [actual]
Format: comparison
Winner: [product name]
---Part 2: Full Article Complete markdown ready to paste into any blog platform.
Part 3: Supplementary Data FAQ schema questions, image suggestions (comparison screenshots), products featured with affiliate URLs, next steps.
product_a: # REQUIRED — the primary affiliate product
name: string
description: string
reward_value: string # e.g., "30% recurring"
url: string # Affiliate link
reward_type: string # "recurring" | "one-time" | "tiered"
cookie_days: number
tags: string[]
product_b: # REQUIRED — the product to compare against
name: string
url: string # Affiliate link if available, otherwise homepage
description: string # Optional — will research if missing
product_c: # OPTIONAL — third product for 3-way comparison
name: string
url: string
description: string
target_keyword: string # OPTIONAL — default: "[product_a] vs [product_b]"
tone: string # OPTIONAL — "conversational" | "technical" | "professional"
# Default: "conversational"
angle: string # OPTIONAL — "clear-winner" | "it-depends" | "upset"
# Default: auto-detected from researchBefore 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
slug: string # e.g., "heygen-vs-synthesia"
meta_description: string
target_keyword: string
format: "comparison"
content: string # Full markdown article
word_count: number
winner: string # Name of the recommended product
comparison:
dimensions: string[] # The features compared
dimension_winners: # Who won each dimension
- dimension: string
winner: string # "product_a" | "product_b" | "tie"
products_featured:
- name: string
url: string
role: string # "primary" | "compared"
reward_value: string
seo:
secondary_keywords: string[]
faq_questions:
- question: string
answer: string
image_suggestions:
- description: string
alt_text: stringPresent as three sections:
Target word count: 2,500-3,500 words. Longer for complex SaaS tools with many features.
Example 1: Two affiliate products User: "Write a comparison post: HeyGen vs Synthesia" Action: product_a=HeyGen (affiliate), product_b=Synthesia (affiliate), research both, detect angle=clear-winner (or it-depends based on data), write 3,000-word comparison targeting "heygen vs synthesia".
Example 2: Chained from S1 User: "Compare it with its top competitor" Context: S1 returned HeyGen as recommended_program Action: product_a=HeyGen from S1 output, web_search for top competitor, write comparison.
Example 3: Three-way comparison User: "HeyGen vs Synthesia vs Colossyan comparison post" Action: Three-way comparison, determine winner + runners-up, write 3,500-4,000 word article with side-by-side table.
Example 4: Underdog angle User: "Compare Ahrefs vs Ubersuggest — I'm promoting Ubersuggest" Action: product_a=Ubersuggest (affiliate), product_b=Ahrefs, angle=upset (lesser-known vs market leader), frame Ubersuggest as the budget-friendly winner for specific use cases.
shared/references/ftc-compliance.md — FTC disclosure text. Read in Step 5.shared/references/affitor-branding.md — Do NOT add Affitor branding to blog body. Only applies to landing pages.shared/references/affiliate-glossary.md — Terminology reference.shared/references/flywheel-connections.md — master flywheel connection maplanding-page-creator (S4) — comparison data feeds comparison landing pagescontent-pillar-atomizer (S2) — comparison article as pillar to atomizeinternal-linking-optimizer (S6) — new comparison needs internal linksaffiliate-program-search (S1) — recommended_program as primary productkeyword-cluster-architect (S3) — commercial intent clusters for comparison topicscompetitor-spy (S1) — competitor product dataseo-audit (S6) tracks comparison article rankings → identify which comparison angles rank bestBefore delivering output, verify:
Any NO → rewrite before delivering.
chain_metadata:
skill_slug: "comparison-post-writer"
stage: "blog"
timestamp: string
suggested_next:
- "landing-page-creator"
- "content-pillar-atomizer"
- "internal-linking-optimizer"© Affitor, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/blog/comparison-post-writer of Affitor/affiliate-skills.
Open the folder on GitHubat commit e43bfae
Comparison Post Writer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Comparison Post Writer this skillAffitor/affiliate-skills | 699 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Voice Buildercharlie947/social-media-skills | 3.8k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Nub Chartsnubjs/nub | 4.4k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Content Writer Agentmastra-ai/mastra | 29k | — | ~1.3k | Automated safety check: Pass | Custom licence | |
| Content Writerchrispangg/deepagentsdk | 128 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Blog Cover Posterdigoal/blog | 8.6k | — | ~1.4k | Automated safety check: Pass | GPL-2.0 |
charlie947/social-media-skills
Build a personalised voice profile inside a Codex or Claude project from a short interview plus 3 to 5 sample pieces of writing.
nubjs/nub
Build a performance chart for nubjs.com — the SVG bar figures in blog posts, docs pages and social posts (a runtime augmentation against plain node, an install or dispatch comparison, a cross-tool…
mastra-ai/mastra
Authoring playbook for building agents that draft written content — blog posts, marketing copy, social media posts, newsletters, product descriptions, landing pages, or ad copy.
chrispangg/deepagentsdk
Writing content across different platforms and styles. An agent skill from chrispangg/deepagentsdk.
digoal/blog
Turn a blog post, article, notes, or any source material into a set of vertical poster images — one cover plus several coherent content slides that explain the core points.
irinabuht12-oss/marketing-skills
Transform one long-form piece into multiple platform-specific content derivatives including LinkedIn posts, tweet threads, email snippets, ad hooks, and video scripts while maintaining voice…
Affitor/affiliate-skills
Generate affiliate performance reports with KPIs and recommendations.
Affitor/affiliate-skills
Live affiliate program data from openaffiliate.dev. An agent skill from Affitor/affiliate-skills.
Affitor/affiliate-skills
Research and evaluate affiliate programs to find the best ones to promote.
Affitor/affiliate-skills
Create a Linktree-style bio link hub page as a single self-contained HTML file.
Affitor/affiliate-skills
Set up affiliate conversion tracking with UTM parameters and link tagging.
Affitor/affiliate-skills
Build a single-product deep-dive showcase page as a self-contained HTML file.
Categories
Write "X vs Y" comparison blog posts that help readers choose between two competing products. Comparison Post Writer is an agent skill from Affitor/affiliate-skills. Write "X vs Y" comparison blog posts that help readers choose between two competing products.
Comparison Post Writer fits situations like: : write a comparison post; X vs Y blog post; compare [product A] and [product B]; which is better [A].
Run `npx skills add Affitor/affiliate-skills --skill comparison-post-writer -a claude-code`. Or copy the skill folder (skills/blog/comparison-post-writer in Affitor/affiliate-skills) into .claude/skills/comparison-post-writer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Affitor/affiliate-skills --skill comparison-post-writer -a codex`. Or copy the skill folder (skills/blog/comparison-post-writer in Affitor/affiliate-skills) into .agents/skills/comparison-post-writer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Affitor/affiliate-skills --skill comparison-post-writer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/comparison-post-writer, .gemini/skills/comparison-post-writer, .github/skills/comparison-post-writer and .opencode/skills/comparison-post-writer in your project.
SKILL.md names no scripts, command-line tools or credentials: Comparison Post Writer is instructions for the agent only. Compatibility (from SKILL.md): Claude Code, ChatGPT, Gemini CLI, Cursor, Windsurf, OpenClaw, any AI agent.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Comparison Post Writer is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Comparison Post Writer: Voice Builder (charlie947/social-media-skills, 3.8k stars), Nub Charts (nubjs/nub, 4.4k stars), Content Writer Agent (mastra-ai/mastra, 29k stars) and Content Writer (chrispangg/deepagentsdk, 128 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Affitor (a GitHub organization) maintains it in Affitor/affiliate-skills, which has 699 GitHub stars. The repository holds 50 skills in this directory. The repository was last updated on September 15, 2026.
Source: Affitor/affiliate-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.