Load Recipe To Widgets
Load Recipe To Widgets — the author's favorite node, and it's easy to see why
- prompt_text
- negative_prompt_text
- model_name
- seed
- steps
- cfg
- sampler_name
- scheduler
- denoise
- width
- height
- status_json
When the author of this pack showed it off on r/comfyui, he called out two nodes as his favorites. This is one of them, and the screenshot tells you why: it takes a stored workflow recipe and turns it back into editable ComfyUI widget values. Prompts, model, seed, steps, cfg, sampler, scheduler, denoise, width, height - the exact knobs you'd tweak by hand, extracted from the JSON so you can change one thing and re-run.
The whole GenAsset pitch is "reproduce and reuse," and this is the reuse half. A saved version in the cloud is great for reference; a saved version you can load back as live widgets is something you can actually work with. For a team, it also means a non-expert can load a colleague's recipe without knowing which node has which value.
How it works
The node is deliberately dumb in the best way: it takes workflow_json and metadata_json as inputs - exactly the two strings the load nodes output - and parses them locally. No API call, no token needed, no network. It looks in the workflow's api_prompt for a sampler node (KSampler, SamplerCustom, etc.), walks upstream to find the prompt and model, and cross-checks the metadata for performance, model, and image fields. Then it picks the first non-empty value it finds and hands it out the matching output.
That local, stateless design is why it's so pleasant to use: you can feed it JSON from a load node, or paste JSON in the widget by hand. It works even if your GenAsset connection is down.
Inputs and outputs that matter
Two inputs, both multiline JSON strings: workflow_json and metadata_json. Wire them from GenAssetLoadVersion, GenAssetLoadExactVersion, or GenAssetLoadCurrentVersion. If a field is missing from the JSON, the corresponding output comes back empty or zero rather than crashing - the status_json output includes an extracted map showing exactly which of the eleven fields it found and which it didn't.
The outputs are the whole point, and they're typed properly:
prompt_text,negative_prompt_text,model_name- the text side of the recipe.seed,steps,width,height- integers.cfg,denoise- floats.sampler_name,scheduler- the exact strings KSampler expects.
So you can wire prompt_text into your positive conditioning, seed into KSampler's seed, and so on. The values are suggestions - edit anything before you re-run. That's the feature.
Installation
Same pack, same install: ComfyUI Manager → search GenAsset → install, or
cd ComfyUI/custom_nodes
git clone https://github.com/steliosot/ComfyUI-GenAsset.git
then restart. No extra dependencies - and note that unlike most nodes in this pack, this one needs no token at all, because it never talks to GenAsset. It's pure JSON plumbing.
Common issues
- Most outputs come back empty - the JSON you fed it doesn't match the expected shape. A version saved with
workflow_json: {}(some manual save nodes do that) has nothing to extract. Checkstatus_json'sextractedmap to see which fields were found. - Seed or width show 0 but you know they were set - the metadata was stored under a different key than the node looks for. The node's
pick_*helpers try several known names, but a version saved outside this pack may not line up. - You expected a prompt and got one from the wrong sampler - the node grabs the first sampler it finds upstream. In a multi-sampler workflow that may not be the one you wanted; feed it a workflow with one clear sampler for predictable results.
This is the node that makes a saved version feel less like an archive and more like a living project. It's also the honest answer to "how do I hand this workflow to someone who's never seen it?" - the recipe becomes widgets, and widgets are what people know how to turn.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| workflow_json | STRING | {} | — |
| metadata_json | STRING | {} | — |
Outputs (12)
| Name | Type | Description |
|---|---|---|
| prompt_text | STRING | — |
| negative_prompt_text | STRING | — |
| model_name | STRING | — |
| seed | INT | — |
| steps | INT | — |
| cfg | FLOAT | — |
| sampler_name | STRING | — |
| scheduler | STRING | — |
| denoise | FLOAT | — |
| width | INT | — |
| height | INT | — |
| status_json | STRING | — |