feat(prompt-templates): add crayon kid-drawing style-transfer template (#295)

* feat(prompt-templates): add crayon kid-drawing style-transfer template

- illustration-crayon-kid-drawing-rework: an image-to-image prompt that
  reworks any reference image into a hand-drawn crayon illustration with
  childlike whimsy (castles, candy, stars, clouds, rainbows) on clean white
  paper. Tuned for gpt-image-2 edits and works across product shots,
  portraits, and screenshots.
- Ships with a cover preview rendered from the Open Design X profile
  screenshot via the template's own prompt, downscaled to 1536x1024 JPEG.
- Category reuses existing 'Illustration' enum value.

* fix(prompt-templates): address crayon template review feedback (#295)

- aspect: switch from unsupported 3:2 to 4:3 (per @mrcfps). The app contract
  only recognizes 1:1 / 16:9 / 9:16 / 4:3 / 3:4 (MediaAspect in
  packages/contracts and MEDIA_ASPECTS in apps/daemon/src/media-models.ts);
  gpt-image-* silently falls back to 1024x1024 for unknown aspects, which
  would have made this template generate square images instead of landscape.
- Cover preview re-cropped from 1536x1024 to 1365x1024 (4:3) so the
  thumbnail matches the declared aspect. Content preserved (center crop).
- prompt: add 'Preserve the general layout and spatial relationships of the
  original image — transform the style first, embellish second' so small UI
  elements, faces, and logos don't get overwhelmed by castles/candy/stars
  decoration (per @lefarcen).
- tags: add 'rework' and 'transform' to improve discoverability for users
  searching 'rework my photo' / 'transform screenshot' (per @lefarcen).
- summary: clarify that this is an image-to-image edit requiring a reference
  image upload, not a pure text-to-image generation prompt (per @lefarcen).

* fix(i18n): register German content for new templates and their tags

The 'Validate workspace' CI job (apps/web i18n/content.test.ts) enforces
that every template slug, category, and tag that appears in a shipped
JSON template also has a German translation in apps/web/src/i18n/content.ts.

This PR's new template plus two previously merged first-party templates
(#187: game-ui-ancient-china-open-world-mmo-hud and
social-media-post-sensational-girl-dance-storyboard-8-shots) were missing
from the German dictionaries, so the suite was red.

Changes:
- DE_PROMPT_TEMPLATE_CATEGORIES: add 'Game UI' -> 'Spiel-UI'.
- DE_PROMPT_TEMPLATE_TAGS: add 11 tags used by the three templates
  (ancient-china, childlike, crayon, dance, fashion, game-ui, hand-drawn,
  hud, illustration, image-to-image, mmo, open-world, rework, sequence,
  storyboard, style-transfer, transform, wuxia) with German equivalents.
- DE_PROMPT_TEMPLATE_COPY: add German title + summary for
  game-ui-ancient-china-open-world-mmo-hud,
  illustration-crayon-kid-drawing-rework, and
  social-media-post-sensational-girl-dance-storyboard-8-shots.

Local verification: apps/web vitest suite (14 files, 68 tests) passes.

---------

Co-authored-by: Joey <joey@open-design.local>
This commit is contained in:
Joey-nexu 2026-05-02 22:05:19 +08:00 committed by GitHub
parent 37c836432e
commit 569f280a0d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 56 additions and 5 deletions

View file

@ -342,6 +342,7 @@ const DE_PROMPT_TEMPLATE_CATEGORIES: Record<string, string> = {
Infographic: 'Infografik',
'Anime / Manga': 'Anime / Manga',
'App / Web Design': 'App- / Webdesign',
'Game UI': 'Spiel-UI',
Illustration: 'Illustration',
'Profile / Avatar': 'Profil / Avatar',
'Social Media Post': 'Social-Media-Post',
@ -365,10 +366,10 @@ const DE_PROMPT_TEMPLATE_TAGS: Record<string, string> = {
'3d': '3D',
'3d-render': '3D-Render',
action: 'Action',
'ancient-china': 'Altes China',
anime: 'Anime',
'app-showcase': 'App-Showcase',
'audio-reactive': 'Audio-reaktiv',
'ancient-china': 'Ancient China',
archery: 'Archery',
arpg: 'ARPG',
'boss-fight': 'Boss Fight',
@ -377,6 +378,7 @@ const DE_PROMPT_TEMPLATE_TAGS: Record<string, string> = {
captions: 'Untertitel',
cavalry: 'Cavalry',
chart: 'Chart',
childlike: 'Kindlich',
choreography: 'Choreography',
cinematic: 'Filmisch',
'cinematic-romance': 'Filmische Romanze',
@ -384,8 +386,9 @@ const DE_PROMPT_TEMPLATE_TAGS: Record<string, string> = {
combo: 'Combo',
'companion-to-image': 'Companion to Image',
counter: 'Counter',
crayon: 'Wachsmalstift',
cyberpunk: 'Cyberpunk',
dance: 'Dance',
dance: 'Tanz',
'data-viz': 'Data-Viz',
editorial: 'Editorial',
'elden-ring': 'Elden Ring',
@ -393,18 +396,21 @@ const DE_PROMPT_TEMPLATE_TAGS: Record<string, string> = {
escort: 'Escort',
'escort-mission': 'Escort Mission',
fantasy: 'Fantasy',
fashion: 'Fashion',
fashion: 'Mode',
'fighting-game': 'Fighting Game',
food: 'Food',
'game-cinematic': 'Game Cinematic',
'game-ui': 'Game UI',
'game-ui': 'Spiel-UI',
'grid-sheet': 'Grid Sheet',
guanyu: 'Guanyu',
'hand-drawn': 'Handgezeichnet',
hud: 'HUD',
'hud-safe': 'HUD Safe',
hype: 'Hype',
hyperframes: 'HyperFrames',
idol: 'Idol',
illustration: 'Illustration',
'image-to-image': 'Bild-zu-Bild',
infographic: 'Infografik',
japanese: 'Japanese',
karaoke: 'Karaoke',
@ -430,17 +436,20 @@ const DE_PROMPT_TEMPLATE_TAGS: Record<string, string> = {
portrait: 'Porträt',
product: 'Produkt',
'product-promo': 'Produkt-Promo',
rework: 'Überarbeiten',
route: 'Route',
saas: 'SaaS',
sequence: 'Sequence',
sequence: 'Sequenz',
sizzle: 'Sizzle',
social: 'Social',
storyboard: 'Storyboard',
'street-fighter': 'Street Fighter',
'style-transfer': 'Stiltransfer',
tekken: 'Tekken',
'three-kingdoms': 'Three Kingdoms',
tiktok: 'TikTok',
'title-card': 'Title Card',
transform: 'Transformieren',
travel: 'Reise',
tts: 'TTS',
typography: 'Typografie',
@ -879,6 +888,21 @@ const DE_PROMPT_TEMPLATE_COPY: Record<string, Partial<Pick<PromptTemplateSummary
summary:
'Filmischer Prompt für eine High-Speed-Wüsten-Wasteland-Szene mit einer laufenden Industriefabrik auf Beinen und einer Verfolgung per Rebel Bike.',
},
'game-ui-ancient-china-open-world-mmo-hud': {
title: 'Spiel-UI - Altes China, Open-World-MMO-HUD',
summary:
'Erzeugt ein In-Game-HUD-Screenshot-Mockup für ein AAA-Open-World-MMO im alten China im filmischen photorealistischen Stil von Black Myth: Wukong, zentriert auf eine Schwertkämpferin in einer nebligen Bergszene mit vollständigem MMO-HUD (Charakterpanel, Minimap, Skill-Hotbar, Quest-Tracker, Chat).',
},
'illustration-crayon-kid-drawing-rework': {
title: 'Illustration - Wachsmalstift-Kinderzeichnung-Überarbeitung',
summary:
'Ein Stiltransfer-Prompt, der jedes Referenzbild in eine handgezeichnete Wachsmalstift-Illustration verwandelt, die wirkt, als hätte sie ein 10-jähriges Kind gemalt. Ersetzt die Originalfarbpalette durch helle, verspielte Wachsmalstifttöne auf sauberem weißem Papier, mit kindlicher Deko wie Schlössern, Süßigkeiten, Sternen und Regenbögen. Funktioniert als Bild-zu-Bild-Edit in GPT-image-2.',
},
'social-media-post-sensational-girl-dance-storyboard-8-shots': {
title: 'Social-Media-Post - Tanz-Storyboard eines Stylish Girls (8 Shots)',
summary:
'Ein vollständiges 8-Shot-Storyboard-Prompt-Set für die Erzeugung einer kohärenten Bild-für-Bild-Tanzsequenz einer stylischen Figur. Enthält gemeinsame globale Style-Token, einen wiederverwendbaren Negativ-Prompt und acht Einzelshots (Eröffnungspose → Hüftgroove → Body Wave → Beat-Drop-Hüftdreher → seitliche Hüftschwingung → Haarwurf → Power-Stance → Abschlusspose).',
},
};
export const GERMAN_CONTENT_IDS = {

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

View file

@ -0,0 +1,27 @@
{
"id": "illustration-crayon-kid-drawing-rework",
"surface": "image",
"title": "Illustration - Crayon Kid-Drawing Rework",
"summary": "A style-transfer prompt that reworks any reference image (product shot, screenshot, portrait, UI mockup) into a hand-drawn crayon illustration that feels like it was made by a 10-year-old. Replaces the original palette with bright playful crayon colors on clean white paper, and sprinkles childlike whimsy — castles, candy, stars, clouds, rainbows — to amplify the innocent storybook vibe. Works as an image-to-image edit in GPT-image-2 (requires uploading a reference image alongside the prompt); well-suited to website screenshots, brand key art, product photos, and portraits.",
"category": "Illustration",
"tags": [
"illustration",
"crayon",
"childlike",
"style-transfer",
"hand-drawn",
"image-to-image",
"rework",
"transform"
],
"model": "gpt-image-2",
"aspect": "4:3",
"prompt": "Rework the given image into a crayon-style illustration, transforming the entire scene into something that feels hand-drawn by a 10-year-old. Preserve the general layout and spatial relationships of the original image — transform the style first, embellish second, so small UI elements, faces, and logos stay where they are. Keep the forms simple and slightly imperfect, like a child's drawing — wobbly outlines, uneven strokes, visible waxy crayon texture, soft smudges where colors overlap.\n\nAvoid using the original color palette — replace it with bright, playful crayon colors (sunshine yellow, candy pink, sky blue, mint green, lavender, tangerine, grass green) on a clean white paper background with subtle paper grain. Aim for a soft, cute, and innocent aesthetic.\n\nIncorporate fun, childlike details such as fairy-tale castles or towers in the corners, lollipops and candy, big shiny five-point stars, fluffy rounded clouds, a rainbow arc, a cheerful smiling sun, tiny hearts and sparkles scattered across the page to amplify the playful vibe. Keep the main subject of the reference image clearly recognizable — redraw it in crayon rather than replacing it — and render any visible text as wobbly kid handwriting that stays legible.\n\nThe final result should feel charming, colorful, and full of childlike imagination — like a kid pulled out a fresh crayon box and happily redrew the reference on a sheet of white paper.\n\nNegative prompt: no photo-realistic rendering, no sharp vector lines, no 3D shading, no airbrush gradients, no dark or muddy palette, no adult fine-art technique, no watermark, no frame border, no garbled text.",
"previewImageUrl": "https://raw.githubusercontent.com/nexu-io/open-design/main/assets/prompt-templates/image/illustration-crayon-kid-drawing-rework.jpg",
"source": {
"repo": "nexu-io/open-design",
"license": "Apache-2.0",
"author": "open-design contributors",
"url": "https://github.com/nexu-io/open-design"
}
}