Nodes/Comfyui-zhenzhen/zhenzhen-moss-image(生成/编辑·平价小屋)
ComfyUI Node

zhenzhen-moss-image(生成/编辑·平价小屋)

A text-to-image and reference-edit node that runs on someone else's GPU

By T8mars·Created about a year ago·Updated 3 days ago· 755
zhenzhen-moss-image(生成/编辑·平价小屋)
  • image1
  • api_config
  • image
  • image_url
  • task_id
  • response
◄prompt►
◄ratio9:16►
◄skip_errorfalse►
◄seed0►

T8Zhenzhen_Moss_Image_LowPrice is not a model. Nothing to download, nothing in models/checkpoints, zero VRAM. It's an HTTP client with a nice face on it: you type a prompt, optionally drop in one reference image, and the node ships both to a paid API, waits, downloads the result, and hands it back as an ordinary IMAGE tensor the rest of your graph can't distinguish from a local sampler's output.

A node for a model you genuinely can't run locally, as opposed to renting a GPU for an open one. The work happens on the "贞贞的平价AI小屋" (roughly: Zhenzhen's cheap AI shop) channel - the author's low-price reseller for domestic users, and the pack's default base_url.

One thing before you invest time: this is brand new. The changelog dates moss-image to the 2026-10-23 update - about a day old as I write this, with essentially no community chatter. Not a red flag, just an honest "you're early, there are no tutorials, and you may hit the first bug."

How it works under the hood

The node builds a payload - model: "moss-image", your prompt, metadata.ratio - and POSTs it to {base_url}/v1/image/generations. A connected reference image is converted to PNG, uploaded to /v1/files/upload first, and its URL goes into the payload's images array. The endpoint is async: you get a task_id back immediately, then the node polls /v1/image/generations/{task_id} roughly every 4 seconds - 30-minute default ceiling - and downloads and decodes the result to an IMAGE.

Two consequences: most of your wall-clock time is the node sitting in a poll loop doing nothing - hence this pack's concurrent submit twin - and the async task survives a ComfyUI timeout, which is what task_id is for.

The inputs you actually touch

prompt is required and does double duty - a description when you're generating, an editing instruction when image1 is connected. It's multiline, so use it.

ratio is where the first surprise lives: eight fixed choices, default 9:16. Shooting landscape? Change it every time. There's no resolution or quality knob at all - you take what the model gives you at that aspect.

image1 takes one optional reference image. One. Pass a batch and it fails validation rather than quietly taking the first frame. Disconnect it and you're doing text-to-image.

api_config is the ZHENZHEN_SEEDANCE2_CONFIG output from the pack's settings node (Comfly_seedance2_low_price_settings) - base_url plus api_key. Prefer not to put the key in a workflow? It also reads SEEDANCE_API_KEY / SEEDANCE_BASE_URL from the environment.

skip_error defaults off. Turn it on and a failure returns a 512×512 placeholder instead of killing the run - handy overnight, mildly dangerous if you don't check outputs before publishing.

seed is cache control only - the author's tooltip says so. It never reaches the API. Fixed seed with unchanged inputs reuses ComfyUI's cached result; it does not mean "same image on the server."

Outputs: image (into Preview Image / Save Image), image_url (the hosted file - grab it while it lives), task_id (find it in the site's async task list if ComfyUI gave up first), and response (raw JSON, for when something smells wrong).

Installing it

No models, but a fat dependency list - aiohttp, openai, transformers, huggingface-hub, matrix-client and friends in the pack's requirements.txt. In ComfyUI Manager, search the pack title zhenzhen (registry publisher t8star), or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
cd Comfyui-zhenzhen && pip install -r requirements.txt
# restart ComfyUI

Then add the settings node, paste your key, leave base_url at https://api.seedance.nz unless told otherwise, and wire its api_config output in. The node also draws a "get a key" button linking to the channel's signup page.

When it goes wrong

The error strings are plain enough to work backwards from. "has an empty api_key" means the settings node is wired but blank - usually a saved workflow whose key was deliberately stripped. "Seedance API key is required" means there's no settings node at all. "Moss requires one valid reference IMAGE, not a batch" is exactly that: split your batch loader. "Unsupported Moss aspect ratio" is a stale workflow carrying a ratio the current enum dropped; re-pick the dropdown.

Big-result download failures are the pack's most-documented real pain, and the README's fix is on the account side: log in, edit the token you're using, set its object-storage region to CN or US. That advice dates from the Nano Banana Pro 4K era, but huge files on a cross-border CDN are a generic problem. The code has since hardened too - download timeouts floor at 120 seconds, and a broken HTTP_PROXY / HTTPS_PROXY env var gets retried through a proxy-free session. On the overseas domain rather than this one, the README's 443/TLS advice applies: that channel wants a working VPN in TUN mode, and flaky VPN clients are the usual culprit.

And it's a third-party pack holding a key and calling the network by design - so use one you're willing to rotate.

Categoryzhenzhen/Seedance2 Low Price

Inputs (6)

NameTypeDefaultDescription
promptSTRINGRequired image description or editing instruction.
ratioCOMBO9:168 options: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, +2
image1optIMAGEOne optional reference image; disconnect for text generation. Batches are not supported.
api_configoptZHENZHEN_SEEDANCE2_CONFIG—
skip_erroroptBOOLEANfalse—
seedoptINT00–18446744073709550000Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter.

Outputs (4)

NameTypeDescription
imageIMAGE—
image_urlSTRING—
task_idSTRING—
responseSTRING—