Nodes Browser

AddLabel
AppendInstanceDiffusionTracking
AppendStringsToList
BOOLConstant
BatchCLIPSeg
BatchCropFromMask
BatchCropFromMaskAdvanced
BatchUncrop
BatchUncropAdvanced
BboxToInt
BboxVisualize
CameraPoseVisualizer
CheckpointLoaderKJ
CheckpointPerturbWeights
ColorMatch
ColorToMask
CondPassThrough
ConditioningMultiCombine
ConditioningSetMaskAndCombine
ConditioningSetMaskAndCombine3
ConditioningSetMaskAndCombine4
ConditioningSetMaskAndCombine5
CreateAudioMask
CreateFadeMask
CreateFadeMaskAdvanced
CreateFluidMask
CreateGradientFromCoords
CreateGradientMask
CreateInstanceDiffusionTracking
CreateMagicMask
CreateShapeImageOnPath
CreateShapeMask
CreateShapeMaskOnPath
CreateTextMask
CreateTextOnPath
CreateVoronoiMask
CrossFadeImages
CrossFadeImagesMulti
CustomControlNetWeightsFluxFromList
CustomSigmas
DifferentialDiffusionAdvanced
DownloadAndLoadCLIPSeg
DrawInstanceDiffusionTracking
DummyOut
EmptyLatentImageCustomPresets
EmptyLatentImagePresets
FastPreview
FilterZeroMasksAndCorrespondingImages
FlipSigmasAdjusted
FloatConstant
FloatToMask
FloatToSigmas
FluxBlockLoraLoader
FluxBlockLoraSelect
GLIGENTextBoxApplyBatchCoords
GenerateNoise
GetImageRangeFromBatch
GetImageSizeAndCount
GetImagesFromBatchIndexed
GetLatentsFromBatchIndexed
GetMaskSizeAndCount
GradientToFloat
GrowMaskWithBlur
INTConstant
ImageAddMulti
ImageAndMaskPreview
ImageBatchMulti
ImageBatchRepeatInterleaving
ImageBatchTestPattern
ImageConcanate
ImageConcatFromBatch
ImageConcatMulti
ImageCropByMaskAndResize
ImageGrabPIL
ImageGridComposite2x2
ImageGridComposite3x3
ImageGridtoBatch
ImageNormalize_Neg1_To_1
ImagePadForOutpaintMasked
ImagePadForOutpaintTargetSize
ImagePass
ImageResizeKJ
ImageTransformByNormalizedAmplitude
ImageUncropByMask
ImageUpscaleWithModelBatched
InjectNoiseToLatent
InsertImageBatchByIndexes
InsertImagesToBatchIndexed
InterpolateCoords
Intrinsic_lora_sampling
JoinStringMulti
JoinStrings
LoadAndResizeImage
LoadImagesFromFolderKJ
LoadResAdapterNormalization
MaskBatchMulti
MaskOrImageToWeight
MergeImageChannels
ModelPassThrough
ModelSaveKJ
NormalizedAmplitudeToFloatList
NormalizedAmplitudeToMask
OffsetMask
OffsetMaskByNormalizedAmplitude
PatchModelPatcherOrder
PlotCoordinates
PointsEditor
PreviewAnimation
RemapImageRange
RemapMaskRange
ReplaceImagesInBatch
ResizeMask
ReverseImageBatch
RoundMask
SV3D_BatchSchedule
SaveImageKJ
SaveImageWithAlpha
ScaleBatchPromptSchedule
Screencap_mss
SetShakkerLabsUnionControlNetType
ShuffleImageBatch
SigmasToFloat
Sleep
SomethingToString
SoundReactive
SplineEditor
SplitBboxes
SplitImageChannels
StabilityAPI_SD3
StableZero123_BatchSchedule
StringConstant
StringConstantMultiline
Superprompt
TorchCompileControlNet
TorchCompileModelFluxAdvanced
TorchCompileVAE
TransitionImagesInBatch
TransitionImagesMulti
VRAM_Debug
WebcamCaptureCV2
WeightScheduleConvert
WeightScheduleExtend
WidgetToString

ComfyDeploy: How KJNodes for ComfyUI works in ComfyUI?

What is KJNodes for ComfyUI?

Various quality of life -nodes for ComfyUI, mostly just visual stuff to improve usability.

Check out the examples!

How to install it in ComfyDeploy?

Head over to the machine page

  1. Click on the "Create a new machine" button
  2. Select the Edit build steps
  3. Add a new step -> Custom Node
  4. Search for KJNodes for ComfyUI and select it
  5. Close the build step dialig and then click on the "Save" button to rebuild the machine

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

  1. Clone this repo into custom_nodes folder.
  2. 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 lenghth 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

image

WidgetToString

Outputs the value of a widget on any node as a string example of use

Enable node id display from Manager menu, to get the ID of the node you want to read a widget from: enable node id display

Use the node id of the target node, and add the name of the widget to read from use node id and widget name

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.