
A verbose production breakdown of the ComfyUI graph for aespa_karina_goodstuff_ytshort. The workflow turns an editorial source clip and selected IPA reference still into a 1088 x 1920 ProRes master using WAN 2.2 Animate, pose/face preprocessing, CLIP Vision identity conditioning, and long-window video sampling.
Embedded ComfyGUI viewer loading the production workflow JSON with the SunnysideTV v2 theme. Pan, zoom, select nodes, and open the inspector from the canvas toolbar.
The workflow is built like a post-production pipeline: choose a frame window, extract motion and identity controls, load the model stack, sample in overlapping context windows, then decode and package the result.
Loads the source MOV, then uses linked constants rather than the stale node widget defaults: FPS is 30, SECONDS is 12, FRAME OFFSET is 600, and FRAME LOAD CAP is computed as a*b. That makes the active window 360 frames starting at the 20-second mark.
Output: image sequence + frame count + audioThe control branch runs DWPreprocessor with body, hand, and face enabled at 1280 detector resolution, then a ViTPose/YOLO branch extracts face crops and bounding boxes at 832 x 480. The result gives WAN Animate both broad body motion and tighter facial framing.
Output: pose_images + face_imagesIPA20 is loaded as a still reference, resized with Lanczos and center crop, then routed into both CLIP Vision and the WAN Animate reference image input. That creates a strong single-frame identity anchor instead of relying on text prompting.
Output: reference_image + image_embedsThe base WAN 2.2 Animate 14B BF16 model loads with SageAttention and offload_device selected. LoRA and block swap are applied as explicit downstream nodes, which keeps the base loader reusable while still patching the model for this render.
Output: conditioned video modelWanVideoAnimateEmbeds receives the full 360-frame count for num_frames and frame_window_size, while WanVideoContextOptions separately defines 81-frame context windows with stride 4 and 48-frame overlap. Sampling uses linked 16 steps, shift 8, CFG 1, randomized seed, and DPM++.
Output: latent video samplesWanVideoDecode uses tiled decode settings to control memory pressure, then VideoHelperSuite writes a 30fps ProRes master with workflow metadata. The audio path is wired in the graph, but its Set/Get bridge is bypassed in this JSON and should be enabled if final audio is required.
Output: ProRes vertical masterThe graph is modular and named around reusable Set/Get nodes. That lets preprocessing publish shared artifacts once, then sampling reads only the pieces it needs.
The generated performer inherits timing, body rhythm, and camera cadence from the source clip instead of inventing motion from prompt text.
Face crops give the animation pass a higher-priority local reference for head orientation, expression continuity, and face-region stability.
The single reference still anchors character design, color bias, and likeness. Center crop and average aggregation make the reference more stable but less multi-angle aware.
The base model supplies temporal synthesis, the LoRA biases image-to-video behavior, and block swap keeps the heavy model practical for a long vertical render.
This render is guided by a stack of visual controls. The prompt path is present but neutral, so likeness, movement, framing, and texture come from plates and embeddings rather than language.
DWPreprocessor is enabled for body, hands, and face. This makes pose the main source of choreography and helps keep limbs from drifting between context windows.
PoseAndFaceDetection emits face crops separately from pose data. That gives the model a tighter signal for facial continuity than full-frame conditioning alone.
IPA20 is reused in both CLIP Vision and ref_images. This doubles down on the chosen still as the identity anchor, which is useful for consistency but can pull the clip toward that pose or lighting.
UMT5 cached text encoding is present, but the prompt fields are empty in the JSON. That shifts creative control away from language and toward visual conditioning.
SAM2, GrowMaskWithBlur, and BlockifyMask are wired as a scaffold, but bg_images and mask are null on AnimateEmbeds. This render does not use mask protection.
This audit follows the groups embedded in the ComfyUI workflow: Reference Image, Preprocessing, Models, Sampling, and SAM2 background extraction.
These are the high-impact values in the JSON. They control format, temporal consistency, identity strength, render speed, and how much hardware pressure the graph creates.
Preserves a 9:16 vertical short format while increasing pixel budget beyond a simple 1080-wide master. More pixels help face detail and wardrobe texture, but raise VAE decode and sampler memory cost.
Targets a 12-second generation beginning at the 20-second mark. The graph computes the cap from SECONDS x FPS, so clip length can be adjusted without editing the loader node.
Creates overlapping temporal chunks of roughly 2.7 seconds. The 48-frame overlap is deliberately heavy, reducing visible seams at the cost of extra compute.
Keeps iteration speed practical while preserving enough denoise passes for motion and texture refinement. CFG 1 makes sense for this graph because visual controls, not text, are carrying the shot.
Distills image-to-video behavior for faster WAN animation. Relight and rank128 slots are present but set to zero, avoiding extra lighting bias and keeping the active LoRA choice easy to isolate.
The model, VAE, and LoRA stay in BF16 while block swapping makes the 14B Animate stack practical on a workstation GPU. It trades runtime speed for the ability to hold a larger model and vertical frame target.
The widget still shows an older value, but the connected Float node is the active source. This keeps source ingest, previews, sampler, and final ProRes aligned at 30fps.
The graph is duration-driven. Changing SECONDS to 8 would produce 240 frames without editing any downstream node.
At 30fps, this selects the 20-second editorial mark. The generated take inherits the source camera and choreography from that exact segment.
Final dimensions are passed as linked inputs, while several control nodes operate at 832 x 480. This separates high-resolution delivery from cheaper control extraction.
This matches the embedded workflow note for context-options mode: the full length is sent to AnimateEmbeds, and ContextOptions handles the actual temporal chunking.
Uniform context sampling with linear blending reduces abrupt identity or texture jumps as the long clip advances.
The reference signal is broad and stable. It should hold character and palette, but it may not describe alternate angles as well as a multi-reference setup.
The graph keeps text conditioning available but neutral. That prevents language from fighting pose, face, and image-reference controls.
Tiling protects the VAE decode stage from large-frame memory spikes. The tradeoff is potential tile-boundary risk, mitigated by overlap.
The output is a finishing-friendly intermediate rather than a social upload encode. Metadata preservation makes the render traceable.
The final ProRes combine is configured as a master render rather than a lightweight social encode. The filename prefix doubles as a compact production manifest.
The output name encodes the render recipe: source shot, frame window, IPA still, resolution, fps, memory strategy, precision, sampler, LoRA, context, and version. That makes renders easier to compare after overnight batches.
The workflow is already structured like a repeatable production template. The strongest opportunities are documenting which branches are active per render and tightening the source-window checks before long overnight jobs.
The text encoder exists, but prompt fields are empty. Output character, timing, and staging are shaped mainly by IPA20, pose plates, face crops, context windows, and the LightX2V LoRA.
SAM2 nodes are in mode 4 and WanVideoAnimateEmbeds has null bg_images and mask inputs. The branch is useful production scaffolding, but this render is not currently using segmentation to protect or replace background regions.
At 30fps, f600 starts at 20.0 seconds and 360 frames extend to 32.0 seconds. The source filename includes 30s, so confirm the final two seconds are available, padded, or intentionally clipped by VideoHelperSuite.
VHS_LoadVideoPath outputs audio, and final VHS_VideoCombine has an audio input, but Set_input_audio and Get_input_audio are mode 4. Enable that bridge for a final master with source audio.
The final combine node preview filename references an older f0/ipa21/bswap35 render, while the connected filename_prefix string carries the current f600/ipa20/bswap36 name. Use connected constants as source of truth.
VHS_VideoCombine saves output at 30fps in video/ProRes with metadata. This is appropriate for editorial finishing, repost compression, and preserving workflow provenance.