InkydoopStories to read, hear, and wonder about.
Mira stands barefoot before a shining glass hill while a bell glows above and Tomas fades into the fog below.
Storyfairy talebelieving in yourself

The Bell on the Glass Hill

When fog hides the valley path, small Mira must climb a slippery glass hill before her friend is lost in the gray.

5 min read · tap a highlighted word for its meaning

Story narration

Listen to The Bell on the Glass Hill

0:00 / 0:00
Speed

Mira notices chimney soot sticking to the glass hill after slipping and scratching her knees.

Mira leaps for her ribbon tied to the bell rope, ringing the home-bell so Tomas can find his way.

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 4 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 2-3 important characters, one central goal, one main obstacle, two or three escalating attempts, and at most one complication. Include meaningful personal stakes, a logical reversal or discovery, and a satisfying payoff. Keep any imaginative element simple and clearly explained. Make the problem clear within the first 10% and resolve it concretely.

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: fairy tale
Theme: believing in yourself
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 Growing readers (grade 4, Lexile 600–800). 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 2-3 important characters, one central goal, one main obstacle, two or three escalating attempts, and at most one complication. Include meaningful personal stakes, a logical reversal or discovery, and a satisfying payoff. Keep any imaginative element simple and clearly explained. Make the problem clear within the first 10% and resolve it concretely.

LENGTH IS A HARD LIMIT: the story MUST be between 550 and 850 words total (aim for 700). Never exceed 850 words. Count the words and trim before returning.

READING LEVEL: write for grade 4. Sentence style: varied short and medium-length sentences, with occasional longer sentences that remain easy to track. Vocabulary target: 8-10 varied Tier 2 words, including vivid verbs, precise nouns, and expressive adjectives, supported naturally by context.

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: fairy tale
Theme: believing in yourself
Approved plan (follow exactly; do not add story concepts):
{"premise":"When fog swallows the valley path, Mira must climb the glass hill and ring the home-bell before Tomas is lost all night.","mainCharacter":"Mira","supportingCharacters":["Tomas"],"setting":"Mira slips barefoot on a glass hill above sheep bells, cold fog, and one crooked cottage roof.","goal":"Mira wants to ring the hilltop bell so Tomas can follow its sound home safely.","obstacle":"The glass hill is too slick, and Mira believes she is too small to reach the bell.","steps":["Mira ties grass around her feet, climbs three steps, and slides down with scratched knees.","She notices chimney soot sticks to glass, coats her palms, and climbs higher before the bell rope snaps.","Mira finds the broken rope fits her braid ribbon and ties them together with shaking hands."],"choice":"Mira can wait for help in the thickening fog or trust her knot and leap for the bell.","outcome":"Mira rings the bell, Tomas follows it home, and she keeps the soot-marked ribbon to remember she was enough.","unusualElement":"The hilltop bell always sends its sound toward the person most in need of home."}

Words and questions model

Attempt 1 · deepseek/deepseek-v4-flash

System prompt

You create vocabulary and reading-comprehension materials for grade 4 readers from one finished story.

First choose 5-10 vocabulary words that actually appear in the story and match this tier target: 8-10 varied Tier 2 words, including vivid verbs, precise nouns, and expressive adjectives, supported naturally by context. Favor useful Tier 2 words, vivid verbs, precise nouns, and expressive adjectives. Reject basic words a grade 4 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): swallowed, vanished, crooked, slick, skidded, thickened, soot, dangled, fastened, trembled

Story:
Fog swallowed the valley path just as Tomas vanished beyond the sheep pasture. Mira stood barefoot at the bottom of the glass hill, clutching her skirt while cold mist curled around her ankles. Far above her, the home-bell hung from a bent silver post. The hilltop bell always sent its sound toward the person most in need of home, and tonight that person was Tomas.

“Tomas!” Mira called. Her voice fell flat, as if the fog had stuffed wool in its ears. Only the tiny sheep bells answered from somewhere below, clinking in worried little notes. Mira could see one crooked cottage roof in the valley, then even that faded to a dark smudge.

The glass hill rose before her, smooth and pale as frozen moonlight. Mira’s toes pressed the cold surface and slipped at once. She was the smallest child in the valley, small enough to hide behind the flour barrel, small enough that the old gate latch sat above her nose. The bell looked as far away as a star.

Mira snatched handfuls of long grass from beside the path and tied them around her feet. “Grass grips dirt,” she told herself. “Maybe it grips glass.” She climbed one step, then two, then three. On the fourth, the grass slid sideways, her legs flew up, and she skidded back down on her knees with a squeak that made one sheep bleat in surprise.

