Nodes/comfyui-fvmtools/FVM · Dataset Prompt List
ComfyUI Node

FVM · Dataset Prompt List

20 lines in, 200 training images out

By ping1979ping·Created 7 months ago·Updated about 8 hours ago· 3
FVM · Dataset Prompt List
  • context_from_prompt_generator
  • prompt
  • caption
  • shot
  • index
  • count
  • listing
◄prompt_text# ═══ Quick set — 20 lines: close 8 · half 6 · full 6 ═══ # Balanced starter set. With variations = 5 you get 100 different images. # Clothes / background / light are wildcards — edit them with "Wildcards". [close] Straight-on frontal close portrait of the subject, head and shoulders, face square to the camera, direct eye contact, completely neutral expression with relaxed brows and closed lips, wearing __dataset/upper__, __dataset/setting_studio__ [close] Left three-quarter close portrait, head turned about 45 degrees toward the subject's left with both eyes visible, looking at the camera, warm smile with cheeks lifted, wearing __dataset/upper__, __dataset/setting__ [close] Right three-quarter close portrait, head turned about 45 degrees toward the subject's right, direct gaze, __dataset/expression__, wearing __dataset/upper__, __dataset/setting__ [close] Exact left profile of the subject, only the left side of the face visible, gaze straight ahead, calm expression, wearing __dataset/upper__, __dataset/setting_studio__ [close] Exact right profile of the subject, only the right side of the face visible, faint natural smile, wearing __dataset/upper__, __dataset/setting__ [close] Close portrait from behind the subject's left shoulder, head turned back so the face and both eyes are visible, curious expression, wearing __dataset/upper__, __dataset/setting_outdoor__ [close] Close portrait from a high camera position, the subject looking up into the lens, soft friendly expression, wearing __dataset/upper__, __dataset/setting__ [close] Close portrait from a low camera position looking up at the face, eyes looking down into the lens, determined expression, wearing __dataset/upper__, __dataset/setting_outdoor__ [half] Waist-up frontal portrait standing square to the camera, direct eye contact, relaxed expression, __dataset/arms__, wearing __dataset/upper__, __dataset/setting_studio__ [half] Waist-up portrait with the body turned 45 degrees to the subject's left and the head turned back to the camera, warm smile, wearing __dataset/upper__, __dataset/setting__ [half] Waist-up right profile of the subject, looking ahead into the distance, calm expression, wearing __dataset/upper__, __dataset/setting_indoor__ [half] Waist-up view from behind, head turned over the right shoulder to look at the lens, soft smile, wearing __dataset/upper__, __dataset/setting_outdoor__ [half] Subject seated at a table seen from the front, forearms resting on the table, leaning slightly forward, __dataset/expression__, wearing __dataset/upper__, __dataset/setting_indoor__ [half] Waist-up candid of the subject laughing, head turned slightly to the subject's right, shoulders raised, wearing __dataset/upper__, __dataset/setting__ [full] Full-body frontal portrait standing relaxed with weight on one leg, arms at the sides, direct eye contact, neutral expression, head to feet in frame, wearing __dataset/outfit__, __dataset/setting_studio__ [full] Full-body right three-quarter view, body turned 45 degrees to the subject's right, head turned to the camera, soft smile, wearing __dataset/outfit__, __dataset/setting__ [full] Full-body side view walking in exact left profile, natural arm and leg swing, gaze forward, wearing __dataset/outfit__, __dataset/setting_outdoor__ [full] Full-body view from behind, subject standing with the back to the camera, head turned slightly toward the subject's right so the face is partly visible in lost profile, cheek, jawline and eyelashes visible, hair and back of the outfit clearly visible, wearing __dataset/outfit__, __dataset/setting__ [full] Full-body shot of the subject sitting on a bench in left three-quarter view, one leg crossed, friendly expression, wearing __dataset/outfit__, __dataset/setting_outdoor__ [full] Full-body shot from a low angle, subject walking toward the camera mid-stride, confident expression, wearing __dataset/outfit__, __dataset/setting__ ►
◄shot_filterall►
◄start_index0►
◄max_rows1000►
◄variations1►
◄orderrounds►
◄seed0►
◄prefix►
◄suffix__dataset/photo__►

You want a character LoRA dataset. The advice is consistent and completely unhelpful in practice: 15–25 images, mixed close-ups and full body, different angles, different lighting, different clothes, diverse backgrounds. Then you sit down to actually write twenty distinct prompts by hand and produce four of them before boredom wins.

