Video nodes
Where stills become motion. Brut treats video like the expensive thing it is — every clip is quoted and confirmed before a cent is spent.
Image → Video
The footer of every video node reads the clip's size, duration and frame rate (1920 × 1080 · 5.0 s · 24 fps) at the bottom left, on the output pin's row.
Animate a single image into a clip. Wire an image into the node, pick a provider and model, set duration/resolution and (where supported) audio and an end frame, and run.
Clip length follows the model: Kling and Veo offer a few fixed durations, Gemini Omni 3–10 s, Seedance 2.5 anything from 4 to 30 s (or smart, where the model picks). Some models tie the two selects together: on Google Veo, 1080p and 4K render at 8 s only and reference images need 8 s, so the picks that cannot go together grey out in place with the reason, and a ⚠ line under the selects says what to change; where the provider's endpoint takes no audio switch (Veo on your Google key), the audio box shows ticked and greyed (the rules). On models whose clip must keep the start frame's aspect ratio (Seedance 2.5), the aspect select disappears while a start frame is wired and the node says so. With nothing on the image inlet the run is text-to-video and the aspect select is back, since that run takes a ratio of your choice.
Ratio: follow the input. The aspect menu's first entry follows the start frame: the clip runs at the provider's ratio nearest to the wired image's (a 2048 × 1143 still runs at 16:9, a portrait one at 9:16), so the clip keeps the frame you composed instead of being stretched or banded to a fixed ratio. Steady camera asks the model for one smooth, stabilized move with no shake and no drift, as Film Shots does for every clip.
Running a finished node again replays its clip, free. Want another take of the same shot? The title bar's ↻ re-roll generates a fresh one (billed again, at the same estimate); the previous clip stays in the node's 🕘 history, pinnable.
Draft mode (Seedance 2.5)
Tick Draft take and the node renders a 480p draft, billed like any 480p clip. When the draft is the shot you want, ⬆ Render final 1080p re-renders the same shot at 1080p from the draft: BytePlus reuses the prompt, the frames, the references, the duration, the seed and the audio, nothing is re-sent, and the final is billed like any 1080p clip, after the usual confirm with its price. The final then replaces the draft on the node and on every wire (the footer line reads 1920 × 1080), while the draft stays in the node's 🕘 history. A re-roll or a changed prompt starts a new draft, and the old final stays in the ledger like every paid file. A draft can be finalized for seven days; the node's line says until when. Explore at 480p, pay 1080p only for keepers. Draft mode needs your own BytePlus key: a node running through another service such as OpenRouter shows no Draft box.
Last frame (Seedance). Seedance returns every clip's final frame as an image, at the clip's exact size, and Brut keeps it beside the clip. ⏭ Last frame → Image In under the result drops it on the canvas as an Image In: wire it into the next Image → Video's start frame and the shot continues where this one ended. When a final was rendered from a draft, the button gives the final's last frame.
The trust line (Seedance). BytePlus refuses a wired picture that looks like a real person unless one of its own models made it on your key. Brut checks where each wired picture came from, the start frame, the end frame and each reference, and says in green which ones carry that trust, with the day the 30-day window closes: made on your BytePlus key: start frame, references 1, 2. A picture counts when it is a Seedream text-to-image result or a Seedance clip's last frame. When the same set also holds pictures Seedance will refuse a face in (a Seedream edit, a picture from another model), an amber line names them, so a refusal is visible before the run. A picture with no line either way is one Brut cannot trace (an upload, a Conform cut): that is no verdict. A node fed only by other makers' pictures shows no line at all.
When a video model runs through another service (the "⇄ runs via …" chip — e.g. Kling v3 on your OpenRouter key), the node shows only the knobs that service actually accepts: settings it doesn't carry (like the aspect-ratio select or the negative prompt on OpenRouter's Kling) disappear rather than fail the run. The clip's aspect still follows the start frame you wire in. Add the native key to get the full control set back.
Reference images
Some models accept extra reference images alongside the start frame — a character, a product, a style plate — and keep them consistent in the clip. When the selected model supports them, the node grows a references inlet and its info line says so ("✓ takes reference images (up to N)"); models that don't say that too, so you never guess. A Reference Board plugs straight in — its numbered tiles (or the whole curated pool) wire onto the inlet.
Current support: Seedance 2.5 (up to 30, addressed as @Image1… in the prompt), Gemini Omni Flash, Kling o1 / 3.0 Omni (subscription, up to 6), Seedance 2.0, Veo 3.1 / 3.1 Fast (up to 3). Wiring references into a model that can't take them fails with a clear message — Brut never silently drops an image you wired.
Film Shots — the cinema batch executor
Film Shots takes a shot plan (from the Director / Storyboard) and shoots the whole sequence.
Prompts written for the model you picked. Before a clip is shot, Film Shots adapts the Director's prompt to the video model you picked, automatically (one cheap text call per clip, cents, in the ledger). There is nothing to set: the table marks adapted rows with ✦ (hover one to read the Director's text), and the confirmation says how many were adapted. A clip whose adaptation fails is flagged on its row and in the confirmation, and goes out with the Director's text.
Its defining feature is the cost guard:
- It prices every clip — model, duration, resolution, estimated cost — and shows an itemized confirmation before any spend. Cancel a line and the total updates.
- Tick boxes choose what gets sent. Every row has one, all ticked by default; untick a clip and it stays in the table, greyed, not sent, not priced, not in the output pool — generate three, judge them, then tick the rest. The Σ row's box ticks or unticks everything, and its N of M clips line always says what Generate would actually send. Ticks are saved with the graph (never in library items).
- Clips already made (unchanged) and pinned clips cost $0 and are never re-quoted.
- A ruled resolution snaps the plan's durations. Veo renders 1080p at 8 s only: with 1080p picked, every clip in the table becomes 8 s, the line under the Resolution select says so, and the confirm lists the 8 s rows. A row that still breaks a rule is blocked with the fix, like an invented shot without its keyframe.
- It shoots several clips at a time, with the same per-clip controls as Multi-Shot: free replay / ↻ re-roll / ✓✗ verdicts / 📌 pins.
- On Kling (subscription) without a subscription, kling.ai runs one clip at a time and watermarks it: clips refused for that reason wait and run one by one after the pool, the row saying so on hover, the Activity panel saying why once.
- Every clip asks for a steady camera, and a clip gets sound only when you switch audio on and the model makes sound.
- An invented shot whose keyframe hasn't been generated on the Storyboard is a per-clip error — that clip is blocked (and counted in the confirm), never silently downgraded to text-to-video. The rest of the batch rolls normally. A shot added on the Storyboard with no clip prompt yet is listed and blocked the same way, the row naming the fix, instead of vanishing from the table.
- Draft mode on Seedance 2.5: tick Draft takes and every clip rolls at 480p, billed like 480p. Once the drafts are in, each row grows a final 1080p tick; ⬆ Render N finals re-renders exactly those shots at 1080p from their drafts, after its own itemized confirm. A finalized row's output becomes the final, on the Clip Board and in the Sequence downstream, while the draft stays in 🕘. Seven days to finalize a draft; your own BytePlus key only.
Like Image → Video, a model reached through another service (the "⇄ runs via …" chip) shows only the knobs that service accepts — the quote table and the clips both use exactly what will be sent, and the film's aspect rides each clip's start frame.
Clip Board
The review board for Film Shots — video tiles, ✓ / ✗ / ↻ per clip, and a plug per tile to route one clip onward. The video equivalent of the Shot Board.
Tiles show a still poster of each clip (in the clip's own aspect ratio) and stay feather-light — press ▶ on a tile to play it; one clip plays at a time, and 🔍 opens it full-screen — ←/→ screens the whole board clip by clip. The /row select goes up to 15, so a whole reel can sit in one row.
Sequence — local assembly, free
Wire your curated clips into a Sequence node and it assembles them into one mp4 on your machine — cuts or chained crossfades, scaled and padded to a common size. It's free, and an unchanged assembly replays at once.
The full flow
The video nodes are the back half of the Cinema Sessions: Storyboard → Film Shots → Clip Board → Sequence → Preview. Read that walkthrough to see them working together.