ComfyUI Node

Producted String

The pack's one-click way to turn list explosion into a text block

By opvelll·Created 2 years ago·Updated 5 days ago· 1
Producted String
  • list_a
  • list_b
  • list_c
  • list_d
  • list_e
  • list_f
  • STRING
  • list
separator,
max_results0
newline_char

If TextListProduct is the pack's engine, ProductedString is the friendly face. The author's README says it plainly: "for general use, this node should work well" - the Japanese version is blunter, something like "just use this one and you can't go wrong." It's the node the author themselves reaches for, and once you see what it skips, you'll understand why.

The difference from the base node is output format and list count. Where TextListProduct takes two lists and returns one LIST, ProductedString takes up to six lists (list_a through list_f) and returns a single multiline STRING - one line per combination. Same cartesian product underneath, same separator and max_results controls, but the result is a ready-made text block you can drop into a Save Text File node or wherever a multiline string is expected.

The inputs that matter

  • separator - joins the fragments within each line. Default ", ".
  • newline_char - joins the lines together. Default "\n"; change it if your downstream consumer wants something else.
  • max_results - caps the number of lines produced. 0 means unlimited.

The six list inputs are optional and only connected ones are used. Leave list_c through list_f unplugged and they're simply skipped - no error, no padding. That's genuinely handy when you have a workflow where the fourth and fifth factors come and go. The output is a single STRING with one combined prompt per line.

Where people get burned

  • Same forceInput rule as the rest of the pack. The list sockets only accept LIST-typed outputs; build lists first with the pack's MultilineStringToList / StringsToList or WAS Node Suite.
  • max_results = 0 means unlimited, not "no results" - the pack-wide gotcha.
  • ProductedString has no way to ask for the standalone entries. If you want 1girl alone as well as 1girl, beach, the WithSingle nodes are the shorthands for that, or you add "" to a list yourself - the empty-string filtering will do the rest.

Install

ComfyUI Manager → Install Custom Nodes → search "Comfy UI Text List Product", or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/opvelll/ComfyUI_TextListProduct

Restart ComfyUI. Nothing else to install - pure stdlib Python, no models, no extra pip packages.

The workflow this unlocks

The classic use is straight out of the README: expression × pose × camera-work lists in, a text file of every combined prompt out. The README's own example - [1girl, 1boy] × [blonde_hair, crown] × [beach, futuristic City] - becomes an 8-line (2×2×2) multiline string, then feeds through WAS Node Suite's "Text Load Line From File" or Comfyroll's CR Prompt List into a batch generator. You write three short lists and get eight distinct prompts out. Compared to hand-writing prompt variants, or to the random-pick wildcard trick, this is the deterministic version: every combination exists as a line you can see, save, and batch.

CategoryTextListProduct

Inputs (9)

NameTypeDefaultDescription
separatorSTRING,
max_resultsINT0
newline_charSTRING
list_aoptLIST
list_boptLIST
list_coptLIST
list_doptLIST
list_eoptLIST
list_foptLIST

Outputs (2)

NameTypeDescription
STRINGSTRING
listLIST