Dataset Prompt List is the workaround. One prompt per line, an optional [close] / [half] / [full] shot tag in front, wildcards for everything you want re-rolled, and a variations multiplier. The shipped starter text is 20 lines - 8 close, 6 half, 6 full - and with variations = 5 that's 100 images off one text box.

Inputs

  • prompt_text - the list. # lines are comments, a leading [close], [half] or [full] marks the shot size.
  • shot_filter - all, close, half or full. Filtering to close and generating a batch of head-and-shoulders shots, then switching to full, is a much more controllable way to build a set than trusting a mixed list to balance itself.
  • variations (1–200) - how often each line is used. Every copy re-rolls the wildcards - clothes, background, light - while the pose and angle of that line stay put. That's exactly the property you want: pose diversity is deliberate, everything else is randomised.
  • order - rounds (all lines once, then all again - safe to cancel early, you still have every angle), per_prompt (all variations of line 1, then line 2…), or shuffle.
  • start_index and max_rows - a window into the list, counted after the shot filter, so you can generate 40 images tonight and the next 40 tomorrow without redoing the first lot. The Preview button shows the numbering.
  • seed - one seed for all wildcard draws. Same seed plus same text plus same wildcard files gives byte-identical prompts, which is how you re-render a set you liked.
  • prefix / suffix - prefix takes your trigger word or "the woman from the reference image"; suffix defaults to __dataset/photo__, a realistic camera description. Wildcards work in both, and variables bound in prefix with ^var can be recalled in the lines as __^var__.

Outputs

prompt is a list - prefix, line and suffix resolved - and downstream nodes run once per entry, the same way CR Prompt List behaves. caption is the same list without prefix or suffix: that's your training caption. Keeping the two apart is the smart part of this node. The caption describes the clothes and the background so they stay adjustable instead of getting welded to the character, while the image prompt still carries the style and quality terms you don't want in the caption. shot gives you close/half/full per prompt - ideal for subfolders or filenames - index gives line numbers, count the total, and listing a readable overview with counts per shot size.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/ping1979ping/comfyui-FVMtools

