Vsaan212-workflow-utilities
Subject & Scenario Selectors (with subfolders), Text Split, and Optional Switch LoRA utilities for ComfyUI.
Nodes (18)
A dropdown for your scene files, so paths never live in the graph
A character library on disk, one dropdown away
A Markdown manual that lives inside ComfyUI
One dropdown that decides what your whole video workflow does
Crop to any aspect ratio by dragging, no crop node required
T2V, I2V, FL2V and R2V in a single conditioner
Two MiniMax UNETs, one sampler path
Let an LLM write your prompt so you don't have to
A named prompt library that lives next to your graph
The VRAM eject button you'll forget you need
Turn any frame into a scene caption, locally
The one node that replaces a wall of selectors, LoRA loaders and text nodes
Turn a mode string into a number
Same trick as its float sibling, for whole numbers
Pick between two prompt strings based on a mode
One LoRA loader that can also be a wire-through
Bolt a quality-tail onto any prompt, on demand
One prompt, eight outputs, and a remainder you don't lose
Vsaan212-workflow-utilities
ComfyUI custom nodes: selectors, dual-stack subject/scene automation, text utilities, optional LoRA bypass, prompt library, Lazy Image Loader, Lazy MiniMax All-in-One (H3), Lazy Switch (float/int/text), Lazy Docs (Markdown viewer), and LazyPrompt (multi-target prompt engineer + optional vision). MIT licensed.
Nodes (summary)
| Node | What it does | Full guide |
|------|----------------|------------|
| Subject Selector | Load .txt from subjectselector/SubjectFiles/ (recursive). | docs/nodes/subject-selector.md |
| Scenario Selector | Load .txt from scenarioselector/ScenarioFiles/ (recursive). | docs/nodes/scenario-selector.md |
| Lazy-subject-and-scene-automation | One node: one subject + two scenario files (up to 6 scenario LoRA sets), model_high / clip_high required (single-model Z-Image, Krea2, Flux, etc.) or full Wan-style high/low dual stack when model_low / clip_low are wired. prompt, keywords, subject_description, prompt_override, selector (MiniMax workflow / reference paths). Optional global_selector_input. Live editors on the node (queue uses pane text, not disk); Save edits to .txt; scenario 2 strength sliders override [LoraHighA] / [LoraLowA] model strength. Uses lazy_subject_scene_automation/SubjectFiles and …/ScenarioFiles. | docs/nodes/lazy-subject-scene-automation.md |
| Lazy Global Selector | One dropdown (T2V / I2V / FL2V / R2V) that fans out to Image Loaders, SAS, Prompt Engineer, MiniMax, and Model Switcher. | docs/nodes/lazy-global-selector.md |
| Lazy Model Switcher | Pick fl2va vs ref2va UNET from the mode string for a single sampler path. | docs/nodes/lazy-model-switcher.md |
| Lazy Switch (Float / Integer / Text) | Compare an upstream string to match; output on_true or on_false (typed). Unused branch is lazy-skipped. | docs/nodes/lazy-switch.md |
| Lazy Docs | Split-pane Markdown docs from lazy_docs/Docs/ (optional subfolder). Index from frontmatter; click to load HTML/Raw. | docs/nodes/lazy-docs.md |
| Text Split | Split by separator, regex, or tagged format ([Tag] headers). Auto-detects v2 subject/scenario files when the first line is [LoraHighA]; otherwise tagged_format or separator # for legacy graphs. | docs/nodes/text-split.md |
| Optional Switch LoRA | Apply a LoRA or pass through when path is bypass / empty. | docs/nodes/optional-switch-lora.md |
| Lazy Prompt Saver | Save / clone / delete named prompts in lazy_prompts.json. | docs/nodes/lazy-prompt-saver.md |
| Lazy Image Loader | Load from input/: browse, drag-and-drop upload, open input folder, cover crop to popular ratios (default 9:16), optional megapixel resize (0.2–4.0 MP, multiple of 32), live drag-to-position preview. Optional workflow_role + global_selector_input hard-gates IMAGE. | docs/nodes/lazy-image-loader.md |
| Lazy MiniMax All-in-One | MiniMax H3 conditioner: auto T2V / I2V / FL2V / R2V from bare mode or automation selector. Seconds → H3 frame length. Requires ComfyUI 0.30+ native H3. | docs/nodes/lazy-minimax-all-in-one.md |
| LazyPrompt | Prompt Engineer (LTX / Wan / Flux / SDXL / Pony / SD 1.5 / MiniMax H3), Vision Describe (Qwen2.5-VL), Unload local model. LM Studio API uses native /api/v1/chat with OpenAI fallback. Mode-gated first/last/refs + selector_Out. Prompt [LoraH] / [LoraL] dynamic LoRA loads. | docs/nodes/lazyprompt.md |
Documentation index: docs/README.md · MiniMax template: docs/workflows/video_minimax_h3_global_selector.md
Installation
Via Comfy Registry (recommended)
Search for vsaan212/Vsaan212-workflow-utilities in the ComfyUI Manager and click Install.
Manual (development)
Clone into your Comfy install:
<ComfyUI root>/ └─ custom_nodes/ └─ vsaan212_workflow_utilities/ # this repo's custom_nodes/* contents
Restart ComfyUI.
Folder layout & auto-creation
On first load the pack creates missing folders as needed.
Standalone selectors
custom_nodes/vsaan212_workflow_utilities/
├─ scenarioselector/ScenarioFiles/
└─ subjectselector/SubjectFiles/
Lazy-subject-and-scene-automation (separate library)
custom_nodes/vsaan212_workflow_utilities/
└─ lazy_subject_scene_automation/
├─ ScenarioFiles/
└─ SubjectFiles/
Put .txt files under the folder that matches the node you use. Dropdowns show relative paths without .txt (POSIX-style); nested subfolders are supported.
Subject & scenario file formats (selectors + Text Split)
- Tagged (current): sections start with a
[Tag]line (e.g.[LoraHighA],[desciption]), body on following lines until the next tag. Shipped examples:Bypass and format example.txt,none.txt. - Legacy: sections separated by a line containing only
#(blank line,#, blank line).
Lazy-subject-and-scene-automation parses tagged files internally. The browser extension js/lazy_subject_scene_live.js adds editable subject / scenario / scenario 2 panes, Save edits, and scenario 2 high/low strength sliders (see lazy-subject-scene-automation.md). For Subject Selector / Scenario Selector → Text Split, v2 files (first line [LoraHighA]) split automatically; legacy # files use separator # unless you force tagged_format ON. Text Split details: text-split.md.
Lazy Image Loader reads from ComfyUI’s global input/ folder (not a pack subfolder). Extension js/lazy_image_loader.js adds the preview, pan crop, upload, and Open input folder button. Details: lazy-image-loader.md.
Example workflow (Lazy automation + LazyPrompt)
This pack is meant to replace long chains of selector + LoRA + text nodes with one automation node plus LazyPrompt for LLM expansion. The screenshot below is a typical LTX / LM Studio graph:

Full node reference: lazy-subject-scene-automation-workflow.md · lazyprompt.md
How to wire it
1. Lazy-subject-and-scene-automation (center)
- Connect
model_highandclip_high(required). For single-model graphs (Z-Image, Krea2, one Flux/SDXL branch, etc.), leavemodel_low/clip_lowunwired and usemodel_high/clip_highoutputs downstream. For Wan-style dual stacks, also wiremodel_low/clip_lowin and out. - Pick
subject,scenario, and optionalscenario_2from the dropdowns (.txtunderlazy_subject_scene_automation/SubjectFilesand…/ScenarioFiles). - Edit the live panes on the node; queue uses that text (not necessarily disk). Use Save edits to write back to
.txt. - Optional
prepend_text/post_text: wire STRING inputs (e.g. Lazy Prompt Saver for a saved prefix, User Text or any string node for postfix). - Outputs
model_high/clip_high(and optionalmodel_low/clip_low),keywords,prompt,subject_description, andprompt_overridego to the rest of your graph. - Output
prompt_override: wire when a scenario file uses a[Prompt]block (see below). - Single-model LoRA tip: put LoRAs on High slots (
LoraHighA, …) or set Low slots tobypass— the low branch is skipped whenmodel_low/clip_loware not connected.
2. LazyPrompt — Prompt Engineer (LLM)
user_input: your rough idea (or leave minimal when override carries the scene).prompt_override_input←prompt_overridefrom the automation node when the scenario file defines[Prompt]instead of[desciption]. When connected/non-empty, this replacesuser_inputfor the LM Studio / local HF request. You can also wire a Lazy Prompt Saver here for a fixed override string.character←subject_descriptionfrom the automation node so the subject file’s[desciption]always reaches the LLM (including whenprompt_override_inputis set).scene_context← LazyPrompt — Vision Describe (or paste text manually).image: optional reference frame for LM Studio (API) with a vision model loaded.- Optional: wire automation
model_high/clip_high(and low) into Prompt Engineer when the Prompt / LLM emits[LoraH]…[/LoraH]/[LoraL]…[/LoraL]— those load after the LLM and are stripped fromPROMPT. - Set
target_model,model(e.g. LM Studio (API)),lm_studio_model, and token/temperature as needed. - Use output
PROMPT(and model/clip outs when wired) downstream.
3. LazyPrompt — Vision Describe (optional)
image← Lazy Image Loader or Load Image (or any IMAGE output).scene_context→ Prompt Engineerscene_context(or usecharacterfor subject-file text from automation).- Run once per reference frame; caption text steers the LLM without inventing the subject from scratch.
4. Scenario file tips for this graph
[desciption]→ merged into automationprompt(CLIP-side text).[Prompt]→ sent onprompt_overrideonly (LLM path); mutually exclusive with[desciption]in the same file. Optional closed[LoraH]/[LoraL]tags in that Prompt (or LLM output) are handled by LazyPrompt after enhancement.{left|right}in scenario text → random choice each queue run.scenario_2+ strength sliders → second scenario LoRA set and tunable[LoraHighA]/[LoraLowA]model strength.
5. Lazy Prompt Saver (optional)
- Saved snippets for
prepend_text, manualprompt_override_input, or ad-hocuser_inputcopy/paste — not required if you only use live editors and scenario files.
Python dependencies
Install from requirements.txt if your ComfyUI environment is missing anything (transformers, torch, qwen-vl-utils, Pillow, numpy, etc.).
Credits
LazyPrompt in this pack reuses and adapts MIT-licensed community work. Thank you to the original authors:
- LoRa-Daddy — LTX-2 Easy Prompt (LTX2EasyPrompt-LD): cinematic LTX-style expansion, Qwen2.5-VL →
scene_context, negative hints, LoRA triggers, dialogue / bypass, frame pacing, local Hugging Face + LM Studio patterns, output cleaning. LazyPrompt’s Prompt Engineer and Vision Describe descend from that design. - seanhan19911990-source — MIT-licensed LTX2EasyPrompt-LD tree (copyright in that project’s
LICENSE); original upstream listing may no longer be on GitHub. - Brojakhoeman — MIT Gemma4Prompt (copyright in that project’s
LICENSE): per-target system prompts (LTX 2.3, Wan 2.2, Flux.1, SDXL, Pony XL, SD 1.5), LTX screenplay variant, and environment presets merged into LazyPrompt.
vsaan212 maintains this integrated repository (selectors, lazy subject/scene automation, Lazy Prompt Saver, LazyPrompt merge, and packaging) separately from those upstreams.
Troubleshooting
- New
.txtfiles not in dropdown: PressRin ComfyUI or recreate the node. Lazy-subject-and-scene-automation also refreshes via/vsaan212/lazy-subject-scene/…when the node is created. - Same filename in two folders: Use the full relative path in the dropdown.
- Line endings: Nodes normalize
\r\n/\rto\n. - Lazy Image Loader missing from menu: Restart ComfyUI after updating the pack; node is under
vsaan212/lazy.
License
MIT (see LICENSE)