Graph Dump (Studio Leiel)
Guessing widget names for your filename template? Print the whole graph instead
- report
Every "type your filename as a template" node has the same hidden tax: you have to know the exact widget names. Is it steps or step? sampler_name or sampler? The author's template says {@KSampler|steps}, but your sampler is a SamplerCustomAdvanced, and now you're guessing. Graph Dump (Studio Leiel) is the tool that turns guessing into reading.
It's a debug utility from the same pack as the Visual Filename Manager and Filename Template. You drop it on the canvas, queue once, and it prints every node's id, class, title, and widget names with values - straight into a text output. It's the "show me the skeleton" node you reach for when a chip won't resolve or you're hand-writing a template for a workflow you didn't build.
How it works
Same mechanism as its siblings: ComfyUI passes every node a hidden PROMPT dict (node id → class → widget values for the whole graph) and EXTRA_PNGINFO (the workflow JSON, including node titles). Graph Dump builds a lookup index from those and renders it as a report. It's an output node, so it always runs, and it returns NaN from IS_CHANGED to force recomputation every run - which matters, because if you're dumping a graph you want the dump to reflect the workflow as it is now, not as it was cached three edits ago.
Each entry looks like:
#7 [KSampler] title="KSampler"
seed = 12345678
-> {KSampler|seed}
steps = 30
-> {KSampler|steps}
cfg = 7
-> {KSampler|cfg}
See that -> {KSampler|seed} line? That's the exact token you paste into a Filename Template. The node does the syntax work for you - you just copy. It also walks links upstream one hop, so a widget whose value comes from another node shows where the link goes, and at the bottom it previews what {loras} would produce from every LoRA it can find.
The inputs
Only two, both trivial:
filter- leave blank to dump everything, or type a partial name (case-insensitive) to show only nodes whose title or class contains it. Great when you have 60 nodes and only care about the KSampler.show_linked_inputs- off by default. Toggle it on to also show widgets that are connected inputs (they appear as<link from #7>instead of a value). Handy when debugging why a value resolves asNone.
One output: report, a single STRING. Wire it to any text preview node, or - since it's a full dump - just read it in the node's own display if your frontend shows output-node text.
Install
Same pack, so the install is identical:
cd ComfyUI/custom_nodes
git clone https://github.com/studioleiel/comfyui-visual-filename-manager
or ComfyUI Manager → search "Visual Filename Manager" → install, then restart and hard-refresh the browser (Ctrl+Shift+R). Zero dependencies - Python standard library only, no models.
Using it in practice
- Writing a template by hand → drop Graph Dump, queue, copy the
{node title|widget}tokens straight out of the report. - A chip in the Studio node shows
unresolved→ dump the graph, confirm the node title and widget name actually match what the chip expects. Mismatched titles are the #1 cause. - Learning someone else's workflow → the dump is a readable map of every node and what it's set to. Honestly useful even outside filenames.
Two honest caveats. First, it's a diagnostic node - you don't leave it in a workflow you share, because the report is only as current as your last run and the full dump is noisy (that's what filter is for). Second, it's a brand-new pack with almost no community footprint yet, so there's no battle-tested Reddit lore about edge cases - the report output is your debugging tool, and the pack's other nodes all emit a report string too, so you've already learned the pattern.
Keep it simple: if you ever find yourself asking "what is that node actually called," this is the node that answers.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| filter | STRING | — | |
| show_linked_inputs | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| report | STRING | — |