Nodes/Mememage/Mememage Workflow Fields
ComfyUI Node

Mememage Workflow Fields

Stop re-typing your settings — read them off the graph

By sememtac·Created 4 months ago·Updated 3 months ago· 2
Mememage Workflow Fields
    • fields
    ◄base—►
    ◄modeltrue►
    ◄positive_prompttrue►
    ◄negative_prompttrue►
    ◄seedtrue►
    ◄stepstrue►
    ◄cfgtrue►
    ◄guidancetrue►
    ◄samplertrue►
    ◄schedulertrue►
    ◄denoisetrue►
    ◄lorastrue►

    The most annoying part of writing provenance metadata by hand is that you're copying down values that already exist. Your seed, your steps, your sampler, your model - they're all sitting in the graph right now, typed into KSampler widgets. Mememage Workflow Fields does the re-typing for you: it reads the generation parameters straight out of the workflow and packs them into a clean generation field on the record. Think of it as EXIF for your render, pulled from the graph instead of the pixels.

    How it finds them

    A latent tensor carries no metadata; the settings live in the graph, and this node reads the graph directly. Rather than hunting for specific node types - which multiply endlessly (KSampler, Flux custom-sampling stacks, whatever ships next week) - it harvests a fixed vocabulary of input names (seed/noise_seed, steps, cfg/guidance, sampler_name, …) onto standard tags. Same mapping whether you use KSampler or a Flux custom-sampling rig. It follows wired values back to their literal (a seed driven from a primitive is captured, not blanked), traces the conditioning graph for the prompts, and - the part I appreciate - never guesses. A param it can't confidently read is simply absent, not filled with junk.

    The toggles

    Every parameter has its own on/off switch, all defaulting to on: model, positive_prompt, negative_prompt, seed, steps, cfg, guidance, sampler, scheduler, denoise, loras. Turn off what you don't want emitted; an off param is never produced. Two things worth knowing:

    • cfg and guidance are separate tags on purpose. A Flux guidance scale is a distilled guidance, not interchangeable with CFG. If you don't want it, flip it off - it won't ride along as a bogus cfg.
    • It only emits the params you toggle; a base input merges upstream fields first.

    The output is a single fields object (with the generation data nested under a generation key). Wire it into Mememage Encode's fields socket, or into a Mememage Fields gatherer to merge your own hand-entered fields on top.

    One important boundary

    This is the curated, readable summary. Encode's embed_workflow toggle still stores the entire graph as comfy_prompt regardless - the full recipe rides in the verifiable record. These are two different things: this node gives you clean, queryable fields; comfy_prompt gives you the whole graph for exact reproduction. Both are worth having, and they don't conflict.

    Installing it

    Same pack as everything here. ComfyUI Manager → search "Mememage" → Install → restart, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/sememtac/mememage-comfy
    <ComfyUI-python> -m pip install mememage
    

    Restart; it's under Mememage/Fields. No models or keys.

    Common issues

    • A param you toggled on is missing from the output. By design, not a bug - it only emits what it can confidently read. An exotic or custom sampler stack can leave some values unreadable. The README is upfront that this is best-effort over the standard SD/SDXL nodes; a custom sampler may leave fields blank even when on.
    • It's never cached, so it always runs. The node deliberately re-reads the graph every execution (the IS_CHANGED NaN trick from the plumbing layer), because a randomized seed or edited prompt would otherwise go stale. If you feel the graph re-running more than you expect, this node is likely why - and that's correct behavior, not a leak.
    • Confused by cfg vs guidance? You're not alone. Flux users should treat guidance as its own thing; SD1.5/SDXL users can leave it on harmlessly or off.
    CategoryMememage/Fields

    Inputs (12)

    NameTypeDefaultDescription
    baseoptSTRINGOptional upstream fields to merge first.
    modeloptBOOLEANtrue—
    positive_promptoptBOOLEANtrue—
    negative_promptoptBOOLEANtrue—
    seedoptBOOLEANtrue—
    stepsoptBOOLEANtrue—
    cfgoptBOOLEANtrue—
    guidanceoptBOOLEANtrueFlux's guidance scale — its own tag (a distilled guidance, NOT interchangeable with cfg). Off if you don't want it.
    sampleroptBOOLEANtrue—
    scheduleroptBOOLEANtrue—
    denoiseoptBOOLEANtrue—
    lorasoptBOOLEANtrue—

    Outputs (1)

    NameTypeDescription
    fieldsSTRING—