Nodes/TKNodes/Multi Image + Prompt
ComfyUI Node

Multi Image + Prompt

One clean widget for a batch of image-to-video scenes

By trashkollector·Created about a year ago·Updated a day ago· 1
Multi Image + Prompt
  • image_prompt_list
  • image_prompt_list
prompt_1
image_1
prompt_2
image_2
prompt_3
image_3
prompt_4
image_4

When you're building a looping image-to-video workflow - feed image A with prompt A, then image B with prompt B, on repeat - the mess of wires that connects a handful of image loaders and text boxes is the ugliest part of the graph. Multi Image + Prompt replaces that tangle with a single widget: four image slots, each with its own prompt box, all collected into one list output that a looper can cycle through. It's the "content input" end of this pack's prompt-looping pair, and its counterpart TKPromptLooperAdv is what consumes the list on the other side.

How it works

Up to four image_N / prompt_N pairs. The image slots are dropdowns that list whatever's in your ComfyUI/input folder (plus drag-and-drop upload onto the widget, via ComfyUI's built-in upload handling). When the node runs, it loads each selected image to a tensor, pairs it with its prompt text, and packs everything into a single TK_IMAGE_PROMPT_LIST output - a list of dicts, each holding image, prompt, filename, and a slot number.

Two behaviors worth knowing. First, empty slots are skipped - leave image 3 blank and the list simply has fewer entries; you're not required to fill all four. Second, the nodes chain: there's an optional image_prompt_list input, and if you wire one node's output into another's input, the upstream entries come first and the downstream node's own slots append after. That's how you get more than four scenes - chain two or three together and the list grows.

The inputs that matter

  • The four image_N / prompt_N pairs - this is 90% of what you'll touch. Set a scene's image and its text, leave the rest empty.
  • image_prompt_list - only used for chaining.

Output

One TK_IMAGE_PROMPT_LIST socket. It doesn't connect to arbitrary nodes - it's a custom type this pack defines, so it feeds TKPromptLooperAdv (which cycles it by index) and nothing else. Don't expect to wire it into a standard image input; that's the point of the custom type.

Common issues

Because it reads from the input folder at execution time, the usual gotchas are ComfyUI-101: images must actually be in ComfyUI/input (or uploaded through the widget), and re-running with changed files re-triggers via the node's IS_CHANGED hashing. The IS_CHANGED logic also watches upstream chained lists, so editing an earlier node in a chain correctly invalidates later ones. One thing people occasionally trip on: the prompt text is raw - there's no wildcard or token processing here, so write full sentences like you'd feed a CLIP text encoder.

Installing it

Part of trashkollector/TKNodes ("ComfyUI Handy Nodes"). Install via ComfyUI Manager (search "Handy Nodes") or:

cd ComfyUI/custom_nodes
git clone https://github.com/trashkollector/TKNodes

Restart, and it's under TKNodes/image. No models, no API keys - it's pure file loading and list building.

CategoryTKNodes/image

Inputs (9)

NameTypeDefaultDescription
prompt_1STRING
image_1COMBO2 options: , example.png
prompt_2STRING
image_2COMBO2 options: , example.png
prompt_3STRING
image_3COMBO2 options: , example.png
prompt_4STRING
image_4COMBO2 options: , example.png
image_prompt_listoptTK_IMAGE_PROMPT_LIST

Outputs (1)

NameTypeDescription
image_prompt_listTK_IMAGE_PROMPT_LIST