Nodes/ComfyUI_Seedance/并发提交|Hailuo H3 Max 视频生成(4 合 1)
ComfyUI Node

并发提交|Hailuo H3 Max 视频生成(4 合 1)

The concurrent submit node, explained

By T8mars·Created 2 months ago·Updated 2 days ago· 31
并发提交|Hailuo H3 Max 视频生成(4 合 1)
  • image1
  • image2
  • api_config
  • future
modelhailuo-h3-max-t2v
prompt
seconds5
resolution480P
ratio16:9
skip_errorfalse
seed0

Let's be clear about the trap up front: this node looks like the plain Hailuo H3 Max generator but it will not hand you a video. Look at its title - 并发提交|Hailuo H3 Max 视频生成(2 合 1) - "并发提交" means concurrent submit. It takes the exact same inputs as the Hailuo_H3_Max_Video node, fires the job off to the API, and returns a single future handle instead of blocking on the result. If you wire that handle to nothing, you get nothing back. This is one half of the ComfyUI_Seedance pack's optional batching system, and it's how you queue up multiple H3 Max generations in parallel instead of one slow clip at a time.

Why you'd bother

The plain H3 Max node runs one generation per execution - you hit run, you wait for the poll to finish, you get one clip. For anything where the queue is the bottleneck - A/B-testing prompts, trying every ratio on one idea, filling a 10-second edit from several takes - that's tedious. This wrapper splits the job in two: a submit node that starts the API calls, and a receive node (并发接收视频(10 路), class SeedanceConcurrent_Video_Await) that waits on up to ten of those handles at once and hands back the finished videos, in slot order. Same model limits as the base node - the two H3 Max models, 5–15 seconds, 480P/768P - just multiplied.

You can even mix and match. The receive node doesn't care what model a future came from, so lane 1 can be an H3 Max text-to-video while lane 2 is, say, a Kling job from the same pack. Each original node has its own wrapper precisely because the inputs differ; the futures they emit are the same type.

How the wiring works

Build it like this: drop in several SeedanceConcurrent_Hailuo_H3_Max_Video_Submit nodes with your prompts and settings, run each one's future output into the receive node's future_1, future_2, … slots, and let the receiver be the thing that actually waits. It runs the lanes concurrently in a thread pool, preserves your slot order in the outputs, and emits video_1 through video_10 plus a status_json string.

Two settings shape failure behavior:

  • skip_error (on each submit node) - a failed lane returns a placeholder error video instead of killing the whole batch. Failures are isolated per lane, so one bad prompt doesn't cancel the other nine.
  • failure_mode (on the receive node) - raise stops and points at the offending slot; placeholder keeps the good lanes and reports what happened in status_json.

The inputs that matter

Inputs are a straight copy of the base generator: model (hailuo-h3-max-t2v or hailuo-h3-max-i2v), required prompt, seconds, resolution, ratio (T2V) and image1/image2 (I2V first/last frames), plus api_config, skip_error and the cache-only seed. Same rules apply - T2V demands a fixed ratio, I2V demands a first frame and ignores ratio entirely. The one and only output is future, typed SEEDANCE_VIDEO_FUTURE, and it must reach a receive node or the work you triggered has nowhere to report back.

Installing and running it

It ships inside the ComfyUI_Seedance pack, so install that once and you get both halves. Manager, search ComfyUI Seedance; or:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/ComfyUI_Seedance
cd ../..
python -m pip install -r custom_nodes/ComfyUI_Seedance/requirements.txt

The only dependency is requests - no local models, no heavy downloads. Restart ComfyUI and the wrappers live under the Seedance/并发提交 category. Credentials work like every other node in the pack: a Seedance API Config node into api_config, or the SEEDANCE_API_KEY env var / config/.env fallback. And the same README caveat applies - the signup links there are affiliate links, but any valid key for your base_url does the job; keep keys out of shared workflows.

Where people get burned

The cost is the big one, and it's easy to forget because nothing on the canvas looks expensive. Ten concurrent 15-second clips is a tenfold bill hitting at once - verify with one cheap 5-second 480P run before you parallelize. If you want more or fewer workers than the default, SEEDANCE_VIDEO_CONCURRENCY (1–10) sets the thread pool size. And the classic beginner stumble remains: paste the wrapper in, run it, and wonder why nothing plays - because the future went to no receive node. If you just want one clip and you're not batching, the plain Hailuo_H3_Max_Video node is the simpler tool, and it's fine to keep using it. This one earns its keep the moment "one at a time" stops being enough.

CategorySeedance/并发提交

Inputs (10)

NameTypeDefaultDescription
modelCOMBOhailuo-h3-max-t2vH3 Max/Max Turbo text-to-video or first/last-frame image-to-video. | H3 Max/Max Turbo 文生视频或首尾帧图生视频。
promptSTRINGRequired for every H3 Max model, 1 to 20480 characters. | 所有 H3 Max 模型均必填,长度 1 到 20480 个字符。
secondsCOMBO5H3 Max supports 5 to 15 seconds. | H3 Max 支持 5 到 15 秒。
resolutionCOMBO480PH3 Max uses uppercase 480P/768P; Max Turbo uses lowercase 480p/768p. | H3 Max 使用大写 480P/768P;Max Turbo 使用小写 480p/768p。
ratioCOMBO16:9Required by H3 Max T2V; H3 Max I2V follows the input frame and does not send this field. | H3 Max 文生视频必填;图生视频跟随输入帧,不会发送此字段。
image1optIMAGERequired first frame for H3 Max I2V. | H3 Max 图生视频必填首帧。
image2optIMAGEOptional last frame for H3 Max I2V. | H3 Max 图生视频可选尾帧。
api_configoptSEEDANCE_CONFIGConnect Seedance API Config; otherwise SEEDANCE_API_KEY is used.
skip_erroroptBOOLEANfalseOn failure return a placeholder error video instead of stopping the workflow. | 失败时输出占位错误视频并继续工作流。
seedoptINT00–18446744073709550000ComfyUI cache seed. Fixed reuses the cached result while all other inputs stay unchanged; randomize/increment/decrement starts a new execution. This value is not sent to models without documented seed support. | ComfyUI 缓存种子;Fixed 在其他输入不变时复用缓存,随机、递增或递减会触发新任务。未声明支持 seed 的模型不会收到此参数。

Outputs (1)

NameTypeDescription
futureSEEDANCE_VIDEO_FUTURE