并发提交|Midjourney 视频
Midjourney image-to-video as a batch job — parallel clips from stills and start/end frames
- image1
- image2
- image3
- image4
- end_image
- mask
- api_config
- future
Midjourney's image-to-video is the part of MJ that people actually lean on these days - you generate a still you love, then ask for the motion. This node is the concurrent-submit wrapper around that, and it's deliberately split from the image one: the pack keeps Midjourney image futures and video futures on separate submit nodes so the receiver types don't get confused. You generate images with the image submit node; you animate them with this one.
The wrapper mechanics are pack-standard: parameters are validated, then the job runs on a background video thread pool and returns a SEEDANCE_VIDEO_FUTURE. Wire it into SeedanceConcurrent_Video_Await, which waits on up to ten video futures and hands back finished VIDEO values in slot order. Animate three stills from the same shoot as a batch - three of these, one receiver.
The inputs that matter
operation- basicallymidjourney-video(image-to-video / start-end). The node's dropdown is the video action; everything else is the parameter set that action needs.image1(local) orimage_url1- your source still.image1…image4exist as slots, but i2v really wants the first one.end_image/end_url- the optional end frame. Set one and the request flips into start-end video mode automatically. That's the cleanest way to get a loop that actually closes.video_type-vid_1.1_i2v_480,vid_1.1_i2v_720, or the two_start_end_variants. This is the resolution/frame-mode switch.motion(low/high),animate_mode(manual/auto),batch_size(1/2/4) - the motion tuning knobs.prompt- optional, but you'll get better motion than pure "animate this" for most clips.- The standard MJ chain fields -
task_id,index(0–3 for task-reuse video),custom_id- plusspeed,size,version,seed.
Plus api_config, skip_error, and the cache seed.
How it runs
The wrapper uses the same Midjourney client as the image node but targets the video action, polls to terminal state, and downloads the clip (with the MP4-header check the pack applies to all video results). Because the video result family has its own submit node, the future it returns is typed for the 10-slot video receiver - you can mix it with Kling, Seedance, Hailuo futures in the same receiver if you're feeling ambitious.
Installing
# ComfyUI Manager: search "ComfyUI Seedance" → install → restart.
# or:
comfy node install seedance
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/ComfyUI_Seedance.git
cd ../.. && python -m pip install -r custom_nodes/ComfyUI_Seedance/requirements.txt
Just requests; no weights. API key via Seedance API Config, SEEDANCE_API_KEY, or config/.env.
Where people trip
- Wrong node, wrong receiver - grab the image submit node when you meant video and you'll hand an
IMAGEfuture to a video receiver and get a type error. They're separate for a reason. indexon task-reuse video is 0–3, not 1–4 - a different convention from image actions; the tooltip calls it out.- Start-end needs both frames - if you set an end frame, expect validation to require the pair, and pick a
_start_end_video_typeto match.
Standard pack caveats: metered per clip, prompt and stills leave the machine, and links are temporary. Save the clips you keep.
Inputs (54)
| Name | Type | Default | Description |
|---|---|---|---|
| operation | COMBO | midjourney-video|图生视频 / 首尾帧 | Select a documented Midjourney action; the suffix explains its use. | 选择 Midjourney 操作,后缀标明用途。 |
| prompt | STRING | Prompt or edit instruction. External STRING inputs are supported. | 提示词或编辑指令,支持外部 STRING 节点。 | |
| speed | COMBO | relax | Action speed; relax is the documented default. | 速度模式,默认 relax。 |
| size | COMBO | 1:1 | Common aspect ratios; choose custom to enter another w:h ratio. | 常用画面比例,选择 custom 可手填其他 w:h 比例。 |
| custom_size | STRING | Used only when size is custom; enter a positive w:h ratio. | 仅 size 选择 custom 时使用,请填写正整数比例 w:h。 | |
| dimensions | COMBO | SQUARE | Blend preset ratio; size takes priority. | Blend 预设比例。 |
| quality | COMBO | 1 | Imagine/Edits quality; default 1. | Imagine/Edits 质量,默认 1。 |
| style | STRING | Optional style, for example raw. | 可选风格。 | |
| version | COMBO | 8.2 | Midjourney version; default 8.2. | Midjourney 版本,默认 8.2。 |
| seed | INT | -1-1–4294967295 | Fixed reuses the cached result while all inputs stay unchanged; randomize/increment/decrement starts a new execution. | Fixed 在输入不变时复用缓存;随机、递增或递减会触发新任务。 |
| negative_prompt | STRING | Optional --no content. | 可选负面提示词。 | |
| stylize | INT | -1-1–1000 | — |
| chaos | INT | -1-1–100 | — |
| weird | INT | -1-1–3000 | — |
| tile | BOOLEAN | false | — |
| niji | BOOLEAN | false | — |
| iw | FLOAT | -1.0-1–3 | — |
| cw | INT | -1-1–100 | — |
| sw | INT | -1-1–1000 | — |
| cref | STRING | Character reference URL. | 角色参考图 URL。 | |
| sref | STRING | Style reference URL. | 风格参考图 URL。 | |
| dref | STRING | Depth reference URL. | 深度参考图 URL。 | |
| dw | FLOAT | -1.0-1–100 | — |
| repeat | INT | 00–40 | — |
| raw | BOOLEAN | false | — |
| draft | BOOLEAN | false | — |
| hd | BOOLEAN | false | — |
| stop | INT | 00–100 | — |
| extra | STRING | Optional native MJ flags. | 可选原生 MJ 参数。 | |
| task_id | STRING | Source Midjourney task id; connect a previous node. | 源 Midjourney 任务 ID,可连接上游节点。 | |
| index | INT | -1-1–4 | Use 1-4 for image actions; Video task mode uses 0-3. | 图像操作用 1-4,Video 任务模式用 0-3。 |
| custom_id | STRING | Optional button customId. | 可选按钮 customId。 | |
| direction | COMBO | right | Pan direction. | Pan 平移方向。 |
| zoom_ratio | FLOAT | 2.01–2 | — |
| modal_mode | COMBO | region | Region uses a mask; outpaint sends no mask. | region 使用遮罩,outpaint 不发送遮罩。 |
| video_type | COMBO | vid_1.1_i2v_480 | 4 options: vid_1.1_i2v_480, vid_1.1_i2v_720, vid_1.1_i2v_start_end_480, vid_1.1_i2v_start_end_720 |
| animate_mode | COMBO | manual | 2 options: manual, auto |
| motion | COMBO | high | 2 options: low, high |
| batch_size | COMBO | 1 | 3 options: 1, 2, 4 |
| metadata_json | STRING | Optional JSON object stored with the task. | 可选任务 metadata JSON。 | |
| image_url1 | STRING | Public image URL or image data URL 1. | 公网图片或 data URL 1。 | |
| image_url2 | STRING | Public image URL or image data URL 2. | 公网图片或 data URL 2。 | |
| image_url3 | STRING | Public image URL or image data URL 3. | 公网图片或 data URL 3。 | |
| image_url4 | STRING | Public image URL or image data URL 4. | 公网图片或 data URL 4。 | |
| end_url | STRING | Optional public video end-frame URL. | 可选结束帧 URL。 | |
| mask_url | STRING | Optional modal mask URL or data URL. | 可选 Modal 遮罩 URL。 | |
| image1opt | IMAGE | Local image 1; do not fill image_url1 together. | 本地图片 1,不能与同槽 URL 同时使用。 | |
| image2opt | IMAGE | Local image 2; do not fill image_url2 together. | 本地图片 2,不能与同槽 URL 同时使用。 | |
| image3opt | IMAGE | Local image 3; do not fill image_url3 together. | 本地图片 3,不能与同槽 URL 同时使用。 | |
| image4opt | IMAGE | Local image 4; do not fill image_url4 together. | 本地图片 4,不能与同槽 URL 同时使用。 | |
| end_imageopt | IMAGE | Optional local video end frame. | 可选视频结束帧。 | |
| maskopt | MASK | ComfyUI mask for modal region repaint. White is repainted. | Modal 局部重绘遮罩,ComfyUI 白色区域会被重绘。 | |
| api_configopt | SEEDANCE_CONFIG | Connect Seedance API Config; otherwise SEEDANCE_API_KEY is used. | |
| skip_erroropt | BOOLEAN | false | Return placeholders and an error response instead of stopping. | 失败时返回占位结果和错误信息。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| future | SEEDANCE_VIDEO_FUTURE | — |