Growth Marketer

LinkedIn Carousels That Write Themselves: From Data to Slides in 90 Seconds

90 seconds per carouselMarketing & SEO4 min read

Key Takeaway

We built a workflow where an AI agent takes a topic, generates styled HTML carousel slides at 1080Γ—1080px, auto-screenshots each as PNG, and delivers them ready for LinkedIn upload β€” in 90 seconds. No designer. No Canva. No back-and-forth.

The Problem

LinkedIn carousels consistently outperform single-image posts in our experiments β€” 3-4x more impressions, 2x the engagement rate. We knew we should be posting more of them. We weren't, because they took too long to make.

Our previous workflow: write the content β†’ brief the designer β†’ wait 24-48 hours β†’ review β†’ revise β†’ export. By the time the carousel was done, the insight it was based on was stale. We'd post 1-2 per month. We knew we needed 8-10.

The bottleneck wasn't creativity. It was production.

The Solution

An AI agent that handles the full production pipeline:

  1. Takes a topic or raw insight as input
  2. Structures it into 6-8 slide narrative arc
  3. Generates styled HTML for each slide
  4. Screenshots each slide at 1080Γ—1080px via headless browser
  5. Packages the PNG files for upload

The entire pipeline runs in 90 seconds.

The Process

Step 1: Define the input.

View details
Input: "We replaced all 4 of our weekly standups with a Telegram async bot
        and saved 31 hours/month across the studio."

Target: 7-slide LinkedIn carousel
Style: PyratzLabs brand (dark background, purple accents, Inter font)

Step 2: The agent generates the narrative structure.

The agent maps the insight to a proven carousel arc:

  • Slide 1: Hook (bold claim, pattern interrupt)
  • Slide 2: The before state (establish the problem)
  • Slides 3-5: The process (numbered steps or reveals)
  • Slide 6: The result (the number)
  • Slide 7: CTA (what should the reader do next)

Step 3: HTML slide generation.

For each slide, the agent produces styled HTML:

htmlShow code
<!-- slide-01-hook.html -->
<!DOCTYPE html>
<html>
<head>
  <style>
    body {
      width: 1080px; height: 1080px;
      background: #0a0a0f;
      font-family: 'Inter', sans-serif;
      display: flex; align-items: center; justify-content: center;
      overflow: hidden; margin: 0;
    }
    .slide { padding: 80px; text-align: center; }
    .eyebrow {
      font-size: 18px; font-weight: 600; letter-spacing: 0.15em;
      color: #8b5cf6; text-transform: uppercase; margin-bottom: 32px;
    }
    .headline {
      font-size: 64px; font-weight: 800; line-height: 1.1;
      color: #f5f0e8; margin-bottom: 40px;
    }
    .subtext { font-size: 28px; color: #9ca3af; line-height: 1.4; }
    .counter {
      position: absolute; bottom: 48px; right: 64px;
      font-size: 16px; color: #6b7280;
    }
  </style>
</head>
<body>
  <div class="slide">
    <div class="eyebrow">Studio Operations</div>
    <div class="headline">We killed<br>all 4 standups.</div>
    <div class="subtext">Saved 31 hours/month.<br>Here's exactly how.</div>
  </div>
  <div class="counter">1 / 7</div>
</body>
</html>

Design system specs:

  • Canvas: 1080Γ—1080px (LinkedIn native)
  • Background: #0a0a0f (near-black)
  • Primary text: #f5f0e8 (warm white)
  • Accent: #8b5cf6 (purple)
  • Muted text: #9ca3af (gray)
  • Font: Inter (Google Fonts CDN)
  • Padding: 80px all sides
  • Slide counter: bottom-right, 16px gray

Step 4: Auto-screenshot each slide.

bashShow code
# screenshot-slides.sh
for i in slides/slide-*.html; do
  npx playwright screenshot \
    --viewport-size "1080,1080" \
    "$i" \
    "output/$(basename $i .html).png"
done

Step 5: Package and deliver.

The agent zips the 7 PNGs and outputs them to /carousel-ready/. Upload directly to LinkedIn's carousel post creator.

The Results

MetricManual (Canva + Designer)AI Agent Pipeline
Time to produce24-48 hours90 seconds
Cost per carousel~$45 (designer time)~$0.08 (LLM tokens)
Carousels per month1-212-15
Brand consistencyVaries (designer dependent)Pixel-perfect every time
Avg LinkedIn impressionsBaseline3.4x baseline
Avg engagement rateBaseline2.1x baseline

The impression and engagement improvements aren't from the AI β€” they're from posting frequency. When carousels take 90 seconds to produce instead of 48 hours, you post more of them, and more posting means more reach.

Try It Yourself

bashShow code
# Generate a carousel from any insight
mrchief run linkedin-carousel \
  --insight "Your key finding or claim" \
  --slides 7 \
  --style pyratzlabs \
  --output ./carousel-ready/

The --style flag accepts a JSON design system spec if you want to use your own brand colors and fonts instead of ours.


At PyratzLabs, we don't believe content should take longer to produce than to consume. A 7-slide carousel takes 2 minutes to read. It should take 90 seconds to make.

LinkedIncontent automationAI designsocial media

Want results like these?

Start free with your own AI team. No credit card required.

LinkedIn Carousels That Write Themselves: From Data to Slides in 90 Seconds β€” Mr.Chief