Generation Info Filter
What actually differed between your comparison images
- data
- settings
- settings_data
- help
Generation Info dumps one branch's settings. When you're comparing four images, what you actually want to see is not four full dumps - it's the fields that differ between them. Generation Info Filter takes the collected dumps and does exactly that: lines them up field by field and emits the settings as per-image blocks, ready for the comparison.
The input side is one bundle: data, typed GEN_INFO_LIST, from a Get Accumulator (gen info) node. That's the whole elegance of it - you collect one Generation Info dump per branch into the accumulator, and the filter handles the rest. It compares a field (a class type + occurrence index + param name) across all dumps and emits one block per image, separated by a --- line, in accumulator index order.
The inputs that matter:
data- the bundle from Get Accumulator (gen info). This is the one you wire.mode-all(every field),differences(only fields that vary across inputs, each block showing all of them so the images line up),custom(only the fields you name), ordifferences + custom(union).custom_fields- one selector per line:ClassType,ClassType[n](the n-th occurrence, 1-based),ClassType[n].param, orClassType.param. Thehelpoutput prints the syntax.skip_empty- on by default; drops empty dumps so a bypassed branch doesn't shift the alignment.
The outputs:
settings- the plain-text per-image blocks.settings_data- structuredGEN_SETTINGSwith class-qualified keys; wire into Image Compare (HTML)'ssettings_datainput to render one[Class] param: valueline per field under each image.help- the selector syntax, printed for you.
The alignment assumption is worth understanding: it works when your branches share structure, so the k-th occurrence of a class lines up across inputs. A field missing from some inputs counts as a difference and shows as -, which is why differences mode is so good at showing "branch 2 used euler where everyone else used euler_a."
The realistic workflow: four branches, different seeds or samplers, all feeding Set Accumulator (gen info) → Get Accumulator (gen info) → this filter → Image Compare. What renders under each image is exactly the delta you care about, not the 200 identical widget values. That's the difference between "I think I changed the scheduler" and actually seeing it.
Install via ComfyUI Manager (search "Kinburg-Nodes") or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kinburg/Kinburg-Nodes
then restart. No dependencies beyond the pack. One-author personal collection, per-package docs, 1395 automated checks. The one thing to get right is feeding it the accumulator's GEN_INFO_LIST output - a raw Generation Info data dump wired straight in will confuse it, because it expects a bundle of dumps, not one.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| data | GEN_INFO_LIST | Bundle of per-image Generation Info dumps from a Get Accumulator (gen info). One block is emitted per dump, in accumulator index order. | |
| mode | COMBO | differences | all = every field; differences = only fields that vary across inputs; custom = only fields in custom_fields; last = union of both. |
| custom_fields | STRING | One selector per line: ClassType / ClassType[n] / ClassType[n].param / ClassType.param ([n] is the 1-based occurrence). | |
| skip_empty | BOOLEAN | true | Skip empty dumps (e.g. a bypassed branch) so the blocks stay aligned with the rest of the comparison. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| settings | STRING | — |
| settings_data | GEN_SETTINGS | — |
| help | STRING | — |