NAI 图片变体
Same image, new angles — variations without the surprise
- image
- nai_pipe
- positive
- negative
- core_settings
- advanced_settings
- 图像批次
- 实际Seed列表
- 费用与统计
You made an image you mostly like. Now you want four takes on it - same character, same composition, different details. That's NovelAI's Variations feature, and NAIVariationsModularV2 is how you get it inside ComfyUI with the whole modular pipeline attached.
What it is
It's the img2img-flavored cousin of the text-to-image sampler, built specifically for variations. Inputs: an IMAGE to vary, plus the full modular stack - NAI_PIPE, positive and negative prompts, core and advanced settings cards. Then the controls that shape the variation:
variation_count- 1 to 4 variations per run. NovelAI's per-request limit applies here too.strength(default 0.35) - how much the output is allowed to diverge from the source. Low keeps it near-identical, high lets it wander. The default is deliberately conservative.noise(default 0) - extra noise to add on top. Most people leave it at 0; it's there when the variation feels too "stuck" to the original.seedandmax_anlas- same roles as the sampler: reproducibility and the spending cap.
Outputs
Same three-port shape as the sampler: 图像批次 (IMAGE) with your variations, 实际Seed列表 (STRING) with the real seeds per variation, and 费用与统计 (STRING) with the Anlas tally. The seeds are the important part again - NovelAI's variations are derived from the source image plus the seed, so the seed string is what lets you reproduce a specific variation or skip to variation N+1.
How to think about it
The strength slider is the whole game. At 0.35 it reads as "same person, slightly different pose/expression"; crank it toward 0.6 and it becomes a remix. The KB's upscaling essay makes a related point that applies here: any generative pass over an existing image rewrites identity as a function of how hard it's pushed. Faces and details will drift with strength, and if you need the exact same face across variations, your LoRA/reference pipeline has to do that work - this node won't.
It costs Anlas per request (one request per run, up to 4 variations in it), and max_anlas is enforced before the API call. It also always re-runs rather than letting ComfyUI's cache skip it, which is the correct behavior for a paid node.
Install and setup
Part of ComfyUI-NovelAI-GENYTOOLS. Manager search, or:
cd ComfyUI/custom_nodes
git clone https://github.com/XTOGENY/ComfyUI-NovelAI-GENYTOOLS.git
pip install -r ComfyUI-NovelAI-GENYTOOLS/requirements.txt
Restart, then set the NovelAI Persistent API Token in ComfyUI settings under NovelAI 2.0: Persistent API Token. Nothing to download - NovelAI's models run on their servers.
Gotchas
strengthis the knob,noiseis the emergency lever. If variations come out too similar, nudge strength up; reach for noise only when strength alone can't break it free.- The prompt is not ignored - it steers the variation on top of the source image. Keep it consistent with the original prompt or the variation will drift toward whatever you changed.
- Read the stats string after a run. If NovelAI changes its cost model (it has, repeatedly), the node's stats output and your balance page are the two sources of truth.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| nai_pipe | NAI_PIPE | — | |
| positive | NAI_POSITIVE_PROMPT | — | |
| negative | NAI_NEGATIVE_PROMPT | — | |
| core_settings | NAI_CORE_SETTINGS | — | |
| advanced_settings | NAI_ADVANCED_SETTINGS | — | |
| variation_count | INT | 41–4 | — |
| strength | FLOAT | 0.350–1 | — |
| noise | FLOAT | 0.000–1 | — |
| seed | INT | 00–4294967295 | — |
| max_anlas | FLOAT | 0.000–100000 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| 图像批次 | IMAGE | — |
| 实际Seed列表 | STRING | — |
| 费用与统计 | STRING | — |