Compare commits

..

20 Commits
2.48.7 ... 2.50

Author SHA1 Message Date
Dr.Lt.Data
f896755a31 refactor: share features 2024-08-17 12:22:01 +09:00
Dr.Lt.Data
e406f8be81 update DB 2024-08-17 01:13:12 +09:00
Dr.Lt.Data
84107d2b65 update DB 2024-08-16 22:46:02 +09:00
Xander Steenbrugge
d890984c70 update Eden custom nodesuite with better naming and add LoRa trainer node (#973) 2024-08-16 22:43:35 +09:00
Dr.Lt.Data
72e4c84f8a force downgrade numpy to <2 when try fix 2024-08-16 20:11:13 +09:00
Dr.Lt.Data
acd41d985c update DB 2024-08-16 19:03:29 +09:00
Nicolas Kendall-Bar
1312657aca Add RTX Remix custom nodes (#966) 2024-08-16 18:22:19 +09:00
Dr.Lt.Data
a502bb9529 update DB 2024-08-16 18:19:45 +09:00
ControlAltAI
5947dee9f9 Update custom-node-list.json (#968)
Quality of Life ComfyUI nodes starting with Flux Resolution Calculator and Flux Sampler.

https://github.com/gseth/ControlAltAI-Nodes
2024-08-16 18:18:47 +09:00
FairyRoot
e68d59098f updated description for ollama llava vision by fairy-root, and added a new node Flux Prompt Generator for ComfyUI (#969) 2024-08-16 18:17:57 +09:00
Dr.Lt.Data
61efd60681 feat: complete pip freezing for torch, torchsde, torchvision 2024-08-16 00:07:19 +09:00
Dr.Lt.Data
d3654b2ee4 update DB 2024-08-15 20:11:51 +09:00
Dr.Lt.Data
ef943a588d update DB 2024-08-15 15:06:54 +09:00
chrisgoringe
8c6ebc665d Update custom-node-list.json (#962)
I've retired my old noise nodes, because Comfy now has noise as a data type. These new nodes do the same and more, and are far less flaky!
2024-08-15 12:28:07 +09:00
Dr.Lt.Data
2d2df3fc2c update DB 2024-08-15 00:24:16 +09:00
yuan199696
958ddcb49c Add a new custom node which supports adding custom text to the generated images. (#958)
* add custom node

* A new custom node
2024-08-15 00:19:41 +09:00
yuan199696
5e9e988a96 add custom node (#956) 2024-08-14 23:39:39 +09:00
dr.lt.data
34f3409f9b remove inproper warning.
https://github.com/ltdrdata/ComfyUI-Manager/issues/954
2024-08-14 09:31:10 +09:00
Dr.Lt.Data
49c548494e update DB 2024-08-14 02:18:06 +09:00
Isi
7ba41fbb7d Update custom-node-list.json (#952)
Updating the custom-node-list.json with two nodes to animate an image using uniAnimate
2024-08-14 02:16:02 +09:00
18 changed files with 3896 additions and 2667 deletions

4
.gitignore vendored
View File

@@ -12,4 +12,6 @@ matrix_auth
channels.list
comfyworkflows_sharekey
github-stats-cache.json
pip_overrides.json
pip_overrides.json
*.json

View File

@@ -4,6 +4,7 @@ cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode')
if not os.path.exists(cli_mode_flag):
from .glob import manager_server
from .glob import share_3rdparty
WEB_DIRECTORY = "js"
else:
print(f"\n[ComfyUI-Manager] !! cli-only-mode is enabled !!\n")

View File

@@ -35,6 +35,7 @@ restore_snapshot_path = os.path.join(startup_script_path, "restore-snapshot.json
pip_overrides_path = os.path.join(comfyui_manager_path, "pip_overrides.json")
git_script_path = os.path.join(comfyui_manager_path, "git_helper.py")
cm_global.pip_blacklist = ['torch', 'torchsde', 'torchvision']
cm_global.pip_downgrade_blacklist = ['torch', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
cm_global.pip_overrides = {}
if os.path.exists(pip_overrides_path):

View File

@@ -415,18 +415,7 @@
{
"author": "SaltAI",
"title": "SaltAI_Language_Toolkit",
"id": "saltai-llamaindex",
"reference": "https://github.com/get-salt-AI/SaltAI_Language_Toolkit",
"files": [
"https://github.com/get-salt-AI/SaltAI_Language_Toolkit"
],
"install_type": "git-clone",
"description": "An implementation of the RAG LlamaIndex with Agents from AutoGen.[w/SaltAI_LlamaIndex is renamed to SaltAI_Language_Toolkit. Please reinstall.]"
},
{
"author": "SaltAI",
"title": "SaltAI Language Toolkit",
"id": "saltai-langtool",
"id": "saltai_language_toolkit",
"reference": "https://github.com/get-salt-AI/SaltAI_Language_Toolkit",
"files": [
"https://github.com/get-salt-AI/SaltAI_Language_Toolkit"
@@ -656,6 +645,17 @@
"install_type": "git-clone",
"description": "This extension aims to add support for various random image diffusion models to ComfyUI."
},
{
"author": "city96",
"title": "ComfyUI-GGUF",
"id": "gguf",
"reference": "https://github.com/city96/ComfyUI-GGUF",
"files": [
"https://github.com/city96/ComfyUI-GGUF"
],
"install_type": "git-clone",
"description": "GGUF Quantization support for native ComfyUI models\nThis is currently very much WIP. These custom nodes provide support for model files stored in the GGUF format popularized by llama.cpp.\nWhile quantization wasn't feasible for regular UNET models (conv2d), transformer/DiT models such as flux seem less affected by quantization. This allows running it in much lower bits per weight variable bitrate quants on low-end GPUs.\n[w/LoRA / Controlnet / etc are currently not supported due to the weights being quantized.]"
},
{
"author": "SLAPaper",
"title": "ComfyUI-Image-Selector",
@@ -1456,7 +1456,7 @@
{
"author": "asagi4",
"title": "Adaptive Guidance for ComfyUI",
"id": "asagi-nodes",
"id": "comfyui-adaptive-guidance",
"reference": "https://github.com/asagi4/ComfyUI-Adaptive-Guidance",
"files": [
"https://github.com/asagi4/ComfyUI-Adaptive-Guidance"
@@ -2761,14 +2761,14 @@
},
{
"author": "chrisgoringe",
"title": "Variation seeds",
"id": "variation-seed",
"reference": "https://github.com/chrisgoringe/cg-noise",
"title": "Noise variation and batch noise tools",
"id": "cg-noisetools",
"reference": "https://github.com/chrisgoringe/cg-noisetools",
"files": [
"https://github.com/chrisgoringe/cg-noise"
"https://github.com/chrisgoringe/cg-noisetools"
],
"install_type": "git-clone",
"description": "Adds KSampler custom nodes with variation seed and variation strength."
"description": "Nodes to create small variations on noise, to shape noise, and to control noise in batches. Replaces the old 'variation-seed' nodes."
},
{
"author": "chrisgoringe",
@@ -3108,6 +3108,16 @@
"install_type": "git-clone",
"description": "Nodes to use [a/segment-anything-2](https://github.com/facebookresearch/segment-anything-2) for image or video segmentation."
},
{
"author": "kijai",
"title": "ComfyUI nodes for ControlNext-SVD v2",
"reference": "https://github.com/kijai/ComfyUI-ControlNeXt-SVD",
"files": [
"https://github.com/kijai/ComfyUI-ControlNeXt-SVD"
],
"install_type": "git-clone",
"description": "These nodes include my wrapper for the original diffusers pipeline, as well as work in progress native ComfyUI implementation.\nFor the diffusers wrapper models should be downloaded automatically, for the native version you can get the unet [a/here](https://huggingface.co/Kijai/ControlNeXt-SVD-V2-Comfy/blob/main/controlnext-svd_v2-unet-fp16_converted.safetensors)."
},
{
"author": "hhhzzyang",
"title": "Comfyui-Lama",
@@ -4717,7 +4727,7 @@
},
{
"author": "mmaker",
"title": "Color Enhance",
"title": "mmaker/Color Enhance",
"reference": "https://git.mmaker.moe/mmaker/sd-webui-color-enhance",
"files": [
"https://git.mmaker.moe/mmaker/sd-webui-color-enhance"
@@ -5227,14 +5237,25 @@
},
{
"author": "aiXander",
"title": "Various custom nodes by Eden.art",
"title": "Eden.art nodesuite",
"id": "Eden",
"reference": "https://github.com/edenartlab/eden_comfy_pipelines",
"files": [
"https://github.com/edenartlab/eden_comfy_pipelines"
],
"install_type": "git-clone",
"description": "A set of custom nodes for various purposed, maintained by Eden.art"
"description": "Maintained by Eden.art, this is a growing suite of custom nodes for building advanced pipelines."
},
{
"author": "aiXander",
"title": "Eden.art LoRa Trainer",
"id": "Eden",
"reference": "https://github.com/edenartlab/sd-lora-trainer",
"files": [
"https://github.com/edenartlab/sd-lora-trainer"
],
"install_type": "git-clone",
"description": "Maintained by Eden.art, this is a very fast, well tuned trainer for SDXL and SD15"
},
{
"author": "pkpk",
@@ -5381,6 +5402,17 @@
"install_type": "git-clone",
"description": "This is a set of custom nodes for ComfyUI. The nodes utilize the [a/face parsing model](https://huggingface.co/jonathandinu/face-parsing) to provide detailed segmantation of face. To improve face segmantation accuracy, [a/yolov8 face model](https://huggingface.co/Bingsu/adetailer/) is used to first extract face from an image. There are also auxiliary nodes for image and mask processing. A guided filter is also provided for skin smoothing."
},
{
"author": "Ryuukeisyou",
"title": "ComfyUI-SyncTalk",
"id": "synctalk",
"reference": "https://github.com/Ryuukeisyou/ComfyUI-SyncTalk",
"files": [
"https://github.com/Ryuukeisyou/ComfyUI-SyncTalk"
],
"install_type": "git-clone",
"description": "ComfyUI implemntation for [a/SyncTalk](https://github.com/ZiqiaoPeng/SyncTalk)"
},
{
"author": "tocubed",
"title": "ComfyUI-AudioReactor",
@@ -5805,7 +5837,7 @@
{
"author": "alexopus",
"title": "ComfyUI Image Saver",
"id": "image-saver",
"id": "comfyui-image-saver",
"reference": "https://github.com/alexopus/ComfyUI-Image-Saver",
"files": [
"https://github.com/alexopus/ComfyUI-Image-Saver"
@@ -6516,14 +6548,14 @@
},
{
"author": "blepping",
"title": "ComfyUI jank HiDiffusion",
"title": "comfyui_jankhidiffusion",
"id": "jank-hidiffusion",
"reference": "https://github.com/blepping/comfyui_jankhidiffusion",
"files": [
"https://github.com/blepping/comfyui_jankhidiffusion"
],
"install_type": "git-clone",
"description": "Janky experimental attempt at implementing [a/HiDiffusion](https://github.com/megvii-research/HiDiffusion) for ComfyUI."
"description": "Janky implementation of [a/HiDiffusion](https://github.com/megvii-research/HiDiffusion) for ComfyUI. Enables generating at resolutions higher than what the model was trained for. Only supports SD 1.x (maybe 2.x) and SDXL."
},
{
"author": "blepping",
@@ -6665,6 +6697,16 @@
"install_type": "git-clone",
"description": "Original project: [a/link](https://github.com/tencent-ailab/PCDMs)\nBased on testing, the author's original images work very well, but using my own images generally requires some luck!"
},
{
"author": "StartHua",
"title": "Comfyui_CXH_joy_caption",
"reference": "https://github.com/StartHua/Comfyui_CXH_joy_caption",
"files": [
"https://github.com/StartHua/Comfyui_CXH_joy_caption"
],
"install_type": "git-clone",
"description": "Nodes:Joy_caption_load, Joy_caption"
},
{
"author": "ricklove",
"title": "comfyui-ricklove",
@@ -7121,7 +7163,7 @@
{
"author": "logtd",
"title": "ComfyUI-RAVE Attention",
"id": "rave",
"id": "rave-attn",
"reference": "https://github.com/logtd/ComfyUI-RAVE_ATTN",
"files": [
"https://github.com/logtd/ComfyUI-RAVE_ATTN"
@@ -7490,7 +7532,7 @@
{
"author": "11dogzi",
"title": "Comfyui-ergouzi-kaiguan",
"id": "ergouzi-nodes",
"id": "ergouzi-kaiguan",
"reference": "https://github.com/11dogzi/Comfyui-ergouzi-kaiguan",
"files": [
"https://github.com/11dogzi/Comfyui-ergouzi-kaiguan"
@@ -7501,7 +7543,7 @@
{
"author": "11dogzi",
"title": "ComfUI-EGAdapterMadAssistant",
"id": "ergouzi-samplers",
"id": "madassistant",
"reference": "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant",
"files": [
"https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant"
@@ -8084,7 +8126,7 @@
{
"author": "viperyl",
"title": "ComfyUI-BiRefNet",
"id": "birefnet",
"id": "comfyui-birefnet",
"reference": "https://github.com/viperyl/ComfyUI-BiRefNet",
"files": [
"https://github.com/viperyl/ComfyUI-BiRefNet"
@@ -8231,6 +8273,36 @@
"install_type": "git-clone",
"description": "Load image and partially workflow with javascript."
},
{
"author": "shinich39",
"title": "connect-from-afar",
"reference": "https://github.com/shinich39/comfyui-connect-from-afar",
"files": [
"https://github.com/shinich39/comfyui-connect-from-afar"
],
"install_type": "git-clone",
"description": "Connect a new link from out of screen."
},
{
"author": "shinich39",
"title": "comfyui-target-search",
"reference": "https://github.com/shinich39/comfyui-target-search",
"files": [
"https://github.com/shinich39/comfyui-target-search"
],
"install_type": "git-clone",
"description": "Move canvas to target on dragging connection."
},
{
"author": "shinich39",
"title": "comfyui-group-selection",
"reference": "https://github.com/shinich39/comfyui-group-selection",
"files": [
"https://github.com/shinich39/comfyui-group-selection"
],
"install_type": "git-clone",
"description": "Create a new group of nodes."
},
{
"author": "wei30172",
"title": "comfygen",
@@ -8647,7 +8719,7 @@
{
"author": "discus0434",
"title": "ComfyUI Aesthetic Predictor V2.5",
"id": "caching-embeddings",
"id": "aesthetic-predictor",
"reference": "https://github.com/discus0434/comfyui-aesthetic-predictor-v2-5",
"files": [
"https://github.com/discus0434/comfyui-aesthetic-predictor-v2-5"
@@ -9183,6 +9255,17 @@
"install_type": "git-clone",
"description": "using [a/StreamV2V](https://github.com/Jeff-LiangF/streamv2v) in ComfyUI"
},
{
"author": "smthemex",
"title": "ComfyUI_MooER",
"id": "comfyui_mooer",
"reference": "https://github.com/smthemex/ComfyUI_MooER",
"files": [
"https://github.com/smthemex/ComfyUI_MooER"
],
"install_type": "git-clone",
"description": "MooER is an LLM-based Speech Recognition and Translation Model from Moore Threads.You can use MooER when install ComfyUI_MooER node"
},
{
"author": "choey",
"title": "Comfy-Topaz",
@@ -9197,7 +9280,7 @@
{
"author": "ALatentPlace",
"title": "ComfyUI_yanc",
"id": "yanc",
"id": "yanc-alatentplace",
"reference": "https://github.com/ALatentPlace/ComfyUI_yanc",
"files": [
"https://github.com/ALatentPlace/ComfyUI_yanc"
@@ -9584,6 +9667,16 @@
"install_type": "git-clone",
"description": "Quantization tools are from [a/https://github.com/casper-hansen/AutoAWQ](https://github.com/casper-hansen/AutoAWQ) and [a/https://github.com/IST-DASLab/marlin](https://github.com/IST-DASLab/marlin)\nOnly applicable to graphics cards with sm_80 and above (30 series and above)\nNeed to install marlin dependencies first"
},
{
"author": "MinusZoneAI",
"title": "ComfyUI-FluxExt-MZ",
"reference": "https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ",
"files": [
"https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ"
],
"install_type": "git-clone",
"description": "Nodes:MZ_Flux1PartialLoad_Patch. Tool nodes related to flux1"
},
{
"author": "blueraincoatli",
"title": "comfyUI_SillyNodes",
@@ -10058,7 +10151,7 @@
"https://github.com/saftle/suplex_comfy_nodes"
],
"install_type": "git-clone",
"description": "Misc Nodes: ControlNet Selector Node, Load Optional ControlNet Model"
"description": "Misc Nodes: ControlNet Selector Node, Load Optional ControlNet Model, Diffusers Selector, Save Image JPG No Meta, Multi Input Variable Rewrite"
},
{
"author": "mephisto83",
@@ -11174,6 +11267,17 @@
"install_type": "git-clone",
"description": "A prompt generator and CLIP encoder using AI provided by Ollama."
},
{
"author": "NvidiaGameWorksAdmin",
"title": "ComfyUI-RTX-Remix",
"id": "comfyui-rtx-remix",
"reference": "https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix",
"files": [
"https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix"
],
"install_type": "git-clone",
"description": "Use ComfyUI with RTX Remix to remaster classic games [a/https://github.com/NVIDIAGameWorks/rtx-remix](https://github.com/NVIDIAGameWorks/rtx-remix)"
},
{
"author": "toxicwind",
"title": "TTools for ComfyUI",
@@ -11991,7 +12095,7 @@
"https://github.com/john-mnz/ComfyUI-Inspyrenet-Rembg"
],
"install_type": "git-clone",
"description": "ComfyUI node for background removal implementing [a/InSPyReNet](https://github.com/plemeri/InSPyReNet)"
"description": "ComfyUI node for background removal, implementing [a/InSPyReNet](https://github.com/plemeri/InSPyReNet)"
},
{
"author": "Koushakur",
@@ -12335,16 +12439,6 @@
"install_type": "git-clone",
"description": "Advanced tiling of various shapes for ComfyUI"
},
{
"author": "neeltheninja",
"title": "ComfyUI-TextOverlay",
"reference": "https://github.com/neeltheninja/ComfyUI-TextOverlay",
"files": [
"https://github.com/neeltheninja/ComfyUI-TextOverlay"
],
"install_type": "git-clone",
"description": "A custom node for ComfyUI that adds text overlay to images, with options for text and background color, opacity, vertical positioning, and custom font selection."
},
{
"author": "Fuou Marinas",
"title": "ComfyUI-EbSynth",
@@ -12538,7 +12632,7 @@
},
{
"author": "noarche",
"title": "Color Enhance",
"title": "noarche/Color Enhance",
"id": "color-enhance",
"reference": "https://github.com/noarche/sd-webui-color-enhance",
"files": [
@@ -12680,6 +12774,36 @@
"install_type": "git-clone",
"description": "ComfyUI for [a/LLaSM](https://huggingface.co/spaces/LinkSoul/LLaSM)"
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use VideoEditing",
"reference": "https://github.com/leeguandong/ComfyUI_VideoEditing",
"files": [
"https://github.com/leeguandong/ComfyUI_VideoEditing"
],
"install_type": "git-clone",
"description": "Nodes:Load Video to Images, Image to Canny, ControlNet Model Loader, VEDit Model Loader, VEdit Sampler. [a/https://github.com/SingleZombie/DiffusersExample/tree/main/ReplaceAttn](https://github.com/SingleZombie/DiffusersExample/tree/main/ReplaceAttn)"
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use CrossImageAttention",
"reference": "https://github.com/leeguandong/ComfyUI_CrossImageAttention",
"files": [
"https://github.com/leeguandong/ComfyUI_CrossImageAttention"
],
"install_type": "git-clone",
"description": "ComfyUI for [a/CrossImageAttention](https://github.com/garibida/cross-image-attention)"
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use Style-Aligned",
"reference": "https://github.com/leeguandong/ComfyUI_Style_Aligned",
"files": [
"https://github.com/leeguandong/ComfyUI_Style_Aligned"
],
"install_type": "git-clone",
"description": "ComfyUI for [a/style-aligned](https://github.com/google/style-aligned)"
},
{
"author": "lenskikh",
"title": "Propmt Worker",
@@ -12797,13 +12921,13 @@
},
{
"author": "MohammadAboulEla",
"title": "iTools ImageLoaderPlus",
"title": "ComfyUI-iTools",
"reference": "https://github.com/MohammadAboulEla/ComfyUI-iTools",
"files": [
"https://github.com/MohammadAboulEla/ComfyUI-iTools"
],
"install_type": "git-clone",
"description": "The iTools ImageLoaderPlus is an enhancement of the original ComfyUI ImageLoader node. It attempts to return the possible prompt used to create an image."
"description": "The iTools are some quality of life nodes, like read a possible prompt used to create an image, save a prompt to file as a new line, read prompts from a multiline file."
},
{
"author": "Hellrunner2k",
@@ -12897,6 +13021,155 @@
"install_type": "git-clone",
"description": "Nodes:Download Dreambooth Checkpoint, Get Random Value From List, Load Canny Pose Face, Transparent to White Background, Download Flux Lora."
},
{
"author": "Isi-dev",
"title": "UniAnimate Nodes for ComfyUI",
"id": "comfyuiunianimatenodes",
"reference": "https://github.com/Isi-dev/ComfyUI-UniAnimate-W",
"files": [
"https://github.com/Isi-dev/ComfyUI-UniAnimate-W"
],
"install_type": "git-clone",
"description": "These are nodes to animate an image with a reference video using UniAnimate. [w/Name conflict with AIFSH/ComfyUI-UniAnimate. Cannot install simulatenously.]"
},
{
"author": "XLabs-AI",
"title": "x-flux-comfyui",
"reference": "https://github.com/XLabs-AI/x-flux-comfyui",
"files": [
"https://github.com/XLabs-AI/x-flux-comfyui"
],
"install_type": "git-clone",
"description": "Nodes:Load Flux LoRA, Load Flux ControlNet, Apply Flux ControlNet, Xlabs Sampler"
},
{
"author": "okgo4",
"title": "ComfyUI-Mosaic-Mask",
"reference": "https://github.com/okgo4/ComfyUI-Mosaic-Mask",
"files": [
"https://github.com/okgo4/ComfyUI-Mosaic-Mask"
],
"install_type": "git-clone",
"description": "ComfyUI-Mosaic-Mask is an automatic tool designed to detect and mask mosaic areas in input images."
},
{
"author": "ChrisColeTech",
"title": "ComfyUI-Line-counter",
"reference": "https://github.com/ChrisColeTech/ComfyUI-Line-counter",
"files": [
"https://github.com/ChrisColeTech/ComfyUI-Line-counter"
],
"install_type": "git-clone",
"description": "Custom node to count the number of lines in a text file"
},
{
"author": "dadoirie",
"title": "ComfyUI_Dados_Nodes",
"reference": "https://github.com/dadoirie/ComfyUI_Dados_Nodes",
"files": [
"https://github.com/dadoirie/ComfyUI_Dados_Nodes"
],
"install_type": "git-clone",
"description": "ComfyUI_Dados_Nodes is a collection of custom nodes for ComfyUI, designed to enhance functionality and provide integration with various services, including Pinterest. This privacy policy explains how these nodes handle user data.\nNOTE: [a/privacy_policy](https://github.com/dadoirie/ComfyUI_Dados_Nodes/blob/master/privacy_policy.md)"
},
{
"author": "fanfanfan",
"title": "chinese_clip_encode",
"id": "chinese_clip_encode",
"reference": "https://github.com/yuan199696/chinese_clip_encode",
"files": [
"https://github.com/yuan199696/chinese_clip_encode"
],
"install_type": "git-clone",
"description": "Support input of Chinese prompts."
},
{
"author": "fanfanfan",
"title": "add_text_2_img",
"id": "add_text_2_img",
"reference": "https://github.com/yuan199696/add_text_2_img",
"files": [
"https://github.com/yuan199696/add_text_2_img"
],
"install_type": "git-clone",
"description": "Support adding custom text to the generated images."
},
{
"author": "fairy-root",
"title": "Ollama and Llava Vision integration for ComfyUI",
"reference": "https://github.com/fairy-root/comfyui-ollama-llms",
"files": [
"https://github.com/fairy-root/comfyui-ollama-llms"
],
"install_type": "git-clone",
"description": "Ollama and Llava vision integration for ComfyUI"
},
{
"author": "fairy-root",
"title": "Flux Prompt Generator for ComfyUI",
"reference": "https://github.com/fairy-root/Flux-Prompt-Generator",
"files": [
"https://github.com/fairy-root/Flux-Prompt-Generator"
],
"install_type": "git-clone",
"description": "A flexible and customizable prompt generator for generating detailed and creative prompts for image generation models for ComfyUI"
},
{
"author": "ryanontheinside",
"title": "RyanOnTheInside",
"reference": "https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside",
"files": [
"https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside"
],
"install_type": "git-clone",
"description": "Custom nodes introducing particle simulations, optical flow, and temporal masks"
},
{
"author": "ControlAltAI",
"title": "ControlAltAI Nodes",
"id": "controlaltai",
"reference": "https://github.com/gseth/ControlAltAI-Nodes",
"files":
[
"https://github.com/gseth/ControlAltAI-Nodes"
],
"install_type": "git-clone",
"description": "Quality of Life ComfyUI nodes starting with Flux Resolution Calculator and Flux Sampler."
},
{
"author": "OliverCrosby",
"title": "Comfyui-Minimap",
"reference": "https://github.com/OliverCrosby/Comfyui-Minimap",
"files":
[
"https://github.com/OliverCrosby/Comfyui-Minimap"
],
"install_type": "git-clone",
"description": "This is the initial build of a comfyui minimap.\nVery simple so far. It makes a copy of the workflow graph, simplified and minified, in the bottom left hand corner. It puts a red border where your viewport is. Left click on the minimap and it will move your viewport to that location."
},
{
"author": "doomy23",
"title": "ComfyUI-D00MYsNodes",
"reference": "https://github.com/doomy23/ComfyUI-D00MYsNodes",
"files":
[
"https://github.com/doomy23/ComfyUI-D00MYsNodes"
],
"install_type": "git-clone",
"description": "Nodes:ImagesToPNG. A set of custom nodes for ComfyUI I needed for myself but I'm sharing with the public."
},
{
"author": "Sieyalixnet",
"title": "ComfyUI_Textarea_Loaders",
"reference": "https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders",
"files":
[
"https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders"
],
"install_type": "git-clone",
"description": "An easy custom node that makes the some loaders' input as Text instead of file selector.\nFor example, there are many characters in different loras respectively. If you want to generate different characters' pictures, you have to select corresponding lora, and then edit the prompt. It may cost much time.\nTo solve this problem, You can use it with a chrome extension https://github.com/Sieyalixnet/ComfyUI-Prompt-Formatter-Extension that makes the queue prompt easier when you dealing with massive loras and prompt."
},

View File

@@ -857,9 +857,7 @@
"FLATTEN (JOV) \u2b07\ufe0f",
"GLSL (JOV) \ud83c\udf69",
"GLSL BLEND LINEAR (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL FILTER RANGE (JOV) \ud83e\uddd9\ud83c\udffd\u200d\u2640\ufe0f",
"GLSL GRAYSCALE (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL HSV ADJUST (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL HSV-2-LAB (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL HSV-2-RGB (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL LAB-2-HSV (JOV) \ud83e\uddd9\ud83c\udffd",
@@ -1466,6 +1464,15 @@
"title_aux": "ComfyUI_Ib_CustomNodes"
}
],
"https://github.com/ChrisColeTech/ComfyUI-Line-counter": [
[
"DirectoryFileCounter",
"TextFileLineCounter"
],
{
"title_aux": "ComfyUI-Line-counter"
}
],
"https://github.com/Clybius/ComfyUI-Extra-Samplers": [
[
"GeometricCFGGuider",
@@ -2063,6 +2070,7 @@
"BinaryPreprocessor",
"CannyEdgePreprocessor",
"ColorPreprocessor",
"ControlNetAuxSimpleAddText",
"ControlNetPreprocessorSelector",
"DSINE-NormalMapPreprocessor",
"DWPreprocessor",
@@ -2070,6 +2078,7 @@
"DepthAnythingPreprocessor",
"DepthAnythingV2Preprocessor",
"DiffusionEdge_Preprocessor",
"ExecuteAllControlNetPreprocessors",
"FacialPartColoringFromPoseKps",
"FakeScribblePreprocessor",
"HEDPreprocessor",
@@ -2347,14 +2356,20 @@
],
"https://github.com/FuouM/ComfyUI-StyleTransferPlus": [
[
"AESFA",
"AesFAStyleBlend",
"AesPA",
"CAST",
"CoralColorTransfer",
"EFDM",
"MicroAST",
"NeuralNeighbor"
"NeuralNeighbor",
"TSSAT",
"UniST",
"UniST_Video"
],
{
"author": "Fuou Marinas",
"author": "ZJU",
"description": "A collection of style transfer nodes.",
"nickname": "StyleTransferPlus",
"title": "ComfyUI-StyleTransferPlus",
@@ -2763,6 +2778,15 @@
"title_aux": "ComfyUI-Stereopsis"
}
],
"https://github.com/Isi-dev/ComfyUI-UniAnimate-W": [
[
"Gen_align_pose",
"UniAnimateImage"
],
{
"title_aux": "UniAnimate Nodes for ComfyUI"
}
],
"https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4": [
[
"DisplayText",
@@ -3217,6 +3241,7 @@
"ADE_MultivalConvertToMask",
"ADE_MultivalDynamic",
"ADE_MultivalDynamicFloatInput",
"ADE_MultivalDynamicFloats",
"ADE_MultivalScaledMask",
"ADE_NoiseLayerAdd",
"ADE_NoiseLayerAddWeighted",
@@ -3756,10 +3781,13 @@
],
"https://github.com/MohammadAboulEla/ComfyUI-iTools": [
[
"iTools_Prompt"
"iToolsAddOverlay",
"iToolsLoadImagePlus",
"iToolsPromptLoader",
"iToolsPromptSaver"
],
{
"title_aux": "iTools ImageLoaderPlus"
"title_aux": "ComfyUI-iTools"
}
],
"https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1": [
@@ -3856,6 +3884,14 @@
"title_aux": "ComfyUI_SSStereoscope"
}
],
"https://github.com/Munkyfoot/ComfyUI-TextOverlay": [
[
"Text Overlay"
],
{
"title_aux": "ComfyUI-TextOverlay"
}
],
"https://github.com/MushroomFleet/DJZ-Nodes": [
[
"AspectSize",
@@ -3904,6 +3940,38 @@
"title_aux": "Image Captioning and Tagging Assistor Nodes"
}
],
"https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix": [
[
"RTXRemixCreateLayer",
"RTXRemixDefineLayerId",
"RTXRemixDeleteFile",
"RTXRemixEndContext",
"RTXRemixGetEditTarget",
"RTXRemixGetLayers",
"RTXRemixGetTextures",
"RTXRemixIngestTexture",
"RTXRemixInvertBool",
"RTXRemixLayerType",
"RTXRemixLayerTypes",
"RTXRemixMuteLayer",
"RTXRemixRemoveLayer",
"RTXRemixRestAPIDetails",
"RTXRemixSaveLayer",
"RTXRemixSetEditTarget",
"RTXRemixSetTexture",
"RTXRemixStartContext",
"RTXRemixStrToList",
"RTXRemixStringConcatenate",
"RTXRemixStringConstant",
"RTXRemixSwitch",
"RTXRemixTextureTypeToUSDAttribute",
"RTXRemixTexturesType",
"RTXRemixTexturesTypes"
],
{
"title_aux": "ComfyUI-RTX-Remix"
}
],
"https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin": [
[
"NoisyLatentPerlinD"
@@ -4533,6 +4601,9 @@
"MergeAudioNode",
"MergeImageBatches",
"MergeLatentBatches",
"MuseAudioFeatureExtractionNode",
"MuseImageFeatureExtractionNode",
"MuseTalkNode",
"RVC-Studio.LoadAudio",
"RVC-Studio.PreviewAudio",
"RVCNode",
@@ -4943,6 +5014,15 @@
"title_aux": "Lazy Pony Prompter"
}
],
"https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders": [
[
"CheckPointLoader_Text",
"LoRALoader_Text"
],
{
"title_aux": "ComfyUI_Textarea_Loaders"
}
],
"https://github.com/Smirnov75/ComfyUI-mxToolkit": [
[
"mxSeed",
@@ -5094,6 +5174,15 @@
"title_aux": "ComfyUI_Seg_VITON"
}
],
"https://github.com/StartHua/Comfyui_CXH_joy_caption": [
[
"Joy_caption",
"Joy_caption_load"
],
{
"title_aux": "Comfyui_CXH_joy_caption"
}
],
"https://github.com/StartHua/Comfyui_joytag": [
[
"CXH_JoyTag"
@@ -5732,6 +5821,7 @@
"ttN text7BOX_concat",
"ttN textCycleLine",
"ttN textDebug",
"ttN textOutput",
"ttN tinyLoader",
"ttN xyPlot"
],
@@ -6185,6 +6275,18 @@
"title_aux": "ComfyUI Simply Nodes"
}
],
"https://github.com/XLabs-AI/x-flux-comfyui": [
[
"ApplyFluxControlNet",
"FluxLoraLoader",
"LoadFluxControlNet",
"LoadFluxModel",
"XlabsSampler"
],
{
"title_aux": "x-flux-comfyui"
}
],
"https://github.com/XmYx/deforum-comfy-nodes": [
[
"DeforumAddNoiseNode",
@@ -7521,7 +7623,7 @@
"ApplyRAUNetSimple"
],
{
"title_aux": "ComfyUI jank HiDiffusion"
"title_aux": "comfyui_jankhidiffusion"
}
],
"https://github.com/blepping/comfyui_overly_complicated_sampling": [
@@ -8716,15 +8818,15 @@
"title_aux": "Image chooser"
}
],
"https://github.com/chrisgoringe/cg-noise": [
"https://github.com/chrisgoringe/cg-noisetools": [
[
"Hijack",
"KSampler Advanced with Variations",
"KSampler with Variations",
"UnHijack"
"Batch Noise Simulate",
"Mix Noise",
"Seperable Batch Noise",
"Shape Noise"
],
{
"title_aux": "Variation seeds"
"title_aux": "Noise variation and batch noise tools"
}
],
"https://github.com/chrisgoringe/cg-use-everywhere": [
@@ -8789,6 +8891,14 @@
"title_aux": "youtube-dl-comfyui"
}
],
"https://github.com/city96/ComfyUI-GGUF": [
[
"UnetLoaderGGUF"
],
{
"title_aux": "ComfyUI-GGUF"
}
],
"https://github.com/city96/ComfyUI_ColorMod": [
[
"CV2Tonemap",
@@ -9099,8 +9209,42 @@
"StableCascade_SuperResolutionControlnet",
"StableZero123_Conditioning",
"StableZero123_Conditioning_Batched",
"StubFloat",
"StubImage",
"StubInt",
"StubMask",
"StyleModelApply",
"StyleModelLoader",
"TestAccumulateNode",
"TestAccumulationGetItemNode",
"TestAccumulationGetLengthNode",
"TestAccumulationHeadNode",
"TestAccumulationSetItemNode",
"TestAccumulationTailNode",
"TestAccumulationToListNode",
"TestBoolOperationNode",
"TestCustomIsChanged",
"TestCustomValidation1",
"TestCustomValidation2",
"TestCustomValidation3",
"TestCustomValidation4",
"TestCustomValidation5",
"TestDynamicDependencyCycle",
"TestExecutionBlocker",
"TestFloatConditions",
"TestForLoopClose",
"TestForLoopOpen",
"TestIntConditions",
"TestIntMathOperation",
"TestLazyMixImages",
"TestListToAccumulationNode",
"TestMakeListNode",
"TestMixedExpansionReturns",
"TestStringConditions",
"TestToBoolNode",
"TestVariadicAverage",
"TestWhileLoopClose",
"TestWhileLoopOpen",
"ThresholdMask",
"TomePatchModel",
"TripleCLIPLoader",
@@ -9513,6 +9657,14 @@
"title_aux": "D2 Steps"
}
],
"https://github.com/dadoirie/ComfyUI_Dados_Nodes": [
[
"PinterestImageNode"
],
{
"title_aux": "ComfyUI_Dados_Nodes"
}
],
"https://github.com/dagthomas/comfyui_dagthomas": [
[
"APNLatent",
@@ -9520,14 +9672,16 @@
"CFGSkimming",
"CustomPromptLoader",
"DynamicStringCombinerNode",
"FileReaderNode",
"FlexibleStringMergerNode",
"GPT4MiniNode",
"GPT4VisionNode",
"Gpt4CustomVision",
"Gpt4VisionCloner",
"MergedOllamaNode",
"MedianOppositeColorNode",
"OllamaNode",
"PGSD3LatentGenerator",
"ProminentOppositeColorNode",
"PromptGenerator",
"RandomIntegerNode",
"SentenceMixerNode",
@@ -9980,6 +10134,15 @@
"title_aux": "ComfyUI-Keyframed"
}
],
"https://github.com/doomy23/ComfyUI-D00MYsNodes": [
[
"Images_Converter|D00MYs",
"Show_String|D00MYs"
],
{
"title_aux": "ComfyUI-D00MYsNodes"
}
],
"https://github.com/drago87/ComfyUI_Dragos_Nodes": [
[
"file_padding",
@@ -10072,7 +10235,15 @@
"WidthHeightPicker"
],
{
"title_aux": "Various custom nodes by Eden.art"
"title_aux": "Eden.art nodesuite"
}
],
"https://github.com/edenartlab/sd-lora-trainer": [
[
"Eden_LoRa_trainer"
],
{
"title_aux": "Eden.art LoRa Trainer"
}
],
"https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes": [
@@ -10169,6 +10340,24 @@
"title_aux": "ComfyUI-Showrunner-Utils"
}
],
"https://github.com/fairy-root/Flux-Prompt-Generator": [
[
"FluxPromptGenerator"
],
{
"title_aux": "Flux Prompt Generator for ComfyUI"
}
],
"https://github.com/fairy-root/comfyui-ollama-llms": [
[
"ConcatenateText",
"llava",
"ollama"
],
{
"title_aux": "Ollama and Llava Vision integration for ComfyUI"
}
],
"https://github.com/fearnworks/ComfyUI_FearnworksNodes": [
[
"Count Files in Directory (FW)",
@@ -10316,9 +10505,9 @@
"FL_Shadertoy",
"FL_SimpleGPTVision",
"FL_SystemCheck",
"FL_TD_Sampler",
"FL_TetrisGame",
"FL_TimeLine",
"FL_UpscaleModel",
"FL_VideoCropMask",
"FL_VideoRecompose",
"FL_ZipDirectory",
@@ -10716,7 +10905,7 @@
"SimpleChat"
],
{
"title_aux": "SaltAI Language Toolkit"
"title_aux": "SaltAI_Language_Toolkit"
}
],
"https://github.com/giriss/comfy-image-saver": [
@@ -11081,6 +11270,15 @@
"title_aux": "ComfyUI Griptape Nodes"
}
],
"https://github.com/gseth/ControlAltAI-Nodes": [
[
"FluxResolutionNode",
"FluxSampler"
],
{
"title_aux": "ControlAltAI Nodes"
}
],
"https://github.com/guill/abracadabra-comfyui": [
[
"AbracadabraNode",
@@ -11251,6 +11449,7 @@
"classify_function_plus",
"classify_persona",
"classify_persona_plus",
"clear_file",
"clear_model",
"custom_persona",
"discord_bot",
@@ -11267,6 +11466,7 @@
"feishu_tool",
"file_combine",
"file_combine_plus",
"flux_persona",
"get_string",
"github_tool",
"google_loader",
@@ -12681,6 +12881,19 @@
"title_aux": "ComfyUI-CCSR"
}
],
"https://github.com/kijai/ComfyUI-ControlNeXt-SVD": [
[
"ControlNextDecode",
"ControlNextDiffusersScheduler",
"ControlNextGetPoses",
"ControlNextSVDApply",
"ControlNextSampler",
"DownloadAndLoadControlNeXt"
],
{
"title_aux": "ComfyUI nodes for ControlNext-SVD v2"
}
],
"https://github.com/kijai/ComfyUI-DDColor": [
[
"DDColor_Colorize"
@@ -12853,6 +13066,7 @@
"JoinStringMulti",
"JoinStrings",
"LoadAndResizeImage",
"LoadImagesFromFolderKJ",
"LoadResAdapterNormalization",
"MaskBatchMulti",
"MaskOrImageToWeight",
@@ -13270,6 +13484,18 @@
"title_aux": "LNL Frame Selector"
}
],
"https://github.com/leeguandong/ComfyUI_CrossImageAttention": [
[
"AppearanceTransferInference",
"AppearanceTransferModelModelLoader",
"CIAConfig",
"LoadImagePath",
"LoadLatents"
],
{
"title_aux": "ComfyUI nodes to use CrossImageAttention"
}
],
"https://github.com/leeguandong/ComfyUI_InternVL2": [
[
"DynamicPreprocess",
@@ -13300,6 +13526,34 @@
"title_aux": "ComfyUI_M3Net"
}
],
"https://github.com/leeguandong/ComfyUI_Style_Aligned": [
[
"SAControlnet_ModelLoader",
"SADepth",
"SAHandler",
"SAInversion",
"SASDXLControlnetKsampler",
"SASDXLKampler",
"SASDXLTransferKsampler",
"SASDXL_ModelLoader",
"SchedulerLoader"
],
{
"title_aux": "ComfyUI nodes to use Style-Aligned"
}
],
"https://github.com/leeguandong/ComfyUI_VideoEditing": [
[
"LoadVideo2Images",
"VEdit_ControlNet_ModelLoader",
"VEdit_ModelLoader",
"VEdit_Sampler",
"VEdit_image2canny"
],
{
"title_aux": "ComfyUI nodes to use VideoEditing"
}
],
"https://github.com/leestuartx/ComfyUI-GG": [
[
"AddPaddingToImage",
@@ -14431,10 +14685,8 @@
"CanvasCreatorSimple",
"CircleCreator",
"CirclesGenerator",
"CreateCircleMask",
"CreateMaskWithCanvas",
"CreateNestedPNGMask",
"CreatePolygonPNGMask",
"CreateSimpleMask",
"CreateTillingPNGMask",
"CreateWatermarkRemovalMask",
@@ -14452,6 +14704,7 @@
"IntMultiplication",
"IntSubtraction",
"IntToFloatMultiplication",
"LoRALoaderWithNameStacker",
"LogicNot",
"NoneToZero",
"NumeralToString",
@@ -14613,14 +14866,6 @@
"title_aux": "ComfyUI-NegiTools"
}
],
"https://github.com/neeltheninja/ComfyUI-TextOverlay": [
[
"Text Overlay"
],
{
"title_aux": "ComfyUI-TextOverlay"
}
],
"https://github.com/neverbiasu/ComfyUI-Image-Captioner": [
[
"ImageCaptioner"
@@ -14766,7 +15011,7 @@
"MMakerColorEnhance"
],
{
"title_aux": "Color Enhance"
"title_aux": "noarche/Color Enhance"
}
],
"https://github.com/noembryo/ComfyUI-noEmbryo": [
@@ -14869,6 +15114,14 @@
"title_aux": "BrushNet"
}
],
"https://github.com/okgo4/ComfyUI-Mosaic-Mask": [
[
"MosaicMask"
],
{
"title_aux": "ComfyUI-Mosaic-Mask"
}
],
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
[
"Lora Loader From HF"
@@ -15611,6 +15864,33 @@
"title_aux": "Runtime44 ComfyUI Nodes"
}
],
"https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside": [
[
"AudioControlledMaskMorph",
"EmitterMovement",
"GravityWell",
"MaskMath",
"MaskMorph",
"MaskRings",
"MaskTransform",
"MaskWarp",
"MovingShape",
"OpticalFlowDirectionMask",
"OpticalFlowMaskModulation",
"OpticalFlowParticleSystem",
"ParticleEmissionMask",
"ParticleEmitter",
"PulsatingParticleSystemMask",
"SpringJointSetting",
"StaticBody",
"TextMaskNode",
"Vortex",
"_mfc"
],
{
"title_aux": "RyanOnTheInside"
}
],
"https://github.com/s1dlx/comfy_meh/raw/main/meh.py": [
[
"MergingExecutionHelper"
@@ -15624,6 +15904,7 @@
"ControlNet Selector",
"ControlNetOptionalLoader",
"DiffusersSelector",
"MultiInputVariableRewrite",
"SaveImageJPGNoMeta"
],
{
@@ -15968,13 +16249,9 @@
"BizyAirGenerateLightningImage",
"BizyAirHEDPreprocessor",
"BizyAirImageCaption",
"BizyAirKolorsSampler",
"BizyAirKolorsTextEncode",
"BizyAirKolorsVAEDecode",
"BizyAirKolorsVAEEncode",
"BizyAirJoyCaption",
"BizyAirLeReS_DepthMapPreprocessor",
"BizyAirLineArtPreprocessor",
"BizyAirMZChatGLM3TextEncode",
"BizyAirM_LSDPreprocessor",
"BizyAirMetric3D_DepthMapPreprocessor",
"BizyAirMetric3D_NormalMapPreprocessor",
@@ -15987,7 +16264,6 @@
"BizyAirRemoveBackground",
"BizyAirSAMPreprocessor",
"BizyAirScribblePreprocessor",
"BizyAirSetAPIKey",
"BizyAirSiliconCloudLLMAPI",
"BizyAirSuperResolution",
"BizyAirTilePreprocessor",
@@ -16226,6 +16502,15 @@
"title_aux": "ComfyUI_MS_Diffusion"
}
],
"https://github.com/smthemex/ComfyUI_MooER": [
[
"MooER_LoadModel",
"MooER_Sampler"
],
{
"title_aux": "ComfyUI_MooER"
}
],
"https://github.com/smthemex/ComfyUI_ParlerTTS": [
[
"ParlerTTS_LoadModel",
@@ -16807,6 +17092,7 @@
"Compare-\ud83d\udd2c",
"DebugPrint-\ud83d\udd2c",
"Float-\ud83d\udd2c",
"If ANY execute A else B-\ud83d\udd2c",
"If ANY return A else B-\ud83d\udd2c",
"Int-\ud83d\udd2c",
"String-\ud83d\udd2c"
@@ -17705,6 +17991,7 @@
"easy detailerFix",
"easy dynamiCrafterLoader",
"easy float",
"easy fluxLoader",
"easy fullCascadeKSampler",
"easy fullLoader",
"easy fullkSampler",
@@ -17917,6 +18204,22 @@
"title_aux": "tdxh_node_comfyui"
}
],
"https://github.com/yuan199696/add_text_2_img": [
[
"AddText"
],
{
"title_aux": "add_text_2_img"
}
],
"https://github.com/yuan199696/chinese_clip_encode": [
[
"ChineseCLIPEncode"
],
{
"title_aux": "chinese_clip_encode"
}
],
"https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": [
[
"DepthAnythingTensorrt"
@@ -18065,6 +18368,7 @@
"CheckpointLoaderSimpleWithSwitch",
"ColorCorrectOfUtils",
"ConcatTextOfUtils",
"GenderControlOutput",
"ImageBatchOneOrMore",
"ImageCompositeMaskedWithSwitch",
"ImageConcanateOfUtils",

View File

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,7 @@ sys.path.append(glob_path)
import cm_global
from manager_util import *
version = [2, 48, 7]
version = [2, 50]
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
@@ -103,6 +103,9 @@ def is_blacklisted(name):
if match:
name = match.group(1)
if name in cm_global.pip_blacklist:
return True
if name in cm_global.pip_downgrade_blacklist:
pips = get_installed_packages()
@@ -129,6 +132,9 @@ def is_installed(name):
if match:
name = match.group(1)
if name in cm_global.pip_blacklist:
return True
if name in cm_global.pip_downgrade_blacklist:
pips = get_installed_packages()

View File

@@ -1,4 +1,3 @@
import mimetypes
import traceback
import folder_paths
@@ -6,7 +5,6 @@ import locale
import subprocess # don't remove this
import concurrent
import nodes
import hashlib
import os
import sys
import threading
@@ -852,6 +850,10 @@ async def fix_custom_node(request):
install_cmd = [sys.executable, "-m", "pip", "install", '-U', pname]
core.try_install_script(json_data['files'][0], ".", install_cmd)
# HOTFIX: force downgrade to numpy<2
install_cmd = [sys.executable, "-m", "pip", "install", "numpy<2"]
core.try_install_script(json_data['files'][0], ".", install_cmd)
if res:
print(f"After restarting ComfyUI, please refresh the browser.")
return web.json_response({}, content_type='application/json')
@@ -1275,128 +1277,6 @@ async def load_components(request):
return web.Response(status=400)
@PromptServer.instance.routes.get("/manager/share_option")
async def share_option(request):
if "value" in request.rel_url.query:
core.get_config()['share_option'] = request.rel_url.query['value']
core.write_config()
else:
return web.Response(text=core.get_config()['share_option'], status=200)
return web.Response(status=200)
def get_openart_auth():
if not os.path.exists(os.path.join(core.comfyui_manager_path, ".openart_key")):
return None
try:
with open(os.path.join(core.comfyui_manager_path, ".openart_key"), "r") as f:
openart_key = f.read().strip()
return openart_key if openart_key else None
except:
return None
def get_matrix_auth():
if not os.path.exists(os.path.join(core.comfyui_manager_path, "matrix_auth")):
return None
try:
with open(os.path.join(core.comfyui_manager_path, "matrix_auth"), "r") as f:
matrix_auth = f.read()
homeserver, username, password = matrix_auth.strip().split("\n")
if not homeserver or not username or not password:
return None
return {
"homeserver": homeserver,
"username": username,
"password": password,
}
except:
return None
def get_comfyworkflows_auth():
if not os.path.exists(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey")):
return None
try:
with open(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey"), "r") as f:
share_key = f.read()
if not share_key.strip():
return None
return share_key
except:
return None
def get_youml_settings():
if not os.path.exists(os.path.join(core.comfyui_manager_path, ".youml")):
return None
try:
with open(os.path.join(core.comfyui_manager_path, ".youml"), "r") as f:
youml_settings = f.read().strip()
return youml_settings if youml_settings else None
except:
return None
def set_youml_settings(settings):
with open(os.path.join(core.comfyui_manager_path, ".youml"), "w") as f:
f.write(settings)
@PromptServer.instance.routes.get("/manager/get_openart_auth")
async def api_get_openart_auth(request):
# print("Getting stored Matrix credentials...")
openart_key = get_openart_auth()
if not openart_key:
return web.Response(status=404)
return web.json_response({"openart_key": openart_key})
@PromptServer.instance.routes.post("/manager/set_openart_auth")
async def api_set_openart_auth(request):
json_data = await request.json()
openart_key = json_data['openart_key']
with open(os.path.join(core.comfyui_manager_path, ".openart_key"), "w") as f:
f.write(openart_key)
return web.Response(status=200)
@PromptServer.instance.routes.get("/manager/get_matrix_auth")
async def api_get_matrix_auth(request):
# print("Getting stored Matrix credentials...")
matrix_auth = get_matrix_auth()
if not matrix_auth:
return web.Response(status=404)
return web.json_response(matrix_auth)
@PromptServer.instance.routes.get("/manager/youml/settings")
async def api_get_youml_settings(request):
youml_settings = get_youml_settings()
if not youml_settings:
return web.Response(status=404)
return web.json_response(json.loads(youml_settings))
@PromptServer.instance.routes.post("/manager/youml/settings")
async def api_set_youml_settings(request):
json_data = await request.json()
set_youml_settings(json.dumps(json_data))
return web.Response(status=200)
@PromptServer.instance.routes.get("/manager/get_comfyworkflows_auth")
async def api_get_comfyworkflows_auth(request):
# Check if the user has provided Matrix credentials in a file called 'matrix_accesstoken'
# in the same directory as the ComfyUI base folder
# print("Getting stored Comfyworkflows.com auth...")
comfyworkflows_auth = get_comfyworkflows_auth()
if not comfyworkflows_auth:
return web.Response(status=404)
return web.json_response({"comfyworkflows_sharekey": comfyworkflows_auth})
args.enable_cors_header = "*"
if hasattr(PromptServer.instance, "app"):
app = PromptServer.instance.app
@@ -1404,260 +1284,6 @@ if hasattr(PromptServer.instance, "app"):
app.middlewares.append(cors_middleware)
@PromptServer.instance.routes.post("/manager/set_esheep_workflow_and_images")
async def set_esheep_workflow_and_images(request):
json_data = await request.json()
current_workflow = json_data['workflow']
images = json_data['images']
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), "w", encoding='utf-8') as file:
json.dump(json_data, file, indent=4)
return web.Response(status=200)
@PromptServer.instance.routes.get("/manager/get_esheep_workflow_and_images")
async def get_esheep_workflow_and_images(request):
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), 'r', encoding='utf-8') as file:
data = json.load(file)
return web.Response(status=200, text=json.dumps(data))
def set_matrix_auth(json_data):
homeserver = json_data['homeserver']
username = json_data['username']
password = json_data['password']
with open(os.path.join(core.comfyui_manager_path, "matrix_auth"), "w") as f:
f.write("\n".join([homeserver, username, password]))
def set_comfyworkflows_auth(comfyworkflows_sharekey):
with open(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey"), "w") as f:
f.write(comfyworkflows_sharekey)
def has_provided_matrix_auth(matrix_auth):
return matrix_auth['homeserver'].strip() and matrix_auth['username'].strip() and matrix_auth['password'].strip()
def has_provided_comfyworkflows_auth(comfyworkflows_sharekey):
return comfyworkflows_sharekey.strip()
def extract_model_file_names(json_data):
"""Extract unique file names from the input JSON data."""
file_names = set()
model_filename_extensions = {'.safetensors', '.ckpt', '.pt', '.pth', '.bin'}
# Recursively search for file names in the JSON data
def recursive_search(data):
if isinstance(data, dict):
for value in data.values():
recursive_search(value)
elif isinstance(data, list):
for item in data:
recursive_search(item)
elif isinstance(data, str) and '.' in data:
file_names.add(os.path.basename(data)) # file_names.add(data)
recursive_search(json_data)
return [f for f in list(file_names) if os.path.splitext(f)[1] in model_filename_extensions]
def find_file_paths(base_dir, file_names):
"""Find the paths of the files in the base directory."""
file_paths = {}
for root, dirs, files in os.walk(base_dir):
# Exclude certain directories
dirs[:] = [d for d in dirs if d not in ['.git']]
for file in files:
if file in file_names:
file_paths[file] = os.path.join(root, file)
return file_paths
def compute_sha256_checksum(filepath):
"""Compute the SHA256 checksum of a file, in chunks"""
sha256 = hashlib.sha256()
with open(filepath, 'rb') as f:
for chunk in iter(lambda: f.read(4096), b''):
sha256.update(chunk)
return sha256.hexdigest()
@PromptServer.instance.routes.post("/manager/share")
async def share_art(request):
# get json data
json_data = await request.json()
matrix_auth = json_data['matrix_auth']
comfyworkflows_sharekey = json_data['cw_auth']['cw_sharekey']
set_matrix_auth(matrix_auth)
set_comfyworkflows_auth(comfyworkflows_sharekey)
share_destinations = json_data['share_destinations']
credits = json_data['credits']
title = json_data['title']
description = json_data['description']
is_nsfw = json_data['is_nsfw']
prompt = json_data['prompt']
potential_outputs = json_data['potential_outputs']
selected_output_index = json_data['selected_output_index']
try:
output_to_share = potential_outputs[int(selected_output_index)]
except:
# for now, pick the first output
output_to_share = potential_outputs[0]
assert output_to_share['type'] in ('image', 'output')
output_dir = folder_paths.get_output_directory()
if output_to_share['type'] == 'image':
asset_filename = output_to_share['image']['filename']
asset_subfolder = output_to_share['image']['subfolder']
if output_to_share['image']['type'] == 'temp':
output_dir = folder_paths.get_temp_directory()
else:
asset_filename = output_to_share['output']['filename']
asset_subfolder = output_to_share['output']['subfolder']
if asset_subfolder:
asset_filepath = os.path.join(output_dir, asset_subfolder, asset_filename)
else:
asset_filepath = os.path.join(output_dir, asset_filename)
# get the mime type of the asset
assetFileType = mimetypes.guess_type(asset_filepath)[0]
share_website_host = "UNKNOWN"
if "comfyworkflows" in share_destinations:
share_website_host = "https://comfyworkflows.com"
share_endpoint = f"{share_website_host}/api"
# get presigned urls
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
async with session.post(
f"{share_endpoint}/get_presigned_urls",
json={
"assetFileName": asset_filename,
"assetFileType": assetFileType,
"workflowJsonFileName": 'workflow.json',
"workflowJsonFileType": 'application/json',
},
) as resp:
assert resp.status == 200
presigned_urls_json = await resp.json()
assetFilePresignedUrl = presigned_urls_json["assetFilePresignedUrl"]
assetFileKey = presigned_urls_json["assetFileKey"]
workflowJsonFilePresignedUrl = presigned_urls_json["workflowJsonFilePresignedUrl"]
workflowJsonFileKey = presigned_urls_json["workflowJsonFileKey"]
# upload asset
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
async with session.put(assetFilePresignedUrl, data=open(asset_filepath, "rb")) as resp:
assert resp.status == 200
# upload workflow json
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
async with session.put(workflowJsonFilePresignedUrl, data=json.dumps(prompt['workflow']).encode('utf-8')) as resp:
assert resp.status == 200
model_filenames = extract_model_file_names(prompt['workflow'])
model_file_paths = find_file_paths(folder_paths.base_path, model_filenames)
models_info = {}
for filename, filepath in model_file_paths.items():
models_info[filename] = {
"filename": filename,
"sha256_checksum": compute_sha256_checksum(filepath),
"relative_path": os.path.relpath(filepath, folder_paths.base_path),
}
# make a POST request to /api/upload_workflow with form data key values
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
form = aiohttp.FormData()
if comfyworkflows_sharekey:
form.add_field("shareKey", comfyworkflows_sharekey)
form.add_field("source", "comfyui_manager")
form.add_field("assetFileKey", assetFileKey)
form.add_field("assetFileType", assetFileType)
form.add_field("workflowJsonFileKey", workflowJsonFileKey)
form.add_field("sharedWorkflowWorkflowJsonString", json.dumps(prompt['workflow']))
form.add_field("sharedWorkflowPromptJsonString", json.dumps(prompt['output']))
form.add_field("shareWorkflowCredits", credits)
form.add_field("shareWorkflowTitle", title)
form.add_field("shareWorkflowDescription", description)
form.add_field("shareWorkflowIsNSFW", str(is_nsfw).lower())
form.add_field("currentSnapshot", json.dumps(core.get_current_snapshot()))
form.add_field("modelsInfo", json.dumps(models_info))
async with session.post(
f"{share_endpoint}/upload_workflow",
data=form,
) as resp:
assert resp.status == 200
upload_workflow_json = await resp.json()
workflowId = upload_workflow_json["workflowId"]
# check if the user has provided Matrix credentials
if "matrix" in share_destinations:
comfyui_share_room_id = '!LGYSoacpJPhIfBqVfb:matrix.org'
filename = os.path.basename(asset_filepath)
content_type = assetFileType
try:
from matrix_client.api import MatrixHttpApi
from matrix_client.client import MatrixClient
homeserver = 'matrix.org'
if matrix_auth:
homeserver = matrix_auth.get('homeserver', 'matrix.org')
homeserver = homeserver.replace("http://", "https://")
if not homeserver.startswith("https://"):
homeserver = "https://" + homeserver
client = MatrixClient(homeserver)
try:
token = client.login(username=matrix_auth['username'], password=matrix_auth['password'])
if not token:
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
except:
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
matrix = MatrixHttpApi(homeserver, token=token)
with open(asset_filepath, 'rb') as f:
mxc_url = matrix.media_upload(f.read(), content_type, filename=filename)['content_uri']
workflow_json_mxc_url = matrix.media_upload(prompt['workflow'], 'application/json', filename='workflow.json')['content_uri']
text_content = ""
if title:
text_content += f"{title}\n"
if description:
text_content += f"{description}\n"
if credits:
text_content += f"\ncredits: {credits}\n"
response = matrix.send_message(comfyui_share_room_id, text_content)
response = matrix.send_content(comfyui_share_room_id, mxc_url, filename, 'm.image')
response = matrix.send_content(comfyui_share_room_id, workflow_json_mxc_url, 'workflow.json', 'm.file')
except:
import traceback
traceback.print_exc()
return web.json_response({"error": "An error occurred when sharing your art to Matrix."}, content_type='application/json', status=500)
return web.json_response({
"comfyworkflows": {
"url": None if "comfyworkflows" not in share_destinations else f"{share_website_host}/workflows/{workflowId}",
},
"matrix": {
"success": None if "matrix" not in share_destinations else True
}
}, content_type='application/json', status=200)
def sanitize(data):
return data.replace("<", "&lt;").replace(">", "&gt;")

View File

@@ -2,7 +2,7 @@
# try:
# from distutils.version import StrictVersion
# except:
print(f"[ComfyUI-Manager] 'distutils' package not found. Activating fallback mode for compatibility.")
# print(f"[ComfyUI-Manager] 'distutils' package not found. Activating fallback mode for compatibility.")
class StrictVersion:
def __init__(self, version_string):
self.version_string = version_string

386
glob/share_3rdparty.py Normal file
View File

@@ -0,0 +1,386 @@
import mimetypes
import manager_core as core
import os
from aiohttp import web
import aiohttp
import json
import hashlib
import folder_paths
from server import PromptServer
def extract_model_file_names(json_data):
"""Extract unique file names from the input JSON data."""
file_names = set()
model_filename_extensions = {'.safetensors', '.ckpt', '.pt', '.pth', '.bin'}
# Recursively search for file names in the JSON data
def recursive_search(data):
if isinstance(data, dict):
for value in data.values():
recursive_search(value)
elif isinstance(data, list):
for item in data:
recursive_search(item)
elif isinstance(data, str) and '.' in data:
file_names.add(os.path.basename(data)) # file_names.add(data)
recursive_search(json_data)
return [f for f in list(file_names) if os.path.splitext(f)[1] in model_filename_extensions]
def find_file_paths(base_dir, file_names):
"""Find the paths of the files in the base directory."""
file_paths = {}
for root, dirs, files in os.walk(base_dir):
# Exclude certain directories
dirs[:] = [d for d in dirs if d not in ['.git']]
for file in files:
if file in file_names:
file_paths[file] = os.path.join(root, file)
return file_paths
def compute_sha256_checksum(filepath):
"""Compute the SHA256 checksum of a file, in chunks"""
sha256 = hashlib.sha256()
with open(filepath, 'rb') as f:
for chunk in iter(lambda: f.read(4096), b''):
sha256.update(chunk)
return sha256.hexdigest()
@PromptServer.instance.routes.get("/manager/share_option")
async def share_option(request):
if "value" in request.rel_url.query:
core.get_config()['share_option'] = request.rel_url.query['value']
core.write_config()
else:
return web.Response(text=core.get_config()['share_option'], status=200)
return web.Response(status=200)
def get_openart_auth():
if not os.path.exists(os.path.join(core.comfyui_manager_path, ".openart_key")):
return None
try:
with open(os.path.join(core.comfyui_manager_path, ".openart_key"), "r") as f:
openart_key = f.read().strip()
return openart_key if openart_key else None
except:
return None
def get_matrix_auth():
if not os.path.exists(os.path.join(core.comfyui_manager_path, "matrix_auth")):
return None
try:
with open(os.path.join(core.comfyui_manager_path, "matrix_auth"), "r") as f:
matrix_auth = f.read()
homeserver, username, password = matrix_auth.strip().split("\n")
if not homeserver or not username or not password:
return None
return {
"homeserver": homeserver,
"username": username,
"password": password,
}
except:
return None
def get_comfyworkflows_auth():
if not os.path.exists(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey")):
return None
try:
with open(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey"), "r") as f:
share_key = f.read()
if not share_key.strip():
return None
return share_key
except:
return None
def get_youml_settings():
if not os.path.exists(os.path.join(core.comfyui_manager_path, ".youml")):
return None
try:
with open(os.path.join(core.comfyui_manager_path, ".youml"), "r") as f:
youml_settings = f.read().strip()
return youml_settings if youml_settings else None
except:
return None
def set_youml_settings(settings):
with open(os.path.join(core.comfyui_manager_path, ".youml"), "w") as f:
f.write(settings)
@PromptServer.instance.routes.get("/manager/get_openart_auth")
async def api_get_openart_auth(request):
# print("Getting stored Matrix credentials...")
openart_key = get_openart_auth()
if not openart_key:
return web.Response(status=404)
return web.json_response({"openart_key": openart_key})
@PromptServer.instance.routes.post("/manager/set_openart_auth")
async def api_set_openart_auth(request):
json_data = await request.json()
openart_key = json_data['openart_key']
with open(os.path.join(core.comfyui_manager_path, ".openart_key"), "w") as f:
f.write(openart_key)
return web.Response(status=200)
@PromptServer.instance.routes.get("/manager/get_matrix_auth")
async def api_get_matrix_auth(request):
# print("Getting stored Matrix credentials...")
matrix_auth = get_matrix_auth()
if not matrix_auth:
return web.Response(status=404)
return web.json_response(matrix_auth)
@PromptServer.instance.routes.get("/manager/youml/settings")
async def api_get_youml_settings(request):
youml_settings = get_youml_settings()
if not youml_settings:
return web.Response(status=404)
return web.json_response(json.loads(youml_settings))
@PromptServer.instance.routes.post("/manager/youml/settings")
async def api_set_youml_settings(request):
json_data = await request.json()
set_youml_settings(json.dumps(json_data))
return web.Response(status=200)
@PromptServer.instance.routes.get("/manager/get_comfyworkflows_auth")
async def api_get_comfyworkflows_auth(request):
# Check if the user has provided Matrix credentials in a file called 'matrix_accesstoken'
# in the same directory as the ComfyUI base folder
# print("Getting stored Comfyworkflows.com auth...")
comfyworkflows_auth = get_comfyworkflows_auth()
if not comfyworkflows_auth:
return web.Response(status=404)
return web.json_response({"comfyworkflows_sharekey": comfyworkflows_auth})
@PromptServer.instance.routes.post("/manager/set_esheep_workflow_and_images")
async def set_esheep_workflow_and_images(request):
json_data = await request.json()
current_workflow = json_data['workflow']
images = json_data['images']
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), "w", encoding='utf-8') as file:
json.dump(json_data, file, indent=4)
return web.Response(status=200)
@PromptServer.instance.routes.get("/manager/get_esheep_workflow_and_images")
async def get_esheep_workflow_and_images(request):
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), 'r', encoding='utf-8') as file:
data = json.load(file)
return web.Response(status=200, text=json.dumps(data))
def set_matrix_auth(json_data):
homeserver = json_data['homeserver']
username = json_data['username']
password = json_data['password']
with open(os.path.join(core.comfyui_manager_path, "matrix_auth"), "w") as f:
f.write("\n".join([homeserver, username, password]))
def set_comfyworkflows_auth(comfyworkflows_sharekey):
with open(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey"), "w") as f:
f.write(comfyworkflows_sharekey)
def has_provided_matrix_auth(matrix_auth):
return matrix_auth['homeserver'].strip() and matrix_auth['username'].strip() and matrix_auth['password'].strip()
def has_provided_comfyworkflows_auth(comfyworkflows_sharekey):
return comfyworkflows_sharekey.strip()
@PromptServer.instance.routes.post("/manager/share")
async def share_art(request):
# get json data
json_data = await request.json()
matrix_auth = json_data['matrix_auth']
comfyworkflows_sharekey = json_data['cw_auth']['cw_sharekey']
set_matrix_auth(matrix_auth)
set_comfyworkflows_auth(comfyworkflows_sharekey)
share_destinations = json_data['share_destinations']
credits = json_data['credits']
title = json_data['title']
description = json_data['description']
is_nsfw = json_data['is_nsfw']
prompt = json_data['prompt']
potential_outputs = json_data['potential_outputs']
selected_output_index = json_data['selected_output_index']
try:
output_to_share = potential_outputs[int(selected_output_index)]
except:
# for now, pick the first output
output_to_share = potential_outputs[0]
assert output_to_share['type'] in ('image', 'output')
output_dir = folder_paths.get_output_directory()
if output_to_share['type'] == 'image':
asset_filename = output_to_share['image']['filename']
asset_subfolder = output_to_share['image']['subfolder']
if output_to_share['image']['type'] == 'temp':
output_dir = folder_paths.get_temp_directory()
else:
asset_filename = output_to_share['output']['filename']
asset_subfolder = output_to_share['output']['subfolder']
if asset_subfolder:
asset_filepath = os.path.join(output_dir, asset_subfolder, asset_filename)
else:
asset_filepath = os.path.join(output_dir, asset_filename)
# get the mime type of the asset
assetFileType = mimetypes.guess_type(asset_filepath)[0]
share_website_host = "UNKNOWN"
if "comfyworkflows" in share_destinations:
share_website_host = "https://comfyworkflows.com"
share_endpoint = f"{share_website_host}/api"
# get presigned urls
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
async with session.post(
f"{share_endpoint}/get_presigned_urls",
json={
"assetFileName": asset_filename,
"assetFileType": assetFileType,
"workflowJsonFileName": 'workflow.json',
"workflowJsonFileType": 'application/json',
},
) as resp:
assert resp.status == 200
presigned_urls_json = await resp.json()
assetFilePresignedUrl = presigned_urls_json["assetFilePresignedUrl"]
assetFileKey = presigned_urls_json["assetFileKey"]
workflowJsonFilePresignedUrl = presigned_urls_json["workflowJsonFilePresignedUrl"]
workflowJsonFileKey = presigned_urls_json["workflowJsonFileKey"]
# upload asset
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
async with session.put(assetFilePresignedUrl, data=open(asset_filepath, "rb")) as resp:
assert resp.status == 200
# upload workflow json
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
async with session.put(workflowJsonFilePresignedUrl, data=json.dumps(prompt['workflow']).encode('utf-8')) as resp:
assert resp.status == 200
model_filenames = extract_model_file_names(prompt['workflow'])
model_file_paths = find_file_paths(folder_paths.base_path, model_filenames)
models_info = {}
for filename, filepath in model_file_paths.items():
models_info[filename] = {
"filename": filename,
"sha256_checksum": compute_sha256_checksum(filepath),
"relative_path": os.path.relpath(filepath, folder_paths.base_path),
}
# make a POST request to /api/upload_workflow with form data key values
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
form = aiohttp.FormData()
if comfyworkflows_sharekey:
form.add_field("shareKey", comfyworkflows_sharekey)
form.add_field("source", "comfyui_manager")
form.add_field("assetFileKey", assetFileKey)
form.add_field("assetFileType", assetFileType)
form.add_field("workflowJsonFileKey", workflowJsonFileKey)
form.add_field("sharedWorkflowWorkflowJsonString", json.dumps(prompt['workflow']))
form.add_field("sharedWorkflowPromptJsonString", json.dumps(prompt['output']))
form.add_field("shareWorkflowCredits", credits)
form.add_field("shareWorkflowTitle", title)
form.add_field("shareWorkflowDescription", description)
form.add_field("shareWorkflowIsNSFW", str(is_nsfw).lower())
form.add_field("currentSnapshot", json.dumps(core.get_current_snapshot()))
form.add_field("modelsInfo", json.dumps(models_info))
async with session.post(
f"{share_endpoint}/upload_workflow",
data=form,
) as resp:
assert resp.status == 200
upload_workflow_json = await resp.json()
workflowId = upload_workflow_json["workflowId"]
# check if the user has provided Matrix credentials
if "matrix" in share_destinations:
comfyui_share_room_id = '!LGYSoacpJPhIfBqVfb:matrix.org'
filename = os.path.basename(asset_filepath)
content_type = assetFileType
try:
from matrix_client.api import MatrixHttpApi
from matrix_client.client import MatrixClient
homeserver = 'matrix.org'
if matrix_auth:
homeserver = matrix_auth.get('homeserver', 'matrix.org')
homeserver = homeserver.replace("http://", "https://")
if not homeserver.startswith("https://"):
homeserver = "https://" + homeserver
client = MatrixClient(homeserver)
try:
token = client.login(username=matrix_auth['username'], password=matrix_auth['password'])
if not token:
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
except:
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
matrix = MatrixHttpApi(homeserver, token=token)
with open(asset_filepath, 'rb') as f:
mxc_url = matrix.media_upload(f.read(), content_type, filename=filename)['content_uri']
workflow_json_mxc_url = matrix.media_upload(prompt['workflow'], 'application/json', filename='workflow.json')['content_uri']
text_content = ""
if title:
text_content += f"{title}\n"
if description:
text_content += f"{description}\n"
if credits:
text_content += f"\ncredits: {credits}\n"
response = matrix.send_message(comfyui_share_room_id, text_content)
response = matrix.send_content(comfyui_share_room_id, mxc_url, filename, 'm.image')
response = matrix.send_content(comfyui_share_room_id, workflow_json_mxc_url, 'workflow.json', 'm.file')
except:
import traceback
traceback.print_exc()
return web.json_response({"error": "An error occurred when sharing your art to Matrix."}, content_type='application/json', status=500)
return web.json_response({
"comfyworkflows": {
"url": None if "comfyworkflows" not in share_destinations else f"{share_website_host}/workflows/{workflowId}",
},
"matrix": {
"success": None if "matrix" not in share_destinations else True
}
}, content_type='application/json', status=200)

View File

@@ -11,7 +11,66 @@
{
"author": "sebord",
"title": "ComfyUI-LMCQ [WIP]",
"reference": "https://github.com/sebord/ComfyUI-LMCQ",
"files": [
"https://github.com/sebord/ComfyUI-LMCQ"
],
"install_type": "git-clone",
"description": "ComfyUI small node toolkit, this toolkit is mainly to update some practical small nodes, to make a contribution to the comfyui ecosystem, PS: 'LMCQ' is the abbreviation of the team name"
},
{
"author": "logtd",
"title": "ComfyUI-Fluxtapoz [WIP]",
"reference": "https://github.com/logtd/ComfyUI-Fluxtapoz",
"files": [
"https://github.com/logtd/ComfyUI-Fluxtapoz"
],
"install_type": "git-clone",
"description": "A set of nodes for editing images using Flux in ComfyUI"
},
{
"author": "ChrisColeTech",
"title": "ComfyUI-Get-Random-File [UNSAFE]",
"reference": "https://github.com/ChrisColeTech/ComfyUI-Get-Random-File",
"files": [
"https://github.com/ChrisColeTech/ComfyUI-Get-Random-File"
],
"install_type": "git-clone",
"description": "Gets a random file from a directory. Returns the filpath as a STRING. [w/This node allows access to arbitrary files through the workflow, which could pose a security threat.]"
},
{
"author": "logtd",
"title": "ComfyUI-Fluxtapoz [WIP]",
"reference": "https://github.com/logtd/ComfyUI-Fluxtapoz",
"files": [
"https://github.com/logtd/ComfyUI-Fluxtapoz"
],
"install_type": "git-clone",
"description": "A set of nodes for editing images using Flux in ComfyUI"
},
{
"author": "neeltheninja",
"title": "ComfyUI-ControlNeXt [WIP]",
"reference": "https://github.com/neverbiasu/ComfyUI-ControlNeXt",
"files": [
"https://github.com/neverbiasu/ComfyUI-ControlNeXt"
],
"install_type": "git-clone",
"description": "In progress🚧"
},
{
"author": "neeltheninja",
"title": "ComfyUI-TextOverlay",
"reference": "https://github.com/neeltheninja/ComfyUI-TextOverlay",
"files": [
"https://github.com/neeltheninja/ComfyUI-TextOverlay"
],
"install_type": "git-clone",
"description": "A custom node for ComfyUI that adds text overlay to images, with options for text and background color, opacity, vertical positioning, and custom font selection. [w/Name conflict with munkyfoot/ComfyUI-TextOverlay. Cannot install simulatenously.]"
},
{
"author": "comfyanonymous",
"title": "ComfyUI_bitsandbytes_NF4 [EXPERIMENTAL]",
@@ -1702,16 +1761,6 @@
"install_type": "git-clone",
"description": "This answers the itch for being able to easily paste [a/CivitAI.com](https://civitai.com/) generated data (or other simple metadata) into Comfy in a way that makes it easy to test with multiple checkpoints."
},
{
"author": "ZHO-ZHO-ZHO",
"title": "ComfyUI-AnyText [WIP]",
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText",
"files": [
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText"
],
"install_type": "git-clone",
"description": "Unofficial implementation of [a/AnyText](https://github.com/tyxsspa/AnyText/tree/825bcc54687206b15bd7e28ba1a8b095989d58e3) for ComfyUIEXP"
},
{
"author": "nidefawl",
"title": "ComfyUI-nidefawl [UNSAFE]",

View File

@@ -351,6 +351,16 @@
"title_aux": "ComfyUI_bd_customNodes"
}
],
"https://github.com/ChrisColeTech/ComfyUI-Get-Random-File": [
[
"GetImageFileByIndexNode",
"RandomFilePathNode",
"RandomImagePathNode"
],
{
"title_aux": "ComfyUI-Get-Random-File [UNSAFE]"
}
],
"https://github.com/DeTK/ComfyUI-Switch": [
[
"NodeSwitch"
@@ -875,14 +885,6 @@
"title_aux": "visuallabs_comfyui_nodes"
}
],
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText": [
[
"AnyTextNode_Zho"
],
{
"title_aux": "ComfyUI-AnyText [WIP]"
}
],
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AuraSR-ZHO": [
[
"AuraSR_Lterative_Zho",
@@ -1284,8 +1286,42 @@
"StableCascade_SuperResolutionControlnet",
"StableZero123_Conditioning",
"StableZero123_Conditioning_Batched",
"StubFloat",
"StubImage",
"StubInt",
"StubMask",
"StyleModelApply",
"StyleModelLoader",
"TestAccumulateNode",
"TestAccumulationGetItemNode",
"TestAccumulationGetLengthNode",
"TestAccumulationHeadNode",
"TestAccumulationSetItemNode",
"TestAccumulationTailNode",
"TestAccumulationToListNode",
"TestBoolOperationNode",
"TestCustomIsChanged",
"TestCustomValidation1",
"TestCustomValidation2",
"TestCustomValidation3",
"TestCustomValidation4",
"TestCustomValidation5",
"TestDynamicDependencyCycle",
"TestExecutionBlocker",
"TestFloatConditions",
"TestForLoopClose",
"TestForLoopOpen",
"TestIntConditions",
"TestIntMathOperation",
"TestLazyMixImages",
"TestListToAccumulationNode",
"TestMakeListNode",
"TestMixedExpansionReturns",
"TestStringConditions",
"TestToBoolNode",
"TestVariadicAverage",
"TestWhileLoopClose",
"TestWhileLoopOpen",
"ThresholdMask",
"TomePatchModel",
"TripleCLIPLoader",
@@ -2013,6 +2049,18 @@
"title_aux": "ComfyUI Build and Train Your Network [WIP]"
}
],
"https://github.com/logtd/ComfyUI-Fluxtapoz": [
[
"FluxDeGuidance",
"FluxInverseSampler",
"InFluxFlipSigmas",
"InFluxModelSamplingPred",
"OutFluxModelSamplingPred"
],
{
"title_aux": "ComfyUI-Fluxtapoz [WIP]"
}
],
"https://github.com/logtd/ComfyUI-MotionThiefExperiment": [
[
"ApplyRefMotionNode",
@@ -2165,6 +2213,14 @@
"title_aux": "ComfyUI GLIGEN GUI Node"
}
],
"https://github.com/neeltheninja/ComfyUI-TextOverlay": [
[
"TextOverlay"
],
{
"title_aux": "ComfyUI-TextOverlay"
}
],
"https://github.com/neuratech-ai/ComfyUI-MultiGPU": [
[
"CLIPLoaderMultiGPU",
@@ -2178,6 +2234,15 @@
"title_aux": "ComfyUI-MultiGPU"
}
],
"https://github.com/neverbiasu/ComfyUI-ControlNeXt": [
[
"ControlNextPipelineConfig",
"ControlNextSDXL"
],
{
"title_aux": "ComfyUI-ControlNeXt [WIP]"
}
],
"https://github.com/nidefawl/ComfyUI-nidefawl": [
[
"BlendImagesWithBoundedMasks",
@@ -2321,6 +2386,17 @@
"title_aux": "SDFXBridgeForComfyUI - ComfyUI Custom Node for SDFX Integration"
}
],
"https://github.com/sebord/ComfyUI-LMCQ": [
[
"LmcqImageSaver",
"LmcqImageSaverTransit",
"LmcqImageSaverWeb",
"LmcqLoadFluxNF4Checkpoint"
],
{
"title_aux": "ComfyUI-LMCQ [WIP]"
}
],
"https://github.com/shadowcz007/ComfyUI-PuLID-Test": [
[
"ApplyPulid",

View File

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,16 @@
{
"author": "ZHO-ZHO-ZHO",
"title": "ComfyUI-AnyText [NOT MAINTAINED]",
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText",
"files": [
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText"
],
"install_type": "git-clone",
"description": "Unofficial implementation of [a/AnyText](https://github.com/tyxsspa/AnyText/tree/825bcc54687206b15bd7e28ba1a8b095989d58e3) for ComfyUIEXP"
},
{
"author": "shinich39",
"title": "comfyui-pkg39 [DEPRECATED]",

View File

@@ -9,7 +9,288 @@
},
{
"author": "NvidiaGameWorksAdmin",
"title": "ComfyUI-RTX-Remix",
"id": "comfyui-rtx-remix",
"reference": "https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix",
"files": [
"https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix"
],
"install_type": "git-clone",
"description": "Use ComfyUI with RTX Remix to remaster classic games [a/https://github.com/NVIDIAGameWorks/rtx-remix](https://github.com/NVIDIAGameWorks/rtx-remix)"
},
{
"author": "Ryuukeisyou",
"title": "ComfyUI-SyncTalk",
"id": "synctalk",
"reference": "https://github.com/Ryuukeisyou/ComfyUI-SyncTalk",
"files": [
"https://github.com/Ryuukeisyou/ComfyUI-SyncTalk"
],
"install_type": "git-clone",
"description": "ComfyUI implemntation for [a/SyncTalk](https://github.com/ZiqiaoPeng/SyncTalk)"
},
{
"author": "aiXander",
"title": "Eden.art LoRa Trainer",
"id": "Eden",
"reference": "https://github.com/edenartlab/sd-lora-trainer",
"files": [
"https://github.com/edenartlab/sd-lora-trainer"
],
"install_type": "git-clone",
"description": "Maintained by Eden.art, this is a very fast, well tuned trainer for SDXL and SD15"
},
{
"author": "ControlAltAI",
"title": "ControlAltAI Nodes",
"id": "controlaltai",
"reference": "https://github.com/gseth/ControlAltAI-Nodes",
"files":
[
"https://github.com/gseth/ControlAltAI-Nodes"
],
"install_type": "git-clone",
"description": "Quality of Life ComfyUI nodes starting with Flux Resolution Calculator and Flux Sampler."
},
{
"author": "OliverCrosby",
"title": "Comfyui-Minimap",
"reference": "https://github.com/OliverCrosby/Comfyui-Minimap",
"files":
[
"https://github.com/OliverCrosby/Comfyui-Minimap"
],
"install_type": "git-clone",
"description": "This is the initial build of a comfyui minimap.\nVery simple so far. It makes a copy of the workflow graph, simplified and minified, in the bottom left hand corner. It puts a red border where your viewport is. Left click on the minimap and it will move your viewport to that location."
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use CrossImageAttention",
"reference": "https://github.com/leeguandong/ComfyUI_CrossImageAttention",
"files": [
"https://github.com/leeguandong/ComfyUI_CrossImageAttention"
],
"install_type": "git-clone",
"description": "ComfyUI for [a/CrossImageAttention](https://github.com/garibida/cross-image-attention)"
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use Style-Aligned",
"reference": "https://github.com/leeguandong/ComfyUI_Style_Aligned",
"files": [
"https://github.com/leeguandong/ComfyUI_Style_Aligned"
],
"install_type": "git-clone",
"description": "ComfyUI for [a/style-aligned](https://github.com/google/style-aligned)"
},
{
"author": "fairy-root",
"title": "Flux Prompt Generator for ComfyUI",
"reference": "https://github.com/fairy-root/Flux-Prompt-Generator",
"files": [
"https://github.com/fairy-root/Flux-Prompt-Generator"
],
"install_type": "git-clone",
"description": "A flexible and customizable prompt generator for generating detailed and creative prompts for image generation models for ComfyUI"
},
{
"author": "doomy23",
"title": "ComfyUI-D00MYsNodes",
"reference": "https://github.com/doomy23/ComfyUI-D00MYsNodes",
"files":
[
"https://github.com/doomy23/ComfyUI-D00MYsNodes"
],
"install_type": "git-clone",
"description": "Nodes:ImagesToPNG. A set of custom nodes for ComfyUI I needed for myself but I'm sharing with the public."
},
{
"author": "Sieyalixnet",
"title": "ComfyUI_Textarea_Loaders",
"reference": "https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders",
"files":
[
"https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders"
],
"install_type": "git-clone",
"description": "An easy custom node that makes the some loaders' input as Text instead of file selector.\nFor example, there are many characters in different loras respectively. If you want to generate different characters' pictures, you have to select corresponding lora, and then edit the prompt. It may cost much time.\nTo solve this problem, You can use it with a chrome extension https://github.com/Sieyalixnet/ComfyUI-Prompt-Formatter-Extension that makes the queue prompt easier when you dealing with massive loras and prompt."
},
{
"author": "shinich39",
"title": "comfyui-group-selection",
"reference": "https://github.com/shinich39/comfyui-group-selection",
"files": [
"https://github.com/shinich39/comfyui-group-selection"
],
"install_type": "git-clone",
"description": "Create a new group of nodes."
},
{
"author": "ryanontheinside",
"title": "RyanOnTheInside",
"reference": "https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside",
"files": [
"https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside"
],
"install_type": "git-clone",
"description": "Custom nodes introducing particle simulations, optical flow, and temporal masks"
},
{
"author": "city96",
"title": "ComfyUI-GGUF",
"id": "gguf",
"reference": "https://github.com/city96/ComfyUI-GGUF",
"files": [
"https://github.com/city96/ComfyUI-GGUF"
],
"install_type": "git-clone",
"description": "GGUF Quantization support for native ComfyUI models\nThis is currently very much WIP. These custom nodes provide support for model files stored in the GGUF format popularized by llama.cpp.\nWhile quantization wasn't feasible for regular UNET models (conv2d), transformer/DiT models such as flux seem less affected by quantization. This allows running it in much lower bits per weight variable bitrate quants on low-end GPUs.\n[w/LoRA / Controlnet / etc are currently not supported due to the weights being quantized.]"
},
{
"author": "smthemex",
"title": "ComfyUI_MooER",
"id": "comfyui_mooer",
"reference": "https://github.com/smthemex/ComfyUI_MooER",
"files": [
"https://github.com/smthemex/ComfyUI_MooER"
],
"install_type": "git-clone",
"description": "MooER is an LLM-based Speech Recognition and Translation Model from Moore Threads.You can use MooER when install ComfyUI_MooER node"
},
{
"author": "fairy-root",
"title": "Ollama and Llava Vision integration for ComfyUI",
"reference": "https://github.com/fairy-root/comfyui-ollama-llms",
"files": [
"https://github.com/fairy-root/comfyui-ollama-llms"
],
"install_type": "git-clone",
"description": "The PonySwitch node is a custom node for ComfyUI that modifies prompts based on a toggle switch and adds configurable pony tags."
},
{
"author": "shinich39",
"title": "comfyui-target-search",
"reference": "https://github.com/shinich39/comfyui-target-search",
"files": [
"https://github.com/shinich39/comfyui-target-search"
],
"install_type": "git-clone",
"description": "Move canvas to target on dragging connection."
},
{
"author": "MinusZoneAI",
"title": "ComfyUI-FluxExt-MZ",
"reference": "https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ",
"files": [
"https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ"
],
"install_type": "git-clone",
"description": "Nodes:MZ_Flux1PartialLoad_Patch. Tool nodes related to flux1"
},
{
"author": "XLabs-AI",
"title": "x-flux-comfyui",
"reference": "https://github.com/XLabs-AI/x-flux-comfyui",
"files": [
"https://github.com/XLabs-AI/x-flux-comfyui"
],
"install_type": "git-clone",
"description": "Nodes:Load Flux LoRA, Load Flux ControlNet, Apply Flux ControlNet, Xlabs Sampler"
},
{
"author": "okgo4",
"title": "ComfyUI-Mosaic-Mask",
"reference": "https://github.com/okgo4/ComfyUI-Mosaic-Mask",
"files": [
"https://github.com/okgo4/ComfyUI-Mosaic-Mask"
],
"install_type": "git-clone",
"description": "ComfyUI-Mosaic-Mask is an automatic tool designed to detect and mask mosaic areas in input images."
},
{
"author": "kijai",
"title": "ComfyUI nodes for ControlNext-SVD v2",
"reference": "https://github.com/kijai/ComfyUI-ControlNeXt-SVD",
"files": [
"https://github.com/kijai/ComfyUI-ControlNeXt-SVD"
],
"install_type": "git-clone",
"description": "These nodes include my wrapper for the original diffusers pipeline, as well as work in progress native ComfyUI implementation.\nFor the diffusers wrapper models should be downloaded automatically, for the native version you can get the unet [a/here](https://huggingface.co/Kijai/ControlNeXt-SVD-V2-Comfy/blob/main/controlnext-svd_v2-unet-fp16_converted.safetensors)."
},
{
"author": "Isi-dev",
"title": "UniAnimate Nodes for ComfyUI",
"id": "comfyuiunianimatenodes",
"reference": "https://github.com/Isi-dev/ComfyUI-UniAnimate-W",
"files": [
"https://github.com/Isi-dev/ComfyUI-UniAnimate-W"
],
"install_type": "git-clone",
"description": "These are nodes to animate an image with a reference video using UniAnimate. [w/Name conflict with AIFSH/ComfyUI-UniAnimate. Cannot install simulatenously.]"
},
{
"author": "dadoirie",
"title": "ComfyUI_Dados_Nodes",
"reference": "https://github.com/dadoirie/ComfyUI_Dados_Nodes",
"files": [
"https://github.com/dadoirie/ComfyUI_Dados_Nodes"
],
"install_type": "git-clone",
"description": "ComfyUI_Dados_Nodes is a collection of custom nodes for ComfyUI, designed to enhance functionality and provide integration with various services, including Pinterest. This privacy policy explains how these nodes handle user data.\nNOTE: [a/privacy_policy](https://github.com/dadoirie/ComfyUI_Dados_Nodes/blob/master/privacy_policy.md)"
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use VideoEditing",
"reference": "https://github.com/leeguandong/ComfyUI_VideoEditing",
"files": [
"https://github.com/leeguandong/ComfyUI_VideoEditing"
],
"install_type": "git-clone",
"description": "Nodes:Load Video to Images, Image to Canny, ControlNet Model Loader, VEDit Model Loader, VEdit Sampler. [a/https://github.com/SingleZombie/DiffusersExample/tree/main/ReplaceAttn](https://github.com/SingleZombie/DiffusersExample/tree/main/ReplaceAttn)"
},
{
"author": "shinich39",
"title": " connect-from-afar",
"reference": "https://github.com/shinich39/comfyui-connect-from-afar",
"files": [
"https://github.com/shinich39/comfyui-connect-from-afar"
],
"install_type": "git-clone",
"description": "Connect a new link from out of screen."
},
{
"author": "StartHua",
"title": "Comfyui_CXH_joy_caption",
"reference": "https://github.com/StartHua/Comfyui_CXH_joy_caption",
"files": [
"https://github.com/StartHua/Comfyui_CXH_joy_caption"
],
"install_type": "git-clone",
"description": "Nodes:Joy_caption_load, Joy_caption"
},
{
"author": "fanfanfan",
"title": "chinese_clip_encode",
"id": "chinese_clip_encode",
"reference": "https://github.com/yuan199696/chinese_clip_encode",
"files": [
"https://github.com/yuan199696/chinese_clip_encode"
],
"install_type": "git-clone",
"description": "Support input of Chinese prompts."
},
{
"author": "ChrisColeTech",
"title": "ComfyUI-Line-counter",
"reference": "https://github.com/ChrisColeTech/ComfyUI-Line-counter",
"files": [
"https://github.com/ChrisColeTech/ComfyUI-Line-counter"
],
"install_type": "git-clone",
"description": "Custom node to count the number of lines in a text file"
},
{
"author": "Fuou Marinas",
"title": "ComfyUI-StyleTransferPlus",
@@ -300,7 +581,6 @@
"install_type": "git-clone",
"description": "Nodes:NSFW Detector"
},
{
"author": "shiimizu",
"title": "Semantic-aware Guidance (S-CFG)",
@@ -425,269 +705,6 @@
],
"install_type": "git-clone",
"description": "This extension integrates Google's Gemini API and Ollama into ComfyUI, allowing users to leverage these powerful language models directly within their ComfyUI workflows."
},
{
"author": "lenskikh",
"title": "Propmt Worker",
"reference": "https://github.com/lenskikh/ComfyUI-Prompt-Worker",
"files": [
"https://github.com/lenskikh/ComfyUI-Prompt-Worker"
],
"install_type": "git-clone",
"description": "Node:Prompt Worker. A text manipulation node for postprocessing of prompt."
},
{
"author": "SeniorPioner",
"title": "SP-Nodes",
"id": "spnodes",
"reference": "https://github.com/bananasss00/ComfyUI-SP-Nodes",
"files": [
"https://github.com/bananasss00/ComfyUI-SP-Nodes"
],
"install_type": "git-clone",
"description": "Node Pack: PromptChecker for token toggling, KoboldCPP API, ModelMerging, Telegram-Bot-API, and more"
},
{
"author": "AIFSH",
"title": "DHLive-ComfyUI",
"id": "dhlive",
"reference": "https://github.com/AIFSH/DHLive-ComfyUI",
"files": [
"https://github.com/AIFSH/DHLive-ComfyUI"
],
"install_type": "git-clone",
"description": "a comfyui custom node for [a/DH_live](https://github.com/kleinlee/DH_live)"
},
{
"author": "NeuralSamurAI",
"title": "Dimensional Latent Perlin for ComfyUI",
"reference": "https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin",
"files": [
"https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin"
],
"install_type": "git-clone",
"description": "Dimensional Latent Perlin is a custom node for ComfyUI that generates Perlin noise in the latent space. This node is designed to work seamlessly with various diffusion models and can be used as an alternative or complement to standard random noise generators in image generation pipelines."
},
{
"author": "Dobidop",
"title": "Dobidop ComfyStereo",
"id": "simple-stereoscopic",
"reference": "https://github.com/Dobidop/ComfyStereo",
"files": [
"https://github.com/Dobidop/ComfyStereo"
],
"install_type": "git-clone",
"description": "Two simple nodes for stereoscopic image generation. Nodes: Stereo Image Node - a basic port from the Automatic1111 stereo script in thygate/stable-diffusion-webui-depthmap-script, LazyStereo - a naïve stereo image generator"
},
{
"author": "caleboleary",
"title": "Arc2Face ComfyUI Node Library",
"reference": "https://github.com/caleboleary/ComfyUI-Arc2Face",
"files": [
"https://github.com/caleboleary/ComfyUI-Arc2Face"
],
"install_type": "git-clone",
"description": "This ComfyUI node library builds upon the work done to train the [a/Arc2Face](https://github.com/foivospar/Arc2Face) model by foivospar. It provides a set of nodes for ComfyUI that allow users to extract face embeddings, generate images based on these embeddings, and perform image-to-image transformations."
},
{
"author": "NMWave",
"title": "Image Captioning and Tagging Assistor Nodes",
"id": "naderimagecaptionandtag",
"reference": "https://github.com/NMWave/ComfyUI-Nader-Tagging",
"files": [
"https://github.com/NMWave/ComfyUI-Nader-Tagging"
],
"install_type": "git-clone",
"description": "A small set of useful nodes which aid with the tagging process by splitting tags and strings, alternating tags from multiple sources and removing duplicates."
},
{
"author": "alpertunga-bile",
"title": "image-caption-comfyui",
"reference": "https://github.com/alpertunga-bile/image-caption-comfyui",
"files": [
"https://github.com/alpertunga-bile/image-caption-comfyui"
],
"install_type": "git-clone",
"description": "Image caption node for ComfyUI. You can load your image caption model and generate prompts with the given picture. Insert prompt node is added here to help the users to add their prompts easily."
},
{
"author": "GeekyGhost",
"title": "ComfyUI-GeekyRemB",
"reference": "https://github.com/GeekyGhost/ComfyUI-GeekyRemB",
"files": [
"https://github.com/GeekyGhost/ComfyUI-GeekyRemB"
],
"install_type": "git-clone",
"description": "GeekyRemB is a powerful and versatile image processing node for ComfyUI, designed to remove backgrounds from images with advanced customization options. This node leverages the rembg library and offers a wide range of features for fine-tuning the background removal process and enhancing the resulting images."
},
{
"author": "AIFSH",
"title": "AniTalker-ComfyUI",
"id": "anitalker",
"reference": "https://github.com/AIFSH/AniTalker-ComfyUI",
"files": [
"https://github.com/AIFSH/AniTalker-ComfyUI"
],
"install_type": "git-clone",
"description": "a comfyui custom node for [a/AniTalker](https://github.com/X-LANCE/AniTalker)"
},
{
"author": "syaofox",
"title": "ComfyUI_FoxTools",
"reference": "https://github.com/syaofox/ComfyUI_FoxTools",
"files": [
"https://github.com/syaofox/ComfyUI_FoxTools"
],
"install_type": "git-clone",
"description": "Nodes:BatchImageFromList, Load Face Occlusion Model, Create Face Mask, Simple FaceAlign, Cacul FaceAlign, Gen Blurbord, Face Align, Face Rotate, ImageAdd, LoadImageList, SaveImage Plus, RegTextFind"
},
{
"author": "Anibaaal",
"title": "ComfyUI UX Nodes",
"reference": "https://github.com/Anibaaal/ComfyUI-UX-Nodes",
"files": [
"https://github.com/Anibaaal/ComfyUI-UX-Nodes"
],
"install_type": "git-clone",
"description": "Nodes: Easy Resolution Picker, Step Calculator"
},
{
"author": "aonekoss",
"title": "ComfyUI-Counter",
"reference": "https://github.com/oleksandr612/ComfyUI-Counter",
"files": [
"https://github.com/oleksandr612/ComfyUI-Counter"
],
"install_type": "git-clone",
"description": "A simple counter, when pressing 'Queue Prompt' resets the count."
},
{
"author": "emojiiii",
"title": "ComfyUI_Emojiiii_Custom_Nodes",
"reference": "https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes",
"files": [
"https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes"
],
"install_type": "git-clone",
"description": "Nodes:MultiTextEncode, KolorsMultiTextEncode"
},
{
"author": "da2el-ai",
"title": "D2 Send Eagle",
"id": "d2-send-eagle",
"reference": "https://github.com/da2el-ai/ComfyUI-d2-send-eagle",
"files": [
"https://github.com/da2el-ai/ComfyUI-d2-send-eagle"
],
"install_type": "git-clone",
"description": "This is a custom node for sending images generated in ComfyUI to the image management software Eagle. It's an extension of an existing custom node called [a/ComfyUI-send-eagle-slim](https://github.com/shingo1228/ComfyUI-send-eagle-slim), modified to suit my preferences. I'm grateful to Shingo.T for creating the excellent original custom node."
},
{
"author": "Extraltodeus",
"title": "Skimmed_CFG",
"id": "skimmed-cfg",
"reference": "https://github.com/Extraltodeus/Skimmed_CFG",
"files": [
"https://github.com/Extraltodeus/Skimmed_CFG"
],
"install_type": "git-clone",
"description": "A powerful anti-burn allowing much higher CFG scales for latent diffusion models (for ComfyUI)"
},
{
"author": "noarche",
"title": "Color Enhance",
"id": "color-enhance",
"reference": "https://github.com/noarche/sd-webui-color-enhance",
"files": [
"https://github.com/noarche/sd-webui-color-enhance"
],
"install_type": "git-clone",
"description": "Script for [a/AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) and node for ComfyUI to enhance colors.\nThis is the same algorithm GIMP/GEGL uses for color enhancement. The gist of this implementation is that it converts the color space to [CIELCh(ab) and normalizes the chroma (or '[a/colorfulness](https://en.wikipedia.org/wiki/Colorfulness)') component. Original source can be found in the link below."
},
{
"author": "PowerHouseMan",
"title": "ComfyUI-AdvancedLivePortrait",
"id": "advancedliveportrait",
"reference": "https://github.com/PowerHouseMan/ComfyUI-AdvancedLivePortrait",
"files": [
"https://github.com/PowerHouseMan/ComfyUI-AdvancedLivePortrait"
],
"install_type": "git-clone",
"description": "AdvancedLivePortrait with Facial expression editor"
},
{
"author": "cdxOo",
"title": "Text Node With Comments (@cdxoo)",
"reference": "https://github.com/cdxOo/comfyui-text-node-with-comments",
"files": [
"https://github.com/cdxOo/comfyui-text-node-with-comments"
],
"install_type": "git-clone",
"description": "multiline text node that strips c-style comments (i.e.'//' and '/* ... */') before passing output string downstream"
},
{
"author": "11dogzi",
"title": "Comfyui-ergouzi-kaiguan",
"id": "ergouzi-nodes",
"reference": "https://github.com/11dogzi/Comfyui-ergouzi-kaiguan",
"files": [
"https://github.com/11dogzi/Comfyui-ergouzi-kaiguan"
],
"install_type": "git-clone",
"description": "Group switching control, one click control to ignore and disable multiple groups, as well as wired switch combination nodes, allowing for arbitrary switching of annotation names"
},
{
"author": "neverbiasu",
"title": "ComfyUI SAM2(Segment Anything 2)",
"id": "sam2",
"reference": "https://github.com/neverbiasu/ComfyUI-SAM2",
"files": [
"https://github.com/neverbiasu/ComfyUI-SAM2"
],
"install_type": "git-clone",
"description": "This project adapts the SAM2 to incorporate functionalities from [a/comfyui_segment_anything](https://github.com/storyicon/comfyui_segment_anything). Many thanks to continue-revolution for their foundational work."
},
{
"author": "kijai",
"title": "ComfyUI-segment-anything-2",
"id": "segment-anything-2",
"reference": "https://github.com/kijai/ComfyUI-segment-anything-2",
"files": [
"https://github.com/kijai/ComfyUI-segment-anything-2"
],
"install_type": "git-clone",
"description": "Nodes to use [a/segment-anything-2](https://github.com/facebookresearch/segment-anything-2) for image or video segmentation."
},
{
"author": "akatz-ai",
"title": "Akatz Custom Nodes",
"id": "akatz-ai",
"reference": "https://github.com/akatz-ai/ComfyUI-AKatz-Nodes",
"files": [
"https://github.com/akatz-ai/ComfyUI-AKatz-Nodes"
],
"install_type": "git-clone",
"description": "Simple custom node pack for nodes I use in my workflows. Includes Dilate Mask Linear for animating masks."
},
{
"author": "MiddleKD",
"title": "ComfyUI-mem-safe-wrapper",
"reference": "https://github.com/MiddleKD/ComfyUI-mem-safe-wrapper",
"files": [
"https://github.com/MiddleKD/ComfyUI-mem-safe-wrapper"
],
"install_type": "git-clone",
"description": "ComfyUI's Smart Memory Management efficiently manages RAM, GPU memory, and garbage collection. This feature keeps frequently used models in memory to increase inference speed, and dynamically releases less important models when memory is low to optimize resources. However, not all ComfyUI custom node developers create nodes that are compatible with Smart memory management. This includes several impressive models. Mem-safe-wrapper is a custom node that wraps these model nodes to enable ComfyUI's Smart memory management capabilities."
},
{
"author": "teward",
"title": "Comfy-Sentry",
"reference": "https://github.com/teward/Comfy-Sentry",
"files": [
"https://github.com/teward/Comfy-Sentry"
],
"install_type": "git-clone",
"description": "ComfyUI custom node that activates integration with a Sentry instance for loading. Has no actual nodes."
}
]
}

View File

@@ -857,9 +857,7 @@
"FLATTEN (JOV) \u2b07\ufe0f",
"GLSL (JOV) \ud83c\udf69",
"GLSL BLEND LINEAR (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL FILTER RANGE (JOV) \ud83e\uddd9\ud83c\udffd\u200d\u2640\ufe0f",
"GLSL GRAYSCALE (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL HSV ADJUST (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL HSV-2-LAB (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL HSV-2-RGB (JOV) \ud83e\uddd9\ud83c\udffd",
"GLSL LAB-2-HSV (JOV) \ud83e\uddd9\ud83c\udffd",
@@ -1466,6 +1464,15 @@
"title_aux": "ComfyUI_Ib_CustomNodes"
}
],
"https://github.com/ChrisColeTech/ComfyUI-Line-counter": [
[
"DirectoryFileCounter",
"TextFileLineCounter"
],
{
"title_aux": "ComfyUI-Line-counter"
}
],
"https://github.com/Clybius/ComfyUI-Extra-Samplers": [
[
"GeometricCFGGuider",
@@ -2063,6 +2070,7 @@
"BinaryPreprocessor",
"CannyEdgePreprocessor",
"ColorPreprocessor",
"ControlNetAuxSimpleAddText",
"ControlNetPreprocessorSelector",
"DSINE-NormalMapPreprocessor",
"DWPreprocessor",
@@ -2070,6 +2078,7 @@
"DepthAnythingPreprocessor",
"DepthAnythingV2Preprocessor",
"DiffusionEdge_Preprocessor",
"ExecuteAllControlNetPreprocessors",
"FacialPartColoringFromPoseKps",
"FakeScribblePreprocessor",
"HEDPreprocessor",
@@ -2347,14 +2356,20 @@
],
"https://github.com/FuouM/ComfyUI-StyleTransferPlus": [
[
"AESFA",
"AesFAStyleBlend",
"AesPA",
"CAST",
"CoralColorTransfer",
"EFDM",
"MicroAST",
"NeuralNeighbor"
"NeuralNeighbor",
"TSSAT",
"UniST",
"UniST_Video"
],
{
"author": "Fuou Marinas",
"author": "ZJU",
"description": "A collection of style transfer nodes.",
"nickname": "StyleTransferPlus",
"title": "ComfyUI-StyleTransferPlus",
@@ -2763,6 +2778,15 @@
"title_aux": "ComfyUI-Stereopsis"
}
],
"https://github.com/Isi-dev/ComfyUI-UniAnimate-W": [
[
"Gen_align_pose",
"UniAnimateImage"
],
{
"title_aux": "UniAnimate Nodes for ComfyUI"
}
],
"https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4": [
[
"DisplayText",
@@ -3217,6 +3241,7 @@
"ADE_MultivalConvertToMask",
"ADE_MultivalDynamic",
"ADE_MultivalDynamicFloatInput",
"ADE_MultivalDynamicFloats",
"ADE_MultivalScaledMask",
"ADE_NoiseLayerAdd",
"ADE_NoiseLayerAddWeighted",
@@ -3756,10 +3781,13 @@
],
"https://github.com/MohammadAboulEla/ComfyUI-iTools": [
[
"iTools_Prompt"
"iToolsAddOverlay",
"iToolsLoadImagePlus",
"iToolsPromptLoader",
"iToolsPromptSaver"
],
{
"title_aux": "iTools ImageLoaderPlus"
"title_aux": "ComfyUI-iTools"
}
],
"https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1": [
@@ -3856,6 +3884,14 @@
"title_aux": "ComfyUI_SSStereoscope"
}
],
"https://github.com/Munkyfoot/ComfyUI-TextOverlay": [
[
"Text Overlay"
],
{
"title_aux": "ComfyUI-TextOverlay"
}
],
"https://github.com/MushroomFleet/DJZ-Nodes": [
[
"AspectSize",
@@ -3904,6 +3940,38 @@
"title_aux": "Image Captioning and Tagging Assistor Nodes"
}
],
"https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix": [
[
"RTXRemixCreateLayer",
"RTXRemixDefineLayerId",
"RTXRemixDeleteFile",
"RTXRemixEndContext",
"RTXRemixGetEditTarget",
"RTXRemixGetLayers",
"RTXRemixGetTextures",
"RTXRemixIngestTexture",
"RTXRemixInvertBool",
"RTXRemixLayerType",
"RTXRemixLayerTypes",
"RTXRemixMuteLayer",
"RTXRemixRemoveLayer",
"RTXRemixRestAPIDetails",
"RTXRemixSaveLayer",
"RTXRemixSetEditTarget",
"RTXRemixSetTexture",
"RTXRemixStartContext",
"RTXRemixStrToList",
"RTXRemixStringConcatenate",
"RTXRemixStringConstant",
"RTXRemixSwitch",
"RTXRemixTextureTypeToUSDAttribute",
"RTXRemixTexturesType",
"RTXRemixTexturesTypes"
],
{
"title_aux": "ComfyUI-RTX-Remix"
}
],
"https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin": [
[
"NoisyLatentPerlinD"
@@ -4533,6 +4601,9 @@
"MergeAudioNode",
"MergeImageBatches",
"MergeLatentBatches",
"MuseAudioFeatureExtractionNode",
"MuseImageFeatureExtractionNode",
"MuseTalkNode",
"RVC-Studio.LoadAudio",
"RVC-Studio.PreviewAudio",
"RVCNode",
@@ -4943,6 +5014,15 @@
"title_aux": "Lazy Pony Prompter"
}
],
"https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders": [
[
"CheckPointLoader_Text",
"LoRALoader_Text"
],
{
"title_aux": "ComfyUI_Textarea_Loaders"
}
],
"https://github.com/Smirnov75/ComfyUI-mxToolkit": [
[
"mxSeed",
@@ -5094,6 +5174,15 @@
"title_aux": "ComfyUI_Seg_VITON"
}
],
"https://github.com/StartHua/Comfyui_CXH_joy_caption": [
[
"Joy_caption",
"Joy_caption_load"
],
{
"title_aux": "Comfyui_CXH_joy_caption"
}
],
"https://github.com/StartHua/Comfyui_joytag": [
[
"CXH_JoyTag"
@@ -5732,6 +5821,7 @@
"ttN text7BOX_concat",
"ttN textCycleLine",
"ttN textDebug",
"ttN textOutput",
"ttN tinyLoader",
"ttN xyPlot"
],
@@ -6185,6 +6275,18 @@
"title_aux": "ComfyUI Simply Nodes"
}
],
"https://github.com/XLabs-AI/x-flux-comfyui": [
[
"ApplyFluxControlNet",
"FluxLoraLoader",
"LoadFluxControlNet",
"LoadFluxModel",
"XlabsSampler"
],
{
"title_aux": "x-flux-comfyui"
}
],
"https://github.com/XmYx/deforum-comfy-nodes": [
[
"DeforumAddNoiseNode",
@@ -7521,7 +7623,7 @@
"ApplyRAUNetSimple"
],
{
"title_aux": "ComfyUI jank HiDiffusion"
"title_aux": "comfyui_jankhidiffusion"
}
],
"https://github.com/blepping/comfyui_overly_complicated_sampling": [
@@ -8716,15 +8818,15 @@
"title_aux": "Image chooser"
}
],
"https://github.com/chrisgoringe/cg-noise": [
"https://github.com/chrisgoringe/cg-noisetools": [
[
"Hijack",
"KSampler Advanced with Variations",
"KSampler with Variations",
"UnHijack"
"Batch Noise Simulate",
"Mix Noise",
"Seperable Batch Noise",
"Shape Noise"
],
{
"title_aux": "Variation seeds"
"title_aux": "Noise variation and batch noise tools"
}
],
"https://github.com/chrisgoringe/cg-use-everywhere": [
@@ -8789,6 +8891,14 @@
"title_aux": "youtube-dl-comfyui"
}
],
"https://github.com/city96/ComfyUI-GGUF": [
[
"UnetLoaderGGUF"
],
{
"title_aux": "ComfyUI-GGUF"
}
],
"https://github.com/city96/ComfyUI_ColorMod": [
[
"CV2Tonemap",
@@ -9099,8 +9209,42 @@
"StableCascade_SuperResolutionControlnet",
"StableZero123_Conditioning",
"StableZero123_Conditioning_Batched",
"StubFloat",
"StubImage",
"StubInt",
"StubMask",
"StyleModelApply",
"StyleModelLoader",
"TestAccumulateNode",
"TestAccumulationGetItemNode",
"TestAccumulationGetLengthNode",
"TestAccumulationHeadNode",
"TestAccumulationSetItemNode",
"TestAccumulationTailNode",
"TestAccumulationToListNode",
"TestBoolOperationNode",
"TestCustomIsChanged",
"TestCustomValidation1",
"TestCustomValidation2",
"TestCustomValidation3",
"TestCustomValidation4",
"TestCustomValidation5",
"TestDynamicDependencyCycle",
"TestExecutionBlocker",
"TestFloatConditions",
"TestForLoopClose",
"TestForLoopOpen",
"TestIntConditions",
"TestIntMathOperation",
"TestLazyMixImages",
"TestListToAccumulationNode",
"TestMakeListNode",
"TestMixedExpansionReturns",
"TestStringConditions",
"TestToBoolNode",
"TestVariadicAverage",
"TestWhileLoopClose",
"TestWhileLoopOpen",
"ThresholdMask",
"TomePatchModel",
"TripleCLIPLoader",
@@ -9513,6 +9657,14 @@
"title_aux": "D2 Steps"
}
],
"https://github.com/dadoirie/ComfyUI_Dados_Nodes": [
[
"PinterestImageNode"
],
{
"title_aux": "ComfyUI_Dados_Nodes"
}
],
"https://github.com/dagthomas/comfyui_dagthomas": [
[
"APNLatent",
@@ -9520,14 +9672,16 @@
"CFGSkimming",
"CustomPromptLoader",
"DynamicStringCombinerNode",
"FileReaderNode",
"FlexibleStringMergerNode",
"GPT4MiniNode",
"GPT4VisionNode",
"Gpt4CustomVision",
"Gpt4VisionCloner",
"MergedOllamaNode",
"MedianOppositeColorNode",
"OllamaNode",
"PGSD3LatentGenerator",
"ProminentOppositeColorNode",
"PromptGenerator",
"RandomIntegerNode",
"SentenceMixerNode",
@@ -9980,6 +10134,15 @@
"title_aux": "ComfyUI-Keyframed"
}
],
"https://github.com/doomy23/ComfyUI-D00MYsNodes": [
[
"Images_Converter|D00MYs",
"Show_String|D00MYs"
],
{
"title_aux": "ComfyUI-D00MYsNodes"
}
],
"https://github.com/drago87/ComfyUI_Dragos_Nodes": [
[
"file_padding",
@@ -10072,7 +10235,15 @@
"WidthHeightPicker"
],
{
"title_aux": "Various custom nodes by Eden.art"
"title_aux": "Eden.art nodesuite"
}
],
"https://github.com/edenartlab/sd-lora-trainer": [
[
"Eden_LoRa_trainer"
],
{
"title_aux": "Eden.art LoRa Trainer"
}
],
"https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes": [
@@ -10169,6 +10340,24 @@
"title_aux": "ComfyUI-Showrunner-Utils"
}
],
"https://github.com/fairy-root/Flux-Prompt-Generator": [
[
"FluxPromptGenerator"
],
{
"title_aux": "Flux Prompt Generator for ComfyUI"
}
],
"https://github.com/fairy-root/comfyui-ollama-llms": [
[
"ConcatenateText",
"llava",
"ollama"
],
{
"title_aux": "Ollama and Llava Vision integration for ComfyUI"
}
],
"https://github.com/fearnworks/ComfyUI_FearnworksNodes": [
[
"Count Files in Directory (FW)",
@@ -10316,9 +10505,9 @@
"FL_Shadertoy",
"FL_SimpleGPTVision",
"FL_SystemCheck",
"FL_TD_Sampler",
"FL_TetrisGame",
"FL_TimeLine",
"FL_UpscaleModel",
"FL_VideoCropMask",
"FL_VideoRecompose",
"FL_ZipDirectory",
@@ -10716,7 +10905,7 @@
"SimpleChat"
],
{
"title_aux": "SaltAI Language Toolkit"
"title_aux": "SaltAI_Language_Toolkit"
}
],
"https://github.com/giriss/comfy-image-saver": [
@@ -11081,6 +11270,15 @@
"title_aux": "ComfyUI Griptape Nodes"
}
],
"https://github.com/gseth/ControlAltAI-Nodes": [
[
"FluxResolutionNode",
"FluxSampler"
],
{
"title_aux": "ControlAltAI Nodes"
}
],
"https://github.com/guill/abracadabra-comfyui": [
[
"AbracadabraNode",
@@ -11251,6 +11449,7 @@
"classify_function_plus",
"classify_persona",
"classify_persona_plus",
"clear_file",
"clear_model",
"custom_persona",
"discord_bot",
@@ -11267,6 +11466,7 @@
"feishu_tool",
"file_combine",
"file_combine_plus",
"flux_persona",
"get_string",
"github_tool",
"google_loader",
@@ -12681,6 +12881,19 @@
"title_aux": "ComfyUI-CCSR"
}
],
"https://github.com/kijai/ComfyUI-ControlNeXt-SVD": [
[
"ControlNextDecode",
"ControlNextDiffusersScheduler",
"ControlNextGetPoses",
"ControlNextSVDApply",
"ControlNextSampler",
"DownloadAndLoadControlNeXt"
],
{
"title_aux": "ComfyUI nodes for ControlNext-SVD v2"
}
],
"https://github.com/kijai/ComfyUI-DDColor": [
[
"DDColor_Colorize"
@@ -12853,6 +13066,7 @@
"JoinStringMulti",
"JoinStrings",
"LoadAndResizeImage",
"LoadImagesFromFolderKJ",
"LoadResAdapterNormalization",
"MaskBatchMulti",
"MaskOrImageToWeight",
@@ -13270,6 +13484,18 @@
"title_aux": "LNL Frame Selector"
}
],
"https://github.com/leeguandong/ComfyUI_CrossImageAttention": [
[
"AppearanceTransferInference",
"AppearanceTransferModelModelLoader",
"CIAConfig",
"LoadImagePath",
"LoadLatents"
],
{
"title_aux": "ComfyUI nodes to use CrossImageAttention"
}
],
"https://github.com/leeguandong/ComfyUI_InternVL2": [
[
"DynamicPreprocess",
@@ -13300,6 +13526,34 @@
"title_aux": "ComfyUI_M3Net"
}
],
"https://github.com/leeguandong/ComfyUI_Style_Aligned": [
[
"SAControlnet_ModelLoader",
"SADepth",
"SAHandler",
"SAInversion",
"SASDXLControlnetKsampler",
"SASDXLKampler",
"SASDXLTransferKsampler",
"SASDXL_ModelLoader",
"SchedulerLoader"
],
{
"title_aux": "ComfyUI nodes to use Style-Aligned"
}
],
"https://github.com/leeguandong/ComfyUI_VideoEditing": [
[
"LoadVideo2Images",
"VEdit_ControlNet_ModelLoader",
"VEdit_ModelLoader",
"VEdit_Sampler",
"VEdit_image2canny"
],
{
"title_aux": "ComfyUI nodes to use VideoEditing"
}
],
"https://github.com/leestuartx/ComfyUI-GG": [
[
"AddPaddingToImage",
@@ -14431,10 +14685,8 @@
"CanvasCreatorSimple",
"CircleCreator",
"CirclesGenerator",
"CreateCircleMask",
"CreateMaskWithCanvas",
"CreateNestedPNGMask",
"CreatePolygonPNGMask",
"CreateSimpleMask",
"CreateTillingPNGMask",
"CreateWatermarkRemovalMask",
@@ -14452,6 +14704,7 @@
"IntMultiplication",
"IntSubtraction",
"IntToFloatMultiplication",
"LoRALoaderWithNameStacker",
"LogicNot",
"NoneToZero",
"NumeralToString",
@@ -14613,14 +14866,6 @@
"title_aux": "ComfyUI-NegiTools"
}
],
"https://github.com/neeltheninja/ComfyUI-TextOverlay": [
[
"Text Overlay"
],
{
"title_aux": "ComfyUI-TextOverlay"
}
],
"https://github.com/neverbiasu/ComfyUI-Image-Captioner": [
[
"ImageCaptioner"
@@ -14766,7 +15011,7 @@
"MMakerColorEnhance"
],
{
"title_aux": "Color Enhance"
"title_aux": "noarche/Color Enhance"
}
],
"https://github.com/noembryo/ComfyUI-noEmbryo": [
@@ -14869,6 +15114,14 @@
"title_aux": "BrushNet"
}
],
"https://github.com/okgo4/ComfyUI-Mosaic-Mask": [
[
"MosaicMask"
],
{
"title_aux": "ComfyUI-Mosaic-Mask"
}
],
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
[
"Lora Loader From HF"
@@ -15611,6 +15864,33 @@
"title_aux": "Runtime44 ComfyUI Nodes"
}
],
"https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside": [
[
"AudioControlledMaskMorph",
"EmitterMovement",
"GravityWell",
"MaskMath",
"MaskMorph",
"MaskRings",
"MaskTransform",
"MaskWarp",
"MovingShape",
"OpticalFlowDirectionMask",
"OpticalFlowMaskModulation",
"OpticalFlowParticleSystem",
"ParticleEmissionMask",
"ParticleEmitter",
"PulsatingParticleSystemMask",
"SpringJointSetting",
"StaticBody",
"TextMaskNode",
"Vortex",
"_mfc"
],
{
"title_aux": "RyanOnTheInside"
}
],
"https://github.com/s1dlx/comfy_meh/raw/main/meh.py": [
[
"MergingExecutionHelper"
@@ -15624,6 +15904,7 @@
"ControlNet Selector",
"ControlNetOptionalLoader",
"DiffusersSelector",
"MultiInputVariableRewrite",
"SaveImageJPGNoMeta"
],
{
@@ -15968,13 +16249,9 @@
"BizyAirGenerateLightningImage",
"BizyAirHEDPreprocessor",
"BizyAirImageCaption",
"BizyAirKolorsSampler",
"BizyAirKolorsTextEncode",
"BizyAirKolorsVAEDecode",
"BizyAirKolorsVAEEncode",
"BizyAirJoyCaption",
"BizyAirLeReS_DepthMapPreprocessor",
"BizyAirLineArtPreprocessor",
"BizyAirMZChatGLM3TextEncode",
"BizyAirM_LSDPreprocessor",
"BizyAirMetric3D_DepthMapPreprocessor",
"BizyAirMetric3D_NormalMapPreprocessor",
@@ -15987,7 +16264,6 @@
"BizyAirRemoveBackground",
"BizyAirSAMPreprocessor",
"BizyAirScribblePreprocessor",
"BizyAirSetAPIKey",
"BizyAirSiliconCloudLLMAPI",
"BizyAirSuperResolution",
"BizyAirTilePreprocessor",
@@ -16226,6 +16502,15 @@
"title_aux": "ComfyUI_MS_Diffusion"
}
],
"https://github.com/smthemex/ComfyUI_MooER": [
[
"MooER_LoadModel",
"MooER_Sampler"
],
{
"title_aux": "ComfyUI_MooER"
}
],
"https://github.com/smthemex/ComfyUI_ParlerTTS": [
[
"ParlerTTS_LoadModel",
@@ -16807,6 +17092,7 @@
"Compare-\ud83d\udd2c",
"DebugPrint-\ud83d\udd2c",
"Float-\ud83d\udd2c",
"If ANY execute A else B-\ud83d\udd2c",
"If ANY return A else B-\ud83d\udd2c",
"Int-\ud83d\udd2c",
"String-\ud83d\udd2c"
@@ -17705,6 +17991,7 @@
"easy detailerFix",
"easy dynamiCrafterLoader",
"easy float",
"easy fluxLoader",
"easy fullCascadeKSampler",
"easy fullLoader",
"easy fullkSampler",
@@ -17917,6 +18204,22 @@
"title_aux": "tdxh_node_comfyui"
}
],
"https://github.com/yuan199696/add_text_2_img": [
[
"AddText"
],
{
"title_aux": "add_text_2_img"
}
],
"https://github.com/yuan199696/chinese_clip_encode": [
[
"ChineseCLIPEncode"
],
{
"title_aux": "chinese_clip_encode"
}
],
"https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": [
[
"DepthAnythingTensorrt"
@@ -18065,6 +18368,7 @@
"CheckpointLoaderSimpleWithSwitch",
"ColorCorrectOfUtils",
"ConcatTextOfUtils",
"GenderControlOutput",
"ImageBatchOneOrMore",
"ImageCompositeMaskedWithSwitch",
"ImageConcanateOfUtils",

View File

@@ -20,6 +20,7 @@ import cm_global
security_check.security_check()
cm_global.pip_blacklist = ['torch', 'torchsde', 'torchvision']
cm_global.pip_downgrade_blacklist = ['torch', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
@@ -454,6 +455,9 @@ def is_installed(name):
if match:
name = match.group(1)
if name in cm_global.pip_blacklist:
return True
if name in cm_global.pip_downgrade_blacklist:
pips = get_installed_packages()

View File

@@ -1,7 +1,7 @@
[project]
name = "comfyui-manager"
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
version = "2.48.7"
version = "2.50"
license = { file = "LICENSE.txt" }
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]