Nodes/Frog Node Pack/🐸 Duo Dupe Check
ComfyUI Node

🐸 Duo Dupe Check

Cancels the queue when you've already made that character pair

By RabbitThatIsPinkΒ·Created 3 months agoΒ·Updated 24 days agoΒ· 1
🐸 Duo Dupe Check
    • name_a
    • name_b
    • status
    β—„name_aβ€”β–Ί
    β—„name_bβ€”β–Ί

    Frog Duo Dupe Check is the node that saves you from generating your ten-thousandth copy of the same couple. It checks whether a character pair - name A plus name B - already has an entry in the 🐸 Library, and if it does, it cancels the current queue job on the spot. No image generated, no time wasted on a pair you've already made. If the pair isn't in the library, both names pass through untouched and the workflow continues.

    The context it belongs to is the pack's character-library workflow: you're building a gallery of character pairs, and the point is to only generate pairs you don't have. Wire the two character names in from your character system - the tooltip suggests 🐸 Tag to Description's names output or a Library name output - and this node becomes the guardrail that keeps your library free of duplicates. The check runs in both orders, so "A & B" and "B & A" are treated as the same pair, which is exactly the kind of quiet correctness you'd want from a dedupe node. The docstring confirms it: it cancels if a library entry exists "checked in both orders."

    It also handles the degenerate case nobody thinks about: if you feed it the same character twice - name A equals name B - it cancels too, because a "pair" of one person is meaningless in this workflow. The status output tells you what happened either way.

    The inputs

    • name_a - Character A's name.
    • name_b - Character B's name.

    Both are strings, both wired in rather than typed (they're marked forceInput), because the whole point is that they come from your character pipeline, not from a box you edit by hand.

    What comes out

    name_a and name_b - the passthrough, unchanged - plus status, a string that says which pair was checked and what happened. Wire status into a display or log node if you want to see the verdict.

    Installing it

    Pack install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/RabbitThatIsPink/FrogNodePack
    

    or ComfyUI Manager β†’ "Frog Node Pack". No extra dependencies.

    Where people trip

    The big one is a design choice you need to accept before wiring it in: this node cancels queue jobs. That's the entire job - the README says it uses "the same mechanism as the Image Picker cancel." If you drop it into a workflow you actually want to run unconditionally, it will quietly abort runs whenever a pair already exists in your library, and a cancelled job can look confusingly like a crash if you're not watching the console. Second, it only works if your character names and Library entry names actually agree - the matching is against the Library's stored entries, so spelling drift means it never catches duplicates. And note it's a check-then-cancel node, not a blocker that waits for input; if you want the opposite behavior - never generate a pair that exists - this is precisely it.

    Category🐸 Node Pack

    Inputs (2)

    NameTypeDefaultDescription
    name_aSTRINGName of Character A β€” wire from 🐸 Tag to Description 'names' or a Library 'name' output.
    name_bSTRINGName of Character B.

    Outputs (3)

    NameTypeDescription
    name_aSTRINGName A passthrough.
    name_bSTRINGName B passthrough.
    statusSTRINGStatus message β€” shows which pair was checked.