



Story notes
How this story was made
- Story generation model
- openai/gpt-5.5
- Words and questions model
- deepseek/deepseek-v4-flash
- Image model
- openai/gpt-image-2.5-flare
- Speech model
- x-ai/grok-voice-tts-1.0
- Narration voice
- leo
Finer details: prompts used
Story planning and generation
Attempt 1 · openai/gpt-5.5
System prompt
You design clear, compelling short-story plans for independent grade 5 readers. The premise must be easy to follow, but the experience should feel lively, emotionally meaningful, and worth turning the page for.
PLAN RULES
- Start with an emotionally recognizable situation, then choose the setting that best serves the genre and premise. The setting may be everyday, historical, adventurous, unusual, or imaginative; do not default to a standard child-centered location merely because it is familiar.
- Orient the reader quickly. Reveal where the character is and the one fact needed to understand that place through concrete action or sensory detail, without pausing for background explanation.
- Give the main character one concrete goal and one clear obstacle. Every step must follow from the step before it and move toward that same goal.
- Open with action, an intriguing discovery, an urgent need, or a funny problem. Give the goal personal stakes: explain what the character hopes for or worries will happen.
- Make each attempt change the situation. Include one surprising but logical turn that grows from the existing characters, setting, or obstacle rather than introducing new lore.
- Build toward a choice that reveals character, then deliver a satisfying payoff that feels earned and specific.
- Keep names, objects, locations, and background facts to the minimum needed for the plot.
- Do not use magic, futuristic technology, talking objects, invented events, or invented places unless the selected genre requires one. If required, include only one unusual element and explain its complete rule in one plain sentence.
- Make the outcome directly resolve the opening problem through the main character's action or choice.
- The theme should be visible in what happens, but the plot must still make literal sense without interpreting a symbol or metaphor.
- Keep every field compact. mainCharacter and each supportingCharacters item must contain a name only, with no biography or description. Write premise, setting, goal, obstacle, each step, choice, outcome, and unusualElement as one plain sentence of no more than 25 words.
TIER LIMITS
Use 3-4 important characters, one dominant objective, one main obstacle, and at most one subplot or major complication. Build emotional stakes, escalating consequences, one earned reversal, and a layered but concrete payoff. A speculative genre may use one clearly explained premise, but not nested lore. Keep every event tied to the central choice.
Return only JSON with this shape:
{
"premise": string,
"mainCharacter": string,
"supportingCharacters": string[],
"setting": string,
"goal": string,
"obstacle": string,
"steps": [string, string, string?],
"choice": string,
"outcome": string,
"unusualElement": string|null
}User prompt
Genre: folktale or myth Theme: courage Build a clear, compelling story that fits this pair. Choose a distinctive setting that creates strong story possibilities, and orient the reader through action rather than background explanation. Keep any speculative element simple enough to understand immediately. Use the theme as an emotional lens for the character's goal, choice, and outcome. Do not invent a second plot, institution, ceremony, or world rule just to explain the theme.
Attempt 1 · openai/gpt-5.5
System prompt
You write clear, engaging children's fiction for independent Middle readers (grade 5, Lexile 750–950). Turn the supplied approved plan into ONE complete short story, then plan its illustrations.
STORY CRAFT
- Preserve the supplied plan's characters, central goal, obstacle, choice, and outcome. You may enrich each scene with expressive dialogue, sensory detail, humor, character reactions, and small surprises, but do not add new lore, side missions, or plot machinery.
- Open on an active, intriguing moment within the first two sentences. Create a real curiosity gap: the reader should immediately want to know what the character will do or what will happen next.
- Make the attempts escalate. Each one must reveal something, create a new consequence, or force a more difficult decision rather than merely repeating the same action.
- Keep the personal stakes present through action and reaction. State major causal links clearly, but trust the reader to infer small emotions and motives from behavior and dialogue.
- Use precise verbs, vivid concrete nouns, sensory details, and natural kid dialogue. Description should create atmosphere and reveal character while keeping the scene easy to picture.
- Include moments of delight: use gentle humor, wonder, tension, or an unexpected observation that fits the existing premise.
- Let the theme grow from the events. Do NOT state the lesson (no "the moral was...", no "from that day on...").
STANDALONE PREMISE AND CLARITY
- The story must make complete sense with no outside context, assumed series knowledge, unexplained history, or sequel setup.
- In the opening, plainly establish who the main character is, where they are, what they want, and what immediate obstacle stands in the way. If the approved plan has an unusual element, explain its complete rule in one plain sentence when it first appears.
- Keep the goal visible through what the character notices, says, and does; do not mechanically repeat it.
- Use familiar real-world cause and effect. Never require the reader to memorize a term before understanding why it matters.
- Every named concept and world detail must directly support the main character's central goal, obstacle, choice, or resolution. Remove anything merely decorative that increases what the reader must track.
- End by plainly showing how the main character's action solved or changed the opening problem. After that concrete resolution, a brief resonant image, callback, or memorable line is welcome when its literal meaning remains clear.
- Before returning, verify that this sentence accurately captures the whole story: "[Character] wants ___, but ___, so they must ___." If it does not, revise the prose to match the supplied plan.
NARRATIVE LOAD FOR THIS TIER
Use 3-4 important characters, one dominant objective, one main obstacle, and at most one subplot or major complication. Build emotional stakes, escalating consequences, one earned reversal, and a layered but concrete payoff. A speculative genre may use one clearly explained premise, but not nested lore. Keep every event tied to the central choice.
LENGTH IS A HARD LIMIT: the story MUST be between 700 and 1100 words total (aim for 900). Never exceed 1100 words. Count the words and trim before returning.
READING LEVEL: write for grade 5. Sentence style: varied sentence lengths and structures for pace and voice, with clear references and causal links. Vocabulary target: 8-10 rich Tier 2 words plus 1-2 context-supported Tier 3 words, prioritizing precision, voice, and usefulness.
PARAGRAPHS
- Most paragraphs are 3-5 sentences that blend dialogue, action, and description. Do NOT start a new paragraph after every sentence or line of dialogue.
- Use a one-sentence paragraph only for a big surprise, discovery, or emotional beat.
- One title only. No headings like "Beginning", "Vocabulary", or "Moral".
VOCABULARY
- Follow the tier vocabulary target exactly. Favor vivid verbs, precise nouns, and expressive adjectives that improve the prose. Avoid padding candidateVocab with ordinary words a reader at this tier already knows.
- Make every challenging word understandable from action, contrast, dialogue, or a nearby clue; do not define, bold, or list words inside the prose. List the strongest candidates in candidateVocab.
SAFETY: age-appropriate. Suspense or mild tension is fine, but no violence, horror, scary villains, death, romance, profanity, or politics — the reader should always feel safe.
ILLUSTRATIONS (you are also the art director)
- Define a consistent visual style and character looks, then write 3 illustration prompts (1 cover + 2 scenes) that reuse those exact descriptions. Each scene's afterParagraph is the 0-based index of the paragraph it follows; the cover uses -1.
Return only JSON with this shape:
{
"title": string,
"hook": string,
"genre": string,
"theme": string,
"paragraphs": string[],
"candidateVocab": string[],
"artDirection": { "style": string, "characters": [{ "name": string, "look": string }], "setting": string },
"images": [{ "role": "cover"|"scene", "afterParagraph": number, "prompt": string, "alt": string }]
}
The hook is one intriguing, spoiler-free sentence for a story preview.User prompt
Genre: folktale or myth
Theme: courage
Approved plan (follow exactly; do not add story concepts):
{"premise":"When Grandfather’s fever spikes during a mountain storm, Lina must bring bitterroot across the gorge she dreads.","mainCharacter":"Lina","supportingCharacters":["Oma","Grandfather"],"setting":"On a rain-slick rope bridge, Lina smells pine smoke below and hears the gorge river hammering stones.","goal":"Lina wants to reach Grandfather before moonrise with enough bitterroot to break his fever.","obstacle":"A mountain wind lashes the bridge harder whenever Lina pretends she is not afraid.","steps":["Lina steps onto the ropes, denies her fear, and the bridge bucks, spilling half the bitterroot into the gorge.","Oma follows to steady her, saying shaking is still moving, and Lina admits she fears arriving too late.","The wind drops, but a cracked plank snaps, leaving Oma clinging above the river."],"choice":"Lina can race onward with the herbs or crawl back and risk Grandfather’s cure to save Oma.","outcome":"She saves Oma, crosses while naming her fear, and Grandfather survives on the bruised bitterroot she refused to abandon.","unusualElement":"The mountain wind calms only when a traveler speaks one true fear aloud."}Words and questions model
Attempt 1 · deepseek/deepseek-v4-flash
System prompt
You create vocabulary and reading-comprehension materials for grade 5 readers from one finished story.
First choose 5-10 vocabulary words that actually appear in the story and match this tier target: 8-10 rich Tier 2 words plus 1-2 context-supported Tier 3 words, prioritizing precision, voice, and usefulness. Favor useful Tier 2 words, vivid verbs, precise nouns, and expressive adjectives. Reject basic words a grade 5 reader likely knows already, and choose varied words rather than near-synonyms. Every selected word must be supported naturally by context so a reader can infer its meaning. For each word provide: word, pos, a kid-friendly definition (<= 140 characters), an exampleFromStory copied verbatim from the story text, synonyms, and antonyms.
Then produce 5-8 questions using that vocabulary and the story: 2 literal, 2 inferential, 1 vocabulary-in-context about one of the selected words, 1 theme, and 0-2 extras. Give each question a unique id, a type (literal | inferential | vocabulary-in-context | theme | extra), the question text, the answer, a short explanation grounded in the story, optional multiple-choice choices, and a rubric.
Write each rubric before imagining any student answer: mustInclude (1-3 concepts required for full credit), niceToHave (0-2 extras), commonWrongPatterns (0-3 misconceptions).
Return only JSON: { "vocabulary": [{ "word": string, "pos": string, "definition": string, "exampleFromStory": string, "synonyms": string[], "antonyms": string[] }], "questions": [{ "id": string, "type": string, "question": string, "answer": string, "explanation": string, "choices"?: string[], "rubric": { "mustInclude": string[], "niceToHave": string[], "commonWrongPatterns": string[] } }] }.User prompt
Candidate vocabulary (hint): bitterroot, gorge, spiking, slicked, lashed, lurched, skittered, dangling, precious, steadied Story: The first knot of the rope bridge leaped under Lina’s foot as if it had teeth. Rain slicked the handropes, the gorge river hammered stones far below, and Lina clutched a pouch of bitterroot that had to reach Grandfather before moonrise. Behind her, Oma tied her gray shawl tighter against the mountain storm. “Go quick, little hawk,” she said, though her voice shook like a spoon in a cup. Grandfather lay in the cabin across the gorge, his fever spiking so high that his words had melted into whispers. The bitterroot was ugly and brown, but boiled strong, it could break a fever if given in time. Lina stared at the bridge. It was only ropes, wet planks, and empty air, swaying between two black cliffs. Pine smoke curled up from somewhere below, sharp and sweet, then vanished in the rain. Everyone in the mountains knew one rule: the wind calmed only when a traveler spoke one true fear aloud. “I’m not afraid,” Lina announced, stepping onto the first plank. The mountain answered with a slap of wind so fierce it flattened her braids against her cheeks. The bridge bucked. Lina dropped to one knee, and the pouch sprang open. Half the bitterroot bounced across the boards like little muddy toes. Before Lina could grab them, three pieces skittered through a gap and disappeared into the roaring gray. “No!” she cried, snatching the pouch shut with both hands. Now it felt too light, and moonrise was crawling closer behind the clouds. “Lina!” Oma called. “Come back if you must.” Lina shook her head so hard rain flew from her eyelashes. If she returned, Grandfather would wait longer. If she crossed, the bridge might throw the rest of the bitterroot after the first half. She stood and forced her feet forward. “I said I’m not afraid,” she muttered. The wind lashed harder, twisting the bridge sideways until the planks tilted like crooked teeth. Lina’s stomach flipped, and she hugged the pouch to her chest. “Stop it,” she hissed at the mountain, which of course did not obey. A second set of footsteps creaked onto the bridge. Oma had followed, one hand on the rope and the other stretched toward Lina. Her shawl snapped behind her like a storm flag. “Shaking is still moving,” Oma said. “Your knees may knock, but they can carry you.” Lina looked back at Oma’s lined face, wet with rain and worry. The words caught in Lina’s throat, rougher than the rope under her fingers. “I am afraid,” she said at last. “I’m afraid I’ll arrive too late, and Grandfather will still be burning when the moon comes up.” The wind fell silent. For one breath, only the river spoke. Lina heard each drop of rain tick on the planks. Then the board beneath Oma’s right foot cracked with a sound like a snapped bone. It broke away, and Oma plunged through the gap, catching the side rope with both hands. “Oma!” Lina dropped flat, her bitterroot pouch scraping the wet wood. Oma dangled above the river, boots kicking mist, her gray braid swinging over the gorge. The far side of the bridge waited ahead, close enough for Lina to see Grandfather’s cabin lamp glowing through the rain. If she raced on, she might make the tea before moonrise. Oma’s fingers slipped an inch. Lina looked from the lamp to the pouch and back again. The remaining bitterroot was bruised, muddy, and precious, but Oma was gasping below her. Lina hooked the pouch cord around her wrist, pressed it under her elbow, and crawled backward toward the broken place. “Hold on,” Lina said. Her voice sounded small, but it did not break. “I’m afraid of dropping the bitterroot. I’m afraid of being too slow. I’m afraid of looking down.” With each fear she named, the bridge steadied, as if the mountain had finally decided to listen. Lina reached both arms over the gap. Oma grabbed her wrists, and together they grunted, slipped, and grunted again. Lina’s elbows burned. The pouch cord bit her skin. At last Oma rolled onto the plank beside her, coughing rainwater and laughing once, a breathless, surprised laugh. “You pulled like a mule,” Oma said. “A polite mule.” Lina wanted to laugh, too, but the cabin lamp ahead flickered, and the clouds thinned to a pale silver edge. Moonrise. She tucked the pouch inside her coat and helped Oma sit with her back against the rope. “I can cross,” Lina said. This time she did not pretend her hands were steady. She stepped past the broken plank, placing each foot where the ropes joined the boards. “I am afraid the bridge will break. I am afraid the river is louder than I am. I am afraid Grandfather needs more bitterroot than I have.” The wind moved around her, not against her. It smelled of rain, pine smoke, and cold stone. Lina crossed the last planks with the pouch pressed to her ribs. When she reached the far cliff, she did not cheer; she ran. Inside the cabin, Grandfather’s face shone with fever. Lina emptied the pouch into Oma’s iron pot, even the bruised scraps and muddy crumbs she refused to abandon. The tea turned dark and bitter, and Grandfather swallowed it one slow spoonful at a time while Oma, who had limped across after resting, held the cup. By the time the moon lifted clear above the storm clouds, Grandfather’s breathing had softened. His eyes opened, cloudy but smiling. “Lina,” he whispered. She sat beside him with rope burns on her wrists and rainwater in her boots, listening to the gorge grow quiet under the bridge that had heard the truth.
Image model
Cover · openai/gpt-image-2.5-flare
Prompt
Warm folktale watercolor with ink outlines, soft stormy blues and greens, expressive faces, gentle drama, and glowing lamplight; suitable for middle-grade readers. Setting: A rain-slick rope bridge strung across a steep mountain gorge, with wet pine trees, mist, a hammering river far below, drifting pine smoke, storm clouds, and a small cabin lamp glowing on the far cliff.. Characters — Lina: A brave 11-year-old mountain girl with warm brown skin, dark brown eyes, two rain-dark braids, a patched red coat, wool trousers, sturdy boots, and a small cloth pouch tied at her wrist.; Oma: An elderly woman with light brown skin, kind lined face, silver-gray braid, a dark green dress under a gray wool shawl, strong hands, and careful, steady posture.; Grandfather: An elderly man with tan skin, white beard, tired gentle eyes, wrapped in a patched quilt beside a small cabin hearth.. Scene: Warm folktale watercolor with ink outlines. Show Lina, an 11-year-old mountain girl with warm brown skin, dark brown eyes, two rain-dark braids, patched red coat, wool trousers, sturdy boots, and a small cloth pouch tied at her wrist, standing on a rain-slick rope bridge over a misty gorge. Wet pines bend in the wind, the river hammers stones far below, pine smoke curls upward, and a tiny cabin lamp glows across the cliff. Mood: brave, tense, magical but safe. Compose as a wide 16:9 landscape scene. Keep important characters and story details comfortably inside the frame, away from the extreme edges. Style: richly detailed, soft painterly watercolor children's-book illustration with warm lighting, expressive faces, depth, and a cozy, magical feel — polished, publication-quality. Cheerful and friendly for ages 8-10. Safe and age-appropriate. No text, words, or letters in the image.
Scene 1 · openai/gpt-image-2.5-flare
Prompt
Warm folktale watercolor with ink outlines, soft stormy blues and greens, expressive faces, gentle drama, and glowing lamplight; suitable for middle-grade readers. Setting: A rain-slick rope bridge strung across a steep mountain gorge, with wet pine trees, mist, a hammering river far below, drifting pine smoke, storm clouds, and a small cabin lamp glowing on the far cliff.. Characters — Lina: A brave 11-year-old mountain girl with warm brown skin, dark brown eyes, two rain-dark braids, a patched red coat, wool trousers, sturdy boots, and a small cloth pouch tied at her wrist.; Oma: An elderly woman with light brown skin, kind lined face, silver-gray braid, a dark green dress under a gray wool shawl, strong hands, and careful, steady posture.; Grandfather: An elderly man with tan skin, white beard, tired gentle eyes, wrapped in a patched quilt beside a small cabin hearth.. Scene: Warm folktale watercolor with ink outlines. Lina, in her patched red coat with two wet braids and a pouch at her wrist, kneels on a swaying rope bridge as pieces of muddy bitterroot skitter toward gaps between slick planks. Rain streaks across the scene, wet ropes twist, mist rises from the gorge, and pine smoke curls from below. Compose as a wide 16:9 landscape scene. Keep important characters and story details comfortably inside the frame, away from the extreme edges. Style: richly detailed, soft painterly watercolor children's-book illustration with warm lighting, expressive faces, depth, and a cozy, magical feel — polished, publication-quality. Cheerful and friendly for ages 8-10. Safe and age-appropriate. No text, words, or letters in the image.
Scene 2 · openai/gpt-image-2.5-flare
Prompt
Warm folktale watercolor with ink outlines, soft stormy blues and greens, expressive faces, gentle drama, and glowing lamplight; suitable for middle-grade readers. Setting: A rain-slick rope bridge strung across a steep mountain gorge, with wet pine trees, mist, a hammering river far below, drifting pine smoke, storm clouds, and a small cabin lamp glowing on the far cliff.. Characters — Lina: A brave 11-year-old mountain girl with warm brown skin, dark brown eyes, two rain-dark braids, a patched red coat, wool trousers, sturdy boots, and a small cloth pouch tied at her wrist.; Oma: An elderly woman with light brown skin, kind lined face, silver-gray braid, a dark green dress under a gray wool shawl, strong hands, and careful, steady posture.; Grandfather: An elderly man with tan skin, white beard, tired gentle eyes, wrapped in a patched quilt beside a small cabin hearth.. Scene: Warm folktale watercolor with ink outlines. Oma, an elderly woman with silver-gray braid, gray shawl, and strong hands, clings to the side rope of the broken bridge above the misty river while Lina lies flat on the wet planks reaching toward her, the bitterroot pouch cord wrapped around Lina’s wrist. The cabin lamp glows far ahead through rain and storm clouds. Compose as a wide 16:9 landscape scene. Keep important characters and story details comfortably inside the frame, away from the extreme edges. Style: richly detailed, soft painterly watercolor children's-book illustration with warm lighting, expressive faces, depth, and a cozy, magical feel — polished, publication-quality. Cheerful and friendly for ages 8-10. Safe and age-appropriate. No text, words, or letters in the image.
Speech model
Story narration · x-ai/grok-voice-tts-1.0
Prompt
The Bridge That Heard The first knot of the rope bridge leaped under Lina’s foot as if it had teeth. Rain slicked the handropes, the gorge river hammered stones far below, and Lina clutched a pouch of bitterroot that had to reach Grandfather before moonrise. Behind her, Oma tied her gray shawl tighter against the mountain storm. “Go quick, little hawk,” she said, though her voice shook like a spoon in a cup. Grandfather lay in the cabin across the gorge, his fever spiking so high that his words had melted into whispers. The bitterroot was ugly and brown, but boiled strong, it could break a fever if given in time. Lina stared at the bridge. It was only ropes, wet planks, and empty air, swaying between two black cliffs. Pine smoke curled up from somewhere below, sharp and sweet, then vanished in the rain. Everyone in the mountains knew one rule: the wind calmed only when a traveler spoke one true fear aloud. “I’m not afraid,” Lina announced, stepping onto the first plank. The mountain answered with a slap of wind so fierce it flattened her braids against her cheeks. The bridge bucked. Lina dropped to one knee, and the pouch sprang open. Half the bitterroot bounced across the boards like little muddy toes. Before Lina could grab them, three pieces skittered through a gap and disappeared into the roaring gray. “No!” she cried, snatching the pouch shut with both hands. Now it felt too light, and moonrise was crawling closer behind the clouds. “Lina!” Oma called. “Come back if you must.” Lina shook her head so hard rain flew from her eyelashes. If she returned, Grandfather would wait longer. If she crossed, the bridge might throw the rest of the bitterroot after the first half. She stood and forced her feet forward. “I said I’m not afraid,” she muttered. The wind lashed harder, twisting the bridge sideways until the planks tilted like crooked teeth. Lina’s stomach flipped, and she hugged the pouch to her chest. “Stop it,” she hissed at the mountain, which of course did not obey. A second set of footsteps creaked onto the bridge. Oma had followed, one hand on the rope and the other stretched toward Lina. Her shawl snapped behind her like a storm flag. “Shaking is still moving,” Oma said. “Your knees may knock, but they can carry you.” Lina looked back at Oma’s lined face, wet with rain and worry. The words caught in Lina’s throat, rougher than the rope under her fingers. “I am afraid,” she said at last. “I’m afraid I’ll arrive too late, and Grandfather will still be burning when the moon comes up.” The wind fell silent. For one breath, only the river spoke. Lina heard each drop of rain tick on the planks. Then the board beneath Oma’s right foot cracked with a sound like a snapped bone. It broke away, and Oma plunged through the gap, catching the side rope with both hands. “Oma!” Lina dropped flat, her bitterroot pouch scraping the wet wood. Oma dangled above the river, boots kicking mist, her gray braid swinging over the gorge. The far side of the bridge waited ahead, close enough for Lina to see Grandfather’s cabin lamp glowing through the rain. If she raced on, she might make the tea before moonrise. Oma’s fingers slipped an inch. Lina looked from the lamp to the pouch and back again. The remaining bitterroot was bruised, muddy, and precious, but Oma was gasping below her. Lina hooked the pouch cord around her wrist, pressed it under her elbow, and crawled backward toward the broken place. “Hold on,” Lina said. Her voice sounded small, but it did not break. “I’m afraid of dropping the bitterroot. I’m afraid of being too slow. I’m afraid of looking down.” With each fear she named, the bridge steadied, as if the mountain had finally decided to listen. Lina reached both arms over the gap. Oma grabbed her wrists, and together they grunted, slipped, and grunted again. Lina’s elbows burned. The pouch cord bit her skin. At last Oma rolled onto the plank beside her, coughing rainwater and laughing once, a breathless, surprised laugh. “You pulled like a mule,” Oma said. “A polite mule.” Lina wanted to laugh, too, but the cabin lamp ahead flickered, and the clouds thinned to a pale silver edge. Moonrise. She tucked the pouch inside her coat and helped Oma sit with her back against the rope. “I can cross,” Lina said. This time she did not pretend her hands were steady. She stepped past the broken plank, placing each foot where the ropes joined the boards. “I am afraid the bridge will break. I am afraid the river is louder than I am. I am afraid Grandfather needs more bitterroot than I have.” The wind moved around her, not against her. It smelled of rain, pine smoke, and cold stone. Lina crossed the last planks with the pouch pressed to her ribs. When she reached the far cliff, she did not cheer; she ran. Inside the cabin, Grandfather’s face shone with fever. Lina emptied the pouch into Oma’s iron pot, even the bruised scraps and muddy crumbs she refused to abandon. The tea turned dark and bitter, and Grandfather swallowed it one slow spoonful at a time while Oma, who had limped across after resting, held the cup. By the time the moon lifted clear above the storm clouds, Grandfather’s breathing had softened. His eyes opened, cloudy but smiling. “Lina,” he whispered. She sat beside him with rope burns on her wrists and rainwater in her boots, listening to the gorge grow quiet under the bridge that had heard the truth.