Her knees stung, and two red scratches shone on her skin. Mira wanted to sit down and cry, but the fog thickened until the pasture fence disappeared. Then she noticed black chimney soot on the stones beside the crooked cottage chimney. Where it had blown onto the glass hill, it stuck in dusty patches instead of sliding away.

Mira crawled to the chimney stones and rubbed soot over her palms. The black dust smelled smoky and sharp, and it turned her hands into two dark mittens. This time, she pressed her palms flat and climbed with her feet and hands together. Step by careful step, she rose higher than the sheep shed, higher than the roof, until the bell rope dangled just above her head.

“Almost,” she whispered. Her fingers closed around the rope, rough and damp from the fog. She tugged once, but the bell only gave a tiny cough. She tugged harder, and the rope snapped in her hands with a dry little crack.

For a moment, Mira stared at the broken end. The bell was still above her, the fog was still below her, and Tomas was somewhere inside it with no path to follow. Mira looked down the glass slope. Waiting for help would be easy, if she could bear the thought of Tomas wandering all night.

Her braid ribbon tickled her cheek in the wet wind. Mira pulled it free, and her braid tumbled over one shoulder. With shaking fingers, she fastened the broken rope to the ribbon and tied the tightest knot she knew, the one she used when her bundle of firewood was too big. She tugged the knot once, twice. It held.

The bell swayed just beyond her reach. Mira planted her sooty palms on the glass and pushed herself to her toes. “I am not too small,” she said, though her voice trembled. Then she leaped. Her fingers caught the ribbon, the knot jerked, and the home-bell rang out bright and strong, a golden sound pouring into the fog.

The ring did not spread everywhere. It streamed down the hill like a shining path made of sound. Far below, a voice shouted, “Mira?” Tomas stumbled out of the fog near the sheep pasture, hat crooked, cheeks damp, but grinning so hard he looked almost silly.

Mira slid down slowly on her sooty palms, laughing when the glass painted black streaks on her elbows. Tomas met her at the bottom and held up the end of her ribbon, still tied to the broken rope. Later, when the fog lifted and the crooked cottage roof glimmered with dew, Mira kept that soot-marked ribbon in her pocket. Sometimes she touched the knot and smiled at the hill.

Image model

Cover · openai/gpt-image-2.5-flare

Prompt

warm fairy-tale watercolor with soft pencil outlines, misty pastels, gentle glowing highlights, cozy and safe mood, expressive faces, grade-school storybook detail Setting: a fairy-tale valley with a slick glass hill above a sheep pasture, tiny sheep bells in the mist, cold silver fog, and one crooked cottage roof near chimney stones. Characters — Mira: small brave girl about 9 years old, warm brown skin, dark curly hair in one long braid tied with a faded blue ribbon, simple cream tunic dress, bare feet, curious dark eyes, later with smoky black soot on her palms and ribbon; Tomas: boy about 10 years old, light tan skin, sandy messy hair, green wool vest over a linen shirt, brown trousers, soft round cap that often sits crooked, friendly grin. Scene: Cover art in warm fairy-tale watercolor with soft pencil outlines, misty pastels, gentle glowing highlights. Show Mira, a small brave girl about 9 with warm brown skin, dark curly hair in one long braid tied with a faded blue ribbon, simple cream tunic dress and bare feet, standing at the bottom of a shining glass hill. Above her is a hilltop bell on a bent silver post; below are fog, faint sheep bells, and one crooked cottage roof. Tomas, a boy about 10 with light tan skin, sandy messy hair, green wool vest, brown trousers, and a crooked soft cap, is barely visible as a safe, blurry shape in the fog. Cozy, tense, magical fairy-tale mood. 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 fairy-tale watercolor with soft pencil outlines, misty pastels, gentle glowing highlights, cozy and safe mood, expressive faces, grade-school storybook detail Setting: a fairy-tale valley with a slick glass hill above a sheep pasture, tiny sheep bells in the mist, cold silver fog, and one crooked cottage roof near chimney stones. Characters — Mira: small brave girl about 9 years old, warm brown skin, dark curly hair in one long braid tied with a faded blue ribbon, simple cream tunic dress, bare feet, curious dark eyes, later with smoky black soot on her palms and ribbon; Tomas: boy about 10 years old, light tan skin, sandy messy hair, green wool vest over a linen shirt, brown trousers, soft round cap that often sits crooked, friendly grin. Scene: Interior-style close scene outdoors in warm fairy-tale watercolor with soft pencil outlines. Mira, small brave girl with warm brown skin, dark curly braid and faded blue ribbon, cream tunic dress and bare feet, kneels beside chimney stones near a crooked cottage roof. Her knees have tiny scratches, and she notices black soot stuck to patches of the glass hill while cold silver fog curls around the sheep pasture. Include faint sheep shapes with tiny bells in the background. Her face shows a new idea forming. 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 fairy-tale watercolor with soft pencil outlines, misty pastels, gentle glowing highlights, cozy and safe mood, expressive faces, grade-school storybook detail Setting: a fairy-tale valley with a slick glass hill above a sheep pasture, tiny sheep bells in the mist, cold silver fog, and one crooked cottage roof near chimney stones. Characters — Mira: small brave girl about 9 years old, warm brown skin, dark curly hair in one long braid tied with a faded blue ribbon, simple cream tunic dress, bare feet, curious dark eyes, later with smoky black soot on her palms and ribbon; Tomas: boy about 10 years old, light tan skin, sandy messy hair, green wool vest over a linen shirt, brown trousers, soft round cap that often sits crooked, friendly grin. Scene: Climactic scene in warm fairy-tale watercolor with soft pencil outlines and glowing highlights. Mira, with soot-black palms, loose dark curls from her braid, cream tunic dress, and bare feet on the glass hill, leaps and grabs her faded blue ribbon tied to the broken bell rope. The hilltop bell rings bright gold sound into the silver fog below. In the distance, Tomas with sandy hair, green vest, brown trousers, and crooked cap begins to follow the glowing path of sound near the sheep pasture. Safe wonder and triumph. 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 Bell on the Glass Hill

