LinkedIn PDF Document Carousel Generator
On LinkedIn, attaching multiple PNG/JPG images creates a static photo grid—not a swipeable carousel. True swipeable LinkedIn carousels are multi-page 4:5 portrait PDF documents. Always export and attach the rendered deck as a single PDF document.
Step 0. Steer Weak Prompts Out of B2B AI Slop (Mandatory First Gate)
Lazy prompts ("make a LinkedIn carousel on SaaS onboarding", "5 AI marketing tips") default to generic AI slop: dark navy cyber grids, glowing cyan icons, screaming ALL-CAPS headlines, paint-brush price highlights, slanted ribbons, echoed stat pills, and "Found this valuable? Repost ♻️" end cards.
Before planning pages, read references/anti-slop.md and lock one restrained B2B editorial system:
- Swiss Print Grid (Stripe Press, McKinsey Quarterly): matte warm bone
#F5F3EE, carbon ink#141413, 1 restrained accent (#1D4ED8cobalt or#0F766Eteal),1px#D6D3CDhairlines, sentence-case headlines,>= 40%open paper. - FT / Bloomberg Data Journalism: salmon
#FFF1E5or cool newsprint#F2F4F7,#111827ink, flat 2D bar/line charts with direct value labels, tabular numerals, quiet source footer. - Minimal Product UI (Linear, Vercel, Ramp): flat
#F7F7F8stone or#0B0C0Ecarbon,1pxsubtle border, real pixel-exact UI screenshots pasted viaplaceImages, sentence-case geometric sans.
Three Hard Restraint Invariants
- Max 3 elements per page +
>= 35%flat negative space: (1) quiet plain-text page index (02 / 08with no pill border), (2) sentence-case headline + 1 concise sentence (<= 24words total), and (3) one concrete visual proof (1px-framed product screenshot, flat 2D chart, or clean workflow diagram with real tool logos). - Real visual proof on every page:
What is this page about? ├── A product, pricing page, public report, doc, repo, or source article with a URL │ → screenshotUrl = that URL inside a minimal 1px hairline border (no cartoon macOS window bar). │ Paste exact browser pixels afterward with genppt_revise_slides(placeImages, cover: true). ├── A named company, tool, or platform (HubSpot, Salesforce, Stripe, Linear...) │ → visual names its official wordmark and palette; imageUrl when you have a clean asset. ├── A metric, benchmark, or before/after result │ → flat 2D chart with direct value labels, units, and source footer (zero 3D bars or gradients). └── A real person (founder, executive, customer portrait) → imageUrl = Wikimedia Commons or official press portrait on this page only. - Copy & visual anti-slop blocklist:
- Copy: Zero em dashes (
—) or spaced en dashes (–). Ban"isn't X, it's Y","The secret isn't...","delve","game-changer","unlock","thrilled to share", and"Repost ♻️"begging. State every metric once per page (never echo headline numbers in adjacent pill badges). - Visuals: Ban ALL-CAPS shouting headlines, paint-brush splatters, slanted ribbons, sci-fi HUD bars, glassmorphism pills, dark edge vignettes, waxy HDR CGI illustrations, and blank numbered code lines.
- Copy: Zero em dashes (
Step 1. Structure the B2B Narrative Arc
What is the source material?
├── Case Study / Experiment / Post-Mortem → 7–11 pages (Outcome Hook → Baseline → Mechanism → Proof Chart → Playbook → One-Page Summary)
├── Tactical Playbook / Framework (N steps) → N + 2 pages (Cover + N steps + Cheat-Sheet Matrix), minimum 6, capped at 14
└── Sharp Contrarian Data Point / Teardown → 6–7 pages
- Aspect ratio: Always
4:5(1.25×mobile height in LinkedIn's document reader without letterbox bars). - Safe margins:
60pxclear on all four edges (clearing LinkedIn's top-right page-counter pill and bottom fullscreen bar).
Step 2. Build the Page-by-Page Beats
- Page 1 — Outcome Cover: Sentence-case headline under 9 words stating a concrete metric or mechanism (
"We audited 420 SaaS trials. 81% of spend leaked on 3 pages."), paired with the key chart or live UI crop and a quietSwipe →cue at bottom-right. - Page 2 — Baseline / Flaw: Why the conventional setup fails, shown with 1 concrete number and a real screenshot or comparison table.
- Pages 3 to N−1 — One Mechanism Per Page (
<= 24words): Alternate clean layouts (framed live UI → flat 2D chart → 2-column before/after → real icon workflow). Keep all supplied numbers verbatim. - Page N — One-Page Cheat-Sheet Summary: Compact 4–5 row decision matrix or checklist recapping the whole framework on a single save-worthy page (never a
"Follow me for more!"filler card).
Step 3. Gather Visual Assets (Mandatory Before Rendering)
- List every company, product, report, and source URL in the carousel; verify each URL loads logged out without a login wall.
- Assign
websiteUrls(max 6), per-slidescreenshotUrl,imageUrl(portraits strictly per-slide, never inreferenceImageUrls),unsplashQuery(real places/environments only), and deck-wide brand logos inreferenceImageUrls.
Step 4. Write Restrained visual Prompts and artDirection
visual formula: [flat matte surface & whitespace split] + [top band: plain index + sentence-case headline] + [lower/right 1px-framed proof visual].
"Matte #F5F3EE warm bone paper with 40% open negative space and 60px margins: plain '03 / 08' index and sentence-case #141413 headline in the top band above a 1px #D6D3CD rule; lower two-thirds frames the live pricing page inside a minimal 1px border with a flat #1D4ED8 callout label on the Enterprise tier."
artDirection: Specify the chosen Step 0 surface/ink/accent hexes, sentence-case typography, 1px hairline grid, 60px margins, and explicit bans on ALL-CAPS shouting, brush-stroke splatters, slanted ribbons, HUD pills, echoed stat badges, cartoon traffic-light bars, vignettes, and waxy HDR CGI.
Step 5. Render & Run Anti-Slop Visual QA + placeImages
- Call
genppt_create_slideshow(https://genppt.com/mcp) withaspectRatio: "4:5",title,thesis,slides,websiteUrls,referenceImageUrls,attachmentUrls,artDirection,autoRender: true. - Call
genppt_get_deck({ deckId, waitSeconds: 45 }) untilphase === "ready". - Visual QA +
placeImagesupgrade: Inspect every slide image. For any slide where the model redrew a webpage screenshot into simplified cartoon UI, callgenppt_revise_slideswithplaceImages(cover: true, up to 10 slides synchronously) to paste the untouched browser capture. Revise any slide showing visual/copy slop, echoed badges, cookie modals, or margin clipping. - Mandatory PDF export: Call
genppt_export_deckwith{ deckId, format: "pdf" }and usedownloadUrl. Never attach loose PNGs to a LinkedIn carousel post.
Step 6. Write the Companion Commentary & Stage/Publish
- Lines 1–2 (under 190 chars before
"...see more"): Lead with the sharpest number or finding — never"I put together a carousel on...". - Body (3–5 short lines): Scannable operator prose, zero em dashes (
—), zero"isn't X, it's Y"clichés, and a<= 58-charPDF document title.
Is a social publishing MCP or LinkedIn integration connected?
├── Yes → Attach the exported PDF `downloadUrl` as a LinkedIn document attachment with your <=58-char title:
│ ├── Connector flags the account as review-required, or it is a personal executive profile (default)
│ │ → Save as a draft only, display the exact commentary + Page 1..N previews + PDF link, and wait for explicit approval before publishing.
│ └── Company page with autonomous publishing explicitly enabled
│ → Publish live and return the post URL.
└── No → Display the slide previews inline, provide `downloadUrl` for the multi-page PDF + `studioUrl`, and output the ready-to-paste LinkedIn post copy.