Jose Wenzel  /  Case study

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

  1. 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.

  2. 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.

  3. 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.

  4. 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