Fog swallowed the valley path just as Tomas vanished beyond the sheep pasture. Mira stood barefoot at the bottom of the glass hill, clutching her skirt while cold mist curled around her ankles. Far above her, the home-bell hung from a bent silver post. The hilltop bell always sent its sound toward the person most in need of home, and tonight that person was Tomas.

“Tomas!” Mira called. Her voice fell flat, as if the fog had stuffed wool in its ears. Only the tiny sheep bells answered from somewhere below, clinking in worried little notes. Mira could see one crooked cottage roof in the valley, then even that faded to a dark smudge.

The glass hill rose before her, smooth and pale as frozen moonlight. Mira’s toes pressed the cold surface and slipped at once. She was the smallest child in the valley, small enough to hide behind the flour barrel, small enough that the old gate latch sat above her nose. The bell looked as far away as a star.

Mira snatched handfuls of long grass from beside the path and tied them around her feet. “Grass grips dirt,” she told herself. “Maybe it grips glass.” She climbed one step, then two, then three. On the fourth, the grass slid sideways, her legs flew up, and she skidded back down on her knees with a squeak that made one sheep bleat in surprise.

Her knees stung, and two red scratches shone on her skin. Mira wanted to sit down and cry, but the fog thickened until the pasture fence disappeared. Then she noticed black chimney soot on the stones beside the crooked cottage chimney. Where it had blown onto the glass hill, it stuck in dusty patches instead of sliding away.

Mira crawled to the chimney stones and rubbed soot over her palms. The black dust smelled smoky and sharp, and it turned her hands into two dark mittens. This time, she pressed her palms flat and climbed with her feet and hands together. Step by careful step, she rose higher than the sheep shed, higher than the roof, until the bell rope dangled just above her head.

“Almost,” she whispered. Her fingers closed around the rope, rough and damp from the fog. She tugged once, but the bell only gave a tiny cough. She tugged harder, and the rope snapped in her hands with a dry little crack.

For a moment, Mira stared at the broken end. The bell was still above her, the fog was still below her, and Tomas was somewhere inside it with no path to follow. Mira looked down the glass slope. Waiting for help would be easy, if she could bear the thought of Tomas wandering all night.

Her braid ribbon tickled her cheek in the wet wind. Mira pulled it free, and her braid tumbled over one shoulder. With shaking fingers, she fastened the broken rope to the ribbon and tied the tightest knot she knew, the one she used when her bundle of firewood was too big. She tugged the knot once, twice. It held.

The bell swayed just beyond her reach. Mira planted her sooty palms on the glass and pushed herself to her toes. “I am not too small,” she said, though her voice trembled. Then she leaped. Her fingers caught the ribbon, the knot jerked, and the home-bell rang out bright and strong, a golden sound pouring into the fog.

The ring did not spread everywhere. It streamed down the hill like a shining path made of sound. Far below, a voice shouted, “Mira?” Tomas stumbled out of the fog near the sheep pasture, hat crooked, cheeks damp, but grinning so hard he looked almost silly.

Mira slid down slowly on her sooty palms, laughing when the glass painted black streaks on her elbows. Tomas met her at the bottom and held up the end of her ribbon, still tied to the broken rope. Later, when the fog lifted and the crooked cottage roof glimmered with dew, Mira kept that soot-marked ribbon in her pocket. Sometimes she touched the knot and smiled at the hill.
Discover the wordsExplore the vivid words inside this story.Let's go →