Nodes/TrentNodes/Cowboy Widget Roundup
ComfyUI Node

Cowboy Widget Roundup

Extract widget values from across the graph, in one string

By TrentHunter82·Created 9 months ago·Updated 4 days ago· 36
Cowboy Widget Roundup
  • node_1
  • text
node_count1
widgets_per_node1
node_1_widget_1
node_1_widget_2
node_1_widget_3
node_1_widget_4
node_2_widget_1
node_2_widget_2
node_2_widget_3
node_2_widget_4
node_3_widget_1
node_3_widget_2
node_3_widget_3
node_3_widget_4
node_4_widget_1
node_4_widget_2
node_4_widget_3
node_4_widget_4
node_5_widget_1
node_5_widget_2
node_5_widget_3
node_5_widget_4
node_6_widget_1
node_6_widget_2
node_6_widget_3
node_6_widget_4
include_titlestrue
include_widget_namestrue
float_decimals2

Every so often you want to report what the graph is doing - the seed, the CFG, the steps, the sampler, all the values sitting in widgets across five different nodes - in one place. Copying them by hand is exactly how reports go stale. Cowboy Widget Roundup pulls the values out programmatically: you connect up to six nodes to its node_N inputs, type the names of the widgets you care about into the fields, and it outputs one multi-line string with each node's title and its widget values. The node description is precise about the contract: "Works through real links only - no id lookup."

Here's the shape of it. node_count (1–6) and widgets_per_node (1–4) grow and shrink the inputs and fields, so the node face is exactly as big as your report needs. For each node you get node_N_widget_M fields where you type the widget's name - "seed", "cfg", "steps", "denoise", whatever the widget is called on that node. Leave a field empty and it's skipped. Then three formatting toggles decide the output:

  • include_titles - each node's title above its values (on by default).
  • include_widget_names - prefix each value with widget_name: (on by default).
  • float_decimals - decimal places for float values (default 2). Your 0.875 denoise reads as 0.88, which is usually what you want in a report.

The output is one text string you can feed to a text display, a logger, or a filename generator. For "what settings produced this render," it's the honest answer.

This is the part to read carefully. The node reads widget values through the actual connections in the graph - it looks at the nodes you've wired into node_1node_6 and reads their widgets by the names you typed. That means:

  • The source nodes must have real wires to this node. If you disconnect, the values vanish.
  • The widget names must match exactly what the node calls them. "CFG" vs "cfg" will fail silently or pull nothing - check the widget's label on the source node.
  • Widgets that have been converted to inputs stop being widgets. If you converted a sampler's seed widget to an input socket, it's no longer a widget on the node, and Roundup can't read it from the node alone - that value now lives in whatever feeds the socket. This is the classic "works through real links only" trap and it's worth knowing before you build a report around converted widgets.

When you'd use it

Configuration snapshots for reproducibility (this render ran seed 42, cfg 7.5, steps 30, sampler euler, denoise 0.6), batch-loops where you want each run's parameters logged, or a "show me what this workflow is doing" text output you can glance at mid-iteration. It's pure plumbing - no models, no downloads - and it ships in TrentNodes: ComfyUI Manager (search "Trent Nodes"), or clone + pip install -r requirements.txt.

For a pack full of video and keying hardware, this is the unglamorous node that makes the "what actually ran" question answerable in one string. Once you wire it into a text logger, you'll never hand-copy a seed again.

CategoryTrent/Text

Inputs (30)

NameTypeDefaultDescription
node_countINT11–6How many node inputs to show.
widgets_per_nodeINT11–4How many widget-name fields per node.
node_1_widget_1optSTRINGName of a widget on the node_1 input. Leave empty to skip.
node_1_widget_2optSTRINGName of a widget on the node_1 input. Leave empty to skip.
node_1_widget_3optSTRINGName of a widget on the node_1 input. Leave empty to skip.
node_1_widget_4optSTRINGName of a widget on the node_1 input. Leave empty to skip.
node_2_widget_1optSTRINGName of a widget on the node_2 input. Leave empty to skip.
node_2_widget_2optSTRINGName of a widget on the node_2 input. Leave empty to skip.
node_2_widget_3optSTRINGName of a widget on the node_2 input. Leave empty to skip.
node_2_widget_4optSTRINGName of a widget on the node_2 input. Leave empty to skip.
node_3_widget_1optSTRINGName of a widget on the node_3 input. Leave empty to skip.
node_3_widget_2optSTRINGName of a widget on the node_3 input. Leave empty to skip.
node_3_widget_3optSTRINGName of a widget on the node_3 input. Leave empty to skip.
node_3_widget_4optSTRINGName of a widget on the node_3 input. Leave empty to skip.
node_4_widget_1optSTRINGName of a widget on the node_4 input. Leave empty to skip.
node_4_widget_2optSTRINGName of a widget on the node_4 input. Leave empty to skip.
node_4_widget_3optSTRINGName of a widget on the node_4 input. Leave empty to skip.
node_4_widget_4optSTRINGName of a widget on the node_4 input. Leave empty to skip.
node_5_widget_1optSTRINGName of a widget on the node_5 input. Leave empty to skip.
node_5_widget_2optSTRINGName of a widget on the node_5 input. Leave empty to skip.
node_5_widget_3optSTRINGName of a widget on the node_5 input. Leave empty to skip.
node_5_widget_4optSTRINGName of a widget on the node_5 input. Leave empty to skip.
node_6_widget_1optSTRINGName of a widget on the node_6 input. Leave empty to skip.
node_6_widget_2optSTRINGName of a widget on the node_6 input. Leave empty to skip.
node_6_widget_3optSTRINGName of a widget on the node_6 input. Leave empty to skip.
node_6_widget_4optSTRINGName of a widget on the node_6 input. Leave empty to skip.
include_titlesoptBOOLEANtruePut each node's title above its values.
include_widget_namesoptBOOLEANtruePrefix each value with 'widget_name: '.
float_decimalsoptINT20–10Decimal places for float values.
node_1opt*

Outputs (1)

NameTypeDescription
textSTRINGOne multiline string: each node's title and widget values.