SkillsWhitepaperHow It WorksResultsFAQ Join Waitlist
SKILL

Teach Your Claude Code to Design LinkedIn Carousels

Organize slide HTML in a JSON structure, apply your brand system, preview in a local studio, and export to PDF. All from plain English prompts.

$0 Design tools
~2min Per slide
HTML→PDF Pipeline
Download Skill File ↓

Built with one prompt in Claude Code

This carousel was generated from a single prompt. 10 slides, neo-brutalist branding, exported as PDF for LinkedIn. Here's the cover slide.

Everything lives in carousel.json

One JSON file is the entire carousel — theme, components, and every slide's HTML. No external assets. No database. Just a file in your repo.

carousel.json
{
  "id": "website-remaker-2026",
  "title": "How to Clone Any Website with AI",
  "format": "carousel",  // 1080x1350, 4:5 portrait

  "theme": {
    "primary_color": "#FEBB02",
    "font_family": "Space Grotesk",
    "css_stylesheet": "/* .slide, .card, .pill-tag, .terminal-card, .footer */"
  },

  "components": [
    { "component_type": "footer", "html_template": "{{index}}/{{total}}" }
  ],

  "slides": [
    {
      "id": "slide-01-cover",
      "slide_index": 0,
      "body_content": "<div class='slide-content'>...</div>",
      "alternatives": []
    },
    // ... 9 more slides
  ]
}
format Sets slide dimensions — "carousel" is 1080x1350 (4:5), "presentation" is 1920x1080 (16:9)
theme Controls the brand — colors, fonts, and the full CSS stylesheet for every slide class
components Reusable HTML fragments — footer appears on every slide via template variables
slides[] Ordered array of slide content — each has body_content (HTML) and alternatives[] for A/B versions
Directory Structure
departments/marketing/carousels/
  solostack-repo-2026/
    carousel.json           # Source of truth
    .history/               # Auto-snapshots on every save
    slides/
      0/alternatives/       # A/B test versions per slide

Every carousel inherits from packages/brand/

Your brand system lives in the repo as design tokens, CSS variables, and a Tailwind preset. Carousels pull from the same source as your landing pages, emails, and ebooks.

Token Value Preview
Primary #FEBB02
Accent #F25F29
Font (heading) Space Grotesk Aa
Font (code) JetBrains Mono 0x
Borders 3-4px solid #000
Shadows 6-10px hard shadow

Component library

Pre-built CSS classes Claude uses when building slides. Consistent branding without manual design work.

AI Tool

Replace HubSpot

CRM + email in your repo

$50/mo → $3/mo
.card Content cards with borders and shadows
$ claude "build me a CRM" ✓ contacts table created
.terminal-card Code blocks and CLI mockups
Marketing Sales CRM
.pill-tag Category badges and labels
.footer Author info + slide counter

HTML → PDF, step by step

The core of the system is a pipeline that turns plain English into a LinkedIn-ready PDF. Each step is deterministic and inspectable.

Prompt
Claude Code
carousel.json
Studio (iframe)
Puppeteer
PNG → PDF
LinkedIn
1

You describe the carousel topic in plain English

Topic, audience, number of slides, visual style. That's the input.

2

Claude Code generates structured HTML slides in carousel.json

Theme CSS, reusable components, and every slide's body_content as semantic HTML with inline styles.

3

composeSlideHTML() combines theme + components + content

Each slide becomes a full HTML document — fonts loaded, CSS applied, footer injected, template variables resolved.

4

Carousel Studio renders each slide in an iframe at 1080x1350

A local Vite + React app. Auto-refreshes every 2 seconds. You watch slides appear in real time as Claude generates them.

5

Export: screenshot each slide, combine into multi-page PDF

Puppeteer captures each iframe at full resolution. Slides get stitched into a single PDF. Upload to LinkedIn.

TypeScript lib/composeSlide.ts
// How slides get composed into full HTML documents
const fullHTML = composeSlideHTML({
  theme: carousel.theme,
  components: carousel.components,
  bodyContent: slide.body_content,
  slideIndex: slide.slide_index,
  totalSlides: carousel.slides.length
});

