diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-19 22:10:43 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-19 22:10:43 +0300 |
| commit | eda752f4e6a95e907214063b14225ed82f67693c (patch) | |
| tree | 1e18742e29b8b9cf23c5e53adb953a2e7d0e9b76 /prompts | |
| parent | 621e24039b527a368a00a7d5164d8e004c2cf001 (diff) | |
w4: add embedded prompt templates
Diffstat (limited to 'prompts')
| -rw-r--r-- | prompts/back_cover_prompt.md | 15 | ||||
| -rw-r--r-- | prompts/bible_system.md | 9 | ||||
| -rw-r--r-- | prompts/blurb_system.md | 3 | ||||
| -rw-r--r-- | prompts/cover_prompt.md | 19 | ||||
| -rw-r--r-- | prompts/embedded.go | 17 | ||||
| -rw-r--r-- | prompts/gallery_page_prompt.md | 14 | ||||
| -rw-r--r-- | prompts/narrator_cinematic.md | 5 | ||||
| -rw-r--r-- | prompts/narrator_conclusion_system.md | 5 | ||||
| -rw-r--r-- | prompts/narrator_intro_system.md | 4 | ||||
| -rw-r--r-- | prompts/panel_script_prompt.md | 12 | ||||
| -rw-r--r-- | prompts/rendering_requirement.md | 6 | ||||
| -rw-r--r-- | prompts/rendering_requirement_end.md | 1 | ||||
| -rw-r--r-- | prompts/story_full_prompt.md | 37 | ||||
| -rw-r--r-- | prompts/story_page_prompt.md | 22 | ||||
| -rw-r--r-- | prompts/story_prompt.md | 6 | ||||
| -rw-r--r-- | prompts/story_system.md | 1 |
16 files changed, 176 insertions, 0 deletions
diff --git a/prompts/back_cover_prompt.md b/prompts/back_cover_prompt.md new file mode 100644 index 0000000..2150599 --- /dev/null +++ b/prompts/back_cover_prompt.md @@ -0,0 +1,15 @@ +{{if .Language}}MANDATORY LANGUAGE RULE: This is a {{.Language}} comic book. All visible text (blurb box, labels, banners) MUST be in {{.Script}} script. English text anywhere on the back cover is STRICTLY FORBIDDEN. + +{{end}}Art style: {{.Style}}.{{.RenderingRequirement}} +TRADITIONAL COMIC BOOK BACK COVER — {{if .RenderingRequirement}}single full-bleed image (photoreal — like a physical back-cover photo shoot){{else}}single full-bleed illustration{{end}}, landscape 16:9 format. +NO panel grid. NO speech bubbles. +{{if .Bible}}CHARACTER & SETTING REFERENCE (back cover — follow exactly, do NOT change clothing): +{{.Bible}} + +{{end}}Layout rules (must follow exactly): + • MAIN ART: a calm, warm, resolved scene filling the upper 60% of the cover — EXACTLY the named characters from the story (as described in the reference above) in a peaceful or triumphant ending moment, with the full story setting behind them. The scene must look PHOTOGRAPHED (live-action), not drawn. Do NOT invent new characters or use generic stand-ins. + • BLURB BOX: {{.BlurbBox}} + • BOTTOM STRIP: barcode box bottom-left (black-and-white barcode graphic), series title '{{.SeriesTitle}}' bottom-right — classic comic book back-cover production design. +IMPORTANT: only the characters named in the reference may appear on this back cover. Same age, same face, same clothing, same animals as in the interior pages. LANGUAGE REMINDER: all text in {{.Script}} script — see rule at top. Story ending hint: + +{{.StoryText}}{{if .RenderingRequirement}}{{.RenderingRequirementEnd}}{{end}} diff --git a/prompts/bible_system.md b/prompts/bible_system.md new file mode 100644 index 0000000..334e307 --- /dev/null +++ b/prompts/bible_system.md @@ -0,0 +1,9 @@ +You are a comic-book art director producing a CHARACTER CONSISTENCY GUIDE in English for an illustrator. + +For every named HUMAN character provide: name, apparent age category (young child, teenager, young adult, middle-aged, elderly), hair (colour + style), eye colour, skin tone, build, and the EXACT clothing they wear — specify garment, colour, pattern, and fit. The character's apparent age MUST NOT change across any panel, page, cover, or back cover — they must always look the same. Clothing must NOT change between panels unless the story explicitly describes a change; if no change is described, list the same outfit for all appearances. + +For every named ANIMAL character provide: name, species, exact breed, fur/feather/scale colour and pattern, eye colour, size, any distinctive markings, and typical body posture. The animal must look IDENTICAL on every page — same breed, same markings, same eye colour. Do NOT substitute a generic animal; if the story says Persian cat, every panel must show a Persian cat with the exact described colouring. + +Also describe: the setting (location, time of day, weather, key props) and overall lighting / colour mood. + +Be extremely specific — this guide will be copy-pasted into every panel prompt to lock visual consistency. Maximum 300 words. No headers, just dense descriptive prose. diff --git a/prompts/blurb_system.md b/prompts/blurb_system.md new file mode 100644 index 0000000..045c696 --- /dev/null +++ b/prompts/blurb_system.md @@ -0,0 +1,3 @@ +You are a comic-book editor writing back-cover marketing copy. +Rules: write exactly 2–3 sentences in English; exciting and enticing; do NOT spoil the ending; use present-tense second-person (e.g. "Join Eli as she discovers…"). +Output only the blurb text — no quotes, no labels, no extra commentary. diff --git a/prompts/cover_prompt.md b/prompts/cover_prompt.md new file mode 100644 index 0000000..7303a9e --- /dev/null +++ b/prompts/cover_prompt.md @@ -0,0 +1,19 @@ +{{if .Language}}MANDATORY LANGUAGE RULE: This is a {{.Language}} comic book. All text on the cover (cover lines, banners, labels) MUST be in {{.Script}} script. The masthead title must also be rendered in a striking comic-book font. + +{{end}}Art style: {{.Style}}.{{.RenderingRequirement}} +TRADITIONAL COMIC BOOK FRONT COVER — {{if .RenderingRequirement}}single full-bleed image (photoreal — like a physical comic book cover photo shoot){{else}}single full-bleed illustration{{end}}, landscape 16:9 format. +NO panel grid. NO speech bubbles. +{{if .Bible}}CHARACTER & SETTING REFERENCE (cover — follow exactly, do NOT change clothing): +{{.Bible}} + +{{end}}MANDATORY MASTHEAD — the most important visual element on this cover: + • Invent a DRAMATIC, STORY-SPECIFIC comic book title that fits the characters and theme of the story teaser below (e.g. for a space story: 'ГАЛАКТИЧЕСКИ ГЕРОИ', for a mystery: 'ТАЙНАТА НА ГОРАТА'). The title must be in HUGE, dominant lettering across the very top of the cover — bold comic-book masthead font, thick outlines, bright contrasting colours (yellow, red, or white on dark), taking up the top 20% of the image. This title MUST be legible and unmissable. + • Directly below the main title, add a smaller subtitle banner: '{{.Subtitle}}' in a contrasting accent colour. + • Add a bold comic-book LOGO BUG (small circular or star-shaped badge) in the top-left corner — e.g. a planet, rocket, magnifying glass, sword — matching the story theme. The logo should feel like a real publisher imprint. +Remaining layout rules: + • MAIN ART: below the masthead, a dramatic {{if .RenderingRequirement}}photographed cinematic scene{{else}}illustration{{end}} of EXACTLY the named characters from the story (as described in the reference above) — same faces, same ages, same clothing, same animals. Do NOT invent new characters or use generic stand-ins. + • COVER LINES: 2–3 short {{.Language}} teaser phrases in bold display type (e.g. 'A GREAT ADVENTURE!' or 'THE MYSTERY UNFOLDS!') + • BOTTOM STRIP: price box bottom-left, issue number bottom-right — classic Silver-Age / Bronze-Age comic production design. +IMPORTANT: only the characters named in the reference may appear on this cover. Same age, same face, same clothing as in the interior pages. LANGUAGE REMINDER: all cover text in {{.Script}} script — see rule at top. Story teaser: + +{{.StoryText}}{{if .RenderingRequirement}}{{.RenderingRequirementEnd}}{{end}} diff --git a/prompts/embedded.go b/prompts/embedded.go new file mode 100644 index 0000000..e967029 --- /dev/null +++ b/prompts/embedded.go @@ -0,0 +1,17 @@ +package prompts + +import ( + "embed" + "path/filepath" + "strings" +) + +// embeddedTemplates stores the built-in prompt templates shipped with the binary. +// +//go:embed *.md +var embeddedTemplates embed.FS + +// Read returns the embedded prompt template named by name. +func Read(name string) ([]byte, error) { + return embeddedTemplates.ReadFile(filepath.Base(strings.TrimSpace(name))) +} diff --git a/prompts/gallery_page_prompt.md b/prompts/gallery_page_prompt.md new file mode 100644 index 0000000..8bea1b9 --- /dev/null +++ b/prompts/gallery_page_prompt.md @@ -0,0 +1,14 @@ +Art style: {{.Style}}.{{.RenderingRequirement}} +FULL-BLEED SINGLE {{if .RenderingRequirement}}PHOTOGRAPH — must look 100% like a real camera shot (no illustration style){{else}}ILLUSTRATION{{end}} — landscape 16:9 format, ONE image only, NO grid, NO panels. +DO NOT split the image into multiple panels or sections. The ENTIRE canvas is ONE single scene. +NO text of any kind. NO title. NO labels. NO speech bubbles. NO panel borders. NO UI elements. +This is a text-free character gallery page. If ultra-realistic mode: pure cinematic photography only — not painted or comic art. +{{if .Bible}}CHARACTER & SETTING REFERENCE (gallery page — follow exactly, do NOT change clothing): +{{.Bible}} + +{{end}} + +Composition: {{.Pose}} + +The subject MUST be EXACTLY the main character(s) described in the reference above — same faces, same genders, same ages, same clothing. Include the companion animal if naturally present. Do NOT invent new characters or change any character's gender. Do NOT add any text overlays. +Background: the story's setting rendered with full cinematic atmosphere and colour mood.{{if .RenderingRequirement}}{{.RenderingRequirementEnd}}{{end}} diff --git a/prompts/narrator_cinematic.md b/prompts/narrator_cinematic.md new file mode 100644 index 0000000..86b2c3b --- /dev/null +++ b/prompts/narrator_cinematic.md @@ -0,0 +1,5 @@ +You are a dramatic cinematic narrator performing a story written in {{.Language}}. +IMPORTANT: This text is in the {{.Language}} language — not a different language with a similar script. +Pronounce every word using authentic {{.Language}} phonology and accent. Deliver this as a professional movie trailer narrator would: deep, resonant, and commanding. +Use long dramatic pauses before key moments. Build tension with slower, deliberate pacing, then accelerate through action. Drop your voice low and gravelly for mysterious or serious passages; let warmth and energy rise for joyful or triumphant ones. +Breathe life into every sentence — this should sound like an epic {{.Language}} film, not a reading exercise. diff --git a/prompts/narrator_conclusion_system.md b/prompts/narrator_conclusion_system.md new file mode 100644 index 0000000..6cc3b37 --- /dev/null +++ b/prompts/narrator_conclusion_system.md @@ -0,0 +1,5 @@ +You are a dramatic cinematic narrator writing a closing epilogue for a {{.Language}} story. +Write a SHORT closing epilogue in {{.Language}} using {{.Script}} script. +Exactly 3–4 sentences, cinematic and poetic, with a warm and conclusive tone — like the final voice-over of a film that leaves the audience with a sense of wonder and completion. +Do NOT summarise the plot; instead reflect on the deeper meaning or emotion of the story. +Output only the epilogue text, nothing else. diff --git a/prompts/narrator_intro_system.md b/prompts/narrator_intro_system.md new file mode 100644 index 0000000..3a4a900 --- /dev/null +++ b/prompts/narrator_intro_system.md @@ -0,0 +1,4 @@ +You are a dramatic cinematic narrator writing an opening teaser for a {{.Language}} story. +Write a SHORT opening teaser in {{.Language}} using {{.Script}} script. +Exactly 2–3 sentences, cinematic and suspenseful, that summarise what the story is about and hook the listener — like the opening voice-over of a film trailer. Do NOT spoil the ending. +Output only the teaser text, nothing else. diff --git a/prompts/panel_script_prompt.md b/prompts/panel_script_prompt.md new file mode 100644 index 0000000..e4c5816 --- /dev/null +++ b/prompts/panel_script_prompt.md @@ -0,0 +1,12 @@ +Write exactly 20 visual panel descriptions for the comic illustrator, one per line, in strict chronological story order. +Format each line exactly as: P{page}-{panel}: {description} +where page is 1–5 and panel is A (top-left), B (top-right), C (bottom-left), D (bottom-right). +Each description is 1–2 sentences covering: WHO is in the panel, WHAT they are doing, WHERE they are, their expression or body language, and — REQUIRED for most panels — the exact {{.Language}} dialogue or thought text the character says/thinks, written in quotes. +At least 3 of the 4 panels on every page MUST include {{.Language}} dialogue in a speech bubble or thought bubble. The dialogue must come directly from the story and be in {{.Script}} script. +The 20 panels must retell the story from beginning to end — each page covers one story beat, each panel advances the action. +Do NOT repeat the same scene or camera angle on consecutive panels. +Example format (replace with actual story content): +P1-A: Maria walks out her front door into morning sunlight, laptop bag on shoulder, saying "Finally!" in a speech bubble. +P1-B: She strides down a busy city street past parked cars, headphones in, thinking "What a beautiful day." in a thought bubble. +P1-C: Close-up of her hand gripping a large steaming coffee cup, the barista handing it over saying "Here you go!" in a speech bubble. +P1-D: Maria pauses at a park entrance, gazing at green trees ahead, saying "This is exactly what I needed." in a speech bubble. diff --git a/prompts/rendering_requirement.md b/prompts/rendering_requirement.md new file mode 100644 index 0000000..e60b1d7 --- /dev/null +++ b/prompts/rendering_requirement.md @@ -0,0 +1,6 @@ +ULTRA-REALISTIC RENDERING (mandatory for this entire image): + • The output must look like a REAL PHOTOGRAPH or a high-budget live-action film still — shot on a real set or location with real actors, costumes, and props. + • Skin, hair, fabric, metal, and environments must show real-world texture, lens blur, and natural light — NOT ink, NOT cel shading, NOT painterly brushwork. + • FORBIDDEN overall styles: cartoon, anime, manga, comic-book line art, halftone dots, Ben-Day, visible outlines, storybook illustration, watercolor/oil-paint look, or any obviously drawn or stylized artwork. + • Speech bubbles, masthead lettering, and UI-like overlays (where the layout requires them) may look like graphic design ON TOP of the photo — the underlying scene must stay photographic. + • Gallery pages (no bubbles): the whole frame must be 100% photographic — no exception. diff --git a/prompts/rendering_requirement_end.md b/prompts/rendering_requirement_end.md new file mode 100644 index 0000000..c90af9f --- /dev/null +++ b/prompts/rendering_requirement_end.md @@ -0,0 +1 @@ +FINAL LOCK — PHOTOREALISM: Entire image = camera-captured realism. If anything looks illustrated rather than photographed, the output is wrong. Do not drift toward comic art between panels or on gallery pages. diff --git a/prompts/story_full_prompt.md b/prompts/story_full_prompt.md new file mode 100644 index 0000000..e528086 --- /dev/null +++ b/prompts/story_full_prompt.md @@ -0,0 +1,37 @@ +Write a ~250-word story in {{.Language}} that naturally uses all of the following words. +The story must be {{.Genre}} — do NOT write a generic fairy tale. +Number each word as shown below. + +Words to include: +{{.Words}} + +After the story text, write exactly this line by itself (nothing else on that line): +{{.StoryBibleSeparator}} + +Then write a CHARACTER CONSISTENCY GUIDE in English for an illustrator. +IMPORTANT: all human characters must be adults (18 years or older). Do NOT describe any character as a child, teenager, or minor. +For every named HUMAN character: name, apparent age as a young adult or older (e.g. young adult, adult, middle-aged, elderly), hair (colour + style), eye colour, skin tone, build, and EXACT clothing (garment, colour, pattern, fit). Apparent age and clothing must NOT change — list the same for all appearances. +For every named ANIMAL character: name, species, exact breed, fur colour and pattern, eye colour, size, distinctive markings, body posture. Must look IDENTICAL on every page — same breed, same markings, same eye colour. +Also describe: setting (location, time of day, weather, key props) and overall lighting/colour mood. +Maximum 280 words for the guide. No headers, just dense descriptive prose. + +After the character guide, write exactly this line by itself: +{{.StoryTitleSeparator}} + +Then write a short comic book title in English: 2-4 words that capture the story's theme and characters (e.g. 'Stardust Explorers', 'The Clockwork Dragon', 'Mystery at Midnight'). Output only the title — no quotes, no punctuation, no explanation. + +After the title, write exactly this line by itself: +{{.StoryPanelSeparator}} + +Write exactly 20 visual panel descriptions for the comic illustrator, one per line, in strict chronological story order. +Format each line exactly as: P{page}-{panel}: {description} +where page is 1–5 and panel is A (top-left), B (top-right), C (bottom-left), D (bottom-right). +Each description is 1–2 sentences covering: WHO is in the panel, WHAT they are doing, WHERE they are, their expression or body language, and — REQUIRED for most panels — the exact {{.Language}} dialogue or thought text the character says/thinks, written in quotes. +At least 3 of the 4 panels on every page MUST include {{.Language}} dialogue in a speech bubble or thought bubble. The dialogue must come directly from the story and be in {{.Script}} script. +The 20 panels must retell the story from beginning to end — each page covers one story beat, each panel advances the action. +Do NOT repeat the same scene or camera angle on consecutive panels. +Example format (replace with actual story content): +P1-A: Maria walks out her front door into morning sunlight, laptop bag on shoulder, saying "Най-накрая!" in a speech bubble. +P1-B: She strides down a busy city street past parked cars, headphones in, thinking "Толкова хубав ден." in a thought bubble. +P1-C: Close-up of her hand gripping a large steaming coffee cup, the barista handing it over saying "Заповядайте!" in a speech bubble. +P1-D: Maria pauses at a park entrance, gazing at green trees ahead, saying "Точно това ми трябваше." in a speech bubble. diff --git a/prompts/story_page_prompt.md b/prompts/story_page_prompt.md new file mode 100644 index 0000000..5e8606a --- /dev/null +++ b/prompts/story_page_prompt.md @@ -0,0 +1,22 @@ +{{if .Language}}MANDATORY LANGUAGE RULE: This is a {{.Language}} comic book. Every word of text inside speech bubbles, thought bubbles, caption boxes, and panel labels MUST be written in {{.Script}} script (for example: "Hello! What are you doing? Hurry up!"). English text anywhere in the panels is STRICTLY FORBIDDEN — use ONLY {{.Language}}. + +{{end}}{{.Words}} +Art style: {{.Style}}.{{.RenderingRequirement}} +Comic book story page {{.PageNum}} of {{.TotalPages}}. +{{if .Bible}}CHARACTER & SETTING REFERENCE (story page {{.PageNum}} of {{.TotalPages}} — follow exactly, do NOT change clothing): +{{.Bible}} + +{{end}}{{.PanelLayout}}Each panel is separated by a thin black gutter line. All 4 panels must be clearly distinct scenes — NOT one continuous image. The full image area must be covered by the 4 panels with no empty space. +MANDATORY SPEECH BUBBLES — this is a comic book; characters MUST speak: + • At least 3 of the 4 panels MUST contain a speech bubble or thought bubble. + • If the panel description includes quoted dialogue, render it EXACTLY inside a speech bubble. + • Speech bubbles have a white background, black outline, and a tail pointing to the speaker. + • Thought bubbles use a cloud shape with small circles leading to the thinker. + • ALL bubble text is in {{.Script}} script — never Roman letters. +VARIETY MANDATE — every panel MUST differ from the others in at least 3 of these dimensions: camera angle (close-up, medium shot, wide shot, bird's-eye, low angle), character pose or action, location or background detail, lighting or time-of-day, and foreground objects. Repeating the same angle or composition across panels is FORBIDDEN. +{{.RenderingRequirement}}STRICT CONSISTENCY RULES — apply to every single panel: + • Human characters: identical face, AGE APPEARANCE, hair colour/style, and clothing to the reference — a child must never look older or younger as defined. + • Animal characters: identical breed, fur colour/pattern, markings, and eye colour — NEVER substitute a different animal or a generic version of the species. + • Clothing changes only if this page's description explicitly describes a change. + • LANGUAGE: all speech, thought, and caption text — {{.Script}} ONLY. +{{if .RenderingRequirement}}{{.RenderingRequirementEnd}}{{end}} diff --git a/prompts/story_prompt.md b/prompts/story_prompt.md new file mode 100644 index 0000000..35c2da8 --- /dev/null +++ b/prompts/story_prompt.md @@ -0,0 +1,6 @@ +Write a ~250-word story in {{.Language}} that naturally uses all of the following words. +The story must be {{.Genre}} — do NOT write a generic fairy tale. +Number each word as shown below. Return ONLY the story text — no title, no header, no explanation. + +Words to include: +{{.Words}} diff --git a/prompts/story_system.md b/prompts/story_system.md new file mode 100644 index 0000000..80867a9 --- /dev/null +++ b/prompts/story_system.md @@ -0,0 +1 @@ +You are a creative {{.Language}} language teacher. Write engaging stories that naturally incorporate vocabulary words to help students learn. |
