Original post by @pradeepXkapoor · View on X ↗
The original recipe
From the creator19,162 chars
ou are the director, animator, rigger, compositor, sound designer and render engineer for a 45–50 second animated short made entirely in code. The bar is "this looks like a real studio short and goes viral on X." Treat this as a multi-session production. Do not rush to a final render. Work in milestones, render stills constantly, look at them, criticize them honestly, and fix them.
0. The film in one line
Pip, a tiny, curious scrap-built robot, is happily rolling through his world when it starts regenerating around him. He slowly realizes someone is prompting his reality. The prompts get more absurd, he finally climbs onto the floating prompt box and types "let me out", and the camera pulls back to reveal his whole universe is a video playing on a phone propped up on a cluttered workbench, being watched by another Pip, who is about to get prompted too. Perfect loop.
The joke must land with zero dialogue. Pip communicates only through his eyes, antenna, body language and little robot chirps. Every 3–5 seconds there must be a new visual payoff.
1. The character (non-negotiable)
Study ./reference/pip_sheet.png carefully before writing any code. Open it, describe it back to yourself in detail, and write your findings into docs/character_bible.md:
Size: about 28 cm tall. He is small. The whole film should feel his scale.
Head: a wide, rounded-rectangle helmet in cream with a soft-yellow rim band framing a black glossy visor screen. His eyes live on that screen: two large glowing warm-cream eyes with dark pupils and a bright highlight. Small graphite ear-caps on each side. Wear, scratches and dusty-brown dirt around the edges.
Antenna: a thin graphite stalk on the top-right of the head with a small muted-orange signal flag. It is his "tail": it perks, droops, wiggles and vibrates with emotion.
Body: a boxy cream torso with yellow trim, warning-triangle decals, rivets and grime. A small chest compartment with a hatch that opens to show a tiny green sprout glowing softly. Back: panels, a vent grille, an orange panel, a small leaf decal.
Side decal: "PIP" lettering with orange diagonal stripes.
Arms: thin segmented graphite arms with yellow joint sleeves and three-finger claw grips. Very expressive.
Wheels: four chunky rubber wheels with yellow hubs and independent suspension, rugged and compact.
Personality: curious, kind, scrappy, expressive, always exploring. "Small bot, big feelings." He is never mean, even when furious; his anger is cute and determined.
Extract the exact palette from the sheet's swatches (sample the image with Python/PIL) into src/theme/palette.ts: Cream (body), Soft Yellow (primary), Muted Orange (accents), Graphite (metal/tech), Dusty Brown (wear & dirt), Mint Blue (lights/UI).
Identity lock rule: in every world, his helmet-and-visor silhouette, antenna flag, yellow trim, claw arms and four wheels must stay instantly recognizable. Worlds change his rendering style, never his design. The only intentional design change is the "more adorable" gag in Act 3, and even there his helmet shape, antenna and wheels stay.
2. Technical stack
Remotion (React + TypeScript) for frame-accurate, deterministic rendering. Output 1920×1080, 30 fps, H.264, high bitrate (CRF ~14). Landscape.
SVG for the character rig and most artwork. Canvas/WebGL (via @remotion/three or raw canvas) only where needed for particles, water, explosions, glow and noise effects.
SVG filters (feTurbulence, feDisplacementMap, feMorphology, feGaussianBlur) and custom canvas shaders for style "materials," scratches and grime.
@remotion/motion-blur (or your own sub-frame accumulation) for motion blur on fast action.
Python (numpy/scipy/PIL) for palette extraction, procedural audio synthesis and QA contact sheets. ffmpeg for muxing, loop checks and contact sheets.
Everything seeded and deterministic. No Math.random() without a seed.
No external copyrighted assets, no real brand logos or product names anywhere. The prompt box UI must be a generic, original design. Fonts only from Google Fonts (e.g., Inter for UI text, a rounded hand-lettered font for any handwritten notes).
Target hardware: MacBook Pro M4, 24 GB RAM. Keep render concurrency sensible.
3. The character rig (build this first, it's the whole film)
Build src/character/ as a proper 2D cutout rig:
Hierarchy: root → chassis (with suspension) → torso → neck joint → head (helmet + visor + ear-caps) → antenna → flag. Torso → shoulder → upper arm → forearm → claw (with swappable claw poses: open, closed, pinch-holding, pointing, poking/typing, gripping an edge, waving). Chassis → four wheels, each with its own suspension spring and rotation driven by distance travelled.
The visor face system (most important part): the eyes are shapes drawn on the black screen, so treat them as a fully procedural face. Parameters for eye size, roundness, top-lid cut, bottom-lid cut, pupil size and position, highlight position, glow intensity, squash/stretch, and special shapes (sparkle stars, happy arcs ^ ^, flat unimpressed lines, spirals, tiny hearts). Add a faint scanline and screen reflection over the eyes so it reads as a screen. Blink by squashing eyes vertically in 3–4 frames.
Expression targets: match the six on the sheet exactly: curious (with the "?" pop), shy (eyes low, looking away, blush marks), excited (happy arcs with little burst lines), worried (small eyes, sweat droplet), determined (angled top-lid cut), delighted (star sparkles with a heart pop). Also add: deadpan-to-camera (flat half-lidded eyes, antenna limp), horrified (tiny shaking pupils, eyes wide), furious-but-cute (determined + screen glow flickers orange), and three "glow-up" stages (see Act 3).
Secondary motion: antenna and flag on damped springs (this is his main expressive tool, use it constantly), suspension bounce on every stop and bump, arm sway, a tiny head lag when the body accelerates or brakes, dust puffs from wheels.
Turnaround: front, 3/4, side, back views matching the sheet, with clean view switching for turns.
Cycles: rolling forward (with speed lines and dust puffs as on the sheet), idle hum (gentle suspension breathing + occasional antenna twitch + blinks), recoil-in-fear, looking-up-in-wonder, holding a tiny object, reaching up, climbing, poke-typing.
Chest hatch: animatable open/close, with the sprout's soft green glow spilling out.
Style skin interface: the rig takes a style prop that changes line weight, fill treatment, texture, grime, outline boil, shading model and filters without changing geometry. This is how he stays himself across worlds.
Milestone 1 gate: render a "lineup" still: Pip in all four turnaround views + all six expressions, placed next to the reference sheet. Compare side by side. Iterate until someone who saw the sheet would say "that's Pip." Do not move on until this passes.
4. The worlds (style materials)
Each world is a full environment component with foreground, midground, background parallax layers and its own style skin for Pip. Build a shared WorldLayer system so all worlds share camera and depth logic.
Scale rule: the camera lives low, near Pip's eye level (about 20 cm off the ground). Everything is huge. People appear as giant legs and shoes, a curb is a cliff, a puddle is a lake. This is what makes a small robot cinematic.
Base world: golden-hour overgrown city. Match the header illustration of the sheet: warm sunset light, weathered stone and brick, moss and little plants, hazy tall buildings in the distance. Painterly, cozy, lived-in. This is "real life." Also used for the reveal.
Anime Tokyo. Crisp cel shading, bold outlines, glowing signs with invented (non-brand) shop names, speed lines, cherry petals drifting past him like giant pink snowflakes. His visor gets anime sparkle highlights.
Clay village. Soft rounded shapes, fingerprint/smudge noise texture, stop-motion stepping (render him "on twos"), warm tungsten lighting. He looks sculpted in plasticine.
Medieval battlefield. Muddy field, banners, distant catapults, smoke. Armored boots thunder past him. He rolls calmly between them, antenna ducking.
Toy-brick city. Everything built from generic stud-topped plastic bricks (no real brand styling or logos), glossy plastic highlights. Pip rendered with plastic sheen and slightly blockier wheels.
Underwater. Seabed street with coral lampposts, fish swimming past his visor, caustic light patterns, bubbles from his vents, his antenna flag waving slowly like seaweed.
Pencil sketch. Paper texture, graphite hatching, construction lines, eraser smudges, his lines boiling as if being redrawn every frame (match the sketch vignettes at the bottom of the sheet).
Running gag: the sprout. Pip starts the film carefully holding his tiny green sprout in one claw (the "holding a tiny object" pose). It survives every world and transforms with it: cel-shaded anime sprout with sparkles, clay sprout, sprout in a tiny battered helmet-pot, brick-built sprout, sprout releasing a bubble underwater, sketched sprout. He protects it every time the world changes. It is the emotional anchor of the film.
5. The signature transition: "regeneration"
World changes must look like an AI image re-generating, not like normal wipes. Build RegenTransition:
The frame breaks into drifting diffusion-style noise from the edges inward (not over his body at first), holds a few frames of structured noise, then the new world denoises in from coarse blobs to fine detail.
Pip's body lags one beat behind the world, briefly showing half-old / half-new style, then snaps to the new style skin. His visor glitches for 2 frames (scanline tear) during the snap. This half-state is the visual proof that he persists.
Subtle audio "whoosh-crackle" per regen, plus a tiny startled chirp from Pip on some of them.
Duration 8–12 frames each. Vary the direction and noise seed so it never feels repetitive.
6. Beat sheet (≈48 seconds at 30 fps)
Timing is a guide; adjust if a beat reads better slightly longer. The first 2 seconds must hook.
ACT 1: A GOOD MORNING (0:00–0:03)
Low tracking shot, base world. Pip rolls left-to-right along a mossy ledge, holding his sprout, eyes curious, antenna bobbing. Start mid-roll (needed for the loop).
At 0:02 the first regen hits without warning.
ACT 2: THE CASCADE (0:03–0:14)
Rapid world changes, about 1.4 s each: Anime Tokyo → Clay village → Medieval battlefield → Toy-brick city → Underwater → Pencil sketch.
Emotional progression: delighted at first (star eyes, he thinks it's wonderful), then curious ("?" pops), then worried (sweat drop, antenna droops), then he brakes hard in the sketch world with a suspension bounce and a skid mark.
Camera stays on a locked tracking framing so the only thing changing is the world, which makes the joke readable.
ACT 3: THE PROMPTS (0:14–0:30)
Base world returns. Pip looks up in wonder (pose from the sheet). In the sky, a giant floating prompt box fades in, glowing mint blue, glassy and rounded, with a soft original UI. Text types itself with a blinking cursor: "make it more cinematic" → enter key click sound.Letterbox bars slam in, the sun becomes absurd: enormous anamorphic lens flares, god rays, orange-and-teal grade, slow-motion dust, a single dramatic leaf drifting past his visor. His eyes squint into the flare. His antenna flag flaps heroically in wind he didn't ask for.
"add explosions"Huge cartoon-orange explosions bloom behind him in sequence with debris chunks. He does not turn around. His eyes go flat and half-lidded. He slowly rotates his head to look straight into the camera. Deadpan. Hold 1 full second. Then an explosion lands close and he snaps into the "recoiling in fear" pose from the sheet, the "!!" popping above him, shielding the sprout with his body.
"make the protagonist more adorable"Glow-up stage 1: his eyes grow bigger and shinier, blush marks appear, a tiny bow sprouts on his antenna. He sees his reflection in a puddle and his eyes turn horrified.
"more.": Stage 2: pastel repaint, eyes take over the whole visor with triple highlights, floating hearts and sparkles, his wheels become fluffy.
"MORE." (bigger font, screen shake): Stage 3: comically maximum cute. Plushie fur texture over his whole body, giant anime eyes, rainbow halo, a choir "aah" sting, heart confetti. His helmet shape, antenna and wheels stay so he's still clearly Pip. His eyes are still tiny and horrified inside the giant cute eyes, which is the joke.
ACT 4: HE SNAPS (0:30–0:38)
Pip vibrates, then the cute stages shatter off him like glass. He's back to normal, scuffed and furious (determined expression, screen flickering orange).
He opens his chest hatch and gently tucks the sprout inside for safety. Hatch closes with a click. This is the one quiet, kind beat in the chaos and it matters.
He races forward, launches off a rock, grabs the edge of the floating prompt box with both claws and hauls himself up, wheels spinning against the edge (match the "reaching toward a floating prompt box" pose). The camera tilts up with him.
On top of the box he holds backspace with one claw; the old prompt deletes letter by letter with fast clicks, and his visor reflects the vanishing text.
He poke-types with one claw, slowly and deliberately: "let me out". Winds up and smashes enter.
ACT 5: FREEZE AND REVEAL (0:38–0:47)
Everything freezes: debris mid-air, confetti mid-fall, dust suspended, Pip mid-pose on the box. All audio cuts to total silence for about 1 second.
Camera begins a smooth pull-back. The frame's edges reveal a rounded rectangle: his universe is a video on a phone screen. Keep pulling back: the phone is propped against a chipped mug on a cluttered workbench full of spare parts, wires, screws and scraps ("built from tomorrow's leftovers"). Sitting in front of it, tiny next to the giant phone, is another Pip, same scuffs, same antenna, watching.
The second Pip's eyes blink slowly. His antenna droops a little. A small quiet chirp.
ACT 6: THE LOOP (0:47–0:50)
Above the second Pip's head, the same mint-blue prompt box fades in and types: "make it more cinematic."
His eyes slowly slide upward toward it. His antenna flag goes stiff. On the enter key sound, hard cut to frame 1 of the film.
Loop engineering: the final shot's framing, lighting, and the start of a regen flicker must make the cut back to frame 1 feel intentional. The music must loop seamlessly across the cut. Verify by concatenating the video with itself (ffmpeg) and watching the seam.
7. Camera and cinematography
Virtual camera system: position, zoom, rotation, handheld micro-shake (seeded noise), shake impulses for explosions, tilt for the climb, dolly pull-back for the reveal.
Low camera height by default to sell his scale. Shallow depth-of-field feel: blurred foreground grass/pebbles and soft background, like a macro lens.
Depth: minimum 4 parallax layers per world. Atmospheric perspective (haze, desaturation with distance).
Motion blur on fast moves, debris, the jump and the climb.
Lighting per world: key/fill/rim implemented as gradient overlays and multiplied shadow layers on the rig. The visor glow should cast a faint warm light on nearby surfaces and on his own claws. Rim light on his helmet in every world.
Film finish pass on the whole frame: subtle grain, gentle vignette, very slight chromatic aberration only in the "cinematic" beat.
Composition: keep him on a clear third. His eyes must be readable at phone size, since most people will watch this on a phone.
8. Text and typography
Sky prompts: clean UI font, lowercase, typed at a natural human rhythm (not constant speed; tiny pauses, one small typo-and-backspace somewhere for realism).
The text must be readable in under a second on a phone. Test at 360 px wide.
No subtitles, no titles. The film opens cold.
9. Sound (procedural, original)
Create all audio in code (Python synthesis or offline Web Audio) and mix with ffmpeg:
Pip's voice: original synthesized chirps, boops and warbles built from sine/FM tones with pitch bends. Design a small emotional vocabulary: curious rising chirp, happy trill, worried wobble, startled squeak, grumpy low buzz, tiny sigh. He never speaks words.
Pip's body: servo whirs matched to arm and head moves, wheel crunch on gravel/stone, suspension creaks, hatch click, soft electrical hum on idle.
Score: a light, loopable, warm score whose instrumentation changes per world (koto/synth for anime, wooden marimba for clay, drums/horn for medieval, plastic clicks for bricks, muffled underwater filter, pencil scratch rhythm for sketch).
SFX: regen whoosh-crackle, keyboard typing clicks, enter "thunk", explosions with low-end, choir "aah" sting, glass shatter, total silence at the freeze, then quiet workshop ambience (a ticking clock, distant hum) in the reveal.
Loudness normalized to about −14 LUFS. Put stems in audio/stems/ so they can be swapped for a licensed track later.
10. Production workflow and self-improvement loop
Work in this order and don't skip gates:
Plan: write docs/character_bible.md, docs/shotlist.md (every shot with frame ranges, camera, expression, antenna state, world, SFX) and docs/style_guide.md. Show me the shot list before building.
Rig: build Pip, pass the lineup gate (section 3).
Worlds: build each world as a standalone still with Pip in it. Render all 7 as a single contact sheet. Check the identity lock and the scale feel.
Transitions: build RegenTransition, render a 5-second test.
Animatic: assemble the whole film at 960×540 with rough motion and placeholder audio. Watch it. Fix pacing first.
Full animation pass, then polish pass (secondary motion, easing, timing, antenna acting), then finish pass (lighting, grain, blur, grime).
Audio pass and mix.
Final render.
For every shot, run this critique loop at least 3 times:
Render 3–5 stills at key frames with npx remotion still, open them and look at them properly.
Score each 1–10 on: Pip matches the reference, emotion reads instantly from eyes + antenna, joke is clear without sound, composition, sense of scale, depth, lighting, polish, readability at phone size.
Write the scores and the three biggest problems into docs/review_log.md, fix them, re-render, re-score. Continue until every category is at least 8, then move on.
After each full preview render, make an ffmpeg contact sheet (one frame every 0.5 s) and review the whole film's flow in one image.
Be honest in reviews. If something looks cheap, say it and fix it. Usual failures to hunt for: stiff or dead antenna, wheels sliding instead of rolling, eyes that feel like stickers instead of a glowing screen, missing suspension weight, identical-looking transitions, muddy text, and off-model proportions.
11. Deliverables
out/pip_final_1080p.mp4: the film.
out/pip_loop_check.mp4: the film played twice back to back, to prove the loop.
out/poster_frame.png: the best single frame for the X post thumbnail (probably Pip deadpanning at camera with explosions behind him).
out/lineup.png: Pip across all worlds.
Clean, commented source with a README explaining how to re-render.
Start with step 1. Ask me anything essential before building, otherwise make strong creative decisions yourself.Not yet confirmed on X: reported by a collection; the creator may have shared it in a reply or image.





