Nodes/ComfyUI-Creepy_nodes/Collect and Distribute Text (Creepybits)
ComfyUI Node

Collect and Distribute Text (Creepybits)

A Bucket for Gathering Captions Before They're Summarized

By Creepybits·Created about a year ago·Updated 2 months ago· 32
Collect and Distribute Text (Creepybits)
    • text
    seconds1.0
    text
    triggerfalse

    Sometimes your workflow produces text one piece at a time, and the node that needs it wants the whole story at once. That's the exact gap Collect and Distribute Text fills. It's a text accumulator: every piece of text that arrives gets appended to an internal bucket, and then - either after a quiet period or when you pull the trigger - the whole bucket flushes out as a single block. Think of it as the "gather everyone's notes before the meeting" node.

    The classic use case

    The pack's own docs describe it perfectly: a loop that analyzes a batch of images one by one. Each iteration of the loop produces a caption, but you don't want to hand a summarizer caption #1 in isolation - you want it to read all ten at once. This node catches each caption as it streams in, holds them, and releases them together. Your summarizer gets the complete story instead of one chapter at a time.

    The inputs and the two release modes

    • seconds (float, default 1.0) - the quiet-period length
    • text - the incoming piece of text to accumulate
    • trigger (boolean, default false) - the manual release button

    The behavior splits cleanly in two:

    Timed mode (trigger false). Every new piece of text resets the timer. If text keeps arriving, the node stays quiet and returns an empty string. Only when nothing new has arrived for seconds does it flush everything it collected.

    Manual mode (trigger true). The instant the trigger is true, the node returns everything accumulated so far and resets the bucket. This is the deterministic mode - no waiting, no guessing.

    Output is a single text string.

    The honest caveat

    I read the source, and there's a wrinkle worth knowing before you build a pipeline around timed mode. The node's state lives on the node instance, and the timed flush fires from a background thread - which is a genuinely awkward place to hand a value back into ComfyUI's execution flow. In practice, timed mode can be finicky about whether downstream nodes ever actually see the flushed block. Manual mode has no such problem: when trigger is true, the accumulated text is returned directly on that run, synchronously, and it definitely travels down the wire.

    So: if you're automating, drive it with trigger - a boolean you control from a loop or a preceding node - and treat timed mode as the convenience option to test in your own graph. Also remember the state is per node instance: it resets when ComfyUI restarts, and it isn't shared between two copies of the node.

    Installing it

    It ships with the Creepybits pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Creepybits/ComfyUI-Creepy_nodes.git
    

    Restart ComfyUI (or install "Creepy" via ComfyUI Manager). No model downloads; the pack's Python requirements install on first launch. If your accumulated text never appears downstream, switch to trigger-driven release - that's the reliable path.

    CategoryCreepybits/Utilities

    Inputs (3)

    NameTypeDefaultDescription
    secondsFLOAT1.0
    textSTRING
    triggerBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    textSTRING