ComfyUI Node

Output Core

The SickOllie save node that decodes and names your results for you

By sickollie·Created 2 months ago·Updated 7 days ago· 17
Output Core
  • images
  • samples
  • vae
  • images
output_rootProject Folder Name
subfolder_literal
subfolder_var_1clean_name
subfolder_var_2[None]
subfolder_var_3[None]
subfolder_var_4[None]
subfolder_delimiter_
filename_literal
filename_var_1raw_stem
filename_var_2model_name
filename_var_3time_hhmmss
filename_var_4[None]
filename_var_5[None]
filename_var_6[None]
filename_delimiter_
extensionpng
quality95
counter_digits5
save_prompt_jsontrue
save_workflow_jsontrue
save_civitai_parameterstrue
clean_name
raw_stem
model_name
seed0
prompt_index0
outfit_index0
scene_index0
prompt_file
outfit_file
scene_file
saved_path
generation_info
applied_loras

Studio Output Core (SOOutputBuilderSaveStudio) is Classic Output Core with the wiring removed. Same variable-driven path building, same ComfyUI plus Civitai metadata, same PNG/JPG/WebP choice - but where Classic demands you feed it clean_name, seed, and every index by hand, Studio reads that context from the workflow graph itself. It'll even decode latents for you. In the Studio flow it's the single terminal node: Generation Core's samples + vae go in, organized, metadata-rich files come out.

How it works

The variable system is the same as Classic - output_root plus subfolder_var_1..4 and filename_var_1..6 slots with literal strings and delimiters - but the variable menu is bigger: it adds main_folder and main_trigger, plus date_mmdd, time_hhmm, and a full datetime_yyyymmdd_hhmmss for people who like timestamps that sort themselves. Defaults give you a sensible output_root placeholder, clean_name in the subfolder, and raw_stem_model_name_time_hhmmss in the filename.

The headline difference is Auto Context: it reads recognized upstream Studio state from the workflow, so the model name, LoRA clean name, resolved prompt, seed, and indexes are discovered rather than wired. That's why the Studio graph gets away with no metadata bundle - Output Core reaches back up the graph and pulls the context itself. It can also accept either a decoded images (which takes priority) or samples + vae to decode internally, so you can hang it straight off Generation Core without a VAE Decode node.

Metadata handling is identical to Classic: save_prompt_json, save_workflow_json, and save_civitai_parameters toggles, with the same PNG-for-round-trip rule and the same Civitai exact-hash caveat. The index inputs are string-backed in Studio ("0" rather than 0), which is a small but thoughtful detail - blank dashboard values can't fail prompt validation.

Inputs and outputs that matter

Set output_root to your project name, pick subfolder/filename variables, choose extension (png/jpg/webp), quality for JPG/WebP, and flip the three metadata toggles. Optional: images or samples + vae, plus generation_info and applied_loras overrides. Output: images passthrough - Studio deliberately exposes just the one output, since save-path reporting lives in the dashboard.

Installing it

Part of the SickOllie pack:

cd ComfyUI/custom_nodes
git clone https://github.com/sickollie/SickOllie

or ComfyUI Manager → "SickOllie". Restart, Ctrl+F5.

Where people get burned

Same metadata discipline as Classic: save PNG with prompt + workflow metadata on, or the reload ability is gone. The Auto Context makes it easy to stop thinking about wiring, which is the risk - if you rename or bypass a Studio node upstream, context comes from what's actually connected, so an image saved from a half-built graph may carry less than you'd expect. And remember the decode behavior: images wins when both are connected, so if you're feeding a decoded stream and the output looks different from the latent path, that's the priority rule working as documented.

CategorySick Ollie/Studio

Inputs (37)

NameTypeDefaultDescription
output_rootSTRINGProject Folder NameRoot output folder relative to ComfyUI output.
subfolder_literalSTRING
subfolder_var_1COMBOclean_name18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
subfolder_var_2COMBO[None]18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
subfolder_var_3COMBO[None]18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
subfolder_var_4COMBO[None]18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
subfolder_delimiterSTRING_
filename_literalSTRING
filename_var_1COMBOraw_stem18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
filename_var_2COMBOmodel_name18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
filename_var_3COMBOtime_hhmmss18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
filename_var_4COMBO[None]18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
filename_var_5COMBO[None]18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
filename_var_6COMBO[None]18 options: [None], clean_name, raw_stem, model_name, main_folder, main_trigger, +12
filename_delimiterSTRING_
extensionCOMBOpng3 options: png, jpg, webp
qualityINT951–100Used for jpg/webp quality. PNG ignores this.
counter_digitsINT51–10
save_prompt_jsonBOOLEANtrueEmbed Comfy prompt metadata inside the saved image.
save_workflow_jsonBOOLEANtrueEmbed workflow metadata inside the saved image for reload.
save_civitai_parametersBOOLEANtrueEmbed Civitai-readable generation metadata inside the saved image.
clean_nameSTRING
raw_stemSTRING
model_nameSTRINGConnect a model name string here if desired.
seedINT0-1125899906842624–1125899906842624
prompt_indexSTRING0Resolved prompt index override. String-backed so blank legacy/dashboard values cannot fail prompt validation.
outfit_indexSTRING0Resolved outfit index override. String-backed so blank legacy/dashboard values cannot fail prompt validation.
scene_indexSTRING0Resolved scene index override. String-backed so blank legacy/dashboard values cannot fail prompt validation.
prompt_fileSTRING
outfit_fileSTRING
scene_fileSTRING
saved_pathSTRINGRead-only display of the most recent save path.
imagesoptIMAGEDecoded IMAGE input. Takes priority when connected.
generation_infooptSTRING
applied_lorasoptSTRING
samplesoptLATENTOptional latent samples. If images is not connected, Output Core decodes these with the VAE input before saving.
vaeoptVAEVAE used to decode samples when saving directly from latents.

Outputs (1)

NameTypeDescription
imagesIMAGE