qwen / 20b / createVariant
Variant of a Qwen render, text included, on the cloud
- image
- loras
- api_config
- images
- errors
- workflow_id
- raw_json
The img2img variant of the Qwen-Image cloud node. You feed it an image plus a prompt, and it re-renders that image with Qwen's 20B MMDiT on Civitai's sdcpp fleet - same text-rendering chops, no 20B download. This is the node for "I like this render, now redo it with different words on the sign / a different mood / a different composition," where the words actually need to stay legible.
It's the natural companion to the Qwen create node, and it inherits the same defining strength: legible text survives into the variant. An img2img pass on most models will smear a logo into noise; Qwen re-renders it properly. One structural quirk to know: this node makes width and height required - unlike the create node, you must declare the output size, and there's no auto-inferring from the input.
How it works
Standard pack client: submit engine: sdcpp, ecosystem: qwen, model: 20b, operation: createVariant with the source image, prompt, size, and strength; long-poll; get a ComfyUI IMAGE back.
The inputs that matter
- prompt (required) - the change you want. Include any text that should appear, spelled exactly.
- image (required,
IMAGE) - the source to re-render. - width / height (required) - the output size, no default inference. Match the source's aspect or Qwen will reframe it.
- strength - how much of the original survives. Low (~0.4) restyles, high (~0.7) rewrites.
- version -
latest/2509/2512, pinning the Qwen build. - steps / cfg_scale - 20 / 2.5 defaults.
Install
Pack install: ComfyUI Manager → "Civitai Comfy Nodes" → Install → restart, or clone https://github.com/civitai/civitai-comfy-nodes.git into custom_nodes, pip install -r civitai-comfy-nodes/requirements.txt (just requests), restart.
Common issues
Credentials: Civitai Auth node into api_config or CIVITAI_API_TOKEN env var (from civitai.com/user/account); headless needs the env var.
Two variant-specific traps. First, the required width/height: people wire the image and queue without setting size, and the node blocks with a missing-required-input error - this is one of the few nodes in the pack that validates it locally. Second, text preservation is good but not telepathic: if you change the composition substantially (high strength), expect the text to be re-set in the new frame rather than transferred pixel-for-pixel. Spell it out in the prompt if the words matter.
Billing: 20B variant jobs are mid-weight, and there's no free retry. Nail the strength at quantity: 1 before scaling up.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| image | IMAGE | Either A URL, A DataURL or a Base64 string | |
| width | INT | 00–2048 | — |
| height | INT | 00–2048 | — |
| output_formatopt | COMBO | 4 options: , jpeg, png, webP | |
| image_metadataopt | STRING | External metadata that will be stored with the image | |
| negative_promptopt | STRING | — | |
| sample_methodopt | COMBO | 16 options: , euler, heun, dpm2, dpm++2s_a, dpm++2m, +10 | |
| scheduleopt | COMBO | 12 options: , simple, discrete, karras, exponential, ays, +6 | |
| stepsopt | INT | 201–150 | — |
| cfg_scaleopt | FLOAT | 2.500–30 | — |
| seedopt | INT | 00–4294967295 | — |
| quantityopt | INT | 11–12 | — |
| lorasopt | CIVITAI_LORAS | — | |
| versionopt | COMBO | latest | 3 options: latest, 2509, 2512 |
| strengthopt | FLOAT | 0.700–1 | — |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| errors | STRING | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |