ComfyUI Extension: KJNodes for ComfyUI
Various quality of life -nodes for ComfyUI, mostly just visual stuff to improve usability.
Custom Nodes (196)
- Save Image With Alpha
- Dummy Latent Out
- ReferenceOnlySimple3
- Image Batch Multi
- Image Normalize -1 to 1
- Reverse Image Batch
- Round Mask
- String Constant Multiline
- Sleep
- ImagePass
- Merge Image Channels
- Shuffle Image Batch
- Batch Crop From Mask
- INT Constant
- String Constant
- Create Gradient Mask
- Get Mask Size & Count
- Remap Mask Range
- Separate Masks
- Image Add Multi
- Get Images From Batch Indexed
- Get Image Size & Count
- ImageBatchRepeatInterleaving
- Flip Sigmas Adjusted
- Image Batch Test Pattern
- Image Grid Composite 2x2
- Inject Noise To Latent
- Insert Latent To Index
- Remap Image Range
- Replace Images In Batch
- Split Bboxes
- NormalizeLatent
- Batch Uncrop Advanced
- String to Float List
- Dummy Out
- Something To String
- VRAM Debug
- NormalizedAmplitudeToMask
- Interpolate Coords
- Stable Zero123 Batch Schedule
- Superprompt
- Screencap mss
- Flux Block Lora Select
- BOOL Constant
- Float To Sigmas
- Image Crop By Mask
- Image Crop By Mask Batch
- Empty Latent Image Custom Presets
- Model Save KJ
- ConditioningSetMaskAndCombine5
- GetMaskSize
- Split Image Channels
- Image Concatenate Multi
- GLIGENTextBoxApplyBatch
- Create Gradient From Coords
- Add Label
- Create Magic Mask
- Mask Batch Multi
- ImagePad KJ
- Image Concatenate From Batch
- Image Uncrop By Mask
- FilterZeroMasksAndCorrespondingImages
- ImageTransformByNormalizedAmplitude
- Cut And Drag On Path
- CheckpointPerturbWeights
- Apply RifleXRoPE WanVideo
- WanVideo Tea Cache (native)
- WanVideo Enhance A Video (native)
- Timer Node KJ
- Scale Batch Prompt Schedule
- Append Strings To List
- Join Strings
- Empty Latent Image Presets
- ModelPass
- NormalizedAmplitudeToFloatList
- Create Shape Mask On Path
- Sigmas To Float
- Stability API SD3
- LoadResAdapterNormalization
- Weight Schedule Extend
- Flux Block Lora Loader
- Diffusion Model Loader KJ
- Float Constant
- Conditioning Multi Combine
- ConditioningSetMaskAndCombine
- ConditioningSetMaskAndCombine3
- ConditioningSetMaskAndCombine4
- CondPassThrough
- (Down)load CLIPSeg
- Batch CLIPSeg
- Color To Mask
- Create Text Mask
- Create Audio Mask
- Create Fade Mask
- Create Fade Mask Advanced
- Create Fluid Mask
- Create Shape Mask
- Create Voronoi Mask
- Grow Mask With Blur
- Offset Mask
- Resize Mask
- Color Match
- Image Tensor List
- Cross Fade Images
- Cross Fade Images Multi
- Get Image or Mask Range From Batch
- Get Latent Range From Batch
- Get Latent Size & Count
- Fast Preview
- Image Batch Filter
- ImageAndMaskPreview
- Image Batch Join With Transition
- Image Concatenate
- Image Crop By Mask And Resize
- Image Grab PIL
- Image Grid Composite 3x3
- Image Grid To Batch
- Image Noise Augmentation
- Image Pad For Outpaint Masked
- Image Pad For Outpaint Target Size
- Image Prep For ICLora
- Resize Image (deprecated)
- Resize Image v2
- Image Upscale With Model Batched
- Insert Images To Batch Indexed
- Load & Resize Image
- Load Images From Folder (KJ)
- Load Videos From Folder
- Pad Image Batch Interleaved
- Preview Animation
- Save Image KJ
- Transition Images Multi
- Transition Images In Batch
- Batch Crop From Mask Advanced
- Insert Image Batch By Indexes
- Batch Uncrop
- Bbox To Int
- Bbox Visualize
- Generate Noise
- Custom Sigmas
- Widget To String
- Save String KJ
- Get Latents From Batch Indexed
- Camera Pose Visualizer
- Join String Multi
- Set Shakker Labs Union ControlNet Type
- Style Model Apply Advanced
- Diffusion Model Selector
- Lazy Switch KJ
- OffsetMaskByNormalizedAmplitude
- AudioConcatenate
- Spline Editor
- Create Shape Image On Path
- Create Text On Path
- Gradient To Float
- Mask Or Image To Weight
- Weight Schedule Convert
- Float To Mask
- Plot Coordinates
- Points Editor
- Sound Reactive
- SV3D Batch Schedule
- GLIGENTextBoxApplyBatchCoords
- Intrinsic Lora Sampling
- Webcam Capture CV2
- Differential Diffusion Advanced
- DiT Block Lora Loader
- Hunyuan Video Block Lora Select
- Wan21 Block Lora Select
- Custom ControlNet Weights Flux From List
- CheckpointLoaderKJ
- TorchCompileModelFluxAdvanced
- TorchCompileModelFluxAdvancedV2
- TorchCompileModelHyVideo
- TorchCompileVAE
- TorchCompileControlNet
- Patch Model Patcher Order
- TorchCompileLTXModel
- TorchCompileCosmosModel
- TorchCompileModelQwenImage
- TorchCompileModelWanVideo
- TorchCompileModelWanVideoV2
- Patch Sage Attention KJ
- Leapfusion Hunyuan I2V Patcher
- VAELoader KJ
- Scheduled CFG Guidance
- Apply RifleXRoPE HunuyanVideo
- Skip Layer Guidance WanVideo
- HunyuanVideo Encode Keyframes To Cond
- CFG Zero Star/Init
- Model Patch Torch Settings
- WanVideoNAG
- CreateInstanceDiffusionTracking
- AppendInstanceDiffusionTracking
- DrawInstanceDiffusionTracking
- LoraExtractKJ
README
KJNodes for ComfyUI
Various quality of life and masking related -nodes and scripts made by combining functionality of existing nodes for ComfyUI.
I know I'm bad at documentation, especially this project that has grown from random practice nodes to... too many lines in one file. I have however started to add descriptions to the nodes themselves, there's a small ? you can click for info what the node does. This is still work in progress, like everything else.
Installation
- Clone this repo into
custom_nodes
folder. - Install dependencies:
pip install -r requirements.txt
or if you use the portable install, run this in ComfyUI_windows_portable -folder:
python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-KJNodes\requirements.txt
Javascript
browserstatus.js
Sets the favicon to green circle when not processing anything, sets it to red when processing and shows progress percentage and the length of your queue. Default off, needs to be enabled from options, overrides Custom-Scripts favicon when enabled.
Nodes:
Set/Get
Javascript nodes to set and get constants to reduce unnecessary lines. Takes in and returns anything, purely visual nodes. On the right click menu of these nodes there's now an options to visualize the paths, as well as option to jump to the corresponding node on the other end.
Known limitations:
- Will not work with any node that dynamically sets it's outpute, such as reroute or other Set/Get node
- Will not work when directly connected to a bypassed node
- Other possible conflicts with javascript based nodes.
ColorToMask
RBG color value to mask, works with batches and AnimateDiff.
ConditioningMultiCombine
Combine any number of conditions, saves space.
ConditioningSetMaskAndCombine
Mask and combine two sets of conditions, saves space.
GrowMaskWithBlur
Grows or shrinks (with negative values) mask, option to invert input, returns mask and inverted mask. Additionally Blurs the mask, this is a slow operation especially with big batches.
RoundMask
WidgetToString
Outputs the value of a widget on any node as a string
Enable node id display from Manager menu, to get the ID of the node you want to read a widget from:
Use the node id of the target node, and add the name of the widget to read from
Recreating or reloading the target node will change its id, and the WidgetToString node will no longer be able to find it until you update the node id value with the new id.