---
name: headline-multiplier
description: Make many static ad variants from one visual. Writes N headline variants, renders each onto a Kenerate-generated (or the user's) image with auto-fit typography, sub-headline and CTA button, picks the calmest area for the text, checks WCAG contrast and adds a scrim when needed, and outputs a contact sheet and report. Use when the user wants headline / copy variations, static ad A/B tests, multiple banner versions or text overlays on an ad image.
compatibility: Needs the Kenerate MCP server for the visual and Python 3.9+ with Pillow (no ffmpeg needed).
metadata:
  author: kenerate
  version: "1.0"
  kenerate-tools: "generate_image upload_media wait_for_generation"
---

# Headline multiplier

Generate the visual once without text, then let `scripts/headlines.py` set every headline crisply and legibly. This
avoids paying for N generations and AI-misspelled words. Rules: [references/KENERATE.md](references/KENERATE.md) (models and voices: [references/MODELS.md](references/MODELS.md), or the free `pick_model` / `pick_voice` tools).

## Ask the user
Product / offer, audience, tone, format (1:1, 4:5, 9:16, 16:9), CTA text, brand colour, and how many headlines (default 6).

## 1. Visual (Kenerate)
`generate_image(prompt="<product / scene>, clean composition, generous empty space in the <top|bottom> third for a headline, no text", aspect_ratio="<format>", model="kenerate/gpt-image-2.5-sunburst", count=2)`.
With a product photo: `reference_image_urls=[product]`, `model="kenerate/nano-banana-2.1"`. Let the user pick; wait with kind `"image"`.

## 2. Headlines
Write N headlines using different angles: benefit, pain point, curiosity, number, urgency, social proof. 2-8 words
each. Show the list and get a yes, then save them one per line to `headlines.txt`.

## 3. Render (local)
```
python <skill-dir>/scripts/headlines.py --image "<visual url>" --headlines headlines.txt \
  --sub "Oat milk. Real coffee. Zero sugar." --cta "Shop now" --brand-color "#FF5A1F" \
  --layout auto --min-contrast 4.5 --name <project> --out-dir kenerate-out/headline-multiplier
```
- `--layout auto|top|center|bottom`, `--aspect 4:5` crops the visual first, `--no-upper` keeps the headline's case,
  `--font brand.ttf` or `--font-family "Inter"` (free font), `--format png`.
- The report has the contrast ratio per variant (checked on the worst tile behind the text), whether a scrim was
  added, and the font size. Show `<project>_sheet.jpg`.

## If something fails
`contrast < 4.5 even with a scrim` means the visual is too busy where the text goes. Try another `--layout`, or
regenerate the visual with more empty space (ask first; that's a new charge).

## Want the AI to draw the words?
For stylised lettering, use `generate_image(model="kenerate/gpt-image-2.5-sunburst" or "kenerate/ideogram-v4")` with the
exact words in quotes, one call per headline (each one is charged).
