Free guide · from the reel

Make an illustrated bedtime story with Claude, scene by scene.

"Prickles" is a 42-second picture-book film about a hedgehog who couldn't be hugged. An image model drew the scenes from one set of character sheets. Claude did everything else in code: it moved every drawing, stuck on every leaf, popped in every word on the beat and composed the music. Here's the exact workflow, the prompts, the script and what it cost.

⏱ A day💸 About $5 in credits🎬 42-second 16:9 film

What you need

💻Claude CodeIn the Claude desktop app (Code tab) or in a terminal: npm install -g @anthropic-ai/claude-code
🖍An image model for the drawingsI used Nano Banana Pro through Pika, connected to Claude. Any model that takes reference images works. The key is a set of character sheets and one background that every other drawing references.
🎙An ElevenLabs accountFor the narrator. To publish the video you need a paid plan (Starter or above) for the commercial license.
🐍Python + FFmpegClaude writes the renderer in Python with OpenCV, NumPy and Pillow. uv installs everything on the fly, so there's no setup beyond FFmpeg.

The workflow

The trick: draw every scene from the same sheets, record the voice before anything moves, and let code do all of the motion. No video model touches the drawings.

1

Design the characters

2 sheets · approve each before anything else

One model sheet for the hero with turnarounds and expressions, then one for the friends, made with the hero's sheet as a reference so the style matches. Every later drawing uses these sheets, so the characters look the same in every shot.

Hero sheet promptCharacter model sheet for a children's picture book, on a single sheet of warm cream watercolour paper. Hand-drawn in coloured pencil and soft watercolour wash, visible pencil strokes and paper grain, fine warm-brown pencil outlines, a classic storybook look. Not 3D, not vector, not chibi, not a plush toy. The character: [NAME], a small [animal] drawn with natural, believable anatomy and proportions for its species ([eyes, snout or face, ears, fur colours, paws]). She stands upright on her hind legs like a storybook animal. She wears one thing only: [one accessory, e.g. a chunky hand-knitted red scarf with visible knit texture]. Layout: hand-lettered name "[NAME]" in brown pencil at the top left. Top row, full body, same scale, standing on a soft pencil shadow: front view, three-quarter view, side profile, back view. [A fifth drawing of a pose the story needs, e.g. curled up into a ball.] Bottom row, six head-and-shoulders expression studies with small hand-written pencil labels: [happy, hopeful, surprised, sad, shy, delighted]. Same face design in every drawing. Palette: [4 colours, e.g. rust, mustard, sage green and cream], warm afternoon light. Plain cream background, no other characters, no scenery.
Friends sheet promptA second character model sheet for the same children's picture book as the reference: the same paper, the same coloured-pencil and watercolour style, the same outlines, lettering and palette. Every animal has natural, believable anatomy for its species and stands upright like the reference character. Three friends, each in its own column with its name lettered small above it: [1. name: species, fur, one piece of clothing] [2. …] [3. …]. In each column: one full-body three-quarter view, and below it two expression studies with small pencil labels ([the two expressions each one needs in the story]). At the far right, for scale only: the character from the reference next to a little pencil height line. Relative heights: [smallest to tallest]. Plain cream background, no scenery.
Prickles character sheetFriends character sheet

The two sheets every scene was drawn from.

💡Pick her best angle and stick to it. In the front view Prickles' snout came out too short, so every scene prompt asks for three-quarter or profile and says "never facing the camera straight on".
2

Draw the world

1 empty background, ~15 scene plates, 1 prop sheet

First an empty master background with no characters, approved like the sheets. Then every scene is generated with two or three references: the background and the sheets of whoever is in the shot.

