Subject Selector
A character library on disk, one dropdown away
- text
- preview
Subject Selector is the character-and-object half of the pack's selector pair, and it's deliberately boring: pick a .txt file from a dropdown, get its text out. That's it. The value isn't in what the node does - it's in what it stops you from doing, which is pasting the same character description into a dozen text nodes across a dozen workflows.
Keep your cast as files and they become a library. characters/main/ashley_summer.txt is a real file on disk; selecting it is a click. Your graph stays clean, the description stays in one place, and if the character changes you edit one file instead of hunting through a graph for the one text node that mattered.
How it works
Put .txt files anywhere under:
custom_nodes/vsaan212_workflow_utilities/subjectselector/SubjectFiles/
It scans recursively, so characters/main/, characters/extras/, or whatever structure you like all work. The dropdown lists relative paths without the extension: SubjectFiles/characters/main/ashley_summer.txt appears as characters/main/ashley_summer. Select one and you get:
text- the full file contents. Wire it anywhere a string is expected: a prompt builder, Text Split, or a custom node's character input.preview- a short status likeLoaded: characters/main/ashley_summer.txt, for checking which file actually resolved.
The node normalizes line endings and strips surrounding whitespace, and it doesn't care what's inside the file - full character prose, a booru tag list, or the tagged [LoraHighA] format. It reads text, full stop.
Install and gotchas
Same pack, same install: ComfyUI Manager → search vsaan212/Vsaan212-workflow-utilities, or clone into custom_nodes and restart. The SubjectFiles folder is created automatically on first load. No dependencies beyond the Python standard library.
The usual selector traps apply:
- New
.txtnot in the dropdown? Press R in ComfyUI or recreate the node to rescan. - Duplicate filenames? Use the full relative path in the dropdown.
- The folder is the standalone selector's own -
subjectselector/SubjectFiles/, which is different from thelazy_subject_scene_automation/SubjectFiles/folder that Lazy-subject-and-scene-automation reads. This is the pack's most consistent point of confusion: you can have the same character defined in both folders and the two nodes will never see each other's files. Copy or symlink if you want one source of truth.
When to reach for it
If you're already using Lazy-subject-and-scene-automation, that node does subject loading and LoRA stacks and prompt assembly - you likely don't need this selector at all. Subject Selector earns its place in the simpler workflows: a plain SDXL/Flux prompt chain, or as a character-text source feeding LazyPrompt's character input without pulling in the full automation node. For that, it's the right tool: small, predictable, and it keeps your cast where it belongs.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| subject | COMBO | 2 options: Bypass and format example, none |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| preview | STRING | — |