Skip to main content

Week 7: Your Own Workflow

Reading and rebuilding the workflow this course has been supplying — loaders, conditioning, samplers, and a fix pass — and the permission to go photoreal that comes with owning your own graph.

19 April 2027

Every exercise in Phase 2 ran on a graph this course supplied. That graph was never a black box — it was a specific arrangement of loaders, conditioning, and samplers doing the exact same job whether it was running text to image or image to video underneath. This week is spent opening it up, learning what each piece does, and rebuilding a version that’s actually yours. From here forward, every exercise runs on your own graph, or your own API request shape, and photoreal work is permitted for the first time — because building your own graph is what demonstrates the reference discipline that photoreal work needs to survive the uncanny-valley problem stylisation was covering for until now.

The four kinds of node

A generation graph reduces to four recurring jobs, however many nodes it actually contains: loaders bring a model, a checkpoint, or a reference image into the graph; conditioning turns a prompt or a control signal into something the sampler can read; the sampler runs the actual denoising steps that turn noise into a result; and everything after the sampler is a fix pass — upscaling, a face restoration step, a colour correction — cleaning up what the sampler handed back. Recognising which of the four a node belongs to makes an unfamiliar graph readable in minutes instead of hours.

16 nodes — 4 loader, 2 conditioning, 4 sampler, 4 fix pass, 2 other. This is the graph the other tiers are read against.

SaveVideo — Fix passFSaveVideoVAELoader — LoaderLVAELoaderVAELoader — LoaderLVAELoaderKSamplerSelect — SamplerSKSamplerSelectUNETLoader — LoaderLUNETLoaderCLIPLoader — LoaderLCLIPLoaderRandomNoise — SamplerSRandomNoisePrimitiveFloat — OtherOPrimitiveFloatComfyMathExpression — OtherOComfyMathExpressionMiniMaxH3ImageToVideo — ConditioningCMiniMaxH3ImageToVideoBasicScheduler — SamplerSBasicSchedulerBasicGuider — ConditioningCBasicGuiderSamplerCustomAdvanced — SamplerSSamplerCustomAdvancedVAEDecode — Fix passFVAEDecodeVAEDecodeAudio — Fix passFVAEDecodeAudioCreateVideo — Fix passFCreateVideo
Every node in this graph
Nodeclass_typeKind
92SaveVideoFix pass
105:11VAELoaderLoader
105:24VAELoaderLoader
105:17KSamplerSelectSampler
105:6UNETLoaderLoader
105:13CLIPLoaderLoader
105:15RandomNoiseSampler
105:111PrimitiveFloatOther
105:107ComfyMathExpressionOther
105:104MiniMaxH3ImageToVideoConditioning
105:9BasicSchedulerSampler
105:16BasicGuiderConditioning
105:14SamplerCustomAdvancedSampler
105:10VAEDecodeFix pass
105:23VAEDecodeAudioFix pass
105:91CreateVideoFix pass

19 nodes — 6 loader, 2 conditioning, 4 sampler, 4 fix pass, 3 other. Outlined: the node classes the bare graph never had — MiniMaxH3ReferenceToVideo, PrimitiveStringMultiline, LoadImage.

SaveVideo — Fix passFSaveVideoVAELoader — LoaderLVAELoaderVAELoader — LoaderLVAELoaderVAEDecodeAudio — Fix passFVAEDecodeAudioVAEDecode — Fix passFVAEDecodeKSamplerSelect — SamplerSKSamplerSelectBasicScheduler — SamplerSBasicSchedulerSamplerCustomAdvanced — SamplerSSamplerCustomAdvancedBasicGuider — ConditioningCBasicGuiderUNETLoader — LoaderLUNETLoaderCLIPLoader — LoaderLCLIPLoaderRandomNoise — SamplerSRandomNoiseCreateVideo — Fix passFCreateVideoComfyMathExpression — OtherOComfyMathExpressionPrimitiveFloat — OtherOPrimitiveFloatMiniMaxH3ReferenceToVideo — ConditioningCMiniMaxH3ReferenceToVideoPrimitiveStringMultiline — OtherOPrimitiveStringMultilineLoadImage — LoaderLLoadImageLoadImage — LoaderLLoadImage
Every node in this graph
Nodeclass_typeKind
92SaveVideoFix pass
119VAELoaderLoader
120VAELoaderLoader
121VAEDecodeAudioFix pass
122VAEDecodeFix pass
123KSamplerSelectSampler
124BasicSchedulerSampler
125SamplerCustomAdvancedSampler
126BasicGuiderConditioning
127UNETLoaderLoader
128CLIPLoaderLoader
129RandomNoiseSampler
130CreateVideoFix pass
131ComfyMathExpressionOther
132PrimitiveFloatOther
136MiniMaxH3ReferenceToVideoConditioning
138PrimitiveStringMultilineOther
1370LoadImageLoader
1371LoadImageLoader

3 nodes — 3 fix pass. This is the graph the other tiers are read against.

