Skip to content

Instantly share code, notes, and snippets.

@durandom
Created December 10, 2025 16:03
Show Gist options
  • Select an option

  • Save durandom/b23705459a4446fb7885354370b38503 to your computer and use it in GitHub Desktop.

Select an option

Save durandom/b23705459a4446fb7885354370b38503 to your computer and use it in GitHub Desktop.
Rally Cross Voucher Generation with Gemini Nano Banana Pro - AI Image Generation Process

Rally Cross Voucher Generation with Gemini Nano Banana Pro

A documentation of our process to generate a personalized Rally Cross event voucher using AI image generation.

Goal

Create a printable voucher (DIN A4) for a Rally Cross event as a 16th birthday gift, featuring:

  • Manga/Anime style illustrations of father and son (based on reference photos)
  • Rally Cross action elements
  • Event details: DRX Lauf 2 | 19.04.2025 | Estering, Buxtehude
  • ADAC branding

Tools Used

Gemini CLI

Google's official command-line AI agent.

npm install -g @google/gemini-cli

Nano Banana Extension

Image generation extension for Gemini CLI using Gemini 3 Pro Image Preview model.

gemini extensions install https://github.com/gemini-cli-extensions/nanobanana

Environment Setup

export GEMINI_API_KEY="your_key_here"
export NANOBANANA_MODEL="gemini-3-pro-image-preview"

Input Files

rx/
├── bo.jpeg        # Reference photo of son (Bo)
├── marcel.jpeg    # Reference photo of father (Marcel)
├── map.jpg        # Estering track layout with Joker Lap
├── car.jpg        # Rally Cross car reference
├── prompt.txt     # Initial prompt (v1)
├── prompt_v2.txt  # Improved with face matching
├── prompt_v3.txt  # Added ADAC yellow theme
└── prompt_v4.txt  # Final: white background with yellow accents

Prompt Engineering Process

v1: Initial Natural Language Prompt

Simple German description of what we wanted. Results had wrong aspect ratio and generic faces.

v2: Structured JSON + Face Matching

Adopted the "NanoBanana Protocol" - structured JSON schema separating:

  • Subject (figures, objects)
  • Environment (background, lighting)
  • Technical specs (medium, layout)
  • Color palette

Added explicit instructions for face matching:

"gesicht": "Analysiere bo.jpeg: Kopiere Gesichtsform, Augenform, Augenfarbe, Nase, Mund, Haarfarbe, Frisur"

v3: ADAC Yellow Theme

