Brand Styling
Jedes Bild, das Nano Banana verlässt, läuft durch den Corporate Style
Guide. Dieser Style Guide ist ein längeres Prosa-Dokument
(packages/server/data/style-guide.md), das analyze-style.ts aus einem
kuratierten Set an Referenzbildern extrahiert. Er beschreibt die visuelle
Sprache der Firma: Palette, Motive, Illustrations-Register,
Kompositionsregeln und was wir vermeiden.
Der Style Guide geht nie wörtlich an das Diffusion-Modell. Stattdessen formt er den Prompt an einer von zwei Stellen.
Zwei Wege zu einem styled Prompt
1. Architect-Pfad (Concepts)
Wenn ein User (Web-UI oder MCP-Tool propose_concepts) mit einer groben
Idee startet, nutzt der Architect-Flow den Style Guide, um 3–5
Concept Proposals zu produzieren. Jeder Proposal hat:
- einen kurzen Titel
- eine Beschreibung
- einen refined Prompt, schon in der Brand-Voice umgeschrieben
- thematische Keywords
Wenn der User einen davon wählt und generate_image mit der passenden
concept_id aufruft, fließt der refined Prompt direkt in die
Image-Generation — kein weiteres Engineering nötig.
2. Prompt-Engineer-Pfad (One-Shot)
Wenn ein Client (MCP generate_image mit rohem prompt, ohne Concept)
den Architect-Flow überspringt, läuft die Pipeline zuerst durch die
Prompt-Engineer-Stage. Dieser Stage:
- Lädt den Style Guide.
- Ruft Gemini mit
prompts/prompt-engineer.promptauf (Style Guide + roher User-Prompt als Input). - Liefert einen einzelnen
refinedPrompt, der dann ans Diffusion-Modell geht.
Genau das rettet einen unstrukturierten Prompt wie "Hero-Image für den Gemini-Enterprise-Launch" davor, generischen Stockfoto-Output zu produzieren. Der refined Prompt sähe an derselben Stelle eher so aus: "isometrische Illustration eines transluzenten Daten-Prismas … in der Corporate Palette (#0066D4, #FFB300, #1A1A1A) mit weichem Richtungslicht von oben links, keine Text-Overlays" — und genau das bekommt das Modell zu sehen.
Wann der Engineer-Stage läuft
| Caller-Pfad | Engineer läuft? | Warum |
|---|---|---|
| Web-UI (Architect → Concept wählen → generieren) | Nein | Architect hat schon einen refined Prompt |
MCP propose_concepts → generate_image mit concept_id | Nein | Gleicher Grund |
MCP generate_image mit rohem prompt | Ja | Kein Upstream-Refinement, Style würde wegfallen |
| Web-UI direkt generieren (ohne Architect) | Nein* | Die Web-UI hat keinen No-Architect-Flow |
* Wenn ein zukünftiger Web-Flow den Architect überspringen würde, sollte
er beim startGeneration-Aufruf zusätzlich includePromptEngineer: true
setzen.
Implementation Pointer
packages/pipeline-core/src/start-generation.ts exposed
StartGenerationInput.includePromptEngineer?: boolean (Default false).
Der mcp-server übergibt includePromptEngineer: !args.concept_id.
Der serverseitige Handler unter POST /tasks/prompt-engineer liest den
input.prompt aus der Pipeline, lässt den Genkit-prompt-engineer.prompt
mit dem Style Guide laufen, markiert den Stage als completed mit
{ refinedPrompt, keywords } und enqueued danach generate-image mit
dem refined Prompt im Payload.