LC Node Snapshot π
Read another node's widgets β without reloading the workflow
- source
- selected
- lines
- json
Sometimes the value you want is already sitting in a widget on another node - the seed on a sampler, the strength on a LoRA, the preset on a style node - and you'd rather pull it out and use it somewhere else than retype it and risk it drifting out of sync. LC Node Snapshot is the read-head: point it at another node, pick a widget, and it hands you that widget's current value. Three outputs, one for how you want it.
How it works
You identify the target node one of two ways. Preferred: wire any output from the node you want to inspect into source - the wildcard socket accepts anything, and the connection is what marks the target. Fallback: type the node's exact title (or numeric id) into the target text field. Then set widget_name - the name of the parameter widget on that node (like preset or strength). The frontend fills a dropdown of the target's widget names for you, so you pick rather than guess.
The node then outputs:
- selected - the widget's current value as a string.
- lines - a dump of node identity plus the value, line-oriented.
- json - the same information structured as JSON with the widgets object.
It's marked as always-changed, so it re-reads on every queue run rather than caching the value from last time.
The real use case
This is the "grab a value out of the graph" node - snapshot a style node's preset so you can log it, or pipe the current seed into a filename, or pull a strength so another node can compute against it. It also makes a decent poor-man's inspection tool: if you want to know what a node is actually doing mid-pipeline, snapshot its widgets and look at the output.
The details that bite
sourcetakes priority overtarget- if both are connected/typed, the wire wins.targetneeds the exact title (case-sensitive-ish). Titles are what you see in bold on the node; numeric ids are the way ComfyUI addresses nodes internally.widget_nameis a plain string field validated against nothing at load - if you misspell it, you'll get an emptyselected. Use the dropdown the frontend fills in.- If nothing is identified, you'll get empty outputs rather than an error. Not a crash, but a "did I even point this at anything?" moment.
Install
Part of ComfyUI LC123 Nodes (MIT, 89 nodes). ComfyUI Manager β search "ComfyUI LC123 Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes
Restart. No extra dependencies. On hosted platforms like RunningHub, request the pack and they install it for you.
When not to bother
If you just want one value feeding several places, the cleaner move is converting the source widget to an input and wiring a single primitive to all of them - that's the "one source, many consumers" pattern from the plumbing playbook. Snapshot is for reading values you don't control (someone else's node, a preset you didn't build) or for logging/inspection. Different job, same family.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| widget_name | STRING | Name of a parameter widget on the target (e.g. preset, strength). | |
| sourceopt | * | Wire any output from the node you want to inspect. Takes priority over target text. | |
| targetopt | STRING | Fallback: node title (exact) or numeric id if source is not connected. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| selected | STRING | β |
| lines | STRING | β |
| json | STRING | β |