zhenzhen-heygen-avatar5-fal
HeyGen avatar 5 as a ComfyUI node
- video
- video_url
- response
If the avatar 4 i2v node is "make my photo talk," this one is "pick a professional presenter and press record." HeyGen avatar 5 ships with a catalog of 498 stock avatars - "Abigail Office Front," "Amelia Business Training," that whole LinkedIn-meets-newsroom cast - plus 100+ voices, and this node turns the whole thing into a single ComfyUI input. You pick an avatar, you pick a voice, you type a script, and a polished presenter video comes back.
That's genuinely useful for a specific job: training videos, product explainers, internal comms, anything where you want a human presenter but don't want to book one. It's also the most "turnkey" node in the Comfyui-zhenzhen pack - no image input at all, because the avatar already exists. Like every node here it's a closed-model API call through Zhenzhen's fal proxy: per-clip credits, no local weights, key in the widget.
How it works
The node submits the script (prompt) plus your avatar/voice choices to HeyGen's avatar 5 endpoint via the fal proxy, polls until done, and returns a VIDEO plus video_url/response. Because the avatar is predefined, there's no face upload - the two big inputs are:
avatar- the giant dropdown (498 choices,server_defaultlets fal choose). If you know the exact avatar ID from the HeyGen catalog,custom_avataroverrides the dropdown.voice- 100+ voices,server_defaultagain for fal's pick,custom_voicefor a specific ID. Ifaudio_urlis provided, the voice is ignored and the avatar lip-syncs to that audio instead.
Inputs that matter
prompt- the script. This is what the avatar says; quality of delivery follows quality of writing.avatar/voice/custom_avatar/custom_voice- who's talking and with whose voice.fit-cover(fill the frame, may crop) vscontain(whole avatar visible, may letterbox).remove_background- cut the presenter out; handy for compositing over your own background later.caption- subtitles on/off.output_format-mp4orwebm.resolution- 720p / 1080p / 4k.aspect_ratio- 16:9 / 9:16 / 4:5 / 5:4 / 1:1 / auto.
Installing it
ComfyUI Manager → search Comfyui-zhenzhen → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
Restart, paste your api_key into the widget. Nothing to download - the whole job happens server-side.
Common issues
- Avatar not matching the vibe - the 498-name dropdown is hard to scan. Use
custom_avatarif you have a catalog ID; otherwiseserver_defaultis a decent neutral pick. - 4k being slow/pricey - yes. This is where fal's pre-deducted billing is most visible; iterate at 720p, export at 4k.
- Voice ignored - you supplied
audio_url; that's by design. Remove it to get TTS with the selected voice. - The pack standard gotchas - empty key, 443/VPN-in-TUN-mode for the overseas API, vendor 500s needing a re-run, and seed being cache-control only.
One thing to keep straight: this node is a stock presenter tool, not a face-clone. If you need a specific real person talking, that's the avatar 4 i2v node's job (with all the moderation caveats that implies); if you need "a believable human says the words," this is the one.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| api_keyopt | STRING | — | |
| avataropt | COMBO | server_default | server_default leaves avatar unset and lets FAL use its default. Use custom_avatar for an exact custom name. |
| custom_avataropt | STRING | Overrides avatar dropdown when filled. | |
| voiceopt | COMBO | server_default | server_default leaves voice unset and lets FAL use its default. Ignored when audio_url is provided. |
| custom_voiceopt | STRING | Overrides voice dropdown when filled. | |
| audio_urlopt | STRING | — | |
| fitopt | COMBO | cover | 2 options: contain, cover |
| remove_backgroundopt | BOOLEAN | false | — |
| captionopt | BOOLEAN | false | — |
| output_formatopt | COMBO | mp4 | 2 options: mp4, webm |
| resolutionopt | COMBO | 720p | 3 options: 720p, 1080p, 4k |
| aspect_ratioopt | COMBO | 16:9 | 6 options: 16:9, 9:16, 4:5, 5:4, 1:1, auto |
| poll_intervalopt | INT | 61–60 | — |
| max_poll_attemptsopt | INT | 60010–3600 | Default 600*6s = 3600s timeout. |
| skip_erroropt | BOOLEAN | false | — |
| seedopt | INT | 00–18446744073709550000 | Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| response | STRING | — |