Scene description → 1-hour ambient loop video
Claude first asks you to describe the scene (a line is enough; a reference image helps). It generates the image (you pick from 4), analyses the scene, animates only what should move (snow, fire, steam…), builds a seamless 10-second loop, composes original piano music with quiet ambience, and delivers a one-hour 1080p video plus the audio and the silent loop.
What you get
1 · Final video
<id>_1hr_1080p24.mp4
3600.000 s · 1920×1080 · 24 fps · H.264 + AAC · about 1.1 GB. This is the file you upload.
2 · Full-length audio
<id>_audio_60min.m4a
Music + ambience, kept separate so the audio can be replaced later. About 110 MB.
3 · Silent loop
<id>_loop10s_1080p24_silent.mp4
The seamless 10-second picture master (2.8 MB). Re-mux with any audio for a new long video.
Start a new job
In this project with Claude Code, paste this; Claude will then ask you to describe the scene:
Run wiki/SPEC.md. Start by asking me for the scene description (and what should move, and the sound). I want the one-hour video as the output.
Create the next Video-<Shortname><n> folder. Get my approval on the image, what animates, and the audio sample
before any long render. Use draw-things-cli. Check every music piece for harshness, give me the listening pack,
then deliver only the three final files and clean up.
The stages
Phase 1, approvals before any long render: stages 1–3 (image, what animates, audio). Phase 2, final review: the loop and the listening pack.
Claude decides · Script renders and measures · You sign off. Every stage has a numeric gate.
0Preflight
ScriptClaudeModels, disk, nothing heavy running; new folder Video-<Shortname><n>. Validate draw-things-cli for video (not yet proven).
1Scene description → image
ClaudeScriptApproval 1Claude plans a scene that animates well and writes the prompt in your style; Z Image Turbo via draw-things-cli makes 4 candidates; you pick one.
2What animates
ClaudeApproval 2A plain-words list (moves / frozen) plus the mask overlay picture; polygons on real edges.
3Audio sample
ScriptApproval 3Three 30-second styles, each checked for harshness; you pick; then the ambience mixed 14 dB under.
4Video prompt
ClaudeStrict "cinemagraph" template. Never mention the camera.
5Drift probe
ScriptClaude3 seeds × 121 frames. Measure camera drift and whether the effects really move.
6Two clips A & B
Script145 frames each at 1024×576 from the two best seeds. Same image, so they can't drift apart.
7Loop build
ScriptReview 1A → B → A with 1 s crossfades = 240 frames (10 s). AI only inside masks; the rest is the original image.
8Full hour of audio
ScriptReview 226 piano pieces, each checked for screech, harshness, scratch, crackle, clicks, clipping and dropouts and regenerated if bad. Then crossfade, level, ambience, final check, and a listening pack for you.
9Mux, deliver, clean up
ClaudeAudio onto 360 loops (86,400 frames); keep the three files; delete scratch; write the run log; rebuild these pages; commit.
Rules that make it work
- Only what should move comes from AI. Everything else is the original image, pixel-locked by a mask.
- Build the loop, don't generate it. Two clips from the same image, chained A → B → A.
- Measure the camera first. Models zoom and drift; check on 3 seeds before rendering anything final.
- Describe a photograph, not a scene. "One single locked photograph… the only motion is…". Words like "the camera never zooms" made drift worse.
- One heavy model at a time on the 64 GB Mac (video, music, LLMs never together).
- Numbers gate every stage; Claude can't hear or watch, so you make the approvals and reviews.
- Approve first, render later: image, what animates and the audio style are approved before any long render.
- Soft to the ear, verified: every music piece is machine-checked and the hour comes with a listening pack.
- Design the image for animation: a view out through a doorway or window, with the moving things on soft backgrounds, is easy to mask.
Reference results (an earlier run)
| Check | Result | Limit |
|---|---|---|
| Camera drift (both clips) | 0.1 px | ≤ 0.7 px |
| Seam ratio (frame 239 → 0) | 0.97 | ≤ 1.3 |
| Locked pixels identical to the source | yes | yes |
| Brightness steadiness (video) | 0.16 | ≤ 1.0 |
| Snow moving down / steam moving up | 97–98 % / 92–94 % | ≥ 65 % / ≥ 60 % |
| Final video | 3600.000 s, 86,400 frames, 1.1 GB | exact |
| Audio | −22.5 LUFS, peak 0.67, no silent stretch | ≈ −22 LUFS |
| Your review | loop point not visible; fire, steam, snow OK | — |
Machine time on the M5 Max for the happy path is about 35–40 minutes (including the image step) plus your listening time; the reference run took longer because of the camera-drift investigation.
Read next
Spec
The full contract, stages, parameters, decision table.
Runbook
Exact commands for every stage.
Lessons
Everything that failed and the rule it produced.
Music
Local music + ambience recipe.
Models
Where models live; the no-duplicate rule.
Posting plan
Zen Hour Music: 12-week calendar, series, upload checklist.