One blog URL becomes scheduled IG and LinkedIn carousels in under 2 minutes.
A four-stage pipeline that turns a single blog post into platform-ready drafts, on-brand slide renders, and a newsletter draft. No designer required.
The problem
Every new blog post on the agency's site needed a matching social carousel and email newsletter. A designer was spending about an hour per post on slide layout alone. With 4-6 posts a month, that was a recurring 4-6 hours of design time blocking the marketing schedule, and another hour of copywriter time per newsletter.
What I built
Blog parser
Reads any blog URL and emits a structured carousel spec (cover slide, 3-8 content slides, CTA) using Claude. The spec is YAML so a human can edit it before rendering if they want to tweak the framing.
Brand-locked renderer
Composites slides as PNGs using PIL against the agency's kraft-paper brand templates. No image API, no per-render cost, and the brand stays locked because the templates are version-controlled.
Multi-platform publishing
Uploads slides to Publer and creates a single draft post targeting both Instagram and LinkedIn, with platform-specific captions. Nothing publishes without a human approving the draft.
Newsletter draft
Optionally drops the same content into a Resend broadcast draft using a token-substituted HTML template. Same content, three channels, one command.
What it ships
~60x
Time reduction per carousel (1 hour designer time to ~2 minutes script run)
$0
Image API spend (PIL renders locally against existing brand templates)
3
Channels drafted from one input (Instagram, LinkedIn, email newsletter)
Draft-first workflow on every channel. Nothing publishes without human review, which keeps the brand voice intact and gives the team a veto on edge-case posts.
Stack
Claude CodePythonPILPubler APIResend APIAnthropic API
Want a content pipeline like this for your business?
Email JW