并发提交|Midjourney 图片
Midjourney on your canvas, in parallel — imagine, blend, edit, upscale, and repaint as batch jobs
- image1
- image2
- image3
- image4
- end_image
- mask
- api_config
- future
Midjourney inside ComfyUI is a weird flex - the KB's closed-source doc points out that Flux basically closed the quality gap, and the community moved on. But a lot of people still have Midjourney subscriptions and a library of MJ work, and this node is how that gets into a workflow. It's the concurrent-submit version of the pack's big 16-in-1 Midjourney node, covering the image-result operations - imagine, blend, edits, upscale, variation, reroll, zoom, pan, and the modal region repaint.
The wrapper pattern is unchanged: fill the parameters, the node validates, then the job goes to the background image thread pool and you get a SEEDANCE_IMAGE_FUTURE back. That goes into SeedanceConcurrent_Image_Await, which waits on up to thirty image futures and returns them in slot order. Thirty MJ images in one batch, all through one receiver - that's the whole point of this node.
The inputs that matter
This node has a genuinely huge field set, because the underlying 16-in-1 node does, and which fields matter depends entirely on operation:
operation- the action dropdown; the Chinese suffix after each ID tells you what it does.midjourney-imaginefor text/ref generation,blendfor 2–4 image fusion,upscale/variation/rerollfor the second-pass actions,modalfor region repaint.prompt- the prompt or edit instruction; external STRING nodes feed in fine.speed(relax/fast/turbo),size/custom_size,version(default 8.2),quality- the standard MJ knobs, mostly at their documented defaults.task_id/index/custom_id- how you chain: connect a prior Midjourney node'stask_idand pick the image index (1–4) for upscale/variation.image1…image4(local) orimage_url1…image_url4- reference images for blend/edits; don't fill both sides of the same slot.mask/modal_mode- for the repaint action, region mode takes a ComfyUI mask (white = repainted); the no-maskoutpaintmode is still rejected upstream per the README.
Plus the pack's standard api_config, skip_error, and seed. The seed here is real MJ seed plumbing - -1 means don't send it, and fixed on the ComfyUI side also reuses cache.
How it runs
The wrapper calls the pack's Midjourney client with an explicit action path, polls to a documented terminal state (including the MODAL state, which is a legal "waiting for params" stop), downloads the result image(s), and returns a normal IMAGE. The image pool defaults to 30 workers, tunable via SEEDANCE_IMAGE_CONCURRENCY.
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
Only requests; no weights. API key via Seedance API Config, SEEDANCE_API_KEY, or config/.env.
Where people trip
indexsemantics - 1–4 for image actions, but 0–3 when a Video task reuses a task. The tooltip says it plainly; get it backwards and you'll reference the wrong candidate.outpaintwithout a mask - documented upstream limitation; the pack keeps the field but the modal flow currently needsregion+ a mask.- Relax vs fast -
relaxis the default and can queue a long time if the account is congested. If a batch seems stalled, that's likely it.
It's the API-wrapper trade all over again: your prompts and images go to the gateway, and every action is metered. With MJ specifically, remember the account itself is usually a subscription - the pack just puts a ComfyUI face on it.
Inputs (54)
| Name | Type | Default | Description |
|---|---|---|---|
| operation | COMBO | midjourney-imagine|文生图 / 参考图生成 | 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_IMAGE_FUTURE | — |