Nodes/ComfyUI Seedance/Midjourney 图像与视频(16 合 1)
ComfyUI Node

Midjourney 图像与视频(16 合 1)

16 operations, one node

By T8mars·Created 2 months ago·Updated 3 days ago· 31
Midjourney 图像与视频(16 合 1)
  • image1
  • image2
  • image3
  • image4
  • end_image
  • mask
  • api_config
  • image1
  • image2
  • image3
  • image4
  • grid_image
  • video1
  • video2
  • video3
  • video4
  • text
  • primary_url
  • result_urls
  • primary_path
  • result_paths
  • task_id
  • buttons_json
  • response
operationmidjourney-imagine|文生图 / 参考图生成
prompt
speedrelax
size1:1
custom_size
dimensionsSQUARE
quality1
style
version8.2
seed-1
negative_prompt
stylize-1
chaos-1
weird-1
tilefalse
nijifalse
iw-1.0
cw-1
sw-1
cref
sref
dref
dw-1.0
repeat0
rawfalse
draftfalse
hdfalse
stop0
extra
task_id
index-1
custom_id
directionright
zoom_ratio2.0
modal_moderegion
video_typevid_1.1_i2v_480
animate_modemanual
motionhigh
batch_size1
metadata_json
image_url1
image_url2
image_url3
image_url4
end_url
mask_url
skip_errorfalse

This is the node that puts Midjourney - the most famous closed image service in the world - inside your ComfyUI graph, and it does it with a 16-operation dropdown: Imagine, Blend, Describe, edits, upscale, variation, reroll, zoom, pan, inpaint, remix, and image-to-video. Pick an operation and the node collapses to just the fields that action needs; the rest of the ~40 inputs hide themselves. If you've ever wished your MJ work lived next to your local masking and upscaling instead of in Discord, this is the closest you'll get without Discord.

Same pack deal as everything here: T8mars/ComfyUI_Seedance, API wrapper, key from api.seedance.nz, requests only, no local models.

How it works

Each operation maps to a documented Midjourney action on the gateway. The node maintains an explicit action spec with a per-action field whitelist, so hidden fields never leak into requests. Two mechanisms matter for chaining:

  • task_id - connect the task_id output of one Midjourney node into the next one's task_id input to run Upscale/Variation/Reroll/Zoom/Pan/Inpaint/Remix on the previous result. That's how you build a full pipeline.
  • buttons_json - the server returns the available buttons and their custom IDs; you can paste one into custom_id instead of fiddling with index.

