Nodes/ComfyUI_ScarlotSoft/ScarlotSoft Prompt Builder + AutoLoader
ComfyUI Node

ScarlotSoft Prompt Builder + AutoLoader

Prompts from files, LoRAs auto-loaded from the text — ScarlotSoft Prompt Builder + AutoLoader

By scarlotsoft·Created 2 months ago·Updated about a month ago· 0
ScarlotSoft Prompt Builder + AutoLoader
  • model
  • clip
  • MODEL
  • CLIP
  • PROMPT
  • LOADED LORAS
string_a
string_b
file_data[]

This is the node that wants to replace half your prompt-building graph. ScarlotSoft Prompt Builder + AutoLoader takes your model and clip, assembles a prompt from a couple of text boxes and lines pulled from text files, scans that assembled prompt for LoRA and embedding tags, loads the LoRAs into the model itself, and hands you a clean prompt with the tags stripped out. Prompt builder, file reader, and LoRA loader in one node - that's a lot of jobs, and it does them all.

How the assembly works: string_a and string_b are the fixed boxes (the JS relabels them "Quality Prompt" and "Styles Loras" so you remember which is which), and file_data is a JSON list, built by the custom UI, of file entries - each with a path (relative to ComfyUI's input folder), a mode (Auto/Index), an index, and an on/off toggle. In Auto mode a file contributes its next line each run, cycling like the suite's EasyLineFromFile; in Index mode it contributes a specific line. Everything gets joined with blank lines into one prompt. Because Auto-mode files force a re-run every queue, the node re-picks lines each time - your text file becomes a rotating variation deck.

Then the magic part: the assembled text is scanned for <lora:name:strength>, <lyco:...>, and <hypernet:...> tags plus embedding:name references. Each LoRA gets loaded into the model/clip via the standard load_lora_for_models, and the tags are stripped out of the text before it's emitted. So your text files can say "use this LoRA" and the node obeys - no separate LoRA loader, no wiring. The LOADED LORAS output reports exactly what got applied, with ✅/❌ marks and strengths, and missing LoRAs or embeddings are reported rather than silently dropped. Embeddings are validated against your embeddings folder but not loaded (CLIP encoders handle those); LoRAs are genuinely fused into the model.

Outputs: MODEL, CLIP, PROMPT (the cleaned text), and LOADED LORAS (the report string). Wire MODEL/CLIP to a KSampler and PROMPT into any CLIP encoder - the node deliberately does not encode, so you keep control of that step.

What you trade for all this: less transparency. The actual prompt is now spread across two boxes and N files, so when a run surprises you, you're debugging several places. The LOADED LORAS output (pipe it into a text preview) is your first stop. Also worth knowing: the tag format is <lora:name:strength> - if your files use A1111-style bare lora mentions, they won't trigger anything. The path-traversal protection on the file reads (from the pack's security pass) is a genuinely reassuring touch for a node that reads arbitrary files.

Install with the pack - ComfyUI Manager → search ScarlotSoft → install → restart:

cd ComfyUI/custom_nodes
git clone https://github.com/scarlotsoft/ComfyUI_ScarlotSoft

No extra dependencies. Suite theme; hard-refresh after a UI-mode switch if the custom list doesn't render.

It's opinionated - ScarlotSoft clearly builds prompt pipelines their way - but if you live on text-file prompt decks and LoRA-heavy workflows, collapsing three node types into one is a real ergonomic win. Start with one file and one LoRA before you trust it with your whole library.

CategoryScarlotSoft/Prompt/Lora/Text

Inputs (5)

NameTypeDefaultDescription
modelMODEL
clipCLIP
string_aSTRING
string_bSTRING
file_dataSTRING[]

Outputs (4)

NameTypeDescription
MODELMODEL
CLIPCLIP
PROMPTSTRING
LOADED LORASSTRING