zhenzhen-qwen-image-global-2.1(文生/图像编辑)
Using the Qwen image model you can't download
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- api_config
- image
- image_url
- task_id
- response
Here's the thing about the Qwen-Image family: the part everyone actually uses is the open part. Qwen-Image-Edit is the default open instruction editor, Apache 2.0, endless LoRAs, no licence drama. Then Qwen-Image-2.0 showed up in February 2026 as a 7B unified generation-and-editing model and launched API-only, no weights. So if you want the 2.x line, you are calling somebody's endpoint. That's what this node is for.
zhenzhen-qwen-image-global-2.1(文生/图像编辑) (T8Zhenzhen_Qwen_Image_Global_21_LowPrice) calls the qwen-image-global-2.1 model through Zhenzhen's low-price channel: text-to-image, or image editing with up to ten reference images, at 1k / 2k / 4k. It runs nothing on your GPU.
Why you'd reach for it
Three honest reasons. You don't have the VRAM - the open 20B base is admired far more than it's run. You want the newer line, which has no weights to install no matter how much VRAM you own. Or you want an editing step cheaply inside an otherwise local graph: relight this, restyle this, then keep working locally.
Where it is not the tool: surgical edits. The Edit line re-emits the whole frame, so pixels nobody asked about move and faces drift across a chain of edits - and this node gives you no mask input. Bake the mask into the image you upload, or accept the drift. For "change one thing and leave the rest alone," a local masked workflow still wins.
How it works
Plain, boring, reliable HTTP. Your prompt, resolution and ratio go into a payload shaped like this:
{"model": "qwen-image-global-2.1",
"prompt": "...",
"metadata": {"ratio": "3:4", "resolution": "2k", "seed": 12345},
"images": ["https://.../uploaded.png", ...]}
With no images connected it's text-to-image and the images key is simply absent. Connect any of image1 … image10 and each one is PNG-encoded, uploaded, and appended in index order - that's the editing path. Then it submits the task, polls with a progress bar, grabs the first URL from the result, downloads it, and returns an IMAGE. There's an image_url, the raw task_id and response alongside it, so you can chase a job on the website if ComfyUI times out first. Note what's missing: no num_images. One run, one image - which is why the pack ships a concurrent submit twin for this node.
The inputs that matter
prompt- required, multiline, and it really must not be empty: the node validates strictly and refuses a blank prompt.resolution-1k,2k,4k, default2k. Andratio-1:1,2:3,3:2,3:4,4:3,9:16,16:9,21:9, default3:4. Those eight are the whole list; there's no "custom" escape hatch here like the sibling nodes have.image1…image10- the editing references, all optional, consumed in order. Each socket must carry exactly one image. Feed one of them a batch of four and the node errors withimage1 must contain exactly one IMAGE. If you have a batch, split it.seed--1default. The tooltip is precise:-1lets the API pick randomly, and0is a valid fixed seed, so it does get sent.-1means every run is a fresh paid render; a fixed seed with an unchanged prompt means ComfyUI may just hand you the cached image back.api_config- theZHENZHEN_SEEDANCE2_CONFIGsocket from the pack's Settings node. Optional only in the "you can use env vars instead" sense: no key wired and noSEEDANCE_API_KEYset, and the node stops with a clear message.skip_error- flip it on and a failure returns a 512×512 placeholder image plus a JSON error blob inresponseinstead of killing the graph. Useful when it's slot six of ten and you don't want to lose the batch.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
# or search "Comfyui-zhenzhen" in ComfyUI Manager, then restart
No model files, no checkpoints, no chatgpt-key-on-the-side. ComfyUI Manager installs the pack's requirements.txt for you (aiohttp, requests, Pillow, numpy, opencv-python and a few more). You need an API key from Zhenzhen's shop - domestic api.seedance.nz, overseas ai.t8star.org - and the pack's own ApiKey JS button is the fastest route to where it goes.
Where people get burned
Region and network. It's an overseas endpoint, and the README's standing notice is that the site needs a working VPN (its words: TUN mode, plus turning off aggressive local firewalls) or you'll just get connection and 443 errors. The code helps where it can: result downloads get a 120-second minimum timeout, and a stale proxy env var that breaks the CDN connection triggers a retry through a session that ignores environment proxies.
Don't trust the pack README for field docs. It's essentially a Chinese changelog with store links and no install section, so the authoritative list of inputs is the node itself - the tooltips in its schema, which is what this article is drawn from.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| resolution | COMBO | 2k | 3 options: 1k, 2k, 4k |
| ratio | COMBO | 3:4 | 8 options: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, +2 |
| seed | INT | -1-1–9007199254740991 | -1 uses a random API seed; 0 is a valid fixed seed. |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| image5opt | IMAGE | — | |
| image6opt | IMAGE | — | |
| image7opt | IMAGE | — | |
| image8opt | IMAGE | — | |
| image9opt | IMAGE | — | |
| image10opt | IMAGE | — | |
| api_configopt | ZHENZHEN_SEEDANCE2_CONFIG | — | |
| skip_erroropt | BOOLEAN | false | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| image_url | STRING | — |
| task_id | STRING | — |
| response | STRING | — |