Nodes/LoRA Dataset Tools/πŸŽ›οΈ LoRA Dataset Config
ComfyUI Node

πŸŽ›οΈ LoRA Dataset Config

The One Node That Builds a LoRA Dataset While You Watch

By LordTaylorΒ·Created 4 months agoΒ·Updated 4 months agoΒ· 1
πŸŽ›οΈ LoRA Dataset Config
    • trigger
    • varied_prompt
    • base_description
    • output_prefix
    • latent_width
    • latent_height
    β—„trigger_wordchar_triggerβ–Ί
    β—„output_namemy_characterβ–Ί
    β—„descriptionadult woman, cel-shaded, flat colors, animated series character, bridge toons styleβ–Ί
    β—„dataset_typeβ–Ύβ–Ί
    β—„seed0β–Ί

    Making a LoRA dataset by hand is a slog, and the community consensus says it matters more than every trainer knob you'll ever touch. You want 20–50 images of your subject, and you want them varied - different shots, poses, expressions, backgrounds - because the model bakes whatever you repeat into the concept. The old way of getting that variety was ugly: a base description node, a trigger word pasted into a wildcard node, two output folder fields, external .txt wildcard files, and a Python script run after every batch just to attach captions. LoRADatasetConfig is the part of this pack that kills most of that.

    πŸŽ›οΈ LoRA Dataset Config doesn't generate anything itself. It's the orchestrator: type in your trigger word, subject name, and description once, and it emits every string and number the rest of the workflow needs - the varied prompt, the output path, even the latent size. The README's promise, and it mostly holds, is that it's the only node you ever edit.

    How it works

    Under the hood it's simple and transparent. It takes your five inputs, picks one random item from each of its built-in wildcard lists (shot, pose, expression, location, lighting, etc.), and assembles trigger, <shot>, <pose>, <expression>, <location>, <lighting> as your prompt. The lists are baked into wildcards.py - no .txt files to maintain, which is the whole point.

    The seeding is the nice touch: random.Random(seed) drives the picks. Same seed, same composition - reproducible when you want to debug. Seed on Randomize, and every queue gives you a fresh combination. Since caption sidecars are written per-image, that's exactly the dataset variety you want.

    The inputs that actually matter

    You'll set four of the five, and they're the ones in the tooltips:

    • trigger_word - your activation token, e.g. jane_doe_v1. Keep it short and unusual; it gets prepended to every caption and every prompt.
    • output_name - folder and filename prefix, snake_case (spaces get converted automatically). This becomes lora_dataset/<name>/<name>.
    • description - the base visual description of your subject. Do not include the trigger word here; it's added automatically. Leave out the things you want to stay changeable.
    • dataset_type - character, outfit, location, or object. This is more than a label: it switches which wildcard lists are used and the output resolution. location gets a 1216Γ—832 landscape ratio, everything else 1024Γ—1024.

    seed is the one you can forget about - leave it at 0 or flip it to Randomize.

    What wires where

    Six outputs, and each has a job. trigger and output_prefix feed the pack's other node, LoRACaptionSaver. varied_prompt is your positive prompt, base_description is a stable secondary prompt (useful for IPAdapter conditioning in the example workflows), and latent_width / latent_height plug into your Empty Latent Image node so you can't drift off the recommended resolution.

    Installing

    This is a pack of two, so the install is shared. Either grab it from ComfyUI Manager (search "LoRA Dataset Tools") or clone it in:

    cd ComfyUI/custom_nodes
    git clone https://github.com/LordTaylor/comfyui-lora-dataset-tools.git
    

    The node itself has zero Python dependencies - the wildcard logic is self-contained. The catch is the surrounding example workflows, which need ComfyUI IPAdapter Plus, comfyui-florence2, and pythongosssss's Custom Scripts, plus the SDXL IP-Adapter weights, a CLIP vision model, Florence-2-base, and the bridgeToonsMix checkpoint. There's a one-command install.sh that clones the nodes and downloads the models for you (bridgeToonsMix still has to come from CivitAI manually).

    Where people get burned

    Forgetting the trigger word in the description is the classic one - the tooltip warns you for a reason, and a model whose captions don't say the trigger never learns it. Also, don't fight the latent sizes: the resolution is chosen per dataset type because the example workflows condition on it. And a fair warning: the whole stack here is SDXL-era - the IP-Adapter face chain is the 2024/2025 approach to consistency, and it won't load on Flux or newer bases. But the part this node actually owns - varied, captioned training data that kohya and SimpleTuner can eat directly - never goes out of style.

    CategoryLoRA Dataset Tools

    Inputs (5)

    NameTypeDefaultDescription
    trigger_wordSTRINGchar_triggerUnique trigger word for your LoRA. Use it in training captions.
    output_nameSTRINGmy_characterOutput folder and filename prefix. Keep it short and snake_case.
    descriptionSTRINGadult woman, cel-shaded, flat colors, animated series character, bridge toons styleBase description of your character / outfit / location. Do NOT include trigger word here β€” it is added automatically.
    dataset_typeCOMBOcharacter β†’ full IPAdapter face chain, 1024Γ—1024 | outfit β†’ style IPA only | location β†’ 1216Γ—832 landscape, no people | object β†’ 1024Γ—1024, isolated
    seedINT00–18446744073709550000Set to 'randomize' in the widget for variety per run.

    Outputs (6)

    NameTypeDescription
    triggerSTRINGβ€”
    varied_promptSTRINGβ€”
    base_descriptionSTRINGβ€”
    output_prefixSTRINGβ€”
    latent_widthINTβ€”
    latent_heightINTβ€”