Protoface Wan 3.0 Prime · Reference to Video
Ten Images, and the Prompt Decides Which Is Which
- video
- files
- run id
Reference-to-video is the operation people underrate. Instead of one start frame, you hand the model a pile of material - up to ten images, five videos, five audio clips on Wan 3.0 Prime - and describe a scene that uses them. It's the closest thing to casting: characters, props, a location, a voice.
What it's for
The local answer to character consistency on Wan has always been LoRA training. The KB's numbers on that: a well-regarded annotator reported ninety minutes on a 5090 to train a high/low pair for Wan 2.2, and that's before you discover your likeness came out worse once you stacked speed LoRAs. Reference conditioning skips all of it. You supply the face as an image, describe the shot, and iterate.
Same story for video references - motion, camera language, a clip whose look you want carried over - and for audio references, which is the piece local Wan 2.2 just doesn't have at all.
The mechanism, and the one thing you must understand
This node is generated from the bundled Protoface catalog at startup - alibaba/wan-3.0-prime × video.reference, same shared adapter as every other Protoface node. Validate, upload, submit, poll, download, decode. Reference assets are content-hash cached locally, so the same photo doesn't re-upload on every requeue, and the whole request is journaled before submission so an unchanged requeue resumes the recorded job instead of buying a second one.
Now the important bit. These reference fields are ordered arrays, and the tooltip spells it out: reference media are identified by their array order in the prompt. So your prompt has to reference them positionally - "the woman from image 1 walks through the doorway from image 2, holding the object from image 3". If you write "the woman in the red coat" and hope, you're rolling dice on which reference the model anchors to. This is where reference-to-video workflows quietly fail.
The inputs
prompt - positive prompt, and per above, it's also your indexing scheme.
reference_images, reference_videos, reference_audios are the three list inputs. Each is a mode picker: Image/Video/Audio for a native ComfyUI input, or References to plug in a Protoface Asset Reference (an existing asset ID or public URL) - handy for reusing a result from an earlier run without reuploading. You can also leave them on Default and send nothing. The lists grow as you connect items, and the caps are real: ten images, five videos, five audios. A batch of images counts, so a Load Image node set to batch 4 eats four slots.
duration has a rule worth reading twice: 2–30 seconds on its own, but when you supply reference videos, total input video duration plus generated output must not exceed 30 seconds. A 12-second reference video leaves you 18.
resolution - 480p, 720p (default), 1080p. aspect_ratio is a required combo defaulting to 16:9, with 9:16, 1:1, 4:3 and 3:4.
enable_audio defaults true; with reference audio in play that's the point, so leave it on unless you're scoring separately. enable_prompt_expansion defaults off - keep it that way here, since the optimizer may renumber your references in the rewrite. seed is optional.
Outputs
video (a list of native VIDEO), files (the original downloads, for Protoface Save File), and run id - a string for Protoface Resume Run. Keep it; a ten-image reference job is not a cheap thing to lose to a browser refresh.
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
Or Manager → Protoface → protoface-nodes → restart → reload. ComfyUI 0.41.0+, Python 3.10+, with httpx, jsonschema, Pillow, av. Nothing is downloaded locally - no Wan weights, no VAE, no text encoder. Then paste your Protoface key via the Protoface button in the lower-right, or set PROTOFACE_API_KEY_FILE for a persistent server.
The pack also ships an example workflow, Protoface Qwen Image 3.0 to MiniMax H3 Asset Reuse, which is the clearest demo of the asset-reuse pattern these reference inputs rely on.
Where people get burned
References ignored. Nine times out of ten it's an unindexed prompt. Say "image 2", not "the second woman".
Too many references. Hitting eleven images throws a "too many references, including items in input batches" error - and the mention of batches is literal. Count your batch sizes.
A 40-second reference video. It can't work; the 30-second budget covers input plus output.
Re-uploading the same 400MB reference video every run. Connect it through Protoface Asset Reference by asset ID once it's uploaded, rather than re-encoding from a Load Video each time.
Auth errors after restarting ComfyUI. The interactive key is memory-only. Re-enter it.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The positive prompt for the generation. Reference media are identified by their array order in the prompt. | |
| resolution | COMBO | 720p | The resolution of the generated video. |
| duration | INT | 52–30 | The 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_ratio | COMBO | 16:9 | The aspect ratio of the generated video. |
| enable_audio | BOOLEAN | true | Whether to include audio in the generated video. |
| enable_prompt_expansion | BOOLEAN | false | If set to true, the prompt optimizer will be enabled. |
| reference_audios | COMBO | Public URLs, data URIs, or asset ids. | |
| reference_images | COMBO | Public URLs, data URIs, or asset ids. | |
| reference_videos | COMBO | Public URLs, data URIs, or asset ids. | |
| seed | COMBO | The random seed to use for the generation. -1 means a random seed will be used. | |
| generation_id | INT | 00–9007199254740991 | Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed. |
| request_scope | STRING | Automatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| files | PROTOFACE_FILE | — |
| run id | STRING | — |