Restart ComfyUI; ComfyUI Manager users can search comfyui-fvmtools. The prompt and JB tools need nothing beyond numpy and pydantic, both already in the ComfyUI venv. Wildcard files live in the pack's own wildcards/ folder and the toolbar's Wildcards button edits them; the syntax is __name__, __cat/*__, {a|b}, {2$$a|b|c}.

Traps

The list output is the thing people trip over. A list into a normal input runs the graph once per entry - which is the feature - but if you accidentally feed caption somewhere that expects a single string, you get one run per caption and a folder of files you didn't ask for. Save the sidecars from caption, generate from prompt, and don't swap them.

Wildcard files are read at queue time, so editing them changes your next run and silently changes what a "reproducible" seed produces. If a set matters, copy the wildcard files next to the project.

Shot tags are free text you type, not a validated enum - [Close] with a capital C is an untagged line that only shows up under all.

CategoryFVM Tools/Prompt

Inputs (10)

NameTypeDefaultDescription
prompt_textSTRING# ═══ Quick set — 20 lines: close 8 · half 6 · full 6 ═══ # Balanced starter set. With variations = 5 you get 100 different images. # Clothes / background / light are wildcards — edit them with "Wildcards". [close] Straight-on frontal close portrait of the subject, head and shoulders, face square to the camera, direct eye contact, completely neutral expression with relaxed brows and closed lips, wearing __dataset/upper__, __dataset/setting_studio__ [close] Left three-quarter close portrait, head turned about 45 degrees toward the subject's left with both eyes visible, looking at the camera, warm smile with cheeks lifted, wearing __dataset/upper__, __dataset/setting__ [close] Right three-quarter close portrait, head turned about 45 degrees toward the subject's right, direct gaze, __dataset/expression__, wearing __dataset/upper__, __dataset/setting__ [close] Exact left profile of the subject, only the left side of the face visible, gaze straight ahead, calm expression, wearing __dataset/upper__, __dataset/setting_studio__ [close] Exact right profile of the subject, only the right side of the face visible, faint natural smile, wearing __dataset/upper__, __dataset/setting__ [close] Close portrait from behind the subject's left shoulder, head turned back so the face and both eyes are visible, curious expression, wearing __dataset/upper__, __dataset/setting_outdoor__ [close] Close portrait from a high camera position, the subject looking up into the lens, soft friendly expression, wearing __dataset/upper__, __dataset/setting__ [close] Close portrait from a low camera position looking up at the face, eyes looking down into the lens, determined expression, wearing __dataset/upper__, __dataset/setting_outdoor__ [half] Waist-up frontal portrait standing square to the camera, direct eye contact, relaxed expression, __dataset/arms__, wearing __dataset/upper__, __dataset/setting_studio__ [half] Waist-up portrait with the body turned 45 degrees to the subject's left and the head turned back to the camera, warm smile, wearing __dataset/upper__, __dataset/setting__ [half] Waist-up right profile of the subject, looking ahead into the distance, calm expression, wearing __dataset/upper__, __dataset/setting_indoor__ [half] Waist-up view from behind, head turned over the right shoulder to look at the lens, soft smile, wearing __dataset/upper__, __dataset/setting_outdoor__ [half] Subject seated at a table seen from the front, forearms resting on the table, leaning slightly forward, __dataset/expression__, wearing __dataset/upper__, __dataset/setting_indoor__ [half] Waist-up candid of the subject laughing, head turned slightly to the subject's right, shoulders raised, wearing __dataset/upper__, __dataset/setting__ [full] Full-body frontal portrait standing relaxed with weight on one leg, arms at the sides, direct eye contact, neutral expression, head to feet in frame, wearing __dataset/outfit__, __dataset/setting_studio__ [full] Full-body right three-quarter view, body turned 45 degrees to the subject's right, head turned to the camera, soft smile, wearing __dataset/outfit__, __dataset/setting__ [full] Full-body side view walking in exact left profile, natural arm and leg swing, gaze forward, wearing __dataset/outfit__, __dataset/setting_outdoor__ [full] Full-body view from behind, subject standing with the back to the camera, head turned slightly toward the subject's right so the face is partly visible in lost profile, cheek, jawline and eyelashes visible, hair and back of the outfit clearly visible, wearing __dataset/outfit__, __dataset/setting__ [full] Full-body shot of the subject sitting on a bench in left three-quarter view, one leg crossed, friendly expression, wearing __dataset/outfit__, __dataset/setting_outdoor__ [full] Full-body shot from a low angle, subject walking toward the camera mid-stride, confident expression, wearing __dataset/outfit__, __dataset/setting__ One prompt per line. '#' lines are comments. Optional tag at line start: [close], [half], [full]. Type __ for wildcard autocomplete.
shot_filterCOMBOallOnly use lines with this shot tag. all = every line (incl. untagged) close = head & shoulders half = waist-up / seated full = whole body, head to feet
start_indexINT00–9999First line to use (0 = first). Counted AFTER the shot filter — the Preview shows the numbers.
max_rowsINT10001–9999How many lines to take from start_index on.
variationsINT11–200How often each line is used. Every copy re-rolls all wildcards (clothes, background, light …) — the pose/angle of the line stays the same.
orderCOMBOroundsrounds = all lines once, then all again (safe to cancel early — you still have every angle) per_prompt = all variations of line 1, then line 2 … shuffle = random order (seeded)
seedINT00–18446744073709550000Seed for all wildcard draws. Same seed + same text + same wildcard files → identical prompts. Change it for a completely new set.
prefixoptSTRINGPut in front of every prompt, e.g. trigger word or 'the woman from the reference image'. Wildcards allowed; variables bound here (^var) can be recalled in the lines with __^var__.
suffixoptSTRING__dataset/photo__Appended to every prompt, e.g. photo quality terms. Default __dataset/photo__ picks a realistic camera description. Not part of the caption output.
context_from_prompt_generatoroptDICTOptional variable bag from a Prompt Generator (adaptiveprompts `context` output), same as the JB Builder. Values bound upstream with ^VAR are recallable in every line with __^VAR__.

Outputs (6)

NameTypeDescription
promptSTRINGLIST of finished prompts (prefix + line + suffix, wildcards resolved). Downstream nodes run once per entry — like CR Prompt List.
captionSTRINGLIST of the same prompts WITHOUT prefix/suffix — use as the training caption (.txt next to the image). Describing clothes/background in the caption keeps them from being baked into the character.
shotSTRINGLIST of shot sizes per prompt: close / half / full (empty if untagged). Handy for file names or subfolders.
indexINTLIST of line numbers (position in the text, 0-based) per prompt.
countINTTotal number of prompts produced.
listingSTRINGReadable overview of every resolved prompt with counts per shot size.