Local images (image1..image4) get uploaded automatically; you can also paste public URLs into the matching image_urlN fields (don't set both for the same slot - the tooltip warns).

The inputs that matter

  • operation - the steering wheel, with the Chinese use-note in the dropdown label.
  • prompt - generation or edit instruction; supports external STRING nodes.
  • speed (default relax - the cheap tier), size (common ratios, custom opens custom_size for any w:h), quality (default 1), version (default 8.2), style, seed.
  • task_id / index / custom_id - the chaining trio for follow-up operations. index is 1–4 for image actions, 0–3 for video - that off-by-one is a classic trip.
  • modal_mode / mask - for Inpaint: region mode wants a ComfyUI MASK (white is repainted). The documented no-mask outpaint is rejected upstream right now, so plan around region.
  • The MJ parameter zoo (stylize, chaos, weird, tile, niji, iw, cw, sw, cref, sref, dref, dw, repeat, raw, draft, hd, stop, extra) - leave them alone until you know what you're doing; extra even lets you pass native --flags.

Outputs are the full spread: image1..4, grid_image, video1..4, text (Describe results), primary_url/result_urls, primary_path/result_paths, task_id, buttons_json, response.

Installing it

ComfyUI Manager → search "ComfyUI 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

Restart, key from api.seedance.nz/console, Seedance API Config into api_config.

Common issues

  • Follow-up action ignores your image - chained operations (upscale, variation…) run off task_id, not re-uploaded images. Connect the upstream task_id.
  • Wrong image chosen - index starts at 1 for image actions. If your variation picks the wrong candidate, check it's in 1–4.
  • Inpaint stuck in "MODAL" - that's a legal intermediate state where the API waits for the mask/region. Run Inpaint, let it reach MODAL, then feed the mask into a Modal/region step. Don't fight it.
  • Outpaint refused - known upstream issue; use region mode with a mask instead.

Midjourney is the most opinionated model in this pack - its whole culture is Discord buttons and --parameters, and this node faithfully reproduces both. If you just want clean image generation without the ceremony, the pack's Qwen Image or Seedream nodes are the no-Drama option.

CategorySeedance

Inputs (54)

NameTypeDefaultDescription
operationCOMBOmidjourney-imagine|文生图 / 参考图生成Select a documented Midjourney action; the suffix explains its use. | 选择 Midjourney 操作,后缀标明用途。
promptSTRINGPrompt or edit instruction. External STRING inputs are supported. | 提示词或编辑指令,支持外部 STRING 节点。
speedCOMBOrelaxAction speed; relax is the documented default. | 速度模式,默认 relax。
sizeCOMBO1:1Common aspect ratios; choose custom to enter another w:h ratio. | 常用画面比例,选择 custom 可手填其他 w:h 比例。
custom_sizeSTRINGUsed only when size is custom; enter a positive w:h ratio. | 仅 size 选择 custom 时使用,请填写正整数比例 w:h。
dimensionsCOMBOSQUAREBlend preset ratio; size takes priority. | Blend 预设比例。
qualityCOMBO1Imagine/Edits quality; default 1. | Imagine/Edits 质量,默认 1。
styleSTRINGOptional style, for example raw. | 可选风格。
versionCOMBO8.2Midjourney version; default 8.2. | Midjourney 版本,默认 8.2。
seedINT-1-1–4294967295Fixed reuses the cached result while all inputs stay unchanged; randomize/increment/decrement starts a new execution. | Fixed 在输入不变时复用缓存;随机、递增或递减会触发新任务。
negative_promptSTRINGOptional --no content. | 可选负面提示词。
stylizeINT-1-1–1000
chaosINT-1-1–100
weirdINT-1-1–3000
tileBOOLEANfalse
nijiBOOLEANfalse
iwFLOAT-1.0-1–3
cwINT-1-1–100
swINT-1-1–1000
crefSTRINGCharacter reference URL. | 角色参考图 URL。
srefSTRINGStyle reference URL. | 风格参考图 URL。
drefSTRINGDepth reference URL. | 深度参考图 URL。
dwFLOAT-1.0-1–100
repeatINT00–40
rawBOOLEANfalse
draftBOOLEANfalse
hdBOOLEANfalse
stopINT00–100
extraSTRINGOptional native MJ flags. | 可选原生 MJ 参数。
task_idSTRINGSource Midjourney task id; connect a previous node. | 源 Midjourney 任务 ID,可连接上游节点。
indexINT-1-1–4Use 1-4 for image actions; Video task mode uses 0-3. | 图像操作用 1-4,Video 任务模式用 0-3。
custom_idSTRINGOptional button customId. | 可选按钮 customId。
directionCOMBOrightPan direction. | Pan 平移方向。
zoom_ratioFLOAT2.01–2
modal_modeCOMBOregionRegion uses a mask; outpaint sends no mask. | region 使用遮罩,outpaint 不发送遮罩。
video_typeCOMBOvid_1.1_i2v_4804 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_modeCOMBOmanual2 options: manual, auto
motionCOMBOhigh2 options: low, high
batch_sizeCOMBO13 options: 1, 2, 4
metadata_jsonSTRINGOptional JSON object stored with the task. | 可选任务 metadata JSON。
image_url1STRINGPublic image URL or image data URL 1. | 公网图片或 data URL 1。
image_url2STRINGPublic image URL or image data URL 2. | 公网图片或 data URL 2。
image_url3STRINGPublic image URL or image data URL 3. | 公网图片或 data URL 3。
image_url4STRINGPublic image URL or image data URL 4. | 公网图片或 data URL 4。
end_urlSTRINGOptional public video end-frame URL. | 可选结束帧 URL。
mask_urlSTRINGOptional modal mask URL or data URL. | 可选 Modal 遮罩 URL。
image1optIMAGELocal image 1; do not fill image_url1 together. | 本地图片 1,不能与同槽 URL 同时使用。
image2optIMAGELocal image 2; do not fill image_url2 together. | 本地图片 2,不能与同槽 URL 同时使用。
image3optIMAGELocal image 3; do not fill image_url3 together. | 本地图片 3,不能与同槽 URL 同时使用。
image4optIMAGELocal image 4; do not fill image_url4 together. | 本地图片 4,不能与同槽 URL 同时使用。
end_imageoptIMAGEOptional local video end frame. | 可选视频结束帧。
maskoptMASKComfyUI mask for modal region repaint. White is repainted. | Modal 局部重绘遮罩,ComfyUI 白色区域会被重绘。
api_configoptSEEDANCE_CONFIGConnect Seedance API Config; otherwise SEEDANCE_API_KEY is used.
skip_erroroptBOOLEANfalseReturn placeholders and an error response instead of stopping. | 失败时返回占位结果和错误信息。

Outputs (17)

NameTypeDescription
image1IMAGE
image2IMAGE
image3IMAGE
image4IMAGE
grid_imageIMAGE
video1VIDEO
video2VIDEO
video3VIDEO
video4VIDEO
textSTRING
primary_urlSTRING
result_urlsSTRING
primary_pathSTRING
result_pathsSTRING
task_idSTRING
buttons_jsonSTRING
responseSTRING