Extensions/Vsaan212-workflow-utilities
ComfyUI Extension

Vsaan212-workflow-utilities

Subject & Scenario Selectors (with subfolders), Text Split, and Optional Switch LoRA utilities for ComfyUI.

By vsaan212·Created 10 months ago·Updated 9 days ago· 1
vsaan212/Vsaan212-workflow-utilities
Nodes20
On cloudLocal install
Categoryvsaan212/Selectors, vsaan212/utilities
Stars1
Updated9 days ago

Nodes (20)

Scenario Selector

A dropdown for your scene files, so paths never live in the graph

vsaan212/Selectors
Subject Selector

A character library on disk, one dropdown away

vsaan212/Selectors
Lazy Docs

A Markdown manual that lives inside ComfyUI

vsaan212/utilities
Lazy Global Selector

One dropdown that decides what your whole video workflow does

vsaan212/automation
Lazy Image Loader

Crop to any aspect ratio by dragging, no crop node required

vsaan212/lazy
Lazy MiniMax All-in-One

T2V, I2V, FL2V and R2V in a single conditioner

vsaan212/minimax
Lazy Model Switcher

Two MiniMax UNETs, one sampler path

vsaan212/automation
Lazy Multi Frame Select

Pause your video workflow and hand-pick up to 6 frames

vsaan212/lazy
LazyPrompt — Prompt Engineer

Let an LLM write your prompt so you don't have to

vsaan212/LazyPrompt
Lazy Prompt Saver

A named prompt library that lives next to your graph

vsaan212/utilities
LazyPrompt — Unload local model

The VRAM eject button you'll forget you need

vsaan212/LazyPrompt
LazyPrompt — Vision Describe

Turn any frame into a scene caption, locally

vsaan212/LazyPrompt
Lazy-refmod-split

One refmod blob in, three clean characters out

vsaan212/automation
Lazy-subject-and-scene-automation

The one node that replaces a wall of selectors, LoRA loaders and text nodes

vsaan212/automation
Lazy Switch (Float)

Turn a mode string into a number

vsaan212/utilities
Lazy Switch (Integer)

Same trick as its float sibling, for whole numbers

vsaan212/utilities
Lazy Switch (Text)

Pick between two prompt strings based on a mode

vsaan212/utilities
OptionalSwitchLoRA

One LoRA loader that can also be a wire-through

vsaan212/LoRA
Prompt Garnish

Bolt a quality-tail onto any prompt, on demand

vsaan212/Text
Text Split (by separator)

One prompt, eight outputs, and a remainder you don't lose

vsaan212/utilities
Readme

Vsaan212-workflow-utilities

ComfyUI custom nodes: selectors, dual-stack subject/scene automation, text utilities, optional LoRA bypass, prompt library, Lazy Image Loader, Lazy Multi Frame Select, 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 ComfyUI/lazynodes/subjectselector/SubjectFiles/ (recursive). | docs/nodes/subject-selector.md | | Scenario Selector | Load .txt from ComfyUI/lazynodes/scenarioselector/ScenarioFiles/ (recursive). | docs/nodes/scenario-selector.md | | Lazy-subject-and-scene-automation | One to three subject files + two scenario files. Wan model_high/model_low (LoraHigh*/LoraLow*); MiniMax minimax_model (VideoModelLoraA–D); image image_model (ImageModelLoraA–D); LTX video_model. [Refmod] + multisubject_refmod for MiniMax H3 RefMods. video_length injects [video_length] (not [Time]). Live editors + scenario 2 strength sliders. | docs/nodes/lazy-subject-scene-automation.md | | Lazy-refmod-split | SAS refmod blob → COMBO mod_13, FLOAT strength_13, INT copies_13 for Load H3 RefMods. Multi-character identity without stacking character LoRAs (no LoRA bleed). | docs/nodes/lazy-refmod-split.md | | Lazy Global Selector | One dropdown (T2V / I2V / FL2V / R2V) that fans out to Image Loaders, SAS [Workflow], Prompt Engineer, MiniMax, and Model Switcher. Does not switch SAS model sockets. | docs/nodes/lazy-global-selector.md | | Lazy Model Switcher | Pick fl2va vs ref2va UNET from the mode string. Wire output to SAS minimax_model. | 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 ComfyUI/lazynodes/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 Multi Frame Select | IMAGE batch from VAE Decode → grid of every Nth frame (default 4), pauses until you pick up to 6 and click Continue. Six IMAGE outputs (image_1image_6). | docs/nodes/lazy-multi-frame-select.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] (Wan) and [Lora1][Lora5] (singular) 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

User libraries live in ComfyUI/lazynodes/ (same level as custom_nodes/, input/, models/). Pack updates replace the custom node folder; they do not delete lazynodes/.

On first load (and whenever a shipped example is missing), the pack creates that folder and copies defaults from the install. Existing files are never overwritten.

Standalone selectors

