Nodes/Kinburg-Nodes/Generation Info Filter
ComfyUI Node

Generation Info Filter

What actually differed between your comparison images

By Kinburg·Created 3 months ago·Updated 6 days ago· 1
Generation Info Filter
  • data
  • settings
  • settings_data
  • help
modedifferences
custom_fields
skip_emptytrue

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), or differences + custom (union).
  • custom_fields - one selector per line: ClassType, ClassType[n] (the n-th occurrence, 1-based), ClassType[n].param, or ClassType.param. The help output 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 - structured GEN_SETTINGS with class-qualified keys; wire into Image Compare (HTML)'s settings_data input to render one [Class] param: value line 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.

CategoryKinburg-Nodes/util

Inputs (4)

NameTypeDefaultDescription
dataGEN_INFO_LISTBundle of per-image Generation Info dumps from a Get Accumulator (gen info). One block is emitted per dump, in accumulator index order.
modeCOMBOdifferencesall = every field; differences = only fields that vary across inputs; custom = only fields in custom_fields; last = union of both.
custom_fieldsSTRINGOne selector per line: ClassType / ClassType[n] / ClassType[n].param / ClassType.param ([n] is the 1-based occurrence).
skip_emptyBOOLEANtrueSkip empty dumps (e.g. a bypassed branch) so the blocks stay aligned with the rest of the comparison.

Outputs (3)

NameTypeDescription
settingsSTRING
settings_dataGEN_SETTINGS
helpSTRING