DumasNodes
DumasNodes is a ComfyUI custom-node pack for generic utility workflows under the Dumas brand.
Included Nodes
-
Dumas Image Compare- Inputs: optional
image1, optionalimage2 - Outputs:
new image - Saves preview images for the built-in compare UI and passes through the second image when present, otherwise the first.
- Bundles a
js/frontend extension so the compare viewer renders inside both classic ComfyUI and Nodes 2.0.
- Inputs: optional
-
Save Image Dumas- Inputs:
images,folder,pattern,format,quality,embed_workflow,save_on_run, optionalname, optionalname_2 - Output: none
- Saves images to any folder, not just ComfyUI's output directory.
- Supports filename tokens including
%input%,%input2%,%date:yyyy-MM-dd%,%counter%,%width%,%height%, and%batch_num%.
- Inputs:
-
Load Images from Folder Dumas- Inputs: configured on-node via folder picker and image gallery
- Outputs:
image,mask,width,height,filename,index,total - Loads one or many images from any folder on disk as ComfyUI list outputs.
- Supports manual picks,
Select all,First N, andSelect randomso each run can choose one random image from the visible folder tree.
-
Dumas H3 Plan Attach Scene Images- Inputs:
plan,scene_index, optionalimage1..image9 - Outputs:
plan,connected_images - Attaches up to nine optional image sockets to one MiniMax H3 plan scene while keeping the plan JSON-serializable for the upstream archive system.
- Chain one node per scene that needs its own nine-image bundle.
- Inputs:
-
Dumas H3 Plan Extract Scene Images- Inputs:
plan,scene_index - Outputs:
plan,image1..image9,connected_images - Reads back the nine optional images for a selected MiniMax H3 plan scene, for example by connecting the current
clip_index.
- Inputs:
-
Dumas H3 Long Videos- Inputs/outputs: the current upstream
MiniMax-H3-Longvideossampler surface, exposed under the existingDumasH3LongVideoskey for saved Dumas workflows. - The local Dumas prompt-engineering fork has been removed from this node. Long Videos now wraps the upstream sampler/engine/runtime/audio/conditioning/shot-plan modules directly so it can track the source project again.
- Upstream compatibility keys
H3LongVideos,H3LongVideosFL2VA,H3LongVideosV1, andH3LongVideosREF2VAare also registered to the same class. - The old Dumas browser widget grouping script is disabled for this node because it targeted controls that no longer exist on the upstream sampler.
handoff_framesextends the upstream last-frame handoff:1keeps the current single keyframe behavior; higher values keep that final-frame keyframe and add earlier tail frames from the previous shot as claimed reference context for the next beat.- Upstream license text is included in
H3_LONGVIDEOS_UPSTREAM_LICENSE.txt.
- Inputs/outputs: the current upstream
-
Dumas H3 Latent Upscale Params- Inputs:
mode,model_name,method,width,height,device,precision,sampler_name,scheduler,steps,denoise,megapixels,tile_width,tile_height,overlap,fade_width,fade_height,overlap_mode,overlap_blend,tile_size_mode,grid_rows,grid_cols,spatial_w_overlap,spatial_h_overlap,min_tile_size,masked_area_noise,brightness_match,dynamic_fade,dynamic_fade_min,chunk_length,temporal_overlap,resize_conditioning,anchor_strength - Output:
latent_upscale_param - Legacy helper from the abandoned Dumas Long Videos fork. The current upstream-backed
Dumas H3 Long Videosnode does not consume this socket; it uses the upstream latent-upscale controls on the Long Videos node itself.
- Inputs:
-
Dumas H3 Beat Prompt- Inputs: authored through the custom front-end beat editor
- Output:
prompt - Builds an upstream-compatible Long Videos prompt: optional scene paragraph, optional character sheet, then one blank-line-separated textbox per beat.
- Per-beat helpers only emit upstream-supported state directives:
remove:/removed:/off:andadd:/wear:/wearing:. - Old Dumas-only beat directives such as
seconds:,continuity:,ref_mode:,ref_noise_aug:,anchor_add:,soundscape:, andmusic:are stripped from the generated prompt so they are not sent to the upstream node as visible text.
-
Dumas H3 Prompt Curator- Inputs:
action_prompt,anatomy_guard,subject_count_guard, optionalanchor, optionalsoundscape, optionalbgm, optionalref_1throughref_9 - Outputs:
prompt,ref_image_1throughref_image_9,reference_count,debug,anchor,sounds,bgm,original_ref_1throughoriginal_ref_9,compiled_ref_description_1throughcompiled_ref_description_9 - Builds one standalone MiniMax H3 prompt from your final action text plus structured character/location references.
- The action text can mention references by character/location name, alias,
<Picture N>, or<refN>. Only mentioned references are emitted, and the output images are compacted/renumbered so skipped inputs do not leave gaps. - Extra component outputs expose the cleaned anchor, sounds, BGM, and each connected input reference image plus its compiled reference description in original socket order. These inspection/reuse outputs are not trimmed by the action text; only the final prompt and
ref_image_*H3 reference outputs are trimmed. - Adds curated reference context, anatomy guard text, optional subject-count guard text, anchor/style text,
overall_soundscape:text, andbackground_music:text while respecting MiniMax H3's reference-generation shape: one prompt plus up to nine reference images.
- Inputs:
-
Dumas H3 Shot Length- Inputs:
shot_seconds,fps, optionalcap_to_h3_max - Outputs:
seconds,frames,info - Emits one H3-safe shot length as both seconds and a grid-aligned frame count for wiring into the long-video sampler and preview helpers.
- Inputs:
-
Dumas H3 Model Inspector- Input:
model - Outputs:
format,report - Reports the detected H3 base precision / quant format and the relevant compute-capability hints for the current card.
- Input:
-
Dumas Character Reference- Inputs:
image,character_id,name,alias,gender,age,nationality,occupation,height_feet,height_inches,accent,description,general,wardrobe - Output:
reference - Builds one structured
REFERENCEobject carrying the conditioning image, identity description, wardrobe, general notes, and simple facts together.
- Inputs:
-
Dumas Location Reference- Inputs:
image,location_id,name,alias,description,general - Output:
reference - Builds one structured
REFERENCEobject for a location/environment so H3 can use the same socket type for both character and scenic refs.
- Inputs:
-
Dumas Character Helper- Inputs:
image1,image2, picture IDs, character identity fields,general,wardrobe - Outputs:
image1,image2,reference_prompt,wardrobe,reference1,reference2 - Restores the original general-purpose helper shape while also emitting two structured
REFERENCEobjects for the prompt curator. - The structured references carry the same character name, alias, age, height, gender, nationality, occupation, accent, wardrobe, and notes, so mentioning the character name in
Dumas H3 Prompt Curatorcan include both helper images and the character facts automatically.
- Inputs:
-
Dumas Location Helper- Inputs:
image1,image2, picture IDs,location_id,name,alias,description,general - Outputs:
image1,image2,reference_prompt,reference1,reference2 - Matching general-purpose helper for environments/locations: pass two images through unchanged, emit location reference prompt text, and provide two structured
REFERENCEobjects for the prompt curator. - The structured references carry the same location name, alias, description, and notes, so mentioning the location name in
Dumas H3 Prompt Curatorcan include both helper images and the location context automatically.
- Inputs:
-
Dumas Anchor Style- Inputs:
anchor_style,style_description - Output:
anchor - Offers a large preset dropdown of anchor-style titles such as cinematic action movie, comedy, found footage, 90s sitcom, mobile/cell phone captured, news broadcast, mockumentary, heist thriller, cyberpunk neon, nature documentary, courtroom drama, and more.
- The preset wording is tuned for H3-safe persistent anchors: camera language, lighting, texture, production treatment, and tone, without naming characters or describing one-off actions.
- Selecting a preset fills the editable description field, and the edited multiline description is the
STRINGvalue passed downstream.
- Inputs:
-
Dumas Soundscape Helper- Inputs:
soundscape,soundscape_description - Output:
soundscape - Matching soundscape helper for standalone H3 prompts. Pick a preset such as quiet interior, rainy street, cafe, city night, forest, industrial, or silent; the preset fills the editable textbox, and the edited text flows into
Dumas H3 Prompt Curator.
- Inputs:
-
Dumas Background Music Helper- Inputs:
bgm,bgm_description - Output:
bgm - Matching BGM helper for standalone H3 prompts. Pick a preset such as subtle tension, cinematic suspense, emotional piano, dark ambient, hopeful orchestral, retro synth, action pulse, lo-fi, or no vocals; the preset fills the editable textbox, and the edited text flows into
Dumas H3 Prompt Curator.
- Inputs:
-
Dumas JSON String to Object- Input:
json_string - Output: parsed
JSON - Use it to turn raw JSON text into a structured object.
- Input:
-
Dumas JSON Object to String- Inputs:
json_object,pretty,sort_keys - Output: serialized
STRING - Use it to compact or pretty-print JSON for prompts, logs, or file output.
- Inputs:
-
Dumas Strip Iteration Suffix- Input:
filename - Output: cleaned
STRING - Keeps only the part before the first underscore, for example
asset_build_003.png -> asset.pngandchar123_pose.png -> char123.png.
- Input:
-
Dumas Slugify String- Input:
text - Output: slug
STRING - Converts text into a lowercase URL/file-safe slug, for example
Crème brûlée 2026 -> creme-brulee-2026.
- Input:
-
Dumas JSON Get Value- Inputs:
json_object,path - Output:
JSON - Reads a nested value using dot paths like
user.profile.nameoritems.0.id.
- Inputs:
-
Dumas JSON Set Value- Inputs:
json_object,path,value_json - Output: updated
JSON - Writes a parsed JSON value into a nested path without mutating the original object.
- Inputs:
-
Dumas JSON Has Key- Inputs:
json_object,path - Output:
BOOLEAN - Checks whether a nested path exists.
- Inputs:
-
Dumas JSON Remove Key- Inputs:
json_object,path - Output: updated
JSON - Removes a nested key or array item by path.
- Inputs:
-
Dumas JSON Pick Fields- Inputs:
json_object,paths - Output: filtered
JSON - Builds a new object from newline-separated paths that exist in the input.
- Inputs:
-
Dumas JSON Merge Objects- Inputs:
base_object,overlay_object - Output: merged
JSON - Deep-merges dictionaries so overlay values replace or extend the base object.
- Inputs:
-
Dumas JSON Keys- Input:
json_object - Outputs:
keysas JSON array,countas integer - Lists the top-level keys of an object and reports how many there are.
- Input:
-
Dumas JSON Array Length- Input:
json_array - Output:
INT - Returns the length of a JSON array.
- Input:
-
Dumas JSON Array Append- Inputs:
json_array,value_json - Output: updated
JSON - Appends a parsed JSON value to the end of an array.
- Inputs:
-
Dumas JSON Array Slice- Inputs:
json_array,start,end,step - Output: sliced
JSON - Returns an array slice.
end=0means "slice to the end".
- Inputs:
-
Dumas JSON Array Iterator- Inputs:
json_input,index,mode - Outputs:
item,current_index,total_items - Returns the current array item and position, with
modeset tofixed,incr, ordecr.
- Inputs:
-
Dumas JSON Object Iterator- Inputs:
json_input,index,mode - Outputs:
key,value,current_index,total_items - Returns the current object entry in insertion order, with
modeset tofixed,incr, ordecr.
- Inputs:
-
Dumas JSON Flatten- Input:
json_input - Output: flat
JSON - Flattens nested objects and arrays into dot-path keys.
- Input:
-
Dumas JSON Unflatten- Input:
flat_json_object - Output: nested
JSON - Rebuilds nested JSON from a flat dot-path object.
- Input:
All nodes live in the Dumas/JSON category.
Installation
-
Change into your ComfyUI custom nodes directory:
cd /path/to/ComfyUI/custom_nodes -
Clone this repository:
git clone https://git.dumas.ddns.net/chris.dumas/DumasNodes.git -
Restart ComfyUI.
Usage
Use dot paths for nested access:
user.profile.name
items.0.id
settings.render.width
Dumas JSON Set Value expects value_json to be valid JSON, so strings should be quoted:
"Dumas"
{"enabled": true, "retries": 3}
Dumas JSON Pick Fields expects one path per line:
user.name
meta.active
items.0.id
Dumas JSON Array Slice treats end=0 as "use the rest of the array".
Dumas JSON Array Iterator clamps to valid bounds:
fixed -> use index as-is
incr -> use index + 1
decr -> use index - 1
Dumas JSON Object Iterator uses the same index rules and iterates object entries in their existing key order.
Dumas JSON Flatten and Dumas JSON Unflatten use the same dot-path format as the other path-based nodes.
Dumas Image Compare accepts one or two images. The new image socket forwards image2 when connected so you can keep the "after" image moving through the workflow, and falls back to image1 if only one input is present.
Save Image Dumas leaves folder empty to use ComfyUI's output directory. name feeds %input% and name_2 feeds %input2%, so a pattern like project/%input%_%input2%_%counter% can combine two upstream strings into the saved filename.
Dumas H3 Plan Attach Scene Images and Dumas H3 Plan Extract Scene Images are a companion pair for ComfyUI-MiniMaxH3-Contex-Loop and the local ref2v lane. The upstream H3 plan node cannot dynamically grow nine new image sockets for every JSON-defined scene, so Dumas stores scene image bindings beside the plan using a lightweight token and an in-memory registry. That keeps plan.json archiving intact while still letting you wire up nine IMAGE sockets per scene through chained helper nodes.
Dumas Character Helper is the restored two-image/text helper for general H3 workflows, and Dumas Location Helper mirrors it for scene/environment references. Both helpers also emit structured REFERENCE sockets for the curator. The structured Dumas Character Reference and Dumas Location Reference nodes remain available separately for workflows that want a single REFERENCE socket. Dumas H3 Prompt Curator consumes those structured references plus optional anchor, soundscape, and BGM strings, assigns the final <Picture N> numbering, and outputs compacted ref_image_* sockets for only the references the prompt actually mentions. Its original_ref_* and compiled_ref_description_* outputs mirror the connected input sockets for reuse/debugging even when a reference is not mentioned in the final prompt.
Dumas Strip Iteration Suffix keeps the part before the first underscore and drops the rest. Names like char123_pose_final.png become char123.png, while names with no underscore such as char123.png are left untouched.
Dumas Slugify String lowercases text, strips accents, replaces non-alphanumeric runs with -, and trims leading or trailing dashes.
Roadmap
This repo is intended to grow into a broader set of Dumas-branded generic utility nodes, including JSON helpers and adjacent data-manipulation tools.
License
MIT.