Nodes/SmartNode1000/SN1000 Lora Theme
ComfyUI Node

SN1000 Lora Theme

SN1000 Lora Theme pairs prompts with their LoRAs

By 1000Pro-1997·Created 30 days ago·Updated 23 days ago· 0
SN1000 Lora Theme
  • model
  • clip
  • MODEL
  • CLIP
  • prompt
theme
preset
prompt
lora_data[]
prompt_enabledtrue
loras_enabledtrue
wildcard_seed0
prompt_in

Here's the workflow problem nobody ships a fix for: your character LoRA needs its trigger word, a strength that works, and a prompt fragment that makes it actually look like the character. You keep all of that in your head, retype it into a CLIP Text Encode every time, and one day you load the crying LoRA with the smiling prompt and wonder why the render is wrong. SN1000 Lora Theme (class SN1000LoraTheme, from the SmartNode1000 pack) is the fix: a preset library where a prompt and its LoRA stack live together as one saved unit, shared across every workflow you own.

The README calls the pair the whole idea, and it's right. A crying LoRA + a crying prompt is one preset; a smiling LoRA + a smiling prompt is another. Switch the preset and both swap at once. You never load the wrong LoRA for the wrong prompt again.

How it works

Themes are just folders, and presets are JSON files: presets/<theme>/<name>.json, each holding a prompt plus a LoRA list. The theme dropdown is built from the subfolders of presets/; pick a preset and its prompt and LoRA list load in. Edit the prompt right on the node, save, and the change is live everywhere that preset is used - that's the "shared JSON" storage model, the permanent library, versus the checklist node's per-workflow storage.

At run time it's the same machinery as its checklist sibling: each enabled LoRA is loaded through ComfyUI's load_lora_for_models with the same strength on model and clip, prompt_in from a previous node gets prepended if connected, and __wildcard__ / {a|b|c} syntax expands using wildcard_seed. prompt_enabled and loras_enabled bypass prompt and LoRAs independently, so A/B testing is one toggle each.

The inputs that matter

  • theme - pick the folder of presets.
  • preset - which saved prompt+LoRA set to load.
  • prompt_enabled / loras_enabled - master switches for prompt and LoRAs, independent.
  • wildcard_seed - makes wildcard picks reproducible; the same seed, the same result.

model and clip are optional - connect them to apply LoRAs, or leave them unconnected and the node becomes a pure prompt composer. That's the documented usage: model and clip from your checkpoint loader, prompt into the text encoder.

Outputs

MODEL, CLIP, and prompt (STRING). model/clip carry the LoRA-loaded weights downstream; prompt feeds your text encoder.

Chaining and storage

Wire several theme nodes in a row - model, clip and prompt flow through, each node adding its own layer - and you can stack themes horizontally without merging anything. Storage is all on disk, shared across workflows: presets/<theme>/<name>.json, with a plain JSON structure a text editor can read. Nothing else to install: the pack reads standard sidecar files for previews and metadata, and fetchable from Civitai by hash from the pack's panels.

Install

Same for every SmartNode1000 node. Search SmartNode1000 in ComfyUI Manager, or:

cd ComfyUI/custom_nodes
git clone https://github.com/1000Pro-1997/SmartNode1000.git

Restart ComfyUI. No extra dependencies - no pip install, no model files.

Where people get tripped up

  • The theme dropdown starts empty. Presets begin empty - you build the library yourself, and the dropdown only lists folders that exist under presets/. Create one first.
  • New themes can lag behind. The theme list is built when the node's inputs are constructed, so a theme created elsewhere may need the node refreshed (or the workflow reloaded) before it appears.
  • LoRAs silently skipped. No model/clip connected means no LoRAs - check the console for [FLM] lines if a run "forgets" your LoRA.
  • Missing LoRA files are logged and skipped, not fatal - a broken path shows up as a console note, so check there before blaming the prompt.

If you juggle a handful of recurring styles and characters, this is the node that retires the text file next to your monitor.

CategorySN1000

Inputs (10)

NameTypeDefaultDescription
themeCOMBOTheme to use. Each sub-folder of presets/ is a theme.
presetSTRINGSelected preset name. Filled in by the UI.
promptSTRINGPrompt text of this preset.
lora_dataSTRING[]LoRA list as JSON. Managed by the UI.
prompt_enabledBOOLEANtrueOff drops this node's prompt and passes through the incoming one. LoRAs still apply.
loras_enabledBOOLEANtrueOff skips every LoRA. Each LoRA keeps its own on/off state.
wildcard_seedINT00–18446744073709550000Seed for picking wildcard values. The same seed gives the same result.
modeloptMODELConnect to apply LoRAs. Without it LoRAs are skipped.
clipoptCLIPConnect to apply LoRAs. Without it LoRAs are skipped.
prompt_inoptSTRINGPrompt from a previous node. Prepended when connected.

Outputs (3)

NameTypeDescription
MODELMODEL
CLIPCLIP
promptSTRING