Golden Hour is a one-minute short film made from twelve still pictures on one DGX Spark. It is Recipe 1 from our lab notes, run end to end for the first time, with every stage timed. Daisy Lane and Ama Boateng, two AI characters from the LEJ cast, drive Daisy's yellow convertible down the coast to catch the sunset and film it. Nobody filmed anything. Rated G.
The recipe is five steps: write a shot list, make one still per shot, animate each still, add sound, cut it together. Below is each step with what it cost on this box, what broke, and the settings, so you can copy it.
How we tested
One film, built the way the recipe says, and nothing reused from other tests:
- Shot list: 12 shots, 5 seconds each, one beat per shot (
shot-list.json, linked as the workflow file below). Three are hero shots that carry the film: 01 (the convertible on the coast road), 09 (Daisy and Ama on the sand) and 11 (Daisy's close-up). - Stills: every shot's still made twice, with Z-Image Turbo and with FLUX.2 klein 4B, from the same prompt and seed. We kept the better one per shot.
- Motion: every still animated with LTX 2.5 image-to-video at seed 42; the six shots with a character in them got a second take at seed 1234. The three hero shots also got a Wan 2.2 image-to-video take from the same still and motion line.
- Sound: LTX's own audio track where it helps, an LTX foley pass on the silent Wan hero takes, and an instrumental bed from ElevenLabs Music.
- Cut: a Remotion
ShortFilmtemplate: title card, twelve shots with 0.5 s cross-fades, end card, music bed.
Every render ran through the lab's one GPU queue, one job at a time. Each has its own test folder (tests/150 to tests/155) with the exact settings, the wall time, the lowest free memory and a 12-frame contact sheet. Wall times are measured by a script that checks for completion every 3 seconds, so each one can be up to about 3 seconds long.
How we picked. Stills: whichever matched the character line, kept the convertible's roof down and had no extra limbs or broken letters; ties went to Z-Image. Takes: from the contact sheets, the take with the steadier face and fewer melting details; ties went to LTX at seed 42. Z-Image won nine stills, klein three (shots 08 to 10). LTX at seed 42 won seven shots, seed 1234 two (03 and 07), and Wan all three hero shots (01, 09 and 11).
Keeping characters on-model. Our other post on this (keeping an AI host on-model with reference images) animates one fixed portrait in one room. This film does the opposite: every shot gets a brand-new still from text, in a new place and light. The only thing holding Daisy and Ama together is a character line pasted word for word into every still prompt, taken from the cast sheet:
Daisy, a 22-year-old white woman with a light sun-kissed tan and light freckles, long loose honey-blonde beachy waves, small gold hoop earrings and a delicate gold flower pendant necklace, wearing a white fitted crop top with the letters "LEJ" in bold hot-pink block letters across the chest and high-waisted light-wash denim jeans
Ama, a 24-year-old Ghanaian American Black woman with dark brown skin and short black tightly coiled natural hair, small gold hoop earrings, wearing an open faded olive-green utility overshirt with the sleeves rolled over a plain white crew-neck tee, matte-black over-ear headphones resting around her neck
plus one style line for every shot: "Cinematic 35mm film photograph, warm golden-hour sunlight, soft lens flare, Southern California coast, natural colors, gentle film grain, shallow depth of field, full-frame image filling the entire frame, no text overlays." It held. Across every location in the film and two still models, Daisy keeps her blonde waves, freckles, pendant and pink LEJ top, and Ama her coily hair, olive overshirt and headphones. The drift that shows comes later, in motion: LTX changes faces in the last second of a few takes.
The shots
| Shot | Still | Take used | What the sheets show |
|---|---|---|---|
| 01 Establishing: Buttercup on the coast road | Z-Image | Wan | Wan used: the camera pushes in on the car as it comes up the road; badge blurred. LTX drove the car out of frame after about 3 s. |
| 02 Daisy at the wheel | Z-Image | LTX seed 42 | Laugh and glance land; both seeds drift: Daisy reads older by the last second, and the LEJ letters smear when her arm crosses them. |
| 03 Ama spots the sun | Z-Image | LTX seed 1234 | Seed 1234 lands all three beats (looks up, smiles, points ahead); seed 42 lifts the camera to her face instead of pointing. |
| 04 Racing the sun | Z-Image | LTX seed 42 | Steady: palms pass, the low sun stays ahead. |
| 05 Arrival at the beach | Z-Image | LTX seed 42 | The car rolls a few feet and stops; dust in the light. Clean. |
| 06 Daisy runs for the water | Z-Image | LTX seed 42 | Seed 42 walks toward camera and laughs, LEJ steady; seed 1234 turns her away and the tote grows. |
| 07 Ama sets the shot | Z-Image | LTX seed 1234 | Seed 1234: leans in, adjusts the tripod, smiles. Seed 42: the tripod drifts to a new spot mid-shot. |
| 08 The camera sees it | klein | LTX seed 42 | Clean push-in to the camera's glowing screen. |
| 09 Made it | klein | Wan | Wan and LTX seed 1234 both land the lean and the point; Wan holds both faces steadiest. LTX seed 42 lands the point only at the end. |
| 10 The sun touches the water | klein | LTX seed 42 | Waves slide over the wet sand; the two silhouettes drift a little. |
| 11 Daisy's look | Z-Image | Wan | Wan holds her face, pendant and LEJ letters steady. Both LTX seeds push in until the frame crops the letters and her face changes. |
| 12 Blue hour, heading home | Z-Image | LTX seed 42 | The two figures walk toward the car; headlights glow. Clean. |
The interactive player below the videos shows every shot's still next to each take made from it, and the side-by-side viewer above plays the hero shots' takes in sync.
Setup and gotchas
- Make stills at the video size. We made every still at 1280x704, the size LTX and Wan render at, so neither model crops or rescales the start frame.
- Check every still before you animate it. The prompt said the convertible's soft top was folded down in all six car shots. FLUX.2 klein put it up in four of its six (shots 01 to 04) and Z-Image in one of its six (shot 12). A still costs 3 to 9 seconds; a wrong still animated costs a minute or more.
- Logo letters leak to the back. On shot 09, a rear view, both models printed "LEJ" across the back of Daisy's top, though the prompt says across the chest. Z-Image did the same on no other shot; klein also did it on shot 06. Keep chest text out of shots from behind, or accept it.
- Ignored framing. Z-Image drew shot 06 with Daisy walking toward the camera, where the prompt asked for a shot from behind. We kept the still and rewrote the motion line to match it: an i2v motion prompt that fights the still loses.
- LTX makes audio; Wan does not. LTX 2.5 writes an audio track into every clip. Wan 2.2 clips are silent and 16 fps; we ran RIFE x2 (to 32 fps) on each before the edit. We then ran an LTX foley pass on two of the Wan takes (shots 01 and 09): the video is frozen and LTX writes only the sound, with voices and music in the negative prompt. It took 24 to 30 seconds a shot. ElevenLabs speech-to-text heard no words in either track, but tagged both as an "outro jingle", so LTX made music-like sound anyway. Both play low under the music bed in the film. Shot 11 has no foley.
- Mute clip audio when a character is on screen. On Nov 1 the lab found LTX's generated audio can include voices when a person is in frame (lab notes, WORKFLOWS.md). In the film, only shots 01, 08 and 10, where nobody is close to the camera, keep their generated audio, low under the music.
- Don't name a real product in a prompt. We asked for a "Beetle-style convertible", and the car shots came back with a real VW badge on the hood or trunk. We blurred it out of the film and the stills. Describe the shape (round, yellow, two-door convertible) instead.
- One job at a time. The Spark's GPU and CPU share one 121 GB memory pool and freeze when it runs out; every render here went through one queue and a lock. See running video gen in 128 GB of unified memory.
Settings
| Stage | Model and file | Settings |
|---|---|---|
| Still A | Z-Image Turbo bf16 (z_image_turbo_bf16, Qwen3 4B text encoder) | 1280x704, 8 steps, res_multistep, CFG 1.0, shift 3, seed 42 |
| Still B | FLUX.2 klein 4B distilled fp8 (flux-2-klein-4b-fp8) | 1280x704, 4 steps, euler, CFG 1.0, seed 42 |
| Motion | LTX 2.5 22B distilled int8 (ltx-2.5-22b-distilled-transformer-comfy-int8-convrot) | 121 frames (5.04 s) at 24 fps, 1280x704; two stages (8 steps at 640x352, 2x latent upscale, 3 steps); image strength 1.0; euler_ancestral; CFG 1.0; seeds 42 and 1234 |
| Alternate motion | Wan 2.2 I2V A14B fp8 high + low, lightx2v 4-step LoRA | 81 frames (5.06 s) at 16 fps, 1280x704, 4 steps (2 high, 2 low), euler, CFG 1.0, shift 5, seed 42 |
| Frame rate | RIFE v4.26 | x2, 16 to 32 fps, on each Wan take |
| Foley | LTX 2.5 audio branch, video frozen | Wan take conformed to 24 fps, 121 frames; negative "speech, talking, voices, singing, vocals, laughter, music"; seed 42 |
| Upscale (planned) | SeedVR2 3B int8 | 1.5x (1280x704 to 1920x1056), chunks of 21 frames, overlap 1 |
| Music | ElevenLabs Music (/v1/music, instrumental) | 66 s, loudness-normalized to -18 LUFS |
| Edit | Remotion ShortFilm | 1920x1080, 30 fps, 150 frames per shot, 15-frame cross-fades, H.264 |
All graphs are ComfyUI 0.43 core nodes; the exact API graph for every render is in its test folder.
Speed and memory
| Stage | Runs | Wall per run | Total | Lowest free memory |
|---|---|---|---|---|
| Z-Image Turbo still | 12 | 9.0 s (first 18.0 s) | 1.9 min | 42 GB |
| FLUX.2 klein 4B still | 12 | 3.0 s (first 6.0 s) | 0.7 min | 61 GB |
| LTX 2.5 i2v | 18 | 78.1 s (first 111.8 s) | 24.1 min | 14 GB |
| Wan 2.2 i2v | 3 | 324.2 s (318.4 to 348.3 s) | 16.5 min | 25 GB |
| RIFE x2 (Wan take) | 3 | 6.0 s | 0.3 min | 41 GB |
| LTX 2.5 foley | 2 | 30.0 s | 0.9 min | 29 GB |
All stages: 2667.8 s of GPU wall time (44.5 min), summed from timing.json in each test folder.
Memory figures are GiB of free memory (MemAvailable).
Wall time is from submit to finished file, including model loading where the first take of a family paid for it (the "first" figures). The film's 44.5 minutes cover every take, kept or rejected, and the two foley passes. The two hosts in the instructional took another 969.5 s of LTX image-plus-audio renders for 53.6 s of speech.
For scale, the lab's Nov 1 baselines on the same box: LTX 2.5 i2v 78 s for a 5 s shot, Wan 2.2 i2v 336 s including the load of both 14B experts (WORKFLOWS.md).
What it costs, and what I'd do differently
The film cost 44.5 minutes of GPU time on the Spark, including every rejected take. LTX was 24.1 of them, the three Wan takes 16.5, the stills 2.6 and the two foley passes 0.9. A planned SeedVR2 upscale of the hero shots did not fit before the queue's cutoff, so the hero shots are 1280x704, scaled to 1080p in the edit. Hosted APIs: ElevenLabs for the voices, the music bed and the speech-to-text check.
Next time: write the character line first and test it on one still. Check every still for what the prompt already asked for, like the roof, before you spend GPU on it. Keep chest lettering out of rear views. And spend Wan's time only where the sheets show LTX struggling.
The instructional above is hosted by Daisy Lane and Ama Boateng, AI hosts with AI voices (ElevenLabs). Their lip-sync was made with LTX 2.5 from a still and the voice track; it's loose at pauses (mouths closed at 4 of 19 pauses), so the edit cuts away to the film over every pause longer than half a second.