Nodes/Shima/Shima Seed Controller
ComfyUI Node

Shima Seed Controller

Shima Seed Controller

By KDB-USJP·Created 6 months ago·Updated 6 months ago· 2
Shima Seed Controller
    • s33d
    • mode
    s33d0
    modefixed
    step1
    external_mode
    external_s33d
    allow_external_linkingfalse

    Every ComfyUI beginner gets bitten by control_after_generate at least once: you land a seed you like, flip the dropdown to "fixed" to keep it, and it's already gone, because the widget fires after the run. Shima Seed Controller is this pack's answer - a seed node that moves that logic into a node you can wire, instead of a dropdown hiding on a KSampler.

    The pack calls this the "s33d standard." Notice the spelling: the widget is s33d, not seed. That's deliberate - the tooltip spells it out. If the node named its input seed, ComfyUI would auto-add a non-connectable dropdown to it, which defeats the whole point. Renaming it to s33d lets the pack expose a connectable seed port. It looks like a typo. It's a feature.

    The workflow pattern is: drop this node at the top level of your graph, set your base seed, and run its s33d output into the external_s33d inputs on nodes inside subgraphs or islands. Because the pack leans hard on Use Everywhere auto-linking, one controller can drive seeds all over a large graph from a single place - which is exactly the "one seed, five samplers" idea the community's been preaching for years, just with a nicer control surface.

    The inputs that matter

    • s33d - your base seed. fixed uses it as-is.
    • mode - fixed, increment, decrement, or randomize. Increment/decrement step by step each run; the node tracks the last emitted seed per node instance, so counting is cumulative rather than always relative to your base value. Randomize rolls a fresh seed every execution.
    • external_mode / external_s33d - optional inputs that override the widgets when connected. This is the subgraph hook: a controller upstream can drive a controller downstream.
    • allow_external_linking - lets the node broadcast/receive outside its island group.

    Outputs are s33d (the processed INT, wire it to external_s33d ports) and mode (the mode as a string, handy for chaining or just confirming what ran).

    Two implementation details worth knowing. It's marked OUTPUT_NODE, so it always executes even if nothing downstream changed. And its IS_CHANGED returns a fresh random value for the randomize/increment/decrement modes, which forces ComfyUI to actually re-run it each queue - the always-rerun trick from the plumbing layer, applied correctly.

    Installing it

    This node ships inside KDB-USJP/shima_wf (the "Shima" pack), so you install the whole pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/KDB-USJP/shima_wf
    

    Then restart ComfyUI. ComfyUI Manager can do it too - search for "Shima" in the install-custom-nodes list. One caveat from the field: the pack's author has shipped nodes in the past that Manager's scanner didn't pick up, so if the search comes up empty, just clone the repo directly - it's two commands and always works. On first launch the pack's install.py auto-clones ComfyUI-Impact-Pack and cg-use-everywhere if they're missing, because the islands assume both. The clone needs nothing extra from HuggingFace for this node.

    Where people get burned

    The increment/decrement memory is per-node and session-scoped - restart the server and it forgets, so a "run 12 from seed X" batch doesn't survive a reboot. Also, mode comes back as a string output, not a number, which surprises people who wire it into something expecting INT. And if you're only using one sampler, this node is arguably more machinery than you need - the whole point is multi-sampler and subgraph workflows, so don't add it just to control one KSampler.

    CategoryShima/Sampling

    Inputs (6)

    NameTypeDefaultDescription
    s33dINT00–18446744073709550000Base seed value. Why 's33d'? Using this name prevents ComfyUI from auto-adding a non-connectable dropdown, allowing our own connectable version.
    modeCOMBOfixedHow to handle the seed: fixed (use as-is), increment (+1 each run), decrement (-1 each run), randomize (new random each run)
    stepINT11–1000Step size for increment/decrement modes
    external_modeoptCOMBOOptional external mode - overrides widget when connected
    external_s33doptINTOptional external seed - overrides widget when connected
    allow_external_linkingoptBOOLEANfalseIf ON, this node broadcasts/receives OUTSIDE the Island (ignores group regex)

    Outputs (2)

    NameTypeDescription
    s33dINTThe processed seed value (connect to external_s33d on other nodes)
    modeSTRINGThe mode used (for chaining or debugging)