Blender · MCP · Seedance 2.5
Stop paying a model to guesswhat you could have built.
A generative render is the expensive step and the least repeatable one. Describe a camera move in words and you get a different move every take. Build it in Blender as untextured grey geometry — a clay pass — and Seedance reads the structure instead of inventing it. The finished pixels are still the model's. The decisions are yours.
One 12s take at 720p
$3.12
Priced with the same token model as the Ad Lab.
Landing it by trial and error
$12.48
Four takes is a modest estimate for arriving at a specific camera move through prompt wording alone.
Difference
$9.36
Per shot. A clay re-render costs electricity, so the iteration moves to the free layer and the paid one runs once.
The saving is the smaller half of the argument. The larger half is that the clay pass makes the shot repeatable — the same camera move, the same blocking, the same beat timing on every regeneration — which is what lets a concept survive review notes instead of being re-rolled.
What moves upstream
Every row is a decision you are otherwise paying the model to make, differently, on every take.
| Decision | Left to the prompt | Settled in clay |
|---|---|---|
| Camera move | Described in words, re-rolled every take. Two generations of the same prompt give two different moves. | Keyframed once. Identical on every regeneration, and editable in two lines. |
| Framing and lens | Approximated from adjectives. Perspective compression is whatever the model felt like. | A real sensor and a real focal length. The model reads the perspective rather than guessing it. |
| Blocking and timing | Three actions in one sentence produces omissions, not precision. | Keyframes. The beat lands on the frame you put it on. |
| Occlusion order | Ambiguous overlap resolves randomly, differently each run. | Depth is explicit in the geometry, so it resolves the same way every time. |
| Light direction | 'Warm morning light' is a mood, not a direction. | One key with a real angle. The model infers its own lighting from the shadow it can see. |
Two lanes, never mixed
Confusing these is the single most common way the workflow fails. If you find yourself wanting the clay pass to be the right brand yellow, you have merged them.
The clay control pass
Video · one clip per shotUntextured grey geometry with flat ID colours on the subjects you intend to map. The model reads structure from it and invents nothing about the look.
Carries
- Camera path, lens and framing
- Blocking and motion paths
- Timing and shot-size transitions
- Occlusion order — who passes in front of whom
- Ground contact and light direction
Never
- Brand colour
- Textures and final materials
- Typography or logos of any kind
- Atmosphere and style
Look references
Stills · separate filesPhotographs, brand assets or Blender renders — never the same file as the clay. The prompt binds each reference to its job explicitly.
Carries
- Brand colour and material character
- Finish, sheen, surface behaviour
- Lighting mood and atmosphere
- Product label detail
Never
- Camera movement
- Blocking or timing
- Anything structural
How the build runs
Six phases through the Blender MCP connection. Every call runs in a fresh Python namespace, so the scene lives in a script file rather than in a conversation — which matters because the clay pass gets re-rendered many times.
Probe
Small throwaway calls to learn the environment. The Blender API changes between versions and training data is not authoritative about it.
Confirm
Delivery aspect, shot structure, proxy-to-subject mapping, lens per shot, and what gets composited after rather than generated.
Script
One self-contained .py file. Every MCP call runs in a fresh namespace, so a scene built through chat cannot be rebuilt — and this pass gets re-rendered many times.
Verify
Render checkpoint frames and look at them. A script exiting cleanly is not evidence the render is right.
Package
One folder per shot, named so upload order matches the @Video 1 / @Image 1 indices the prompt refers to.
Generate
Run Seedance, review, and route each failure to the layer that owns it.
Clay pass checklist
Run against a real frame. A script exiting cleanly is not evidence the render is right — the classic failure returns status: ok while the bowl is a sealed disc and the lid floats detached in space.
- Aspect ratio matches the delivery aspect exactly
- Frame rate is 24
- Every mapped subject is its assigned ID colour, and nothing else shares it
- Every subject has a visible contact shadow
- Silhouettes stay separable at every beat
- No text, logos or numbers anywhere in frame
- No axes, grids, gizmos, frustums or path curves
- Nothing clipped to white, nothing crushed to black
- Ground plane extends past frame at every camera angle
- One clear light direction, consistent across the shot
- Implied speeds are physically sane
- Frame 1 is a real composition, not a lead-in
- Clip is under 30 seconds — under 10 is better
Limits worth knowing before you build
Documented as of August 2026. Verify against the live surface before a paid run — the consumer app, the API and resellers expose different subsets.
- References per generation
- 50 total — 30 images, 10 videos, 10 audio
- Reference video duration
- 30s across all clips
- Clay render size
- 1280×720 or 1080×1080 — above 720p buys nothing
- Frame rate
- 24 fps, set in Blender, not fixed afterwards
- Output length
- 4–30s in one pass
- Native resolution
- 480p and 720p — anything higher is a provider upscale
Route the failure to the layer that owns it
The most expensive mistake in the loop is fixing a Blender problem with prompt edits, or a prompt problem with re-renders. Change one variable at a time: hold the clay still while iterating the prompt, then hold the prompt still while iterating the clay.
| What you see | Layer | Fix |
|---|---|---|
| Camera move is wrong | Blender | Re-key the camera, re-render the clay |
| Subject in the wrong place at the wrong time | Blender | Re-block, re-render |
| Motion reads too fast or too slow | Blender | Retime against the m/s table |
| Framing is off | Blender | Adjust lens or position — not the prompt |
| Grey plastic or empty void leaking in | Prompt | Strengthen the exclusion block |
| Proxy read literally — the capsule stays a capsule | Both | Add the mapping sentence, and give the proxy real proportions |
| Wrong colour, material or mood | Look refs | Better reference still, tighter style sentence |
| Identity drifts mid-clip | Prompt | More references of that subject, or a shorter clip |
| Garbled text | Neither | Remove it from the generation and composite it after |
Write the prompt that goes with the clay
The clay carries structure; the prompt has to say what each upload is for and what must not be inherited from it. Fill in the shot and it assembles the four-layer prompt — including the exclusion block, which is the part people skip and then wonder why the result is grey plastic people in an empty void.
One flat ID colour per subject you intend to name in the prompt. Everything else stays neutral grey.
Consecutive, non-overlapping. One state change per range, with a visible end state.
1 thing to fix before you spend credits
- No key light direction. Shadow direction and length are how the model builds its own lighting. Flat ambient gives it nothing to work from.
The clay is half of it. The recipe is the other half.
Once the structure is settled, the concept still has to be written — look, beats, overlay and sound. That is what the prompt builder and the Ad Lab are for.