Nodes/Violet Tools ๐Ÿ’…/๐Ÿ’‹ Aesthetic Alchemist
ComfyUI Node

๐Ÿ’‹ Aesthetic Alchemist

Blend two aesthetics into one prompt, with weights

By leylahvioletยทCreated 12 months agoยทUpdated 10 months agoยท 14
๐Ÿ’‹ Aesthetic Alchemist
    • aesthetic
    โ—„aesthetic_1Randomโ–บ
    โ—„aesthetic_1_femfemโ–บ
    โ—„aesthetic_1_strength1.00โ–บ
    โ—„aesthetic_2Alt Streetwearโ–บ
    โ—„aesthetic_2_femfemโ–บ
    โ—„aesthetic_2_strength1.00โ–บ
    โ—„extraโ–บ
    โ—„extra_inputโ€”โ–บ

    Aesthetic Alchemist is the node that answers "what happens if I cross Gothic Glam with Cottagecore?" It's a style blender: pick two aesthetics, dial their strengths independently, and it hands back a combined prompt phrase that carries both vibes. If Quality Queen is your baseline and Scene Seductress is your camera, this is your fashion sense.

    The styles are genuinely curated rather than random tag soup - Alt Streetwear, Provocative Nightlife, Cyberpunk, Nu-Goth, Grunge, Y2K, Academia, Innocent, Mesh & Fishnets, and a dozen more, each defined as a hand-written phrase list in feature_lists/aesthetic_alchemist.yaml. That curation is the whole value proposition: you get 18 coherent aesthetics without hunting through wildcard files.

    How it works

    The node loads its style definitions from YAML at startup and, on each run, looks up the two styles you selected and concatenates their text. Two details make it worth understanding:

    • fem/masc pools. Every aesthetic has both a feminine and masculine variant (aesthetic_1_fem / aesthetic_2_fem select which list a style draws from). Same style name, different phrasing, so the gender framing actually shows up in the prompt text rather than being implied.
    • Weighted blending. Each style has a strength slider from 0.0 to 2.0. A strength of exactly 1.0 emits the phrase bare; anything else wraps it in SD weight syntax - (base:0.6) to soften, (base:1.4) to push it harder. Setting a strength to 0 skips that style entirely, which is a clean way to run single-aesthetic mode.

    Random handling is polite, too: if both aesthetics are Random, the second pick deliberately avoids duplicating the first, so you get a genuine blend rather than one style twice.

    The fields that matter

    • aesthetic_1 / aesthetic_2 - the two styles. One of the two is usually enough to start; leave the other at None or Random.
    • aesthetic_1_strength / aesthetic_2_strength - 0.0โ€“2.0 weighting per style.
    • aesthetic_1_fem / aesthetic_2_fem - fem vs masc phrasing pool.
    • extra - custom text, wildcard-capable; extra_input chains another node's output in front of it.

    Output is aesthetic (an AESTHETIC_STRING), which feeds the aesthetic input on ๐Ÿงฌ Encoding Enchantress. As with the rest of the pack, that's the supported destination - these typed strings aren't meant for a stock CLIP Text Encode node.

    The caveat about weights

    Same story as Scene Seductress: the (base:weight) syntax is respected by the SDXL lineage and ignored by Flux-class LLM-encoded models. So on a modern model, strength below 1 vs above 1 is effectively no-op, and the blending becomes "two phrases concatenated" rather than "weighted blend." On anime SDXL models the sliders do real work - that's where this node earns its keep.

    Installing it

    It's part of ComfyUI-Violet-Tools, so install the pack once - via ComfyUI Manager (search Violet Tools) or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/leylahviolet/ComfyUI-Violet-Tools.git
    

    Restart ComfyUI; the node sits under Violet Tools ๐Ÿ’… โ†’ Prompt. No model files, no API keys. Dependencies are PyYAML, rapidfuzz, and requests, which Manager handles.

    Where people get tripped up

    The most common confusion is expecting a strength of 2.0 to "double" the style - it doesn't, it's a linear weight multiplier on one phrase. And because Random re-rolls every execution, a workflow you saved with "Random" in both slots will produce a different blend on every queue. Pin the aesthetics you care about; that's also how you keep a character's style consistent across a batch. If you're on a non-SDXL model, set both strengths to 1.0 and treat the sliders as irrelevant.

    CategoryViolet Tools ๐Ÿ’…/Prompt

    Inputs (8)

    NameTypeDefaultDescription
    aesthetic_1COMBORandom18 options: None, Random, Alt Streetwear, Provocative Nightlife, Cottagecore, Innocent, +12
    aesthetic_1_femCOMBOfemChoose list for aesthetic_1
    aesthetic_1_strengthFLOAT1.000โ€“2โ€”
    aesthetic_2COMBOAlt Streetwear18 options: None, Random, Alt Streetwear, Provocative Nightlife, Cottagecore, Innocent, +12
    aesthetic_2_femCOMBOfemChoose list for aesthetic_2
    aesthetic_2_strengthFLOAT1.000โ€“2โ€”
    extraSTRINGโ€”
    extra_inputoptSTRINGOptional chained input - will be prepended to extra field with ', '

    Outputs (1)

    NameTypeDescription
    aestheticAESTHETIC_STRINGโ€”