<ComfyUI>/
└─ lazynodes/
   ├─ README.txt
   ├─ lazy_prompts.json
   ├─ subjectselector/SubjectFiles/
   └─ scenarioselector/ScenarioFiles/

Lazy-subject-and-scene-automation (separate library)

<ComfyUI>/
└─ lazynodes/
   └─ 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 SelectorText 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.

Lazy Multi Frame Select sits after VAE Decode. Extension js/lazy_multi_frame_select.js shows every Nth decoded frame (default 4) in a grid, waits for up to six clicks, then Continue emits image_1image_6. Details: lazy-multi-frame-select.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:

Lazy automation wired to LazyPrompt — Prompt Engineer and Vision Describe

Full node reference: lazy-subject-scene-automation-workflow.md · lazyprompt.md

How to wire it

1. Lazy-subject-and-scene-automation (center)

  • Wan: wire model_high / clip_high (and model_low / clip_low for dual stacks). MiniMax: TxtImg + reference UNETs → Lazy Model Switcher → minimax_model (CLIP can stay on clip_high as LoRA companion). Krea2 / Z-Image: image_model. LTX: video_model.
  • Pick subject, scenario, and optional scenario_2 from the dropdowns (.txt under ComfyUI/lazynodes/lazy_subject_scene_automation/SubjectFiles and …/ScenarioFiles). For MiniMax multi-character RefMods, set multisubject_refmod and optional subject_2 / subject_3.
  • Set video_length (seconds). The node replaces [video_length] in prompt text, or appends a [video_length] block. [Time] is time of day and is not changed.
  • 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 optional model_low / clip_low), minimax_model, image_model, video_model, keywords, prompt, subject_description, prompt_override, and refmod go to the rest of your graph.
  • Output refmod: wire to Lazy-refmod-split then Load H3 RefMods when subject files use [Refmod]. A linked loader mod_# is empty at queue time; this pack treats that as (none) so you do not need to fork MiniMaxH3Mod.
  • Output prompt_override: wire when a scenario file uses a [Prompt] block (see below).
  • LoRA tip: Wan files keep LoraHigh* / LoraLow*. MiniMax / LTX files use VideoModelLoraA–D. Image files use ImageModelLoraA–D. High slots are not auto-applied to MiniMax. When multisubject_refmod ≥ 1 and a subject file has [Refmod], that subject’s LoRAs are skipped — identity comes from Luisacaotica’s ComfyUI-MiniMaxH3Mod RefMods instead of stacked character LoRAs, which is what stops multi-character LoRA bleed.

2. LazyPrompt — Prompt Engineer (LLM)

  • user_input: your rough idea (or leave minimal when override carries the scene).
  • prompt_override_inputprompt_override from the automation node when the scenario file defines [Prompt] instead of [desciption]. When connected/non-empty, this replaces user_input for the LM Studio / local HF request. You can also wire a Lazy Prompt Saver here for a fixed override string.
  • charactersubject_description from the automation node so the subject file’s [desciption] always reaches the LLM (including when prompt_override_input is set).
  • scene_contextLazyPrompt — 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 for [LoraH] / [LoraL]. Wire minimax_model / video_model / image_model into Prompt Engineer lora_model for [Lora1][Lora5] (optional strength [Lora1[0.5]]path[/Lora1]). Those load after the LLM and are stripped from PROMPT.
  • 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)

  • imageLazy Image Loader or Load Image (or any IMAGE output).
  • scene_context → Prompt Engineer scene_context (or use character for 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 automation prompt (CLIP-side text).
  • [Prompt] → sent on prompt_override only (LLM path); mutually exclusive with [desciption] in the same file. Optional closed [LoraH] / [LoraL] / [Lora1][Lora5] 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, manual prompt_override_input, or ad-hoc user_input copy/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

MiniMax H3 RefModsLuisacaotica / ComfyUI-MiniMaxH3Mod. Extract, Load H3 RefMods, and Apply H3 RefMod are his. This pack only wires subject files into those nodes ([Refmod], Lazy-refmod-split). Stacking several character LoRAs on one MiniMax graph mixes identities; RefMods keep each character on the native ref path instead, which is the multi-character LoRA-bleed fix. Huge thanks.

LazyPrompt in this pack reuses and adapts MIT-licensed community work. Thank you to the original authors:

  • LoRa-DaddyLTX-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 .txt files not in dropdown: Press R in 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 / \r to \n.
  • Lazy Image Loader missing from menu: Restart ComfyUI after updating the pack; node is under vsaan212/lazy.
  • Lazy Multi Frame Select grid empty / won’t continue: Restart ComfyUI so js/lazy_multi_frame_select.js loads; click Continue on the node (do not queue a second prompt).
  • DEBUG logs: set Comfy logging to DEBUG / detail. Nodes log under logger vsaan212 (e.g. SAS added lora "…", Lazy Model Switcher set to "R2V" selecting ref2video_model).

License

MIT (see LICENSE)