Nodes/Protoface/Protoface Wan 3.0 · Reference to Video
ComfyUI Node

Protoface Wan 3.0 · Reference to Video

Character Consistency Without Training a LoRA

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Wan 3.0 · Reference to Video
    • video
    • files
    • run id
    ◄prompt►
    ◄resolution720p►
    ◄duration5►
    ◄aspect_ratio16:9►
    ◄enable_audiotrue►
    ◄enable_prompt_expansionfalse►
    ◄reference_audios▾►
    ◄reference_images▾►
    ◄reference_videos▾►
    ◄seed▾►
    ◄generation_id0►
    ◄request_scope►

    Want the same face in ten different shots without training anything? That's the pitch of reference-to-video, and on Wan 3.0 base it's the cheapest version of the idea: up to ten images, five videos and five audio clips as conditioning, and a prompt that says what to do with them.

    The local alternative is a training run

    On open Wan 2.2, consistency means LoRAs - a training run, a dataset, a high/low pair, and a report from someone who actually did it: ninety minutes on a 5090 for a character pair. Then you find out that stacking a speed LoRA on top degrades the very likeness you trained for, which is the exact complaint that produced the community's "speed LoRAs kill everything that's good in it" warning.

    Reference conditioning sidesteps the whole pipeline. You don't need twenty curated images and a trainer; you need one good front-on portrait and a prompt. It's less precise than a well-trained LoRA and less reproducible run-to-run, but it takes four minutes instead of an afternoon.

    How it works

    This node is generated at startup from the bundled Protoface catalog - alibaba/wan-3.0 × video.reference - and runs the same shared HTTP adapter as every other Protoface node in the pack: schema validation first, then upload (content-hash cached), submit, poll, download, decode to a native VIDEO. The request identity is journaled before submission, which is why an unchanged requeue resumes rather than re-bills.

    The mechanism you have to internalise is ordering. These are array inputs, and the author's tooltip says reference media are identified by their array order in the prompt. Your prompt is the index. "Image 1" is the first thing in reference_images, and if you reshuffle the connections you've silently rewritten your prompt.

    Inputs

    prompt - positive prompt, and per above also your addressing scheme.

    reference_images, reference_videos, reference_audios - three list fields, each offering native Image/Video/Audio modes, a References mode for a Protoface Asset Reference (existing asset ID or public URL), and Default to send nothing. Slots grow as you connect, and the caps are enforced: ten images, five videos, five audios, with items inside a batch counting toward the limit.

    duration - 2–30 seconds, default 5, with one wrinkle: if you feed reference videos, input duration plus output duration must stay under 30 seconds.

    resolution - 480p / 720p (default) / 1080p. aspect_ratio - required combo, default 16:9. enable_audio - default true. enable_prompt_expansion - default false, and leave it false; a rewriter that paraphrases your prompt can happily drop the word "image 3". seed - optional.

    Outputs

    video, a list of native VIDEO results. files, the original download for Protoface Save File. run id, a string for Protoface Resume Run. Save the run id on multi-reference jobs; reconstructing a ten-image setup from memory is nobody's idea of fun.

    Install

    cd ComfyUI/custom_nodes
    git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git protoface
    python -m pip install -r protoface/requirements.txt
    

    Manager: search Protoface → protoface-nodes → restart → reload. ComfyUI 0.41.0+, Python 3.10+, four small Python deps (httpx, jsonschema, Pillow, av) and no model weights at all. Paste your key via the Protoface button bottom-right; it's held in memory, so a restart means re-entering it unless you've set PROTOFACE_API_KEY_FILE.

    A pattern that works

    Load one clean portrait and one environment shot. Connect them in that order. Prompt literally: "the woman from image 1 walks through the space in image 2, medium shot, slow handheld follow, overcast light." Generate at 480p to check whether the identity actually survives; if it does, same prompt, 720p. If the face melts, add a second portrait from a different angle as image 3 and be explicit about it being the same person - more angles, less guessing.

    For casting at volume, upload your reference set once and drive the fields through Protoface Asset Reference by asset ID. Re-encoding the same images on every run is wasted time and wasted bandwidth.

    Where people get burned

    Everything at once. Ten images and three videos in the first attempt is how you get a blurry average of everything. One subject, one environment, then grow.

    Unindexed prompts. "The woman in the red coat" when you have four references is a coin flip. Count and name.

    Over-budget duration. A 20-second reference video plus a 15-second output is 35 seconds and won't submit. Do the arithmetic before you queue.

    Assuming a reference clip is a motion template. These are conditioning inputs, not ControlNet. If you want frame-accurate motion transfer, that's a different tool.

    Forgetting that media leaves your machine. This is an API node; every reference you connect is uploaded. Keep that in mind for client work, and note that Comfy Cloud won't run this pack at all.

    CategoryProtoface/Video/alibaba

    Inputs (12)

    NameTypeDefaultDescription
    promptSTRINGThe positive prompt for the generation. Reference media are identified by their array order in the prompt.
    resolutionCOMBO720pThe resolution of the generated video.
    durationINT52–30The duration of the generated video in seconds. Default: 5. Without video input, use an integer from 2 to 30. When reference videos are provided, the total input video duration plus the generated output duration must not exceed 30 seconds.
    aspect_ratioCOMBO16:9The aspect ratio of the generated video.
    enable_audioBOOLEANtrueWhether to include audio in the generated video.
    enable_prompt_expansionBOOLEANfalseIf set to true, the prompt optimizer will be enabled.
    reference_audiosCOMBOPublic URLs, data URIs, or asset ids.
    reference_imagesCOMBOPublic URLs, data URIs, or asset ids.
    reference_videosCOMBOPublic URLs, data URIs, or asset ids.
    seedCOMBOThe random seed to use for the generation. -1 means a random seed will be used.
    generation_idINT00–9007199254740991Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed.
    request_scopeSTRINGAutomatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret.

    Outputs (3)

    NameTypeDescription
    videoVIDEO—
    filesPROTOFACE_FILE—
    run idSTRING—