summaryrefslogtreecommitdiff
path: root/internal/story/generator.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-06 17:21:52 +0300
committerPaul Buetow <paul@buetow.org>2026-04-06 17:21:52 +0300
commit13d4f703e45dad9d611b7b720b0148e08e1409a3 (patch)
treefa7f19f8c68ac0d43e62b6780d081cad5caf1e61 /internal/story/generator.go
parent00488c7e8d7e93406c3bcf2264d7c7239c3a5516 (diff)
feat: mandatory speech bubbles in story panels, v0.26.0v0.26.0
Two-part fix for missing dialogue bubbles: 1. Panel script prompt: each panel description must include quoted Bulgarian dialogue for the character to speak/think. At least 3 of 4 panels per page must have speech or thought text in the description. 2. Image prompt: added MANDATORY SPEECH BUBBLES block requiring at least 3 of 4 panels to contain a bubble, describing exact white-background/black-outline style for speech and cloud-shape for thought bubbles, all text Bulgarian Cyrillic. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/story/generator.go')
-rw-r--r--internal/story/generator.go15
1 files changed, 9 insertions, 6 deletions
diff --git a/internal/story/generator.go b/internal/story/generator.go
index a272893..5c4c671 100644
--- a/internal/story/generator.go
+++ b/internal/story/generator.go
@@ -359,16 +359,19 @@ func buildPanelScriptPrompt() string {
"one per line, in strict chronological story order.\n" +
"Format each line exactly as: P{page}-{panel}: {description}\n" +
"where page is 1–5 and panel is A (top-left), B (top-right), C (bottom-left), D (bottom-right).\n" +
- "Each description is 1–2 sentences: WHO is in the panel, WHAT they are doing, " +
- "WHERE they are, and their expression or body language. Be vivid and specific.\n" +
+ "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 Bulgarian dialogue or thought text the character says/thinks, written in quotes.\n" +
+ "At least 3 of the 4 panels on every page MUST include Bulgarian dialogue in a speech bubble " +
+ "or thought bubble. The dialogue must come directly from the story and be in Bulgarian Cyrillic.\n" +
"The 20 panels must retell the story from beginning to end — " +
"each page covers one story beat, each panel advances the action.\n" +
"Do NOT repeat the same scene or camera angle on consecutive panels.\n" +
"Example format (replace with actual story content):\n" +
- "P1-A: Maria walks out her front door into morning sunlight, laptop bag on shoulder, looking relieved.\n" +
- "P1-B: She strides down a busy city street past parked cars, headphones in, smiling.\n" +
- "P1-C: Close-up of her hand gripping a large steaming coffee cup with both hands.\n" +
- "P1-D: Maria pauses at a park entrance, gazing at the green trees ahead with anticipation.\n"
+ "P1-A: Maria walks out her front door into morning sunlight, laptop bag on shoulder, saying \"Най-накрая!\" in a speech bubble.\n" +
+ "P1-B: She strides down a busy city street past parked cars, headphones in, thinking \"Толкова хубав ден.\" in a thought bubble.\n" +
+ "P1-C: Close-up of her hand gripping a large steaming coffee cup, the barista handing it over saying \"Заповядайте!\" in a speech bubble.\n" +
+ "P1-D: Maria pauses at a park entrance, gazing at green trees ahead, saying \"Точно това ми трябваше.\" in a speech bubble.\n"
}
// slugify converts a comic title into a safe directory/file name component.