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

ScriptClaude

Models, disk, nothing heavy running; new folder Video-<Shortname><n>. Validate draw-things-cli for video (not yet proven).

1Scene description → image

ClaudeScriptApproval 1

Claude 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.

Gate: you pick an image whose moving parts can be masked on real edges

2What animates

ClaudeApproval 2

A plain-words list (moves / frozen) plus the mask overlay picture; polygons on real edges.

Gate: you approve the list and the overlay

3Audio sample

ScriptApproval 3

Three 30-second styles, each checked for harshness; you pick; then the ambience mixed 14 dB under.

Gate: sample passes the check and you approve style and ambience level

4Video prompt

Claude

Strict "cinemagraph" template. Never mention the camera.

5Drift probe

ScriptClaude

3 seeds × 121 frames. Measure camera drift and whether the effects really move.

Gate: drift ≤ 0.7 px on ≥ 2 seeds · snow ↓ ≥ 65 % · steam ↑ ≥ 60 %

6Two clips A & B

Script

145 frames each at 1024×576 from the two best seeds. Same image, so they can't drift apart.

7Loop build

ScriptReview 1

A → B → A with 1 s crossfades = 240 frames (10 s). AI only inside masks; the rest is the original image.

Gate: seam ratio ≤ 1.3 · locked pixels identical · brightness std ≤ 1.0 · you can't see the loop point

8Full hour of audio

ScriptReview 2

26 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.

Gate: 0 harsh events · 3600.000 s · ≈ −22.5 LUFS · you confirm the pack sounds pleasant

9Mux, deliver, clean up

Claude

Audio 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

  1. Only what should move comes from AI. Everything else is the original image, pixel-locked by a mask.
  2. Build the loop, don't generate it. Two clips from the same image, chained A → B → A.
  3. Measure the camera first. Models zoom and drift; check on 3 seeds before rendering anything final.
  4. Describe a photograph, not a scene. "One single locked photograph… the only motion is…". Words like "the camera never zooms" made drift worse.
  5. One heavy model at a time on the 64 GB Mac (video, music, LLMs never together).
  6. Numbers gate every stage; Claude can't hear or watch, so you make the approvals and reviews.
  7. Approve first, render later: image, what animates and the audio style are approved before any long render.
  8. Soft to the ear, verified: every music piece is machine-checked and the hour comes with a listening pack.
  9. 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)

CheckResultLimit
Camera drift (both clips)0.1 px≤ 0.7 px
Seam ratio (frame 239 → 0)0.97≤ 1.3
Locked pixels identical to the sourceyesyes
Brightness steadiness (video)0.16≤ 1.0
Snow moving down / steam moving up97–98 % / 92–94 %≥ 65 % / ≥ 60 %
Final video3600.000 s, 86,400 frames, 1.1 GBexact
Audio−22.5 LUFS, peak 0.67, no silent stretch≈ −22 LUFS
Your reviewloop 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.