Background promptA full-bleed illustrated scene from the same children's picture book as the reference: the same coloured-pencil and soft watercolour technique, visible pencil strokes and paper grain, fine warm-brown outlines, and the same palette. Painterly and hand-drawn, not 3D, not a photo, not vector. No characters and no animals anywhere in the scene. No text. The scene: [the main location, e.g. a cosy clearing deep in an autumn wood at golden hour]. The camera is low, at [the hero's] eye level, a gentle three-quarter angle, wide 16:9 framing. - Right third: [the hero's home or a landmark]. - Left third: [a second landmark]. - Middle and foreground: open ground with clear space for characters to stand and act in the centre. - Background: [depth, e.g. tall trunks fading into a warm misty distance]. - Light: [direction and mood]. Rich detail but uncluttered, so it can be the master background for every scene.
Scene plate promptAn illustrated scene from the same children's picture book as the references: coloured pencil and soft watercolour, visible pencil strokes and paper grain, fine warm-brown outlines, the same palette. Painterly and hand-drawn, not 3D, not vector, not chibi. All characters exactly match their model sheets, with natural proportions, as upright storybook animals. [Shot size and camera, e.g. "a side-on medium-wide shot at low eye level"] in [the location] at [time of day]. [Who is where, what each one is doing, their expression]. [What must stay visible, e.g. "a clear gap of open space between them in the middle"]. [The hero] is seen in [three-quarter view / profile], never facing the camera straight on. Full-bleed 16:9 image, painted edge to edge with no border and no paper edge. No text.

Also ask for a prop sheet on a flat, plain background: single leaves in eight colours, twine, little hearts. Claude cuts each one out with code, so they can fall, swirl and stick onto the characters.

Prop sheet promptA prop sheet for the same children's picture book as the reference, in the same style, on a perfectly plain, flat, even cream background with no paper edge, no texture variation and no shadows, so each item can be cut out cleanly. Neatly arranged in a loose grid with generous empty space around every item, nothing touching or overlapping: [e.g. 24 single fallen autumn leaves, flat and seen from above, in four shapes and eight colours, each with visible veins]. Along the bottom: [e.g. three lengths of jute twine and four small painted hearts]. No characters, no scenery, no text.
The empty clearing every scene referencesThe prop sheet of leaves, twine and hearts

The clearing every scene references, and the prop sheet the leaves were cut from.

3

Record the voice first

ElevenLabs · then word timings

Every cut, word and effect lands on the narration, so the voice comes before any animation. I used the voice "Katherine – Calm Luxury Narrator" on Eleven v4, with direction tags in brackets, and recorded the story and the ending as two separate takes:

Paste into ElevenLabs[warmly] [softly] Deep in the autumn forest… lived a little hedgehog named Prickles. [pause] … (your story here, with a direction tag at every change of mood)

Then have Claude get the timing of every word and check the take against the script:

PromptTranscribe voice.mp3 with Whisper (word timestamps), compare it word by word with script.md, and tell me any missing or changed words and the long pauses. Snap each word's start to the real sound onset, then map every scene in my scene list to the word it starts on and save timeline.json.
💡Generate 4 takes and pick one as it is. Never speed it up or cut silences out of it. If one word changes later (I swapped "wood" for "forest"), record a new take and re-run the timings.
4

Bring it to life in code

The main prompt · plus a few redrawn poses

This is where the drawings become a film. A virtual camera moves over each plate, and everything that moves is code.

Build promptWrite a Python renderer (OpenCV + NumPy + Pillow, run with uv) that turns my plates into a 16:9 film timed to timeline.json, then pipes the frames to FFmpeg with the voice. Per shot: a slow camera move (push, pan or pull back) over the plate, with props pasted in plate space so they move with the camera. Effects in code, using the leaves and hearts cut from my prop sheet: falling leaves and foreground leaves out of focus, light shafts and dust, painted hearts floating up, a camera bump and a star-burst on "OUCH!", leaves drifting down until only her nose peeks out, a ribbon of leaves swirling across the frame, leaves sticking onto her spines one by one with a little pop (never on her face), fireflies and a warm glow at the hug. Cool the colour a little in the sad scene. Words: the narration's exact words at the bottom of the frame like film subtitles, in a storybook serif (Fraunces), popping in word by word exactly when they're spoken, all on one baseline, with a soft halo so they read on any background. Colour the key words. Make it feel drawn, not panned: a tiny line "boil" (redraw wobble) on 4s, paper grain and a soft vignette. Ending: a torn-paper card on twine drops in with "Everything you just saw was made by Claude.", then letters cut from the leaves spell YOUR-KEYWORD and drop in one by one on twine. Render stills at 15 key moments first, look at every one, and fix anything that covers a face or runs off-screen before the full render.

For the bits where a character acts (arms opening for a hug, curling up, uncurling, a squeeze), the image model redraws only that part of the plate. Code lines the new drawing up with the original and keeps only the changed area, so nothing else flickers.

Pose drawing promptRedraw the first reference image EXACTLY: the same composition, framing, camera, background, light, colours, style, and every character in the same position, the same size and with the same face. Change ONLY [the part that moves]: [the new pose, e.g. "both front paws and arms raised and opened wide to the sides, ready for a big hug"]. Everything else stays identical: [list it: heads, faces, legs, clothing, background]. Full-bleed 16:9, no border, no text.
Prompt for ClaudeFor each pose drawing: align it to its original plate with feature matching on the parts that don't move (ORB + RANSAC homography), keep only the pixels that changed inside a box I give you around the moving part, colour-match that patch to the plate and feather it in. Then swap the drawings in the shot on the word where the action happens and hold the last one.
The original plateThe redrawn pose with arms open

One plate, one redrawn pose: only the arms changed.

💡Less is more. Only the part that acts moves. Legs stay still, heads move only when the action needs it, and a face changes once and holds. Flicking between two faces looks broken.
5

Score, render, record

Music and sound effects in code too

I had Claude compose the music in code too, so there's nothing to license:

Music + sound promptWrite audio.py that synthesizes the whole soundtrack with NumPy/SciPy (no samples): a soft felt-piano waltz with glockenspiel and pizzicato that follows the story. It drops to a lonely solo piano in a minor key when she curls up, then swells warm at the hug and settles into a soft resolve under the ending. Add a comic "boing" on "OUCH!", leaf rustles, a little chime for every leaf that sticks, and evening crickets under the ending, all timed to timeline.json. Keep the music about 13 dB under the voice and master the mix to −16 LUFS.

For the reel: play the film full-screen on your laptop in a dark room and film the screen with your phone.

What it cost

Real numbers from this film.

2 character sheets + the background + 1 retake (2K images)≈ $0.54
15 scene plates + the prop sheet (2K)≈ $2.16
8 redrawn poses for the animation≈ $1.08
Narration: 12 takes on Eleven v4, including a re-record after a word change≈ 4,700 credits
Camera, leaves, words, music, sound, render$0 · code

The script

Prickles, exactly as narrated, plus the scene list the film was built from.

Narration[warmly] [softly] Deep in the autumn forest… lived a little hedgehog named Prickles. [pause] Prickles loved hugs more than anything. [curious] But every time she tried… [surprised] OUCH! [sighs] So Prickles curled up small… and hid in the leaves. [pause] [gently hopeful] Then her friends had an idea. [excited] They gathered the softest leaves in the forest… [delighted] and her prickles held every single one. [warmly] And then… the biggest hug of all. [softly] [slowly] Because the right hug… always finds you. [warmly] [smiling] Everything you just saw… was made by Claude. [pause] Comment "story"… and I'll send you the script, the guide, and how to do this yourself.
The 13 scenes
  1. Golden-hour clearing, a little round door in the tree roots · slow push-in, falling leaves, light shafts
  2. Prickles in her red scarf by her door, smiling
  3. Rabbit and Squirrel hug while Prickles watches, paws clasped · painted hearts float up
  4. Prickles walks toward Rabbit and opens her arms wide
  5. "OUCH!" · Rabbit hops back holding his paw, her spines bristle, camera bump, boing
  6. Prickles curls up and hides · leaves drift down until only her nose peeks out, the colour cools
  7. Rabbit, Squirrel and Badger huddle, then look up delighted
  8. The friends carry armfuls of red and gold leaves · a ribbon of leaves swirls across the frame
  9. They press the leaves onto her spines one by one, each with a pop and a chime
  10. She uncurls wearing a soft coat of leaves, beaming
  11. The biggest group hug at dusk · fireflies and a warm glow
  12. Pull back over the clearing at dusk, warm light in the round door
  13. A torn-paper card on twine, then leaf letters S-T-O-R-Y drop in one by one

If something looks off

A character looks different from shot to shotGenerate every scene with the sheets AND the background as references, and approve those before anything else.
A face looks wrong from one angleStop using that angle. Ask for three-quarter or profile in every prompt and redo only that plate.
A plate comes back with a painted paper borderSay "full-bleed, painted edge to edge, no border" in the prompt, or have Claude crop it in code.
A redrawn pose changes the colour of a faceColour-match the patch to the original plate, and keep that drawing on screen for under a second.
Words cover a faceKeep the words at the bottom like subtitles, then check stills at every word change.
Stuck-on leaves land on a faceGive Claude a mask of where they may go (the spines only) and keep them inside it.
🙌Credit: drawings by Nano Banana Pro (Google) via Pika, voice by ElevenLabs, rendering with OpenCV, NumPy, Pillow and FFmpeg, word timings with Whisper, words in Fraunces (SIL Open Font License). Claude by Anthropic.
Also on this guideThe Paper Rocket: a kids' story built 100% in code, felt textures and all →

This is what I do. Check out my work.

I make content, websites and AI tools for brands, with the same kind of AI tools you just saw.

See my portfolio →
Got a project in mind? paulino@trigonagency.com