image-gen
Generiert Bilder über Replicate nach einem festen Regelwerk: richtiges Modell für das Motiv wählen, Brand-Lock durchsetzen, AI-Slop aktiv unterdrücken, Output reproduzierbar ablegen.
Warum dieser Skill existiert: Replicate hat ~20 relevante Bildmodelle mit unterschiedlichen Stärken. Ohne Disziplin wird jedes Mal willkürlich Flux genommen, das bei Illustration/Blueprint-Motiven schlecht ist. Und jeder ad-hoc Prompt driftet in den typischen Dreamy-Midjourney-Look (Glow, Bokeh, Bloom). Dieser Skill macht beide Entscheidungen automatisch richtig.
Wann triggern
- „Generier mir ein Hero-Bild für …”
- „Ich brauch ein B-Roll-Bild von …”
- „Mach 4 Varianten von …”
- „Thumbnail für VLOG 03”
- „Replicate-Bild mit Topo-Look”
- Briefings die Motiv + Use-Case enthalten
- Verwandte Kandidaten: OG-Images für Blogposts, Pitch-Deck-Illustrationen, Website-Cards
Wenn unklar ob Bild wirklich gemeint ist: einmal kurz zurückfragen („Meinst du ein AI-generiertes Bild oder eine echte Illustration / ein Foto?”). Nie raten.
Phase 1 — Briefing verstehen
Hol vom User (nicht raten, nur fragen was wirklich fehlt):
- Motiv — was soll drauf sein? (Topo-Map, Myzel-Netz, Blattadern, Blueprint, Werkstatt-Szene, Portrait, etc.)
- Use-Case — aus dieser Liste:
hero→ Full-Bleed Landing-Page-Hintergrund, 16:9, Text-Overlay-Fläche einplanenbroll→ Remotion-B-Roll für VLOGs, 16:9, Motion-tauglichthumbnail→ YouTube-Thumbnail, 16:9, hoher Kontrast, gross-Symbol-Lesbarkeitog→ Social-Share-Image, 1200×630, Text-Overlay mittigillustration→ Asset für Pitch-Deck / Blog / Website-Card, flexibel
- Anzahl Varianten — default 4 für Hero/Illustration, 1 für OG/Thumbnail
- Motiv-Typ-Hinweis falls nicht aus Motiv offensichtlich: Foto-Real, Illustration, Blueprint/Technisch, Vektor-flach, Text-im-Bild
- Brand-Lock-Override — Default ist immer
#F5F4ED+#2D4A3E(siehe brand). Nur wenn User explizit sagt „brauch ich nicht” oder „anderes Projekt” abweichen.
Phase 2 — Modell-Entscheidung
Entscheidungsbaum — folge strikt, nicht selbst wählen wenn Pfad klar ist:
Motiv ist Linien-Illustration (Topo, Blueprint, Diagramm, Vektor-Look)?
→ recraft-ai/recraft-v4 (nur prompt + aspect_ratio, KEIN style-Feld)
Warum: V4 ist intrinsisch flach-illustrativ wenn der Prompt es klar sagt.
Motiv ist Gravur / Botanische Zeichnung / Linien-Blatt?
→ recraft-ai/recraft-v4 (Style-Anker im Prompt: "Haeckel-style engraving")
ODER recraft-ai/recraft-v3 (hat style: "digital_illustration/engraving_color")
Motiv ist Makro-Foto / realistische Textur (Myzel, Papier, Stoff)?
→ black-forest-labs/flux-1.1-pro-ultra (raw: true)
Warum: Ultra Raw-Mode reduziert den typischen AI-Glow, Makro-Textur kommt realer rüber.
Motiv hat lesbaren Text IM Bild?
→ ideogram-ai/ideogram-v3-quality (typo-best-in-class)
Variation eines bereits generierten Bildes?
→ black-forest-labs/flux-kontext-pro (input_image = URL des Vorgänger-Bildes)
Warum: Hält Composition + Style konstant, variiert nur was im Prompt erwähnt ist.
Multi-Reference (mehrere Style-Anker)?
→ black-forest-labs/flux-2-pro (JSON-Prompts, bis 8 reference_images)
Fallbacks wenn Erst-Wahl flop: siehe models.md für vollständige Tabelle mit Preisen und Stärken.
Dokumentiere in der Antwort zum User welches Modell du warum wählst — ein Satz reicht. Das macht die Entscheidung kontrollierbar.
Phase 3 — Prompt bauen
Prompt wird in drei Blöcken gebaut, nie frei gesponnen. Das verhindert Drift:
Block A — Motiv-Kern (1-2 Sätze). Was ist zu sehen. Nüchtern, deklarativ. Keine Adjektive wie „stunning”, „beautiful”, „magical”.
Block B — Style-Anker (Referenz + Disziplin). Ein konkreter Print-/Design-Anker statt schwammiger Adjektive. Gute Anker:
1920s botanical reference plate/Haeckel-style engravingUSGS topographic survey map/vintage cartographic illustrationMonocle magazine editorial illustration/Swiss graphic design posterarchitectural draftsman line drawing/patent application diagramrisograph print, two-color/Bauhaus minimal posterPenguin Classics cover, 1970s/field guide plate
Dann: flat editorial illustration, technical drawing precision, sharp uniform line work, matte finish, no gloss.
Block C — Brand-Lock + Komposition. Wörtlich einbauen (alles in einem Block):
Strict two-color palette only: background solid cream #F5F4ED,
details in forest green #2D4A3E. No other colors present.
No gradients, no glow, no bloom, no bokeh, no soft focus,
no dramatic lighting, no atmospheric haze.
Composition: subject occupies right 60% of frame,
left 40% is empty cream space reserved for text overlay.
Bei Flux 2 JSON: color_palette: ["#F5F4ED", "#2D4A3E"] explizit setzen + color_match: "exact".
Recraft V4 Reality-Check (verifiziert 2026-04-22): V4 auf Replicate hat nur prompt, size, aspect_ratio — kein style-Feld, kein colors-Feld. Style-Parameter werden stillschweigend ignoriert. Farb-Zwang muss IM PROMPT stehen mit Negativ-Formulierung: "lines rendered in dark forest green hex #2D4A3E (rgb 45,74,62) — NOT black, NOT grey, NOT dark blue". Ohne Negativ-Teil driftet V4 regelmässig in Schwarz oder Grau. Wenn style-Enum wirklich nötig: recraft-v3 nutzen (hat style: any, digital_illustration/engraving_color, realistic_image/hdr, etc.) — aber V3 ist stilistisch deutlich kitschiger (Pine-Trees, Fill-Strokes) und nicht für Clean Editorial geeignet.
Bei Ideogram V3: wenn möglich style_reference_image mit einem bereits geglückten Bild senden — Ideogram kopiert Paletten aus Referenzen zuverlässiger als aus Prompts.
AI-Slop-Trigger die NIE in den Prompt dürfen:
stunning, beautiful, magical, dreamy, ethereal, enchanting, cinematic, bokeh, depth of field, shallow focus, glowing, luminescent, radiant, vibrant, glossy, masterpiece, 8K, ultra-detailed, hyperrealistic, gradient, ombre, atmospheric, moody, dramatic lighting, golden hour
Wenn User diese Begriffe selbst nutzt: übernimm sie nicht in den Prompt, übersetze in konkrete Qualifier. Beispiel User-Briefing „dreamy macro shot” → Prompt „scientific macro photograph, flat even lighting, sharp focus throughout, no bokeh, no soft focus”.
Vollständige Rezept-Bibliothek in prompt-recipes.md.
Phase 4 — API-Call
Route bestimmen — in genau dieser Reihenfolge:
- MCP-Tools (
mcp__replicate__*) in der Session verfügbar? → nutze sie. - Nicht verfügbar? → nutze das Fallback-Skript generate.sh das per curl gegen api.replicate.com geht. Token lädt es aus
~/source/mcps/mcp-replicate/.env.local.
Regel: Nie MCP vortäuschen wenn keins da ist — direkt in den Fallback gehen, beim User erwähnen („MCP nicht geladen, nehm curl”). Kein Crashen.
Async vs sync:
- Recraft V4, Flux 1.1 Pro, Ideogram V3: ~10-30s → sync mit
Prefer: wait(60s Timeout) ist OK - Flux 1.1 Pro Ultra, Kontext Max: 20-60s → async + Polling sicherer
- Mehrere parallele Calls: immer async + parallel polling
Output-Pfad:
hero→website/public/hero-tries/{motiv-slug}-{NN}.jpgbroll→remotion/public/ai-broll/{vlog-slug}/{motiv-slug}-{NN}.jpgthumbnail→remotion/public/thumbnails/{video-slug}.jpgog→website/public/og/{page-slug}.jpgillustration→assets/illustrations/{topic-slug}-{NN}.jpg
Wenn Ziel-Ordner nicht existiert: anlegen. Keine Unterordner raten.
Phase 5 — Metadaten-Paarung (pflicht)
Jedes generierte Bild bekommt eine gleichnamige .meta.json daneben:
{
"generated_at": "2026-04-22T14:23:00+02:00",
"model": "recraft-ai/recraft-v4",
"use_case": "hero",
"motiv": "topographic contour map",
"prompt": "<voller finaler Prompt-Text>",
"model_params": {"aspect_ratio": "16:9"},
"prediction_id": "5kv6f5ck...",
"cost_usd": 0.04,
"brand_lock": ["#F5F4ED", "#2D4A3E"],
"notes": "Zweiter Versuch, erster zu dicht gewesen — left-space-Qualifier verstärkt."
}Warum pflicht: Wenn Marvin in 3 Monaten sieht „das Topo-Bild war gut, mach mir noch eins im selben Stil” — dann reicht der Meta-Read, kein Rätsel-Raten. Ohne Paarung ist jedes Bild ein Unikat das nicht reproduziert werden kann. Das ist AI-Asset-Disziplin.
Bei Iterationen: neue -NN.jpg Nummer, neue Meta-Datei, alte bleibt. Kein Überschreiben von erfolgreichen Generierungen.
Phase 6 — Ergebnis präsentieren
Zeig dem User:
- Alle generierten Bilder via
Read(inline anzeigen) - Pro Bild einen Ein-Satz-Befund (was sitzt, was nicht)
- Empfehlung welches Bild du nehmen würdest + Begründung
- Vorschlag für nächsten Schritt (Einbauen / Iterieren / Variante mit Kontext-Pro)
Bei Iterations-Wünschen („Mycelium war nah, aber Moos zu grün”): nicht neuen Base-Call starten, sondern flux-kontext-pro mit dem Vorgänger-Bild als input_image und Delta-Prompt („same composition and palette, moss patches less saturated, closer to forest green 2D4A3E”). Spart Iterations-Budget und hält Konsistenz.
Anti-Patterns
- Modell willkürlich wählen. Wenn der Entscheidungsbaum aus Phase 2 nicht greift weil Motiv hybrid ist: kurz erklären welche zwei Modelle in Frage kommen und fragen, nicht selbst raten.
- Brand-Lock verwässern. „Ein Touch von Warmgrau dazu” ist der Anfang vom Ende. Wenn User selbst andere Farben will: dokumentieren als Override im Meta-JSON, Brand-Lock bleibt im Default.
- AI-Slop-Trigger durchrutschen lassen. Wenn das Briefing „cinematic macro shot” sagt — korrigieren, nicht übernehmen. Lieber einmal nachfragen als ein Midjourney-Cliché generieren.
- Meta-Datei vergessen. Ohne Paarung ist das Bild wertlos für Re-Iteration. Immer beide schreiben, nie nur das Bild.
- 5 Varianten wenn 2 reichen. Default 4 für Hero weil Marvin explizit vergleichen will, sonst 1-2. Nicht blind 4x rendern um „zur Auswahl zu stellen” wenn klar ist was gewollt ist.
- Sync wo async pflicht ist. Mehrere parallele Generierungen nie sync — sonst serialisiert curl und dauert 4x so lang.
Referenz-Dateien
- models.md — vollständige Modell-Tabelle, Preise, Stärken/Schwächen
- prompt-recipes.md — Prompt-Block-Bibliothek, Style-Anker-Liste, Negativ-Listen
- generate.sh — curl-Fallback wenn MCP nicht geladen
- brand — Brand-Lock Source of Truth
- replicate — MCP-Setup, Tools, Quirks
- Image-Models-Wissen + Research-Bericht: alter Pfad
~/source/agent-agentur/runs/2026-04-22-research-image-models/(noch nicht migriert)
Stand-History
| Datum | Änderung |
|---|---|
| 2026-04-22 | Skill erstellt. Basis: Research-Run 2026-04-22-research-image-models + Brand-Lock aus intern/firma/brand.md. |
| 2026-05-08 | Vault-Schema 5.17 Frontmatter ergaenzt, Pfade auf neue Vault-Struktur. |