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):

  1. Motiv — was soll drauf sein? (Topo-Map, Myzel-Netz, Blattadern, Blueprint, Werkstatt-Szene, Portrait, etc.)
  2. Use-Case — aus dieser Liste:
    • hero → Full-Bleed Landing-Page-Hintergrund, 16:9, Text-Overlay-Fläche einplanen
    • broll → Remotion-B-Roll für VLOGs, 16:9, Motion-tauglich
    • thumbnail → YouTube-Thumbnail, 16:9, hoher Kontrast, gross-Symbol-Lesbarkeit
    • og → Social-Share-Image, 1200×630, Text-Overlay mittig
    • illustration → Asset für Pitch-Deck / Blog / Website-Card, flexibel
  3. Anzahl Varianten — default 4 für Hero/Illustration, 1 für OG/Thumbnail
  4. Motiv-Typ-Hinweis falls nicht aus Motiv offensichtlich: Foto-Real, Illustration, Blueprint/Technisch, Vektor-flach, Text-im-Bild
  5. 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 engraving
  • USGS topographic survey map / vintage cartographic illustration
  • Monocle magazine editorial illustration / Swiss graphic design poster
  • architectural draftsman line drawing / patent application diagram
  • risograph print, two-color / Bauhaus minimal poster
  • Penguin 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_ratiokein 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:

  1. MCP-Tools (mcp__replicate__*) in der Session verfügbar? → nutze sie.
  2. 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:

  • herowebsite/public/hero-tries/{motiv-slug}-{NN}.jpg
  • brollremotion/public/ai-broll/{vlog-slug}/{motiv-slug}-{NN}.jpg
  • thumbnailremotion/public/thumbnails/{video-slug}.jpg
  • ogwebsite/public/og/{page-slug}.jpg
  • illustrationassets/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:

  1. Alle generierten Bilder via Read (inline anzeigen)
  2. Pro Bild einen Ein-Satz-Befund (was sitzt, was nicht)
  3. Empfehlung welches Bild du nehmen würdest + Begründung
  4. 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-22Skill erstellt. Basis: Research-Run 2026-04-22-research-image-models + Brand-Lock aus intern/firma/brand.md.
2026-05-08Vault-Schema 5.17 Frontmatter ergaenzt, Pfade auf neue Vault-Struktur.