Every social post I write used to start the same way: stare at a blank caption box, burn five minutes, write something mid. Multiply that by every post, every platform, and it's a real tax on anyone who publishes consistently.

I tried the obvious fix — an LLM in the loop. It worked, but every caption cost me tokens, latency, and a bill that scaled with volume. For something as structured as a social caption (hook, body, CTA, hashtags), that felt wrong. So I built a small API that generates captions deterministically — template-and-variant engine, no LLM anywhere near it — and then I wired it into n8n so the whole thing runs hands-off.

The n8n template is free and MIT-licensed. Here's what it does and how to use it.

What the workflow does

Four functional nodes:

  1. Form trigger — you fill in topic, audience, tone (warm / bold / professional / playful), platform, and how many captions you want (1–10).
  2. HTTP Request — calls POST /v1/caption-pack on the Caption-Pack API with your API key.
  3. Code node — formats the returned pack into readable text and surfaces the credit balance.
  4. Form ending — shows your captions on a completion page. Copy, post, done.

Each run costs exactly 1 credit, no matter how many captions you request. Failed calls never cost credits.

Try it in five minutes

  1. Get a free key — 25 calls, no card: open https://caption-pack-api.onrender.com/v1/free-trial in your browser. The key is shown once, so save it.
  2. Import the template into n8n: grab caption-pack-n8n-template.json from the repo below, then Workflows → ⋯ → Import from File.
  3. Create a Header Auth credential: Name Authorization, Value Bearer plus your key. Select it in the Call Caption-Pack API node.
  4. Hit Test workflow, fill the form, submit. Captions land on the completion page.

Check your balance anytime with GET /v1/balance and the same header.

Make it yours

This is where it gets fun. Swap the form trigger for:

  • A Schedule trigger + Google Sheets — a daily caption pipeline that appends ideas to a sheet while you sleep.
  • A Webhook trigger — call it from your own app or AI agent with {topic, audience, tone, platform, count}.

I built it for my own posting workflow first; the template is just the packaged version.

Why no LLM?

Two reasons: cost and determinism. A caption pack is structured output — I know exactly what shape I want back. A template engine gives me that in under 100ms with zero per-call AI bill, and the output never surprises me. If you're generating captions at volume (agencies, schedulers, agents posting daily), the math gets obvious fast.

Links

Free 25 credits (no card) → $10 for 500. One Stripe click. No subscription. If the template saves you time, that's the whole pitch.

Happy to answer questions in the comments — especially if you wire it into something I haven't thought of.