Added ADAC branding requirements:

  • ADAC-Gelb (#FFCC00) as main color
  • ADAC logo placement
  • "Für Bo zum 16. Geburtstag" dedication text

Problem: Background became entirely yellow, not print-friendly.

v4: Balanced Design (Final)

Corrected the color balance:

  • White background for print compatibility
  • Yellow as accent color only:
    • Frame/border
    • Title banners
    • Decorative elements
  • Added design_hinweise section for clarity

The JSON Schema Strategy

Based on prompt_guidelines.md - treating the image generator as a renderer, not a creative partner:

{
  "meta": { "aspect_ratio": "1:1.414 (DIN A4)", ... },
  "inhalt": { "titel": "...", "event": "...", ... },
  "subject": {
    "figur_1": { "name": "...", "referenz": "...", "gesicht": "...", ... },
    "figur_2": { ... },
    "streckenlayout": { ... },
    "rallycross_auto": { ... }
  },
  "environment": { "hintergrund": "...", ... },
  "technical_specs": { ... },
  "color_palette": { ... }
}

Key Learnings

  1. Structured prompts > natural language for complex compositions
  2. Explicit size relationships needed (e.g., "Bo is taller than Marcel")
  3. Reference images must be explicitly called out with instructions on how to use them
  4. Color instructions need balance - "yellow theme" ≠ "everything yellow"
  5. Print requirements must be explicit (white background, high contrast)
  6. Quality checklist helps verify all requirements are met

Usage

cd rx
export NANOBANANA_MODEL="gemini-3-pro-image-preview"
gemini -e nanobanana

# In the session, use /nanobanana with the prompt content
/nanobanana [paste content from prompt_v4.txt]

Or use the helper script:

./rx/generate_voucher.sh

Output images are saved to ./nanobanana-output/

API Access Check

Use the included script to verify your API key and available models:

./check_gemini_models.sh                           # List all models
./check_gemini_models.sh gemini-3-pro-image-preview  # Test specific model

Resources

#!/bin/bash
# Check Gemini API access and list available models
# Usage:
# ./check_gemini_models.sh - List all available models
# ./check_gemini_models.sh model1 ... - Test access to specific model(s)
# Check for API key in common environment variables
API_KEY="${GEMINI_API_KEY:-${GOOGLE_API_KEY:-${GOOGLE_GEMINI_API_KEY:-}}}"
if [ -z "$API_KEY" ]; then
echo "Error: No API key found."
echo "Please set one of these environment variables:"
echo " - GEMINI_API_KEY"
echo " - GOOGLE_API_KEY"
echo " - GOOGLE_GEMINI_API_KEY"
exit 1
fi
# Function to test a single model
test_model() {
local model="$1"
echo -n "Testing model: $model ... "
local response
response=$(curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=$API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "Say hello"}]}],
"generationConfig": {"maxOutputTokens": 10}
}')
if echo "$response" | grep -q '"error"'; then
echo "NOT AVAILABLE"
echo " Error: $(echo "$response" | jq -r '.error.message // .error.status')"
return 1
else
echo "AVAILABLE ✓"
return 0
fi
}
# Function to list all models
list_models() {
echo "=== Gemini API Model Access Check ==="
echo
echo "Fetching available models..."
echo
local response
response=$(curl -s "https://generativelanguage.googleapis.com/v1beta/models?key=$API_KEY")
# Check for errors
if echo "$response" | grep -q '"error"'; then
echo "Error accessing API:"
echo "$response" | jq -r '.error.message // .error'
exit 1
fi
# List all models
echo "All available models:"
echo "====================="
echo "$response" | jq -r '.models[].name' | sed 's|models/||' | sort
echo
echo "=== Image Generation Models ==="
echo "$response" | jq -r '.models[] | select(.name | test("image")) | .name' | sed 's|models/||' | sort
echo
echo "=== Gemini 3 / Nano Banana Pro Models ==="
echo "$response" | jq -r '.models[] | select(.name | test("gemini-3|nano|banana")) | .name' | sed 's|models/||' | sort
}
# Main logic
if [ $# -eq 0 ]; then
# No arguments - list all models
list_models
else
# Arguments provided - test each model
echo "=== Testing Model Access ==="
echo
success=0
failed=0
for model in "$@"; do
if test_model "$model"; then
((success++))
else
((failed++))
fi
echo
done
echo "=== Summary ==="
echo "Tested: $# model(s)"
echo "Available: $success"
echo "Not available: $failed"
fi
#!/bin/bash
# Generate Rally Cross voucher image using Gemini CLI with Nano Banana extension
# Uses gemini-3-pro-image-preview (Nano Banana Pro) model
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# Set model to Gemini 3 Pro Image Preview (Nano Banana Pro)
export NANOBANANA_MODEL="gemini-3-pro-image-preview"
# Read the prompt from prompt.txt
PROMPT=$(cat prompt.txt)
# Reference images to include
IMAGES="bo.jpeg, marcel.jpeg, map.jpg, car.jpg"
echo "=== Rally Cross Voucher Generator ==="
echo
echo "Model: gemini-3-pro-image-preview (Nano Banana Pro)"
echo "Reference images: $IMAGES"
echo
echo "Prompt:"
echo "-------"
echo "$PROMPT"
echo "-------"
echo
# Create output directory
mkdir -p ../nanobanana-output
# Build a combined prompt that references the images
# The /nanobanana command allows natural language with file references
FULL_PROMPT="/nanobanana Using the reference photos bo.jpeg (the son Bo), marcel.jpeg (the father Marcel), map.jpg (event location), and car.jpg (rally car) - $PROMPT"
echo "Generating image..."
echo
# Run gemini CLI with nanobanana extension
# Using interactive mode since nanobanana commands work in session
gemini -e nanobanana "$FULL_PROMPT"
echo
echo "=== Done ==="
echo "Check ./nanobanana-output/ for the generated image"
Erstelle einen Gutschein basierend auf den Referenzbildern: bo.jpeg (Sohn Bo), marcel.jpeg (Vater Marcel), map.jpg (Streckenlayout mit Joker Lap), car.jpg (Rallycross-Auto).
```json
{
"meta": {
"aspect_ratio": "1:1.414 (DIN A4 Hochformat)",
"zweck": "Druckbarer Gutschein auf weissem Papier",
"version": "v1.0"
},
"inhalt": {
"titel": "GUTSCHEIN",
"untertitel": "DRX - Deutsche Rallycross Meisterschaft",
"event": "Lauf 2 | 19.04.2025 | Estering, Buxtehude",
"veranstalter": "ADAC",
"anlass": "16. Geburtstag"
},
"subject": {
"figur_1": {
"name": "Bo",
"referenz": "bo.jpeg",
"beschreibung": "Jugendlicher, 16 Jahre, etwas groesser als der Vater",
"stil": "Manga/Anime-Comicfigur, dynamisch gezeichnet",
"pose": "Stehend, jubelnd mit erhobener Faust, begeisterter Gesichtsausdruck",
"position": "Rechte Seite des Gutscheins",
"groesse": "Etwas groesser als Figur 2"
},
"figur_2": {
"name": "Marcel",
"referenz": "marcel.jpeg",
"beschreibung": "Erwachsener Mann, Vater",
"stil": "Manga/Anime-Comicfigur, passend zu Figur 1",
"pose": "Stehend, jubelnd, stolzer Vater-Ausdruck",
"position": "Linke Seite des Gutscheins",
"groesse": "Etwas kleiner als Figur 1"
},
"streckenlayout": {
"referenz": "map.jpg",
"beschreibung": "Estering Rennstrecke mit Joker Lap markiert",
"position": "Zentral im Hintergrund oder als dekoratives Element",
"stil": "Schematische Darstellung der Rennstrecke"
},
"rallycross_auto": {
"referenz": "car.jpg",
"beschreibung": "Rallycross-Fahrzeug in Action",
"position": "Zentral zwischen den Figuren",
"stil": "Dynamisch, mit Dreck-Spritzern und Bewegungsunschaerfe"
}
},
"environment": {
"location": "Rallycross-Rennstrecke Estering",
"hintergrund": "Weiss/sehr hell fuer Druck auf weissem Papier geeignet",
"action_elemente": "Dreck-Spritzer, Reifenspuren, Staubwolken als Akzente"
},
"technical_specs": {
"medium": "Manga/Anime-Stil Illustration mit klaren Linien",
"druckoptimiert": "Heller Hintergrund, kontrastreiche Elemente",
"layout": "Gutschein-Format mit Rahmen oder Zierrand"
},
"color_palette": {
"dominant_hues": "Weiss, Hellgrau als Basis",
"akzente": "ADAC-Gelb, Rallycross-typische Erdtoene (Braun, Orange)",
"contrast": "Hoher Kontrast fuer gute Druckbarkeit"
}
}
```

System Instruction: Advanced Image Generation (NanoBanana Protocol)

1. Core Philosophy

You are an expert Image Construction Agent. Your goal is not to "chat" about images, but to architect them.

Standard natural language prompts ("A cat sitting on a wall") allow the image generator too much freedom to hallucinate details, leading to inconsistency. To achieve "Perfect Images" in NanoBanana Pro, you must abandon conversational prose in favor of Structured JSON.

The Rule: Treat the image generator as a renderer, not a creative partner. You must define every variable explicitly to prevent "attribute bleeding" (where descriptions of one object accidentally apply to another).


2. The JSON Schema Strategy

When a user requests an image, you must parse their intent and restructure it into the following JSON format. This strictly separates concerns (Subject vs. Environment vs. Style).

The Master Schema

Generate your output using this JSON structure:

{
  "meta": {
    "aspect_ratio": "16:9 | 1:1 | 9:16",
    "version": "v1.0"
  },
  "subject": {
    "primary_anchor": "The main focal point (e.g., 'An elderly cyborg watchmaker')",
    "pose_and_action": "Specific body language (e.g., 'Hunched over a workbench, squinting through a loupe')",
    "clothing_and_details": "Texture and fabric specifics (e.g., 'Worn leather apron, brass gears integrated into knuckles')"
  },
  "environment": {
    "location": "Physical setting (e.g., 'Cluttered steampunk workshop')",
    "lighting": "The direction and quality of light (e.g., 'God rays entering through a dusty window, volumetric lighting')",
    "atmosphere": "The mood (e.g., 'Hazy, nostalgic, particulate matter in air')"
  },
  "technical_specs": {
    "camera_angle": "Camera position (e.g., 'Low angle, looking up', 'Macro close-up')",
    "lens_and_focus": "Optical properties (e.g., '35mm lens, shallow depth of field, sharp focus on eyes')",
    "medium": "The art style (e.g., 'Photorealistic raw photo', '3D Octane Render', 'Oil Painting impasto')"
  },
  "color_palette": {
    "dominant_hues": "Main colors (e.g., 'Amber, bronze, deep shadow blacks')",
    "contrast": "Tonal range (e.g., 'High contrast, chiaroscuro')"
  }
}
Erstelle einen Gutschein basierend auf den Referenzbildern: bo.jpeg (Sohn Bo), marcel.jpeg (Vater Marcel), map.jpg (Streckenlayout mit Joker Lap), car.jpg (Rallycross-Auto).
WICHTIG: Die Manga-Figuren MUESSEN die exakten Gesichtszuege der Personen auf den Referenzfotos haben. Analysiere bo.jpeg und marcel.jpeg genau und uebertrage die individuellen Merkmale in den Manga-Stil.
```json
{
"meta": {
"aspect_ratio": "1:1.414 (DIN A4 Hochformat)",
"zweck": "Druckbarer Gutschein auf weissem Papier",
"version": "v2.0"
},
"inhalt": {
"titel": "GUTSCHEIN",
"untertitel": "DRX - Deutsche Rallycross Meisterschaft",
"event": "Lauf 2 | 19.04.2025 | Estering, Buxtehude",
"veranstalter": "ADAC",
"anlass": "16. Geburtstag"
},
"subject": {
"figur_1": {
"name": "Bo",
"referenz": "bo.jpeg - EXAKTE GESICHTSZUEGE UEBERNEHMEN",
"gesicht": "Analysiere bo.jpeg: Kopiere Gesichtsform, Augenform, Augenfarbe, Nase, Mund, Haarfarbe, Frisur und alle erkennbaren Merkmale",
"beschreibung": "Jugendlicher, 16 Jahre, etwas groesser als der Vater",
"stil": "Manga/Anime-Comicfigur mit ERKENNBARER Aehnlichkeit zum Referenzfoto",
"pose": "Stehend, jubelnd mit erhobener Faust, begeisterter Gesichtsausdruck",
"position": "Rechte Seite des Gutscheins",
"groesse": "Etwas groesser als Figur 2 (Bo ist groesser als sein Vater)"
},
"figur_2": {
"name": "Marcel",
"referenz": "marcel.jpeg - EXAKTE GESICHTSZUEGE UEBERNEHMEN",
"gesicht": "Analysiere marcel.jpeg: Kopiere Gesichtsform, Augenform, Augenfarbe, Nase, Mund, Haarfarbe, Frisur, Bart (falls vorhanden) und alle erkennbaren Merkmale",
"beschreibung": "Erwachsener Mann, Vater von Bo",
"stil": "Manga/Anime-Comicfigur mit ERKENNBARER Aehnlichkeit zum Referenzfoto, gleicher Zeichenstil wie Figur 1",
"pose": "Stehend, jubelnd, stolzer Vater-Ausdruck",
"position": "Linke Seite des Gutscheins",
"groesse": "Etwas kleiner als Figur 1 (Marcel ist kleiner als sein Sohn Bo)"
},
"streckenlayout": {
"referenz": "map.jpg",
"beschreibung": "Estering Rennstrecke mit deutlich markiertem Joker Lap",
"position": "Zentral im Hintergrund oder als dekoratives Element integriert",
"stil": "Schematische Darstellung der Rennstrecke, Joker Lap farblich hervorgehoben"
},
"rallycross_auto": {
"referenz": "car.jpg",
"beschreibung": "Rallycross-Fahrzeug in voller Action",
"position": "Zentral zwischen den beiden Figuren",
"stil": "Dynamisch, mit Dreck-Spritzern, Staubwolke und Bewegungsunschaerfe"
}
},
"environment": {
"location": "Rallycross-Rennstrecke Estering",
"hintergrund": "Weiss/sehr hell fuer optimalen Druck auf weissem Papier",
"action_elemente": "Dreck-Spritzer, Reifenspuren, Staubwolken als dynamische Akzente"
},
"technical_specs": {
"medium": "Manga/Anime-Stil Illustration mit klaren Linien",
"portraet_genauigkeit": "HOHE PRIORITAET - Figuren muessen als Bo und Marcel erkennbar sein",
"druckoptimiert": "Heller Hintergrund, kontrastreiche Elemente, scharfe Linien",
"layout": "Gutschein-Format mit dekorativem Rahmen"
},
"color_palette": {
"dominant_hues": "Weiss, Hellgrau als Basis",
"akzente": "ADAC-Gelb, Rallycross-typische Erdtoene (Braun, Orange), Racing-Rot",
"contrast": "Hoher Kontrast fuer optimale Druckbarkeit"
}
}
```
QUALITAETSKONTROLLE:
- [ ] Bo sieht aus wie auf bo.jpeg (gleiche Gesichtszuege, Haarfarbe, Frisur)
- [ ] Marcel sieht aus wie auf marcel.jpeg (gleiche Gesichtszuege, Haarfarbe, Frisur)
- [ ] Bo ist groesser als Marcel dargestellt
- [ ] Streckenlayout aus map.jpg ist sichtbar integriert
- [ ] Rallycross-Auto aus car.jpg ist erkennbar
- [ ] Format ist DIN A4 Hochformat
- [ ] Hintergrund ist hell/weiss fuer Druck geeignet
Erstelle einen Gutschein basierend auf den Referenzbildern: bo.jpeg (Sohn Bo), marcel.jpeg (Vater Marcel), map.jpg (Streckenlayout mit Joker Lap), car.jpg (Rallycross-Auto).
WICHTIG: Die Manga-Figuren MUESSEN die exakten Gesichtszuege der Personen auf den Referenzfotos haben. Analysiere bo.jpeg und marcel.jpeg genau und uebertrage die individuellen Merkmale in den Manga-Stil.
```json
{
"meta": {
"aspect_ratio": "1:1.414 (DIN A4 Hochformat)",
"zweck": "Druckbarer Gutschein auf weissem Papier",
"version": "v3.0"
},
"inhalt": {
"titel": "GUTSCHEIN",
"untertitel": "DRX - Deutsche Rallycross Meisterschaft",
"widmung": "Für Bo zum 16. Geburtstag",
"event": "Lauf 2 | 19.04.2025 | Estering, Buxtehude",
"veranstalter": "ADAC",
"logo": "ADAC Logo gut sichtbar platzieren (gelb-schwarzes Logo)"
},
"subject": {
"figur_1": {
"name": "Bo",
"referenz": "bo.jpeg - EXAKTE GESICHTSZUEGE UEBERNEHMEN",
"gesicht": "Analysiere bo.jpeg: Kopiere Gesichtsform, Augenform, Augenfarbe, Nase, Mund, Haarfarbe, Frisur und alle erkennbaren Merkmale",
"beschreibung": "Jugendlicher, 16 Jahre, etwas groesser als der Vater",
"stil": "Manga/Anime-Comicfigur mit ERKENNBARER Aehnlichkeit zum Referenzfoto",
"pose": "Stehend, jubelnd mit erhobener Faust, begeisterter Gesichtsausdruck",
"position": "Rechte Seite des Gutscheins",
"groesse": "Etwas groesser als Figur 2 (Bo ist groesser als sein Vater)"
},
"figur_2": {
"name": "Marcel",
"referenz": "marcel.jpeg - EXAKTE GESICHTSZUEGE UEBERNEHMEN",
"gesicht": "Analysiere marcel.jpeg: Kopiere Gesichtsform, Augenform, Augenfarbe, Nase, Mund, Haarfarbe, Frisur, Bart (falls vorhanden) und alle erkennbaren Merkmale",
"beschreibung": "Erwachsener Mann, Vater von Bo",
"stil": "Manga/Anime-Comicfigur mit ERKENNBARER Aehnlichkeit zum Referenzfoto, gleicher Zeichenstil wie Figur 1",
"pose": "Stehend, jubelnd, stolzer Vater-Ausdruck",
"position": "Linke Seite des Gutscheins",
"groesse": "Etwas kleiner als Figur 1 (Marcel ist kleiner als sein Sohn Bo)"
},
"streckenlayout": {
"referenz": "map.jpg",
"beschreibung": "Estering Rennstrecke mit deutlich markiertem Joker Lap",
"position": "Zentral im Hintergrund oder als dekoratives Element integriert",
"stil": "Schematische Darstellung der Rennstrecke, Joker Lap farblich hervorgehoben"
},
"rallycross_auto": {
"referenz": "car.jpg",
"beschreibung": "Rallycross-Fahrzeug in voller Action",
"position": "Zentral zwischen den beiden Figuren",
"stil": "Dynamisch, mit Dreck-Spritzern, Staubwolke und Bewegungsunschaerfe"
},
"adac_logo": {
"beschreibung": "Offizielles ADAC Logo",
"position": "Oben rechts oder unten im Footer-Bereich",
"groesse": "Gut sichtbar aber nicht dominant"
}
},
"environment": {
"location": "Rallycross-Rennstrecke Estering",
"hintergrund": "ADAC-Gelb als Hauptfarbe, hell genug fuer Druck auf weissem Papier",
"action_elemente": "Dreck-Spritzer, Reifenspuren, Staubwolken als dynamische Akzente"
},
"technical_specs": {
"medium": "Manga/Anime-Stil Illustration mit klaren Linien",
"portraet_genauigkeit": "HOHE PRIORITAET - Figuren muessen als Bo und Marcel erkennbar sein",
"druckoptimiert": "Gelber Hintergrund (ADAC-Gelb), kontrastreiche Elemente, scharfe Linien",
"layout": "Gutschein-Format mit dekorativem Rahmen in Schwarz oder Dunkelgrau"
},
"color_palette": {
"hauptfarbe": "ADAC-Gelb (#FFCC00 / RGB 255,204,0) als dominante Hintergrundfarbe",
"sekundaer": "Schwarz fuer Text, Rahmen und Kontraste",
"akzente": "Weiss fuer Highlights, Orange und Braun fuer Rallycross-Dreck",
"contrast": "Hoher Kontrast Gelb-Schwarz im ADAC-Stil"
},
"text_elemente": {
"haupttitel": {
"text": "GUTSCHEIN",
"stil": "Gross, fett, schwarz auf gelb"
},
"widmung": {
"text": "Für Bo zum 16. Geburtstag",
"stil": "Prominent platziert, gut lesbar, evtl. in Schreibschrift oder besonderer Schriftart"
},
"event_info": {
"text": "DRX Lauf 2 | 19.04.2025 | Estering, Buxtehude",
"stil": "Klar lesbar, unterhalb des Haupttitels"
}
}
}
```
QUALITAETSKONTROLLE:
- [ ] Bo sieht aus wie auf bo.jpeg (gleiche Gesichtszuege, Haarfarbe, Frisur)
- [ ] Marcel sieht aus wie auf marcel.jpeg (gleiche Gesichtszuege, Haarfarbe, Frisur)
- [ ] Bo ist groesser als Marcel dargestellt
- [ ] Streckenlayout aus map.jpg ist sichtbar integriert
- [ ] Rallycross-Auto aus car.jpg ist erkennbar
- [ ] Format ist DIN A4 Hochformat
- [ ] ADAC-Gelb ist die dominante Farbe
- [ ] ADAC Logo ist sichtbar
- [ ] "Für Bo zum 16. Geburtstag" ist gut lesbar
- [ ] Druckbar auf weissem Papier (trotz gelbem Hintergrund)
Erstelle einen Gutschein basierend auf den Referenzbildern: bo.jpeg (Sohn Bo), marcel.jpeg (Vater Marcel), map.jpg (Streckenlayout mit Joker Lap), car.jpg (Rallycross-Auto).
WICHTIG: Die Manga-Figuren MUESSEN die exakten Gesichtszuege der Personen auf den Referenzfotos haben. Analysiere bo.jpeg und marcel.jpeg genau und uebertrage die individuellen Merkmale in den Manga-Stil.
```json
{
"meta": {
"aspect_ratio": "1:1.414 (DIN A4 Hochformat)",
"zweck": "Druckbarer Gutschein auf weissem Papier",
"version": "v4.0"
},
"inhalt": {
"titel": "GUTSCHEIN",
"untertitel": "DRX - Deutsche Rallycross Meisterschaft",
"widmung": "Für Bo zum 16. Geburtstag",
"event": "Lauf 2 | 19.04.2025 | Estering, Buxtehude",
"veranstalter": "ADAC",
"logo": "ADAC Logo gut sichtbar platzieren (gelb-schwarzes Logo)"
},
"subject": {
"figur_1": {
"name": "Bo",
"referenz": "bo.jpeg - EXAKTE GESICHTSZUEGE UEBERNEHMEN",
"gesicht": "Analysiere bo.jpeg: Kopiere Gesichtsform, Augenform, Augenfarbe, Nase, Mund, Haarfarbe, Frisur und alle erkennbaren Merkmale",
"beschreibung": "Jugendlicher, 16 Jahre, etwas groesser als der Vater",
"stil": "Manga/Anime-Comicfigur mit ERKENNBARER Aehnlichkeit zum Referenzfoto",
"pose": "Stehend, jubelnd mit erhobener Faust, begeisterter Gesichtsausdruck",
"position": "Rechte Seite des Gutscheins",
"groesse": "Etwas groesser als Figur 2 (Bo ist groesser als sein Vater)"
},
"figur_2": {
"name": "Marcel",
"referenz": "marcel.jpeg - EXAKTE GESICHTSZUEGE UEBERNEHMEN",
"gesicht": "Analysiere marcel.jpeg: Kopiere Gesichtsform, Augenform, Augenfarbe, Nase, Mund, Haarfarbe, Frisur, Bart (falls vorhanden) und alle erkennbaren Merkmale",
"beschreibung": "Erwachsener Mann, Vater von Bo",
"stil": "Manga/Anime-Comicfigur mit ERKENNBARER Aehnlichkeit zum Referenzfoto, gleicher Zeichenstil wie Figur 1",
"pose": "Stehend, jubelnd, stolzer Vater-Ausdruck",
"position": "Linke Seite des Gutscheins",
"groesse": "Etwas kleiner als Figur 1 (Marcel ist kleiner als sein Sohn Bo)"
},
"streckenlayout": {
"referenz": "map.jpg",
"beschreibung": "Estering Rennstrecke mit deutlich markiertem Joker Lap",
"position": "Zentral im Hintergrund oder als dekoratives Element integriert",
"stil": "Schematische Darstellung der Rennstrecke, Joker Lap farblich hervorgehoben"
},
"rallycross_auto": {
"referenz": "car.jpg",
"beschreibung": "Rallycross-Fahrzeug in voller Action",
"position": "Zentral zwischen den beiden Figuren",
"stil": "Dynamisch, mit Dreck-Spritzern, Staubwolke und Bewegungsunschaerfe"
},
"adac_logo": {
"beschreibung": "Offizielles ADAC Logo",
"position": "Oben rechts oder unten im Footer-Bereich",
"groesse": "Gut sichtbar aber nicht dominant"
}
},
"environment": {
"location": "Rallycross-Rennstrecke Estering",
"hintergrund": "WEISS - sauberer weisser Hintergrund fuer optimalen Druck",
"action_elemente": "Dreck-Spritzer, Reifenspuren, Staubwolken als dynamische Akzente"
},
"technical_specs": {
"medium": "Manga/Anime-Stil Illustration mit klaren Linien",
"portraet_genauigkeit": "HOHE PRIORITAET - Figuren muessen als Bo und Marcel erkennbar sein",
"druckoptimiert": "WEISSER Hintergrund, perfekt fuer Druck auf weissem Papier",
"layout": "Gutschein-Format mit dekorativem Rahmen in ADAC-Gelb"
},
"color_palette": {
"hintergrund": "WEISS (#FFFFFF) - sauber und druckfreundlich",
"akzentfarbe_1": "ADAC-Gelb (#FFCC00) fuer Rahmen, Banner, Titel-Hintergrund, dekorative Elemente",
"akzentfarbe_2": "Schwarz fuer Text und Konturen",
"akzentfarbe_3": "Orange und Braun fuer Rallycross-Dreck und Action-Elemente",
"verwendung_gelb": "Gelber Rahmen um den Gutschein, gelbe Banner/Baender fuer Titel und Widmung, gelbe Akzente bei den Figuren (z.B. Kleidung, Accessoires), ADAC Logo in Gelb-Schwarz",
"contrast": "Hoher Kontrast durch Gelb-Schwarz Elemente auf weissem Grund"
},
"text_elemente": {
"haupttitel": {
"text": "GUTSCHEIN",
"stil": "Gross, fett, schwarz auf gelbem Banner/Streifen"
},
"widmung": {
"text": "Für Bo zum 16. Geburtstag",
"stil": "Prominent platziert, evtl. auf gelbem Untergrund oder mit gelbem Rahmen"
},
"event_info": {
"text": "DRX Lauf 2 | 19.04.2025 | Estering, Buxtehude",
"stil": "Klar lesbar, unterhalb des Haupttitels"
}
},
"design_hinweise": {
"rahmen": "Breiter gelber Rahmen um den gesamten Gutschein",
"banner": "Gelbe Banner/Streifen fuer Titel und wichtige Texte",
"balance": "Weisser Hintergrund mit gezielten gelben Akzenten - NICHT alles gelb"
}
}
```
QUALITAETSKONTROLLE:
- [ ] Bo sieht aus wie auf bo.jpeg (gleiche Gesichtszuege, Haarfarbe, Frisur)
- [ ] Marcel sieht aus wie auf marcel.jpeg (gleiche Gesichtszuege, Haarfarbe, Frisur)
- [ ] Bo ist groesser als Marcel dargestellt
- [ ] Streckenlayout aus map.jpg ist sichtbar integriert
- [ ] Rallycross-Auto aus car.jpg ist erkennbar
- [ ] Format ist DIN A4 Hochformat
- [ ] Hintergrund ist WEISS (nicht gelb!)
- [ ] ADAC-Gelb als Akzentfarbe (Rahmen, Banner, Dekor)
- [ ] ADAC Logo ist sichtbar
- [ ] "Für Bo zum 16. Geburtstag" ist gut lesbar
- [ ] Gute Balance zwischen Weiss und Gelb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment