zhenzhen-sora2-fal
Character IDs, 4–20s, and image-to-video
- image
- video
- video_url
- response
Where the pack's other Sora nodes use the chat/OpenAI-style endpoints, Comfly_sora2_fal routes Sora 2 through the fal queue - and that buys you a few things the others don't: a character_ids field for reusing a persistent character, image-to-video as a first-class mode, and finer duration control (4–20 seconds in steps of 4). It's the "I want Sora but I also want it in my fal-style workflow with character persistence" node.
Like every FAL node here, the token goes in the node's own api_key field and traffic runs through zhenzhen's proxy (https://ai.t8star.org/fal). It submits to fal-ai/sora-2/text-to-video or fal-ai/sora-2/image-to-video depending on your mode, polls, and returns a real VIDEO tensor.
The inputs that matter
prompt- required.mode-auto(default),text_to_video, orimage_to_video.autopicks image-to-video when an image is connected, otherwise text.image/image_url- reference frame for image-to-video. Ifimageis connected it wins; otherwiseimage_url(a public URL) is used.model-sora-2(default),sora-2-2025-12-08, orsora-2-2025-10-06- dated snapshots, so you can pin the version you got good results from.duration- 4, 8, 12, 16, or 20 seconds (4 default - cheap).aspect_ratio-auto, 16:9, or 9:16. Noteautois only truly automatic for image-to-video; text-to-video sends 16:9.resolution-auto(→720p for text-to-video) or720p.character_ids- the interesting one: up to two persistent character IDs, comma/newline separated. This ties into the pack's Sora character system - generate a character once, reference it across videos.delete_video- on by default; removes the generated video from the provider after download (good for privacy, and the README says the pack added this by default to prevent leaks).detect_and_block_ip- off by default; a provider-side safety switch.
Outputs: video, video_url, response. Standard fal polling knobs (poll_interval 6s, max_poll_attempts 600 ≈ 1h).
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
or ComfyUI Manager (search "Comfyui-zhenzhen"), restart, paste a zhenzhen token (overseas https://ai.t8star.org) into api_key.
Common issues
- 500s - retry. Same rule as the whole Sora line: most failures are OpenAI-side, and the README's standing advice is to just run it again.
- Character persistence doesn't stick -
character_idshas to match IDs the pack's character system actually created; re-check how you generated the character first. - Aspect ratio surprises - if you picked
autoon text-to-video and got 16:9, that's expected behavior, not a bug.
Sora's the finicky one in this pack, and the README is honest that even the author gets burned by OpenAI-side flakiness. But if you want Sora with character reuse and an image-to-video door, this node has the most knobs of the three.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| modeopt | COMBO | auto | auto: image/image_url -> image-to-video, otherwise text-to-video. |
| imageopt | IMAGE | — | |
| image_urlopt | STRING | Optional public image URL for image-to-video. If image is connected, this is ignored. | |
| api_keyopt | STRING | — | |
| modelopt | COMBO | sora-2 | 3 options: sora-2, sora-2-2025-12-08, sora-2-2025-10-06 |
| durationopt | COMBO | 4 | 5 options: 4, 8, 12, 16, 20 |
| aspect_ratioopt | COMBO | 16:9 | auto is only available for image-to-video; text-to-video auto is sent as 16:9. |
| resolutionopt | COMBO | 720p | text-to-video auto is sent as 720p. |
| delete_videoopt | BOOLEAN | true | — |
| detect_and_block_ipopt | BOOLEAN | false | — |
| character_idsopt | STRING | Optional character IDs, up to 2, separated by comma or newline. | |
| image_wayopt | COMBO | base64 | 2 options: image_url, base64 |
| poll_intervalopt | INT | 62–30 | — |
| 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 | — |