Growth Marketer
LinkedIn Carousels That Write Themselves: From Data to Slides in 90 Seconds
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:
- Takes a topic or raw insight as input
- Structures it into 6-8 slide narrative arc
- Generates styled HTML for each slide
- Screenshots each slide at 1080Γ1080px via headless browser
- 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
| Metric | Manual (Canva + Designer) | AI Agent Pipeline |
|---|---|---|
| Time to produce | 24-48 hours | 90 seconds |
| Cost per carousel | ~$45 (designer time) | ~$0.08 (LLM tokens) |
| Carousels per month | 1-2 | 12-15 |
| Brand consistency | Varies (designer dependent) | Pixel-perfect every time |
| Avg LinkedIn impressions | Baseline | 3.4x baseline |
| Avg engagement rate | Baseline | 2.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.
Related case studies
Head of Content
How We Turned One Article Into 47 Social Posts in 12 Minutes
We fed a single 68KB article into an AI content repurposer agent and got back 47 publish-ready social posts β LinkedIn carousels, Twitter threads, email teasers, pull-quotes β in 12 minutes flat.
Studio Founder
How We Built an Investor Pitch Deck in 4 Minutes β With Animations
We replaced a 3-day designer workflow with an AI agent that generates animation-rich, keynote-quality investor decks in under 5 minutes β zero dependencies, pure HTML.
Content Lead
Social Media Visuals at Scale: 20 LinkedIn Images in 10 Minutes
We batch-generate 20 branded LinkedIn images in 10 minutes using Grok and Gemini β replacing 30-minute-per-image Canva sessions with automated, on-brand content at scale.
Want results like these?
Start free with your own AI team. No credit card required.