Auslöser
FEUERT bei einer allgemeinen Standbild-Poster-Anfrage: „Erstelle ein Poster für “, „Drop-Poster“, „Poster-as-Landing-Page“, „Flyer“, „Key Art“, „Hype-Grafik“, „Albumcover-ähnliches Standbild“, „Merch-Drop-Ankündigungsbild“. Jedes Motiv, jede Ästhetik – die Skill ist motiv- und stilunabhängig.
FEUERT NICHT bei:
- Der Benutzer zeigt auf ein bestimmtes Poster, das reproduziert werden soll (
@template:<slug>, „Remixe dieses hier“, nennt einen Slug) → das ist der Remix-Pfad. Siehedocs/skills-vs-templates.md. - Der Benutzer möchte ein bewegtes Video (das Wortzeichen animiert, der Held spricht) → das Videoformat / die Vorlage zuordnen, die passende Video-Craft-Overlay-Skill laden (
ugc-*) und das Editor-Playbook verwenden, nicht diese Skill. - Der Benutzer hat
@guideline:<slug>für ein Register eingefügt, in dem dieses Poster steht (fotorealistische Menschen, Anti-AI-Slop) →ralphy guideline show <slug>ausführen und dessen Regeln in den Heldenfoto-Slot einarbeiten.
Was diese Skill ist
Eine generalisierte Layout-Overlay, kein fertiges Poster. Sie nennt keine Marke, keinen Helden und keine Palette – sie sagt dem Art Director, WIE diese Posterklasse aufgebaut wird, damit ein starkes Poster für das entsteht, was der Benutzer bewirbt. Sie läuft über ralphy generate image; sie umgeht nicht das Referenz-Pflicht-Gate oder das Qualitäts-Gate.
Harte Invarianten
- Alle Generierungen laufen über
ralphy generate image(keine rohe API). LiesMODELS.md, bevor du eine Modell-ID nennst – der unten stehende Stack ist ein Standardwert, keine feste Kodierung. - Das Referenz-Pflicht-Gate feuert weiterhin für eine benannte reale Entität im Helden- oder Produkt-Slot (eine reale Person, ein erkennbares Markenprodukt, ein IP). Eine fiktive Marke + ein originales Glyphen + ein generisches Produkt läuft ohne Referenz durch. Mache das Marken-Glyphen im Prompt explizit ORIGINAL („KEINE existierende Marke“), damit das Modell nicht zu einer markenrechtlich geschützten Marke abdriftet.
- Das Qualitäts-Gate lehnt ab, nicht nur warnend – zwei fehlgeschlagene
scoreImagehintereinander → Stoppen und Optionen melden. - Echtmarken-Vorabprüfung: Website-Recherche vor jedem Prompt. Wenn das Poster auf eine echte Marke abzielt (eigenes Startup des Benutzers, die Website eines Kunden, eine beliebige angegebene URL), starte einen Playwright-Sub-Agenten, um Home +
/docs+/pricing+/features+/exampleszu durchsuchen, BEVOR die Marken-DNA oder der Prompt entworfen wird. Liesartifacts/refs/research.md(die Zusammenfassung des Sub-Agenten), nicht nur einen WebFetch der Startseite. Jeder{{palette}}-Hex-Wert muss aufartifacts/refs/tokens.jsonzurückgehen; jedes benannte API-Symbol in Textkörper- oder Code-Kreativ-Slots muss auf „Dokumentierte API-Oberflächen“ inresearch.mdverweisen. Volle Disziplin + Sub-Agent-Prompt-Vorlage:.agents/skills/researcher/references/site-grounding.md. Das Überspringen kostetesotaocr-fb-001$1,20 + 5/32 halluzinierte SDK-Kreativprojekte.
Die Nische, in einem Absatz
Ein Poster-as-Landing steht oder fällt mit einem massiven lesbaren Wortzeichen plus einer einzelnen Figur, die Blickkontakt (oder fast Blickkontakt) herstellt, zusammengehalten durch DIY-Sticker-Collage-Energie. Das Auge sollte zuerst auf das Wort fallen, dann auf das Gesicht, dann zwischen 2-3 Sticker-Akzenten umherwandern und dann den Text lesen. Gestochen scharfe Typografie ist das A und O – ein verschmiertes Wortzeichen tötet es sofort, weshalb die Modellauswahl typografisch und nicht konsistenzorientiert ist.
Die feste Architektur (nicht umstrukturieren – nur die Slots füllen)
Von oben nach unten behält jedes Poster in dieser Nische diesen Stapel:
| Band | Feste Rolle | Zu füllende Slots |
|---|---|---|
| 1. Obere Leiste | kleine versal gesetzte Einleitungszeile | {{tagline}}, Akzentfarbe |
| 2. Wortzeichen | MASSIVES, klobiges, serifenbetontes, 3D-abgeschrägtes Schatten, Chrom-Highlight pro Buchstabe, leichter spielerischer Neigungswinkel + unvollkommene Enden | {{exclamation}} (kurzes, kraftvolles Wort: BOOM / DANG / YIKES / WOW / OOPS) |
| 3. Heldenfoto (~60% Höhe) | filmisches Brustporträt, Blick nach oben, leger-cool, originales Blob-Glyphen auf der Brust, ein Produkt auf Mundhöhe gehalten, weiches Randlicht, Filmkorn | {{hero}}, {{product}}, {{blob_glyph}} |
| 4. Sticker-Collage | 3 Vinyl-Sticker (dünner weißer Rand + weicher Schlagschatten + Klebeband-Ecke), in spielerischen Winkeln verstreut | Stern mit Produkt-Makro · Stern mit Blob-Gesicht · kleiner Stern mit pixeligem „NEUER DROP“-Label |
| 5. Textblock | kondensierte versale Überschrift + 4 Zeilen kursiver Serifen-Fließtext + gefüllte CTA-Pille | {{headline}}, {{body_copy}}, {{cta}} |
| 6. Fußzeile | sehr dünne, vollbreite versale Zeile | {{brand}} · EST. JJJJ · <Prozess-Tagline> · WWW.<domain> |
Abschluss-Schicht (immer aktiv): subtiles Filmkorn + leichte Vignette + schwache CRT-Wärme + Vintage-Siebdruck-Gefühl.
Slots (die einzigen Dinge, die sich zwischen Postern ändern)
{{brand}}+{{tagline}}+{{domain}}– das fiktive (oder benutzereigene) Label.{{exclamation}}– das Wortzeichen-Wort. Ein kurzer, ausrufbarer Token.{{hero}}– Person + Kleidung + Ausdruck. Alter/Geschlecht/Styling frei variieren.{{product}}– das Requisit, das auf Mundhöhe gehalten wird (Lutscher, Eis am Stiel, Getränkedose, Mikrofon, …). Halte es generisch/unmarkiert, es sei denn, der Benutzer besitzt die Marke.{{palette}}– vollflächiger Hintergrundverlauf (2 Hex) + Akzentfarbe (Wortzeichen/Überschrift) + Abschattungsfarbe + cremige Körperfarbe + Strich-Holzkohle + Produktfarbe. Immer explizite Hex-Werte angeben.{{blob_glyph}}– ein ORIGINALES, handgekritzeltes, freundliches Wesen (Smiley-Blob, Zyklopenwolke, schiefer Stern). Darin in Kleinbuchstaben das Markenwort geschrieben. Angeben: „KEINE existierende Marke.“{{aesthetic}}– das Register (Y2K-Skate-Surf-Streetwear ist der validierte Standard; Vaporwave, Grunge-Zine, Clean-DTC, Arcade-90s funktionieren alle auf demselben Gerüst).
Modell-Stack (bei jedem Durchlauf gegen MODELS.md prüfen)
- Standard –
openai/gpt-5.4-image-2. Premium-Typografie / Label-Genauigkeit: Das abgeschrägte Wortzeichen, die dünne Fußzeile und die 4 Zeilen Fließtext sind alle gestochen scharf lesbar. Das ist der ganze Grund, warum es den konsistenzorientierten Standard für Poster schlägt. Maximal 1 gleichzeitig – Serien-Batches (--concurrency 1), niemals parallele Poster-Generierungen mit diesem Modell ausführen. - Fallback –
google/gemini-3-pro-image-preview. ~½ der Latenz und günstiger, toleriert ≥4 gleichzeitige, aber verschmiert kleine eingebettete Typografie (Flipper-Postmortem; bei loud-kids-poster-001 erneut bestätigt – der 4-zeilige Fließtext wurde weich). Nur für schnelle Farb-/Kompositionserkundung verwenden, dann die ausgewählte Variante auf gpt-image finalisieren.
Seitenverhältnis – gelöst, --size verwenden
gpt-5.4-image-2 gab historisch unabhängig von --size 1024² zurück. Seit der loud-kids-poster-001-Sitzung leitet ralphy generate image image_config.aspect_ratio (abgeleitet von --size) an OpenRouter weiter, und gpt-image beachtet es: --size 1080x1920 → ein echtes 9:16-Porträt (720×1280 nativer Bucket). Übergib --size 1080x1920 für ein vertikales Landing-Poster, --size 1080x1080 für einen quadratischen Social-Media-Beitrag. Die Ausgabe landet im nächstgelegenen nativen Bucket des Modells, nicht pixelgenau – nachträglich polstern/skalieren, falls ein exakter Rahmen benötigt wird.
Fehlermodi
- Parallele gpt-image-Generierungen →
403 \"Key limit exceeded\". Serialisieren (die 1-Gleichzeitig-Begrenzung). Jede Generierung dauert zudem ~2,5-4 Min. - Gemini verschmiert den Fließtext und die Fußzeile. Kein typografielastiges Poster auf Gemini finalisieren.
- Glyphe driftet zu einer echten Marke (Smiley-Marken usw.), wenn nicht „original, KEINE existierende Marke“ gesagt wird – diesen Satz immer einfügen.
- Zu viele Sticker → das Auge hat keinen Ruhepunkt. Auf 3 begrenzen, an den Rändern des Helden halten.
- Wortzeichen + Überschrift haben dieselbe Farbe wie ein unruhiger Hintergrund → Lesbarkeit stirbt. Der Wortzeichen-Akzent muss stark mit dem Verlauf kontrastieren.
Beispiel (validiert am 27.05.2026)
.ralphy/workspaces/<ws>/projects/loud-kids-poster-001/ enthält drei Paletten-/Helden-/Produktvarianten, die auf diesem exakten Gerüst aufbauen (BOOM/königsblau+Lutscher, DANG/koralle-pflaume+Eis am Stiel, YIKES/limette-wald+Limonade) plus ein 9:16-A/B (gpt-image vs. gemini). Die drei Prompt-Dateien (prompt-v1-boom.txt …) sind die kanonische, ausgefüllte Slot-Referenz – lies eine davon, bevor du einen neuen Poster-Prompt entwirfst.
CLI-Kochbuch
# Standard-Poster, vertikal 9:16, gestochen scharfe Typografie
ralphy generate image --project <id> --slot poster-01 \
--model openai/gpt-5.4-image-2 --size 1080x1920 --prompt "<ausgefülltes Gerüst>"
# Schnelle Paletten-/Kompositionserkundung (den Gewinner danach auf gpt-image finalisieren)
ralphy generate image --project <id> --slot poster-explore --variants 3 \
--model google/gemini-3-pro-image-preview --size 1080x1920 --prompt "<...>"
# Quadratischer Social-Media-Ausschnitt desselben Posters
ralphy generate image --project <id> --slot poster-01-sq \
--model openai/gpt-5.4-image-2 --size 1080x1080 --prompt "<ausgefülltes Gerüst>"
Lange Prompts: Schreibe das ausgefüllte Gerüst in eine .txt-Datei im Projektverzeichnis und übergib --prompt "$(cat datei.txt)" – Apostrophe im Fließtext brechen inline-einfache Anführungszeichen in Shell-Strings.