Carousel Styles
Never invent a slide layout from scratch. Every design here was found on Pinterest/TikTok as a proven, save-worthy genre, decomposed into its working mechanics, and rebuilt as a deterministic PIL recipe. The pipeline:
find a ref โ decompose the mechanic โ rebuild as code โ batch it.
The hard rules (each one paid for by a real failure)
- Never bake text into generated images. Image models garble letters
("ZOICM", "Bowtle Lingii") and platforms crop-clip baked captions. Generate
photos text-free (
NO text, NO logosin every prompt); draw ALL type in PIL on top. Exception: a strong image-edit model (nano-banana class) CAN render clean typography as a design pass over a finished photo โ use it for callout/infographic looks, never for body copy. - Text must never contradict the photo. If a line names a colour or a garment, the photo must show it. Caption your photo bank once with a vision model (colours + garment types), then pick photos by token overlap with the line (colour matches weigh double). When the bank can't match โ or the photo set is too small to choose from โ switch that carousel to neutral copy: advice true over any outfit ("one accent, then stop", "press it, don't replace it"). Neutral beats mismatched every time.
- Vary faceless poses. "No face" prompts collapse into everyone standing with their back to the camera. Rotate: crop at the lips, side profile, looking down at a bag, dark sunglasses; from-behind only occasionally.
- The narrative arc is pain โ more pain (the bad fix) โ hope โ solution. One beat per slide, one line per beat. The bad fix gets named explicitly ("folding? it lasts three days").
- No trailing periods in display copy. Catchy hook on slide 1 โ numeral- first or curiosity-gap โ with ONE big image, never a pile of objects.
- Wrap by measured width, not character count, and autofit font size. Check your display font has the glyphs you use (Poppins has no "โ", PIL default fonts have no emoji โ draw shapes instead).
- Fonts are part of the ref. Identify the actual family (geometric grotesque like Poppins vs a heavy grotesque like Arial Black reads completely differently). Bundle OFL fonts with the repo so CI renders identically.
- Photos come from a bank, not fresh generation. Generate a photo once, caption it, reuse forever. A 5-photo palette set (~$0.70 once) powers unlimited carousels and pins at $0.
The 10 visual systems
Each entry: the mechanic that makes it work + layout recipe. Full PIL primitives in reference.md.
| System | Mechanic | Skeleton |
|---|---|---|
| notebook | grid paper + torn sheet = handmade authority; numbered rule pages | Poppins ExtraBold headline w/ italic accent โ Didot italic accent line โ bold intro / Key takeaway / PUT IT IN PRACTICE โ hand-circled labels with a cursor |
| statement | one huge lowercase line over a full-bleed photo; sassy voice | mint (186,242,214) or rose (248,198,214) Poppins SemiBold, centred, soft shadow, darkened photo |
| moodboard | overlapping tilted polaroids prove a palette | paint-dot palette header โ 4 photos at ยฑ2-6ยฐ with soft shadows โ handwritten scribbles in the gaps |
| scan | "the machine annotated this street shot" | full-bleed photo, thin white inner border, mono metadata corners (SCAN 02/76), red item boxes with leader lines |
| journal | grainy b/w + huge script = quiet luxury | b/w photo, oversized script word + small italic qualifier, serif annotations with rule lines |
| lookbook | catalogue density rewards the save | giant serif title OVER the figure, spec-strip footer (pieces/outfits/bought), numbered look grid |
| recipe card | cooking metaphor makes an outfit teachable | arch-masked photo, INGREDIENTS / THE RECIPE two columns, chef's note italic |
| magazine cover | persona as cover star = instant aspiration | full-bleed portrait, Didot masthead behind the head, cover lines both sides, issue line + barcode |
| iMessage | advice disguised as a leaked screenshot | blurred photo bg, message bubble, reaction pill glued to the bubble TOP, long-press menu under it SAME left edge โ alignment is what sells it |
| tweet | a hot take with fake engagement counts | white tweet card over blurred photo: avatar, verified tick, take in 3-4 lines, reposts/likes/saves row, a reply-teaser card carrying the CTA |
Batch pipeline
- Specs first. Generate copy specs (hook / sub / 3-5 tips / CTA / caption) with an LLM against your measured winners; validate hard (highlight word must appear verbatim, length caps, banned diary openers) and dedupe against everything already built before rendering anything.
- Render is $0. Photos from the captioned bank (rule 2), type in PIL. Route specs to systems by content: colour topics โ statement/moodboard, rules/capsules โ notebook/lookbook, classics โ journal.
- Review gate. Nothing ships without a human eyeballing slides. Batch into waves (~100); replace-in-place when a fix lands so the queue never holds duplicates.
- Measure by save rate, not views, per visual system (tag each carousel with its system) โ then let the winners take the next wave's volume.
Adapting a new ref (the loop that grows this skill)
- Screenshot the ref; note WHERE text sits relative to the image (type as a physical object โ receipt, Pantone card, tag โ beats type floating over).
- Name the save-trigger: is it a reference (palette), a checklist (rules), a test (flowchart), an identity (cover)?
- Rebuild the skeleton in PIL with your fonts/colours; keep their layout maths, replace their brand voice.
- Ship a 1-slide probe first; only then batch.