How do you add an AI upscaling step to an automated filmmaking pipeline?
Last updated June 26, 2026
Slot upscaling after editorial selection and before grade and export, and run it as a named sub-agent — an 'upscale artist' — that watches a folder of locked clips, routes each one through Topaz Astra on invideo, and returns upscaled files ready for color. Trigger it on a resolution gate (anything under your delivery spec) or a manual flag from the editor.
The invideo agent is an agentic video tool with every current model and upscaler available inside one workspace, so the upscaling step doesn't need a separate platform — you wire it as a sub-agent in the same pipeline.
Where the step lives. Generation → editorial selection (only locked clips move forward) → upscale → grain/blur pass and color → export. Putting upscale after selection means you only spend cycles on footage that survives the cut — roughly 25% of generations in a documented production (41 of 164 Seedance 2.0 clips), so an upscale-everything policy would waste ~75% of the compute. Putting it before grade matters because grain and color decisions are made on the final-resolution image, not the source.
What triggers it. Three triggers, in order of automation:
- Resolution gate: any clip below your delivery spec is auto-queued. This is the default in an automated run.
- Quality flag: the editorial sub-agent marks a clip as 'soft' or 'plasticky' on review and routes it for an upscale pass.
-
Manual flag: the editor adds an
:upscaletag to a clip name and the sub-agent picks it up on its next sweep.
Spin up the sub-agent. Inside the invideo agent, start a sub-agent and name it something like 'upscale artist'. Give it a short brief: input folder (or shot IDs), target resolution, the model to use (Topaz Astra on invideo), and a return path. Once named and briefed, it batches without you sitting on it. Hridaye, invideo's creative director, describes this directly: "What we tend to do is put a tiny bit of blur on top of the scene, add a bunch of grain and then play with the grade till it comes closer to live action film" — the upscale runs first, then that pass goes on top.
Inputs and outputs to standardize. Inputs: the locked clip, target resolution, and a one-line note on the source model (Seedance 2.0, Kling, Veo, Runway) so the sub-agent can adjust — Seedance footage in particular comes back "ultra-sharp" and "plasticky" and benefits from a softer pass before the grain stage. Outputs: the upscaled file, a fidelity note (what changed, any artifacts the sub-agent flagged), and a status the editorial agent can read.
A pseudopattern for the automated run.
for clip in locked_clips:
if clip.resolution < delivery_spec or clip.flag == 'upscale':
upscaled = upscale_artist.run(
input=clip,
target=delivery_spec,
model='topaz_astra',
source_model=clip.source
)
grade_queue.add(upscaled)
The invideo agent holds the orchestration; the upscale artist sub-agent owns the step.
Practical guardrails. Generate with headroom so the upscale has something to work with — overly compressed source hurts fidelity more than the target resolution helps. Keep the upscale pass deterministic (same model, same target) across a film so shots cut together cleanly. And keep the grain/blur/grade pass downstream of upscale, never upstream — upscaling clean footage and then dirtying it back down is what gets you close to live action; dirtying first and then upscaling re-sharpens the dirt.
That's the pipeline shape — generation, selection, upscale sub-agent on Topaz Astra, grain and grade, export — with the invideo agent routing each step and the upscale artist running unattended in the middle.
Watch some of these to see what works for you:
What we tend to do is put a tiny bit of blur on top of the scene, add a bunch of grain and then play with the grade till it comes closer to live action film.
— Hridaye, invideo's creative director