# Prompt-Templates — weinor Partnershop v2, Welle 2: Conversion-One-Shots

Erzeugt am 2026-08-19. **Zweistufig**: Foto über Genspark **Nano Banana 2** (Skill-Gateway,
kostenlos, mit Bild-Referenzen), Typografie deterministisch über Chrome headless mit den echten
Brand-Fonts. Kein GSK, kein Veo, kein Bezahl-Modell.

## Warum der Text nicht aus dem Bildmodell kommt

Der Auftrag sah vor, die Headlines als Text-in-Anführungszeichen mitzuprompten. Bei diesen konkreten
Sätzen ist das der schlechtere Weg: „Größenzettel", „MASCOT®-Qualität", „Freischaltung in 24 h" und
das weinor-Logo sind alle vier typische Bruchstellen — ß/ö-Glitches, erfundene Wortmarken, Text auf
Foto ohne garantierten Kontrast. Deshalb liefert das Modell nur das Foto (das kann es besser als
jedes Layout-Tool), und die Typo wird gerendert. Ergebnis: Umlaute buchstabengetreu, Kontrast
rechnerisch belegt, Logo als echtes Asset statt Halluzination, Safe-Zone exakt.

Ändern will man Headlines später ohnehin — in `_assets/oneshots/build.py` ist das eine Textzeile
statt eines neuen Generationslaufs.

## Reproduktion

```bash
W=<arbeitsverzeichnis>   # enthält base/, refs/, gf/

# 1) Basis-Fotos (Prompts unten, je Zeile "<prompt>||<stem>")
node ~/.claude/skills/genspark/genspark-image.mjs \
  --batch "$W/batch-a.txt" --model nano-banana-2 --dir "$W/base" \
  --ref "$W/refs/film-szene-07.jpg" --ref "$W/base/06-prozess-bestellung.jpg"

# 2) Typo-Ebene + Normierung auf 1080x1080 / <300 KB
python3 build.py            # alle vier
python3 build.py oneshot-03 # einzeln
python3 overview.py         # Übersichts-Sheet
python3 contrast.py         # WCAG-Nachweis des Farbsystems
```

## Das Layout-System (gilt für alle vier)

| Zone | Inhalt | Farbe |
|---|---|---|
| Kopfband | Kicker + Serif-Headline, Akzentwort kursiv | Creme `#fbfaf7`, Schrift `#06233c`, Akzent `#d71920` |
| Bühne | Das Foto, randlos | — |
| Fussband | Roter CTA-Button + Microcopy + weinor-Logo | Navy `#06233c`, Button `#d71920` |

Fonts: DM Serif Display (Headline) + Manrope (alles andere) — dieselben wie im Prototyp.
Safe-Zone 72 px (6,7 %), also innerhalb der geforderten inneren 90 %.

Gemessene Kontraste (`contrast.py`, WCAG 2.1):

```
Headline Navy auf Creme      15,32:1     CTA weiss auf Rot          5,19:1
Akzentwort Rot auf Creme      4,97:1     Microcopy hell auf Navy   13,57:1
Trust-Chips auf Navy         14,74:1     Vorher-Label auf Navy     12,51:1
```

Kein einziger Text liegt direkt auf dem Foto — jede Schrift sitzt auf einer deckenden Fläche.
Das ist der Grund, warum hier kein graues Text-auf-Foto-Problem entstehen kann.

## Die drei Basis-Prompts

Alle englisch, weil im Foto **kein** Text stehen soll (deutscher Prompt zieht erfundene Schilder an);
der deutsche Text kommt erst in der Typo-Ebene. Fester Marken- und Technik-Block wie in Welle 1,
inklusive doppelt formuliertem Textverbot.

**A — Pain (`oneshot-base-a-pain`)** · Refs: `film-szene-07.jpg`, `06-prozess-bestellung.jpg`
> Editorial documentary photograph, square 1:1, back office of a small German sunshade and awning
> trade business … an open cardboard shipping carton … several small blank paper notes stuck untidily
> to a cream painted wall … three clearly DIFFERENT mismatched work jackets in three different colours
> and three different cuts — one faded olive, one washed navy, one grey — plainly not a set, completely
> plain fabric with absolutely no badges, no chest patches, no embroidery and no logos on any of them …
> the upper third is a calm empty stretch of cream painted wall, deliberately left as clean negative
> space … Strictly no text … every note and every surface is completely blank.

Der Satz „no badges on any of them" ist hier der wichtige: ohne ihn stickt das Modell das
weinor-Label auf die Vorher-Jacken und zerstört die Aussage.

**B — Auftritt (`oneshot-base-b-auftritt`)** · Refs: `produkt-workfashion-jacke-22503.jpg`, `05-detail-material.jpg`
> Three colleagues … stand relaxed and confident side by side on the paved forecourt in front of their
> own workshop … All three wear exactly the same dark charcoal ribbed softshell-fleece work jacket from
> the first reference image … and each wears the small rectangular chest badge reproduced pixel-faithfully
> from the second reference image on the left chest — identical on all three people, same size, same
> position … a plain unmarked white delivery van far out of focus …

`05-detail-material.jpg` (das Welle-1-Makro) als zweite Referenz ist der Trick: das Label sitzt dort
gestochen scharf, das Modell hat also eine saubere Vorlage statt einer Beschreibung.

**C — Vorher/Lager (`oneshot-base-c-vorher`)** · Ref: `film-szene-07.jpg`
> Dim cluttered storage room … leftover promotional stock that has clearly been sitting too long:
> a stack of dusty flat cardboard boxes, a rolled-up fabric flag banner … slightly faded sun-bleached
> edge … weak cold artificial light with a faint blue-grey cast, low contrast, slightly gloomy …
> no printed graphics on the boxes or the flag …

## Bekannte Grenzen dieses Laufs

- **Brustlabel in Motiv 02** ist formtreu, aber bei 100 % Zoom weich — dieselbe Grenze wie in Welle 1.
  Für Feed und Story ausreichend, für Großformat-Print die Prompts mit `--model nano-banana-pro`
  nachziehen und das Label gegenprüfen.
- **Motiv 03, Nachher-Hälfte**: am linken Rand bleibt ein schmaler unscharfer Rest des Vordergrunds
  aus `02-lifestyle-team.jpg` stehen (`object-position:72%` schiebt ihn fast, aber nicht ganz raus).
  Wer ihn ganz weg will, generiert ein eigenes Nachher-Motiv statt das Welle-1-Bild zu recyceln.
- **MASCOT-Logo** (`logo-partner-mascot.webp`) liegt auf schwarzem Grund und passt weder auf Navy
  noch auf Creme. Deshalb steht „MASCOT®-Qualität" als Text im Trust-Stack statt als Bildmarke.