ffmpeg — Fix passFffmpegrealesrgan-ncnn-vulkan — Fix passFrealesrganncnnvulkanffmpeg — Fix passFffmpeg
Every node in this graph
Nodeclass_typeKind
1ffmpegFix pass
2realesrgan-ncnn-vulkanFix pass
3ffmpegFix pass

18 nodes — 5 loader, 2 conditioning, 4 sampler, 4 fix pass, 3 other. Outlined: the node classes the bare graph never had — LoadImage, PrimitiveStringMultiline.

SaveVideo — Fix passFSaveVideoVAELoader — LoaderLVAELoaderVAELoader — LoaderLVAELoaderVAEDecodeAudio — Fix passFVAEDecodeAudioVAEDecode — Fix passFVAEDecodeKSamplerSelect — SamplerSKSamplerSelectBasicScheduler — SamplerSBasicSchedulerSamplerCustomAdvanced — SamplerSSamplerCustomAdvancedBasicGuider — ConditioningCBasicGuiderUNETLoader — LoaderLUNETLoaderCLIPLoader — LoaderLCLIPLoaderRandomNoise — SamplerSRandomNoiseCreateVideo — Fix passFCreateVideoComfyMathExpression — OtherOComfyMathExpressionPrimitiveFloat — OtherOPrimitiveFloatMiniMaxH3ImageToVideo — ConditioningCMiniMaxH3ImageToVideoLoadImage — LoaderLLoadImagePrimitiveStringMultiline — OtherOPrimitiveStringMultiline
Every node in this graph
Nodeclass_typeKind
92SaveVideoFix pass
119VAELoaderLoader
120VAELoaderLoader
121VAEDecodeAudioFix pass
122VAEDecodeFix pass
123KSamplerSelectSampler
124BasicSchedulerSampler
125SamplerCustomAdvancedSampler
126BasicGuiderConditioning
127UNETLoaderLoader
128CLIPLoaderLoader
129RandomNoiseSampler
130CreateVideoFix pass
131ComfyMathExpressionOther
132PrimitiveFloatOther
136MiniMaxH3ImageToVideoConditioning
137LoadImageLoader
138PrimitiveStringMultilineOther
The four kinds are this course's reading of a graph, not the categories the software itself uses — and they do not cover everything: the nodes that carry a duration or a prompt string into the graph are doing none of the four jobs, so they are drawn as "other" rather than filed under a kind they do not belong to. Tier t3 generates nothing at all; it is three tool invocations, and by this reading the whole of it is a fix pass.

Editing versus rebuilding

Most of what a graph needs is a small edit, not a rewrite: swapping one loader’s checkpoint, adding a second conditioning input, inserting one fix-pass node before the output. Rebuilding from an empty graph is rarely the right first move — it throws away a working arrangement of the four jobs above to relearn something that was already solved. The one exception is when this course’s supplied graph does something the shot in front of it doesn’t need at all, in which case removing that piece cleanly is worth more than working around it.

The graph has an equivalent in JSON

Every graph in a node-based workflow engine can be exported as a request body — the same loaders, conditioning, and sampler settings expressed as plain data rather than boxes and wires. That export is what an API-based rig sends instead of running the graph locally, and reading one is the same skill as reading the graph: find the four jobs inside the JSON the same way they’d be found inside the nodes.

The ladder

The ladder this week climbs through how much of the supplied graph gets replaced, on one held-constant shot. The lowest tier is the bare supplied graph, unmodified, as a baseline. The next tier adds reference anchoring — a loader bringing in a locked reference image the original graph didn’t use. The next tier adds an upscale and fix pass after the sampler. The top tier is a two-stage pipeline: a keyframe generated in one graph, then handed into a second graph that turns it into video.

The recorded version of that third tier on this site did not do it that way: the upscaler ran over the finished clip afterwards, outside any graph, which is why that tier’s file is a list of command-line steps rather than a workflow. Both routes produce the same frames. Only one of them can be rerun by handing someone the file, which is why the assessment asks for the fix pass inside the graph.

official T2V template

The stock text-to-video graph, untouched: this is your baseline shot.

Ref2VA, two reference slots

Same shot through the reference graph: the identity comes from the pictures, not the words.

t1 upscaled x2 to 1080x1920

No new generation - the t1 clip through Real-ESRGAN, run after the render and outside any graph, so this tier ships command-line steps rather than a workflow: watch the line quality, not the content.

I2VA from the key frame

The same shot again from a first frame: compare which of the three holds the face best.

Recorded on the convener's rig with MiniMax H3 (local weights), keyframes with NoobAI-XL, reference stills for The Ninth Head with ChatGPT's image generator. Nothing is generated in the browser. Run it in the Studio.

Before class

Open the graph this course has been supplying and trace, node by node, which of the four jobs — loader, conditioning, sampler, fix pass — each one is doing.

This week’s exercise

Rebuild that graph across all four ladder tiers on one shot: the bare graph, plus reference anchoring, plus a fix pass, and finally the two-stage keyframe-then-video pipeline. Bring all four graph files and their outputs to Wednesday’s Dailies.

Reading

Teaching team