// Returns a complete <!DOCTYPE html> document:
// - Fonts loaded via @import
// - Theme CSS injected into <style>
// - body_content placed inside .slide container
// - Footer component appended with {{index}}/{{total}} resolved

From idea to LinkedIn post in 5 steps

Step 1

Describe your topic

Example prompt

"Create a LinkedIn carousel about how SoloStack replaces $415/mo in SaaS tools. 10 slides, neo-brutalist, yellow + black."

Step 2

Claude generates carousel.json

Claude creates the complete JSON with theme, components, and all slides. One file, version-controlled, diffable.

Step 3

Preview in Carousel Studio

cd tools/carousel-studio && pnpm dev localhost:5173
Step 4

Edit or request alternatives

Example prompt

"Generate an alternative for slide 3 with a terminal-card layout"

Step 5

Export and post

Export as multi-page PDF. Upload to LinkedIn as a document post. Done.

Watch Claude build a carousel

Describe your content in plain English. Claude generates every slide, applies your brand theme, and saves everything as a single JSON file.

claude — solostack/
you: |
Created departments/marketing/carousels/ai-tools-marketing-2026/carousel.json:

  ✓ Theme: Neo-brutalist, #FEBB02 primary, Space Grotesk
  ✓ Cover slide: "7 AI Tools That Replaced My Marketing Stack"
  ✓ Slides 2-8: One tool per slide with cost savings
  ✓ Slide 9: Total savings recap ($492/mo → $13/mo)
  ✓ Slide 10: CTA — "Comment STACK for the full list"
  ✓ Footer component: @handle + slide counter
  ✓ 10 slides generated in 1m 48s

→ Open Carousel Studio to preview: pnpm studio
you: |
Generated alternative for slide 3:

  Original: Plain card layout with tool description
  Alternative: Terminal-card style with code snippet showing
               the Claude Code prompt that replaces the tool

  ✓ Added to slides[2].alternatives[] (id: alt-e7a91b3c)
  ✓ Original body_content preserved
  ✓ Compare both versions in Carousel Studio

→ 2 versions available for slide 3. Pick your favorite in the studio.
you: |
Updated cover slide hook:

  Before: "7 AI Tools That Replaced My Marketing Stack"
  After:  "I Cancelled $492/mo in SaaS. Here's What I Use Instead."

  ✓ body_content updated for slide 0
  ✓ Snapshot saved to .history/2026-02-15T143000Z.json
  ✓ Previous version preserved — rollback available

→ Cover slide updated. Refresh Carousel Studio to preview.

8 rules for high-performing carousels

1

Hook slide is everything

Lead with a bold number, controversial claim, or question. If slide 1 doesn't stop the scroll, slides 2-10 don't matter.

2

One idea per slide

Don't cram. Each slide should have a single takeaway. If you need two points, use two slides.

3

Use slide 2 to set stakes

Create emotional investment. "Here's why this matters to you." People who swipe past slide 2 will finish the carousel.

4

End with a clear CTA

One action, not three. "Comment REPO" or "Follow for more." A confused reader does nothing.

5

8-12 slides is the sweet spot

Enough to deliver value, short enough to finish. Completion rate drives the LinkedIn algorithm.

6

High contrast

Bold colors, heavy fonts. LinkedIn is a noisy feed — subtlety gets skipped.

7

Large text

Body text 22px+, headlines 48px+. Most people view LinkedIn on mobile — small text is invisible.

8

Consistent layout

Same header, same footer, same color scheme across all slides. Consistency signals quality.

Get the carousel design playbook

Download the full carousel skill file — a complete guide to building LinkedIn carousels with Claude Code. Includes the JSON schema, component reference, content strategy tips, and example prompts.

Common questions

Ready to build carousels from your terminal?

Join the waitlist and get early access to SoloStack's full carousel toolkit — plus every other skill file in the marketplace.

Join Waitlist →