Paste it into Claude or ChatGPT, answer its questions, and it makes the video. It works best in an app that can run code.
Make me a short film for my product the same way zippr made one particular film: "Re-explaining, three endings" (zippr.to). In it, a bakery owner, Meera, tapes the same note to her wall every day to tell her AI who she is and what she wants ("Hi! I run a small bakery. Warm tone. No emojis. Sign it from Meera. Write this week's newsletter."), and every day a black speech bubble springs up out of a wooden block on a coil and says "Nice to meet you, Meera!". A tear-off calendar counts the days; by day 41 the wall is covered edge to edge with copies of the note, and she has written "Hi. It's me again." The notes all fall, there is a moment of true silence, and on day 42 she only writes "The usual, please." and the bubble says "Coming right up, Meera." It ends on a taped card: "Tell it once." It looks like a stop-motion miniature on a real paper-and-chipboard set, lit by warm afternoon light, moving in small held steps. zippr made it with three different last lines to compare. Below is the exact recipe zippr used: the tools, the steps, the settings and the timings. Follow it as closely as you can. Only the parts about my product change.
WHAT IT COSTS
- The code tools in this recipe are free and open source. - zippr made it with Claude (Opus 5.5) on a paid Claude plan. Any AI app that can run code can follow it. - One step was paid: the empty set (a cream paper wall meeting a chipboard floor) is ONE photograph-like picture from Google's Nano Banana 2 image model (gemini-3.1-flash-image, through Vertex AI, at 2K), about $0.10 by usage. Every note, the calendar, the tape, the spring, the bubble and every word are drawn in code on top of it. The landscape cut reuses the same picture, cropped. - The free routes, both real: photograph an empty set of your own (a sheet of cream paper curving down onto a board, lit from one side), or have the wall and floor drawn in code. zippr's code-drawn wall exists and works, but it read as an illustration; the photographed set is what made it look like a real miniature.
STEP 1: ASK ME FIRST
Before you make anything, ask me these questions. Use your question tool if you have one. Otherwise ask them one at a time in the chat. If I skip one, suggest an answer and tell me what you picked. 1. What is your product or business, in a sentence or two? 2. What is the one thing a viewer should take away? (zippr's: "You shouldn't have to tell your AI the same thing every single time.") 3. Who is going to watch it, and where: reels, a website, a talk? 4. Length and shape. zippr's film is 14.67 seconds, portrait 1080x1920 (a landscape 1920x1080 cut exists too, from the same picture). Keep 14.67 s? Portrait, landscape, or both? 5. Your brand colours (hex codes if you have them), and your product's name as it should appear under the last line. 6. The words on screen. zippr's: the calendar "DAY 1" to "DAY 42"; the strip "of explaining myself to my AI." (then "of just asking."); her typed note and her marker additions; the reply "Nice to meet you, Meera!" (then "Coming right up, Meera."); her last note "The usual, please."; the end card; and the name "zippr". Which words are yours? 7. Three endings. zippr made the same film three times with three last lines, to compare: "Tell it once." (the one on the page), "You don't need to learn AI. / AI needs to learn you." (the second line in the accent colour), and "Your AI should know the usual." Give me your three, or one. 8. Your story in zippr's shape: - the person who keeps re-explaining, and what they do (zippr's: Meera runs a small bakery and needs this week's newsletter); - the note they paste in every time, three short rules and the ask (zippr's: "Hi! I run a small bakery." / "Warm tone. No emojis." / "Sign it from Meera." / "Write this week's newsletter."); - what they add in their own hand, day after day, getting shorter-tempered but never pitiful (zippr's: "Please be as brief as possible.", "STILL no emojis.", "It's MEERA. Two e's.", then "Hi. It's me again." on day 41); - the forgetful reply, the same every day (zippr's: "Nice to meet you, Meera!"); - the day it just works, in three or four words, and the reply (zippr's: "The usual, please." and "Coming right up, Meera."). The one who forgets is a generic speech bubble with no name and no logo. Never make my own mascot or product the forgetful one. 9. The set: (a) you have a photo of an empty paper wall meeting a floor (or I photograph one), shot straight on, lit from one side; (b) you want it generated like zippr's with Nano Banana 2 (paid, about $0.10 for one picture at 2K; you run it, or give me access); (c) I draw the wall and floor in code (free; it reads more like an illustration). 10. The colours. zippr's: cream paper, grey-brown chipboard, near-black typewriter ink, one warm amber for her handwriting and the calendar's band, and a black card for the AI's bubble. Put your brand colours on the colour roles in the recipe below, or keep zippr's?
STEP 2: THE RECIPE (exactly how zippr made this film)
Where the method came from The brief: the frustration of telling an app the same thing every single time. Make the repetition itself the joke, visible in one frame; the person is never pitiful (identify, never pity); end on relief, not a pitch. The look is "Paper and cardboard, built and photographed", one of six looks zippr had tried in still pictures: a paper wall, a chipboard floor, warm side light, and one solid object that reads as the answer. Re-telling already lives on paper in real life (the rules block people paste into every request, the sticky note on the monitor), and stop motion's own joke is repetition: the same prop does the same move, with the same sound, every day. Her day-2 addition is a real person's words, verbatim, from a Reddit comment on r/ChatGPT: "please be as brief as possible." The bakery, Meera and her other rules are made up. One Claude (Opus 5.5) agent built it as a first cut for a human editor.
The tools - Claude (Opus 5.5): wrote the storyboard and all the code, and read the stills. - Nano Banana 2 (Google's gemini-3.1-flash-image), through Vertex AI, at 2K, 9:16: the one picture of the empty set. - A web page with one HTML canvas: every note, strip of tape, the calendar, the caption strip, the wooden block, the spring, the bubble, the end card and every word are drawn in JavaScript from seeded noise, and seek(t) draws any frame from the time alone. No animation library, no Math.random, no clock. - Playwright for Python driving headless Chromium: serves the page from a local server, screenshots each step once and pipes it into ffmpeg for every video frame that shows it. The page also writes a cue sheet of every event for the sound. - Python with numpy: every sound, from sines, noise and random clicks, with a fixed seed (1347). There are no recordings. - ffmpeg with libx264 and AAC: joins the frames and the sound. - The fonts, bundled as files: Satoshi (500, 700, 900) for the calendar, the strip, the bubble and the end card; a Courier typewriter face (400, 700) for her typed notes; Caveat (700) for her marker.
The steps, in order 1. The storyboard: the one point, the joke in one clause ("forty-one copies of the same note on her wall, and her AI still says 'Nice to meet you'"), every beat with its time, and every word on screen. 2. The set picture (below), or my photo, or the code-drawn wall. 3. One timing block at the top of the page, counted in STEPS: 12 steps a second, so in a 30 fps film each pose is held for 2 or 3 frames (stop motion "on twos"). The page writes a cue sheet from it, and the sound reads only that. 4. Build every prop once at the start (the notes, tapes, calendar, strip, block, bubbles, end card), then draw each step from the timing alone. 5. Render: each step is screenshotted once and written into ffmpeg's input for every 30 fps frame that shows it. Never write a folder of frames to disk: a first render that did filled the laptop's disk. 6. The sound, from the cue sheet. Mix, join. 7. Pull stills from the rendered file (0.5, 3.4, 6.8, 8.2, 12.2 and 14.2 s) and read each at full size. 8. Render the other two end lines from the same page: one row each, nothing else changes. 9. Check the finished files (below), then export.
The set picture (the paid step; follow this only if I chose (b)) - The model: Nano Banana 2 (Google's gemini-3.1-flash-image), through Vertex AI, 2K, 9:16, seed 1347001, one picture. It cost about $0.10 by usage (Google's price page said "1680 tokens ($0.101) for 2K", read live before the call) and took about 19 seconds. - The prompt, word for word: "A photograph of an empty miniature stop-motion set, shot straight on at eye level with a 50mm lens on a real camera. The back wall is a large sheet of warm cream paper with a fine visible texture and faint fibres. It curves gently down into a floor of unbleached grey-brown chipboard flecked with small dark specks. The seam where the paper wall meets the chipboard floor runs straight and level across the whole frame, about three quarters of the way down the frame. Warm late-afternoon light comes from the upper left, raking softly across the paper so its texture shows, and falls off gently toward the lower right corner. Natural photographic depth: the paper wall is in sharp focus and the nearest strip of floor falls slightly soft. The set is clear and waiting for its props. Palette: cream paper, unbleached chipboard, a hint of warm amber in the light." - Measure the row where the wall meets the floor (zippr's: row 1798 of the picture), then scale the picture to cover the frame with that seam on the film's floor line (y 1470 in portrait). For landscape zippr cropped the same picture around its seam (about 1.25x); a second picture, about $0.10 more, would be sharper. - Look at it at full size: the set must carry no lettering at all.
The look (every value is zippr's) - Stop motion: 12 steps a second. Every step, each prop shifts up to 0.7 px either way and turns up to 0.14 degrees, from a fixed hash of the prop and the step ("boiling"); the exposure breathes by up to 1.75% brighter or darker per step; film grain is one of four full-frame noise frames (128 plus or minus 46), cycled per step, laid over in overlay at 10%. - The miniature look: the top 150 px and everything below y 1545 fade into a 6 px blur. - The props take the set's own light: the picture is shrunk to a tenth, blurred, divided by its brightest 2% and carried down past the seam, then multiplied onto the props only, at 85% strength. So the notes are warmer at the upper left and dimmer toward the lower right, like the wall. - Layout (portrait): floor line y 1470. The calendar hangs from a nail, centred at x 540, top y 192: a chipboard back (#A88C65, 290 x 280 px, 12 px corners) with a page (#F7F1E4) whose top quarter is an amber band with "DAY" in Satoshi 900, cream, 6 px letter spacing, and the day number in Satoshi 900, ink, at 58% of the page's height; a stack of page edges under it that thins as the days pass. The caption strip, torn-edged paper #F6F0E2 with "of explaining myself to my AI." in Satoshi 700, 44 px, ink, taped at both ends, centred at (540, 534), turned -0.8 degrees. Today's note: 740 px wide, centred at x 540, its foot at y 1172. The block and spring: at x 330 on the floor line. - A note: paper with slightly uneven edges, a soft drop shadow (blur 13, 10 px right and 15 down, at 30%, plus a tight one), one strip of masking tape across the top (rgba(224,206,158,0.80), 150 x 42 px, a crinkled edge), paper texture (soft blotches, fibres, fine noise), and a touch of shade at its foot as if it lifts off the wall. Her typed lines: the Courier face at 34 px, line height 48 px, each letter at a slightly different ink strength and height, like a typewriter. Her marker: Caveat 700 at 54 px, amber, tilted slightly, underlined once or twice, writing itself on from left to right over 4 steps. Five papers, one per day of the first four and a mix after: white #F9F6EF; lined #F7F3E8 with blue rules and a red margin; index card #F4ECD9; kraft #CDAE85 (with darker ink #1D160E and specks). Each day's note carries every rule added so far, typed; the newest one is in her hand. - The notes that came before: the first four are pinned by hand around today's note, then the rest fill a jittered grid across the wall, nearest first, smaller (0.5 to 0.74), turned up to 8 degrees either way, never hanging past the floor line. - The AI's reply: a black card speech bubble (#1C1A18, 5 px of darker card #080706 showing below as its thickness, 30 px corners, a tail at 120 px from its left) with the words in Satoshi 700, 44 px, cream #F3ECDD, on a steel coil (9 turns, 20 px radius, a 5 px wire, dark behind, light in front) out of a small wooden block (170 px wide, top #D7AE74, front #B8844B, side #9E6C38, with wood grain). It springs up: the coil's length goes from 18 to 128 px as 1 - e^(-7u) cos(15u), and it rocks 6 x e^(-4.5u) sin(13u) degrees, u in seconds. Exactly the same spring every day. - The end card: a taped paper card #FAF7F0, 900 px wide, centred at (540, 820), turned -0.6 degrees, the line in Satoshi 900 at 104 px (76 px for a two-line ending, the second line in amber), letters -1 px; the name 66 px, Satoshi 900, ink, at y 1215. - The camera is locked off. On day 41 it creeps in 4.5% in steps toward (540, 1060), like a motion-control rig; when everything falls it knocks 7 px down, 4 up, 2 down over three steps. - Nothing that matters sits in the bottom 340 px of the portrait frame: only floor. - The colours are ROLES. My brand colours go onto the roles; zippr's value stays for any role my colours don't fill. - THE WALL: cream paper (in zippr's picture; the code-drawn wall runs #EFE7D6 to #E2D6BF). Mine: my lightest warm neutral. - THE FLOOR: unbleached chipboard (code-drawn: #B09A78 to #8F7A5A, with dark specks). Mine: a darker, duller tone under the wall. - THE NOTES: white, lined, index card and kraft papers. Keep them as real papers; they carry the repetition. - THE INK, typed notes, strip, calendar number and end card: #23201C. Mine: my darkest colour. It must read at phone size on every paper. - HER HAND, the marker additions, the calendar's band and the second end line: amber #D27A22. Mine: my accent colour. It must stand clearly apart from the ink and from every paper, including kraft. - THE FORGETFUL AI, the bubble: black card #1C1A18 with cream words #F3ECDD. Keep it the darkest, most solid thing in the frame, and never my brand colour: it is not my product. - THE WOOD: a warm light-to-mid wood block. Keep it.
zippr's story, beat by beat (14.67 s; 12 steps a second; 30 frames a second; frame = seconds x 30) - 0.00 s: frame 1, no fade: "DAY 1", the strip "of explaining myself to my AI.", and her first note, on white paper, fully readable. The block sits alone on the floor. - 0.92 s (frame 28): the bubble springs up: "Nice to meet you, Meera!" - 2.33 s (frame 70): the calendar page tears off and flies up and to the right in five held poses; "DAY 2". Yesterday's note moves aside on the wall; today's is the same, on lined paper, and at 2.50 s her marker writes "Please be as brief as possible." - 3.08 s (frame 93): the same bubble, the same spring: "Nice to meet you, Meera!" - 3.83 s (frame 115): "DAY 3", an index card; yesterday's addition is now typed, and the new one is in marker: "STILL no emojis." - 4.50 s (frame 135): "Nice to meet you, Meera!" - 5.17 s (frame 155): "DAY 4", kraft paper: "It's MEERA. Two e's." - 5.75 s (frame 173): "Nice to meet you, Meera!" - 6.25 to 7.33 s: the montage. Days 5 to 40 arrive faster and faster (day k at step 75 + 13 x ((k - 4) / 37) to the power 0.75), each with a torn page and a new note filling the wall; the marker lines flash past ("NO EMOJIS.", "Closed SUNDAYS.", "Same bakery!", "M-E-E-R-A.", "Please.", "Like last week.", "Warm. Not cheesy.", "Again: no emojis."). - 7.33 s (frame 220): "DAY 41". The wall is covered edge to edge. Today's note is the longest (every rule so far, typed) and ends in marker: "Hi. It's me again." - 7.92 s (frame 238): "Nice to meet you, Meera!" The punchline. - 8.08 to 9.67 s: hold, while the camera creeps in. - 9.67 s (frame 290): the camera knocks, and every note lets go of the wall at once. Each falls after its own short delay (up to 0.24 s), faster and faster (5,200 px per second squared), drifting sideways and spinning, out of the bottom of the frame. The bubble is gone. - 10.52 to 11.00 s: the bare wall, "DAY 41" still on the calendar. True silence. - 11.00 s (frame 330): the page tears: "DAY 42". 11.08 s: the strip is swapped: "of just asking." - 11.25 s (frame 338): one small note (three quarters as wide): "The usual, please." - 11.83 s (frame 355): the same spring, a different line: "Coming right up, Meera." - 13.17 s: the wall clears. 13.25 s (frame 398): the end card is taped on: "Tell it once." 13.67 s (frame 410): "zippr" under it. Hold to 14.67 s. - Each new note, strip and card lands 4% bigger and 10 px higher for one step, then 1.2% bigger for one more, then settles: the press of the tape. - The landscape cut: the same beats; the calendar at (330, 110), the strip at (312, 452), today's note on the right at x 925, 86% size, the bubble at x 1370, the end card 1150 px wide at (960, 450).
Faults zippr found in its own cut; fix them in mine - The sheets fall through the floor; on a real set they would pile at the foot of the wall. - The props are flat cards (no curl, no thickness except the bubble's). - Nobody tapes anything: the notes just arrive. A hand or a tape dispenser would make each day physical. - In the montage, flying calendar pages that share a step overlap and read as one, and cover the top edge for about a second. - Day 1 is the emptiest frame of the film. - Four "Nice to meet you" beats may be one too many in 14 seconds; three would tighten the middle. - zippr's own verdict: the strongest version is to shoot it for real, with printed notes, masking tape, a tear-off calendar and a spring on a block, using this cut as the animatic.
The sound (no music; paper foley and one recurring voice) - Made in numpy at 44.1 kHz stereo, with a fixed random seed (1347). There is no music and no voice. Every sound comes from the page's cue sheet, so it lands on the step the picture changes. - Each sound is built, scaled to full level, then set at the gain below (in dB), panned, and summed. - Under everything: room tone (noise low-passed at 420 Hz) at -44. It drops out completely for the silence, and comes back at a little over half its level for the relief. - The sounds: - frame 1, the note pressed on: a tape sound, -5. A tape sound is 0.16 s: a short zip as it leaves the roll (noise and random clicks, 1.5 to 7 kHz, the first 90 ms), then a papery thump as it is pressed (a body falling from about 155 to 95 Hz, plus noise 200 Hz to 2.5 kHz); - a calendar page torn: 0.24 s of crackle whose band rises from 0.9 to 4 kHz up to 2.7 to 7 kHz, -9, a little to the right; - each note taped: the tape sound, -7, 0.02 s after the tear; - her marker: two squeaky strokes (a squeak around 2300 Hz wobbling by 500 Hz, and a scratch of noise 1.8 to 5.2 kHz), -16; - THE BOING, the one recurring voice: a wooden knock (820 Hz, 30 ms) and the coil's pitch wobbling as it settles (210 Hz, wobbling by 70 Hz 9.5 times a second and dying away, sliding down 30 Hz a second, with its octave and a quick 2.76x partial), 0.9 s, -4, a little to the left. It is built ONCE and every reply uses the identical samples: the repetition is the joke; - the montage: 36 quick tears (0.12 s) and tapes, each nudged up to 40 ms late at random and panned at random, starting at about -14 and -13 and getting a little louder with every day; - the hold on day 41: a low hum rising from the push to the fall (D2 73.4 Hz, A2 110 Hz, D3 146.8 Hz, and low noise), -13; - everything lets go: a whump (58 Hz with a drop from 98 Hz, 0.5 s), -5, and 34 paper flutters (noise 500 Hz to 3.5 kHz, flapping 14 to 22 times a second, 0.07 to 0.16 s each), bunched at the start of 0.62 s, -20 to -14, panned wide; - the silence: from 10.52 to 11.00 s, nothing at all, not even room tone (a 30 ms fade into it); - day 42: the tear, then the strip swapped with a softer tape, -10, then her note taped, -7; - the relief: the same boing with its upper partials softened, -11, and 0.05 s later the film's one warm chime, C5, E5, G5 and C6 (523.25, 659.25, 783.99 and 1046.5 Hz) rising 0.07 s apart, each with soft 2x and 3x partials, 1.9 s, -7.5; - the end card taped, -7; under the name, a soft pad (G3, D4, G4 and B4: 196, 293.7, 392 and 493.9 Hz), 1.2 s, -14. - The hits and their frames (at 30 fps): replies 28, 93, 135, 173, 238; tears 70, 115, 155, 220, 330; markers 75, 120, 160, 225; the fall 290; the last note 338; the relief 355; the end card 398; the name 410. zippr placed each sound on its step. Start each hit 2 frames BEFORE the frame it belongs to (the ear hears that as exactly on time); the hum is a bed that ENDS on the fall. - Master: a 0.15 s fade out at the end, then the peak set to -2 dBFS. zippr's measured about -17 LUFS integrated with a true peak of -2.5 dBFS; by sections, days 1 to 4 about -19.5 dB RMS, the montage -17.9, the drop -18.4, the relief -21.0, and the silence truly silent. Set mine to -16 LUFS integrated with peaks below -1 dB, keeping the silence silent.
The finish - 1080x1920 (and 1920x1080), 30 fps, 14.67 s, 440 frames (176 steps). Chromium flags --force-color-profile=srgb, --hide-scrollbars, --font-render-hinting=none and --disable-lcd-text, at device scale 1. Encode: libx264, preset slow, crf 18, yuv420p, +faststart, with AAC 192 kbit/s and -shortest. zippr's portrait file came out at about 13 MB.
STEP 3: SWAP IN MY PRODUCT
Keep the paper-and-chipboard set, the held steps, the calendar and the strip as the caption, the wall filling up, the one identical boing, the fall, the true silence, the relief, the timings and the sound design exactly. Change only these: - Meera, her bakery and her newsletter become my customer and the job they keep re-explaining. - Her note and her marker additions become my customer's rules, in their own words. - "Nice to meet you, Meera!" becomes the forgetful reply, and "The usual, please." / "Coming right up, Meera." become my day that just works. - The strip and the end lines become my words (my three endings, one film each), and "zippr" becomes my name. - The set becomes mine (question 9), and my colours go on the colour roles (question 10). The forgetful bubble stays generic.
STEP 4: SHOW ME THE PLAN, THEN WAIT
Write my story in two sentences, then my beat table with times in zippr's format, then my colours on their roles and my three endings. If you can run code, show me 4 stills in the finished look (for example at 0.50 s, 6.80 s, 8.20 s and 14.20 s). Wait for my yes before you build the whole film.
STEP 5: MAKE IT
If you are an AI app that can run code and save files, follow the recipe and give me the MP4 with sound, one per ending. Ask me before installing anything: the three fonts are downloads unless they are already here; if one isn't there, use a similar free geometric sans, typewriter face and marker hand, and tell me. If there is no set picture, draw the wall and floor in code (a vertical cream gradient with paper texture, a chipboard floor with dark specks, and a soft crease of shade where they meet) and tell me. If you can't run code, build it as one self-contained web page that plays in the chat: the set as my picture or a drawn wall, every prop drawn on a canvas from the time in 12-a-second steps, and the sounds made live in the browser. Add a big Play button (browsers only play sound after a tap), a Replay button, a switch for the three endings, and a "Save as video" button if the browser allows. Tell me how to screen-record it with sound on a phone and on a computer.
STEP 6: CHECK IT BEFORE YOU GIVE IT TO ME
- Put one frame from every 0.5 s on a contact sheet and look at it at phone size. Could someone who never saw this message say what the film means from the frames alone, with the sound off? Fix what doesn't read. - Zoom into the set picture: no letter or logo may be anywhere in it. - On the file: it plays start to end; poses change only every 2 or 3 frames; nothing sits in the bottom 340 px of the portrait film; every reply is the identical sound; the silence has no sound at all; each hit sound starts 2 frames before its picture and is clearly audible; the loudness is -16 LUFS and the peaks are below -1 dB. - Then give me the files, one still, and one honest line on anything you couldn't do. Never use copyrighted music.