🔢 Seed
One seed value shared across an entire workflow
- seed
The simplest node in this entire pack, and one of the most useful once your workflow has more than one place that needs a seed. Instead of a seed widget baked separately into every sampler, this node produces one INT seed value you route wherever it's needed - every KSampler, every Random Prompt call, anything seed-driven downstream stays in sync automatically.
Why a dedicated seed node beats per-node seed widgets
Most sampler nodes come with their own built-in seed field, and for a workflow with exactly one sampler that's fine. The moment you've got two samplers (a base pass and a hires-fix pass, say), or a sampler plus this pack's Random Prompt node, or anything else that consumes a seed, per-node seed widgets mean either manually keeping them in sync by hand, or accepting that they'll drift apart and your "reproducible" run isn't actually reproducible. A single upstream Seed node feeding everything solves that structurally - one control, one source of truth, wired to as many downstream consumers as you have.
It's also the natural building block for automation: a workflow you're queuing repeatedly (batch generation, a scripted sweep) wants a seed that changes predictably run to run without you touching a dozen widgets, and that's exactly the random toggle's job.
The inputs and outputs that matter
seed- the INT value itself, 0 up to the standard ~1.8×10¹⁹ ceiling most ComfyUI seed fields use.random(default false) - when on, generates a new random seed each time the node runs instead of using the fixedseedvalue.
One output: seed, typed INT. Wire it into every sampler, prompt-randomizer, or other seed-consuming node in the workflow.
Installing it
ComfyUI Manager: search SDVN_Comfy_node, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/StableDiffusionVN/SDVN_Comfy_node
Then pip install -r custom_nodes/SDVN_Comfy_node/requirements.txt from your ComfyUI root, and restart. No models, no downloads.
Where people get burned
random: true means you lose reproducibility, on purpose. That's the point of the toggle, but it's easy to forget it's on, run something you meant to reproduce later, and find the seed was never actually fixed. Flip random back to false (and note the seed value it landed on) the moment you get a result worth keeping.
Not wiring every consumer to the same Seed node defeats the purpose. If one sampler in your graph still has its own local seed widget instead of taking this node's output, you're back to the sync problem this node exists to solve. Audit your graph for stray built-in seed fields if results aren't reproducing the way you expect.
A fixed seed doesn't guarantee an identical result across different samplers, schedulers, or model versions. Seed reproducibility only holds when everything else in the chain - sampler, scheduler, steps, CFG, the model itself - also stays the same. Change any of those and the same seed will still produce a different image; that's expected, not a bug in this node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00–18446744073709550000 | Giá trị seed ban đầu. |
| random | BOOLEAN | false | Bật để tạo seed ngẫu nhiên. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| seed | INT | Seed kết quả. |