Skip to main content
ClaudeWave
Skill458 repo starsupdated 2mo ago

infographic-generator

The infographic-generator skill transforms written content, data, or topics into complete visual specifications including layout structure, copy, data points, and color schemes. It outputs specifications ready for rendering as HTML/CSS, or importing into design tools like Canva or Figma, with preset dimensions for LinkedIn, Instagram, Twitter, Facebook, and blog platforms. Use it to add branded visuals to social media posts, statistics, comparisons, checklists, timelines, or any content requiring visual enhancement without design expertise.

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

SKILL.md

# Infographic Generator

Generate complete infographic specifications from any content, data, or topic.
Outputs structured layout + all copy + data points + color scheme — ready to render
as HTML/CSS, with [Satori](https://github.com/vercel/satori) (server-side), in Canva,
Figma, or any design tool.

**LinkedIn posts with images get 2-3x more engagement.** This skill turns your content
into visual assets without design skills.

Inspired by [content-pipeline](https://github.com/Affitor/content-pipeline)'s Satori
rendering: AI writes the content → structured spec → rendered as a branded image.

## Stage

This skill belongs to Stage S2: Content

## When to Use

- After `viral-post-writer` creates a LinkedIn post — add a visual
- After `content-research-brief` collects stats — visualize them
- When creating comparison content — feature/pricing comparison chart
- When sharing data or stats — stat highlight cards
- When creating a listicle — visual checklist or numbered list
- For any social media post that would benefit from a branded image

## Input Schema

```yaml
content: string                # (required) Content to visualize — post text, data, or article
infographic_type: string       # (optional, default: auto-detected)
                               # "stat_highlight" — 1-3 key numbers, large and bold
                               # "comparison" — side-by-side product/feature comparison
                               # "process_flow" — step-by-step workflow or how-to
                               # "checklist" — list of items with checkmarks
                               # "timeline" — chronological events
                               # "data_chart" — bar/pie chart representation
                               # "quote_card" — featured quote with attribution
                               # "feature_grid" — grid of features/benefits with icons
platform: string               # (optional, default: "linkedin")
                               # "linkedin" — 1080×1350 (portrait, optimal engagement)
                               # "instagram" — 1080×1080 (square)
                               # "twitter" — 1200×675 (landscape)
                               # "facebook" — 1200×630
                               # "blog" — 1200×800 (featured image)
brand: object                  # (optional) Brand customization
  name: string                 # Company/personal brand name
  primary_color: string        # Hex — "#0066FF"
  secondary_color: string      # Hex — "#1A1A2E"
  accent_color: string         # Hex — "#FF6B35"
  font_style: string           # "modern" | "classic" | "bold" | "minimal"
  logo_text: string            # Text-based logo — "Affitor" | "@yourhandle"
output_format: string          # (optional, default: "spec")
                               # "spec" — structured JSON spec (for any renderer)
                               # "html" — renderable HTML/CSS (self-contained)
                               # "both" — spec + HTML
```

## Workflow

### Step 1: Analyze Content and Select Type

Read the input content and detect the best infographic type:

| Content Pattern | Auto-detected Type |
|----------------|-------------------|
| Contains 1-3 prominent numbers/stats | `stat_highlight` |
| Contains "vs", comparison data | `comparison` |
| Contains numbered steps or a process | `process_flow` |
| Contains a list of items (3-10) | `checklist` or `feature_grid` |
| Contains dates or chronological events | `timeline` |
| Contains a notable quote | `quote_card` |
| Contains percentages or proportions | `data_chart` |

If `infographic_type` is provided, use that. Otherwise auto-detect.

### Step 2: Extract Visual Data

From the content, extract exactly what needs to appear in the infographic:

**For `stat_highlight`:**
```yaml
stats:
  - number: "30%"        # The big number
    label: "commission"   # What it measures
    context: "recurring"  # Additional context
  - number: "60"
    label: "cookie days"
    context: "industry avg: 30"
```

**For `comparison`:**
```yaml
items:
  - name: "HeyGen"
    features:
      - label: "Commission"
        value: "30% recurring"
        highlight: true         # winner for this row
      - label: "Cookie"
        value: "60 days"
        highlight: true
  - name: "Synthesia"
    features:
      - label: "Commission"
        value: "25% one-time"
        highlight: false
      - label: "Cookie"
        value: "30 days"
        highlight: false
```

**For `process_flow`:**
```yaml
steps:
  - number: 1
    title: "Research"
    description: "Find winning programs"
    icon: "🔍"
  - number: 2
    title: "Create"
    description: "Write content that converts"
    icon: "✍️"
```

**For `checklist`:**
```yaml
items:
  - text: "Recurring commission"
    checked: true
  - text: "60+ day cookie"
    checked: true
  - text: "Free trial available"
    checked: true
  - text: "Dedicated affiliate manager"
    checked: false
```

### Step 3: Design Layout

Based on type + platform, define the layout:

**Platform dimensions:**
| Platform | Width | Height | Aspect |
|----------|-------|--------|--------|
| LinkedIn | 1080 | 1350 | 4:5 (portrait) |
| Instagram | 1080 | 1080 | 1:1 (square) |
| Twitter | 1200 | 675 | 16:9 (landscape) |
| Facebook | 1200 | 630 | ~2:1 |
| Blog | 1200 | 800 | 3:2 |

**Layout structure (all types):**
```
┌─────────────────────────────┐
│         HEADER              │  10-15% height
│    Headline / Title         │
├─────────────────────────────┤
│                             │
│         BODY                │  70-80% height
│    Data / Content           │
│    (type-specific layout)   │
│                             │
├─────────────────────────────┤
│         FOOTER              │  10% height
│    Brand / CTA / Source     │
└─────────────────────────────┘
```

### Step 4: Generate Color Scheme

**If brand colors provided:** Use them directly.

**If no brand colors:** Generate a professional palette:

```yaml
# Default professional pal