π¨ Z2J Style
The style knob that never repeats β Z2J Style for reproducible look exploration
- text
Style words are the easiest thing to overpromise and the hardest to keep consistent across a run. Z2J Style gives you a repeatable way to generate them: same seed, same prompt_index, same style sentence - every time, on any machine. That reproducibility is the entire point of the ComfyUI-Zero2JSON pack, and style is where it shows up most visibly, because "medium, technique, aesthetic, quality" reads like a recipe the model can actually follow.
It's the style member of the pack, meant to feed the custom_style input of a FLUX2_StyleSelector in the FLUX2-JSON workflow. The generated phrase bundles a medium (oil paint, film grain, inkβ¦), a technique, an aesthetic, and a quality word into one structured sentence. For FLUX2's LLM-style encoder, that structure lands better than a pile of style tags - the community's finding is that structured, descriptive prompting reduces ambiguity and concept bleed.
How it works
Position-as-seed hashing: (seed, prompt_index, slot) through xxhash32, hash picks a template and one word per pool. The style_default.json profile ships 4 templates over four pools - medium (15), technique (12), aesthetic (16), quality (9) - about 104,000 combinations. Enough to keep style from going stale across a big batch, with the deterministic guarantee that you can always come back to the exact style that produced a keeper.
The inputs that matter
seed- world seed.prompt_index- position coordinate; this is your style-farming dial.profile- dropdown ofstyle_*.jsonfiles; drop a custom one intoprofiles/and restart.prefix/suffix- anchors around the style line, useful for forcing "digital painting" at the front.style_category- a filter dropdown (photorealistic / artistic / cinematic / anime / illustration / vintage). Honest note: in v1.0.0 as shipped, this input is declared in the UI but ignored by the generator. It doesn't filter yet. Check for a newer release before leaning on it.
Output is a single text string.
Install
All seventeen nodes live in one repo:
cd ComfyUI/custom_nodes
git clone https://github.com/MushroomFleet/ComfyUI-Zero2JSON
cd ComfyUI-Zero2JSON
pip install -r requirements.txt
Restart after. Requirements are one line - xxhash>=3.0.0. No models, no keys. ComfyUI Manager: search "ComfyUI-Zero2JSON".
Where people get burned
Style is a concentration game: stack too many generated style phrases and the model starts averaging them into mush. One style node per image, and let the mood node carry the emotional layer while lighting carries the look - otherwise you're asking the encoder to reconcile "watercolor, airy" with "neon, harsh" in the same breath. The other thing to remember is that generated style text is a suggestion layer: if your checkpoint is a strong anime model, a photorealistic style phrase fights the model's baked-in look and usually loses. Keep style words aligned with what your model already does best.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00β4294967295 | World seed for deterministic generation |
| prompt_index | INT | 00β4294967295 | Position in infinite prompt space |
| profileopt | COMBO | style_default.json | Select vocabulary profile |
| prefixopt | STRING | Text to prepend to generated prompt | |
| suffixopt | STRING | Text to append to generated prompt | |
| style_categoryopt | COMBO | any | Filter by style category |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | β |