Batch Image Generation

Mass-produce on-brand images from one reusable layout — one Compositor template, N outputs.

The Compositor node (compv3) can render one image — or it can render an entire batch of on-brand images from a single reusable layout. One template, N outputs: same logo, fonts, and structure on every image, with the background photo and copy swapped per output. This is how you build ad factories, carousel generators, and any "make me 10 of these" pipeline.

The mental model

A Compositor's saved layers are the template: a background image, a scrim, a headline, a subline, a logo — whatever you design in the editor. Batch mode adds a table of data rows on top:

  • Each row becomes one output image.
  • A row's keys match layer names: a headline key replaces the Headline layer's text on that image; a background key (an image URL) replaces the Background layer's image.
  • Empty or missing keys keep the template value. Layers you never reference (the logo, the brand bar) render identically on every image — they're the implicit "global" layers of your layout.

So a 3-row table over a 6-layer template yields 3 finished images that share everything except the cells you filled in.

Feeding the rows

There are two ways to provide rows, and they have a strict precedence:

1. The Data port (wired — overrides everything)

Wire any node that emits a JSON array of objects into the Compositor's Data (Batch) port. Each object is one row:

[
  {
    "background": "https://…/meal-1.jpg",
    "headline": "KNOW YOUR MACROS",
    "subline": "SCAN IT. START FREE."
  },
  {
    "background": "https://…/meal-2.jpg",
    "headline": "EVERY MEAL, TRACKED",
    "subline": "TRY 7 DAYS FREE"
  }
]

While a Data edge is wired, these rows are the batch — the editor's Batch tab shows them read-only.

2. The Batch tab (manual authoring)

Open the Compositor editor and switch to the Batch tab to author rows by hand in a spreadsheet — one column per text/image layer, one row per output. Rows persist on the node and are used only when no Data edge is wired.

The AI factory pattern

The reason batch mode exists: pair it with an LLM and an image generator to mass-produce finished creatives in one run.

LLM ("write 5 ad concepts as JSON")
  → JSON Extract (array of image prompts) → Loop → Image Gen (5 photos)
  → Build Batch Data  ← (records JSON from the LLM)
  → Compositor (Data port) → 5 finished, on-brand ads

The Build Batch Data utility zips the LLM's records (headline, subline, etc.) with the generated image URLs into the row array the Compositor expects — and it re-zips automatically whenever you regenerate an image upstream, so the batch stays current without re-running anything else.

Output

A batch Compositor emits an array of images (image[], plus count), which downstream nodes — an Output preview, a publishing node — consume like any multi-image result. Rendering is free: the Compositor is a layout engine, not an AI model, so re-rendering a batch after a template tweak or a new upstream image costs no credits.

Live preview

With a Data edge wired, the editor canvas previews the first row of your live data — what you see is what row 1 will render. The Batch tab shows every row with a per-row preview thumbnail.

Limits

  • Up to 50 rows per batch render.
  • The Batch tab shows live preview thumbnails for the first 24 rows (all rows still generate).

Automating it

The Wireflow Claude skill can build this entire pattern from a prompt — template, data wiring, and all — so "make me 10 product ads from these photos" becomes a single instruction. See the skill's compositor reference for the exact JSON shapes.

© 2026 Wireflow. All rights reserved.

Batch Image Generation | Wireflow Docs