Ad Recast
Same ad, different person — recast the presenter, keep every shot, cut, caption, and the original audio.
Ad Recast puts a different person into a video ad that already works. Wire in the source clip and a photo of the new person, and you get the same ad back — same shots, same cuts, same camera moves, same product blocking, same captions — with only the presenter’s identity replaced and the source clip’s original audio kept.
Under the hood it runs Seedance 2.5 in its video-edit mode. That mode has no switch or dropdown — the model decides it’s editing (rather than generating) from the prompt itself, which is why the node is built around a lock-list prompt: an explicit enumeration of everything to preserve, with the single change scoped at the end. The node pins the edit-mode API settings for you (adaptive aspect ratio, output length follows the source, silent render with the original track muxed back on).
| Inputs | video — the source ad · talent_image — photo of the new person · prompt — a lock-list prompt from Video Analyzer, an LLM, or a Text node (optional) |
| Outputs | video |
| Params | model (Seedance 2.5 — Ad Recast) · prompt (the lock list) · resolution (480p / 720p / 1080p) · keep_audio (on / off) · approved (see the approval gate) |
| Output frame rate | 24 fps regardless of source. Cuts still land on time; the analyzer warns before you spend and the report notes it after. |
The lock-list prompt
Section titled “The lock-list prompt”The prompt box comes pre-filled with a template that locks everything and scopes one change: replace the presenter with the person from the reference image. Reading and adjusting this prompt is your approval step — it’s the contract for what the model may and may not touch, and the render is billed, so read it before you hit Recast.
There are three ways to fill the box with a lock list that names the actual cuts, shots, beats, and captions of your clip instead of the generic template:
- Wire a Video Analyzer into the
promptinput. The box mirrors the analyzer’s prompt and the lock-list panel appears above it in compact form. - Compose from ad — the button next to the prompt label runs the same analyzer for you and writes the prompt into the box. It is the one-click shortcut when you don’t need the analysis anywhere else. It is disabled while a prompt is wired, because the analyzer upstream owns the text.
- Write it yourself, or wire an LLM or Text node.
Wired prompt vs the box
Section titled “Wired prompt vs the box”When a prompt is wired, the box shows a banner saying where the lock list comes from. Both the wire and the box stay live, and the rule for which one is sent is:
- An edited box wins. The moment you type in the box, the banner flips to “Local edits override …” and your text is what gets sent. The box is the approval step, so an edit has to beat the wire.
- An untouched template yields to the wire. If the box still holds the stock template (this version’s or an earlier one), the wired lock list is sent instead. A template nobody read must never beat a real lock list.
- Reset drops your local edits and follows the wire again.
The analyzer’s gate-1 report, everything above the --- RECAST PROMPT ---
line on the wire, is never sent; only the prompt below it goes to the
model. The result’s metadata records which source won as prompt_source
(local, wired, or default).
The approval gate
Section titled “The approval gate”A wired lock list must be read before the paid render. Clicking Recast Ad on the card counts as reading it, so the card is never blocked. But the toolbar Generate canvas, which executes the whole graph, would otherwise chain the analyzer straight into the render, and so would an agent over MCP. For those two paths the node stops with:
Ad Recast is waiting for approval — read the lock list on the node and pressRecast Ad, or tick 'Let Generate canvas render without stopping here' …Tick Let Generate canvas render without stopping here on the card to let Generate canvas
through. That checkbox is the persisted approved param; the card clears
it whenever the wired analysis changes (a re-run, a swapped clip or
talent), since a new lock list needs a new read. Over MCP, set
params.approved to true after relaying the analyzer’s report, then
run again with a new idempotency_key (the rejected run is remembered
under the old one). Graphs with nothing wired into prompt are not
gated; reading the box was already the approval there.
The lock-list panel
Section titled “The lock-list panel”When an analysis exists, either wired in or produced by Compose, the card shows the same panel Video Analyzer shows, compacted: the source line, the amber face-free warning (only when there is one, with its three options), unknown-shot and talent-photo lines, LOCKED collapsed to one line with the full list a click away, CHANGING, and the shot table. Nothing appears without real data. The panel’s contents are what the report’s HELD and KNOWN lines are built from after the render.
Source requirements
Section titled “Source requirements”| Duration | 4–30 seconds (trim longer ads to the segment you want; the analyzer suggests cut-aligned segments that fit) |
| Frame rate | 24–60 fps |
| File size | ≤ 200 MB |
| Dimensions | 300–6000 px per side, aspect ratio 0.4–2.5 |
The node checks these before submitting — the provider bills on task acceptance, so a clip that’s guaranteed to fail is rejected with a clear message instead of a paid failure. When a wired analysis already says the source fails preflight, the Recast button is disabled and its tooltip lists the reasons. Output length and aspect ratio follow the source automatically; the prompt is capped at 4000 characters.
The talent photo
Section titled “The talent photo”This matters more than anything else you control:
- Front or three-quarter angle, face unobstructed, settled neutral expression — theatrical expressions get baked into every frame.
- Realistic skin texture; heavily retouched photos produce a plastic look.
- Lighting direction roughly matching the source’s.
- No text or logos on clothing — generated lettering comes out as mush.
- A skin tone similar to the source creator’s when the ad has hand shots without a face (see the limitation below).
Wire the photo into Video Analyzer too and it checks the photo against
this list and prints a Talent photo: line for anything it finds.
The render itself is always generated silent — letting the model
generate audio produces different speech. With keep_audio on (the
default) the source clip’s original track is muxed onto the result
automatically. Turn it off if you plan to add music or a new voiceover in
the edit.
Billed by the source clip’s length, per second, at the resolution you
pick — roughly $0.09/s at 480p, $0.19/s at 720p, $0.34/s at 1080p, at the
provider’s list rate. The Recast Ad button carries the price for the
clip that is actually wired, for example Recast Ad · 14.3s · ≈ $1.21,
once it knows the clip’s length (from the analysis, or by probing the
clip in the browser). Its tooltip repeats the source facts and the output
resolution. The Generate canvas preflight prices the node by the same real length.
Draft at 480p, finalise at 720p or 1080p.
The report
Section titled “The report”After a successful render the card prints a short report under the video, with a Copy button, and keeps it on the node:
recast · 14.28s · 480p · original audio restoredHELD cuts 7.5/9.5/10.9/12.9/15.2/16.5/18.5 · camera · lighting · captions · product · environmentCHANGED presenter identity + wardrobe -> @Image1KNOWN hands in shots 3-6 (9.5-16.5s, 27% of runtime) remain the source creator'sNOTE output is 24fps (source 30fps) — cuts still landCOST ≈ $1.21 (14.28s source × $0.085/s at 480p, list rate)HELD and KNOWN come from the analysis; without one they degrade to “everything in the lock list” and a hint to run Video Analyzer. NOTE appears only when the source was not 24 fps. COST uses the billed seconds the render actually reported.
Known limitation
Section titled “Known limitation”Shots that show the person’s body with no face in frame — hands pouring, tearing, applying, unboxing — keep the original person’s hands, build, skin tone, nails, and jewellery. It’s a model constraint, not a prompt problem. Work around it by picking source ads where the face is in frame whenever the body is, casting a replacement with a similar skin tone, or accepting it — on many ads the hand shots are brief. Video Analyzer, or Compose from ad, tells you exactly which shots are affected and what share of the runtime they cover before you render.
Ad Recast vs Character Swap
Section titled “Ad Recast vs Character Swap”Character Swap (Wan Animate) is prompt-free and quick, but caps inputs at 10 MB and tops out at 720p. Ad Recast takes real phone-shot ads up to 200 MB, follows your lock-list prompt, keeps captions intact, and restores the original audio. For a full step-by-step workflow, see the Recast a winning ad recipe.