AUNGraphScraper
One template line, every value you want from the whole graph
- text
AUNExtractWidgetValue reads one widget from one node. AUNGraphScraper is the same idea on steroids: one template string, and it scrapes a whole line of widget values from across the graph at once. The template syntax is {Node.Widget} - either {1.ckpt_name} by node ID or {FaceID.weight} by node title - and the node resolves every placeholder into a single output string. Model, seed, strengths, sampler, all in one text line you can drop into a filename or a label.
The required input is template, a multiline string with placeholders mixed with whatever text you want around them. The default shows the idea: Model: {1.ckpt_name} | Weight: {FaceID.weight} - it grabs the ckpt_name widget from node 1 and the weight widget from the node titled FaceID, and stitches them into one readable line. You can reference the same node multiple times, mix IDs and titles, and add any literal text you like. The one optional input, basename_if_path (default on), turns path-like values into just their basename - so a model widget that holds models/checkpoints/foo.safetensors contributes foo.safetensors instead of the whole path.
The output is a single text STRING. Feed it into a Show Text node for a live dashboard of your run, or into the pack's filename machinery for self-documenting names. Because it re-evaluates every run (the node's IS_CHANGED forces it), the line always reflects the current widget values - swap the model or bump the strength and the output updates without you touching it.
Under the hood it's graph scraping with a couple of thoughtful touches. It resolves identifiers case-insensitively and understands subgraph namespacing, so it works when your workflow nests nodes inside subgraphs (it infers the current namespace from its own node ID). And it's built for one job only - no type conversion, no float/int outputs like AUNExtractWidgetValue; if you need a typed value, use that node instead. Think of this as the "for display and filenames" scraper, and the single-widget one as "for feeding numbers into other nodes."
Where it really earns its keep is a filename template. AUNPathFilenameV2 wants tokens; this node lets you build arbitrary composed lines like seed={7.seed}_cfg={7.cfg}_model={1.ckpt_name} and hand the whole thing to your save step. One node replaces a pile of extractor plumbing.
Install with the pack: ComfyUI Manager (search "AUN") or cd ComfyUI/custom_nodes && git clone https://github.com/loz2754/AUN-ComfyUI-Nodes, then restart. Dependency-light, no models. If the default template references a node that doesn't exist in your workflow, placeholders just come out empty - worth knowing before you panic at a blank label.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| template | STRING | Model: {1.ckpt_name} | Weight: {FaceID.weight} | Template text with placeholders like {NodeTitle.WidgetName} or {NodeID.WidgetName}. Example: {1.ckpt_name} or {FaceID.weight}. |
| basename_if_pathopt | BOOLEAN | true | If a scraped value looks like a path, output only the filename instead of the full path. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |