diff --git a/custom_nodes/ComfyUI-to-Python-Extension/.github/workflows/publish.yml b/custom_nodes/ComfyUI-to-Python-Extension/.github/workflows/publish.yml deleted file mode 100644 index 6e7201833e56c009e347731016b54e1c6d2254ab..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/.github/workflows/publish.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Publish to Comfy registry -on: - workflow_dispatch: - push: - branches: - - main - paths: - - "pyproject.toml" - -jobs: - publish-node: - name: Publish Custom Node to registry - runs-on: ubuntu-latest - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Publish Custom Node - uses: Comfy-Org/publish-node-action@main - with: - ## Add your own personal access token to your Github Repository secrets and reference it here. - personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }} \ No newline at end of file diff --git a/custom_nodes/ComfyUI-to-Python-Extension/.gitignore b/custom_nodes/ComfyUI-to-Python-Extension/.gitignore deleted file mode 100644 index ff7ab286b664a1431edef4e27c83eab31e7b5c0a..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/.gitignore +++ /dev/null @@ -1,147 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject some infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -.python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don’t work, or not -# install all needed dependencies. -#Pipfile.lock - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# JetBrains IDE -.idea/ - -# VS Code settings -.vscode/ - -# Data files -*.csv -*.dat -*.log -*.sql -*.sqlite -*.xml diff --git a/custom_nodes/ComfyUI-to-Python-Extension/LICENSE b/custom_nodes/ComfyUI-to-Python-Extension/LICENSE deleted file mode 100644 index 5de539171a8c65def3521ff2754bf93deea675ab..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2023 Peyton DeNiro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/custom_nodes/ComfyUI-to-Python-Extension/README.md b/custom_nodes/ComfyUI-to-Python-Extension/README.md deleted file mode 100644 index b9d4028cdb29d73c3e91e2b5c038efb81ad3c179..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/README.md +++ /dev/null @@ -1,212 +0,0 @@ -## ComfyUI-to-Python-Extension -![banner](images/comfyui_to_python_banner.png) - -The `ComfyUI-to-Python-Extension` is a powerful tool that translates [ComfyUI](https://github.com/comfyanonymous/ComfyUI) workflows into executable Python code. Designed to bridge the gap between ComfyUI's visual interface and Python's programming environment, this script facilitates the seamless transition from design to code execution. Whether you're a data scientist, a software developer, or an AI enthusiast, this tool streamlines the process of implementing ComfyUI workflows in Python. - -**Convert this:** - -![SDXL UI Example](images/SDXL-UI-Example.jpg) - - -**To this:** - -``` -import random -import torch -import sys - -sys.path.append("../") -from nodes import ( - VAEDecode, - KSamplerAdvanced, - EmptyLatentImage, - SaveImage, - CheckpointLoaderSimple, - CLIPTextEncode, -) - - -def main(): - with torch.inference_mode(): - checkpointloadersimple = CheckpointLoaderSimple() - checkpointloadersimple_4 = checkpointloadersimple.load_checkpoint( - ckpt_name="sd_xl_base_1.0.safetensors" - ) - - emptylatentimage = EmptyLatentImage() - emptylatentimage_5 = emptylatentimage.generate( - width=1024, height=1024, batch_size=1 - ) - - cliptextencode = CLIPTextEncode() - cliptextencode_6 = cliptextencode.encode( - text="evening sunset scenery blue sky nature, glass bottle with a galaxy in it", - clip=checkpointloadersimple_4[1], - ) - - cliptextencode_7 = cliptextencode.encode( - text="text, watermark", clip=checkpointloadersimple_4[1] - ) - - checkpointloadersimple_12 = checkpointloadersimple.load_checkpoint( - ckpt_name="sd_xl_refiner_1.0.safetensors" - ) - - cliptextencode_15 = cliptextencode.encode( - text="evening sunset scenery blue sky nature, glass bottle with a galaxy in it", - clip=checkpointloadersimple_12[1], - ) - - cliptextencode_16 = cliptextencode.encode( - text="text, watermark", clip=checkpointloadersimple_12[1] - ) - - ksampleradvanced = KSamplerAdvanced() - vaedecode = VAEDecode() - saveimage = SaveImage() - - for q in range(10): - ksampleradvanced_10 = ksampleradvanced.sample( - add_noise="enable", - noise_seed=random.randint(1, 2**64), - steps=25, - cfg=8, - sampler_name="euler", - scheduler="normal", - start_at_step=0, - end_at_step=20, - return_with_leftover_noise="enable", - model=checkpointloadersimple_4[0], - positive=cliptextencode_6[0], - negative=cliptextencode_7[0], - latent_image=emptylatentimage_5[0], - ) - - ksampleradvanced_11 = ksampleradvanced.sample( - add_noise="disable", - noise_seed=random.randint(1, 2**64), - steps=25, - cfg=8, - sampler_name="euler", - scheduler="normal", - start_at_step=20, - end_at_step=10000, - return_with_leftover_noise="disable", - model=checkpointloadersimple_12[0], - positive=cliptextencode_15[0], - negative=cliptextencode_16[0], - latent_image=ksampleradvanced_10[0], - ) - - vaedecode_17 = vaedecode.decode( - samples=ksampleradvanced_11[0], vae=checkpointloadersimple_12[2] - ) - - saveimage_19 = saveimage.save_images( - filename_prefix="ComfyUI", images=vaedecode_17[0] - ) - - -if __name__ == "__main__": - main() -``` -## Potential Use Cases -- Streamlining the process for creating a lean app or pipeline deployment that uses a ComfyUI workflow -- Creating programmatic experiments for various prompt/parameter values -- Creating large queues for image generation (For example, you could adjust the script to generate 1000 images without clicking ctrl+enter 1000 times) -- Easily expanding or iterating on your architecture in Python once a foundational workflow is in place in the GUI - -## V1.3.0 Release Notes -- Generate .py file directly from the ComfyUI Web App - -![Save As Script](images/save_as_script.png) - -## V1.2.1 Release Notes -- Dynamically change `comfyui_to_python.py` parameters with CLI arguments -- Hotfix to handle nodes that accept kwargs. - -## V1.2.0 Release Notes -- Updates to adhere to latest changes from `ComfyUI` - -## V1.0.0 Release Notes -- **Use all the custom nodes!** - - Custom nodes are now supported. If you run into any issues with code execution, first ensure that the each node works as expected in the GUI. If it works in the GUI, but not in the generated script, please submit an issue. - - -## Installation - - -1. Navigate to your `ComfyUI/custom_nodes` directory - -2. Clone this repo - ```bash - git clone https://github.com/pydn/ComfyUI-to-Python-Extension.git - ``` - - After cloning the repo, your `ComfyUI` directory should look like this: - ``` - /comfy - /comfy_extras - /custom_nodes - --/ComfyUI-to-Python-Extension - /input - /models - /output - /script_examples - /web - .gitignore - LICENSE - README.md - comfyui_screenshot.png - cuda_mollac.py - execution.py - extra_model_paths.yaml.example - folder_paths.py - latent_preview.py - main.py - nodes.py - requirements.txt - server.py - ``` - -## Web App Use -1. Launch ComfyUI - -2. Load your favorite workflow and click `Save As Script` - -![Save As Script](images/save_as_script.png) - -3. Type your desired file name into the pop up screen. - -4. Move .py file from your downloads folder to your `ComfyUI` directory. - -5. Now you can execute the newly created .py file to generate images without launching a server. - -## CLI Usage -1. Navigate to the `ComfyUI-to-Python-Extension` folder and install requirements - ```bash - pip install -r requirements.txt - ``` - -2. Launch ComfyUI, click the gear icon over `Queue Prompt`, then check `Enable Dev mode Options`. **THE SCRIPT WILL NOT WORK IF YOU DO NOT ENABLE THIS OPTION!** - -![Enable Dev Mode Options](images/dev_mode_options.jpg) - -3. Load up your favorite workflows, then click the newly enabled `Save (API Format)` button under Queue Prompt - -4. Move the downloaded .json workflow file to your `ComfyUI/ComfyUI-to-Python-Extension` folder - -5. If needed, add arguments when executing `comfyui_to_python.py` to update the default `input_file` and `output_file` to match your .json workflow file and desired .py file name. By default, the script will look for a file called `workflow_api.json`. You can also update the `queue_size` variable to your desired number of images that you want to generate in a single script execution. By default, the scripts will generate 10 images. Run `python comfyui_to_python.py --help` for more details. - -6a. Run the script with default arguments: - ```bash - python comfyui_to_python.py - ``` -6b. Run the script with optional arguments: - ```bash - python comfyui_to_python.py --input_file "workflow_api (2).json" --output_file my_workflow.py --queue_size 100 - ``` - -7. After running `comfyui_to_python.py`, a new .py file will be created in the current working directory. If you made no changes, look for `workflow_api.py`. - -8. Now you can execute the newly created .py file to generate images without launching a server. diff --git a/custom_nodes/ComfyUI-to-Python-Extension/__init__.py b/custom_nodes/ComfyUI-to-Python-Extension/__init__.py deleted file mode 100644 index 96e5e8f16afcda4b01ea05caacbc927b729b6386..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/__init__.py +++ /dev/null @@ -1,58 +0,0 @@ -import sys -import os - -from io import StringIO - -import traceback - -from aiohttp import web - -ext_dir = os.path.dirname(__file__) -sys.path.append(ext_dir) - -try: - import black -except ImportError: - print("Unable to import requirements for ComfyUI-SaveAsScript.") - print("Installing...") - - import importlib - - spec = importlib.util.spec_from_file_location( - "impact_install", os.path.join(os.path.dirname(__file__), "install.py") - ) - impact_install = importlib.util.module_from_spec(spec) - spec.loader.exec_module(impact_install) - - print("Successfully installed. Hopefully, at least.") - -# Prevent reimporting of custom nodes -os.environ["RUNNING_IN_COMFYUI"] = "TRUE" - -from comfyui_to_python import ComfyUItoPython - -sys.path.append(os.path.dirname(os.path.dirname(ext_dir))) - -import server - -WEB_DIRECTORY = "js" -NODE_CLASS_MAPPINGS = {} - - -@server.PromptServer.instance.routes.post("/saveasscript") -async def save_as_script(request): - try: - data = await request.json() - name = data["name"] - workflow = data["workflow"] - - sio = StringIO() - ComfyUItoPython(workflow=workflow, output_file=sio) - - sio.seek(0) - data = sio.read() - - return web.Response(text=data, status=200) - except Exception as e: - traceback.print_exc() - return web.Response(text=str(e), status=500) diff --git a/custom_nodes/ComfyUI-to-Python-Extension/__pycache__/__init__.cpython-312.pyc b/custom_nodes/ComfyUI-to-Python-Extension/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index d5e6fc2448c938dbd7cc7cd8af704c43ae012242..0000000000000000000000000000000000000000 Binary files a/custom_nodes/ComfyUI-to-Python-Extension/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/ComfyUI-to-Python-Extension/__pycache__/comfyui_to_python.cpython-312.pyc b/custom_nodes/ComfyUI-to-Python-Extension/__pycache__/comfyui_to_python.cpython-312.pyc deleted file mode 100644 index af755abe20c092d52fa43863529b9179ec12e8ca..0000000000000000000000000000000000000000 Binary files a/custom_nodes/ComfyUI-to-Python-Extension/__pycache__/comfyui_to_python.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/ComfyUI-to-Python-Extension/__pycache__/comfyui_to_python_utils.cpython-312.pyc b/custom_nodes/ComfyUI-to-Python-Extension/__pycache__/comfyui_to_python_utils.cpython-312.pyc deleted file mode 100644 index 63d7abbc1ce0b2ccd147a14fc347f2f8df1b9290..0000000000000000000000000000000000000000 Binary files a/custom_nodes/ComfyUI-to-Python-Extension/__pycache__/comfyui_to_python_utils.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/ComfyUI-to-Python-Extension/comfyui_to_python.py b/custom_nodes/ComfyUI-to-Python-Extension/comfyui_to_python.py deleted file mode 100644 index 99f8ad6aa21003bc247499218ebfa64c3b9f5401..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/comfyui_to_python.py +++ /dev/null @@ -1,641 +0,0 @@ -import copy -import glob -import inspect -import json -import os -import random -import sys -import re -from typing import Dict, List, Any, Callable, Tuple, TextIO -from argparse import ArgumentParser - -import black - - -from comfyui_to_python_utils import ( - import_custom_nodes, - find_path, - add_comfyui_directory_to_sys_path, - add_extra_model_paths, - get_value_at_index, -) - -add_comfyui_directory_to_sys_path() -from nodes import NODE_CLASS_MAPPINGS - - -DEFAULT_INPUT_FILE = "workflow_api.json" -DEFAULT_OUTPUT_FILE = "workflow_api.py" -DEFAULT_QUEUE_SIZE = 10 - - -class FileHandler: - """Handles reading and writing files. - - This class provides methods to read JSON data from an input file and write code to an output file. - """ - - @staticmethod - def read_json_file(file_path: str | TextIO, encoding: str = "utf-8") -> dict: - """ - Reads a JSON file and returns its contents as a dictionary. - - Args: - file_path (str): The path to the JSON file. - - Returns: - dict: The contents of the JSON file as a dictionary. - - Raises: - FileNotFoundError: If the file is not found, it lists all JSON files in the directory of the file path. - ValueError: If the file is not a valid JSON. - """ - - if hasattr(file_path, "read"): - return json.load(file_path) - with open(file_path, "r", encoding="utf-8") as file: - data = json.load(file) - return data - - @staticmethod - def write_code_to_file(file_path: str | TextIO, code: str) -> None: - """Write the specified code to a Python file. - - Args: - file_path (str): The path to the Python file. - code (str): The code to write to the file. - - Returns: - None - """ - if isinstance(file_path, str): - # Extract directory from the filename - directory = os.path.dirname(file_path) - - # If the directory does not exist, create it - if directory and not os.path.exists(directory): - os.makedirs(directory) - - # Save the code to a .py file - with open(file_path, "w", encoding="utf-8") as file: - file.write(code) - else: - file_path.write(code) - - -class LoadOrderDeterminer: - """Determine the load order of each key in the provided dictionary. - - This class places the nodes without node dependencies first, then ensures that any node whose - result is used in another node will be added to the list in the order it should be executed. - - Attributes: - data (Dict): The dictionary for which to determine the load order. - node_class_mappings (Dict): Mappings of node classes. - """ - - def __init__(self, data: Dict, node_class_mappings: Dict): - """Initialize the LoadOrderDeterminer with the given data and node class mappings. - - Args: - data (Dict): The dictionary for which to determine the load order. - node_class_mappings (Dict): Mappings of node classes. - """ - self.data = data - self.node_class_mappings = node_class_mappings - self.visited = {} - self.load_order = [] - self.is_special_function = False - - def determine_load_order(self) -> List[Tuple[str, Dict, bool]]: - """Determine the load order for the given data. - - Returns: - List[Tuple[str, Dict, bool]]: A list of tuples representing the load order. - """ - self._load_special_functions_first() - self.is_special_function = False - for key in self.data: - if key not in self.visited: - self._dfs(key) - return self.load_order - - def _dfs(self, key: str) -> None: - """Depth-First Search function to determine the load order. - - Args: - key (str): The key from which to start the DFS. - - Returns: - None - """ - # Mark the node as visited. - self.visited[key] = True - inputs = self.data[key]["inputs"] - # Loop over each input key. - for input_key, val in inputs.items(): - # If the value is a list and the first item in the list has not been visited yet, - # then recursively apply DFS on the dependency. - if isinstance(val, list) and val[0] not in self.visited: - self._dfs(val[0]) - # Add the key and its corresponding data to the load order list. - self.load_order.append((key, self.data[key], self.is_special_function)) - - def _load_special_functions_first(self) -> None: - """Load functions without dependencies, loaderes, and encoders first. - - Returns: - None - """ - # Iterate over each key in the data to check for loader keys. - for key in self.data: - class_def = self.node_class_mappings[self.data[key]["class_type"]]() - # Check if the class is a loader class or meets specific conditions. - if ( - class_def.CATEGORY == "loaders" - or class_def.FUNCTION in ["encode"] - or not any( - isinstance(val, list) for val in self.data[key]["inputs"].values() - ) - ): - self.is_special_function = True - # If the key has not been visited, perform a DFS from that key. - if key not in self.visited: - self._dfs(key) - - -class CodeGenerator: - """Generates Python code for a workflow based on the load order. - - Attributes: - node_class_mappings (Dict): Mappings of node classes. - base_node_class_mappings (Dict): Base mappings of node classes. - """ - - def __init__(self, node_class_mappings: Dict, base_node_class_mappings: Dict): - """Initialize the CodeGenerator with given node class mappings. - - Args: - node_class_mappings (Dict): Mappings of node classes. - base_node_class_mappings (Dict): Base mappings of node classes. - """ - self.node_class_mappings = node_class_mappings - self.base_node_class_mappings = base_node_class_mappings - - def generate_workflow( - self, - load_order: List, - queue_size: int = 10, - ) -> str: - """Generate the execution code based on the load order. - - Args: - load_order (List): A list of tuples representing the load order. - queue_size (int): The number of photos that will be created by the script. - - Returns: - str: Generated execution code as a string. - """ - # Create the necessary data structures to hold imports and generated code - import_statements, executed_variables, special_functions_code, code = ( - set(["NODE_CLASS_MAPPINGS"]), - {}, - [], - [], - ) - # This dictionary will store the names of the objects that we have already initialized - initialized_objects = {} - - custom_nodes = False - # Loop over each dictionary in the load order list - for idx, data, is_special_function in load_order: - # Generate class definition and inputs from the data - inputs, class_type = data["inputs"], data["class_type"] - input_types = self.node_class_mappings[class_type].INPUT_TYPES() - class_def = self.node_class_mappings[class_type]() - - # If required inputs are not present, skip the node as it will break the code if passed through to the script - missing_required_variable = False - if "required" in input_types.keys(): - for required in input_types["required"]: - if required not in inputs.keys(): - missing_required_variable = True - if missing_required_variable: - continue - - # If the class hasn't been initialized yet, initialize it and generate the import statements - if class_type not in initialized_objects: - # No need to use preview image nodes since we are executing the script in a terminal - if class_type == "PreviewImage": - continue - - class_type, import_statement, class_code = self.get_class_info( - class_type - ) - initialized_objects[class_type] = self.clean_variable_name(class_type) - if class_type in self.base_node_class_mappings.keys(): - import_statements.add(import_statement) - if class_type not in self.base_node_class_mappings.keys(): - custom_nodes = True - special_functions_code.append(class_code) - - # Get all possible parameters for class_def - class_def_params = self.get_function_parameters( - getattr(class_def, class_def.FUNCTION) - ) - no_params = class_def_params is None - - # Remove any keyword arguments from **inputs if they are not in class_def_params - inputs = { - key: value - for key, value in inputs.items() - if no_params or key in class_def_params - } - # Deal with hidden variables - if ( - "hidden" in input_types.keys() - and "unique_id" in input_types["hidden"].keys() - ): - inputs["unique_id"] = random.randint(1, 2**64) - elif class_def_params is not None: - if "unique_id" in class_def_params: - inputs["unique_id"] = random.randint(1, 2**64) - - # Create executed variable and generate code - executed_variables[idx] = f"{self.clean_variable_name(class_type)}_{idx}" - inputs = self.update_inputs(inputs, executed_variables) - - if is_special_function: - special_functions_code.append( - self.create_function_call_code( - initialized_objects[class_type], - class_def.FUNCTION, - executed_variables[idx], - is_special_function, - **inputs, - ) - ) - else: - code.append( - self.create_function_call_code( - initialized_objects[class_type], - class_def.FUNCTION, - executed_variables[idx], - is_special_function, - **inputs, - ) - ) - - # Generate final code by combining imports and code, and wrap them in a main function - final_code = self.assemble_python_code( - import_statements, special_functions_code, code, queue_size, custom_nodes - ) - - return final_code - - def create_function_call_code( - self, - obj_name: str, - func: str, - variable_name: str, - is_special_function: bool, - **kwargs, - ) -> str: - """Generate Python code for a function call. - - Args: - obj_name (str): The name of the initialized object. - func (str): The function to be called. - variable_name (str): The name of the variable that the function result should be assigned to. - is_special_function (bool): Determines the code indentation. - **kwargs: The keyword arguments for the function. - - Returns: - str: The generated Python code. - """ - args = ", ".join(self.format_arg(key, value) for key, value in kwargs.items()) - - # Generate the Python code - code = f"{variable_name} = {obj_name}.{func}({args})\n" - - # If the code contains dependencies and is not a loader or encoder, indent the code because it will be placed inside - # of a for loop - if not is_special_function: - code = f"\t{code}" - - return code - - def format_arg(self, key: str, value: any) -> str: - """Formats arguments based on key and value. - - Args: - key (str): Argument key. - value (any): Argument value. - - Returns: - str: Formatted argument as a string. - """ - if key == "noise_seed" or key == "seed": - return f"{key}=random.randint(1, 2**64)" - elif isinstance(value, str): - value = value.replace("\n", "\\n").replace('"', "'") - return f'{key}="{value}"' - elif isinstance(value, dict) and "variable_name" in value: - return f'{key}={value["variable_name"]}' - return f"{key}={value}" - - def assemble_python_code( - self, - import_statements: set, - speical_functions_code: List[str], - code: List[str], - queue_size: int, - custom_nodes=False, - ) -> str: - """Generates the final code string. - - Args: - import_statements (set): A set of unique import statements. - speical_functions_code (List[str]): A list of special functions code strings. - code (List[str]): A list of code strings. - queue_size (int): Number of photos that will be generated by the script. - custom_nodes (bool): Whether to include custom nodes in the code. - - Returns: - str: Generated final code as a string. - """ - # Get the source code of the utils functions as a string - func_strings = [] - for func in [ - get_value_at_index, - find_path, - add_comfyui_directory_to_sys_path, - add_extra_model_paths, - ]: - func_strings.append(f"\n{inspect.getsource(func)}") - # Define static import statements required for the script - static_imports = ( - [ - "import os", - "import random", - "import sys", - "from typing import Sequence, Mapping, Any, Union", - "import torch", - ] - + func_strings - + ["\n\nadd_comfyui_directory_to_sys_path()\nadd_extra_model_paths()\n"] - ) - # Check if custom nodes should be included - if custom_nodes: - static_imports.append(f"\n{inspect.getsource(import_custom_nodes)}\n") - custom_nodes = "import_custom_nodes()\n\t" - else: - custom_nodes = "" - # Create import statements for node classes - imports_code = [ - f"from nodes import {', '.join([class_name for class_name in import_statements])}" - ] - # Assemble the main function code, including custom nodes if applicable - main_function_code = ( - "def main():\n\t" - + f"{custom_nodes}with torch.inference_mode():\n\t\t" - + "\n\t\t".join(speical_functions_code) - + f"\n\n\t\tfor q in range({queue_size}):\n\t\t" - + "\n\t\t".join(code) - ) - # Concatenate all parts to form the final code - final_code = "\n".join( - static_imports - + imports_code - + ["", main_function_code, "", 'if __name__ == "__main__":', "\tmain()"] - ) - # Format the final code according to PEP 8 using the Black library - final_code = black.format_str(final_code, mode=black.Mode()) - - return final_code - - def get_class_info(self, class_type: str) -> Tuple[str, str, str]: - """Generates and returns necessary information about class type. - - Args: - class_type (str): Class type. - - Returns: - Tuple[str, str, str]: Updated class type, import statement string, class initialization code. - """ - import_statement = class_type - variable_name = self.clean_variable_name(class_type) - if class_type in self.base_node_class_mappings.keys(): - class_code = f"{variable_name} = {class_type.strip()}()" - else: - class_code = f'{variable_name} = NODE_CLASS_MAPPINGS["{class_type}"]()' - - return class_type, import_statement, class_code - - @staticmethod - def clean_variable_name(class_type: str) -> str: - """ - Remove any characters from variable name that could cause errors running the Python script. - - Args: - class_type (str): Class type. - - Returns: - str: Cleaned variable name with no special characters or spaces - """ - # Convert to lowercase and replace spaces with underscores - clean_name = class_type.lower().strip().replace("-", "_").replace(" ", "_") - - # Remove characters that are not letters, numbers, or underscores - clean_name = re.sub(r"[^a-z0-9_]", "", clean_name) - - # Ensure that it doesn't start with a number - if clean_name[0].isdigit(): - clean_name = "_" + clean_name - - return clean_name - - def get_function_parameters(self, func: Callable) -> List: - """Get the names of a function's parameters. - - Args: - func (Callable): The function whose parameters we want to inspect. - - Returns: - List: A list containing the names of the function's parameters. - """ - signature = inspect.signature(func) - parameters = { - name: param.default if param.default != param.empty else None - for name, param in signature.parameters.items() - } - catch_all = any( - param.kind == inspect.Parameter.VAR_KEYWORD - for param in signature.parameters.values() - ) - return list(parameters.keys()) if not catch_all else None - - def update_inputs(self, inputs: Dict, executed_variables: Dict) -> Dict: - """Update inputs based on the executed variables. - - Args: - inputs (Dict): Inputs dictionary to update. - executed_variables (Dict): Dictionary storing executed variable names. - - Returns: - Dict: Updated inputs dictionary. - """ - for key in inputs.keys(): - if ( - isinstance(inputs[key], list) - and inputs[key][0] in executed_variables.keys() - ): - inputs[key] = { - "variable_name": f"get_value_at_index({executed_variables[inputs[key][0]]}, {inputs[key][1]})" - } - return inputs - - -class ComfyUItoPython: - """Main workflow to generate Python code from a workflow_api.json file. - - Attributes: - input_file (str): Path to the input JSON file. - output_file (str): Path to the output Python file. - queue_size (int): The number of photos that will be created by the script. - node_class_mappings (Dict): Mappings of node classes. - base_node_class_mappings (Dict): Base mappings of node classes. - """ - - def __init__( - self, - workflow: str = "", - input_file: str = "", - output_file: str | TextIO = "", - queue_size: int = 1, - node_class_mappings: Dict = NODE_CLASS_MAPPINGS, - needs_init_custom_nodes: bool = False, - ): - """Initialize the ComfyUItoPython class with the given parameters. Exactly one of workflow or input_file must be specified. - Args: - workflow (str): The workflow's JSON. - input_file (str): Path to the input JSON file. - output_file (str | TextIO): Path to the output file or a file-like object. - queue_size (int): The number of times a workflow will be executed by the script. Defaults to 1. - node_class_mappings (Dict): Mappings of node classes. Defaults to NODE_CLASS_MAPPINGS. - needs_init_custom_nodes (bool): Whether to initialize custom nodes. Defaults to False. - """ - if input_file and workflow: - raise ValueError("Can't provide both input_file and workflow") - elif not input_file and not workflow: - raise ValueError("Needs input_file or workflow") - - if not output_file: - raise ValueError("Needs output_file") - - self.workflow = workflow - self.input_file = input_file - self.output_file = output_file - self.queue_size = queue_size - self.node_class_mappings = node_class_mappings - self.needs_init_custom_nodes = needs_init_custom_nodes - - self.base_node_class_mappings = copy.deepcopy(self.node_class_mappings) - self.execute() - - def execute(self): - """Execute the main workflow to generate Python code. - - Returns: - None - """ - # Step 1: Import all custom nodes if we need to - if self.needs_init_custom_nodes: - import_custom_nodes() - else: - # If they're already imported, we don't know which nodes are custom nodes, so we need to import all of them - self.base_node_class_mappings = {} - - # Step 2: Read JSON data from the input file - if self.input_file: - data = FileHandler.read_json_file(self.input_file) - else: - data = json.loads(self.workflow) - - # Step 3: Determine the load order - load_order_determiner = LoadOrderDeterminer(data, self.node_class_mappings) - load_order = load_order_determiner.determine_load_order() - - # Step 4: Generate the workflow code - code_generator = CodeGenerator( - self.node_class_mappings, self.base_node_class_mappings - ) - generated_code = code_generator.generate_workflow( - load_order, queue_size=self.queue_size - ) - - # Step 5: Write the generated code to a file - FileHandler.write_code_to_file(self.output_file, generated_code) - - print(f"Code successfully generated and written to {self.output_file}") - - -def run( - input_file: str = DEFAULT_INPUT_FILE, - output_file: str = DEFAULT_OUTPUT_FILE, - queue_size: int = DEFAULT_QUEUE_SIZE, -) -> None: - """Generate Python code from a ComfyUI workflow_api.json file. - - Args: - input_file (str): Path to the input JSON file. Defaults to "workflow_api.json". - output_file (str): Path to the output Python file. - Defaults to "workflow_api.py". - queue_size (int): The number of times a workflow will be executed by the script. - Defaults to 1. - - Returns: - None - """ - ComfyUItoPython( - input_file=input_file, - output_file=output_file, - queue_size=queue_size, - needs_init_custom_nodes=True, - ) - - -def main() -> None: - """Main function to generate Python code from a ComfyUI workflow_api.json file.""" - parser = ArgumentParser( - description="Generate Python code from a ComfyUI workflow_api.json file." - ) - parser.add_argument( - "-f", - "--input_file", - type=str, - help="path to the input JSON file", - default=DEFAULT_INPUT_FILE, - ) - parser.add_argument( - "-o", - "--output_file", - type=str, - help="path to the output Python file", - default=DEFAULT_OUTPUT_FILE, - ) - parser.add_argument( - "-q", - "--queue_size", - type=int, - help="number of times the workflow will be executed by default", - default=DEFAULT_QUEUE_SIZE, - ) - pargs = parser.parse_args() - run(**vars(pargs)) - print("Done.") - - -if __name__ == "__main__": - """Run the main function.""" - main() diff --git a/custom_nodes/ComfyUI-to-Python-Extension/comfyui_to_python_utils.py b/custom_nodes/ComfyUI-to-Python-Extension/comfyui_to_python_utils.py deleted file mode 100644 index 5d9953bc201b6bf0696959016d6e254e2961f5b1..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/comfyui_to_python_utils.py +++ /dev/null @@ -1,106 +0,0 @@ -import os -from typing import Sequence, Mapping, Any, Union -import sys - - -def import_custom_nodes() -> None: - """Find all custom nodes in the custom_nodes folder and add those node objects to NODE_CLASS_MAPPINGS - - This function sets up a new asyncio event loop, initializes the PromptServer, - creates a PromptQueue, and initializes the custom nodes. - """ - import asyncio - import execution - from nodes import init_extra_nodes - import server - - # Creating a new event loop and setting it as the default loop - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - - # Creating an instance of PromptServer with the loop - server_instance = server.PromptServer(loop) - execution.PromptQueue(server_instance) - - # Initializing custom nodes - init_extra_nodes() - - -def find_path(name: str, path: str = None) -> str: - """ - Recursively looks at parent folders starting from the given path until it finds the given name. - Returns the path as a Path object if found, or None otherwise. - """ - # If no path is given, use the current working directory - if path is None: - path = os.getcwd() - - # Check if the current directory contains the name - if name in os.listdir(path): - path_name = os.path.join(path, name) - print(f"{name} found: {path_name}") - return path_name - - # Get the parent directory - parent_directory = os.path.dirname(path) - - # If the parent directory is the same as the current directory, we've reached the root and stop the search - if parent_directory == path: - return None - - # Recursively call the function with the parent directory - return find_path(name, parent_directory) - - -def add_comfyui_directory_to_sys_path() -> None: - """ - Add 'ComfyUI' to the sys.path - """ - comfyui_path = find_path("ComfyUI") - if comfyui_path is not None and os.path.isdir(comfyui_path): - sys.path.append(comfyui_path) - print(f"'{comfyui_path}' added to sys.path") - - -def add_extra_model_paths() -> None: - """ - Parse the optional extra_model_paths.yaml file and add the parsed paths to the sys.path. - """ - try: - from main import load_extra_path_config - except ImportError: - print( - "Could not import load_extra_path_config from main.py. Looking in utils.extra_config instead." - ) - from utils.extra_config import load_extra_path_config - - extra_model_paths = find_path("extra_model_paths.yaml") - - if extra_model_paths is not None: - load_extra_path_config(extra_model_paths) - else: - print("Could not find the extra_model_paths config file.") - - -def get_value_at_index(obj: Union[Sequence, Mapping], index: int) -> Any: - """Returns the value at the given index of a sequence or mapping. - - If the object is a sequence (like list or string), returns the value at the given index. - If the object is a mapping (like a dictionary), returns the value at the index-th key. - - Some return a dictionary, in these cases, we look for the "results" key - - Args: - obj (Union[Sequence, Mapping]): The object to retrieve the value from. - index (int): The index of the value to retrieve. - - Returns: - Any: The value at the given index. - - Raises: - IndexError: If the index is out of bounds for the object and the object is not a mapping. - """ - try: - return obj[index] - except KeyError: - return obj["result"][index] diff --git a/custom_nodes/ComfyUI-to-Python-Extension/images/SDXL-UI-Example.PNG b/custom_nodes/ComfyUI-to-Python-Extension/images/SDXL-UI-Example.PNG deleted file mode 100644 index 6e158d29f33215130b767c0a784c78a0e03f317e..0000000000000000000000000000000000000000 Binary files a/custom_nodes/ComfyUI-to-Python-Extension/images/SDXL-UI-Example.PNG and /dev/null differ diff --git a/custom_nodes/ComfyUI-to-Python-Extension/images/SDXL-UI-Example.jpg b/custom_nodes/ComfyUI-to-Python-Extension/images/SDXL-UI-Example.jpg deleted file mode 100644 index ac05aeb320461848574d5935423527342caa62ae..0000000000000000000000000000000000000000 Binary files a/custom_nodes/ComfyUI-to-Python-Extension/images/SDXL-UI-Example.jpg and /dev/null differ diff --git a/custom_nodes/ComfyUI-to-Python-Extension/images/comfyui_to_python_banner.png b/custom_nodes/ComfyUI-to-Python-Extension/images/comfyui_to_python_banner.png deleted file mode 100644 index 247e882d16f95b0612b1e7f9881d4efad44a1e8b..0000000000000000000000000000000000000000 Binary files a/custom_nodes/ComfyUI-to-Python-Extension/images/comfyui_to_python_banner.png and /dev/null differ diff --git a/custom_nodes/ComfyUI-to-Python-Extension/images/dev_mode_options.PNG b/custom_nodes/ComfyUI-to-Python-Extension/images/dev_mode_options.PNG deleted file mode 100644 index 7b14015d29e549cf90ae65e92c9fa97d72dd6d99..0000000000000000000000000000000000000000 Binary files a/custom_nodes/ComfyUI-to-Python-Extension/images/dev_mode_options.PNG and /dev/null differ diff --git a/custom_nodes/ComfyUI-to-Python-Extension/images/dev_mode_options.jpg b/custom_nodes/ComfyUI-to-Python-Extension/images/dev_mode_options.jpg deleted file mode 100644 index a33de6c750d2b992ec593a63cadea7413a71861c..0000000000000000000000000000000000000000 Binary files a/custom_nodes/ComfyUI-to-Python-Extension/images/dev_mode_options.jpg and /dev/null differ diff --git a/custom_nodes/ComfyUI-to-Python-Extension/images/save_as_script.png b/custom_nodes/ComfyUI-to-Python-Extension/images/save_as_script.png deleted file mode 100644 index 3b8dc75a8ddaf6688683ff3fd831004c0d90c432..0000000000000000000000000000000000000000 Binary files a/custom_nodes/ComfyUI-to-Python-Extension/images/save_as_script.png and /dev/null differ diff --git a/custom_nodes/ComfyUI-to-Python-Extension/install.py b/custom_nodes/ComfyUI-to-Python-Extension/install.py deleted file mode 100644 index 6455cb0365e5664de27a892a7dbaaec41780a3ed..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/install.py +++ /dev/null @@ -1,20 +0,0 @@ -import os -import sys - -from subprocess import Popen, check_output, PIPE - -requirements = open(os.path.join(os.path.dirname(__file__), "requirements.txt")).read().split("\n") - -installed_packages = check_output( - [sys.executable, "-m", "pip", "list"], - universal_newlines=True -).split("\n") - -installed_packages = set([package.split(" ")[0].lower() for package in installed_packages if package.strip()]) - -for requirement in requirements: - if requirement.lower() not in installed_packages: - print(f"Installing requirements...") - Popen([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"], stdout=PIPE, stderr=PIPE, cwd=os.path.dirname(__file__)).communicate() - print(f"Installed.") - break diff --git a/custom_nodes/ComfyUI-to-Python-Extension/js/save-as-script.js b/custom_nodes/ComfyUI-to-Python-Extension/js/save-as-script.js deleted file mode 100644 index 666d30839c3003da19065eade957d8c5b7eb600e..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/js/save-as-script.js +++ /dev/null @@ -1,111 +0,0 @@ -import { app } from "../../scripts/app.js"; -import { api } from "../../scripts/api.js"; -import { $el } from "../../scripts/ui.js"; - -app.registerExtension({ - name: "Comfy.SaveAsScript", - init() { - $el("style", { - parent: document.head, - }); - }, - async setup() { - function savePythonScript() { - var filename = prompt("Save script as:"); - if(filename === undefined || filename === null || filename === "") { - return - } - - app.graphToPrompt().then(async (p) => { - const json = JSON.stringify({name: filename + ".json", workflow: JSON.stringify(p.output, null, 2)}, null, 2); // convert the data to a JSON string - var response = await api.fetchApi(`/saveasscript`, { method: "POST", body: json }); - if(response.status == 200) { - const blob = new Blob([await response.text()], {type: "text/python;charset=utf-8"}); - const url = URL.createObjectURL(blob); - if(!filename.endsWith(".py")) { - filename += ".py"; - } - - const a = $el("a", { - href: url, - download: filename, - style: {display: "none"}, - parent: document.body, - }); - a.click(); - setTimeout(function () { - a.remove(); - window.URL.revokeObjectURL(url); - }, 0); - } - }); - } - - const menu = document.querySelector(".comfy-menu"); - const separator = document.createElement("hr"); - - separator.style.margin = "20px 0"; - separator.style.width = "100%"; - menu.append(separator); - - const saveButton = document.createElement("button"); - saveButton.textContent = "Save as Script"; - saveButton.onclick = () => savePythonScript(); - menu.append(saveButton); - - - // Also load to new style menu - const dropdownMenu = document.querySelectorAll(".p-menubar-submenu ")[0]; - // Get submenu items - const listItems = dropdownMenu.querySelectorAll("li"); - let newSetsize = listItems.length; - - const separatorMenu = document.createElement("li"); - separatorMenu.setAttribute("id", "pv_id_8_0_" + (newSetsize - 1).toString()); - separatorMenu.setAttribute("class", "p-menubar-separator"); - separatorMenu.setAttribute("role", "separator"); - separatorMenu.setAttribute("data-pc-section", "separator"); - - dropdownMenu.append(separatorMenu); - - // Adjust list items within to increase setsize - listItems.forEach((item) => { - // First check if it's a separator - if(item.getAttribute("data-pc-section") !== "separator") { - item.setAttribute("aria-setsize", newSetsize); - } - }); - - console.log(newSetsize); - - // Here's the format of list items - const saveButtonText = document.createElement("li"); - saveButtonText.setAttribute("id", "pv_id_8_0_" + newSetsize.toString()); - saveButtonText.setAttribute("class", "p-menubar-item relative"); - saveButtonText.setAttribute("role", "menuitem"); - saveButtonText.setAttribute("aria-label", "Save as Script"); - saveButtonText.setAttribute("aria-level", "2"); - saveButtonText.setAttribute("aria-setsize", newSetsize.toString()); - saveButtonText.setAttribute("aria-posinset", newSetsize.toString()); - saveButtonText.setAttribute("data-pc-section", "item"); - saveButtonText.setAttribute("data-p-active", "false"); - saveButtonText.setAttribute("data-p-focused", "false"); - - saveButtonText.innerHTML = ` -
- -
- ` - - saveButtonText.onclick = () => savePythonScript(); - - dropdownMenu.append(saveButtonText); - - - - console.log("SaveAsScript loaded"); - } -}); diff --git a/custom_nodes/ComfyUI-to-Python-Extension/pyproject.toml b/custom_nodes/ComfyUI-to-Python-Extension/pyproject.toml deleted file mode 100644 index 08660138390db3dccc57dd8d38f2288fda583814..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/pyproject.toml +++ /dev/null @@ -1,15 +0,0 @@ -[project] -name = "comfyui-to-python-extension" -description = "This custom node allows you to generate pure python code from your ComfyUI workflow with the click of a button. Great for rapid experimentation or production deployment." -version = "1.3.0" -license = "LICENSE" -dependencies = ["black"] - -[project.urls] -Repository = "https://github.com/pydn/ComfyUI-to-Python-Extension" -# Used by Comfy Registry https://comfyregistry.org - -[tool.comfy] -PublisherId = "pydn" -DisplayName = "ComfyUI-to-Python-Extension" -Icon = "" diff --git a/custom_nodes/ComfyUI-to-Python-Extension/requirements.txt b/custom_nodes/ComfyUI-to-Python-Extension/requirements.txt deleted file mode 100644 index b3ca90996f43470a3c2e4fb802ca8c41ce6583d7..0000000000000000000000000000000000000000 --- a/custom_nodes/ComfyUI-to-Python-Extension/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -black \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/.cache/.cache_directory b/custom_nodes/comfyui-manager/.cache/.cache_directory deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/custom_nodes/comfyui-manager/.github/workflows/publish.yml b/custom_nodes/comfyui-manager/.github/workflows/publish.yml deleted file mode 100644 index 9ad5310768d86d5bbef527083105b1f52cb000a0..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/.github/workflows/publish.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Publish to Comfy registry -on: - workflow_dispatch: - push: - branches: - - main-blocked - paths: - - "pyproject.toml" - -jobs: - publish-node: - name: Publish Custom Node to registry - runs-on: ubuntu-latest - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Publish Custom Node - uses: Comfy-Org/publish-node-action@main - with: - ## Add your own personal access token to your Github Repository secrets and reference it here. - personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/.github/workflows/ruff.yml b/custom_nodes/comfyui-manager/.github/workflows/ruff.yml deleted file mode 100644 index 0ee5fa475b68bd02085634d3babf4e0008bf7a56..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/.github/workflows/ruff.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Python Linting - -on: [push, pull_request] - -jobs: - ruff: - name: Run Ruff - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: 3.x - - - name: Install Ruff - run: pip install ruff - - - name: Run Ruff - run: ruff check . diff --git a/custom_nodes/comfyui-manager/.gitignore b/custom_nodes/comfyui-manager/.gitignore deleted file mode 100644 index 41b82aa8315f302067acc3d9e760b8b3795f734a..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -__pycache__/ -.idea/ -.vscode/ -.history/ -*.code-workspace -.tmp -.cache -config.ini -snapshots/** -startup-scripts/** -.openart_key -.youml -matrix_auth -channels.list -comfyworkflows_sharekey -github-stats-cache.json -pip_overrides.json -*.json -check2.sh -/venv/ \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/LICENSE.txt b/custom_nodes/comfyui-manager/LICENSE.txt deleted file mode 100644 index 3877ae0a7ff6f94ac222fd704e112723db776114..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/LICENSE.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/custom_nodes/comfyui-manager/README.md b/custom_nodes/comfyui-manager/README.md deleted file mode 100644 index 454996167d6a06dbff4b5c6f4a27925cbe0670f3..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/README.md +++ /dev/null @@ -1,340 +0,0 @@ -# ComfyUI Manager - -**ComfyUI-Manager** is an extension designed to enhance the usability of [ComfyUI](https://github.com/comfyanonymous/ComfyUI). It offers management functions to **install, remove, disable, and enable** various custom nodes of ComfyUI. Furthermore, this extension provides a hub feature and convenience functions to access a wide range of information within ComfyUI. - -![menu](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/dialog.jpg) - -## NOTICE -* V3.3.2: Overhauled. Officially supports [https://comfyregistry.org/](https://comfyregistry.org/). -* You can see whole nodes info on [ComfyUI Nodes Info](https://ltdrdata.github.io/) page. - -## Installation - -### Installation[method1] (General installation method: ComfyUI-Manager only) - -To install ComfyUI-Manager in addition to an existing installation of ComfyUI, you can follow the following steps: - -1. goto `ComfyUI/custom_nodes` dir in terminal(cmd) -2. `git clone https://github.com/ltdrdata/ComfyUI-Manager comfyui-manager` -3. Restart ComfyUI - - -### Installation[method2] (Installation for portable ComfyUI version: ComfyUI-Manager only) -1. install git -- https://git-scm.com/download/win -- standalone version -- select option: use windows default console window -2. Download [scripts/install-manager-for-portable-version.bat](https://github.com/ltdrdata/ComfyUI-Manager/raw/main/scripts/install-manager-for-portable-version.bat) into installed `"ComfyUI_windows_portable"` directory -- Don't click. Right click the link and use save as... -3. double click `install-manager-for-portable-version.bat` batch file - -![portable-install](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/portable-install.jpg) - - -### Installation[method3] (Installation through comfy-cli: install ComfyUI and ComfyUI-Manager at once.) -> RECOMMENDED: comfy-cli provides various features to manage ComfyUI from the CLI. - -* **prerequisite: python 3, git** - -Windows: -```commandline -python -m venv venv -venv\Scripts\activate -pip install comfy-cli -comfy install -``` - -Linux/OSX: -```commandline -python -m venv venv -. venv/bin/activate -pip install comfy-cli -comfy install -``` -* See also: https://github.com/Comfy-Org/comfy-cli - - -### Installation[method4] (Installation for linux+venv: ComfyUI + ComfyUI-Manager) - -To install ComfyUI with ComfyUI-Manager on Linux using a venv environment, you can follow these steps: -* **prerequisite: python-is-python3, python3-venv, git** - -1. Download [scripts/install-comfyui-venv-linux.sh](https://github.com/ltdrdata/ComfyUI-Manager/raw/main/scripts/install-comfyui-venv-linux.sh) into empty install directory -- Don't click. Right click the link and use save as... -- ComfyUI will be installed in the subdirectory of the specified directory, and the directory will contain the generated executable script. -2. `chmod +x install-comfyui-venv-linux.sh` -3. `./install-comfyui-venv-linux.sh` - -### Installation Precautions -* **DO**: `ComfyUI-Manager` files must be accurately located in the path `ComfyUI/custom_nodes/comfyui-manager` - * Installing in a compressed file format is not recommended. -* **DON'T**: Decompress directly into the `ComfyUI/custom_nodes` location, resulting in the Manager contents like `__init__.py` being placed directly in that directory. - * You have to remove all ComfyUI-Manager files from `ComfyUI/custom_nodes` -* **DON'T**: In a form where decompression occurs in a path such as `ComfyUI/custom_nodes/ComfyUI-Manager/ComfyUI-Manager`. -* **DON'T**: In a form where decompression occurs in a path such as `ComfyUI/custom_nodes/ComfyUI-Manager-main`. - * In such cases, `ComfyUI-Manager` may operate, but it won't be recognized within `ComfyUI-Manager`, and updates cannot be performed. It also poses the risk of duplicate installations. Remove it and install properly via `git clone` method. - - -You can execute ComfyUI by running either `./run_gpu.sh` or `./run_cpu.sh` depending on your system configuration. - -## Colab Notebook -This repository provides Colab notebooks that allow you to install and use ComfyUI, including ComfyUI-Manager. To use ComfyUI, [click on this link](https://colab.research.google.com/github/ltdrdata/ComfyUI-Manager/blob/main/notebooks/comfyui_colab_with_manager.ipynb). -* Support for installing ComfyUI -* Support for basic installation of ComfyUI-Manager -* Support for automatically installing dependencies of custom nodes upon restarting Colab notebooks. - - -## How To Use - -1. Click "Manager" button on main menu - - ![mainmenu](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/topbar.jpg) - - -2. If you click on 'Install Custom Nodes' or 'Install Models', an installer dialog will open. - - ![menu](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/dialog.jpg) - - * There are three DB modes: `DB: Channel (1day cache)`, `DB: Local`, and `DB: Channel (remote)`. - * `Channel (1day cache)` utilizes Channel cache information with a validity period of one day to quickly display the list. - * This information will be updated when there is no cache, when the cache expires, or when external information is retrieved through the Channel (remote). - * Whenever you start ComfyUI anew, this mode is always set as the **default** mode. - * `Local` uses information stored locally in ComfyUI-Manager. - * This information will be updated only when you update ComfyUI-Manager. - * For custom node developers, they should use this mode when registering their nodes in `custom-node-list.json` and testing them. - * `Channel (remote)` retrieves information from the remote channel, always displaying the latest list. - * In cases where retrieval is not possible due to network errors, it will forcibly use local information. - - * The ```Fetch Updates``` menu retrieves update data for custom nodes locally. Actual updates are applied by clicking the ```Update``` button in the ```Install Custom Nodes``` menu. - -3. Click 'Install' or 'Try Install' button. - - ![node-install-dialog](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/custom-nodes.jpg) - - ![model-install-dialog](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/models.jpg) - - * Installed: This item is already installed. - * Install: Clicking this button will install the item. - * Try Install: This is a custom node of which installation information cannot be confirmed. Click the button to try installing it. - - * If a red background `Channel` indicator appears at the top, it means it is not the default channel. Since the amount of information held is different from the default channel, many custom nodes may not appear in this channel state. - * Channel settings have a broad impact, affecting not only the node list but also all functions like "Update all." - * Conflicted Nodes with a yellow background show a list of nodes conflicting with other extensions in the respective extension. This issue needs to be addressed by the developer, and users should be aware that due to these conflicts, some nodes may not function correctly and may need to be installed accordingly. - -4. Share - ![menu](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/topbar.jpg) ![share](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/share.jpg) - - * You can share the workflow by clicking the Share button at the bottom of the main menu or selecting Share Output from the Context Menu of the Image node. - * Currently, it supports sharing via [https://comfyworkflows.com/](https://comfyworkflows.com/), - [https://openart.ai](https://openart.ai/workflows/dev), [https://youml.com](https://youml.com) - as well as through the Matrix channel. - - ![menu](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/share-setting.jpg) - - * Through the Share settings in the Manager menu, you can configure the behavior of the Share button in the Main menu or Share Output button on Context Menu. - * `None`: hide from Main menu - * `All`: Show a dialog where the user can select a title for sharing. - - -## Paths -In `ComfyUI-Manager` V3.0 and later, configuration files and dynamically generated files are located under `/default/ComfyUI-Manager/`. - -* - * If executed without any options, the path defaults to ComfyUI/user. - * It can be set using --user-directory . - -* Basic config files: `/default/ComfyUI-Manager/config.ini` -* Configurable channel lists: `/default/ComfyUI-Manager/channels.ini` -* Configurable pip overrides: `/default/ComfyUI-Manager/pip_overrides.json` -* Saved snapshot files: `/default/ComfyUI-Manager/snapshots` -* Startup script files: `/default/ComfyUI-Manager/startup-scripts` -* Component files: `/default/ComfyUI-Manager/components` - - -## `extra_model_paths.yaml` Configuration -The following settings are applied based on the section marked as `is_default`. - -* `custom_nodes`: Path for installing custom nodes - * Importing does not need to adhere to the path set as `is_default`, but this is the path where custom nodes are installed by the `ComfyUI Nodes Manager`. -* `download_model_base`: Path for downloading models - - -## Snapshot-Manager -* When you press `Save snapshot` or use `Update All` on `Manager Menu`, the current installation status snapshot is saved. - * Snapshot file dir: `/default/ComfyUI-Manager/snapshots` - * You can rename snapshot file. -* Press the "Restore" button to revert to the installation status of the respective snapshot. - * However, for custom nodes not managed by Git, snapshot support is incomplete. -* When you press `Restore`, it will take effect on the next ComfyUI startup. - * The selected snapshot file is saved in `/default/ComfyUI-Manager/startup-scripts/restore-snapshot.json`, and upon restarting ComfyUI, the snapshot is applied and then deleted. - -![model-install-dialog](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/snapshot.jpg) - - -## cm-cli: command line tools for power user -* A tool is provided that allows you to use the features of ComfyUI-Manager without running ComfyUI. -* For more details, please refer to the [cm-cli documentation](docs/en/cm-cli.md). - - -## How to register your custom node into ComfyUI-Manager - -* Add an entry to `custom-node-list.json` located in the root of ComfyUI-Manager and submit a Pull Request. -* NOTE: Before submitting the PR after making changes, please check `Use local DB` and ensure that the extension list loads without any issues in the `Install custom nodes` dialog. Occasionally, missing or extra commas can lead to JSON syntax errors. -* The remaining JSON will be updated through scripts in the future, so you don't need to worry about it. - - -## Custom node support guide - -* https://docs.comfy.org/registry/overview - - -* **Special purpose files** (optional) - * `node_list.json` - When your custom nodes pattern of NODE_CLASS_MAPPINGS is not conventional, it is used to manually provide a list of nodes for reference. ([example](https://github.com/melMass/comfy_mtb/raw/main/node_list.json)) - * `requirements.txt` - When installing, this pip requirements will be installed automatically - * `install.py` - When installing, it is automatically called - * `uninstall.py` - When uninstalling, it is automatically called - * `disable.py` - When disabled, it is automatically called - * When installing a custom node setup `.js` file, it is recommended to write this script for disabling. - * `enable.py` - When enabled, it is automatically called - * **All scripts are executed from the root path of the corresponding custom node.** - - -## Component Sharing -* **Copy & Paste** - * [Demo Page](https://ltdrdata.github.io/component-demo/) - * When pasting a component from the clipboard, it supports text in the following JSON format. (text/plain) - ``` - { - "kind": "ComfyUI Components", - "timestamp": , - "components": - { - : - } - } - ``` - * `` Ensure that the timestamp is always unique. - * "components" should have the same structure as the content of the file stored in `/default/ComfyUI-Manager/components`. - * ``: The name should be in the format `::`. - * ``: In the nodedata of the group node. - * ``: Only two formats are allowed: `major.minor.patch` or `major.minor`. (e.g. `1.0`, `2.2.1`) - * ``: Saved time - * ``: If the packname is not empty, the category becomes packname/workflow, and it is saved in the .pack file in `/default/ComfyUI-Manager/components`. - * ``: If there is neither a category nor a packname, it is saved in the components category. - ``` - "version":"1.0", - "datetime": 1705390656516, - "packname": "mypack", - "category": "util/pipe", - ``` -* **Drag & Drop** - * Dragging and dropping a `.pack` or `.json` file will add the corresponding components. - * Example pack: [Impact.pack](misc/Impact.pack) - -* Dragging and dropping or pasting a single component will add a node. However, when adding multiple components, nodes will not be added. - - -## Support of missing nodes installation - -![missing-menu](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/missing-menu.jpg) - -* When you click on the ```Install Missing Custom Nodes``` button in the menu, it displays a list of extension nodes that contain nodes not currently present in the workflow. - -![missing-list](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/missing-list.jpg) - - -## Additional Feature -* Logging to file feature - * This feature is enabled by default and can be disabled by setting `file_logging = False` in the `config.ini`. - -* Fix node(recreate): When right-clicking on a node and selecting `Fix node (recreate)`, you can recreate the node. The widget's values are reset, while the connections maintain those with the same names. - * It is used to correct errors in nodes of old workflows created before, which are incompatible with the version changes of custom nodes. - -* Double-Click Node Title: You can set the double click behavior of nodes in the ComfyUI-Manager menu. - * `Copy All Connections`, `Copy Input Connections`: Double-clicking a node copies the connections of the nearest node. - * This action targets the nearest node within a straight-line distance of 1000 pixels from the center of the node. - * In the case of `Copy All Connections`, it duplicates existing outputs, but since it does not allow duplicate connections, the existing output connections of the original node are disconnected. - * This feature copies only the input and output that match the names. - - * `Possible Input Connections`: It connects all outputs that match the closest type within the specified range. - * This connection links to the closest outputs among the nodes located on the left side of the target node. - - * `Possible(left) + Copy(right)`: When you Double-Click on the left half of the title, it operates as `Possible Input Connections`, and when you Double-Click on the right half, it operates as `Copy All Connections`. - -* Prevent downgrade of specific packages - * List the package names in the `downgrade_blacklist` section of the `config.ini` file, separating them with commas. - * e.g - ``` - downgrade_blacklist = diffusers, kornia - ``` - -* Custom pip mapping - * When you create the `pip_overrides.json` file, it changes the installation of specific pip packages to installations defined by the user. - * Please refer to the `pip_overrides.json.template` file. - -* Use `aria2` as downloader - * [howto](docs/en/use_aria2.md) - -* If you add the item `skip_migration_check = True` to `config.ini`, it will not check whether there are nodes that can be migrated at startup. - * This option can be used if performance issues occur in a Colab+GDrive environment. - -## Scanner -When you run the `scan.sh` script: - -* It updates the `extension-node-map.json`. - * To do this, it pulls or clones the custom nodes listed in `custom-node-list.json` into `~/.tmp/default`. - * To skip this step, add the `--skip-update` option. - * If you want to specify a different path instead of `~/.tmp/default`, run `python scanner.py [path]` directly instead of `scan.sh`. - -* It updates the `github-stats.json`. - * This uses the GitHub API, so set your token with `export GITHUB_TOKEN=your_token_here` to avoid quickly reaching the rate limit and malfunctioning. - * To skip this step, add the `--skip-update-stat` option. - -* The `--skip-all` option applies both `--skip-update` and `--skip-stat-update`. - - -## Troubleshooting -* If your `git.exe` is installed in a specific location other than system git, please install ComfyUI-Manager and run ComfyUI. Then, specify the path including the file name in `git_exe = ` in the `/default/ComfyUI-Manager/config.ini` file that is generated. -* If updating ComfyUI-Manager itself fails, please go to the **ComfyUI-Manager** directory and execute the command `git update-ref refs/remotes/origin/main a361cc1 && git fetch --all && git pull`. -* If you encounter the error message `Overlapped Object has pending operation at deallocation on Comfyui Manager load` under Windows - * Edit `config.ini` file: add `windows_selector_event_loop_policy = True` -* if `SSL: CERTIFICATE_VERIFY_FAILED` error is occured. - * Edit `config.ini` file: add `bypass_ssl = True` - -## Security policy - * Edit `config.ini` file: add `security_level = ` - * `strong` - * doesn't allow `high` and `middle` level risky feature - * `normal` - * doesn't allow `high` level risky feature - * `middle` level risky feature is available - * `normal-` - * doesn't allow `high` level risky feature if `--listen` is specified and not starts with `127.` - * `middle` level risky feature is available - * `weak` - * all feature is available - - * `high` level risky features - * `Install via git url`, `pip install` - * Installation of custom nodes registered not in the `default channel`. - * Fix custom nodes - - * `middle` level risky features - * Uninstall/Update - * Installation of custom nodes registered in the `default channel`. - * Restore/Remove Snapshot - * Restart - - * `low` level risky features - * Update ComfyUI - - -# Disclaimer - -* This extension simply provides the convenience of installing custom nodes and does not guarantee their proper functioning. - - -## Credit -ComfyUI/[ComfyUI](https://github.com/comfyanonymous/ComfyUI) - A powerful and modular stable diffusion GUI. - -**And, for all ComfyUI custom node developers** diff --git a/custom_nodes/comfyui-manager/__init__.py b/custom_nodes/comfyui-manager/__init__.py deleted file mode 100644 index e3c43afbb994a77f65a97a977644891dcd0603d2..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -import os -import sys - -cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode') - -if not os.path.exists(cli_mode_flag): - sys.path.append(os.path.join(os.path.dirname(__file__), "glob")) - import manager_server # noqa: F401 - import share_3rdparty # noqa: F401 - WEB_DIRECTORY = "js" -else: - print("\n[ComfyUI-Manager] !! cli-only-mode is enabled !!\n") - -NODE_CLASS_MAPPINGS = {} -__all__ = ['NODE_CLASS_MAPPINGS'] - - - diff --git a/custom_nodes/comfyui-manager/__pycache__/__init__.cpython-312.pyc b/custom_nodes/comfyui-manager/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 79ee8b402fe86ce0adf843cc59a8855dc67699ae..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/__pycache__/prestartup_script.cpython-312.pyc b/custom_nodes/comfyui-manager/__pycache__/prestartup_script.cpython-312.pyc deleted file mode 100644 index 00cce9c2f05a6a92761207128b3c369b69fd2b90..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/__pycache__/prestartup_script.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/alter-list.json b/custom_nodes/comfyui-manager/alter-list.json deleted file mode 100644 index 6fcc9b94121058cfbfc9bc4254294b4a9449ddef..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/alter-list.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "items": [ - { - "id":"https://github.com/Fannovel16/comfyui_controlnet_aux", - "tags":"controlnet", - "description": "This extension provides preprocessor nodes for using controlnet." - }, - { - "id":"https://github.com/comfyanonymous/ComfyUI_experiments", - "tags":"Dynamic Thresholding, DT, CFG, controlnet, reference only", - "description": "This experimental nodes contains a 'Reference Only' node and a 'ModelSamplerTonemapNoiseTest' node corresponding to the 'Dynamic Threshold'." - }, - { - "id":"https://github.com/ltdrdata/ComfyUI-Impact-Pack", - "tags":"ddetailer, adetailer, ddsd, DD, loopback scaler, prompt, wildcard, dynamic prompt", - "description": "To implement the feature of automatically detecting faces and enhancing details, various detection nodes and detailers provided by the Impact Pack can be applied. Similarly to Loopback Scaler, it also provides various custom workflows that can apply Ksampler while gradually scaling up." - }, - { - "id":"https://github.com/ltdrdata/ComfyUI-Inspire-Pack", - "tags":"lora block weight, effective block analyzer, lbw, variation seed", - "description": "The Inspire Pack provides the functionality of Lora Block Weight, Variation Seed." - }, - { - "id":"https://github.com/biegert/ComfyUI-CLIPSeg/raw/main/custom_nodes/clipseg.py", - "tags":"ddsd", - "description": "This extension provides a feature that generates segment masks on an image using a text prompt. When used in conjunction with Impact Pack, it enables applications such as DDSD." - }, - { - "id":"https://github.com/BadCafeCode/masquerade-nodes-comfyui", - "tags":"ddetailer", - "description": "This extension is a less feature-rich and well-maintained alternative to Impact Pack, but it has fewer dependencies and may be easier to install on abnormal configurations. The author recommends trying Impact Pack first." - }, - { - "id":"https://github.com/BlenderNeko/ComfyUI_Cutoff", - "tags":"cutoff", - "description": "By using this extension, prompts like 'blue hair' can be prevented from interfering with other prompts by blocking the attribute 'blue' from being used in prompts other than 'hair'." - }, - { - "id":"https://github.com/BlenderNeko/ComfyUI_ADV_CLIP_emb", - "tags":"prompt, weight", - "description": "There are differences in the processing methods of prompts, such as weighting and scheduling, between A1111 and ComfyUI. With this extension, various settings can be used to implement prompt processing methods similar to A1111. As this feature is also integrated into ComfyUI Cutoff, please download the Cutoff extension if you plan to use it in conjunction with Cutoff." - }, - { - "id":"https://github.com/shiimizu/ComfyUI_smZNodes", - "tags":"prompt, weight", - "description": "There are differences in the processing methods of prompts, such as weighting and scheduling, between A1111 and ComfyUI. This extension helps to reproduce the same embedding as A1111." - }, - { - "id":"https://github.com/BlenderNeko/ComfyUI_Noise", - "tags":"img2img alt, random", - "description": "The extension provides an unsampler that reverses the sampling process, allowing for a function similar to img2img alt to be implemented. Furthermore, ComfyUI uses CPU's Random instead of GPU's Random for better reproducibility compared to A1111. This extension provides the ability to use GPU's Random for Latent Noise. However, since GPU's Random may vary depending on the GPU model, reproducibility on different devices cannot be guaranteed." - }, - { - "id":"https://github.com/BlenderNeko/ComfyUI_SeeCoder", - "tags":"seecoder, prompt-free-diffusion", - "description": "The extension provides seecoder feature." - }, - { - "id":"https://github.com/lilly1987/ComfyUI_node_Lilly", - "tags":"prompt, wildcard", - "description": "This extension provides features such as a wildcard function that randomly selects prompts belonging to a category and the ability to directly load lora from prompts." - }, - { - "id":"https://github.com/Davemane42/ComfyUI_Dave_CustomNode", - "tags":"latent couple", - "description": "ComfyUI already provides the ability to composite latents by default. However, this extension makes it more convenient to use by visualizing the composite area." - }, - { - "id":"https://github.com/LEv145/images-grid-comfy-plugin", - "tags":"X/Y Plot", - "description": "This tool provides a viewer node that allows for checking multiple outputs in a grid, similar to the X/Y Plot extension." - }, - { - "id":"https://github.com/pythongosssss/ComfyUI-WD14-Tagger", - "tags":"deepbooru, clip interrogation", - "description": "This extension generates clip text by taking an image as input and using the Deepbooru model." - }, - { - "id":"https://github.com/szhublox/ambw_comfyui", - "tags":"supermerger", - "description": "This node takes two models, merges individual blocks together at various ratios, and automatically rates each merge, keeping the ratio with the highest score. " - }, - { - "id":"https://github.com/ssitu/ComfyUI_UltimateSDUpscale", - "tags":"upscaler, Ultimate SD Upscale", - "description": "ComfyUI nodes for the Ultimate Stable Diffusion Upscale script by Coyote-A. Uses the same script used in the A1111 extension to hopefully replicate images generated using the A1111 webui." - }, - { - "id":"https://github.com/dawangraoming/ComfyUI_ksampler_gpu/raw/main/ksampler_gpu.py", - "tags":"random, noise", - "description": "A1111 provides KSampler that uses GPU-based random noise. This extension offers KSampler utilizing GPU-based random noise." - }, - { - "id":"https://github.com/space-nuko/nui-suite", - "tags":"prompt, dynamic prompt", - "description": "This extension provides nodes with the functionality of dynamic prompts." - }, - { - "id":"https://github.com/melMass/comfy_mtb", - "tags":"roop", - "description": "This extension provides bunch of nodes including roop" - }, - { - "id":"https://github.com/ssitu/ComfyUI_roop", - "tags":"roop", - "description": "This extension provides nodes for the roop A1111 webui script." - }, - { - "id":"https://github.com/asagi4/comfyui-prompt-control", - "tags":"prompt, prompt editing", - "description": "This extension provides the ability to use prompts like \n\n**a [large::0.1] [cat|dog:0.05] [::0.5] [in a park:in space:0.4]**\n\n" - }, - { - "id":"https://github.com/adieyal/comfyui-dynamicprompts", - "tags":"prompt, dynamic prompt", - "description": "This extension is a port of sd-dynamic-prompt to ComfyUI." - }, - { - "id":"https://github.com/kwaroran/abg-comfyui", - "tags":"abg, background remover", - "description": "A Anime Background Remover node for comfyui, based on this hf space, works same as AGB extention in automatic1111." - }, - { - "id":"https://github.com/Gourieff/comfyui-reactor-node", - "tags":"reactor, sd-webui-roop-nsfw", - "description": "This is a ported version of ComfyUI for the sd-webui-roop-nsfw extension." - }, - { - "id":"https://github.com/laksjdjf/cgem156-ComfyUI", - "tags":"regional prompt, latent couple, prompt", - "description": "This custom nodes provide a functionality similar to regional prompts, offering couple features at the attention level." - }, - { - "id":"https://github.com/FizzleDorf/ComfyUI_FizzNodes", - "tags":"deforum", - "description": "This custom nodes provide functionality that assists in animation creation, similar to deforum." - }, - { - "id":"https://github.com/seanlynch/comfyui-optical-flow", - "tags":"deforum, vid2vid", - "description": "This custom nodes provide functionality that assists in animation creation, similar to deforum." - }, - { - "id":"https://github.com/ssitu/ComfyUI_fabric", - "tags":"fabric", - "description": "Similar to sd-webui-fabric, this custom nodes provide the functionality of [a/FABRIC](https://github.com/sd-fabric/fabric)." - }, - { - "id":"https://github.com/Zuellni/ComfyUI-ExLlama", - "tags":"ExLlama, prompt, language model", - "description": "Similar to text-generation-webui, this custom nodes provide the functionality of [a/exllama](https://github.com/turboderp/exllama)." - }, - { - "id":"https://github.com/spinagon/ComfyUI-seamless-tiling", - "tags":"tiling", - "description": "ComfyUI node for generating seamless textures Replicates 'Tiling' option from A1111" - }, - { - "id":"https://github.com/laksjdjf/cd-tuner_negpip-ComfyUI", - "tags":"cd-tuner, negpip", - "description": "This extension is a port of the [a/sd-webui-cd-tuner](https://github.com/hako-mikan/sd-webui-cd-tuner)(a.k.a. CD(color/Detail) Tuner )and [a/sd-webui-negpip](https://github.com/hako-mikan/sd-webui-negpip)(a.k.a. NegPiP) extensions of A1111 to ComfyUI." - }, - { - "id":"https://github.com/mcmonkeyprojects/sd-dynamic-thresholding", - "tags":"DT, dynamic thresholding", - "description": "This custom node is a port of the Dynamic Thresholding extension from A1111 to make it available for use in ComfyUI." - }, - { - "id":"https://github.com/hhhzzyang/Comfyui_Lama", - "tags":"lama, inpainting anything", - "description": "This extension provides custom nodes developed based on [a/LaMa](https://github.com/advimman/lama) and [a/Inpainting anything](https://github.com/geekyutao/Inpaint-Anything)." - }, - { - "id":"https://github.com/mlinmg/ComfyUI-LaMA-Preprocessor", - "tags":"lama", - "description": "This extension provides custom nodes for [a/LaMa](https://github.com/advimman/lama) functionality." - }, - { - "id":"https://github.com/Haoming02/comfyui-diffusion-cg", - "tags":"diffusion-cg", - "description": "This extension provides custom nodes for [a/SD Webui Diffusion Color Grading](https://github.com/Haoming02/sd-webui-diffusion-cg) functionality." - }, - { - "id":"https://github.com/asagi4/ComfyUI-CADS", - "tags":"diffusion-cg", - "description": "This extension provides custom nodes for [a/sd-webui-cads](https://github.com/v0xie/sd-webui-cads) functionality." - }, - { - "id":"https://git.mmaker.moe/mmaker/sd-webui-color-enhance", - "tags":"color-enhance", - "description": "This extension supports both A1111 and ComfyUI simultaneously." - }, - { - "id":"https://github.com/shiimizu/ComfyUI-TiledDiffusion", - "tags":"multidiffusion", - "description": "This extension provides custom nodes for [a/Mixture of Diffusers](https://github.com/albarji/mixture-of-diffusers) and [a/MultiDiffusion](https://github.com/omerbt/MultiDiffusion)" - }, - { - "id":"https://github.com/abyz22/image_control", - "tags":"BMAB", - "description": "This extension provides some alternative functionalities of the [a/sd-webui-bmab](https://github.com/portu-sim/sd-webui-bmab) extension." - }, - { - "id":"https://github.com/blepping/ComfyUI-sonar", - "tags":"sonar", - "description": "This extension provides some alternative functionalities of the [a/stable-diffusion-webui-sonar](https://github.com/Kahsolt/stable-diffusion-webui-sonar) extension." - }, - { - "id":"https://github.com/AIFSH/ComfyUI-RVC", - "tags":"sonar", - "description": "a comfyui custom node for [a/Retrieval-based-Voice-Conversion-WebUI](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI.git), you can Voice-Conversion in comfyui now!" - }, - { - "id":"https://github.com/portu-sim/comfyui-bmab", - "tags":"bmab", - "description": "a comfyui custom node for [a/sd-webui-bmab](https://github.com/portu-sim/sd-webui-bmab)" - }, - { - "id":"https://github.com/ThereforeGames/ComfyUI-Unprompted", - "tags":"unprompted", - "description": "This extension is a port of [a/unprompted](https://github.com/ThereforeGames/unprompted)" - } - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/channels.list.template b/custom_nodes/comfyui-manager/channels.list.template deleted file mode 100644 index e8933a98c2a6c701559e7c3a331869a5b422358d..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/channels.list.template +++ /dev/null @@ -1,6 +0,0 @@ -default::https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main -recent::https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/node_db/new -legacy::https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/node_db/legacy -forked::https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/node_db/forked -dev::https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/node_db/dev -tutorial::https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/node_db/tutorial \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/check.bat b/custom_nodes/comfyui-manager/check.bat deleted file mode 100644 index 856e849068dafd7a65a4eb675ed8b5af4b7c10b1..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/check.bat +++ /dev/null @@ -1,21 +0,0 @@ -@echo off - -python json-checker.py "custom-node-list.json" -python json-checker.py "model-list.json" -python json-checker.py "alter-list.json" -python json-checker.py "extension-node-map.json" -python json-checker.py "node_db\new\custom-node-list.json" -python json-checker.py "node_db\new\model-list.json" -python json-checker.py "node_db\new\extension-node-map.json" -python json-checker.py "node_db\dev\custom-node-list.json" -python json-checker.py "node_db\dev\model-list.json" -python json-checker.py "node_db\dev\extension-node-map.json" -python json-checker.py "node_db\tutorial\custom-node-list.json" -python json-checker.py "node_db\tutorial\model-list.json" -python json-checker.py "node_db\tutorial\extension-node-map.json" -python json-checker.py "node_db\legacy\custom-node-list.json" -python json-checker.py "node_db\legacy\model-list.json" -python json-checker.py "node_db\legacy\extension-node-map.json" -python json-checker.py "node_db\forked\custom-node-list.json" -python json-checker.py "node_db\forked\model-list.json" -python json-checker.py "node_db\forked\extension-node-map.json" \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/check.sh b/custom_nodes/comfyui-manager/check.sh deleted file mode 100644 index 3ddc7a2d9a88713cf37cf3fe81ac055eed1c369a..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/check.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -echo -echo CHECK1 - -files=( - "custom-node-list.json" - "model-list.json" - "alter-list.json" - "extension-node-map.json" - "github-stats.json" - "extras.json" - "node_db/new/custom-node-list.json" - "node_db/new/model-list.json" - "node_db/new/extension-node-map.json" - "node_db/dev/custom-node-list.json" - "node_db/dev/model-list.json" - "node_db/dev/extension-node-map.json" - "node_db/tutorial/custom-node-list.json" - "node_db/tutorial/model-list.json" - "node_db/tutorial/extension-node-map.json" - "node_db/legacy/custom-node-list.json" - "node_db/legacy/model-list.json" - "node_db/legacy/extension-node-map.json" - "node_db/forked/custom-node-list.json" - "node_db/forked/model-list.json" - "node_db/forked/extension-node-map.json" -) - -for file in "${files[@]}"; do - python json-checker.py "$file" -done - -echo -echo CHECK2 -find ~/.tmp/default -name "*.py" -print0 | xargs -0 grep -E "crypto|^_A=" - -echo -echo CHECK3 -find ~/.tmp/default -name "requirements.txt" | xargs grep "^\s*https\\?:" -find ~/.tmp/default -name "requirements.txt" | xargs grep "\.whl" - -echo diff --git a/custom_nodes/comfyui-manager/cm-cli.py b/custom_nodes/comfyui-manager/cm-cli.py deleted file mode 100644 index 6dcd734feff31f0bea07d00ffbafb0c09e7cc83f..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/cm-cli.py +++ /dev/null @@ -1,1243 +0,0 @@ -import os -import sys -import traceback -import json -import asyncio -import concurrent -import threading -from typing import Optional - -import typer -from rich import print -from typing_extensions import List, Annotated -import re -import git -import importlib - - -sys.path.append(os.path.dirname(__file__)) -sys.path.append(os.path.join(os.path.dirname(__file__), "glob")) - -import manager_util - -# read env vars -# COMFYUI_FOLDERS_BASE_PATH is not required in cm-cli.py -# `comfy_path` should be resolved before importing manager_core -comfy_path = os.environ.get('COMFYUI_PATH') -if comfy_path is None: - try: - import folder_paths - comfy_path = os.path.join(os.path.dirname(folder_paths.__file__)) - except: - print("\n[bold yellow]WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path.[/bold yellow]", file=sys.stderr) - comfy_path = os.path.abspath(os.path.join(manager_util.comfyui_manager_path, '..', '..')) - -sys.path.append(comfy_path) - -import utils.extra_config -import cm_global -import manager_core as core -from manager_core import unified_manager -import cnr_utils - -comfyui_manager_path = os.path.abspath(os.path.dirname(__file__)) - -cm_global.pip_blacklist = ['torch', 'torchsde', 'torchvision'] -cm_global.pip_downgrade_blacklist = ['torch', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia'] -cm_global.pip_overrides = {'numpy': 'numpy<2'} - -if os.path.exists(os.path.join(manager_util.comfyui_manager_path, "pip_overrides.json")): - with open(os.path.join(manager_util.comfyui_manager_path, "pip_overrides.json"), 'r', encoding="UTF-8", errors="ignore") as json_file: - cm_global.pip_overrides = json.load(json_file) - - -def check_comfyui_hash(): - repo = git.Repo(comfy_path) - core.comfy_ui_revision = len(list(repo.iter_commits('HEAD'))) - - cm_global.variables['comfyui.revision'] = core.comfy_ui_revision - - core.comfy_ui_commit_datetime = repo.head.commit.committed_datetime - - -check_comfyui_hash() # This is a preparation step for manager_core -core.check_invalid_nodes() - - -def read_downgrade_blacklist(): - try: - import configparser - config = configparser.ConfigParser() - config.read(core.manager_config.path) - default_conf = config['default'] - - if 'downgrade_blacklist' in default_conf: - items = default_conf['downgrade_blacklist'].split(',') - items = [x.strip() for x in items if x != ''] - cm_global.pip_downgrade_blacklist += items - cm_global.pip_downgrade_blacklist = list(set(cm_global.pip_downgrade_blacklist)) - except: - pass - - -read_downgrade_blacklist() # This is a preparation step for manager_core - - -class Ctx: - folder_paths = None - - def __init__(self): - self.channel = 'default' - self.no_deps = False - self.mode = 'cache' - self.user_directory = None - self.custom_nodes_paths = [os.path.join(core.comfy_base_path, 'custom_nodes')] - self.manager_files_directory = os.path.dirname(__file__) - - if Ctx.folder_paths is None: - try: - Ctx.folder_paths = importlib.import_module('folder_paths') - except ImportError: - print("Warning: Unable to import folder_paths module") - - def set_channel_mode(self, channel, mode): - if mode is not None: - self.mode = mode - - valid_modes = ["remote", "local", "cache"] - if mode and mode.lower() not in valid_modes: - typer.echo( - f"Invalid mode: {mode}. Allowed modes are 'remote', 'local', 'cache'.", - err=True, - ) - exit(1) - - if channel is not None: - self.channel = channel - - asyncio.run(unified_manager.reload(cache_mode=self.mode, dont_wait=False)) - asyncio.run(unified_manager.load_nightly(self.channel, self.mode)) - - def set_no_deps(self, no_deps): - self.no_deps = no_deps - - def set_user_directory(self, user_directory): - if user_directory is None: - return - - extra_model_paths_yaml = os.path.join(user_directory, 'extra_model_paths.yaml') - if os.path.exists(extra_model_paths_yaml): - utils.extra_config.load_extra_path_config(extra_model_paths_yaml) - - core.update_user_directory(user_directory) - - if os.path.exists(core.manager_pip_overrides_path): - with open(core.manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as json_file: - cm_global.pip_overrides = json.load(json_file) - cm_global.pip_overrides = {'numpy': 'numpy<2'} - - @staticmethod - def get_startup_scripts_path(): - return os.path.join(core.manager_startup_script_path, "install-scripts.txt") - - @staticmethod - def get_restore_snapshot_path(): - return os.path.join(core.manager_startup_script_path, "restore-snapshot.json") - - @staticmethod - def get_snapshot_path(): - return core.manager_snapshot_path - - @staticmethod - def get_custom_nodes_paths(): - if Ctx.folder_paths is None: - print("Error: folder_paths module is not available") - return [] - return Ctx.folder_paths.get_folder_paths('custom_nodes') - - -cmd_ctx = Ctx() - - -def install_node(node_spec_str, is_all=False, cnt_msg=''): - if core.is_valid_url(node_spec_str): - # install via urls - res = asyncio.run(core.gitclone_install(node_spec_str, no_deps=cmd_ctx.no_deps)) - if not res.result: - print(res.msg) - print(f"[bold red]ERROR: An error occurred while installing '{node_spec_str}'.[/bold red]") - else: - print(f"{cnt_msg} [INSTALLED] {node_spec_str:50}") - else: - node_spec = unified_manager.resolve_node_spec(node_spec_str) - - if node_spec is None: - return - - node_name, version_spec, is_specified = node_spec - - # NOTE: install node doesn't allow update if version is not specified - if not is_specified: - version_spec = None - - res = asyncio.run(unified_manager.install_by_id(node_name, version_spec, cmd_ctx.channel, cmd_ctx.mode, instant_execution=True, no_deps=cmd_ctx.no_deps)) - - if res.action == 'skip': - print(f"{cnt_msg} [ SKIP ] {node_name:50} => Already installed") - elif res.action == 'enable': - print(f"{cnt_msg} [ ENABLED ] {node_name:50}") - elif res.action == 'install-git' and res.target == 'nightly': - print(f"{cnt_msg} [INSTALLED] {node_name:50}[NIGHTLY]") - elif res.action == 'install-git' and res.target == 'unknown': - print(f"{cnt_msg} [INSTALLED] {node_name:50}[UNKNOWN]") - elif res.action == 'install-cnr' and res.result: - print(f"{cnt_msg} [INSTALLED] {node_name:50}[{res.target}]") - elif res.action == 'switch-cnr' and res.result: - print(f"{cnt_msg} [INSTALLED] {node_name:50}[{res.target}]") - elif (res.action == 'switch-cnr' or res.action == 'install-cnr') and not res.result and node_name in unified_manager.cnr_map: - print(f"\nAvailable version of '{node_name}'") - show_versions(node_name) - print("") - else: - print(f"[bold red]ERROR: An error occurred while installing '{node_name}'.\n{res.msg}[/bold red]") - - -def reinstall_node(node_spec_str, is_all=False, cnt_msg=''): - node_spec = unified_manager.resolve_node_spec(node_spec_str) - - node_name, version_spec, _ = node_spec - - unified_manager.unified_uninstall(node_name, version_spec == 'unknown') - install_node(node_name, is_all=is_all, cnt_msg=cnt_msg) - - -def fix_node(node_spec_str, is_all=False, cnt_msg=''): - node_spec = unified_manager.resolve_node_spec(node_spec_str, guess_mode='active') - - if node_spec is None: - if not is_all: - if unified_manager.resolve_node_spec(node_spec_str, guess_mode='inactive') is not None: - print(f"{cnt_msg} [ SKIPPED ]: {node_spec_str:50} => Disabled") - else: - print(f"{cnt_msg} [ SKIPPED ]: {node_spec_str:50} => Not installed") - - return - - node_name, version_spec, _ = node_spec - - print(f"{cnt_msg} [ FIXING ]: {node_name:50}[{version_spec}]") - res = unified_manager.unified_fix(node_name, version_spec, no_deps=cmd_ctx.no_deps) - - if not res.result: - print(f"ERROR: f{res.msg}") - - -def uninstall_node(node_spec_str: str, is_all: bool = False, cnt_msg: str = ''): - spec = node_spec_str.split('@') - if len(spec) == 2 and spec[1] == 'unknown': - node_name = spec[0] - is_unknown = True - else: - node_name = spec[0] - is_unknown = False - - res = unified_manager.unified_uninstall(node_name, is_unknown) - if len(spec) == 1 and res.action == 'skip' and not is_unknown: - res = unified_manager.unified_uninstall(node_name, True) - - if res.action == 'skip': - print(f"{cnt_msg} [ SKIPPED ]: {node_name:50} => Not installed") - - elif res.result: - print(f"{cnt_msg} [UNINSTALLED] {node_name:50}") - else: - print(f"ERROR: An error occurred while uninstalling '{node_name}'.") - - -def update_node(node_spec_str, is_all=False, cnt_msg=''): - node_spec = unified_manager.resolve_node_spec(node_spec_str, 'active') - - if node_spec is None: - if unified_manager.resolve_node_spec(node_spec_str, 'inactive'): - print(f"{cnt_msg} [ SKIPPED ]: {node_spec_str:50} => Disabled") - else: - print(f"{cnt_msg} [ SKIPPED ]: {node_spec_str:50} => Not installed") - return None - - node_name, version_spec, _ = node_spec - - res = unified_manager.unified_update(node_name, version_spec, no_deps=cmd_ctx.no_deps, return_postinstall=True) - - if not res.result: - print(f"ERROR: An error occurred while updating '{node_name}'.") - elif res.action == 'skip': - print(f"{cnt_msg} [ SKIPPED ]: {node_name:50} => {res.msg}") - else: - print(f"{cnt_msg} [ UPDATED ]: {node_name:50} => ({version_spec} -> {res.target})") - - return res.with_target(f'{node_name}@{res.target}') - - -def update_parallel(nodes): - is_all = False - if 'all' in nodes: - is_all = True - nodes = [] - for x in unified_manager.active_nodes.keys(): - nodes.append(x) - for x in unified_manager.unknown_active_nodes.keys(): - nodes.append(x+"@unknown") - else: - nodes = [x for x in nodes if x.lower() not in ['comfy', 'comfyui']] - - total = len(nodes) - - lock = threading.Lock() - processed = [] - - i = 0 - - def process_custom_node(x): - nonlocal i - nonlocal processed - - with lock: - i += 1 - - try: - res = update_node(x, is_all=is_all, cnt_msg=f'{i}/{total}') - with lock: - processed.append(res) - except Exception as e: - print(f"ERROR: {e}") - traceback.print_exc() - - with concurrent.futures.ThreadPoolExecutor(4) as executor: - for item in nodes: - executor.submit(process_custom_node, item) - - i = 1 - for res in processed: - if res is not None: - print(f"[{i}/{total}] Post update: {res.target}") - if res.postinstall is not None: - res.postinstall() - i += 1 - - -def update_comfyui(): - res = core.update_path(comfy_path, instant_execution=True) - if res == 'fail': - print("Updating ComfyUI has failed.") - elif res == 'updated': - print("ComfyUI is updated.") - else: - print("ComfyUI is already up to date.") - - -def enable_node(node_spec_str, is_all=False, cnt_msg=''): - if unified_manager.resolve_node_spec(node_spec_str, guess_mode='active') is not None: - print(f"{cnt_msg} [ SKIP ] {node_spec_str:50} => Already enabled") - return - - node_spec = unified_manager.resolve_node_spec(node_spec_str, guess_mode='inactive') - - if node_spec is None: - print(f"{cnt_msg} [ SKIP ] {node_spec_str:50} => Not found") - return - - node_name, version_spec, _ = node_spec - - res = unified_manager.unified_enable(node_name, version_spec) - - if res.action == 'skip': - print(f"{cnt_msg} [ SKIP ] {node_name:50} => {res.msg}") - elif res.result: - print(f"{cnt_msg} [ENABLED] {node_name:50}") - else: - print(f"{cnt_msg} [ FAIL ] {node_name:50} => {res.msg}") - - -def disable_node(node_spec_str: str, is_all=False, cnt_msg=''): - if 'comfyui-manager' in node_spec_str.lower(): - return - - node_spec = unified_manager.resolve_node_spec(node_spec_str, guess_mode='active') - - if node_spec is None: - if unified_manager.resolve_node_spec(node_spec_str, guess_mode='inactive') is not None: - print(f"{cnt_msg} [ SKIP ] {node_spec_str:50} => Already disabled") - else: - print(f"{cnt_msg} [ SKIP ] {node_spec_str:50} => Not found") - return - - node_name, version_spec, _ = node_spec - - res = unified_manager.unified_disable(node_name, version_spec == 'unknown') - - if res.action == 'skip': - print(f"{cnt_msg} [ SKIP ] {node_name:50} => {res.msg}") - elif res.result: - print(f"{cnt_msg} [DISABLED] {node_name:50}") - else: - print(f"{cnt_msg} [ FAIL ] {node_name:50} => {res.msg}") - - -def show_list(kind, simple=False): - custom_nodes = asyncio.run(unified_manager.get_custom_nodes(channel=cmd_ctx.channel, mode=cmd_ctx.mode)) - - # collect not-installed unknown nodes - not_installed_unknown_nodes = [] - repo_unknown = {} - - for k, v in custom_nodes.items(): - if 'cnr_latest' not in v: - if len(v['files']) == 1: - repo_url = v['files'][0] - node_name = repo_url.split('/')[-1] - if node_name not in unified_manager.unknown_inactive_nodes and node_name not in unified_manager.unknown_active_nodes: - not_installed_unknown_nodes.append(v) - else: - repo_unknown[node_name] = v - - processed = {} - unknown_processed = [] - - flag = kind in ['all', 'cnr', 'installed', 'enabled'] - for k, v in unified_manager.active_nodes.items(): - if flag: - cnr = unified_manager.cnr_map[k] - processed[k] = "[ ENABLED ] ", cnr['name'], k, cnr['publisher']['name'], v[0] - else: - processed[k] = None - - if flag and kind != 'cnr': - for k, v in unified_manager.unknown_active_nodes.items(): - item = repo_unknown.get(k) - - if item is None: - continue - - log_item = "[ ENABLED ] ", item['title'], k, item['author'] - unknown_processed.append(log_item) - - flag = kind in ['all', 'cnr', 'installed', 'disabled'] - for k, v in unified_manager.cnr_inactive_nodes.items(): - if k in processed: - continue - - if flag: - cnr = unified_manager.cnr_map[k] - processed[k] = "[ DISABLED ] ", cnr['name'], k, cnr['publisher']['name'], ", ".join(list(v.keys())) - else: - processed[k] = None - - for k, v in unified_manager.nightly_inactive_nodes.items(): - if k in processed: - continue - - if flag: - cnr = unified_manager.cnr_map[k] - processed[k] = "[ DISABLED ] ", cnr['name'], k, cnr['publisher']['name'], 'nightly' - else: - processed[k] = None - - if flag and kind != 'cnr': - for k, v in unified_manager.unknown_inactive_nodes.items(): - item = repo_unknown.get(k) - - if item is None: - continue - - log_item = "[ DISABLED ] ", item['title'], k, item['author'] - unknown_processed.append(log_item) - - flag = kind in ['all', 'cnr', 'not-installed'] - for k, v in unified_manager.cnr_map.items(): - if k in processed: - continue - - if flag: - cnr = unified_manager.cnr_map[k] - ver_spec = v['latest_version']['version'] if 'latest_version' in v else '0.0.0' - processed[k] = "[ NOT INSTALLED ] ", cnr['name'], k, cnr['publisher']['name'], ver_spec - else: - processed[k] = None - - if flag and kind != 'cnr': - for x in not_installed_unknown_nodes: - if len(x['files']) == 1: - node_id = os.path.basename(x['files'][0]) - log_item = "[ NOT INSTALLED ] ", x['title'], node_id, x['author'] - unknown_processed.append(log_item) - - for x in processed.values(): - if x is None: - continue - - prefix, title, short_id, author, ver_spec = x - if simple: - print(title+'@'+ver_spec) - else: - print(f"{prefix} {title:50} {short_id:30} (author: {author:20}) \\[{ver_spec}]") - - for x in unknown_processed: - prefix, title, short_id, author = x - if simple: - print(title+'@unknown') - else: - print(f"{prefix} {title:50} {short_id:30} (author: {author:20}) [UNKNOWN]") - - -async def show_snapshot(simple_mode=False): - json_obj = await core.get_current_snapshot() - - if simple_mode: - print(f"[{json_obj['comfyui']}] comfyui") - for k, v in json_obj['git_custom_nodes'].items(): - print(f"[{v['hash']}] {k}") - for v in json_obj['file_custom_nodes']: - print(f"[ N/A ] {v['filename']}") - - else: - formatted_json = json.dumps(json_obj, ensure_ascii=False, indent=4) - print(formatted_json) - - -def show_snapshot_list(simple_mode=False): - snapshot_path = cmd_ctx.get_snapshot_path() - - files = os.listdir(snapshot_path) - json_files = [x for x in files if x.endswith('.json')] - for x in sorted(json_files): - print(x) - - -def cancel(): - if os.path.exists(cmd_ctx.get_startup_scripts_path()): - os.remove(cmd_ctx.get_startup_scripts_path()) - - if os.path.exists(cmd_ctx.get_restore_snapshot_path()): - os.remove(cmd_ctx.get_restore_snapshot_path()) - - -async def auto_save_snapshot(): - path = await core.save_snapshot_with_postfix('cli-autosave') - print(f"Current snapshot is saved as `{path}`") - - -def get_all_installed_node_specs(): - res = [] - processed = set() - for k, v in unified_manager.active_nodes.items(): - node_spec_str = f"{k}@{v[0]}" - res.append(node_spec_str) - processed.add(k) - - for k in unified_manager.cnr_inactive_nodes.keys(): - if k in processed: - continue - - latest = unified_manager.get_from_cnr_inactive_nodes(k) - if latest is not None: - node_spec_str = f"{k}@{str(latest[0])}" - res.append(node_spec_str) - - for k in unified_manager.nightly_inactive_nodes.keys(): - if k in processed: - continue - - node_spec_str = f"{k}@nightly" - res.append(node_spec_str) - - for k in unified_manager.unknown_active_nodes.keys(): - node_spec_str = f"{k}@unknown" - res.append(node_spec_str) - - for k in unified_manager.unknown_inactive_nodes.keys(): - node_spec_str = f"{k}@unknown" - res.append(node_spec_str) - - return res - - -def for_each_nodes(nodes, act, allow_all=True): - is_all = False - if allow_all and 'all' in nodes: - is_all = True - nodes = get_all_installed_node_specs() - else: - nodes = [x for x in nodes if x.lower() not in ['comfy', 'comfyui', 'all']] - - total = len(nodes) - i = 1 - for x in nodes: - try: - act(x, is_all=is_all, cnt_msg=f'{i}/{total}') - except Exception as e: - print(f"ERROR: {e}") - traceback.print_exc() - i += 1 - - -app = typer.Typer() - - -@app.command(help="Display help for commands") -def help(ctx: typer.Context): - print(ctx.find_root().get_help()) - ctx.exit(0) - - -@app.command(help="Install custom nodes") -def install( - nodes: List[str] = typer.Argument( - ..., help="List of custom nodes to install" - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - no_deps: Annotated[ - Optional[bool], - typer.Option( - "--no-deps", - show_default=False, - help="Skip installing any Python dependencies", - ), - ] = False, - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - cmd_ctx.set_no_deps(no_deps) - - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - for_each_nodes(nodes, act=install_node) - pip_fixer.fix_broken() - - -@app.command(help="Reinstall custom nodes") -def reinstall( - nodes: List[str] = typer.Argument( - ..., help="List of custom nodes to reinstall" - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - no_deps: Annotated[ - Optional[bool], - typer.Option( - "--no-deps", - show_default=False, - help="Skip installing any Python dependencies", - ), - ] = False, - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - cmd_ctx.set_no_deps(no_deps) - - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - for_each_nodes(nodes, act=reinstall_node) - pip_fixer.fix_broken() - - -@app.command(help="Uninstall custom nodes") -def uninstall( - nodes: List[str] = typer.Argument( - ..., help="List of custom nodes to uninstall" - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), -): - cmd_ctx.set_channel_mode(channel, mode) - for_each_nodes(nodes, act=uninstall_node) - - -@app.command(help="Disable custom nodes") -def update( - nodes: List[str] = typer.Argument( - ..., - help="[all|List of custom nodes to update]" - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - - if 'all' in nodes: - asyncio.run(auto_save_snapshot()) - - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - - for x in nodes: - if x.lower() in ['comfyui', 'comfy', 'all']: - update_comfyui() - break - - update_parallel(nodes) - pip_fixer.fix_broken() - - -@app.command(help="Disable custom nodes") -def disable( - nodes: List[str] = typer.Argument( - ..., - help="[all|List of custom nodes to disable]" - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - - if 'all' in nodes: - asyncio.run(auto_save_snapshot()) - - for_each_nodes(nodes, disable_node, allow_all=True) - - -@app.command(help="Enable custom nodes") -def enable( - nodes: List[str] = typer.Argument( - ..., - help="[all|List of custom nodes to enable]" - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - - if 'all' in nodes: - asyncio.run(auto_save_snapshot()) - - for_each_nodes(nodes, enable_node, allow_all=True) - - -@app.command(help="Fix dependencies of custom nodes") -def fix( - nodes: List[str] = typer.Argument( - ..., - help="[all|List of custom nodes to fix]" - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - - if 'all' in nodes: - asyncio.run(auto_save_snapshot()) - - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - for_each_nodes(nodes, fix_node, allow_all=True) - pip_fixer.fix_broken() - - -@app.command("show-versions", help="Show all available versions of the node") -def show_versions(node_name: str): - versions = cnr_utils.all_versions_of_node(node_name) - if versions is None: - print(f"Node not found in Comfy Registry: {node_name}") - - for x in versions: - print(f"[{x['createdAt'][:10]}] {x['version']} -- {x['changelog']}") - - -@app.command("show", help="Show node list") -def show( - arg: str = typer.Argument( - help="[installed|enabled|not-installed|disabled|all|cnr|snapshot|snapshot-list]" - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - valid_commands = [ - "installed", - "enabled", - "not-installed", - "disabled", - "all", - "cnr", - "snapshot", - "snapshot-list", - ] - if arg not in valid_commands: - typer.echo(f"Invalid command: `show {arg}`", err=True) - exit(1) - - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - if arg == 'snapshot': - show_snapshot() - elif arg == 'snapshot-list': - show_snapshot_list() - else: - show_list(arg) - - -@app.command("simple-show", help="Show node list (simple mode)") -def simple_show( - arg: str = typer.Argument( - help="[installed|enabled|not-installed|disabled|all|snapshot|snapshot-list]" - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - valid_commands = [ - "installed", - "enabled", - "not-installed", - "disabled", - "all", - "snapshot", - "snapshot-list", - ] - if arg not in valid_commands: - typer.echo(f"[bold red]Invalid command: `show {arg}`[/bold red]", err=True) - exit(1) - - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - - if arg == 'snapshot': - show_snapshot(True) - elif arg == 'snapshot-list': - show_snapshot_list(True) - else: - show_list(arg, True) - - -@app.command('cli-only-mode', help="Set whether to use ComfyUI-Manager in CLI-only mode.") -def cli_only_mode( - mode: str = typer.Argument( - ..., help="[enable|disable]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ) -): - cmd_ctx.set_user_directory(user_directory) - cli_mode_flag = os.path.join(cmd_ctx.manager_files_directory, '.enable-cli-only-mode') - - if mode.lower() == 'enable': - with open(cli_mode_flag, 'w'): - pass - print("\nINFO: `cli-only-mode` is enabled\n") - elif mode.lower() == 'disable': - if os.path.exists(cli_mode_flag): - os.remove(cli_mode_flag) - print("\nINFO: `cli-only-mode` is disabled\n") - else: - print(f"\n[bold red]Invalid value for cli-only-mode: {mode}[/bold red]\n") - exit(1) - - -@app.command( - "deps-in-workflow", help="Generate dependencies file from workflow (.json/.png)" -) -def deps_in_workflow( - workflow: Annotated[ - str, typer.Option(show_default=False, help="Workflow file (.json/.png)") - ], - output: Annotated[ - str, typer.Option(show_default=False, help="Output file (.json)") - ], - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ) -): - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - - input_path = workflow - output_path = output - - if not os.path.exists(input_path): - print(f"[bold red]File not found: {input_path}[/bold red]") - exit(1) - - used_exts, unknown_nodes = asyncio.run(core.extract_nodes_from_workflow(input_path, mode=cmd_ctx.mode, channel_url=cmd_ctx.channel)) - - custom_nodes = {} - for x in used_exts: - custom_nodes[x] = {'state': core.simple_check_custom_node(x), - 'hash': '-' - } - - res = { - 'custom_nodes': custom_nodes, - 'unknown_nodes': list(unknown_nodes) - } - - with open(output_path, "w", encoding='utf-8') as output_file: - json.dump(res, output_file, indent=4) - - print(f"Workflow dependencies are being saved into {output_path}.") - - -@app.command("save-snapshot", help="Save a snapshot of the current ComfyUI environment. If output path isn't provided. Save to ComfyUI-Manager/snapshots path.") -def save_snapshot( - output: Annotated[ - str, - typer.Option( - show_default=False, help="Specify the output file path. (.json/.yaml)" - ), - ] = None, - user_directory: str = typer.Option( - None, - help="user directory" - ) -): - cmd_ctx.set_user_directory(user_directory) - - path = asyncio.run(core.save_snapshot_with_postfix('snapshot', output)) - print(f"Current snapshot is saved as `{path}`") - - -@app.command("restore-snapshot", help="Restore snapshot from snapshot file") -def restore_snapshot( - snapshot_name: str, - pip_non_url: Optional[bool] = typer.Option( - default=None, - show_default=False, - is_flag=True, - help="Restore for pip packages registered on PyPI.", - ), - pip_non_local_url: Optional[bool] = typer.Option( - default=None, - show_default=False, - is_flag=True, - help="Restore for pip packages registered at web URLs.", - ), - pip_local_url: Optional[bool] = typer.Option( - default=None, - show_default=False, - is_flag=True, - help="Restore for pip packages specified by local paths.", - ), - user_directory: str = typer.Option( - None, - help="user directory" - ) -): - cmd_ctx.set_user_directory(user_directory) - - extras = [] - if pip_non_url: - extras.append('--pip-non-url') - - if pip_non_local_url: - extras.append('--pip-non-local-url') - - if pip_local_url: - extras.append('--pip-local-url') - - print(f"PIPs restore mode: {extras}") - - if os.path.exists(snapshot_name): - snapshot_path = os.path.abspath(snapshot_name) - else: - snapshot_path = os.path.join(cmd_ctx.get_snapshot_path(), snapshot_name) - if not os.path.exists(snapshot_path): - print(f"[bold red]ERROR: `{snapshot_path}` is not exists.[/bold red]") - exit(1) - - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - try: - asyncio.run(core.restore_snapshot(snapshot_path, extras)) - except Exception: - print("[bold red]ERROR: Failed to restore snapshot.[/bold red]") - traceback.print_exc() - raise typer.Exit(code=1) - pip_fixer.fix_broken() - - -@app.command( - "restore-dependencies", help="Restore dependencies from whole installed custom nodes." -) -def restore_dependencies( - user_directory: str = typer.Option( - None, - help="user directory" - ) -): - cmd_ctx.set_user_directory(user_directory) - - node_paths = [] - - for base_path in cmd_ctx.get_custom_nodes_paths(): - for name in os.listdir(base_path): - target = os.path.join(base_path, name) - if os.path.isdir(target) and not name.endswith('.disabled'): - node_paths.append(target) - - total = len(node_paths) - i = 1 - - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - for x in node_paths: - print("----------------------------------------------------------------------------------------------------") - print(f"Restoring [{i}/{total}]: {x}") - unified_manager.execute_install_script('', x, instant_execution=True) - i += 1 - pip_fixer.fix_broken() - - -@app.command( - "post-install", help="Install dependencies and execute installation script" -) -def post_install( - path: str = typer.Argument( - help="path to custom node", - ) -): - path = os.path.expanduser(path) - - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - unified_manager.execute_install_script('', path, instant_execution=True) - pip_fixer.fix_broken() - - -@app.command( - "install-deps", - help="Install dependencies from dependencies file(.json) or workflow(.png/.json)", -) -def install_deps( - deps: str = typer.Argument( - help="Dependency spec file (.json)", - ), - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - asyncio.run(auto_save_snapshot()) - - if not os.path.exists(deps): - print(f"[bold red]File not found: {deps}[/bold red]") - exit(1) - else: - with open(deps, 'r', encoding="UTF-8", errors="ignore") as json_file: - try: - json_obj = json.load(json_file) - except: - print(f"[bold red]Invalid json file: {deps}[/bold red]") - exit(1) - - - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - for k in json_obj['custom_nodes'].keys(): - state = core.simple_check_custom_node(k) - if state == 'installed': - continue - elif state == 'not-installed': - asyncio.run(core.gitclone_install(k, instant_execution=True)) - else: # disabled - core.gitclone_set_active([k], False) - pip_fixer.fix_broken() - - print("Dependency installation and activation complete.") - - -@app.command(help="Clear reserved startup action in ComfyUI-Manager") -def clear(): - cancel() - - -@app.command("export-custom-node-ids", help="Export custom node ids") -def export_custom_node_ids( - path: str, - channel: Annotated[ - str, - typer.Option( - show_default=False, - help="Specify the operation mode" - ), - ] = None, - mode: str = typer.Option( - None, - help="[remote|local|cache]" - ), - user_directory: str = typer.Option( - None, - help="user directory" - ), -): - cmd_ctx.set_user_directory(user_directory) - cmd_ctx.set_channel_mode(channel, mode) - - with open(path, "w", encoding='utf-8') as output_file: - for x in unified_manager.cnr_map.keys(): - print(x, file=output_file) - - custom_nodes = asyncio.run(unified_manager.get_custom_nodes(channel=cmd_ctx.channel, mode=cmd_ctx.mode)) - for x in custom_nodes.values(): - if 'cnr_latest' not in x: - if len(x['files']) == 1: - repo_url = x['files'][0] - node_id = repo_url.split('/')[-1] - print(f"{node_id}@unknown", file=output_file) - - if 'id' in x: - print(f"{x['id']}@unknown", file=output_file) - - -@app.command( - "migrate", - help="Migrate legacy node system to new node system", -) -def migrate( - user_directory: str = typer.Option( - None, - help="user directory" - ) -): - cmd_ctx.set_user_directory(user_directory) - asyncio.run(unified_manager.migrate_unmanaged_nodes()) - - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(app()) - - -print("") diff --git a/custom_nodes/comfyui-manager/cm-cli.sh b/custom_nodes/comfyui-manager/cm-cli.sh deleted file mode 100644 index 75ef3f06ecdee58237666c2e2e3562cb4e9a5a46..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/cm-cli.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -python cm-cli.py $* diff --git a/custom_nodes/comfyui-manager/components/.gitignore b/custom_nodes/comfyui-manager/components/.gitignore deleted file mode 100644 index 5bfe9902909278d3e40e9baac7534c02eca0b6e8..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/components/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.json -*.pack diff --git a/custom_nodes/comfyui-manager/custom-node-list.json b/custom_nodes/comfyui-manager/custom-node-list.json deleted file mode 100644 index e87ab24b35e10346a5d4094401560791f5793133..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/custom-node-list.json +++ /dev/null @@ -1,20614 +0,0 @@ -{ - "custom_nodes": [ - { - "author": "Dr.Lt.Data", - "title": "ComfyUI-Manager", - "id": "manager", - "reference": "https://github.com/ltdrdata/ComfyUI-Manager", - "files": [ - "https://github.com/ltdrdata/ComfyUI-Manager" - ], - "install_type": "git-clone", - "description": "ComfyUI-Manager itself is also a custom node." - }, - { - "author": "Dr.Lt.Data", - "title": "ComfyUI Impact Pack", - "id": "comfyui-impact-pack", - "reference": "https://github.com/ltdrdata/ComfyUI-Impact-Pack", - "files": [ - "https://github.com/ltdrdata/ComfyUI-Impact-Pack" - ], - "install_type": "git-clone", - "description": "This node pack offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler.\nNOTE: To use the UltralyticsDetectorProvider, you must install the 'ComfyUI Impact Subpack' separately.", - "preemptions":["SAMLoader"] - }, - { - "author": "Dr.Lt.Data", - "title": "ComfyUI Impact Subpack", - "id": "comfyui-impact-subpack", - "reference": "https://github.com/ltdrdata/ComfyUI-Impact-Subpack", - "files": [ - "https://github.com/ltdrdata/ComfyUI-Impact-Subpack" - ], - "install_type": "git-clone", - "description": "This node pack provides nodes that complement the Impact Pack, such as the UltralyticsDetectorProvider." - }, - { - "author": "Dr.Lt.Data", - "title": "ComfyUI Inspire Pack", - "id": "inspire", - "reference": "https://github.com/ltdrdata/ComfyUI-Inspire-Pack", - "nodename_pattern": "Inspire$", - "files": [ - "https://github.com/ltdrdata/ComfyUI-Inspire-Pack" - ], - "install_type": "git-clone", - "description": "This extension provides various nodes to support Lora Block Weight and the Impact Pack. Provides many easily applicable regional features and applications for Variation Seed." - }, - { - "author": "comfyanonymous", - "title": "ComfyUI_experiments", - "id": "comfy-exp", - "reference": "https://github.com/comfyanonymous/ComfyUI_experiments", - "files": [ - "https://github.com/comfyanonymous/ComfyUI_experiments" - ], - "install_type": "git-clone", - "description": "Nodes: ModelSamplerTonemapNoiseTest, TonemapNoiseWithRescaleCFG, ReferenceOnlySimple, RescaleClassifierFreeGuidanceTest, ModelMergeBlockNumber, ModelMergeSDXL, ModelMergeSDXLTransformers, ModelMergeSDXLDetailedTransformers." - }, - { - "author": "comfyanonymous", - "title": "TensorRT Node for ComfyUI", - "id": "tensorrt", - "reference": "https://github.com/comfyanonymous/ComfyUI_TensorRT", - "files": [ - "https://github.com/comfyanonymous/ComfyUI_TensorRT" - ], - "install_type": "git-clone", - "description": "This node enables the best performance on NVIDIA RTX™ Graphics Cards (GPUs) for Stable Diffusion by leveraging NVIDIA TensorRT." - }, - { - "author": "Stability-AI", - "title": "Stability API nodes for ComfyUI", - "id": "sai-api", - "reference": "https://github.com/Stability-AI/ComfyUI-SAI_API", - "files": [ - "https://github.com/Stability-AI/ComfyUI-SAI_API" - ], - "install_type": "git-clone", - "description": "Nodes:Stability SD3, Stability Outpainting, Stability Search and Replace, Stability Image Core, Stability Inpainting, Stability Remove Background, Stability Creative Upscale.\nAdd API key to environment variable 'SAI_API_KEY'\nAlternatively you can write your API key to file 'sai_platform_key.txt'\nYou can also use and/or override the above by entering your API key in the 'api_key_override' field of each node." - }, - { - "author": "Stability-AI", - "title": "stability-ComfyUI-nodes", - "id": "sai-nodes", - "reference": "https://github.com/Stability-AI/stability-ComfyUI-nodes", - "files": [ - "https://github.com/Stability-AI/stability-ComfyUI-nodes" - ], - "install_type": "git-clone", - "description": "Nodes: ColorBlend, ControlLoraSave, GetImageSize. NOTE: Control-LoRA recolor example uses these nodes." - }, - { - "author": "Fannovel16", - "title": "ComfyUI's ControlNet Auxiliary Preprocessors", - "id": "comfyui_controlnet_aux", - "reference": "https://github.com/Fannovel16/comfyui_controlnet_aux", - "files": [ - "https://github.com/Fannovel16/comfyui_controlnet_aux" - ], - "preemptions":[ - "AIO_Preprocessor", - "AnimalPosePreprocessor", - "AnimeFace_SemSegPreprocessor", - "AnimeLineArtPreprocessor", - "BAE-NormalMapPreprocessor", - "BinaryPreprocessor", - "CannyEdgePreprocessor", - "ColorPreprocessor", - "DSINE-NormalMapPreprocessor", - "DWPreprocessor", - "DensePosePreprocessor", - "DepthAnythingPreprocessor", - "DiffusionEdge_Preprocessor", - "FacialPartColoringFromPoseKps", - "FakeScribblePreprocessor", - "HEDPreprocessor", - "HintImageEnchance", - "ImageGenResolutionFromImage", - "ImageGenResolutionFromLatent", - "ImageIntensityDetector", - "ImageLuminanceDetector", - "InpaintPreprocessor", - "LeReS-DepthMapPreprocessor", - "LineArtPreprocessor", - "LineartStandardPreprocessor", - "M-LSDPreprocessor", - "Manga2Anime_LineArt_Preprocessor", - "MaskOptFlow", - "MediaPipe-FaceMeshPreprocessor", - "MeshGraphormer-DepthMapPreprocessor", - "MiDaS-DepthMapPreprocessor", - "MiDaS-NormalMapPreprocessor", - "OneFormer-ADE20K-SemSegPreprocessor", - "OneFormer-COCO-SemSegPreprocessor", - "OpenposePreprocessor", - "PiDiNetPreprocessor", - "PixelPerfectResolution", - "SAMPreprocessor", - "SavePoseKpsAsJsonFile", - "ScribblePreprocessor", - "Scribble_XDoG_Preprocessor", - "SemSegPreprocessor", - "ShufflePreprocessor", - "TEEDPreprocessor", - "TilePreprocessor", - "UniFormer-SemSegPreprocessor", - "Unimatch_OptFlowPreprocessor", - "Zoe-DepthMapPreprocessor", - "Zoe_DepthAnythingPreprocessor"], - "install_type": "git-clone", - "description": "Plug-and-play ComfyUI node sets for making ControlNet hint images." - }, - { - "author": "Fannovel16", - "title": "ComfyUI Frame Interpolation", - "id": "frame-interpolation", - "reference": "https://github.com/Fannovel16/ComfyUI-Frame-Interpolation", - "files": [ - "https://github.com/Fannovel16/ComfyUI-Frame-Interpolation" - ], - "install_type": "git-clone", - "description": "A custom node suite for Video Frame Interpolation in ComfyUI" - }, - { - "author": "Fannovel16", - "title": "ComfyUI MotionDiff", - "id": "motiondiff", - "reference": "https://github.com/Fannovel16/ComfyUI-MotionDiff", - "files": [ - "https://github.com/Fannovel16/ComfyUI-MotionDiff" - ], - "install_type": "git-clone", - "description": "Implementation of MDM, MotionDiffuse and ReMoDiffuse into ComfyUI." - }, - { - "author": "Fannovel16", - "title": "ComfyUI-Video-Matting", - "id": "video-matting", - "reference": "https://github.com/Fannovel16/ComfyUI-Video-Matting", - "files": [ - "https://github.com/Fannovel16/ComfyUI-Video-Matting" - ], - "install_type": "git-clone", - "description": "A minimalistic implementation of [a/Robust Video Matting (RVM)](https://github.com/PeterL1n/RobustVideoMatting/) in ComfyUI" - }, - { - "author": "Fannovel16", - "title": "ComfyUI-MagickWand", - "id": "magicwand", - "reference": "https://github.com/Fannovel16/ComfyUI-MagickWand", - "files": [ - "https://github.com/Fannovel16/ComfyUI-MagickWand" - ], - "install_type": "git-clone", - "description": "Proper implementation of ImageMagick - the famous software suite for editing and manipulating digital images to ComfyUI using [a/wandpy](https://github.com/emcconville/wand).\nNOTE: You need to install ImageMagick, manually." - }, - { - "author": "time-river", - "title": "CLIPSeg", - "id": "clipseg", - "reference": "https://github.com/time-river/ComfyUI-CLIPSeg", - "files": [ - "https://raw.githubusercontent.com/time-river/ComfyUI-CLIPSeg/main/custom_nodes/clipseg.py" - ], - "install_type": "copy", - "description": "The CLIPSeg node generates a binary mask for a given input image and text prompt.\nNOTE:This custom node is a forked custom node with hotfixes applied from the [a/original repository](https://github.com/biegert/ComfyUI-CLIPSeg), which is no longer maintained." - }, - { - "author": "BlenderNeko", - "title": "ComfyUI Cutoff", - "id": "cutoff", - "reference": "https://github.com/BlenderNeko/ComfyUI_Cutoff", - "files": [ - "https://github.com/BlenderNeko/ComfyUI_Cutoff" - ], - "install_type": "git-clone", - "description": "These custom nodes provides features that allow for better control over the effects of the text prompt." - }, - { - "author": "BlenderNeko", - "title": "Advanced CLIP Text Encode", - "id": "adv-encode", - "reference": "https://github.com/BlenderNeko/ComfyUI_ADV_CLIP_emb", - "files": [ - "https://github.com/BlenderNeko/ComfyUI_ADV_CLIP_emb" - ], - "install_type": "git-clone", - "description": "Advanced CLIP Text Encode (if you need A1111 like prompt. you need this. But Cutoff node includes this feature, already.)" - }, - { - "author": "BlenderNeko", - "title": "ComfyUI Noise", - "id": "comfy-noise", - "reference": "https://github.com/BlenderNeko/ComfyUI_Noise", - "files": [ - "https://github.com/BlenderNeko/ComfyUI_Noise" - ], - "install_type": "git-clone", - "description": "This extension contains 6 nodes for ComfyUI that allows for more control and flexibility over the noise." - }, - { - "author": "BlenderNeko", - "title": "Tiled sampling for ComfyUI", - "id": "tiled-sampling", - "reference": "https://github.com/BlenderNeko/ComfyUI_TiledKSampler", - "files": [ - "https://github.com/BlenderNeko/ComfyUI_TiledKSampler" - ], - "install_type": "git-clone", - "description": "This extension contains a tiled sampler for ComfyUI. It allows for denoising larger images by splitting it up into smaller tiles and denoising these. It tries to minimize any seams for showing up in the end result by gradually denoising all tiles one step at the time and randomizing tile positions for every step." - }, - { - "author": "BlenderNeko", - "title": "SeeCoder [WIP]", - "id": "seecoder", - "reference": "https://github.com/BlenderNeko/ComfyUI_SeeCoder", - "files": [ - "https://github.com/BlenderNeko/ComfyUI_SeeCoder" - ], - "install_type": "git-clone", - "description": "It provides the capability to generate CLIP from an image input, unlike unCLIP, which works in all models. (To use this extension, you need to download the required model file from **Install Models**)" - }, - { - "author": "jags111", - "title": "Efficiency Nodes for ComfyUI Version 2.0+", - "id": "eff-nodes", - "reference": "https://github.com/jags111/efficiency-nodes-comfyui", - "files": [ - "https://github.com/jags111/efficiency-nodes-comfyui" - ], - "install_type": "git-clone", - "description": "A collection of ComfyUI custom nodes to help streamline workflows and reduce total node count.[w/NOTE: This node is originally created by LucianoCirino, but the [a/original repository](https://github.com/LucianoCirino/efficiency-nodes-comfyui) is no longer maintained and has been forked by a new maintainer. To use the forked version, you should uninstall the original version and **REINSTALL** this one.]" - }, - { - "author": "jags111", - "title": "Jags_VectorMagic", - "id": "vectormagic", - "reference": "https://github.com/jags111/ComfyUI_Jags_VectorMagic", - "files": [ - "https://github.com/jags111/ComfyUI_Jags_VectorMagic" - ], - "install_type": "git-clone", - "description": "a collection of nodes to explore Vector and image manipulation" - }, - { - "author": "jags111", - "title": "Jags_Audiotools", - "id": "audiotools", - "reference": "https://github.com/jags111/ComfyUI_Jags_Audiotools", - "files": [ - "https://github.com/jags111/ComfyUI_Jags_Audiotools" - ], - "install_type": "git-clone", - "description": "This extension offers various audio generation tools" - }, - { - "author": "Derfuu", - "title": "Derfuu_ComfyUI_ModdedNodes", - "id": "derfuu", - "reference": "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes", - "nodename_pattern": "^DF_", - "files": [ - "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes" - ], - "install_type": "git-clone", - "description": "Automate calculation depending on image sizes or something you want." - }, - { - "author": "paulo-coronado", - "title": "comfy_clip_blip_node", - "id": "blip", - "reference": "https://github.com/paulo-coronado/comfy_clip_blip_node", - "files": [ - "https://github.com/paulo-coronado/comfy_clip_blip_node" - ], - "install_type": "git-clone", - "apt_dependency": [ - "rustc", - "cargo" - ], - "description": "CLIPTextEncodeBLIP: This custom node provides a CLIP Encoder that is capable of receiving images as input." - }, - { - "author": "WASasquatch", - "title": "WAS Node Suite", - "id": "was", - "reference": "https://github.com/WASasquatch/was-node-suite-comfyui", - "pip": ["numba"], - "files": [ - "https://github.com/WASasquatch/was-node-suite-comfyui" - ], - "install_type": "git-clone", - "description": "A node suite for ComfyUI with many new nodes, such as image processing, text processing, and more." - }, - { - "author": "WASasquatch", - "title": "ComfyUI Preset Merger", - "id": "preset-merger", - "reference": "https://github.com/WASasquatch/ComfyUI_Preset_Merger", - "files": [ - "https://github.com/WASasquatch/ComfyUI_Preset_Merger" - ], - "install_type": "git-clone", - "description": "Nodes: ModelMergeByPreset. Merge checkpoint models by preset" - }, - { - "author": "WASasquatch", - "title": "PPF_Noise_ComfyUI", - "id": "ppf", - "reference": "https://github.com/WASasquatch/PPF_Noise_ComfyUI", - "files": [ - "https://github.com/WASasquatch/PPF_Noise_ComfyUI" - ], - "install_type": "git-clone", - "description": "Nodes: WAS_PFN_Latent. Perlin Power Fractal Noisey Latents" - }, - { - "author": "WASasquatch", - "title": "Power Noise Suite for ComfyUI", - "id": "power-noise", - "reference": "https://github.com/WASasquatch/PowerNoiseSuite", - "files": [ - "https://github.com/WASasquatch/PowerNoiseSuite" - ], - "install_type": "git-clone", - "description": "Power Noise Suite contains nodes centered around latent noise input, and diffusion, as well as latent adjustments." - }, - { - "author": "WASasquatch", - "title": "FreeU_Advanced", - "id": "freeu-adv", - "reference": "https://github.com/WASasquatch/FreeU_Advanced", - "files": [ - "https://github.com/WASasquatch/FreeU_Advanced" - ], - "install_type": "git-clone", - "description": "This custom node provides advanced settings for FreeU." - }, - { - "author": "WASasquatch", - "title": "WAS_Extras", - "id": "was-extras", - "reference": "https://github.com/WASasquatch/WAS_Extras", - "files": [ - "https://github.com/WASasquatch/WAS_Extras" - ], - "install_type": "git-clone", - "description": "Nodes:Conditioning (Blend), Inpainting VAE Encode (WAS), VividSharpen. Experimental nodes, or other random extra helper nodes." - }, - { - "author": "omar92", - "title": "Quality of life Suit:V2", - "id": "qol", - "reference": "https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92", - "files": [ - "https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92" - ], - "install_type": "git-clone", - "description": "openAI suite, String suite, Latent Tools, Image Tools: These custom nodes provide expanded functionality for image and string processing, latent processing, as well as the ability to interface with models such as ChatGPT/DallE-2.\nNOTE: Currently, this extension does not support the new OpenAI API, leading to compatibility issues." - }, - { - "author": "lilly1987", - "title": "simple wildcard for ComfyUI", - "id": "simle-wildcard", - "reference": "https://github.com/lilly1987/ComfyUI_node_Lilly", - "files": [ - "https://github.com/lilly1987/ComfyUI_node_Lilly" - ], - "install_type": "git-clone", - "description": "These custom nodes provides a feature to insert arbitrary inputs through wildcards in the prompt. Additionally, this tool provides features that help simplify workflows, such as VAELoaderDecoder and SimplerSample." - }, - { - "author": "sylym", - "title": "Vid2vid", - "id": "vid2vid", - "reference": "https://github.com/sylym/comfy_vid2vid", - "files": [ - "https://github.com/sylym/comfy_vid2vid" - ], - "install_type": "git-clone", - "description": "A node suite for ComfyUI that allows you to load image sequence and generate new image sequence with different styles or content." - }, - { - "author": "EllangoK", - "title": "ComfyUI-post-processing-nodes", - "id": "post-processing", - "reference": "https://github.com/EllangoK/ComfyUI-post-processing-nodes", - "files": [ - "https://github.com/EllangoK/ComfyUI-post-processing-nodes" - ], - "install_type": "git-clone", - "description": "A collection of post processing nodes for ComfyUI, which enable a variety of visually striking image effects." - }, - { - "author": "LEv145", - "title": "ImagesGrid", - "id": "imagesgrid", - "reference": "https://github.com/LEv145/images-grid-comfy-plugin", - "files": [ - "https://github.com/LEv145/images-grid-comfy-plugin" - ], - "install_type": "git-clone", - "description": "This tool provides a viewer node that allows for checking multiple outputs in a grid, similar to the X/Y Plot extension." - }, - { - "author": "diontimmer", - "title": "ComfyUI-Vextra-Nodes", - "id": "vextra", - "reference": "https://github.com/diontimmer/ComfyUI-Vextra-Nodes", - "files": [ - "https://github.com/diontimmer/ComfyUI-Vextra-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes: Pixel Sort, Swap Color Mode, Solid Color, Glitch This, Add Text To Image, Play Sound, Prettify Prompt, Generate Noise, Flatten Colors" - }, - { - "author": "CYBERLOOM-INC", - "title": "ComfyUI-nodes-hnmr", - "id": "hnmr", - "reference": "https://github.com/CYBERLOOM-INC/ComfyUI-nodes-hnmr", - "files": [ - "https://github.com/CYBERLOOM-INC/ComfyUI-nodes-hnmr" - ], - "install_type": "git-clone", - "description": "Provide various custom nodes for Latent, Sampling, Model, Loader, Image, Text. This is the fixed version of the original [a/ComfyUI-nodes-hnmr](https://github.com/hnmr293/ComfyUI-nodes-hnmr) by hnmr293." - }, - { - "author": "BadCafeCode", - "title": "Masquerade Nodes", - "id": "masquerade", - "reference": "https://github.com/BadCafeCode/masquerade-nodes-comfyui", - "files": [ - "https://github.com/BadCafeCode/masquerade-nodes-comfyui" - ], - "install_type": "git-clone", - "description": "This is a low-dependency node pack primarily dealing with masks. The author recommends using Impact-Pack instead (unless you specifically have trouble installing dependencies)." - }, - { - "author": "Jcd1230", - "title": "Rembg Background Removal Node for ComfyUI", - "id": "rembg", - "reference": "https://github.com/Jcd1230/rembg-comfyui-node", - "files": [ - "https://github.com/Jcd1230/rembg-comfyui-node" - ], - "install_type": "git-clone", - "description": "Nodes: Image Remove Background (rembg)" - }, - { - "author": "YinBailiang", - "title": "MergeBlockWeighted_fo_ComfyUI", - "id": "mergeblockweighted_fo_comfyui", - "reference": "https://github.com/YinBailiang/MergeBlockWeighted_fo_ComfyUI", - "files": [ - "https://github.com/YinBailiang/MergeBlockWeighted_fo_ComfyUI" - ], - "install_type": "git-clone", - "description": "Nodes: MergeBlockWeighted" - }, - { - "author": "trojblue", - "title": "trNodes", - "id": "trnodes", - "reference": "https://github.com/trojblue/trNodes", - "files": [ - "https://github.com/trojblue/trNodes" - ], - "install_type": "git-clone", - "description": "Nodes: image_layering, color_correction, model_router" - }, - { - "author": "szhublox", - "title": "Auto-MBW", - "id": "auto-mbw", - "reference": "https://github.com/szhublox/ambw_comfyui", - "files": [ - "https://github.com/szhublox/ambw_comfyui" - ], - "install_type": "git-clone", - "description": "Auto-MBW for ComfyUI loosely based on sdweb-auto-MBW. Nodes: auto merge block weighted" - }, - { - "author": "city96", - "title": "ComfyUI_NetDist", - "id": "netdist", - "reference": "https://github.com/city96/ComfyUI_NetDist", - "files": [ - "https://github.com/city96/ComfyUI_NetDist" - ], - "install_type": "git-clone", - "description": "Run ComfyUI workflows on multiple local GPUs/networked machines. Nodes: Remote images, Local Remote control" - }, - { - "author": "city96", - "title": "Latent-Interposer", - "id": "latent-interposer", - "reference": "https://github.com/city96/SD-Latent-Interposer", - "files": [ - "https://github.com/city96/SD-Latent-Interposer" - ], - "install_type": "git-clone", - "description": "Custom node to convert the lantents between SDXL and SD v1.5 directly without the VAE decoding/encoding step." - }, - { - "author": "city96", - "title": "SD-Latent-Upscaler", - "id": "latent-upscaler", - "reference": "https://github.com/city96/SD-Latent-Upscaler", - "files": [ - "https://github.com/city96/SD-Latent-Upscaler" - ], - "pip": ["huggingface-hub"], - "install_type": "git-clone", - "description": "Upscaling stable diffusion latents using a small neural network." - }, - { - "author": "city96", - "title": "ComfyUI_DiT [WIP]", - "id": "dit", - "reference": "https://github.com/city96/ComfyUI_DiT", - "files": [ - "https://github.com/city96/ComfyUI_DiT" - ], - "pip": ["huggingface-hub"], - "install_type": "git-clone", - "description": "Testbed for [a/DiT(Scalable Diffusion Models with Transformers)](https://github.com/facebookresearch/DiT). [w/None of this code is stable, expect breaking changes if for some reason you want to use this.]" - }, - { - "author": "city96", - "title": "ComfyUI_ColorMod", - "id": "colormod", - "reference": "https://github.com/city96/ComfyUI_ColorMod", - "files": [ - "https://github.com/city96/ComfyUI_ColorMod" - ], - "install_type": "git-clone", - "description": "This extension currently has two sets of nodes - one set for editing the contrast/color of images and another set for saving images as 16 bit PNG files." - }, - { - "author": "city96", - "title": "Extra Models for ComfyUI", - "id": "extramodels", - "reference": "https://github.com/city96/ComfyUI_ExtraModels", - "files": [ - "https://github.com/city96/ComfyUI_ExtraModels" - ], - "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": "comfyui-gguf", - "reference": "https://github.com/city96/ComfyUI-GGUF", - "files": [ - "https://github.com/city96/ComfyUI-GGUF" - ], - "preemptions":[ - "CLIPLoaderGGUF", - "DualCLIPLoaderGGUF", - "TripleCLIPLoaderGGUF", - "UnetLoaderGGUF", - "UnetLoaderGGUFAdvanced" - ], - "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." - }, - { - "author": "SLAPaper", - "title": "ComfyUI-Image-Selector", - "id": "image-selector", - "reference": "https://github.com/SLAPaper/ComfyUI-Image-Selector", - "files": [ - "https://github.com/SLAPaper/ComfyUI-Image-Selector" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI, which can select one or some of images from a batch." - }, - { - "author": "SLAPaper", - "title": "StableDiffusion-dpmpp_2m_alt-Sampler", - "id": "dpmpp2m-alt", - "reference": "https://github.com/SLAPaper/StableDiffusion-dpmpp_2m_alt-Sampler", - "files": [ - "https://github.com/SLAPaper/StableDiffusion-dpmpp_2m_alt-Sampler" - ], - "install_type": "git-clone", - "description": "the sampler introduced by [a/hallatore](https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/8457)\ncode extracted from [a/smZNodes](https://github.com/shiimizu/ComfyUI_smZNodes).[w/NOTE:ComfyUI-dpmpp_2m_alt-Sampler is renamed to StableDiffusion-dpmpp_2m_alt-Sampler. Please reinstall.]" - }, - { - "author": "flyingshutter", - "title": "As_ComfyUI_CustomNodes", - "reference": "https://github.com/flyingshutter/As_ComfyUI_CustomNodes", - "files": [ - "https://github.com/flyingshutter/As_ComfyUI_CustomNodes" - ], - "install_type": "git-clone", - "description": "Manipulation nodes for Image, Latent" - }, - { - "author": "Zuellni", - "title": "Zuellni/ComfyUI-Custom-Nodes", - "reference": "https://github.com/Zuellni/ComfyUI-Custom-Nodes", - "files": [ - "https://github.com/Zuellni/ComfyUI-Custom-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes: DeepFloyd, Filter, Select, Save, Decode, Encode, Repeat, Noise, Noise" - }, - { - "author": "Zuellni", - "title": "ComfyUI ExLlamaV2 Nodes", - "id": "exllamav2", - "reference": "https://github.com/Zuellni/ComfyUI-ExLlama-Nodes", - "files": [ - "https://github.com/Zuellni/ComfyUI-ExLlama-Nodes" - ], - "install_type": "git-clone", - "description": "A simple local text generator for ComfyUI utilizing [a/ExLlamaV2](https://github.com/turboderp/exllamav2).\n[w/NOTE:Manual package installation is required.]" - }, - { - "author": "Zuellni", - "title": "ComfyUI PickScore Nodes", - "id": "pickscore", - "reference": "https://github.com/Zuellni/ComfyUI-PickScore-Nodes", - "files": [ - "https://github.com/Zuellni/ComfyUI-PickScore-Nodes" - ], - "install_type": "git-clone", - "description": "Image scoring nodes for ComfyUI using PickScore with a batch of images to predict which ones fit a given prompt the best." - }, - { - "author": "AlekPet", - "title": "AlekPet/ComfyUI_Custom_Nodes_AlekPet", - "id": "alekpet", - "reference": "https://github.com/AlekPet/ComfyUI_Custom_Nodes_AlekPet", - "files": [ - "https://github.com/AlekPet/ComfyUI_Custom_Nodes_AlekPet" - ], - "install_type": "git-clone", - "description": "Nodes: PoseNode, PainterNode, TranslateTextNode, TranslateCLIPTextEncodeNode, DeepTranslatorTextNode, DeepTranslatorCLIPTextEncodeNode, ArgosTranslateTextNode, ArgosTranslateCLIPTextEncodeNode, PreviewTextNode, HexToHueNode, ColorsCorrectNode, IDENode." - }, - { - "author": "pythongosssss", - "title": "ComfyUI WD 1.4 Tagger", - "id": "wd14", - "reference": "https://github.com/pythongosssss/ComfyUI-WD14-Tagger", - "files": [ - "https://github.com/pythongosssss/ComfyUI-WD14-Tagger" - ], - "install_type": "git-clone", - "description": "A ComfyUI extension allowing the interrogation of booru tags from images." - }, - { - "author": "pythongosssss", - "title": "pythongosssss/ComfyUI-Custom-Scripts", - "id": "pygos-script", - "reference": "https://github.com/pythongosssss/ComfyUI-Custom-Scripts", - "files": [ - "https://github.com/pythongosssss/ComfyUI-Custom-Scripts" - ], - "install_type": "git-clone", - "description": "This extension provides: Auto Arrange Graph, Workflow SVG, Favicon Status, Image Feed, Latent Upscale By, Lock Nodes & Groups, Lora Subfolders, Preset Text, Show Text, Touch Support, Link Render Mode, Locking, Node Finder, Quick Nodes, Show Image On Menu, Show Text, Workflow Managements, Custom Widget Default Values" - }, - { - "author": "strimmlarn", - "title": "ComfyUI_Strimmlarns_aesthetic_score", - "id": "aesthetic-score", - "reference": "https://github.com/strimmlarn/ComfyUI-Strimmlarns-Aesthetic-Score", - "js_path": "strimmlarn", - "files": [ - "https://github.com/strimmlarn/ComfyUI-Strimmlarns-Aesthetic-Score" - ], - "install_type": "git-clone", - "description": "Nodes: CalculateAestheticScore, LoadAesteticModel, AesthetlcScoreSorter, ScoreToNumber.\nAesthetic score for ComfyUI" - }, - { - "author": "TinyTerra", - "title": "ComfyUI_tinyterraNodes", - "id": "ttn", - "reference": "https://github.com/TinyTerra/ComfyUI_tinyterraNodes", - "files": [ - "https://github.com/TinyTerra/ComfyUI_tinyterraNodes" - ], - "install_type": "git-clone", - "nodename_pattern": "^ttN ", - "description": "This extension offers various pipe nodes, extensive XYZ plotting, fullscreen image viewer based on node history, dynamic widgets, interface customization, and more." - }, - { - "author": "Jordach", - "title": "comfy-plasma", - "id": "plasma", - "reference": "https://github.com/Jordach/comfy-plasma", - "files": [ - "https://github.com/Jordach/comfy-plasma" - ], - "install_type": "git-clone", - "description": "Nodes: Plasma Noise, Random Noise, Greyscale Noise, Pink Noise, Brown Noise, Plasma KSampler" - }, - { - "author": "bvhari", - "title": "ImageProcessing", - "id": "imageprocessing", - "reference": "https://github.com/bvhari/ComfyUI_ImageProcessing", - "files": [ - "https://github.com/bvhari/ComfyUI_ImageProcessing" - ], - "install_type": "git-clone", - "description": "ComfyUI custom nodes to apply various image processing techniques." - }, - { - "author": "bvhari", - "title": "ComfyUI_PerpWeight", - "id": "perpweight", - "reference": "https://github.com/bvhari/ComfyUI_PerpWeight", - "files": [ - "https://github.com/bvhari/ComfyUI_PerpWeight" - ], - "install_type": "git-clone", - "description": "A novel weighting scheme for token vectors from CLIP. Allows a wider range of values for the weight. Inspired by Perp-Neg." - }, - { - "author": "bvhari", - "title": "ComfyUI_SUNoise", - "id": "sunoise", - "reference": "https://github.com/bvhari/ComfyUI_SUNoise", - "files": [ - "https://github.com/bvhari/ComfyUI_SUNoise" - ], - "install_type": "git-clone", - "description": "Scaled Uniform Noise for Ancestral and Stochastic samplers" - }, - { - "author": "bvhari", - "title": "ComfyUI_PerpCFG", - "reference": "https://github.com/bvhari/ComfyUI_PerpCFG", - "files": [ - "https://github.com/bvhari/ComfyUI_PerpCFG" - ], - "install_type": "git-clone", - "description": "Perpendicular CFG for reducing oversaturation issues with high guidance scale values." - }, - { - "author": "ssitu", - "title": "UltimateSDUpscale", - "id": "usdu", - "reference": "https://github.com/ssitu/ComfyUI_UltimateSDUpscale", - "files": [ - "https://github.com/ssitu/ComfyUI_UltimateSDUpscale" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for the Ultimate Stable Diffusion Upscale script by Coyote-A." - }, - { - "author": "ssitu", - "title": "Restart Sampling", - "id": "restart-sampling", - "reference": "https://github.com/ssitu/ComfyUI_restart_sampling", - "files": [ - "https://github.com/ssitu/ComfyUI_restart_sampling" - ], - "install_type": "git-clone", - "description": "Unofficial ComfyUI nodes for restart sampling based on the paper 'Restart Sampling for Improving Generative Processes' ([a/paper](https://arxiv.org/abs/2306.14878), [a/repo](https://github.com/Newbeeer/diffusion_restart_sampling))" - }, - { - "author": "ssitu", - "title": "ComfyUI roop", - "id": "roop", - "reference": "https://github.com/ssitu/ComfyUI_roop", - "files": [ - "https://github.com/ssitu/ComfyUI_roop" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for the roop A1111 webui script." - }, - { - "author": "ssitu", - "title": "ComfyUI fabric", - "id": "fabric", - "reference": "https://github.com/ssitu/ComfyUI_fabric", - "files": [ - "https://github.com/ssitu/ComfyUI_fabric" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes based on the paper [a/FABRIC: Personalizing Diffusion Models with Iterative Feedback](https://arxiv.org/abs/2307.10159) (Feedback via Attention-Based Reference Image Conditioning)" - }, - { - "author": "space-nuko", - "title": "Disco Diffusion", - "id": "disco", - "reference": "https://github.com/space-nuko/ComfyUI-Disco-Diffusion", - "files": [ - "https://github.com/space-nuko/ComfyUI-Disco-Diffusion" - ], - "install_type": "git-clone", - "description": "Modularized version of Disco Diffusion for use with ComfyUI." - }, - { - "author": "space-nuko", - "title": "OpenPose Editor", - "id": "openpose-editor", - "reference": "https://github.com/space-nuko/ComfyUI-OpenPose-Editor", - "files": [ - "https://github.com/space-nuko/ComfyUI-OpenPose-Editor" - ], - "install_type": "git-clone", - "description": "A port of the openpose-editor extension for stable-diffusion-webui. NOTE: Requires [a/this ComfyUI patch](https://github.com/comfyanonymous/ComfyUI/pull/711) to work correctly" - }, - { - "author": "space-nuko", - "title": "nui suite", - "id": "nui", - "reference": "https://github.com/space-nuko/nui-suite", - "files": [ - "https://github.com/space-nuko/nui-suite" - ], - "install_type": "git-clone", - "description": "NODES: Dynamic Prompts Text Encode, Feeling Lucky Text Encode, Output String" - }, - { - "author": "Nourepide", - "title": "Allor Plugin", - "id": "allor", - "reference": "https://github.com/Nourepide/ComfyUI-Allor", - "files": [ - "https://github.com/Nourepide/ComfyUI-Allor" - ], - "install_type": "git-clone", - "description": "Allor is a plugin for ComfyUI with an emphasis on transparency and performance." - }, - { - "author": "melMass", - "title": "MTB Nodes", - "id": "mtb", - "reference": "https://github.com/melMass/comfy_mtb", - "files": [ - "https://github.com/melMass/comfy_mtb" - ], - "nodename_pattern": "\\(mtb\\)$", - "install_type": "git-clone", - "description": "NODES: Face Swap, Film Interpolation, Latent Lerp, Int To Number, Bounding Box, Crop, Uncrop, ImageBlur, Denoise, ImageCompare, RGV to HSV, HSV to RGB, Color Correct, Modulo, Deglaze Image, Smart Step, ..." - }, - { - "author": "xXAdonesXx", - "title": "NodeGPT", - "id": "nodegpt", - "reference": "https://github.com/xXAdonesXx/NodeGPT", - "files": [ - "https://github.com/xXAdonesXx/NodeGPT" - ], - "install_type": "git-clone", - "description": "Implementation of AutoGen inside ComfyUI. This repository is under development, and not everything is functioning correctly yet." - }, - { - "author": "ciri", - "title": "ComfyUI Model Downloader", - "id": "model-downloader", - "reference": "https://github.com/ciri/comfyui-model-downloader", - "files": [ - "https://github.com/ciri/comfyui-model-downloader" - ], - "install_type": "git-clone", - "description": "This node allows downloading models directly within ComfyUI for easier use and integration." - }, - { - "author": "Suzie1", - "title": "Comfyroll Studio", - "id": "comfyroll", - "reference": "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes", - "files": [ - "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes" - ], - "install_type": "git-clone", - "description": "Custom nodes for SDXL and SD1.5 including Multi-ControlNet, LoRA, Aspect Ratio, Process Switches, and many more nodes. NOTE: Maintainer is changed to Suzie1 from RockOfFire. [w/Using an outdated version has resulted in reported issues with updates not being applied. Trying to reinstall the software is advised.]" - }, - { - "author": "bmad4ever", - "title": "ComfyUI-Bmad-DirtyUndoRedo", - "reference": "https://github.com/bmad4ever/ComfyUI-Bmad-DirtyUndoRedo", - "files": [ - "https://github.com/bmad4ever/ComfyUI-Bmad-DirtyUndoRedo" - ], - "install_type": "git-clone", - "description": "ComfyUI extension that adds undo (and redo) functionality." - }, - { - "author": "bmad4ever", - "title": "comfyui_ab_sampler", - "id": "ab-sampler", - "reference": "https://github.com/bmad4ever/comfyui_ab_samplercustom", - "files": [ - "https://github.com/bmad4ever/comfyui_ab_samplercustom" - ], - "install_type": "git-clone", - "description": "Experimental sampler node. Sampling alternates between A and B inputs until only one remains, starting with A. B steps run over a 2x2 grid, where 3/4's of the grid are copies of the original input latent. When the optional mask is used, the region outside the defined roi is copied from the original latent at the end of every step." - }, - { - "author": "bmad4ever", - "title": "Lists Cartesian Product", - "reference": "https://github.com/bmad4ever/comfyui_lists_cartesian_product", - "files": [ - "https://github.com/bmad4ever/comfyui_lists_cartesian_product" - ], - "install_type": "git-clone", - "description": "Given a set of lists, the node adjusts them so that when used as input to another node all the possible argument permutations are computed." - }, - { - "author": "bmad4ever", - "title": "comfyui_wfc_like", - "id": "wfc", - "reference": "https://github.com/bmad4ever/comfyui_wfc_like", - "files": [ - "https://github.com/bmad4ever/comfyui_wfc_like" - ], - "install_type": "git-clone", - "description": "An 'opinionated' Wave Function Collapse implementation with a set of nodes for comfyui" - }, - { - "author": "bmad4ever", - "title": "comfyui_quilting", - "id": "quilting", - "reference": "https://github.com/bmad4ever/comfyui_quilting", - "files": [ - "https://github.com/bmad4ever/comfyui_quilting" - ], - "install_type": "git-clone", - "description": "image and latent quilting nodes for comfyui" - }, - { - "author": "FizzleDorf", - "title": "FizzNodes", - "id": "fizz", - "reference": "https://github.com/FizzleDorf/ComfyUI_FizzNodes", - "files": [ - "https://github.com/FizzleDorf/ComfyUI_FizzNodes" - ], - "install_type": "git-clone", - "description": "Scheduled prompts, scheduled float/int values and wave function nodes for animations and utility. compatable with [a/framesync](https://www.framesync.xyz/) and [a/keyframe-string-generator](https://www.chigozie.co.uk/keyframe-string-generator/) for audio synced animations in Comfyui." - }, - { - "author": "FizzleDorf", - "title": "ComfyUI-AIT", - "id": "ait", - "reference": "https://github.com/FizzleDorf/ComfyUI-AIT", - "files": [ - "https://github.com/FizzleDorf/ComfyUI-AIT" - ], - "install_type": "git-clone", - "description": "A ComfyUI implementation of Facebook Meta's [a/AITemplate](https://github.com/facebookincubator/AITemplate) repo for faster inference using cpp/cuda. This new repo is behind the old version but is a much more stable foundation to keep AIT online. Please be patient as the repo will eventually include the same features as before.\nNOTE: You can find the old AIT extension in the legacy channel." - }, - { - "author": "filipemeneses", - "title": "Pixelization", - "id": "pixelization", - "reference": "https://github.com/filipemeneses/comfy_pixelization", - "files": [ - "https://github.com/filipemeneses/comfy_pixelization" - ], - "install_type": "git-clone", - "description": "ComfyUI node that pixelizes images." - }, - { - "author": "shiimizu", - "title": "smZNodes", - "id": "smz", - "reference": "https://github.com/shiimizu/ComfyUI_smZNodes", - "files": [ - "https://github.com/shiimizu/ComfyUI_smZNodes" - ], - "install_type": "git-clone", - "description": "Nodes such as CLIP Text Encode++ to achieve identical embeddings from stable-diffusion-webui for ComfyUI." - }, - { - "author": "shiimizu", - "title": "Tiled Diffusion & VAE for ComfyUI", - "id": "tiled-diffusion", - "reference": "https://github.com/shiimizu/ComfyUI-TiledDiffusion", - "files": [ - "https://github.com/shiimizu/ComfyUI-TiledDiffusion" - ], - "install_type": "git-clone", - "description": "The extension enables large image drawing & upscaling with limited VRAM via the following techniques:\n1.Two SOTA diffusion tiling algorithms: [a/Mixture of Diffusers](https://github.com/albarji/mixture-of-diffusers) and [a/MultiDiffusion](https://github.com/omerbt/MultiDiffusion)\n2.pkuliyi2015's Tiled VAE algorithm." - }, - { - "author": "shiimizu", - "title": "ComfyUI PhotoMaker Plus", - "id": "photomaker-plus", - "reference": "https://github.com/shiimizu/ComfyUI-PhotoMaker-Plus", - "files": [ - "https://github.com/shiimizu/ComfyUI-PhotoMaker-Plus" - ], - "install_type": "git-clone", - "description": "ComfyUI reference implementation for [a/PhotoMaker](https://github.com/TencentARC/PhotoMaker) models.\nNOTE: PhotoMaker V2 is supported." - }, - { - "author": "shiimizu", - "title": "Semantic-aware Guidance (S-CFG)", - "id": "s-cfg", - "reference": "https://github.com/shiimizu/ComfyUI-semantic-aware-guidance", - "files": [ - "https://github.com/shiimizu/ComfyUI-semantic-aware-guidance" - ], - "install_type": "git-clone", - "description": "ComfyUI node for Semantic-aware Guidance based on the [a/paper](https://arxiv.org/abs/2404.05384) 'Rethinking the Spatial Inconsistency in Classifier-Free Diffusion Guidance'" - }, - { - "author": "ZaneA", - "title": "ImageReward", - "reference": "https://github.com/ZaneA/ComfyUI-ImageReward", - "files": [ - "https://github.com/ZaneA/ComfyUI-ImageReward" - ], - "install_type": "git-clone", - "description": "NODES: ImageRewardLoader, ImageRewardScore" - }, - { - "author": "SeargeDP", - "title": "SeargeSDXL", - "id": "searge", - "reference": "https://github.com/SeargeDP/SeargeSDXL", - "files": [ - "https://github.com/SeargeDP/SeargeSDXL" - ], - "install_type": "git-clone", - "description": "Custom nodes for easier use of SDXL in ComfyUI including an img2img workflow that utilizes both the base and refiner checkpoints." - }, - { - "author": "SeargeDP", - "title": "Searge-LLM for ComfyUI v1.0", - "reference": "https://github.com/SeargeDP/ComfyUI_Searge_LLM", - "files": [ - "https://github.com/SeargeDP/ComfyUI_Searge_LLM" - ], - "install_type": "git-clone", - "description": "A prompt-generator or prompt-improvement node for ComfyUI, utilizing the power of a language model to turn a provided text-to-image prompt into a more detailed and improved prompt." - }, - { - "author": "cubiq", - "title": "Simple Math", - "id": "simplemath", - "reference": "https://github.com/cubiq/ComfyUI_SimpleMath", - "files": [ - "https://github.com/cubiq/ComfyUI_SimpleMath" - ], - "install_type": "git-clone", - "description": "custom node for ComfyUI to perform simple math operations" - }, - { - "author": "cubiq", - "title": "ComfyUI_IPAdapter_plus", - "id": "ipadapter", - "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus", - "files": [ - "https://github.com/cubiq/ComfyUI_IPAdapter_plus" - ], - "preemptions": [ - "IPAAdapterFaceIDBatch", - "IPAdapter", - "IPAdapterAdvanced", - "IPAdapterBatch", - "IPAdapterClipVisionEnhancer", - "IPAdapterClipVisionEnhancerBatch", - "IPAdapterCombineEmbeds", - "IPAdapterCombineParams", - "IPAdapterCombineWeights", - "IPAdapterEmbeds", - "IPAdapterEmbedsBatch", - "IPAdapterEncoder", - "IPAdapterFaceID", - "IPAdapterFromParams", - "IPAdapterInsightFaceLoader", - "IPAdapterLoadEmbeds", - "IPAdapterMS", - "IPAdapterModelLoader", - "IPAdapterNoise", - "IPAdapterPreciseComposition", - "IPAdapterPreciseCompositionBatch", - "IPAdapterPreciseStyleTransfer", - "IPAdapterPreciseStyleTransferBatch", - "IPAdapterPromptScheduleFromWeightsStrategy", - "IPAdapterRegionalConditioning", - "IPAdapterSaveEmbeds", - "IPAdapterStyleComposition", - "IPAdapterStyleCompositionBatch", - "IPAdapterTiled", - "IPAdapterTiledBatch", - "IPAdapterUnifiedLoader", - "IPAdapterUnifiedLoaderCommunity", - "IPAdapterUnifiedLoaderFaceID", - "IPAdapterWeights", - "IPAdapterWeightsFromStrategy", - "PrepImageForClipVision" - ], - "pip": ["insightface"], - "install_type": "git-clone", - "description": "ComfyUI reference implementation for IPAdapter models. The code is mostly taken from the original IPAdapter repository and laksjdjf's implementation, all credit goes to them. I just made the extension closer to ComfyUI philosophy." - }, - { - "author": "cubiq", - "title": "ComfyUI InstantID (Native Support)", - "id": "instantid", - "reference": "https://github.com/cubiq/ComfyUI_InstantID", - "files": [ - "https://github.com/cubiq/ComfyUI_InstantID" - ], - "install_type": "git-clone", - "description": "Native [a/InstantID](https://github.com/InstantID/InstantID) support for ComfyUI.\nThis extension differs from the many already available as it doesn't use diffusers but instead implements InstantID natively and it fully integrates with ComfyUI.\nPlease note this still could be considered beta stage, looking forward to your feedback." - }, - { - "author": "cubiq", - "title": "Face Analysis for ComfyUI", - "id": "faceanalysis", - "reference": "https://github.com/cubiq/ComfyUI_FaceAnalysis", - "files": [ - "https://github.com/cubiq/ComfyUI_FaceAnalysis" - ], - "install_type": "git-clone", - "description": "This extension uses [a/DLib](http://dlib.net/) to calculate the Euclidean and Cosine distance between two faces.\nNOTE: Install the Shape Predictor, Face Recognition model from the Install models menu." - }, - { - "author": "cubiq", - "title": "PuLID_ComfyUI", - "id": "pulid", - "reference": "https://github.com/cubiq/PuLID_ComfyUI", - "files": [ - "https://github.com/cubiq/PuLID_ComfyUI" - ], - "install_type": "git-clone", - "description": "[a/PuLID](https://github.com/ToTheBeginning/PuLID) ComfyUI native implementation." - }, - { - "author": "cubiq", - "title": "Flux blocks patcher sampler", - "reference": "https://github.com/cubiq/Block_Patcher_ComfyUI", - "files": [ - "https://github.com/cubiq/Block_Patcher_ComfyUI" - ], - "install_type": "git-clone", - "description": "This is an (very) advanced and (very) experimental custom node for the ComfyUI. It allows you to iteratively change the blocks weights of Flux models and check the difference each value makes." - }, - { - "author": "shockz0rz", - "title": "comfy-easy-grids", - "id": "easy-grids", - "reference": "https://github.com/shockz0rz/comfy-easy-grids", - "files": [ - "https://github.com/shockz0rz/comfy-easy-grids" - ], - "install_type": "git-clone", - "description": "A set of custom nodes for creating image grids, sequences, and batches in ComfyUI." - }, - { - "author": "yolanother", - "title": "Comfy UI Prompt Agent", - "id": "prompt-agent", - "reference": "https://github.com/yolanother/DTAIComfyPromptAgent", - "files": [ - "https://github.com/yolanother/DTAIComfyPromptAgent" - ], - "install_type": "git-clone", - "description": "Nodes: Prompt Agent, Prompt Agent (String). This script provides a prompt agent node for the Comfy UI stable diffusion client." - }, - { - "author": "yolanother", - "title": "Image to Text Node", - "id": "dta-img2txt", - "reference": "https://github.com/yolanother/DTAIImageToTextNode", - "files": [ - "https://github.com/yolanother/DTAIImageToTextNode" - ], - "install_type": "git-clone", - "description": "Nodes: Image URL to Text, Image to Text." - }, - { - "author": "yolanother", - "title": "Comfy UI Online Loaders", - "id": "dta-loader", - "reference": "https://github.com/yolanother/DTAIComfyLoaders", - "files": [ - "https://github.com/yolanother/DTAIComfyLoaders" - ], - "install_type": "git-clone", - "description": "Nodes: Submit Image (Parameters), Submit Image. A collection of loaders that use a shared common online data source rather than relying on the files to be present locally." - }, - { - "author": "yolanother", - "title": "Comfy AI DoubTech.ai Image Sumission Node", - "id": "dta-submit", - "reference": "https://github.com/yolanother/DTAIComfyImageSubmit", - "files": [ - "https://github.com/yolanother/DTAIComfyImageSubmit" - ], - "install_type": "git-clone", - "description": "A ComfyAI submit node to upload images to DoubTech.ai" - }, - { - "author": "yolanother", - "title": "Comfy UI QR Codes", - "id": "dta-qr", - "reference": "https://github.com/yolanother/DTAIComfyQRCodes", - "files": [ - "https://github.com/yolanother/DTAIComfyQRCodes" - ], - "install_type": "git-clone", - "description": "This extension introduces QR code nodes for the Comfy UI stable diffusion client. NOTE: ComfyUI qrcode extension required." - }, - { - "author": "yolanother", - "title": "Variables for Comfy UI", - "id": "dta-var", - "reference": "https://github.com/yolanother/DTAIComfyVariables", - "files": [ - "https://github.com/yolanother/DTAIComfyVariables" - ], - "install_type": "git-clone", - "description": "Nodes: String, Int, Float, Short String, CLIP Text Encode (With Variables), String Format, Short String Format. This extension introduces quality of life improvements by providing variable nodes and shared global variables." - }, - { - "author": "yolanother", - "title": "Save Uncompressed 16 Bit PNG", - "reference": "https://github.com/yolanother/ComfyUI-Save16bitPng", - "files": [ - "https://github.com/yolanother/ComfyUI-Save16bitPng" - ], - "install_type": "git-clone", - "description": "The SaveImageARGB16PNG node provides functionality for saving images as uncompressed PNG files with ARGB16 precision. This node is particularly useful for workflows that require high-quality image saving with metadata such as prompts and additional PNG info." - }, - { - "author": "sipherxyz", - "title": "comfyui-art-venture", - "id": "artventure", - "reference": "https://github.com/sipherxyz/comfyui-art-venture", - "files": [ - "https://github.com/sipherxyz/comfyui-art-venture" - ], - "install_type": "git-clone", - "description": "A comprehensive set of custom nodes for ComfyUI, focusing on utilities for image processing, JSON manipulation, model operations and working with object via URLs" - }, - { - "author": "SOELexicon", - "title": "LexMSDBNodes", - "id": "lexmsdb", - "reference": "https://github.com/SOELexicon/ComfyUI-LexMSDBNodes", - "files": [ - "https://github.com/SOELexicon/ComfyUI-LexMSDBNodes" - ], - "install_type": "git-clone", - "description": "Nodes: MSSqlTableNode, MSSqlSelectNode. This extension provides custom nodes to interact with MSSQL." - }, - { - "author": "pants007", - "title": "pants", - "reference": "https://github.com/pants007/comfy-pants", - "files": [ - "https://github.com/pants007/comfy-pants" - ], - "install_type": "git-clone", - "description": "Nodes: Make Square Node, Interrogate Node, TextEncodeAIO" - }, - { - "author": "evanspearman", - "title": "ComfyMath", - "id": "comfymath", - "reference": "https://github.com/evanspearman/ComfyMath", - "files": [ - "https://github.com/evanspearman/ComfyMath" - ], - "install_type": "git-clone", - "description": "Provides Math Nodes for ComfyUI. Boolean Logic, Integer Arithmetic, Floating Point Arithmetic and Functions, Vec2, Vec3, and Vec4 Arithmetic and Functions" - }, - { - "author": "civitai", - "title": "Civitai Comfy Nodes", - "id": "civitai", - "reference": "https://github.com/civitai/civitai_comfy_nodes", - "files": [ - "https://github.com/civitai/civitai_comfy_nodes" - ], - "install_type": "git-clone", - "description": "Tired of manually downloading and moving models, LoRAs, and more to the right places?\nSick of scouring Civitai for that one mystical LoRA someone was using to make that cool image?\nWant to be share a fully reproducable workflow?" - }, - { - "author": "andersxa", - "title": "CLIP Directional Prompt Attention", - "id": "prompt-attention", - "reference": "https://github.com/andersxa/comfyui-PromptAttention", - "files": [ - "https://github.com/andersxa/comfyui-PromptAttention" - ], - "pip": ["scikit-learn", "matplotlib"], - "install_type": "git-clone", - "description": "Nodes: CLIP Directional Prompt Attention Encode. Direction prompt attention tries to solve the problem of contextual words (or parts of the prompt) having an effect on much later or irrelevant parts of the prompt." - }, - { - "author": "ArtVentureX", - "title": "AnimateDiff", - "reference": "https://github.com/ArtVentureX/comfyui-animatediff", - "pip": ["flash_attn"], - "files": [ - "https://github.com/ArtVentureX/comfyui-animatediff" - ], - "install_type": "git-clone", - "description": "AnimateDiff integration for ComfyUI, adapts from sd-webui-animatediff.\n[w/You only need to download one of [a/mm_sd_v14.ckpt](https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt) | [a/mm_sd_v15.ckpt](https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt). Put the model weights under %%ComfyUI/custom_nodes/comfyui-animatediff/models%%. DO NOT change model filename.]" - }, - { - "author": "twri", - "title": "SDXL Prompt Styler", - "id": "twri-styler", - "reference": "https://github.com/twri/sdxl_prompt_styler", - "files": [ - "https://github.com/twri/sdxl_prompt_styler" - ], - "install_type": "git-clone", - "description": "SDXL Prompt Styler is a node that enables you to style prompts based on predefined templates stored in a JSON file." - }, - { - "author": "wolfden", - "title": "SDXL Prompt Styler (customized version by wolfden)", - "id": "wolfden-styler", - "reference": "https://github.com/wolfden/ComfyUi_PromptStylers", - "files": [ - "https://github.com/wolfden/ComfyUi_PromptStylers" - ], - "install_type": "git-clone", - "description": "These custom nodes provide a variety of customized prompt stylers based on [a/twri/SDXL Prompt Styler](https://github.com/twri/sdxl_prompt_styler)." - }, - { - "author": "wolfden", - "title": "ComfyUi_String_Function_Tree", - "id": "str-func-tree", - "reference": "https://github.com/wolfden/ComfyUi_String_Function_Tree", - "files": [ - "https://github.com/wolfden/ComfyUi_String_Function_Tree" - ], - "install_type": "git-clone", - "description": "This custom node provides the capability to manipulate multiple string inputs." - }, - { - "author": "daxthin", - "title": "DZ-FaceDetailer", - "id": "dz-facedetailer", - "reference": "https://github.com/nicofdga/DZ-FaceDetailer", - "files": [ - "https://github.com/nicofdga/DZ-FaceDetailer" - ], - "install_type": "git-clone", - "description": "Face Detailer is a custom node for the 'ComfyUI' framework inspired by !After Detailer extension from auto1111, it allows you to detect faces using Mediapipe and YOLOv8n to create masks for the detected faces." - }, - { - "author": "asagi4", - "title": "ComfyUI Prompt Control", - "id": "prompt-control", - "reference": "https://github.com/asagi4/comfyui-prompt-control", - "files": [ - "https://github.com/asagi4/comfyui-prompt-control" - ], - "install_type": "git-clone", - "description": "Nodes for convenient prompt editing, making many common operations prompt-controllable" - }, - { - "author": "asagi4", - "title": "ComfyUI-CADS", - "id": "cads", - "reference": "https://github.com/asagi4/ComfyUI-CADS", - "files": [ - "https://github.com/asagi4/ComfyUI-CADS" - ], - "install_type": "git-clone", - "description": "Attempts to implement [a/CADS](https://arxiv.org/abs/2310.17347) for ComfyUI. Credit also to the [a/A1111 implementation](https://github.com/v0xie/sd-webui-cads/tree/main) that I used as a reference." - }, - { - "author": "asagi4", - "title": "asagi4/comfyui-utility-nodes", - "id": "asagi-nodes", - "reference": "https://github.com/asagi4/comfyui-utility-nodes", - "files": [ - "https://github.com/asagi4/comfyui-utility-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:MUJinjaRender, MUSimpleWildcard" - }, - { - "author": "asagi4", - "title": "Adaptive Guidance for ComfyUI", - "id": "comfyui-adaptive-guidance", - "reference": "https://github.com/asagi4/ComfyUI-Adaptive-Guidance", - "files": [ - "https://github.com/asagi4/ComfyUI-Adaptive-Guidance" - ], - "install_type": "git-clone", - "description": "An implementation of adaptive guidance for ComfyUI\nSee [a/https://bcv-uniandes.github.io/adaptiveguidance-wp](https://bcv-uniandes.github.io/adaptiveguidance-wp)" - }, - { - "author": "asagi4", - "title": "ComfyUI NPNet (Golden Noise)", - "id": "npnet", - "reference": "https://github.com/asagi4/ComfyUI-NPNet", - "files": [ - "https://github.com/asagi4/ComfyUI-NPNet" - ], - "install_type": "git-clone", - "description": "A very barebones mostly-copypaste implementation of [a/https://github.com/xie-lab-ml/Golden-Noise-for-Diffusion-Models](https://github.com/xie-lab-ml/Golden-Noise-for-Diffusion-Models)" - }, - { - "author": "jamesWalker55", - "title": "ComfyUI - P2LDGAN Node", - "id": "p2ldgan", - "reference": "https://github.com/jamesWalker55/comfyui-p2ldgan", - "files": [ - "https://github.com/jamesWalker55/comfyui-p2ldgan" - ], - "install_type": "git-clone", - "description": "Nodes: P2LDGAN. This integrates P2LDGAN into ComfyUI. P2LDGAN extracts lineart from input images.\n[w/To use this extension, you need to download the [a/p2ldgan model](https://drive.google.com/file/d/1To4V_Btc3QhCLBWZ0PdSNgC1cbm3isHP) and save it in the %%ComfyUI/custom_nodes/comfyui-p2ldgan/checkpoints%% directory.]" - }, - { - "author": "jamesWalker55", - "title": "Various ComfyUI Nodes by Type", - "id": "jameswalker-nodes", - "reference": "https://github.com/jamesWalker55/comfyui-various", - "files": [ - "https://github.com/jamesWalker55/comfyui-various" - ], - "nodename_pattern": "^JW", - "install_type": "git-clone", - "description": "Nodes: JWInteger, JWFloat, JWString, JWImageLoadRGB, JWImageResize, ..." - }, - { - "author": "adieyal", - "title": "DynamicPrompts Custom Nodes", - "id": "dynamicprompt", - "reference": "https://github.com/adieyal/comfyui-dynamicprompts", - "files": [ - "https://github.com/adieyal/comfyui-dynamicprompts" - ], - "install_type": "git-clone", - "description": "Nodes: Random Prompts, Combinatorial Prompts, I'm Feeling Lucky, Magic Prompt, Jinja2 Templates. ComfyUI-DynamicPrompts is a custom nodes library that integrates into your existing ComfyUI Library. It provides nodes that enable the use of Dynamic Prompts in your ComfyUI." - }, - { - "author": "mihaiiancu", - "title": "mihaiiancu/Inpaint", - "id": "inpaint", - "reference": "https://github.com/mihaiiancu/ComfyUI_Inpaint", - "files": [ - "https://github.com/mihaiiancu/ComfyUI_Inpaint" - ], - "install_type": "git-clone", - "description": "Nodes: InpaintMediapipe. This node provides a simple interface to inpaint." - }, - { - "author": "kwaroran", - "title": "abg-comfyui", - "id": "abg", - "reference": "https://github.com/kwaroran/abg-comfyui", - "files": [ - "https://github.com/kwaroran/abg-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes: Remove Image Background (abg). A Anime Background Remover node for comfyui, based on this hf space, works same as AGB extention in automatic1111." - }, - { - "author": "bash-j", - "title": "Mikey Nodes", - "id": "mikey", - "reference": "https://github.com/bash-j/mikey_nodes", - "files": [ - "https://github.com/bash-j/mikey_nodes" - ], - "install_type": "git-clone", - "description": "Nodes: Prompt With Style, Prompt With SDXL, Resize Image for SDXL, Save Image With Prompt Data, HaldCLUT, Empty Latent Ratio Select/Custom SDXL" - }, - { - "author": "blib-la", - "title": "blibla-comfyui-extensions", - "id": "blibla-comfyui-extensions", - "reference": "https://github.com/blib-la/blibla-comfyui-extensions", - "files": [ - "https://github.com/blib-la/blibla-comfyui-extensions" - ], - "install_type": "git-clone", - "description": "node color customization, custom colors, dot reroutes, link rendering options, straight lines, group freezing, node pinning, automated arrangement of nodes, copy image\n[w/failfast-comfyui-extensions is renamed to blibla-comfyui-extensions. Please resintall to this.]" - }, - { - "author": "Pfaeff", - "title": "pfaeff-comfyui", - "id": "pfaeff", - "reference": "https://github.com/Pfaeff/pfaeff-comfyui", - "files": [ - "https://github.com/Pfaeff/pfaeff-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes: AstropulsePixelDetector, BackgroundRemover, ImagePadForBetterOutpaint, InpaintingPipelineLoader, Inpainting, ..." - }, - { - "author": "wallish77", - "title": "wlsh_nodes", - "id": "wlsh", - "reference": "https://github.com/wallish77/wlsh_nodes", - "files": [ - "https://github.com/wallish77/wlsh_nodes" - ], - "install_type": "git-clone", - "description": "Nodes: Checkpoint Loader with Name, Save Prompt Info, Outpaint to Image, CLIP Positive-Negative, SDXL Quick Empty Latent, Empty Latent by Ratio, Time String, SDXL Steps, SDXL Resolutions ..." - }, - { - "author": "Kosinkadink", - "title": "ComfyUI-Advanced-ControlNet", - "id": "adv-cnet", - "reference": "https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet", - "files": [ - "https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet" - ], - "install_type": "git-clone", - "description": "Nodes for scheduling ControlNet strength across timesteps and batched latents, as well as applying custom weights and attention masks." - }, - { - "author": "Kosinkadink", - "title": "AnimateDiff Evolved", - "id": "ad-evolved", - "reference": "https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved", - "files": [ - "https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved" - ], - "install_type": "git-clone", - "description": "A forked repository that actively maintains [a/AnimateDiff](https://github.com/ArtVentureX/comfyui-animatediff), created by ArtVentureX.\n\nImproved AnimateDiff integration for ComfyUI, adapts from sd-webui-animatediff.\n[w/Download one or more motion models from [a/Original Models](https://huggingface.co/guoyww/animatediff/tree/main) | [a/Finetuned Models](https://huggingface.co/manshoety/AD_Stabilized_Motion/tree/main). See README for additional model links and usage. Put the model weights under %%ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models%%. You are free to rename the models, but keeping original names will ease use when sharing your workflow.]" - }, - { - "author": "Kosinkadink", - "title": "ComfyUI-VideoHelperSuite", - "id": "vhs", - "reference": "https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite", - "files": [ - "https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite" - ], - "install_type": "git-clone", - "description": "Nodes related to video workflows" - }, - { - "author": "Gourieff", - "title": "ComfyUI-FutureWarningIgnore", - "id": "futureignore", - "reference": "https://github.com/Gourieff/ComfyUI-FutureWarningIgnore", - "files": [ - "https://raw.githubusercontent.com/Gourieff/ComfyUI-FutureWarningIgnore/main/0_FutureWarningIgnore.py" - ], - "install_type": "copy", - "description": "This extension collapses 'future warning' messages in your Console" - }, - { - "author": "Gourieff", - "title": "comfyui-reactor-node", - "reference": "https://github.com/Gourieff/ComfyUI-ReActor", - "files": [ - "https://github.com/Gourieff/ComfyUI-ReActor" - ], - "install_type": "git-clone", - "description": "The Fast and Simple Face Swap Extension Node for ComfyUI, based on ReActor SD-WebUI Face Swap Extension" - }, - { - "author": "imb101", - "title": "FaceSwap", - "id": "faceswap", - "reference": "https://github.com/imb101/ComfyUI-FaceSwap", - "files": [ - "https://github.com/imb101/ComfyUI-FaceSwap" - ], - "install_type": "git-clone", - "description": "Nodes:FaceSwapNode. Very basic custom node to enable face swapping in ComfyUI. (roop)" - }, - { - "author": "Chaoses-Ib", - "title": "ComfyUI_Ib_CustomNodes", - "id": "ib-nodes", - "reference": "https://github.com/Chaoses-Ib/ComfyUI_Ib_CustomNodes", - "files": [ - "https://github.com/Chaoses-Ib/ComfyUI_Ib_CustomNodes" - ], - "install_type": "git-clone", - "description": "Nodes: LoadImageFromPath. Load Image From Path loads the image from the source path and does not have such problems." - }, - { - "author": "AIrjen", - "title": "One Button Prompt", - "id": "1button", - "reference": "https://github.com/AIrjen/OneButtonPrompt", - "files": [ - "https://github.com/AIrjen/OneButtonPrompt" - ], - "install_type": "git-clone", - "description": "One Button Prompt has a prompt generation node for beginners who have problems writing a good prompt, or advanced users who want to get inspired. It generates an entire prompt from scratch. It is random, but controlled. You simply load up the script and press generate, and let it surprise you." - }, - { - "author": "coreyryanhanson", - "title": "ComfyQR", - "id": "comfyqr", - "reference": "https://github.com/coreyryanhanson/ComfyQR", - "files": [ - "https://github.com/coreyryanhanson/ComfyQR" - ], - "install_type": "git-clone", - "description": "QR generation within ComfyUI. Contains nodes suitable for workflows from generating basic QR images to techniques with advanced QR masking." - }, - { - "author": "coreyryanhanson", - "title": "ComfyQR-scanning-nodes", - "id": "comfyqr-scanning", - "reference": "https://github.com/coreyryanhanson/ComfyQR-scanning-nodes", - "files": [ - "https://github.com/coreyryanhanson/ComfyQR-scanning-nodes" - ], - "install_type": "git-clone", - "description": "A set of ComfyUI nodes to quickly test generated QR codes for scannability. A companion project to ComfyQR." - }, - { - "author": "dimtoneff", - "title": "ComfyUI PixelArt Detector", - "id": "pixelart-detector", - "reference": "https://github.com/dimtoneff/ComfyUI-PixelArt-Detector", - "files": [ - "https://github.com/dimtoneff/ComfyUI-PixelArt-Detector" - ], - "install_type": "git-clone", - "description": "This node manipulates the pixel art image in ways that it should look pixel perfect (downscales, changes palette, upscales etc.)." - }, - { - "author": "hylarucoder", - "title": "comfyui-copilot", - "reference": "https://github.com/hylarucoder/comfyui-copilot", - "files": [ - "https://github.com/hylarucoder/comfyui-copilot" - ], - "install_type": "git-clone", - "description": "NODES:Eagle Image Node for PNGInfo, SDXL Resolution Presets (ws), SDXL Prompt Styler, SDXL Prompt Styler Advanced" - }, - { - "author": "theUpsider", - "title": "Styles CSV Loader Extension for ComfyUI", - "id": "styles-csv-loader", - "reference": "https://github.com/theUpsider/ComfyUI-Styles_CSV_Loader", - "files": [ - "https://github.com/theUpsider/ComfyUI-Styles_CSV_Loader" - ], - "install_type": "git-clone", - "description": "This extension allows users to load styles from a CSV file, primarily for migration purposes from the automatic1111 Stable Diffusion web UI." - }, - { - "author": "theUpsider", - "title": "ComfyUI-Logic", - "id": "comfy-logic", - "reference": "https://github.com/theUpsider/ComfyUI-Logic", - "files": [ - "https://github.com/theUpsider/ComfyUI-Logic" - ], - "install_type": "git-clone", - "description": "An extension to ComfyUI that introduces logic nodes and conditional rendering capabilities." - }, - { - "author": "M1kep", - "title": "Comfy_KepListStuff", - "id": "keplist", - "reference": "https://github.com/M1kep/Comfy_KepListStuff", - "files": [ - "https://github.com/M1kep/Comfy_KepListStuff" - ], - "install_type": "git-clone", - "description": "Nodes: Range(Step), Range(Num Steps), List Length, Image Overlay, Stack Images, Empty Images, Join Image Lists, Join Float Lists. This extension provides various list manipulation nodes" - }, - { - "author": "M1kep", - "title": "ComfyLiterals", - "id": "comfyliterals", - "reference": "https://github.com/M1kep/ComfyLiterals", - "files": [ - "https://github.com/M1kep/ComfyLiterals" - ], - "install_type": "git-clone", - "description": "Nodes: Int, Float, String, Operation, Checkpoint" - }, - { - "author": "M1kep", - "title": "KepPromptLang", - "id": "kepprompt", - "reference": "https://github.com/M1kep/KepPromptLang", - "files": [ - "https://github.com/M1kep/KepPromptLang" - ], - "install_type": "git-clone", - "description": "Nodes: Build Gif, Special CLIP Loader. It offers various manipulation capabilities for the internal operations of the prompt." - }, - { - "author": "M1kep", - "title": "Comfy_KepMatteAnything", - "id": "kepmatte", - "reference": "https://github.com/M1kep/Comfy_KepMatteAnything", - "files": [ - "https://github.com/M1kep/Comfy_KepMatteAnything" - ], - "install_type": "git-clone", - "description": "This extension provides a custom node that allows the use of [a/Matte Anything](https://github.com/hustvl/Matte-Anything) in ComfyUI." - }, - { - "author": "M1kep", - "title": "Comfy_KepKitchenSink", - "id": "kepkitchen", - "reference": "https://github.com/M1kep/Comfy_KepKitchenSink", - "files": [ - "https://github.com/M1kep/Comfy_KepKitchenSink" - ], - "install_type": "git-clone", - "description": "Nodes: KepRotateImage" - }, - { - "author": "M1kep", - "title": "ComfyUI-OtherVAEs", - "id": "kep-othervae", - "reference": "https://github.com/M1kep/ComfyUI-OtherVAEs", - "files": [ - "https://github.com/M1kep/ComfyUI-OtherVAEs" - ], - "install_type": "git-clone", - "description": "Nodes: TAESD VAE Decode" - }, - { - "author": "M1kep", - "title": "ComfyUI-KepOpenAI", - "id": "kep-openai", - "reference": "https://github.com/M1kep/ComfyUI-KepOpenAI", - "files": [ - "https://github.com/M1kep/ComfyUI-KepOpenAI" - ], - "install_type": "git-clone", - "description": "ComfyUI-KepOpenAI is a user-friendly node that serves as an interface to the GPT-4 with Vision (GPT-4V) API. This integration facilitates the processing of images coupled with text prompts, leveraging the capabilities of the OpenAI API to generate text completions that are contextually relevant to the provided inputs." - }, - { - "author": "uarefans", - "title": "ComfyUI-Fans", - "id": "fans", - "reference": "https://github.com/uarefans/ComfyUI-Fans", - "files": [ - "https://github.com/uarefans/ComfyUI-Fans" - ], - "install_type": "git-clone", - "description": "Nodes: Fans Styler (Max 10 Style), Fans Text Concat (Until 10 text), Fans Prompt Styler Postive (Can replace {prompt} word in your csv files), Fans Prompt Styler Negative (With sentence structure)." - }, - { - "author": "NicholasMcCarthy", - "title": "ComfyUI_TravelSuite", - "id": "travel", - "reference": "https://github.com/NicholasMcCarthy/ComfyUI_TravelSuite", - "files": [ - "https://github.com/NicholasMcCarthy/ComfyUI_TravelSuite" - ], - "install_type": "git-clone", - "description": "ComfyUI custom nodes to apply various latent travel techniques." - }, - { - "author": "ManglerFTW", - "title": "ComfyI2I", - "id": "comfyi2i", - "reference": "https://github.com/ManglerFTW/ComfyI2I", - "files": [ - "https://github.com/ManglerFTW/ComfyI2I" - ], - "install_type": "git-clone", - "description": "A set of custom nodes to perform image 2 image functions in ComfyUI." - }, - { - "author": "m-sokes", - "title": "ComfyUI Sokes Nodes", - "id": "sokes", - "reference": "https://github.com/m-sokes/ComfyUI-Sokes-Nodes", - "files": [ - "https://github.com/m-sokes/ComfyUI-Sokes-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes: Empty Latent Randomizer (9 Inputs)" - }, - { - "author": "Extraltodeus", - "title": "noise latent perlinpinpin", - "id": "perlipinpin", - "reference": "https://github.com/Extraltodeus/noise_latent_perlinpinpin", - "files": [ - "https://github.com/Extraltodeus/noise_latent_perlinpinpin" - ], - "install_type": "git-clone", - "description": "Nodes: NoisyLatentPerlin. This allows to create latent spaces filled with perlin-based noise that can actually be used by the samplers." - }, - { - "author": "Extraltodeus", - "title": "LoadLoraWithTags", - "reference": "https://github.com/Extraltodeus/LoadLoraWithTags", - "files": [ - "https://github.com/Extraltodeus/LoadLoraWithTags" - ], - "install_type": "git-clone", - "description": "Nodes:LoadLoraWithTags. Save/Load trigger words for loras from a json and auto fetch them on civitai if they are missing." - }, - { - "author": "Extraltodeus", - "title": "sigmas_tools_and_the_golden_scheduler", - "id": "sigmas-tools", - "reference": "https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler", - "files": [ - "https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler" - ], - "install_type": "git-clone", - "description": "A few nodes to mix sigmas and a custom scheduler that uses phi, then one using eval() to be able to schedule with custom formulas." - }, - { - "author": "Extraltodeus", - "title": "ComfyUI-AutomaticCFG", - "id": "autocfg", - "reference": "https://github.com/Extraltodeus/ComfyUI-AutomaticCFG", - "files": [ - "https://github.com/Extraltodeus/ComfyUI-AutomaticCFG" - ], - "install_type": "git-clone", - "description": "My own version 'from scratch' of a self-rescaling CFG. It isn't much but it's honest work.\nTLDR: set your CFG at 8 to try it. No burned images and artifacts anymore. CFG is also a bit more sensitive because it's a proportion around 8. Low scale like 4 also gives really nice results since your CFG is not the CFG anymore. Also in general even with relatively low settings it seems to improve the quality." - }, - { - "author": "Extraltodeus", - "title": "Vector_Sculptor_ComfyUI", - "id": "vector-sculptor", - "reference": "https://github.com/Extraltodeus/Vector_Sculptor_ComfyUI", - "files": [ - "https://github.com/Extraltodeus/Vector_Sculptor_ComfyUI" - ], - "install_type": "git-clone", - "description": "The main node makes your conditioning go towards similar concepts so to enrich your composition or further away so to make it more precise. It gathers similar pre-cond vectors for as long as the cosine similarity score diminishes. If it climbs back it stops. This allows to set a relative direction to similar concepts.\nThere are examples at the end but [a/you can also check this imgur album](https://imgur.com/a/WvPd81Y) which demonstrates the capability of improving variety." - }, - { - "author": "Extraltodeus", - "title": "Stable-Diffusion-temperature-settings", - "id": "sd-temperature", - "reference": "https://github.com/Extraltodeus/Stable-Diffusion-temperature-settings", - "files": [ - "https://github.com/Extraltodeus/Stable-Diffusion-temperature-settings" - ], - "install_type": "git-clone", - "description": "Provides the ability to set the temperature for both UNET and CLIP. For ComfyUI." - }, - { - "author": "Extraltodeus", - "title": "Uncond-Zero-for-ComfyUI", - "id": "uncond-zero", - "reference": "https://github.com/Extraltodeus/Uncond-Zero-for-ComfyUI", - "files": [ - "https://github.com/Extraltodeus/Uncond-Zero-for-ComfyUI" - ], - "install_type": "git-clone", - "description": "Allows to sample without generating any uncond with Stable Diffusion!" - }, - { - "author": "Extraltodeus", - "title": "pre_cfg_comfy_nodes_for_ComfyUI", - "id": "precfg", - "reference": "https://github.com/Extraltodeus/pre_cfg_comfy_nodes_for_ComfyUI", - "files": [ - "https://github.com/Extraltodeus/pre_cfg_comfy_nodes_for_ComfyUI" - ], - "install_type": "git-clone", - "description": "A set of nodes to prepare the noise predictions before the CFG function" - }, - { - "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": "Extraltodeus", - "title": "DistanceSampler", - "id": "distancesampler", - "reference": "https://github.com/Extraltodeus/DistanceSampler", - "files": [ - "https://github.com/Extraltodeus/Skimmed_CFG" - ], - "install_type": "git-clone", - "description": "Heuristic modification of the Heun sampler using a custom function based on normalized distances. For ComfyUI." - }, - { - "author": "JPS", - "title": "JPS Custom Nodes for ComfyUI", - "id": "jps-nodes", - "reference": "https://github.com/JPS-GER/ComfyUI_JPS-Nodes", - "files": [ - "https://github.com/JPS-GER/ComfyUI_JPS-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes: Various nodes to handle SDXL Resolutions, SDXL Basic Settings, IP Adapter Settings, Revision Settings, SDXL Prompt Styler, Crop Image to Square, Crop Image to Target Size, Get Date-Time String, Resolution Multiply, Largest Integer, 5-to-1 Switches for Integer, Images, Latents, Conditioning, Model, VAE, ControlNet" - }, - { - "author": "hustille", - "title": "hus' utils for ComfyUI", - "id": "husutil", - "reference": "https://github.com/hustille/ComfyUI_hus_utils", - "files": [ - "https://github.com/hustille/ComfyUI_hus_utils" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes primarily for seed and filename generation" - }, - { - "author": "hustille", - "title": "ComfyUI_Fooocus_KSampler", - "id": "fooocus-ksampler", - "reference": "https://github.com/hustille/ComfyUI_Fooocus_KSampler", - "files": [ - "https://github.com/hustille/ComfyUI_Fooocus_KSampler" - ], - "install_type": "git-clone", - "description": "Nodes: KSampler With Refiner (Fooocus). The KSampler from [a/Fooocus](https://github.com/lllyasviel/Fooocus) as a ComfyUI node [w/NOTE: This patches basic ComfyUI behaviour - don't use together with other samplers. Or perhaps do? Other samplers might profit from those changes ... ymmv.]" - }, - { - "author": "badjeff", - "title": "LoRA Tag Loader for ComfyUI", - "id": "lora-tag-loader", - "reference": "https://github.com/badjeff/comfyui_lora_tag_loader", - "files": [ - "https://github.com/badjeff/comfyui_lora_tag_loader" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node to read LoRA tag(s) from text and load it into checkpoint model." - }, - { - "author": "rgthree", - "title": "rgthree's ComfyUI Nodes", - "id": "rgthree", - "reference": "https://github.com/rgthree/rgthree-comfy", - "files": [ - "https://github.com/rgthree/rgthree-comfy" - ], - "nodename_pattern": " \\(rgthree\\)$", - "install_type": "git-clone", - "description": "Nodes: Seed, Reroute, Context, Lora Loader Stack, Context Switch, Fast Muter. These custom nodes helps organize the building of complex workflows." - }, - { - "author": "AIGODLIKE", - "title": "AIGODLIKE-COMFYUI-TRANSLATION", - "id": "translation", - "reference": "https://github.com/AIGODLIKE/AIGODLIKE-COMFYUI-TRANSLATION", - "files": [ - "https://github.com/AIGODLIKE/AIGODLIKE-COMFYUI-TRANSLATION" - ], - "install_type": "git-clone", - "description": "It provides language settings. (Contribution from users of various languages is needed due to the support for each language.)" - }, - { - "author": "AIGODLIKE", - "title": "AIGODLIKE-ComfyUI-Studio", - "id": "comfy-studio", - "reference": "https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Studio", - "files": [ - "https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Studio" - ], - "install_type": "git-clone", - "description": "Improve the interactive experience of using ComfyUI, such as making the loading of ComfyUI models more intuitive and making it easier to create model thumbnails" - }, - { - "author": "AIGODLIKE", - "title": "ComfyUI-CUP", - "id": "comfycup", - "reference": "https://github.com/AIGODLIKE/ComfyUI-CUP", - "files": [ - "https://github.com/AIGODLIKE/ComfyUI-CUP" - ], - "install_type": "git-clone", - "description": "Bridge between ComfyUI and blender's ComfyUI-BlenderAI-node addon." - }, - { - "author": "AIGODLIKE", - "title": "ComfyUI-ToonCrafter", - "id": "tooncrafter", - "reference": "https://github.com/AIGODLIKE/ComfyUI-ToonCrafter", - "files": [ - "https://github.com/AIGODLIKE/ComfyUI-ToonCrafter" - ], - "install_type": "git-clone", - "description": "This project is used to enable [a/ToonCrafter](https://github.com/ToonCrafter/ToonCrafter) to be used in ComfyUI.\nYou can use it to achieve generative keyframe animation\nAnd use it in Blender for animation rendering and prediction" - }, - { - "author": "syllebra", - "title": "BilboX's ComfyUI Custom Nodes", - "id": "bilbox", - "reference": "https://github.com/syllebra/bilbox-comfyui", - "files": [ - "https://github.com/syllebra/bilbox-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes: BilboX's PromptGeek Photo Prompt. This provides a convenient way to compose photorealistic prompts into ComfyUI. Post-Processing: adds various post processing effects. Bonus: Option to show a distant server shutdown menu." - }, - { - "author": "Girish Gopaul", - "title": "Save Image with Generation Metadata", - "id": "image-saver", - "reference": "https://github.com/giriss/comfy-image-saver", - "files": [ - "https://github.com/giriss/comfy-image-saver" - ], - "install_type": "git-clone", - "description": "All the tools you need to save images with their generation metadata on ComfyUI. Compatible with Civitai & Prompthero geninfo auto-detection. Works with png, jpeg and webp." - }, - { - "author": "shingo1228", - "title": "ComfyUI-send-Eagle(slim)", - "id": "send-eagle", - "reference": "https://github.com/shingo1228/ComfyUI-send-eagle-slim", - "files": [ - "https://github.com/shingo1228/ComfyUI-send-eagle-slim" - ], - "install_type": "git-clone", - "description": "Nodes:Send Webp Image to Eagle. This is an extension node for ComfyUI that allows you to send generated images in webp format to Eagle. This extension node is a re-implementation of the Eagle linkage functions of the previous ComfyUI-send-Eagle node, focusing on the functions required for this node." - }, - { - "author": "shingo1228", - "title": "ComfyUI-SDXL-EmptyLatentImage", - "id": "sdxl-emptylatent", - "reference": "https://github.com/shingo1228/ComfyUI-SDXL-EmptyLatentImage", - "files": [ - "https://github.com/shingo1228/ComfyUI-SDXL-EmptyLatentImage" - ], - "install_type": "git-clone", - "description": "Nodes:SDXL Empty Latent Image. An extension node for ComfyUI that allows you to select a resolution from the pre-defined json files and output a Latent Image." - }, - { - "author": "laksjdjf", - "title": "pfg-ComfyUI", - "id": "pfg", - "reference": "https://github.com/laksjdjf/pfg-ComfyUI", - "files": [ - "https://github.com/laksjdjf/pfg-ComfyUI" - ], - "install_type": "git-clone", - "description": "ComfyUI version of https://github.com/laksjdjf/pfg-webui. (To use this extension, you need to download the required model file from **Install Models**)" - }, - { - "author": "laksjdjf", - "title": "cgem156-ComfyUI🍌", - "id": "cgem156", - "reference": "https://github.com/laksjdjf/cgem156-ComfyUI", - "files": [ - "https://github.com/laksjdjf/cgem156-ComfyUI" - ], - "install_type": "git-clone", - "description": "The custom nodes of laksjdjf have been integrated into the node pack of cgem156🍌.\nNOTE:This includes the attention couple feature." - }, - { - "author": "laksjdjf", - "title": "cd-tuner_negpip-ComfyUI", - "id": "cdtuner", - "reference": "https://github.com/laksjdjf/cd-tuner_negpip-ComfyUI", - "files": [ - "https://github.com/laksjdjf/cd-tuner_negpip-ComfyUI" - ], - "install_type": "git-clone", - "description": "Nodes:Apply CDTuner, Apply Negapip. This extension provides the [a/CD(Color/Detail) Tuner](https://github.com/hako-mikan/sd-webui-cd-tuner) and the [a/Negative Prompt in the Prompt](https://github.com/hako-mikan/sd-webui-negpip) features." - }, - { - "author": "laksjdjf", - "title": "LCMSampler-ComfyUI", - "id": "lcm-sampler", - "reference": "https://github.com/laksjdjf/LCMSampler-ComfyUI", - "files": [ - "https://github.com/laksjdjf/LCMSampler-ComfyUI" - ], - "install_type": "git-clone", - "description": "This extension node is intended for the use of LCM conversion for SSD-1B-anime. It does not guarantee operation with the original LCM (as it cannot load weights in the current version). To take advantage of fast generation with LCM, a node for using TAESD as a decoder is also provided. This is inspired by ComfyUI-OtherVAEs." - }, - { - "author": "laksjdjf", - "title": "LoRTnoC-ComfyUI", - "id": "lortnoc", - "reference": "https://github.com/laksjdjf/LoRTnoC-ComfyUI", - "files": [ - "https://github.com/laksjdjf/LoRTnoC-ComfyUI" - ], - "install_type": "git-clone", - "description": "This is a repository for using LoRTnoC (LoRA with hint block of ControlNet) on ComfyUI.\nNOTE:Please place the model file in the same location as controlnet. (Is this too arbitrary?)" - }, - { - "author": "laksjdjf", - "title": "Batch-Condition-ComfyUI", - "id": "batch-condition", - "reference": "https://github.com/laksjdjf/Batch-Condition-ComfyUI", - "files": [ - "https://github.com/laksjdjf/Batch-Condition-ComfyUI" - ], - "install_type": "git-clone", - "description": "Nodes:CLIP Text Encode (Batch), String Input, Batch String" - }, - { - "author": "alsritter", - "title": "asymmetric-tiling-comfyui", - "id": "asymmetric", - "reference": "https://github.com/alsritter/asymmetric-tiling-comfyui", - "files": [ - "https://github.com/alsritter/asymmetric-tiling-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:Asymmetric_Tiling_KSampler. " - }, - { - "author": "meap158", - "title": "GPU temperature protection", - "id": "gputemp", - "reference": "https://github.com/meap158/ComfyUI-GPU-temperature-protection", - "files": [ - "https://github.com/meap158/ComfyUI-GPU-temperature-protection" - ], - "install_type": "git-clone", - "description": "Pause image generation when GPU temperature exceeds threshold." - }, - { - "author": "meap158", - "title": "ComfyUI-Prompt-Expansion", - "id": "promtp-expansion", - "reference": "https://github.com/meap158/ComfyUI-Prompt-Expansion", - "files": [ - "https://github.com/meap158/ComfyUI-Prompt-Expansion" - ], - "install_type": "git-clone", - "description": "Dynamic prompt expansion, powered by GPT-2 locally on your device." - }, - { - "author": "meap158", - "title": "ComfyUI-Background-Replacement", - "id": "bg-replacement", - "reference": "https://github.com/meap158/ComfyUI-Background-Replacement", - "files": [ - "https://github.com/meap158/ComfyUI-Background-Replacement" - ], - "install_type": "git-clone", - "description": "Instantly replace your image's background." - }, - { - "author": "TeaCrab", - "title": "ComfyUI-TeaNodes", - "id": "teanodes", - "reference": "https://github.com/TeaCrab/ComfyUI-TeaNodes", - "files": [ - "https://github.com/TeaCrab/ComfyUI-TeaNodes" - ], - "install_type": "git-clone", - "description": "Nodes:TC_EqualizeCLAHE, TC_SizeApproximation, TC_ImageResize, TC_ImageScale, TC_ColorFill." - }, - { - "author": "nagolinc", - "title": "ComfyUI_FastVAEDecorder_SDXL", - "reference": "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL", - "files": [ - "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL" - ], - "install_type": "git-clone", - "description": "Based off of: [a/Birch-san/diffusers-play/approx_vae](https://github.com/Birch-san/diffusers-play/tree/main/approx_vae). This ComfyUI node allows you to quickly preview SDXL 1.0 latents." - }, - { - "author": "nagolinc", - "title": "comfyui_openai_node", - "reference": "https://github.com/nagolinc/comfyui_openai_node", - "files": [ - "https://github.com/nagolinc/comfyui_openai_node" - ], - "install_type": "git-clone", - "description": "This provides a single node openai > Open AI query node\nthat takes a system prompt and user message and sends them to chatGPT 3.5\nNote, you MUST have an OPEN AI API key stored in the environment variable OPENAI_API_KEY in order for this to work." - }, - { - "author": "bradsec", - "title": "ResolutionSelector for ComfyUI", - "id": "resolution-selector", - "reference": "https://github.com/bradsec/ComfyUI_ResolutionSelector", - "files": [ - "https://github.com/bradsec/ComfyUI_ResolutionSelector" - ], - "install_type": "git-clone", - "description": "A custom node for Stable Diffusion ComfyUI to enable easy selection of image resolutions for SDXL SD15 SD21" - }, - { - "author": "kohya-ss", - "title": "ControlNet-LLLite-ComfyUI", - "id": "lllite", - "reference": "https://github.com/kohya-ss/ControlNet-LLLite-ComfyUI", - "files": [ - "https://github.com/kohya-ss/ControlNet-LLLite-ComfyUI" - ], - "install_type": "git-clone", - "description": "Nodes: LLLiteLoader" - }, - { - "author": "jjkramhoeft", - "title": "ComfyUI-Jjk-Nodes", - "id": "jjk", - "reference": "https://github.com/jjkramhoeft/ComfyUI-Jjk-Nodes", - "files": [ - "https://github.com/jjkramhoeft/ComfyUI-Jjk-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes: SDXLRecommendedImageSize, JjkText, JjkShowText, JjkConcat. A set of custom nodes for ComfyUI - focused on text and parameter utility" - }, - { - "author": "dagthomas", - "title": "SDXL Auto Prompter", - "id": "autoprompt", - "reference": "https://github.com/dagthomas/comfyui_dagthomas", - "files": [ - "https://github.com/dagthomas/comfyui_dagthomas" - ], - "install_type": "git-clone", - "description": "Easy prompting for generation of endless random art pieces and photographs!" - }, - { - "author": "marhensa", - "title": "Recommended Resolution Calculator", - "id": "resoultion-calc", - "reference": "https://github.com/marhensa/sdxl-recommended-res-calc", - "files": [ - "https://github.com/marhensa/sdxl-recommended-res-calc" - ], - "install_type": "git-clone", - "description": "Input your desired output final resolution, it will automaticaly set the initial recommended SDXL ratio/size and its Upscale Factor to reach that output final resolution, also there's an option for 2x/4x reverse Upscale Factor. These all to avoid using bad/arbitary initial ratio/resolution." - }, - { - "author": "Nuked", - "title": "ComfyUI-N-Nodes", - "id": "nnodes", - "reference": "https://github.com/Nuked88/ComfyUI-N-Nodes", - "files": [ - "https://github.com/Nuked88/ComfyUI-N-Nodes" - ], - "install_type": "git-clone", - "description": "A suite of custom nodes for ConfyUI that includes GPT text-prompt generation, LoadVideo,SaveVideo,LoadFramesFromFolder and FrameInterpolator" - }, - { - "author": "Nuked", - "title": "ComfyUI-N-Sidebar", - "id": "nsidebar", - "reference": "https://github.com/Nuked88/ComfyUI-N-Sidebar", - "files": [ - "https://github.com/Nuked88/ComfyUI-N-Sidebar" - ], - "install_type": "git-clone", - "description": "A simple sidebar for ComfyUI." - }, - { - "author": "richinsley", - "title": "Comfy-LFO", - "id": "lfo", - "reference": "https://github.com/richinsley/Comfy-LFO", - "files": [ - "https://github.com/richinsley/Comfy-LFO" - ], - "install_type": "git-clone", - "description": "Nodes:LFO_Triangle, LFO_Sine, SawtoothNode, SquareNode, PulseNode. ComfyUI custom nodes to create Low Frequency Oscillators." - }, - { - "author": "Beinsezii", - "title": "bsz-cui-extras", - "id": "bsz", - "reference": "https://github.com/Beinsezii/bsz-cui-extras", - "files": [ - "https://github.com/Beinsezii/bsz-cui-extras" - ], - "install_type": "git-clone", - "description": "This contains all-in-one 'principled' nodes for T2I, I2I, refining, and scaling. Additionally it has many tools for directly manipulating the color of latents, high res fix math, and scripted image post-processing." - }, - { - "author": "youyegit", - "title": "tdxh_node_comfyui", - "id": "tdxh", - "reference": "https://github.com/youyegit/tdxh_node_comfyui", - "files": [ - "https://github.com/youyegit/tdxh_node_comfyui" - ], - "install_type": "git-clone", - "description": "Add Switch on nodes, Make nodes amount small! It helps conveniently to use less nodes for doing the same things." - }, - { - "author": "Sxela", - "title": "ComfyWarp", - "id": "comfywarp", - "reference": "https://github.com/Sxela/ComfyWarp", - "files": [ - "https://github.com/Sxela/ComfyWarp" - ], - "install_type": "git-clone", - "description": "WarpFusion workflow wrapper for ComfyUI" - }, - { - "author": "skfoo", - "title": "ComfyUI-Coziness", - "id": "coziness", - "reference": "https://github.com/skfoo/ComfyUI-Coziness", - "files": [ - "https://github.com/skfoo/ComfyUI-Coziness" - ], - "install_type": "git-clone", - "description": "Nodes:MultiLora Loader, Lora Text Extractor. Provides a node for assisting in loading loras through text." - }, - { - "author": "YOUR-WORST-TACO", - "title": "ComfyUI-TacoNodes", - "id": "taco", - "reference": "https://github.com/YOUR-WORST-TACO/ComfyUI-TacoNodes", - "files": [ - "https://github.com/YOUR-WORST-TACO/ComfyUI-TacoNodes" - ], - "install_type": "git-clone", - "description": "Nodes:TacoLatent, TacoAnimatedLoader, TacoImg2ImgAnimatedLoader, TacoGifMaker." - }, - { - "author": "Lerc", - "title": "Canvas Tab", - "id": "canvastab", - "reference": "https://github.com/Lerc/canvas_tab", - "files": [ - "https://github.com/Lerc/canvas_tab" - ], - "install_type": "git-clone", - "description": "This extension provides a full page image editor with mask support. There are two nodes, one to receive images from the editor and one to send images to the editor." - }, - { - "author": "Ttl", - "title": "ComfyUI Neural Network Latent Upscale", - "id": "nnlatent", - "reference": "https://github.com/Ttl/ComfyUi_NNLatentUpscale", - "files": [ - "https://github.com/Ttl/ComfyUi_NNLatentUpscale" - ], - "install_type": "git-clone", - "preemptions": ["NNLatentUpscale"], - "description": "Nodes:NNLatentUpscale, A custom ComfyUI node designed for rapid latent upscaling using a compact neural network, eliminating the need for VAE-based decoding and encoding." - }, - { - "author": "spro", - "title": "Latent Mirror node for ComfyUI", - "id": "latentmirror", - "reference": "https://github.com/spro/comfyui-mirror", - "files": [ - "https://github.com/spro/comfyui-mirror" - ], - "install_type": "git-clone", - "description": "Nodes: Latent Mirror. Node to mirror a latent along the Y (vertical / left to right) or X (horizontal / top to bottom) axis." - }, - { - "author": "Tropfchen", - "title": "Embedding Picker", - "id": "embedding-picker", - "reference": "https://github.com/Tropfchen/ComfyUI-Embedding_Picker", - "files": [ - "https://github.com/Tropfchen/ComfyUI-Embedding_Picker" - ], - "install_type": "git-clone", - "description": "Tired of forgetting and misspelling often weird names of embeddings you use? Or perhaps you use only one, cause you forgot you have tens of them installed?" - }, - { - "author": "Acly", - "title": "ComfyUI Nodes for External Tooling", - "id": "external-tooling", - "reference": "https://github.com/Acly/comfyui-tooling-nodes", - "files": [ - "https://github.com/Acly/comfyui-tooling-nodes" - ], - "install_type": "git-clone", - "description": "Provides nodes and server API extensions geared towards using ComfyUI as a backend for external tools." - }, - { - "author": "Acly", - "title": "ComfyUI Inpaint Nodes", - "id": "inpaint-nodes", - "reference": "https://github.com/Acly/comfyui-inpaint-nodes", - "files": [ - "https://github.com/Acly/comfyui-inpaint-nodes" - ], - "install_type": "git-clone", - "description": "Nodes for better inpainting with ComfyUI. Adds various ways to pre-process inpaint areas. Supports the Fooocus inpaint model, a small and flexible patch which can be applied to any SDXL checkpoint and will improve consistency when generating masked areas." - }, - { - "author": "picturesonpictures", - "title": "comfy_PoP", - "id": "pop", - "reference": "https://github.com/picturesonpictures/comfy_PoP", - "files": ["https://github.com/picturesonpictures/comfy_PoP"], - "install_type": "git-clone", - "description": "A collection of custom nodes for ComfyUI. Includes a quick canny edge detection node with unconventional settings, simple LoRA stack nodes for workflow efficiency, and a customizable aspect ratio node." - }, - { - "author": "Dream Project", - "title": "Dream Project Animation Nodes", - "id": "dream-anime", - "reference": "https://github.com/alt-key-project/comfyui-dream-project", - "files": [ - "https://github.com/alt-key-project/comfyui-dream-project" - ], - "install_type": "git-clone", - "description": "This extension offers various nodes that are useful for Deforum-like animations in ComfyUI." - }, - { - "author": "Dream Project", - "title": "Dream Video Batches", - "id": "dream-video", - "reference": "https://github.com/alt-key-project/comfyui-dream-video-batches", - "files": [ - "https://github.com/alt-key-project/comfyui-dream-video-batches" - ], - "install_type": "git-clone", - "description": "Provide utilities for batch based video generation workflows (s.a. AnimateDiff and Stable Video Diffusion)." - }, - { - "author": "seanlynch", - "title": "ComfyUI Optical Flow", - "id": "optical-flow", - "reference": "https://github.com/seanlynch/comfyui-optical-flow", - "files": [ - "https://github.com/seanlynch/comfyui-optical-flow" - ], - "install_type": "git-clone", - "description": "This package contains three nodes to help you compute optical flow between pairs of images, usually adjacent frames in a video, visualize the flow, and apply the flow to another image of the same dimensions. Most of the code is from Deforum, so this is released under the same license (MIT)." - }, - { - "author": "ealkanat", - "title": "ComfyUI Easy Padding", - "id": "easy-padding", - "reference": "https://github.com/ealkanat/comfyui-easy-padding", - "files": [ - "https://github.com/ealkanat/comfyui-easy-padding" - ], - "install_type": "git-clone", - "description": "ComfyUI Easy Padding is a simple custom ComfyUI node that helps you to add padding to images on ComfyUI." - }, - { - "author": "ArtBot2023", - "title": "Character Face Swap", - "id": "char-faceswap", - "reference": "https://github.com/ArtBot2023/CharacterFaceSwap", - "files": [ - "https://github.com/ArtBot2023/CharacterFaceSwap" - ], - "install_type": "git-clone", - "description": "Character face swap with LoRA and embeddings." - }, - { - "author": "mav-rik", - "title": "Facerestore CF (Code Former)", - "id": "face-cf", - "reference": "https://github.com/mav-rik/facerestore_cf", - "files": [ - "https://github.com/mav-rik/facerestore_cf" - ], - "install_type": "git-clone", - "description": "This is a copy of [a/facerestore custom node](https://civitai.com/models/24690/comfyui-facerestore-node) with a bit of a change to support CodeFormer Fidelity parameter. These ComfyUI nodes can be used to restore faces in images similar to the face restore option in AUTOMATIC1111 webui.\nNOTE: To use this node, you need to download the face restoration model and face detection model from the 'Install models' menu." - }, - { - "author": "braintacles", - "title": "braintacles-nodes", - "id": "braintacles", - "reference": "https://github.com/braintacles/braintacles-comfyui-nodes", - "files": [ - "https://github.com/braintacles/braintacles-comfyui-nodes" - ], - "install_type": "git-clone", - "description": "Nodes: CLIPTextEncodeSDXL-Multi-IO, CLIPTextEncodeSDXL-Pipe, Empty Latent Image from Aspect-Ratio, Random Find and Replace." - }, - { - "author": "hayden-fr", - "title": "ComfyUI-Model-Manager", - "id": "modelmanager", - "reference": "https://github.com/hayden-fr/ComfyUI-Model-Manager", - "files": [ - "https://github.com/hayden-fr/ComfyUI-Model-Manager" - ], - "install_type": "git-clone", - "description": "Manage models: browsing, download and delete." - }, - { - "author": "hayden-fr", - "title": "ComfyUI-Image-Browsing", - "id": "image-browsing", - "reference": "https://github.com/hayden-fr/ComfyUI-Image-Browsing", - "files": [ - "https://github.com/hayden-fr/ComfyUI-Image-Browsing" - ], - "install_type": "git-clone", - "description": "Image Browsing: browsing, download and delete." - }, - { - "author": "ali1234", - "title": "comfyui-job-iterator", - "id": "job-iterator", - "reference": "https://github.com/ali1234/comfyui-job-iterator", - "files": [ - "https://github.com/ali1234/comfyui-job-iterator" - ], - "install_type": "git-clone", - "description": "Implements iteration over sequences within a single workflow run. [w/NOTE: This node replaces the execution of ComfyUI for iterative processing functionality.]" - }, - { - "author": "jmkl", - "title": "ComfyUI Ricing", - "id": "ricing", - "reference": "https://github.com/jmkl/ComfyUI-ricing", - "files": [ - "https://github.com/jmkl/ComfyUI-ricing" - ], - "install_type": "git-clone", - "description": "ComfyUI custom user.css and some script stuff. mainly for web interface." - }, - { - "author": "budihartono", - "title": "Otonx's Custom Nodes", - "id": "otonx", - "reference": "https://github.com/budihartono/comfyui_otonx_nodes", - "files": [ - "https://github.com/budihartono/comfyui_otonx_nodes" - ], - "install_type": "git-clone", - "description": "Nodes: OTX Multiple Values, OTX KSampler Feeder. This extension provides custom nodes for ComfyUI created for personal projects. Made available for reference. Nodes may be updated or changed intermittently or not at all. Review & test before use." - }, - { - "author": "ramyma", - "title": "A8R8 ComfyUI Nodes", - "id": "a8r8", - "reference": "https://github.com/ramyma/A8R8_ComfyUI_nodes", - "files": [ - "https://github.com/ramyma/A8R8_ComfyUI_nodes" - ], - "install_type": "git-clone", - "description": "Nodes: Base64Image Input Node, Base64Image Output Node. [a/A8R8](https://github.com/ramyma/a8r8) supporting nodes to integrate with ComfyUI" - }, - { - "author": "spinagon", - "title": "Seamless tiling Node for ComfyUI", - "id": "seamless", - "reference": "https://github.com/spinagon/ComfyUI-seamless-tiling", - "files": [ - "https://github.com/spinagon/ComfyUI-seamless-tiling" - ], - "install_type": "git-clone", - "description": "Node for generating almost seamless textures, based on similar setting from A1111." - }, - { - "author": "BiffMunky", - "title": "Endless ️🌊✨ Nodes", - "id": "endless", - "reference": "https://github.com/tusharbhutt/Endless-Nodes", - "files": [ - "https://github.com/tusharbhutt/Endless-Nodes" - ], - "install_type": "git-clone", - "description": "A small set of nodes I created for various numerical and text inputs. Features image saver with ability to have JSON saved to separate folder, parameter collection nodes, two aesthetic scoring models, switches for text and numbers, and conversion of string to numeric and vice versa." - }, - { - "author": "spacepxl", - "title": "ComfyUI-HQ-Image-Save", - "id": "hq-image-save", - "reference": "https://github.com/spacepxl/ComfyUI-HQ-Image-Save", - "files": [ - "https://github.com/spacepxl/ComfyUI-HQ-Image-Save" - ], - "install_type": "git-clone", - "description": "Add Image Save nodes for TIFF 16 bit and EXR 32 bit formats. Probably only useful if you're applying a LUT or other color corrections, and care about preserving as much color accuracy as possible." - }, - { - "author": "spacepxl", - "title": "ComfyUI-Image-Filters", - "id": "image-fitlers", - "reference": "https://github.com/spacepxl/ComfyUI-Image-Filters", - "files": [ - "https://github.com/spacepxl/ComfyUI-Image-Filters" - ], - "install_type": "git-clone", - "description": "Image and matte filtering nodes for ComfyUI `image/filters/*`" - }, - { - "author": "spacepxl", - "title": "ComfyUI-RAVE", - "id": "rave", - "reference": "https://github.com/spacepxl/ComfyUI-RAVE", - "files": [ - "https://github.com/spacepxl/ComfyUI-RAVE" - ], - "install_type": "git-clone", - "description": "Unofficial ComfyUI implementation of [a/RAVE](https://rave-video.github.io/)" - }, - { - "author": "spacepxl", - "title": "ComfyUI-StyleGan", - "id": "stylegan", - "reference": "https://github.com/spacepxl/ComfyUI-StyleGan", - "files": [ - "https://github.com/spacepxl/ComfyUI-StyleGan" - ], - "install_type": "git-clone", - "description": "Basic support for StyleGAN2 and StyleGAN3 models." - }, - { - "author": "spacepxl", - "title": "ComfyUI-Florence-2", - "id": "florence2-spacepxl", - "reference": "https://github.com/spacepxl/ComfyUI-Florence-2", - "files": [ - "https://github.com/spacepxl/ComfyUI-Florence-2" - ], - "install_type": "git-clone", - "description": "[a/https://huggingface.co/microsoft/Florence-2-large-ft](https://huggingface.co/microsoft/Florence-2-large-ft)\nLarge or base model, support for captioning and bbox task modes, more coming soon." - }, - { - "author": "spacepxl", - "title": "ComfyUI-Depth-Pro", - "reference": "https://github.com/spacepxl/ComfyUI-Depth-Pro", - "files": [ - "https://github.com/spacepxl/ComfyUI-Depth-Pro" - ], - "install_type": "git-clone", - "description": "Based on [a/https://github.com/apple/ml-depth-pro](https://github.com/apple/ml-depth-pro)" - }, - { - "author": "spacepxl", - "title": "ComfyUI-LossTesting", - "reference": "https://github.com/spacepxl/ComfyUI-LossTesting", - "files": [ - "https://github.com/spacepxl/ComfyUI-LossTesting" - ], - "install_type": "git-clone", - "description": "Basic utility for testing diffusion model loss across the timestep schedule. Should work with any native models that use ksampler. This could be used for comparing models, testing captions on an image, etc." - }, - { - "author": "PTA", - "title": "auto nodes layout", - "id": "autolayout", - "reference": "https://github.com/phineas-pta/comfyui-auto-nodes-layout", - "files": [ - "https://github.com/phineas-pta/comfyui-auto-nodes-layout" - ], - "install_type": "git-clone", - "description": "A ComfyUI extension to apply better nodes layout algorithm to ComfyUI workflow (mostly for visualization purpose)" - }, - { - "author": "receyuki", - "title": "SD Prompt Reader", - "id": "sdpromptreader", - "reference": "https://github.com/receyuki/comfyui-prompt-reader-node", - "files": [ - "https://github.com/receyuki/comfyui-prompt-reader-node" - ], - "install_type": "git-clone", - "description": "The ultimate solution for managing image metadata and multi-tool compatibility. ComfyUI node version of the SD Prompt Reader." - }, - { - "author": "cubiq", - "title": "ComfyUI Essentials", - "id": "essentials", - "reference": "https://github.com/cubiq/ComfyUI_essentials", - "files": [ - "https://github.com/cubiq/ComfyUI_essentials" - ], - "install_type": "git-clone", - "description": "Essential nodes that are weirdly missing from ComfyUI core. With few exceptions they are new features and not commodities. I hope this will be just a temporary repository until the nodes get included into ComfyUI." - }, - { - "author": "Clybius", - "title": "ComfyUI-Latent-Modifiers", - "id": "latent-modifier", - "reference": "https://github.com/Clybius/ComfyUI-Latent-Modifiers", - "files": [ - "https://github.com/Clybius/ComfyUI-Latent-Modifiers" - ], - "install_type": "git-clone", - "description": "Nodes: Latent Diffusion Mega Modifier. ComfyUI nodes which modify the latent during the diffusion process. (Sharpness, Tonemap, Rescale, Extra Noise)" - }, - { - "author": "Clybius", - "title": "ComfyUI Extra Samplers", - "id": "extra-samplers", - "reference": "https://github.com/Clybius/ComfyUI-Extra-Samplers", - "files": [ - "https://github.com/Clybius/ComfyUI-Extra-Samplers" - ], - "install_type": "git-clone", - "description": "Nodes: SamplerCustomNoise, SamplerCustomNoiseDuo, SamplerCustomModelMixtureDuo, SamplerRES_Momentumized, SamplerDPMPP_DualSDE_Momentumized, SamplerCLYB_4M_SDE_Momentumized, SamplerTTM, SamplerLCMCustom\nThis extension provides various custom samplers not offered by the default nodes in ComfyUI." - }, - { - "author": "mcmonkeyprojects", - "title": "Dynamic Thresholding", - "id": "dynamic-thresholding", - "reference": "https://github.com/mcmonkeyprojects/sd-dynamic-thresholding", - "files": [ - "https://github.com/mcmonkeyprojects/sd-dynamic-thresholding" - ], - "install_type": "git-clone", - "description": "Adds nodes for Dynamic Thresholding, CFG scheduling, and related techniques." - }, - { - "author": "Tropfchen", - "title": "YARS: Yet Another Resolution Selector", - "id": "yars", - "reference": "https://github.com/Tropfchen/ComfyUI-yaResolutionSelector", - "files": [ - "https://github.com/Tropfchen/ComfyUI-yaResolutionSelector" - ], - "install_type": "git-clone", - "description": "A slightly different Resolution Selector node, allowing to freely change base resolution and aspect ratio, with options to maintain the pixel count or use the base resolution as the highest or lowest dimension." - }, - { - "author": "chrisgoringe", - "title": "Noise variation and batch noise tools", - "id": "cg-noisetools", - "reference": "https://github.com/chrisgoringe/cg-noisetools", - "files": [ - "https://github.com/chrisgoringe/cg-noisetools" - ], - "install_type": "git-clone", - "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", - "title": "Image chooser", - "id": "image-chooser", - "reference": "https://github.com/chrisgoringe/cg-image-picker", - "files": [ - "https://github.com/chrisgoringe/cg-image-picker" - ], - "install_type": "git-clone", - "description": "A custom node that pauses the flow while you choose which image (or latent) to pass on to the rest of the workflow." - }, - { - "author": "chrisgoringe", - "title": "Use Everywhere (UE Nodes)", - "id": "ue", - "reference": "https://github.com/chrisgoringe/cg-use-everywhere", - "files": [ - "https://github.com/chrisgoringe/cg-use-everywhere" - ], - "install_type": "git-clone", - "nodename_pattern": "(^(Prompts|Anything) Everywhere|Simple String)", - "description": "A set of nodes that allow data to be 'broadcast' to some or all unconnected inputs. Greatly reduces link spaghetti." - }, - { - "author": "chrisgoringe", - "title": "Prompt Info", - "id": "promptinfo", - "reference": "https://github.com/chrisgoringe/cg-prompt-info", - "files": [ - "https://github.com/chrisgoringe/cg-prompt-info" - ], - "install_type": "git-clone", - "description": "Prompt Info" - }, - { - "author": "chrisgoringe", - "title": "Comfy Controller", - "id": "cg-comfycontroller", - "reference": "https://github.com/chrisgoringe/cg-controller", - "files": [ - "https://github.com/chrisgoringe/cg-controller" - ], - "install_type": "git-clone", - "description": "Quickly and easily build a GUI on top of your workflow. Gather just the nodes that you want to see, with no spaghetti, onto controller panels, leaving your workflow untouched in the background." - }, - { - "author": "TGu-97", - "title": "TGu Utilities", - "id": "tgu", - "reference": "https://github.com/TGu-97/ComfyUI-TGu-utils", - "files": [ - "https://github.com/TGu-97/ComfyUI-TGu-utils" - ], - "install_type": "git-clone", - "description": "Nodes: MPN Switch, MPN Reroute, PN Switch. This is a set of custom nodes for ComfyUI. Mainly focus on control switches." - }, - { - "author": "seanlynch", - "title": "SRL's nodes", - "id": "srl", - "reference": "https://github.com/seanlynch/srl-nodes", - "files": [ - "https://github.com/seanlynch/srl-nodes" - ], - "install_type": "git-clone", - "description": "Nodes: SRL Conditional Interrupt, SRL Format String, SRL Eval, SRL Filter Image List. This is a collection of nodes I find useful. Note that at least one module allows execution of arbitrary code. Do not use any of these nodes on a system that allow untrusted users to control workflows or inputs.[w/WARNING: The custom nodes in this extension are vulnerable to **security risks** because they allow the execution of arbitrary code through the workflow]" - }, - { - "author": "alpertunga-bile", - "title": "prompt-generator", - "reference": "https://github.com/alpertunga-bile/prompt-generator-comfyui", - "files": [ - "https://github.com/alpertunga-bile/prompt-generator-comfyui" - ], - "install_type": "git-clone", - "description": "Custom AI prompt generator node for ComfyUI." - }, - { - "author": "kijai", - "title": "KJNodes for ComfyUI", - "id": "kjnodes", - "reference": "https://github.com/kijai/ComfyUI-KJNodes", - "files": [ - "https://github.com/kijai/ComfyUI-KJNodes" - ], - "install_type": "git-clone", - "description": "Various quality of life -nodes for ComfyUI, mostly just visual stuff to improve usability." - }, - { - "author": "kijai", - "title": "ComfyUI-CCSR", - "id": "ccsr", - "reference": "https://github.com/kijai/ComfyUI-CCSR", - "files": [ - "https://github.com/kijai/ComfyUI-CCSR" - ], - "install_type": "git-clone", - "description": "ComfyUI- CCSR upscaler node" - }, - { - "author": "kijai", - "title": "ComfyUI-SVD", - "id": "kijai-svd", - "reference": "https://github.com/kijai/ComfyUI-SVD", - "files": [ - "https://github.com/kijai/ComfyUI-SVD" - ], - "install_type": "git-clone", - "description": "Preliminary use of SVD in ComfyUI.\nNOTE: Quick Implementation, Unstable. See details on repositories." - }, - { - "author": "kijai", - "title": "Marigold depth estimation in ComfyUI", - "id": "marigold", - "reference": "https://github.com/kijai/ComfyUI-Marigold", - "files": [ - "https://github.com/kijai/ComfyUI-Marigold" - ], - "install_type": "git-clone", - "description": "This is a wrapper node for Marigold depth estimation: [https://github.com/prs-eth/Marigold](https://github.com/kijai/ComfyUI-Marigold). Currently using the same diffusers pipeline as in the original implementation, so in addition to the custom node, you need the model in diffusers format.\nNOTE: See details in repo to install." - }, - { - "author": "kijai", - "title": "Geowizard depth and normal estimation in ComfyUI", - "id": "geowizard", - "reference": "https://github.com/kijai/ComfyUI-Geowizard", - "files": [ - "https://github.com/kijai/ComfyUI-Geowizard" - ], - "install_type": "git-clone", - "description": "This is a diffusers (0.27.2) wrapper node for Geowizard: [https://github.com/fuxiao0719/GeoWizard]. The model is autodownloaded from Hugginface to ComfyUI/models/diffusers/geowizard" - }, - { - "author": "kijai", - "title": "ComfyUI-depth-fm", - "id": "depth-fm", - "reference": "https://github.com/kijai/ComfyUI-depth-fm", - "files": [ - "https://github.com/kijai/ComfyUI-depth-fm" - ], - "install_type": "git-clone", - "description": "Fast and accurate monocular depth estimation." - }, - { - "author": "kijai", - "title": "ComfyUI-DDColor", - "id": "ddcolor-kijai", - "reference": "https://github.com/kijai/ComfyUI-DDColor", - "files": [ - "https://github.com/kijai/ComfyUI-DDColor" - ], - "install_type": "git-clone", - "description": "Node to use [a/DDColor](https://github.com/piddnad/DDColor) in ComfyUI." - }, - { - "author": "kijai", - "title": "Animatediff MotionLoRA Trainer", - "id": "motionlora-trainer", - "reference": "https://github.com/kijai/ComfyUI-ADMotionDirector", - "files": [ - "https://github.com/kijai/ComfyUI-ADMotionDirector" - ], - "install_type": "git-clone", - "description": "This is a trainer for AnimateDiff MotionLoRAs, based on the implementation of MotionDirector by ExponentialML.\nNOTE:[a/ADMotionDirector](https://github.com/ExponentialML/AnimateDiff-MotionDirector)" - }, - { - "author": "kijai", - "title": "ComfyUI-moondream", - "id": "moondream", - "reference": "https://github.com/kijai/ComfyUI-moondream", - "files": [ - "https://github.com/kijai/ComfyUI-moondream" - ], - "install_type": "git-clone", - "description": "Moondream image to text query node with batch support" - }, - { - "author": "kijai", - "title": "ComfyUI-SUPIR", - "id": "supir", - "reference": "https://github.com/kijai/ComfyUI-SUPIR", - "files": [ - "https://github.com/kijai/ComfyUI-SUPIR" - ], - "install_type": "git-clone", - "description": "Wrapper nodes to use SUPIR upscaling process in ComfyUI" - }, - { - "author": "kijai", - "title": "ComfyUI-DynamiCrafterWrapper", - "id": "dynamicrafter-kijai", - "reference": "https://github.com/kijai/ComfyUI-DynamiCrafterWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-DynamiCrafterWrapper" - ], - "install_type": "git-clone", - "description": "Wrapper nodes to use DynamiCrafter image2video and frame interpolation models in ComfyUI\nAnd this extension supports ToonCrafter as well" - }, - { - "author": "kijai", - "title": "ComfyUI-APISR", - "id": "apisr", - "reference": "https://github.com/kijai/ComfyUI-APISR-KJ", - "files": [ - "https://github.com/kijai/ComfyUI-APISR-KJ" - ], - "install_type": "git-clone", - "description": "Node to use [a/APISR](https://github.com/Kiteretsu77/APISR) upscale models in ComfyUI.[w/NOTE: repo name is changed from ComfyUI-APISR -> ComfyUI-APISR-KJ]" - }, - { - "author": "kijai", - "title": "DiffusionLight implementation for ComfyUI", - "id": "diffusionlight", - "reference": "https://github.com/kijai/ComfyUI-DiffusionLight", - "files": [ - "https://github.com/kijai/ComfyUI-DiffusionLight" - ], - "install_type": "git-clone", - "description": "This is simplified implementation of the [a/DiffusionLight](https://github.com/DiffusionLight/DiffusionLight) method of creating light probes. You will need the included LoRA, place it in ComfyUI/loras folder like usual, it's converted from the original diffusers one." - }, - { - "author": "kijai", - "title": "ComfyUI-ELLA-wrapper", - "reference": "https://github.com/kijai/ComfyUI-ELLA-wrapper", - "files": [ - "https://github.com/kijai/ComfyUI-ELLA-wrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI wrapper nodes to use the Diffusers implementation of ELLA" - }, - { - "author": "kijai", - "title": "ComfyUI-LaVi-Bridge-Wrapper", - "reference": "https://github.com/kijai/ComfyUI-LaVi-Bridge-Wrapper", - "files": [ - "https://github.com/kijai/ComfyUI-LaVi-Bridge-Wrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI wrapper node to test LaVi-Bridge using Diffusers" - }, - { - "author": "kijai", - "title": "ComfyUI-BrushNet-Wrapper", - "reference": "https://github.com/kijai/ComfyUI-BrushNet-Wrapper", - "files": [ - "https://github.com/kijai/ComfyUI-BrushNet-Wrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI wrapper nodes to use the Diffusers implementation of BrushNet" - }, - { - "author": "kijai", - "title": "ComfyUI-IC-Light", - "id": "ic-light-kijai", - "reference": "https://github.com/kijai/ComfyUI-IC-Light", - "files": [ - "https://github.com/kijai/ComfyUI-IC-Light" - ], - "install_type": "git-clone", - "description": "ComfyUI native nodes for IC-Light" - }, - { - "author": "kijai", - "title": "ComfyUI-DepthAnythingV2", - "id": "depth-anything-v2", - "reference": "https://github.com/kijai/ComfyUI-DepthAnythingV2", - "files": [ - "https://github.com/kijai/ComfyUI-DepthAnythingV2" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use [a/DepthAnythingV2](https://depth-anything-v2.github.io/)\nNOTE:Models autodownload to ComfyUI/models/depthanything from [a/https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main](https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main)" - }, - { - "author": "kijai", - "title": "ComfyUI-Florence2", - "id": "florence2-kijai", - "reference": "https://github.com/kijai/ComfyUI-Florence2", - "files": [ - "https://github.com/kijai/ComfyUI-Florence2" - ], - "preemptions":[ - "DownloadAndLoadFlorence2Lora", - "DownloadAndLoadFlorence2Model", - "Florence2ModelLoader", - "Florence2Run" - ], - "install_type": "git-clone", - "description": "Nodes to use Florence2 VLM for image vision tasks: object detection, captioning, segmentation and ocr" - }, - { - "author": "kijai", - "title": "ComfyUI-LuminaWrapper", - "id": "lumina", - "reference": "https://github.com/kijai/ComfyUI-LuminaWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-LuminaWrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI wrapper nodes for Lumina models" - }, - { - "author": "kijai", - "title": "ComfyUI-MimicMotionWrapper", - "id": "mimicmotion-kijai", - "reference": "https://github.com/kijai/ComfyUI-MimicMotionWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-MimicMotionWrapper" - ], - "install_type": "git-clone", - "description": "Optimized wrapper nodes for MimicMotion: [a/https://github.com/tencent/MimicMotion](https://github.com/tencent/MimicMotion)" - }, - { - "author": "kijai", - "title": "ComfyUI-OpenDiTWrapper", - "id": "opendit-kijai", - "reference": "https://github.com/kijai/ComfyUI-OpenDiTWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-OpenDiTWrapper" - ], - "install_type": "git-clone", - "description": "Wrapper nodes for OpenDiT: [a/OpenDiT](https://github.com/NUS-HPC-AI-Lab/OpenDiT/), supports Open-Sora t2i and i2i" - }, - { - "author": "kijai", - "title": "ComfyUI-LivePortraitKJ", - "id": "liveportrait-kijai", - "reference": "https://github.com/kijai/ComfyUI-LivePortraitKJ", - "files": [ - "https://github.com/kijai/ComfyUI-LivePortraitKJ" - ], - "install_type": "git-clone", - "description": "Nodes for [a/LivePortrait](https://github.com/KwaiVGI/LivePortrait)" - }, - { - "author": "kijai", - "title": "ComfyUI-KwaiKolorsWrapper", - "id": "kwaikolors", - "reference": "https://github.com/kijai/ComfyUI-KwaiKolorsWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-KwaiKolorsWrapper" - ], - "install_type": "git-clone", - "description": "Rudimentary wrapper that runs [a/Kwai-Kolors](https://huggingface.co/Kwai-Kolors/Kolors) text2image pipeline using diffusers." - }, - { - "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" - ], - "preemptions":[ - "DownloadAndLoadSAM2Model", - "Florence2toCoordinates", - "Sam2AutoSegmentation", - "Sam2Segmentation", - "Sam2VideoSegmentation", - "Sam2VideoSegmentationAddPoints" - ], - "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": "kijai", - "title": "ComfyUI Flux Trainer", - "reference": "https://github.com/kijai/ComfyUI-FluxTrainer", - "files": [ - "https://github.com/kijai/ComfyUI-FluxTrainer" - ], - "install_type": "git-clone", - "description": "Currently supports LoRA training, and untested full finetune with code from kohya's scripts: [a/https://github.com/kohya-ss/sd-scripts](https://github.com/kohya-ss/sd-scripts)" - }, - { - "author": "kijai", - "title": "ComfyUI CogVideoX Wrapper", - "reference": "https://github.com/kijai/ComfyUI-CogVideoXWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-CogVideoXWrapper" - ], - "install_type": "git-clone", - "description": "Diffusers wrapper for CogVideoX -models: [a/https://github.com/THUDM/CogVideo](https://github.com/THUDM/CogVideo)" - }, - { - "author": "kijai", - "title": "ComfyUI PyramidFlow Wrapper", - "reference": "https://github.com/kijai/ComfyUI-PyramidFlowWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-PyramidFlowWrapper" - ], - "install_type": "git-clone", - "description": "Wrapper for PyramidFlow -models: [a/https://github.com/jy0205/Pyramid-Flow](https://github.com/jy0205/Pyramid-Flow)" - }, - { - "author": "kijai", - "title": "ComfyUI Llava-OneVision", - "reference": "https://github.com/kijai/ComfyUI-LLaVA-OneVision", - "files": [ - "https://github.com/kijai/ComfyUI-LLaVA-OneVision" - ], - "install_type": "git-clone", - "description": "Nodes to use the OneVision LLaVA models: [a/https://github.com/LLaVA-VL/LLaVA-NeXT](https://github.com/LLaVA-VL/LLaVA-NeXT)" - }, - { - "author": "kijai", - "title": "ComfyUI wrapper nodes for LVCD", - "reference": "https://github.com/kijai/ComfyUI-LVCDWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-LVCDWrapper" - ], - "install_type": "git-clone", - "description": "Original repo: [a/https://github.com/luckyhzt/LVCD](https://github.com/luckyhzt/LVCD)" - }, - { - "author": "kijai", - "title": "ComfyUI-Lotus", - "reference": "https://github.com/kijai/ComfyUI-Lotus", - "files": [ - "https://github.com/kijai/ComfyUI-Lotus" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use Lotus depth/normal prediction.\nNOTE:The necessary models can be downloaded from ComfyUI-Manager." - }, - { - "author": "kijai", - "title": "ComfyUI-MoGe", - "reference": "https://github.com/kijai/ComfyUI-MoGe", - "files": [ - "https://github.com/kijai/ComfyUI-MoGe" - ], - "install_type": "git-clone", - "description": "NODES:(Down)load MoGe Model, MoGe Process" - }, - { - "author": "kijai", - "title": "ComfyUI-GIMM-VFI", - "reference": "https://github.com/kijai/ComfyUI-GIMM-VFI", - "files": [ - "https://github.com/kijai/ComfyUI-GIMM-VFI" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use GIMM-VFI frame interpolation" - }, - { - "author": "kijai", - "title": "ComfyUI-HunyuanVideoWrapper", - "reference": "https://github.com/kijai/ComfyUI-HunyuanVideoWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-HunyuanVideoWrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI diffusers wrapper nodes for [a/HunyuanVideo](https://github.com/Tencent/HunyuanVideo)" - }, - { - "author": "hhhzzyang", - "title": "Comfyui-Lama", - "id": "lama", - "reference": "https://github.com/hhhzzyang/Comfyui_Lama", - "files": [ - "https://github.com/hhhzzyang/Comfyui_Lama" - ], - "install_type": "git-clone", - "description": "Nodes: LamaaModelLoad, LamaApply, YamlConfigLoader. a costumer node is realized to remove anything/inpainting anything from a picture by mask inpainting.[w/WARN:This extension includes the entire model, which can result in a very long initial installation time, and there may be some compatibility issues with older dependencies and ComfyUI.]" - }, - { - "author": "audioscavenger", - "title": "Save Image Extended for ComfyUI", - "id": "save-image-extended", - "reference": "https://github.com/audioscavenger/save-image-extended-comfyui", - "files": [ - "https://github.com/audioscavenger/save-image-extended-comfyui" - ], - "install_type": "git-clone", - "description": "Upgrade the Save File node: customize subfolders, file names with checkpoint names, or any sampler attribute your want! [w/NOTE: This node is a fork from @thedyze, since the [a/original repository](https://github.com/thedyze/save-image-extended-comfyui) is no longer maintained. Simply *uninstall* the original version and **REINSTALL** this one.]" - }, - { - "author": "audioscavenger", - "title": "ComfyUI-Thumbnails", - "id": "thumbnails", - "reference": "https://github.com/audioscavenger/ComfyUI-Thumbnails", - "files": [ - "https://github.com/audioscavenger/ComfyUI-Thumbnails" - ], - "install_type": "git-clone", - "description": "Load Image thumbnails, delete images, browse input subfolders." - }, - { - "author": "SOELexicon", - "title": "ComfyUI-LexTools", - "id": "lextools", - "reference": "https://github.com/SOELexicon/ComfyUI-LexTools", - "files": [ - "https://github.com/SOELexicon/ComfyUI-LexTools" - ], - "install_type": "git-clone", - "description": "ComfyUI-LexTools is a Python-based image processing and analysis toolkit that uses machine learning models for semantic image segmentation, image scoring, and image captioning." - }, - { - "author": "mikkel", - "title": "ComfyUI - Text Overlay Plugin", - "id": "textoverlay-mikkel", - "reference": "https://github.com/mikkel/ComfyUI-text-overlay", - "files": [ - "https://github.com/mikkel/ComfyUI-text-overlay" - ], - "install_type": "git-clone", - "description": "The ComfyUI Text Overlay Plugin provides functionalities for superimposing text on images. Users can select different font types, set text size, choose color, and adjust the text's position on the image." - }, - { - "author": "avatechai", - "title": "Avatar Graph", - "id": "avatar-graph", - "reference": "https://github.com/avatechai/avatar-graph-comfyui", - "files": [ - "https://github.com/avatechai/avatar-graph-comfyui" - ], - "install_type": "git-clone", - "description": "Include nodes for sam + bpy operation, that allows workflow creations for generative 2d character rig." - }, - { - "author": "TRI3D-LC", - "title": "tri3d-comfyui-nodes", - "id": "tri3d", - "reference": "https://github.com/TRI3D-LC/tri3d-comfyui-nodes", - "files": [ - "https://github.com/TRI3D-LC/tri3d-comfyui-nodes" - ], - "install_type": "git-clone", - "description": "Nodes: tri3d-extract-hand, tri3d-fuzzification, tri3d-position-hands, tri3d-atr-parse." - }, - { - "author": "TRI3D-LC", - "title": "ComfyUI-MiroBoard", - "id": "miroboard", - "reference": "https://github.com/TRI3D-LC/ComfyUI-MiroBoard", - "files": [ - "https://github.com/TRI3D-LC/ComfyUI-MiroBoard" - ], - "install_type": "git-clone", - "description": "Nodes: add-image-miro-board." - }, - { - "author": "storyicon", - "title": "segment anything", - "id": "sam", - "reference": "https://github.com/storyicon/comfyui_segment_anything", - "files": [ - "https://github.com/storyicon/comfyui_segment_anything" - ], - "install_type": "git-clone", - "description": "Based on GroundingDino and SAM, use semantic strings to segment any element in an image. The comfyui version of sd-webui-segment-anything." - }, - { - "author": "storyicon", - "title": "ComfyUI MuseV Evolved", - "id": "musev-evolved", - "reference": "https://github.com/storyicon/comfyui_musev_evolved", - "files": [ - "https://github.com/storyicon/comfyui_musev_evolved" - ], - "install_type": "git-clone", - "description": "Nodes:MuseVImg2Vid (comfyui_musev_evolved)\nNOTE: Download [a/MuseV](https://huggingface.co/TMElyralab/MuseV) to ComfyUI/models/diffusers" - }, - { - "author": "a1lazydog", - "title": "ComfyUI-AudioScheduler", - "id": "audioscheduler", - "reference": "https://github.com/a1lazydog/ComfyUI-AudioScheduler", - "files": [ - "https://github.com/a1lazydog/ComfyUI-AudioScheduler" - ], - "install_type": "git-clone", - "description": "Load mp3 files and use the audio nodes to power animations and prompt scheduling. Use with FizzNodes." - }, - { - "author": "whatbirdisthat", - "title": "cyberdolphin", - "reference": "https://github.com/whatbirdisthat/cyberdolphin", - "files": [ - "https://github.com/whatbirdisthat/cyberdolphin" - ], - "install_type": "git-clone", - "description": "Cyberdolphin Suite of ComfyUI nodes for wiring up things." - }, - { - "author": "chrish-slingshot", - "title": "CrasH Utils", - "id": "crash", - "reference": "https://github.com/chrish-slingshot/CrasHUtils", - "files": [ - "https://github.com/chrish-slingshot/CrasHUtils" - ], - "install_type": "git-clone", - "description": "A mixture of effects and quality of life nodes. Nodes: ImageGlitcher (gives an image a cool glitchy effect), ColorStylizer (highlights a single color in an image), QueryLocalLLM (queries a local LLM API though oobabooga), SDXLReslution (resolution picker for the standard SDXL resolutions, the complete list), SDXLResolutionSplit (splits the SDXL resolution into width and height). " - }, - { - "author": "spinagon", - "title": "ComfyUI-seam-carving", - "id": "seamcarving", - "reference": "https://github.com/spinagon/ComfyUI-seam-carving", - "files": [ - "https://github.com/spinagon/ComfyUI-seam-carving" - ], - "install_type": "git-clone", - "description": "Nodes: Image Resize (seam carving). Seam carving (image resize) for ComfyUI. Based on [a/https://github.com/li-plus/seam-carving](https://github.com/li-plus/seam-carving). With seam carving algorithm, the image could be intelligently resized while keeping the important contents undistorted. The carving process could be further guided, so that an object could be removed from the image without apparent artifacts." - }, - { - "author": "YMC", - "title": "ymc-node-suite-comfyui", - "id": "ymc-suite", - "reference": "https://github.com/YMC-GitHub/ymc-node-suite-comfyui", - "files": [ - "https://github.com/YMC-GitHub/ymc-node-suite-comfyui" - ], - "install_type": "git-clone", - "description": "ymc 's nodes for comfyui. This extension is composed of nodes that provide various utility features such as text, region, and I/O." - }, - { - "author": "YMC", - "title": "ymc-node-as-x-type", - "reference": "https://github.com/YMC-GitHub/ymc-node-as-x-type", - "files": [ - "https://github.com/YMC-GitHub/ymc-node-as-x-type" - ], - "install_type": "git-clone", - "description": "some comfyui custom nodes to set it as known type" - }, - { - "author": "chibiace", - "title": "ComfyUI-Chibi-Nodes", - "id": "chibi", - "reference": "https://github.com/chibiace/ComfyUI-Chibi-Nodes", - "files": [ - "https://github.com/chibiace/ComfyUI-Chibi-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Loader, Prompts, ImageTool, Wildcards, LoadEmbedding, ConditionText, SaveImages, ..." - }, - { - "author": "DigitalIO", - "title": "ComfyUI-stable-wildcards", - "id": "stable-wildcards", - "reference": "https://github.com/DigitalIO/ComfyUI-stable-wildcards", - "files": [ - "https://github.com/DigitalIO/ComfyUI-stable-wildcards" - ], - "install_type": "git-clone", - "description": "Wildcard implementation that can be reproduced with workflows." - }, - { - "author": "THtianhao", - "title": "ComfyUI-Portrait-Maker", - "id": "portrait-maker", - "reference": "https://github.com/THtianhao/ComfyUI-Portrait-Maker", - "files": [ - "https://github.com/THtianhao/ComfyUI-Portrait-Maker" - ], - "install_type": "git-clone", - "description": "Nodes:RetainFace, FaceFusion, RatioMerge2Image, MaskMerge2Image, ReplaceBoxImg, ExpandMaskBox, FaceSkin, SkinRetouching, PortraitEnhancement, ..." - }, - { - "author": "THtianhao", - "title": "ComfyUI-FaceChain", - "id": "facechain", - "reference": "https://github.com/THtianhao/ComfyUI-FaceChain", - "files": [ - "https://github.com/THtianhao/ComfyUI-FaceChain" - ], - "install_type": "git-clone", - "description": "The official ComfyUI version of facechain greatly improves the speed of reasoning and has great custom process controls." - }, - { - "author": "zer0TF", - "title": "Cute Comfy", - "id": "cutecomfy", - "reference": "https://github.com/zer0TF/cute-comfy", - "files": [ - "https://github.com/zer0TF/cute-comfy" - ], - "install_type": "git-clone", - "description": "Adds a configurable folder watcher that auto-converts Comfy metadata into a Civitai-friendly format for automatic resource tagging when you upload images. Oh, and it makes your UI awesome, too. 💜" - }, - { - "author": "chflame163", - "title": "ComfyUI_MSSpeech_TTS", - "id": "msspeech", - "reference": "https://github.com/chflame163/ComfyUI_MSSpeech_TTS", - "files": [ - "https://github.com/chflame163/ComfyUI_MSSpeech_TTS" - ], - "install_type": "git-clone", - "description": "A text-to-speech plugin used under ComfyUI. It utilizes the Microsoft Speech TTS interface to convert text content into MP3 format audio files." - }, - { - "author": "chflame163", - "title": "ComfyUI_WordCloud", - "id": "wordcloud", - "reference": "https://github.com/chflame163/ComfyUI_WordCloud", - "files": [ - "https://github.com/chflame163/ComfyUI_WordCloud" - ], - "install_type": "git-clone", - "description": "Nodes:Word Cloud, Load Text File" - }, - { - "author": "chflame163", - "title": "ComfyUI Layer Style", - "id": "layerstyle", - "reference": "https://github.com/chflame163/ComfyUI_LayerStyle", - "files": [ - "https://github.com/chflame163/ComfyUI_LayerStyle" - ], - "install_type": "git-clone", - "description": "A set of nodes for ComfyUI it generate image like Adobe Photoshop's Layer Style. the Drop Shadow is first completed node, and follow-up work is in progress." - }, - { - "author": "chflame163", - "title": "ComfyUI_LayerStyle_Advance", - "id": "comfyui_layerstyle_advance", - "reference": "https://github.com/chflame163/ComfyUI_LayerStyle_Advance", - "files": [ - "https://github.com/chflame163/ComfyUI_LayerStyle_Advance" - ], - "install_type": "git-clone", - "description": "The nodes detached from ComfyUI Layer Style are mainly those with complex requirements for dependency packages." - }, - { - "author": "chflame163", - "title": "ComfyUI Face Similarity", - "id": "face-similarity", - "reference": "https://github.com/chflame163/ComfyUI_FaceSimilarity", - "files": [ - "https://github.com/chflame163/ComfyUI_FaceSimilarity" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI. It compare two images to rate facial similarity." - }, - { - "author": "chflame163", - "title": "ComfyUI_CatVTON_Wrapper", - "id": "catvton-wrapper", - "reference": "https://github.com/chflame163/ComfyUI_CatVTON_Wrapper", - "files": [ - "https://github.com/chflame163/ComfyUI_CatVTON_Wrapper" - ], - "install_type": "git-clone", - "description": "[a/CatVTON](https://github.com/Zheng-Chong/CatVTON) warpper for ComfyUI" - }, - { - "author": "chflame163", - "title": "ComfyUI_OmniGen_Wrapper", - "reference": "https://github.com/chflame163/ComfyUI_OmniGen_Wrapper", - "files": [ - "https://github.com/chflame163/ComfyUI_OmniGen_Wrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node of OmniGen project." - }, - { - "author": "drustan-hawk", - "title": "primitive-types", - "reference": "https://github.com/drustan-hawk/primitive-types", - "files": [ - "https://github.com/drustan-hawk/primitive-types" - ], - "install_type": "git-clone", - "description": "Small collection of typed primitive nodes." - }, - { - "author": "shadowcz007", - "title": "comfyui-mixlab-nodes", - "id": "mixlab", - "reference": "https://github.com/shadowcz007/comfyui-mixlab-nodes", - "files": [ - "https://github.com/shadowcz007/comfyui-mixlab-nodes" - ], - "install_type": "git-clone", - "description": "3D, ScreenShareNode & FloatingVideoNode, SpeechRecognition & SpeechSynthesis, GPT, LoadImagesFromLocal, Layers, Other Nodes, ..." - }, - { - "author": "shadowcz007", - "title": "comfyui-ultralytics-yolo", - "id": "yolo", - "reference": "https://github.com/shadowcz007/comfyui-ultralytics-yolo", - "files": [ - "https://github.com/shadowcz007/comfyui-ultralytics-yolo" - ], - "install_type": "git-clone", - "description": "Nodes:Detect By Label." - }, - { - "author": "shadowcz007", - "title": "Consistency Decoder", - "id": "consistency-decoder", - "reference": "https://github.com/shadowcz007/comfyui-consistency-decoder", - "files": [ - "https://github.com/shadowcz007/comfyui-consistency-decoder" - ], - "install_type": "git-clone", - "description": "[a/openai Consistency Decoder](https://github.com/openai/consistencydecoder). After downloading the [a/OpenAI VAE model](https://openaipublic.azureedge.net/diff-vae/c9cebd3132dd9c42936d803e33424145a748843c8f716c0814838bdc8a2fe7cb/decoder.pt), place it in the `model/vae` directory for use." - }, - { - "author": "shadowcz007", - "title": "comfyui-Image-reward", - "reference": "https://github.com/shadowcz007/comfyui-Image-reward", - "files": [ - "https://github.com/shadowcz007/comfyui-Image-reward" - ], - "install_type": "git-clone", - "description": "[a/ImageReward](https://github.com/THUDM/ImageReward): Human preference learning in text-to-image generation. This is a [a/paper](https://arxiv.org/abs/2304.05977) from NeurIPS 2023" - }, - { - "author": "shadowcz007", - "title": "comfyui-sound-lab", - "id": "soundlab", - "reference": "https://github.com/shadowcz007/comfyui-sound-lab", - "files": [ - "https://github.com/shadowcz007/comfyui-sound-lab" - ], - "install_type": "git-clone", - "description": "Nodes:Music Gen, Audio Play, Stable Audio" - }, - { - "author": "shadowcz007", - "title": "comfyui-edit-mask", - "id": "edit-mask", - "reference": "https://github.com/shadowcz007/comfyui-edit-mask", - "files": [ - "https://github.com/shadowcz007/comfyui-edit-mask" - ], - "install_type": "git-clone", - "description": "Nodes:Edit Mask" - }, - { - "author": "shadowcz007", - "title": "comfyui-liveportrait", - "id": "liveportrait", - "reference": "https://github.com/shadowcz007/comfyui-liveportrait", - "files": [ - "https://github.com/shadowcz007/comfyui-liveportrait" - ], - "install_type": "git-clone", - "description": "The ComfyUI version of [a/LivePortrait](https://github.com/KwaiVGI/LivePortrait)." - }, - { - "author": "shadowcz007", - "title": "comfyui-try-on", - "reference": "https://github.com/shadowcz007/comfyui-try-on", - "files": [ - "https://github.com/shadowcz007/comfyui-try-on" - ], - "install_type": "git-clone", - "description": "Virtual try-on for creating a personal brand wardrobe collection." - }, - { - "author": "ostris", - "title": "Ostris Nodes ComfyUI", - "id": "ostris", - "reference": "https://github.com/ostris/ostris_nodes_comfyui", - "files": [ - "https://github.com/ostris/ostris_nodes_comfyui" - ], - "install_type": "git-clone", - "nodename_pattern": "- Ostris$", - "description": "This is a collection of custom nodes for ComfyUI that I made for some QOL. I will be adding much more advanced ones in the future once I get more familiar with the API." - }, - { - "author": "0xbitches", - "title": "Latent Consistency Model for ComfyUI", - "id": "lcm", - "reference": "https://github.com/0xbitches/ComfyUI-LCM", - "files": [ - "https://github.com/0xbitches/ComfyUI-LCM" - ], - "install_type": "git-clone", - "description": "This custom node implements a Latent Consistency Model sampler in ComfyUI. (LCM)" - }, - { - "author": "aszc-dev", - "title": "Core ML Suite for ComfyUI", - "id": "coreml", - "reference": "https://github.com/aszc-dev/ComfyUI-CoreMLSuite", - "files": [ - "https://github.com/aszc-dev/ComfyUI-CoreMLSuite" - ], - "install_type": "git-clone", - "description": "This extension contains a set of custom nodes for ComfyUI that allow you to use Core ML models in your ComfyUI workflows. The models can be obtained here, or you can convert your own models using coremltools. The main motivation behind using Core ML models in ComfyUI is to allow you to utilize the ANE (Apple Neural Engine) on Apple Silicon (M1/M2) machines to improve performance." - }, - { - "author": "taabata", - "title": "Syrian Falcon Nodes", - "id": "syrian", - "reference": "https://github.com/taabata/Comfy_Syrian_Falcon_Nodes", - "files": [ - "https://raw.githubusercontent.com/taabata/Comfy_Syrian_Falcon_Nodes/main/SyrianFalconNodes.py" - ], - "install_type": "copy", - "description": "Nodes:Prompt editing, Word as Image" - }, - { - "author": "taabata", - "title": "LCM_Inpaint-Outpaint_Comfy", - "id": "lcm-inpaint-outpaint", - "reference": "https://github.com/taabata/LCM_Inpaint_Outpaint_Comfy", - "files": [ - "https://github.com/taabata/LCM_Inpaint_Outpaint_Comfy" - ], - "install_type": "git-clone", - "description": "ComfyUI custom nodes for inpainting/outpainting using the new latent consistency model (LCM)" - }, - { - "author": "taabata", - "title": "ComfyCanvas", - "reference": "https://github.com/taabata/ComfyCanvas", - "files": [ - "https://github.com/taabata/ComfyCanvas" - ], - "install_type": "git-clone", - "description": "Canvas to use with ComfyUI" - }, - { - "author": "taabata", - "title": "SANA_LOWVRAM", - "reference": "https://github.com/taabata/SANA_LOWVRAM", - "files": [ - "https://github.com/taabata/SANA_LOWVRAM" - ], - "install_type": "git-clone", - "description": "ComfyUI Diffusers wrapper nodes to run SANA models on low vram devices. Works on 2GB VRAM 12GB RAM laptop." - }, - { - "author": "noxinias", - "title": "ComfyUI_NoxinNodes", - "id": "noxin", - "reference": "https://github.com/noxinias/ComfyUI_NoxinNodes", - "files": [ - "https://github.com/noxinias/ComfyUI_NoxinNodes" - ], - "install_type": "git-clone", - "description": "Nodes: Noxin Complete Chime, Noxin Scaled Resolutions, Load from Noxin Prompt Library, Save to Noxin Prompt Library" - }, - { - "author": "apesplat", - "title": "ezXY scripts and nodes", - "id": "ezxy", - "reference": "https://github.com/GMapeSplat/ComfyUI_ezXY", - "files": [ - "https://github.com/GMapeSplat/ComfyUI_ezXY" - ], - "install_type": "git-clone", - "description": "Extensions/Patches: Enables linking float and integer inputs and ouputs. Values are automatically cast to the correct type and clamped to the correct range. Works with both builtin and custom nodes.[w/NOTE: This repo patches ComfyUI's validate_inputs and map_node_over_list functions while running. May break depending on your version of ComfyUI. Can be deactivated in config.yaml.]Nodes: A collection of nodes for facilitating the generation of XY plots. Capable of plotting changes over most primitive values.[w/Does not work with current version of Comfyui]" - }, - { - "author": "kinfolk0117", - "title": "SimpleTiles", - "id": "simpletiles", - "reference": "https://github.com/kinfolk0117/ComfyUI_SimpleTiles", - "files": [ - "https://github.com/kinfolk0117/ComfyUI_SimpleTiles" - ], - "install_type": "git-clone", - "description": "Nodes:TileSplit, TileMerge." - }, - { - "author": "kinfolk0117", - "title": "ComfyUI_GradientDeepShrink", - "id": "deepshrink", - "reference": "https://github.com/kinfolk0117/ComfyUI_GradientDeepShrink", - "files": [ - "https://github.com/kinfolk0117/ComfyUI_GradientDeepShrink" - ], - "install_type": "git-clone", - "description": "Nodes:GradientPatchModelAddDownscale (Kohya Deep Shrink)." - }, - { - "author": "kinfolk0117", - "title": "ComfyUI_Pilgram", - "id": "pilgram", - "reference": "https://github.com/kinfolk0117/ComfyUI_Pilgram", - "files": [ - "https://github.com/kinfolk0117/ComfyUI_Pilgram" - ], - "install_type": "git-clone", - "description": "Use [a/Pilgram2](https://github.com/mgineer85/pilgram2) filters in ComfyUI" - }, - { - "author": "kinfolk0117", - "title": "Gridswapper", - "reference": "https://github.com/kinfolk0117/ComfyUI_GridSwapper", - "files": [ - "https://github.com/kinfolk0117/ComfyUI_GridSwapper" - ], - "install_type": "git-clone", - "description": "Gridswapper takes a batch of latents and spreads them over the necessary amount of grids. It then automatically shuffles the images in the grids for each step. So, a batch of 12 latents for a 2x2 grid will generate 3 grid images in each step. It will then shuffle around the images for the next step. This makes it possible for all images to influence the others during the denoising process. This approach works well for generating 2-4 grids." - }, - { - "author": "Fictiverse", - "title": "ComfyUI Fictiverse Nodes", - "id": "fictverse", - "reference": "https://github.com/Fictiverse/ComfyUI_Fictiverse", - "files": [ - "https://github.com/Fictiverse/ComfyUI_Fictiverse" - ], - "install_type": "git-clone", - "description": "Nodes:Color correction." - }, - { - "author": "idrirap", - "title": "ComfyUI-Lora-Auto-Trigger-Words", - "id": "lora-auto-trigger", - "reference": "https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words", - "files": [ - "https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words" - ], - "install_type": "git-clone", - "description": "This project is a fork of [a/https://github.com/Extraltodeus/LoadLoraWithTags](https://github.com/Extraltodeus/LoadLoraWithTags) The aim of these custom nodes is to get an easy access to the tags used to trigger a lora." - }, - { - "author": "aianimation55", - "title": "Comfy UI FatLabels", - "id": "fatlab", - "reference": "https://github.com/aianimation55/ComfyUI-FatLabels", - "files": [ - "https://github.com/aianimation55/ComfyUI-FatLabels" - ], - "install_type": "git-clone", - "description": "It's a super simple custom node for Comfy UI, to generate text, with a font size option. Useful for bigger labelling of nodes, helpful for wider screen captures or tutorials. Plus you can of course use the text within your generations." - }, - { - "author": "noEmbryo", - "title": "noEmbryo nodes", - "id": "noembryo", - "reference": "https://github.com/noembryo/ComfyUI-noEmbryo", - "files": [ - "https://github.com/noembryo/ComfyUI-noEmbryo" - ], - "install_type": "git-clone", - "description": "PromptTermList (1-6): are some nodes that help with the creation of Prompts inside ComfyUI. Resolution Scale outputs image dimensions using a scale factor. Regex Text Chopper outputs the chopped parts of a text using RegEx." - }, - { - "author": "mikkel", - "title": "ComfyUI - Mask Bounding Box", - "id": "mask-bbox", - "reference": "https://github.com/mikkel/comfyui-mask-boundingbox", - "files": [ - "https://github.com/mikkel/comfyui-mask-boundingbox" - ], - "install_type": "git-clone", - "description": "The ComfyUI Mask Bounding Box Plugin provides functionalities for selecting a specific size mask from an image. Can be combined with ClipSEG to replace any aspect of an SDXL image with an SD1.5 output." - }, - { - "author": "ParmanBabra", - "title": "ComfyUI-Malefish-Custom-Scripts", - "id": "malefish", - "reference": "https://github.com/ParmanBabra/ComfyUI-Malefish-Custom-Scripts", - "files": [ - "https://github.com/ParmanBabra/ComfyUI-Malefish-Custom-Scripts" - ], - "install_type": "git-clone", - "description": "Nodes:Multi Lora Loader, Random (Prompt), Combine (Prompt), CSV Prompts Loader" - }, - { - "author": "IAmMatan.com", - "title": "ComfyUI Serving toolkit", - "id": "serving-toolkit", - "reference": "https://github.com/matan1905/ComfyUI-Serving-Toolkit", - "files": [ - "https://github.com/matan1905/ComfyUI-Serving-Toolkit" - ], - "install_type": "git-clone", - "description": "This extension adds nodes that allow you to easily serve your workflow (for example using a discord bot) " - }, - { - "author": "PCMonsterx", - "title": "ComfyUI-CSV-Loader", - "id": "csv-loader", - "reference": "https://github.com/PCMonsterx/ComfyUI-CSV-Loader", - "files": [ - "https://github.com/PCMonsterx/ComfyUI-CSV-Loader" - ], - "install_type": "git-clone", - "description": "CSV Loader for prompt building within ComfyUI interface. Allows access to positive/negative prompts associated with a name. Selections are being pulled from CSV files." - }, - { - "author": "Trung0246", - "title": "ComfyUI-0246", - "id": "0246", - "reference": "https://github.com/Trung0246/ComfyUI-0246", - "files": [ - "https://github.com/Trung0246/ComfyUI-0246" - ], - "install_type": "git-clone", - "description": "Random nodes for ComfyUI I made to solve my struggle with ComfyUI (ex: pipe, process). Have varying quality." - }, - { - "author": "fexli", - "title": "fexli-util-node-comfyui", - "id": "fexli", - "reference": "https://github.com/fexli/fexli-util-node-comfyui", - "files": [ - "https://github.com/fexli/fexli-util-node-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:FEImagePadForOutpaint, FEColorOut, FEColor2Image, FERandomizedColor2Image" - }, - { - "author": "AbyssBadger0", - "title": "ComfyUI_BadgerTools", - "id": "badger", - "reference": "https://github.com/AbyssBadger0/ComfyUI_BadgerTools", - "files": [ - "https://github.com/AbyssBadger0/ComfyUI_BadgerTools" - ], - "install_type": "git-clone", - "description": "Nodes:ImageOverlap-badger, FloatToInt-badger, IntToString-badger, FloatToString-badger, ImageNormalization-badger, ImageScaleToSide-badger, NovelToFizz-badger." - }, - { - "author": "palant", - "title": "Image Resize for ComfyUI", - "id": "image-resize", - "reference": "https://github.com/palant/image-resize-comfyui", - "files": [ - "https://github.com/palant/image-resize-comfyui" - ], - "install_type": "git-clone", - "description": "This custom node provides various tools for resizing images. The goal is resizing without distorting proportions, yet without having to perform any calculations with the size of the original image. If a mask is present, it is resized and modified along with the image." - }, - { - "author": "palant", - "title": "Integrated Nodes for ComfyUI", - "reference": "https://github.com/palant/integrated-nodes-comfyui", - "files": [ - "https://github.com/palant/integrated-nodes-comfyui" - ], - "install_type": "git-clone", - "description": "This tool will turn entire workflows or parts of them into single integrated nodes. In a way, it is similar to the Node Templates functionality but hides the inner structure. This is useful if all you want is to reuse and quickly configure a bunch of nodes without caring how they are interconnected." - }, - { - "author": "whmc76", - "title": "ComfyUI-Openpose-Editor-Plus", - "id": "openpose-editor-plus", - "reference": "https://github.com/whmc76/ComfyUI-Openpose-Editor-Plus", - "files": [ - "https://github.com/whmc76/ComfyUI-Openpose-Editor-Plus" - ], - "install_type": "git-clone", - "description": "Nodes:Openpose Editor Plus" - }, - { - "author": "martijnat", - "title": "comfyui-previewlatent", - "reference": "https://github.com/martijnat/comfyui-previewlatent", - "files": [ - "https://github.com/martijnat/comfyui-previewlatent" - ], - "install_type": "git-clone", - "description": "a ComfyUI plugin for previewing latents without vae decoding. Useful for showing intermediate results and can be used a faster 'preview image' if you don't wan't to use vae decode." - }, - { - "author": "banodoco", - "title": "Steerable Motion", - "id": "steerable-motion", - "reference": "https://github.com/banodoco/steerable-motion", - "files": [ - "https://github.com/banodoco/steerable-motion" - ], - "install_type": "git-clone", - "description": "Steerable Motion is a ComfyUI node for batch creative interpolation. Our goal is to feature the best methods for steering motion with images as video models evolve." - }, - { - "author": "gemell1", - "title": "ComfyUI_GMIC", - "id": "gmic", - "reference": "https://github.com/gemell1/ComfyUI_GMIC", - "files": [ - "https://github.com/gemell1/ComfyUI_GMIC" - ], - "install_type": "git-clone", - "description": "Nodes:GMIC Image Processing." - }, - { - "author": "LonicaMewinsky", - "title": "ComfyBreakAnim", - "id": "breakanim", - "reference": "https://github.com/LonicaMewinsky/ComfyUI-MakeFrame", - "files": [ - "https://github.com/LonicaMewinsky/ComfyUI-MakeFrame" - ], - "install_type": "git-clone", - "description": "Nodes:BreakFrames, GetKeyFrames, MakeGrid." - }, - { - "author": "TheBarret", - "title": "ZSuite", - "id": "zsuite", - "reference": "https://github.com/TheBarret/ZSuite", - "files": [ - "https://github.com/TheBarret/ZSuite" - ], - "install_type": "git-clone", - "description": "Nodes:Prompter, RF Noise, SeedMod." - }, - { - "author": "romeobuilderotti", - "title": "ComfyUI PNG Metadata", - "id": "pngmeta", - "reference": "https://github.com/romeobuilderotti/ComfyUI-PNG-Metadata", - "files": [ - "https://github.com/romeobuilderotti/ComfyUI-PNG-Metadata" - ], - "install_type": "git-clone", - "description": "Add custom Metadata fields to your saved PNG files." - }, - { - "author": "ka-puna", - "title": "comfyui-yanc", - "id": "yanc", - "reference": "https://github.com/ka-puna/comfyui-yanc", - "files": [ - "https://github.com/ka-puna/comfyui-yanc" - ], - "install_type": "git-clone", - "description": "NOTE: Concatenate Strings, Format Datetime String, Integer Caster, Multiline String, Truncate String. Yet Another Node Collection, a repository of simple nodes for ComfyUI. This repository eases the addition or removal of custom nodes to itself." - }, - { - "author": "amorano", - "title": "Jovimetrix Composition Nodes", - "id": "jovimetrix", - "reference": "https://github.com/Amorano/Jovimetrix", - "files": [ - "https://github.com/Amorano/Jovimetrix" - ], - "nodename_pattern": " \\(JOV\\)$", - "install_type": "git-clone", - "description": "Webcam, MIDI, Spout and GLSL shader support. Animation via tick. Parameter manipulation with wave generator. Math operations, universal value converstion, shape mask generation, image channel ops, batch splitting/merging/randomizing, load image/video from URL, Dynamic bus routing, support for GIPHY, save output anywhere! flatten, crop, transform; check color blindness, make stereograms or stereoscopic images, and much more." - }, - { - "author": "amorano", - "title": "Jovi_GLSL", - "id": "jovi_glsl", - "reference": "https://github.com/Amorano/Jovi_GLSL", - "files": [ - "https://github.com/Amorano/Jovi_GLSL" - ], - "install_type": "git-clone", - "description": "Integrates GLSL shader support." - }, - { - "author": "amorano", - "title": "Jovi_Spout", - "id": "jovi_spout", - "reference": "https://github.com/Amorano/Jovi_Spout", - "files": [ - "https://github.com/Amorano/Jovi_Spout" - ], - "install_type": "git-clone", - "description": "ComfyUI Nodes for using Spout streams." - }, - { - "author": "amorano", - "title": "Jovi_Measure", - "id": "jovi_measure", - "reference": "https://github.com/Amorano/Jovi_Measure", - "files": [ - "https://github.com/Amorano/Jovi_Measure" - ], - "install_type": "git-clone", - "description": "Image metrics nodes for ComfyUI" - }, - { - "author": "Umikaze-job", - "title": "select_folder_path_easy", - "reference": "https://github.com/Umikaze-job/select_folder_path_easy", - "files": [ - "https://github.com/Umikaze-job/select_folder_path_easy" - ], - "install_type": "git-clone", - "description": "This extension simply connects the nodes and specifies the output path of the generated images to a manageable path." - }, - { - "author": "Niutonian", - "title": "ComfyUi-NoodleWebcam", - "id": "noodle-webcam", - "reference": "https://github.com/Niutonian/ComfyUi-NoodleWebcam", - "files": [ - "https://github.com/Niutonian/ComfyUi-NoodleWebcam" - ], - "install_type": "git-clone", - "description": "Nodes:Noodle webcam is a node that records frames and send them to your favourite node." - }, - { - "author": "Feidorian", - "title": "feidorian-ComfyNodes", - "id": "feidorian", - "reference": "https://github.com/Feidorian/feidorian-ComfyNodes", - "nodename_pattern": "^Feidorian_", - "files": [ - "https://github.com/Feidorian/feidorian-ComfyNodes" - ], - "install_type": "git-clone", - "description": "This extension provides various custom nodes. literals, loaders, logic, output, switches" - }, - { - "author": "wutipong", - "title": "ComfyUI-TextUtils", - "reference": "https://github.com/wutipong/ComfyUI-TextUtils", - "files": [ - "https://github.com/wutipong/ComfyUI-TextUtils" - ], - "install_type": "git-clone", - "description": "Nodes:Create N-Token String" - }, - { - "author": "natto-maki", - "title": "ComfyUI-NegiTools", - "id": "negitools", - "reference": "https://github.com/natto-maki/ComfyUI-NegiTools", - "files": [ - "https://github.com/natto-maki/ComfyUI-NegiTools" - ], - "install_type": "git-clone", - "description": "Nodes:OpenAI DALLe3, OpenAI Translate to English, String Function, Seed Generator" - }, - { - "author": "LonicaMewinsky", - "title": "ComfyUI-RawSaver", - "id": "rawsaver", - "reference": "https://github.com/LonicaMewinsky/ComfyUI-RawSaver", - "files": [ - "https://github.com/LonicaMewinsky/ComfyUI-RawSaver" - ], - "install_type": "git-clone", - "description": "Nodes:SaveTifImage. ComfyUI custom node for purpose of saving image as uint16 tif file." - }, - { - "author": "jojkaart", - "title": "ComfyUI-sampler-lcm-alternative", - "id": "lmc-alt", - "reference": "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative", - "files": [ - "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative" - ], - "install_type": "git-clone", - "description": "Nodes:LCMScheduler, SamplerLCMAlternative, SamplerLCMCycle. ComfyUI Custom Sampler nodes that add a new improved LCM sampler functions" - }, - { - "author": "GTSuya-Studio", - "title": "ComfyUI-GTSuya-Nodes", - "id": "gtsuya", - "reference": "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes", - "files": [ - "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes" - ], - "install_type": "git-clone", - "description": "ComfyUI-GTSuya-Nodes is a ComfyUI extension designed to add several wildcards supports into ComfyUI. Wildcards allow you to use __name__ syntax in your prompt to get a random line from a file named name.txt in a wildcards directory." - }, - { - "author": "oyvindg", - "title": "ComfyUI-TrollSuite", - "id": "troll", - "reference": "https://github.com/oyvindg/ComfyUI-TrollSuite", - "files": [ - "https://github.com/oyvindg/ComfyUI-TrollSuite" - ], - "install_type": "git-clone", - "description": "Nodes: BinaryImageMask, ImagePadding, LoadLastCreatedImage, RandomMask, TransparentImage." - }, - { - "author": "drago87", - "title": "ComfyUI_Dragos_Nodes", - "id": "dragos", - "reference": "https://github.com/drago87/ComfyUI_Dragos_Nodes", - "files": [ - "https://github.com/drago87/ComfyUI_Dragos_Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:File Padding, Image Info, VAE Loader With Name" - }, - { - "author": "bronkula", - "title": "comfyui-fitsize", - "id": "fitsize", - "reference": "https://github.com/bronkula/comfyui-fitsize", - "files": [ - "https://github.com/bronkula/comfyui-fitsize" - ], - "install_type": "git-clone", - "description": "Nodes:Fit Size From Int/Image/Resize, Load Image And Resize To Fit, Pick Image From Batch/List, Crop Image Into Even Pieces, Image Region To Mask... A simple set of nodes for making an image fit within a bounding box" - }, - { - "author": "toyxyz", - "title": "ComfyUI_toyxyz_test_nodes", - "id": "comfyui_toyxyz_test_nodes", - "reference": "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes", - "files": [ - "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes" - ], - "install_type": "git-clone", - "description": "This node was created to send a webcam to ComfyUI in real time. This node is recommended for use with LCM." - }, - { - "author": "toyxyz", - "title": "ComfyUI_rgbx_Wrapper", - "reference": "https://github.com/toyxyz/ComfyUI_rgbx_Wrapper", - "files": [ - "https://github.com/toyxyz/ComfyUI_rgbx_Wrapper" - ], - "install_type": "git-clone", - "description": "This is the rgb2x wrapper node for ComfyUI. The required models are automatically downloaded on the first run.\noriginal project : [a/https://github.com/zheng95z/rgbx](original project : https://github.com/zheng95z/rgbx)" - }, - { - "author": "thecooltechguy", - "title": "ComfyUI Stable Video Diffusion", - "reference": "https://github.com/thecooltechguy/ComfyUI-Stable-Video-Diffusion", - "files": [ - "https://github.com/thecooltechguy/ComfyUI-Stable-Video-Diffusion" - ], - "install_type": "git-clone", - "description": "Easily use Stable Video Diffusion inside ComfyUI!" - }, - { - "author": "thecooltechguy", - "title": "ComfyUI-MagicAnimate", - "reference": "https://github.com/thecooltechguy/ComfyUI-MagicAnimate", - "files": [ - "https://github.com/thecooltechguy/ComfyUI-MagicAnimate" - ], - "install_type": "git-clone", - "description": "Easily use Magic Animate within ComfyUI!\n[w/WARN: This extension requires 15GB disk space.]" - }, - { - "author": "thecooltechguy", - "title": "ComfyUI-ComfyWorkflows", - "reference": "https://github.com/thecooltechguy/ComfyUI-ComfyWorkflows", - "files": [ - "https://github.com/thecooltechguy/ComfyUI-ComfyWorkflows" - ], - "install_type": "git-clone", - "description": "The best way to run, share, & discover thousands of ComfyUI workflows." - }, - { - "author": "Danand", - "title": "Comfy Couple", - "reference": "https://github.com/Danand/ComfyUI-ComfyCouple", - "files": [ - "https://github.com/Danand/ComfyUI-ComfyCouple" - ], - "install_type": "git-clone", - "description": " If you want to draw two different characters together without blending their features, so you could try to check out this custom node." - }, - { - "author": "42lux", - "title": "Just a bunch of QOL nodes by 42lux", - "id": "comfyui-42lux", - "reference": "https://github.com/42lux/ComfyUI-42lux", - "files": [ - "https://github.com/42lux/ComfyUI-42lux" - ], - "install_type": "git-clone", - "description": "Just a bunch of QOL nodes. Normalized Flux Sampling, High Res Latent Picker, Textbox with Token Counter." - }, - { - "author": "sergekatzmann", - "title": "ComfyUI_Nimbus-Pack", - "reference": "https://github.com/sergekatzmann/ComfyUI_Nimbus-Pack", - "files": [ - "https://github.com/sergekatzmann/ComfyUI_Nimbus-Pack" - ], - "install_type": "git-clone", - "description": "Nodes:Image Square Adapter Node, Image Resize And Crop Node" - }, - { - "author": "komojini", - "title": "ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes", - "reference": "https://github.com/komojini/ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes", - "files": [ - "https://github.com/komojini/ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes" - ], - "install_type": "git-clone", - "description": "Nodes:XL DreamBooth LoRA, S3 Bucket LoRA" - }, - { - "author": "komojini", - "title": "komojini-comfyui-nodes", - "id": "komojini-nodes", - "reference": "https://github.com/komojini/komojini-comfyui-nodes", - "files": [ - "https://github.com/komojini/komojini-comfyui-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:YouTube Video Loader. Custom ComfyUI Nodes for video generation" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "APISR IN COMFYUI", - "id": "apisr-zho", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of APISR for ComfyUI, both image and video" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-Text_Image-Composite [WIP]", - "id": "txtimg-composite", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Text_Image-Composite", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Text_Image-Composite" - ], - "install_type": "git-clone", - "description": "Nodes:Text_Image_Zho, Text_Image_Multiline_Zho, RGB_Image_Zho, AlphaChanelAddByMask, ImageComposite_Zho, ..." - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-Gemini", - "id": "gemini", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Gemini", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Gemini" - ], - "install_type": "git-clone", - "description": "Using Gemini-pro & Gemini-pro-vision in ComfyUI." - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "comfyui-portrait-master-zh-cn", - "id": "portrait-master-zho", - "reference": "https://github.com/ZHO-ZHO-ZHO/comfyui-portrait-master-zh-cn", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/comfyui-portrait-master-zh-cn" - ], - "install_type": "git-clone", - "description": "ComfyUI Portrait Master 简体中文版." - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-Q-Align", - "id": "qalign-zho", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Q-Align", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Q-Align" - ], - "install_type": "git-clone", - "description": "Nodes:Q-Align Scoring. Implementation of [a/Q-Align](https://arxiv.org/abs/2312.17090) for ComfyUI" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-InstantID", - "id": "instantid-zho", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-InstantID", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-InstantID" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/InstantID](https://github.com/InstantID/InstantID) for ComfyUI" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI PhotoMaker (ZHO)", - "id": "photomaker-zho", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker-ZHO", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker-ZHO" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/PhotoMaker](https://github.com/TencentARC/PhotoMaker) for ComfyUI" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-Qwen-VL-API", - "id": "qwen-vl-api", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen-VL-API", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen-VL-API" - ], - "install_type": "git-clone", - "description": "QWen-VL-Plus & QWen-VL-Max in ComfyUI" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-SVD-ZHO (WIP)", - "id": "svd-zho", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO" - ], - "install_type": "git-clone", - "description": "My Workflows + Auxiliary nodes for Stable Video Diffusion (SVD)" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI SegMoE", - "id": "segmoe", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SegMoE", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SegMoE" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/SegMoE: Segmind Mixture of Diffusion Experts](https://github.com/segmind/segmoe) for ComfyUI" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI YoloWorld-EfficientSAM", - "id": "yoloworld", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-YoloWorld-EfficientSAM", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-YoloWorld-EfficientSAM" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/YOLO-World + EfficientSAM](https://huggingface.co/spaces/SkalskiP/YOLO-World) & [a/YOLO-World](https://github.com/AILab-CVC/YOLO-World) for ComfyUI\nNOTE: Install the efficient_sam model from the Install models menu.\n[w/When installing or updating this custom node, many installation packages may be downgraded due to the installation of requirements.\n!! python3.12 is incompatible.]" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-PixArt-alpha-Diffusers", - "id": "pixart-alpha", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PixArt-alpha-Diffusers", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PixArt-alpha-Diffusers" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/PixArt-alpha-Diffusers](https://github.com/PixArt-alpha/PixArt-alpha) for ComfyUI" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-BRIA_AI-RMBG", - "id": "bria-ai-rmbg", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BRIA_AI-RMBG", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BRIA_AI-RMBG" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of BRIA RMBG Model for ComfyUI." - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "DepthFM IN COMFYUI", - "id": "depthfm", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-DepthFM", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-DepthFM" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/DepthFM](https://github.com/CompVis/depth-fm) for ComfyUI" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "Phi-3-mini in ComfyUI", - "id": "phi3mini", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Phi-3-mini", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Phi-3-mini" - ], - "install_type": "git-clone", - "description": "Nodes:Phi3mini_4k_ModelLoader_Zho, Phi3mini_4k_Zho, Phi3mini_4k_Chat_Zho" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-ArtGallery", - "id": "artgallery", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-ArtGallery", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-ArtGallery" - ], - "install_type": "git-clone", - "description": "Prompt Visualization | Art Gallery\n[w/WARN: Installation requires 2GB of space, and it will involve a long download time.]" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-Animated-optical-illusions", - "id": "animated-optical-illusion", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Animated-optical-illusions", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Animated-optical-illusions" - ], - "install_type": "git-clone", - "description": "Animated optical illusions in ComfyUI" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "Qwen-2.5 in ComfyUI", - "id": "qwen", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen" - ], - "install_type": "git-clone", - "description": "Using Qwen-2.5 in ComfyUI" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-UltraEdit-ZHO", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-UltraEdit-ZHO", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-UltraEdit-ZHO" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/UltraEdit](https://github.com/HaozheZhao/UltraEdit) (Diffusers) for ComfyUI" - }, - { - "author": "kenjiqq", - "title": "qq-nodes-comfyui", - "reference": "https://github.com/kenjiqq/qq-nodes-comfyui", - "files": [ - "https://github.com/kenjiqq/qq-nodes-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:Any List, Image Accumulator Start, Image Accumulator End, Load Lines From Text File, XY Grid Helper, Slice List, Axis To String/Int/Float/Model, ..." - }, - { - "author": "80sVectorz", - "title": "ComfyUI-Static-Primitives", - "reference": "https://github.com/80sVectorz/ComfyUI-Static-Primitives", - "files": [ - "https://github.com/80sVectorz/ComfyUI-Static-Primitives" - ], - "install_type": "git-clone", - "description": "Adds Static Primitives to ComfyUI. Mostly to work with reroute nodes" - }, - { - "author": "AbdullahAlfaraj", - "title": "Comfy-Photoshop-SD", - "reference": "https://github.com/AbdullahAlfaraj/Comfy-Photoshop-SD", - "files": [ - "https://github.com/AbdullahAlfaraj/Comfy-Photoshop-SD" - ], - "install_type": "git-clone", - "description": "Nodes: load Image with metadata, get config data, load image from base64 string, Load Loras From Prompt, Generate Latent Noise, Combine Two Latents Into Batch, General Purpose Controlnet Unit, ControlNet Script, Content Mask Latent, Auto-Photoshop-SD Seed, Expand and Blur the Mask" - }, - { - "author": "zhuanqianfish", - "title": "EasyCaptureNode for ComfyUI", - "reference": "https://github.com/zhuanqianfish/ComfyUI-EasyNode", - "files": [ - "https://github.com/zhuanqianfish/ComfyUI-EasyNode" - ], - "install_type": "git-clone", - "description": "Capture window content from other programs, easyway combined with LCM for real-time painting" - }, - { - "author": "discopixel-studio", - "title": "PhotoRoom Nodes by Discopixel", - "reference": "https://github.com/discopixel-studio/comfyui-discopixel", - "files": [ - "https://github.com/discopixel-studio/comfyui-discopixel" - ], - "install_type": "git-clone", - "description": "A small collection of custom nodes for use with ComfyUI, by [a/Discopixel](https://discopixel.studio)" - }, - { - "author": "zcfrank1st", - "title": "ComfyUI Yolov8", - "reference": "https://github.com/zcfrank1st/Comfyui-Yolov8", - "files": [ - "https://github.com/zcfrank1st/Comfyui-Yolov8" - ], - "install_type": "git-clone", - "description": "Nodes: Yolov8Detection, Yolov8Segmentation. Deadly simple yolov8 comfyui plugin" - }, - { - "author": "SoftMeng", - "title": "ComfyUI_Mexx_Styler", - "reference": "https://github.com/SoftMeng/ComfyUI_Mexx_Styler", - "files": [ - "https://github.com/SoftMeng/ComfyUI_Mexx_Styler" - ], - "install_type": "git-clone", - "description": "Nodes: ComfyUI Mexx Styler, ComfyUI Mexx Styler Advanced" - }, - { - "author": "SoftMeng", - "title": "ComfyUI_Mexx_Poster", - "reference": "https://github.com/SoftMeng/ComfyUI_Mexx_Poster", - "files": [ - "https://github.com/SoftMeng/ComfyUI_Mexx_Poster" - ], - "install_type": "git-clone", - "description": "Nodes: ComfyUI_Mexx_Poster" - }, - { - "author": "SoftMeng", - "title": "ComfyUI_ImageToText", - "reference": "https://github.com/SoftMeng/ComfyUI_ImageToText", - "files": [ - "https://github.com/SoftMeng/ComfyUI_ImageToText" - ], - "install_type": "git-clone", - "description": "Nodes: ComfyUI_ImageToText" - }, - { - "author": "SoftMeng", - "title": "ComfyUI-DeepCache-Fix", - "reference": "https://github.com/SoftMeng/ComfyUI-DeepCache-Fix", - "files": [ - "https://github.com/SoftMeng/ComfyUI-DeepCache-Fix" - ], - "install_type": "git-clone", - "description": "Accelerate ComfyUI Nodes for Faster Image Generation, Ensuring Consistency Pre and Post-Acceleration, Ideal for Bulk Image Production." - }, - { - "author": "SoftMeng", - "title": "ComfyUI-PIL", - "reference": "https://github.com/SoftMeng/ComfyUI-PIL", - "files": [ - "https://github.com/SoftMeng/ComfyUI-PIL" - ], - "install_type": "git-clone", - "description": "ComfyUI is proud to present a new plugin designed to enhance user experience through seamless integration with Pillow, the powerful fork of Python Imaging Library (PIL). This plugin offers a suite of basic image manipulation tools that are easy to use and integrate directly into the ComfyUI framework." - }, - { - "author": "wmatson", - "title": "easy-comfy-nodes", - "reference": "https://github.com/wmatson/easy-comfy-nodes", - "files": [ - "https://github.com/wmatson/easy-comfy-nodes" - ], - "install_type": "git-clone", - "description": "A collection of utility nodes primarily for interacting with comfy via automated systems" - }, - { - "author": "DrJKL", - "title": "ComfyUI-Anchors", - "reference": "https://github.com/DrJKL/ComfyUI-Anchors", - "files": [ - "https://github.com/DrJKL/ComfyUI-Anchors" - ], - "install_type": "git-clone", - "description": "A ComfyUI extension to add spatial anchors/waypoints to better navigate large workflows." - }, - { - "author": "vanillacode314", - "title": "Simple Wildcard", - "reference": "https://github.com/vanillacode314/SimpleWildcardsComfyUI", - "files": ["https://github.com/vanillacode314/SimpleWildcardsComfyUI"], - "install_type": "git-clone", - "pip": ["pipe"], - "description": "A simple wildcard node for ComfyUI. Can also be used a style prompt node." - }, - { - "author": "WebDev9000", - "title": "WebDev9000-Nodes", - "reference": "https://github.com/WebDev9000/WebDev9000-Nodes", - "files": [ - "https://github.com/WebDev9000/WebDev9000-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Ignore Braces, Settings Switch." - }, - { - "author": "Scholar01", - "title": "SComfyUI-Keyframe", - "reference": "https://github.com/Scholar01/ComfyUI-Keyframe", - "files": [ - "https://github.com/Scholar01/ComfyUI-Keyframe" - ], - "install_type": "git-clone", - "description": "set denoise strength for keyframe" - }, - { - "author": "Haoming02", - "title": "ComfyUI Old Photo Restoration", - "reference": "https://github.com/Haoming02/comfyui-old-photo-restoration", - "files": [ - "https://github.com/Haoming02/comfyui-old-photo-restoration" - ], - "install_type": "git-clone", - "description": "Perform Bringing-Old-Photos-Back-to-Life" - }, - { - "author": "Haoming02", - "title": "Diffusion CG", - "reference": "https://github.com/Haoming02/comfyui-diffusion-cg", - "files": [ - "https://github.com/Haoming02/comfyui-diffusion-cg" - ], - "install_type": "git-clone", - "description": "Color Grading for Stable Diffusion" - }, - { - "author": "Haoming02", - "title": "Prompt Format", - "reference": "https://github.com/Haoming02/comfyui-prompt-format", - "files": [ - "https://github.com/Haoming02/comfyui-prompt-format" - ], - "install_type": "git-clone", - "description": "Add a button that formats the prompts in textfields" - }, - { - "author": "Haoming02", - "title": "Clear Screen", - "reference": "https://github.com/Haoming02/comfyui-clear-screen", - "files": [ - "https://github.com/Haoming02/comfyui-clear-screen" - ], - "install_type": "git-clone", - "description": "Add a button that clears the console" - }, - { - "author": "Haoming02", - "title": "Menu Anchor", - "reference": "https://github.com/Haoming02/comfyui-menu-anchor", - "files": [ - "https://github.com/Haoming02/comfyui-menu-anchor" - ], - "install_type": "git-clone", - "description": "Snaps the menu to the corner automatically" - }, - { - "author": "Haoming02", - "title": "Tab Handler", - "reference": "https://github.com/Haoming02/comfyui-tab-handler", - "files": [ - "https://github.com/Haoming02/comfyui-tab-handler" - ], - "install_type": "git-clone", - "description": "Use the Tab key to switch between textfields" - }, - { - "author": "Haoming02", - "title": "Floodgate", - "reference": "https://github.com/Haoming02/comfyui-floodgate", - "files": [ - "https://github.com/Haoming02/comfyui-floodgate" - ], - "install_type": "git-clone", - "description": "A node that allows you to switch between execution flow" - }, - { - "author": "Haoming02", - "title": "Node Beautify", - "reference": "https://github.com/Haoming02/comfyui-node-beautify", - "files": [ - "https://github.com/Haoming02/comfyui-node-beautify" - ], - "install_type": "git-clone", - "description": "Add a button that formats the workflow graph" - }, - { - "author": "Haoming02", - "title": "ComfyUI ReSharpen", - "reference": "https://github.com/Haoming02/comfyui-resharpen", - "files": [ - "https://github.com/Haoming02/comfyui-resharpen" - ], - "install_type": "git-clone", - "description": "Manipulate the details of generations." - }, - { - "author": "bedovyy", - "title": "ComfyUI_NAIDGenerator", - "reference": "https://github.com/bedovyy/ComfyUI_NAIDGenerator", - "files": [ - "https://github.com/bedovyy/ComfyUI_NAIDGenerator" - ], - "install_type": "git-clone", - "description": "This extension helps generate images through NAI." - }, - { - "author": "Off-Live", - "title": "ComfyUI-off-suite", - "reference": "https://github.com/Off-Live/ComfyUI-off-suite", - "files": [ - "https://github.com/Off-Live/ComfyUI-off-suite" - ], - "install_type": "git-clone", - "description": "Nodes:Image Crop Fit, OFF SEGS to Image, Crop Center wigh SEGS, Watermarking, GW Number Formatting Node." - }, - { - "author": "ningxiaoxiao", - "title": "comfyui-NDI", - "reference": "https://github.com/ningxiaoxiao/comfyui-NDI", - "files": [ - "https://github.com/ningxiaoxiao/comfyui-NDI" - ], - "pip": ["ndi-python"], - "install_type": "git-clone", - "description": "Real-time input output node for ComfyUI by NDI. Leveraging the powerful linking capabilities of NDI, you can access NDI video stream frames and send images generated by the model to NDI video streams." - }, - { - "author": "subtleGradient", - "title": "Touchpad two-finger gesture support for macOS", - "reference": "https://github.com/subtleGradient/TinkerBot-tech-for-ComfyUI-Touchpad", - "files": [ - "https://github.com/subtleGradient/TinkerBot-tech-for-ComfyUI-Touchpad" - ], - "install_type": "git-clone", - "description": "Two-finger scrolling (vertical and horizontal) to pan the canvas. Two-finger pinch to zoom in and out. Command-scroll up and down to zoom in and out. Fixes [a/comfyanonymous/ComfyUI#2059](https://github.com/comfyanonymous/ComfyUI/issues/2059)." - }, - { - "author": "zcfrank1st", - "title": "comfyui_visual_anagram", - "reference": "https://github.com/zcfrank1st/comfyui_visual_anagrams", - "files": [ - "https://github.com/zcfrank1st/comfyui_visual_anagrams" - ], - "install_type": "git-clone", - "description": "Nodes:visual_anagrams_sample, visual_anagrams_animate" - }, - { - "author": "Electrofried", - "title": "OpenAINode", - "reference": "https://github.com/Electrofried/ComfyUI-OpenAINode", - "files": [ - "https://github.com/Electrofried/ComfyUI-OpenAINode" - ], - "install_type": "git-clone", - "description": "A simply node for hooking in to openAI API based servers via comfyUI" - }, - { - "author": "AustinMroz", - "title": "SpliceTools", - "id": "splicetools", - "reference": "https://github.com/AustinMroz/ComfyUI-SpliceTools", - "files": [ - "https://github.com/AustinMroz/ComfyUI-SpliceTools" - ], - "install_type": "git-clone", - "description": "Experimental utility nodes with a focus on manipulation of noised latents" - }, - { - "author": "AustinMroz", - "title": "DynamicOversampling", - "id": "dynamic-oversampling", - "reference": "https://github.com/AustinMroz/ComfyUI-DynamicOversampling", - "files": [ - "https://github.com/AustinMroz/ComfyUI-DynamicOversampling" - ], - "install_type": "git-clone", - "description": "Nodes:DynamicSampler, MeasuredSampler, ResolveMaskPromise" - }, - { - "author": "AustinMroz", - "title": "ComfyUI-WorkflowCheckpointing", - "id": "workflowcheckpointing", - "reference": "https://github.com/AustinMroz/ComfyUI-WorkflowCheckpointing", - "files": [ - "https://github.com/AustinMroz/ComfyUI-WorkflowCheckpointing" - ], - "install_type": "git-clone", - "description": "Automatically creates checkpoints during workflow execution. If If an workflow is canceled or ComfyUI crashes mid-execution, then these checkpoints are used when the workflow is re-queued to resume execution with minimal progress loss." - }, - { - "author": "AustinMroz", - "title": "ComfyUI-MinCache", - "id": "comfyui-mincache", - "reference": "https://github.com/AustinMroz/ComfyUI-MinCache", - "files": [ - "https://github.com/AustinMroz/ComfyUI-MinCache" - ], - "install_type": "git-clone", - "description": "Modifies execution to minimize RAM at the cost of performance" - }, - { - "author": "11cafe", - "title": "ComfyUI Workspace Manager - Comfyspace", - "reference": "https://github.com/11cafe/comfyui-workspace-manager", - "files": [ - "https://github.com/11cafe/comfyui-workspace-manager" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node for project management to centralize the management of all your workflows in one place. Seamlessly switch between workflows, create and update them within a single workspace, like Google Docs." - }, - { - "author": "knuknX", - "title": "ComfyUI-Image-Tools", - "reference": "https://github.com/knuknX/ComfyUI-Image-Tools", - "files": [ - "https://github.com/knuknX/ComfyUI-Image-Tools" - ], - "install_type": "git-clone", - "description": "Nodes:BatchImageResizeProcessor, SingleImagePathLoader, SingleImageUrlLoader" - }, - { - "author": "jtrue", - "title": "ComfyUI-JaRue", - "reference": "https://github.com/jtrue/ComfyUI-JaRue", - "files": [ - "https://github.com/jtrue/ComfyUI-JaRue" - ], - "nodename_pattern": "_jru$", - "install_type": "git-clone", - "description": "A collection of nodes powering a tensor oracle on a home network with automation" - }, - { - "author": "filliptm", - "title": "ComfyUI_Fill-Nodes", - "reference": "https://github.com/filliptm/ComfyUI_Fill-Nodes", - "files": [ - "https://github.com/filliptm/ComfyUI_Fill-Nodes" - ], - "install_type": "git-clone", - "description": "VFX nodes, Shaders, Utilities, Mask tools, Prompting Tools, and much more!" - }, - { - "author": "zfkun", - "title": "ComfyUI_zfkun", - "reference": "https://github.com/zfkun/ComfyUI_zfkun", - "files": [ - "https://github.com/zfkun/ComfyUI_zfkun" - ], - "install_type": "git-clone", - "description": "A collection of nodes for common tools, including text preview, text translation (multi-platform, multi-language), image loader, webcamera capture." - }, - { - "author": "zcfrank1st", - "title": "Comfyui-Toolbox", - "reference": "https://github.com/zcfrank1st/Comfyui-Toolbox", - "files": [ - "https://github.com/zcfrank1st/Comfyui-Toolbox" - ], - "install_type": "git-clone", - "description": "Nodes:Preview Json, Save Json, Test Json Preview, ... preview and save nodes" - }, - { - "author": "talesofai", - "title": "ComfyUI Browser", - "reference": "https://github.com/talesofai/comfyui-browser", - "files": [ - "https://github.com/talesofai/comfyui-browser" - ], - "install_type": "git-clone", - "description": "This is an image/video/workflow browser and manager for ComfyUI. You could add image/video/workflow to collections and load it to ComfyUI. You will be able to use your collections everywhere." - }, - { - "author": "yolain", - "title": "ComfyUI Easy Use", - "reference": "https://github.com/yolain/ComfyUI-Easy-Use", - "files": [ - "https://github.com/yolain/ComfyUI-Easy-Use" - ], - "install_type": "git-clone", - "description": "To enhance the usability of ComfyUI, optimizations and integrations have been implemented for several commonly used nodes." - }, - { - "author": "bruefire", - "title": "ComfyUI Sequential Image Loader", - "reference": "https://github.com/bruefire/ComfyUI-SeqImageLoader", - "files": [ - "https://github.com/bruefire/ComfyUI-SeqImageLoader" - ], - "install_type": "git-clone", - "description": "This is an extension node for ComfyUI that allows you to load frames from a video in bulk and perform masking and sketching on each frame through a GUI." - }, - { - "author": "mmaker", - "title": "mmaker/Color Enhance", - "reference": "https://git.mmaker.moe/mmaker/sd-webui-color-enhance", - "files": [ - "https://git.mmaker.moe/mmaker/sd-webui-color-enhance" - ], - "install_type": "git-clone", - "description": "Node: Color Enhance, Color Blend. This 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 [colorfulness](https://en.wikipedia.org/wiki/Colorfulness)] component. Original source can be found in the link below." - }, - { - "author": "modusCell", - "title": "Preset Dimensions", - "reference": "https://github.com/modusCell/ComfyUI-dimension-node-modusCell", - "files": [ - "https://github.com/modusCell/ComfyUI-dimension-node-modusCell" - ], - "install_type": "git-clone", - "description": "Simple node for sharing latent image size between nodes. Preset dimensions for SD and XL." - }, - { - "author": "aria1th", - "title": "ComfyUI-LogicUtils", - "reference": "https://github.com/aria1th/ComfyUI-LogicUtils", - "files": [ - "https://github.com/aria1th/ComfyUI-LogicUtils" - ], - "install_type": "git-clone", - "description": "Logical Utils (compare, string, boolean operations) for ComfyUI" - }, - { - "author": "MitoshiroPJ", - "title": "ComfyUI Slothful Attention", - "reference": "https://github.com/MitoshiroPJ/comfyui_slothful_attention", - "files": [ - "https://github.com/MitoshiroPJ/comfyui_slothful_attention" - ], - "install_type": "git-clone", - "description": "This custom node allow controlling output without training. The reducing method is similar to [a/Spatial-Reduction Attention](https://paperswithcode.com/method/spatial-reduction-attention), but generating speed may not be increased on typical image sizes due to overheads. (In some cases, slightly slower)" - }, - { - "author": "brianfitzgerald", - "title": "StyleAligned for ComfyUI", - "reference": "https://github.com/brianfitzgerald/style_aligned_comfy", - "files": [ - "https://github.com/brianfitzgerald/style_aligned_comfy" - ], - "install_type": "git-clone", - "description": "Implementation of the [a/StyleAligned](https://style-aligned-gen.github.io/) paper for ComfyUI. This node allows you to apply a consistent style to all images in a batch; by default it will use the first image in the batch as the style reference, forcing all other images to be consistent with it." - }, - { - "author": "deroberon", - "title": "demofusion-comfyui", - "id": "demofusion", - "reference": "https://github.com/deroberon/demofusion-comfyui", - "files": [ - "https://github.com/deroberon/demofusion-comfyui" - ], - "install_type": "git-clone", - "description": "The Demofusion Custom Node is a wrapper that adapts the work and implementation of the [a/DemoFusion](https://ruoyidu.github.io/demofusion/demofusion.html) technique created and implemented by Ruoyi Du to the Comfyui environment." - }, - { - "author": "deroberon", - "title": "StableZero123-comfyui", - "reference": "https://github.com/deroberon/StableZero123-comfyui", - "files": [ - "https://github.com/deroberon/StableZero123-comfyui" - ], - "install_type": "git-clone", - "description": "StableZero123 is a node wrapper that uses the model and technique provided [here](https://github.com/SUDO-AI-3D/zero123plus/). It uses the Zero123plus model to generate 3D views using just one image." - }, - { - "author": "glifxyz", - "title": "ComfyUI-GlifNodes", - "id": "glif", - "reference": "https://github.com/glifxyz/ComfyUI-GlifNodes", - "files": [ - "https://github.com/glifxyz/ComfyUI-GlifNodes" - ], - "install_type": "git-clone", - "description": "Custom set of nodes used by glif.app. With glif you can build mini apps that are powered by custom comfy workflows." - }, - { - "author": "concarne000", - "title": "ConCarneNode", - "reference": "https://github.com/concarne000/ConCarneNode", - "files": [ - "https://github.com/concarne000/ConCarneNode" - ], - "install_type": "git-clone", - "description": "Nodes:Bing Image Grabber, Zephyr chat, Hermes Chat" - }, - { - "author": "Aegis72", - "title": "AegisFlow Utility Nodes", - "id": "aegis", - "reference": "https://github.com/aegis72/aegisflow_utility_nodes", - "files": [ - "https://github.com/aegis72/aegisflow_utility_nodes" - ], - "install_type": "git-clone", - "description": "These nodes will be placed in comfyui/custom_nodes/aegisflow and contains the image passer (accepts an image as either wired or wirelessly, input and passes it through. Latent passer does the same for latents, and the Preprocessor chooser allows a passthrough image and 10 controlnets to be passed in AegisFlow Shima. The inputs on the Preprocessor chooser should not be renamed if you intend to accept image inputs wirelessly through UE nodes. It can be done, but the send node input regex for each controlnet preprocessor column must also be changed." - }, - { - "author": "Aegis72", - "title": "ComfyUI-styles-all", - "id": "styles-all", - "reference": "https://github.com/aegis72/comfyui-styles-all", - "files": [ - "https://github.com/aegis72/comfyui-styles-all" - ], - "install_type": "git-clone", - "description": "This is a straight clone of Azazeal04's all-in-one styler menu, which was removed from gh on Jan 21, 2024. I have made no changes to the files at all." - }, - { - "author": "glibsonoran", - "title": "Plush-for-ComfyUI", - "id": "plush", - "reference": "https://github.com/glibsonoran/Plush-for-ComfyUI", - "files": [ - "https://github.com/glibsonoran/Plush-for-ComfyUI" - ], - "install_type": "git-clone", - "description": "Nodes: Style Prompt, OAI Dall_e Image. Plush contains two OpenAI enabled nodes: Style Prompt: Takes your prompt and the art style you specify and generates a prompt from ChatGPT3 or 4 that Stable Diffusion can use to generate an image in that style. OAI Dall_e 3: Takes your prompt and parameters and produces a Dall_e3 image in ComfyUI." - }, - { - "author": "vienteck", - "title": "ComfyUI-Chat-GPT-Integration", - "reference": "https://github.com/vienteck/ComfyUI-Chat-GPT-Integration", - "files": [ - "https://github.com/vienteck/ComfyUI-Chat-GPT-Integration" - ], - "install_type": "git-clone", - "description": "This extension is a reimagined version based on the [a/ComfyUI-QualityOfLifeSuit_Omar92](https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92) extension, and it supports integration with ChatGPT through the new OpenAI API.\nNOTE: See detailed installation instructions on the [a/repository](https://github.com/vienteck/ComfyUI-Chat-GPT-Integration)." - }, - { - "author": "MNeMoNiCuZ", - "title": "ComfyUI-mnemic-nodes", - "id": "comfyui-mnemic-nodes", - "reference": "https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes", - "files": [ - "https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes" - ], - "install_type": "git-clone", - "description": "Added new models to Groq LLM. Added a new node: Tiktoken Tokenizer Info." - }, - { - "author": "AI2lab", - "title": "comfyUI-tool-2lab", - "id": "tool-2lab", - "reference": "https://github.com/AI2lab/comfyUI-tool-2lab", - "files": [ - "https://github.com/AI2lab/comfyUI-tool-2lab" - ], - "install_type": "git-clone", - "description": "tool set for developing workflow and publish to web api server" - }, - { - "author": "AI2lab", - "title": "comfyUI-DeepSeek-2lab", - "id": "deepseek", - "reference": "https://github.com/AI2lab/comfyUI-DeepSeek-2lab", - "files": [ - "https://github.com/AI2lab/comfyUI-DeepSeek-2lab" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of DeepSeek for ComfyUI" - }, - { - "author": "AI2lab", - "title": "comfyUI-siliconflow-api-2lab", - "id": "siliconflow", - "reference": "https://github.com/AI2lab/comfyUI-siliconflow-api-2lab", - "files": [ - "https://github.com/AI2lab/comfyUI-siliconflow-api-2lab" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of siliconflow API for ComfyUI\nHow to use:apply api key in :https://cloud.siliconflow.cn/\nadd api key in config.json" - }, - { - "author": "AI2lab", - "title": "comfyUI-kling-api-2lab", - "reference": "https://github.com/AI2lab/comfyUI-kling-api-2lab", - "files": [ - "https://github.com/AI2lab/comfyUI-kling-api-2lab" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of KLing for ComfyUI" - }, - { - "author": "SpaceKendo", - "title": "Text to video for Stable Video Diffusion in ComfyUI", - "id": "svd-txt2vid", - "reference": "https://github.com/SpaceKendo/ComfyUI-svd_txt2vid", - "files": [ - "https://github.com/SpaceKendo/ComfyUI-svd_txt2vid" - ], - "install_type": "git-clone", - "description": "This is node replaces the init_image conditioning for the [a/Stable Video Diffusion](https://github.com/Stability-AI/generative-models) image to video model with text embeds, together with a conditioning frame. The conditioning frame is a set of latents." - }, - { - "author": "NimaNzrii", - "title": "comfyui-popup_preview", - "id": "popup-preview", - "reference": "https://github.com/NimaNzrii/comfyui-popup_preview", - "files": [ - "https://github.com/NimaNzrii/comfyui-popup_preview" - ], - "install_type": "git-clone", - "description": "popup preview for comfyui" - }, - { - "author": "NimaNzrii", - "title": "comfyui-photoshop", - "id": "comfy-photoshop", - "reference": "https://github.com/NimaNzrii/comfyui-photoshop", - "files": [ - "https://github.com/NimaNzrii/comfyui-photoshop" - ], - "install_type": "git-clone", - "description": "Powerfull bridge to Photoshop by NimaNzrii" - }, - { - "author": "Rui", - "title": "RUI-Nodes", - "id": "rui-nodes", - "reference": "https://github.com/rui40000/RUI-Nodes", - "files": [ - "https://github.com/rui40000/RUI-Nodes" - ], - "install_type": "git-clone", - "description": "Rui's workflow-specific custom node, written using GPT." - }, - { - "author": "dmarx", - "title": "ComfyUI-Keyframed", - "id": "keyframed", - "reference": "https://github.com/dmarx/ComfyUI-Keyframed", - "files": [ - "https://github.com/dmarx/ComfyUI-Keyframed" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to facilitate parameter/prompt keyframing using comfyui nodes for defining and manipulating parameter curves. Essentially provides a ComfyUI interface to the [a/keyframed](https://github.com/dmarx/keyframed) library." - }, - { - "author": "dmarx", - "title": "ComfyUI-AudioReactive", - "id": "audioreactive", - "reference": "https://github.com/dmarx/ComfyUI-AudioReactive", - "files": [ - "https://github.com/dmarx/ComfyUI-AudioReactive" - ], - "install_type": "git-clone", - "description": "porting audioreactivity pipeline from vktrs to comfyui." - }, - { - "author": "TripleHeadedMonkey", - "title": "ComfyUI_MileHighStyler", - "id": "milehighstyler", - "reference": "https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler", - "files": [ - "https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler" - ], - "install_type": "git-clone", - "description": "This extension provides various SDXL Prompt Stylers. See: [a/youtube](https://youtu.be/WBHI-2uww7o?si=dijvDaUI4nmx4VkF)" - }, - { - "author": "BennyKok", - "title": "ComfyUI Deploy", - "id": "comfy-deploy", - "reference": "https://github.com/BennyKok/comfyui-deploy", - "files": [ - "https://github.com/BennyKok/comfyui-deploy" - ], - "install_type": "git-clone", - "description": "Open source comfyui deployment platform, a vercel for generative workflow infra." - }, - { - "author": "florestefano1975", - "title": "comfyui-portrait-master", - "id": "portrait-master", - "reference": "https://github.com/florestefano1975/comfyui-portrait-master", - "files": [ - "https://github.com/florestefano1975/comfyui-portrait-master" - ], - "install_type": "git-clone", - "description": "ComfyUI Portrait Master. A node designed to help AI image creators to generate prompts for human portraits." - }, - { - "author": "florestefano1975", - "title": "comfyui-prompt-composer", - "id": "prompt-composer", - "reference": "https://github.com/florestefano1975/comfyui-prompt-composer", - "files": [ - "https://github.com/florestefano1975/comfyui-prompt-composer" - ], - "install_type": "git-clone", - "description": "A suite of tools for prompt management. Combining nodes helps the user sequence strings for prompts, also creating logical groupings if necessary. Individual nodes can be chained together in any order." - }, - { - "author": "florestefano1975", - "title": "ComfyUI StabilityAI Suite", - "id": "sai-suite", - "reference": "https://github.com/florestefano1975/ComfyUI-StabilityAI-Suite", - "files": [ - "https://github.com/florestefano1975/ComfyUI-StabilityAI-Suite" - ], - "install_type": "git-clone", - "description": "This fork of the official StabilityAI repository contains a number of enhancements and implementations." - }, - { - "author": "florestefano1975", - "title": "ComfyUI HiDiffusion", - "id": "hidiffusion", - "reference": "https://github.com/florestefano1975/ComfyUI-HiDiffusion", - "files": [ - "https://github.com/florestefano1975/ComfyUI-HiDiffusion" - ], - "install_type": "git-clone", - "description": "Simple custom nodes for testing and use HiDiffusion technology: https://github.com/megvii-research/HiDiffusion/" - }, - { - "author": "florestefano1975", - "title": "Advanced Sequence Seed Generator", - "id": "adv-seq-seed-gen", - "reference": "https://github.com/florestefano1975/ComfyUI-Advanced-Sequence-Seed", - "files": [ - "https://github.com/florestefano1975/ComfyUI-Advanced-Sequence-Seed" - ], - "install_type": "git-clone", - "description": "A simple seed generator based on special number sequences: Fibonacci, Prime, Padovan, Triangular, Catalan, Pell, Lucas" - }, - { - "author": "florestefano1975", - "title": "ComfyUI-CogVideoX", - "id": "sf-cog-video-x", - "reference": "https://github.com/florestefano1975/ComfyUI-CogVideoX", - "files": [ - "https://github.com/florestefano1975/ComfyUI-CogVideoX" - ], - "install_type": "git-clone", - "description": "Experience the CogVideoX model on ComfyUI" - }, - { - "author": "mozman", - "title": "ComfyUI_mozman_nodes", - "id": "mozman-nodes", - "reference": "https://github.com/mozman/ComfyUI_mozman_nodes", - "files": [ - "https://github.com/mozman/ComfyUI_mozman_nodes" - ], - "install_type": "git-clone", - "description": "This extension provides styler nodes for SDXL.\n\nNOTE: Due to the dynamic nature of node name definitions, ComfyUI-Manager cannot recognize the node list from this extension. The Missing nodes and Badge features are not available for this extension." - }, - { - "author": "rcsaquino", - "title": "rcsaquino/comfyui-custom-nodes", - "id": "rcsaquino-nodes", - "reference": "https://github.com/rcsaquino/comfyui-custom-nodes", - "files": [ - "https://github.com/rcsaquino/comfyui-custom-nodes" - ], - "install_type": "git-clone", - "description": "Nodes: VAE Processor, VAE Loader, Background Remover" - }, - { - "author": "rcfcu2000", - "title": "zhihuige-nodes-comfyui", - "id": "zhihuige-nodes", - "reference": "https://github.com/rcfcu2000/zhihuige-nodes-comfyui", - "files": [ - "https://github.com/rcfcu2000/zhihuige-nodes-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes: Combine ZHGMasks, Cover ZHGMasks, ZHG FaceIndex, ZHG SaveImage, ZHG SmoothEdge, ZHG GetMaskArea, ..." - }, - { - "author": "IDGallagher", - "title": "IG Interpolation Nodes", - "id": "ig-nodes", - "reference": "https://github.com/IDGallagher/ComfyUI-IG-Nodes", - "files": [ - "https://github.com/IDGallagher/ComfyUI-IG-Nodes" - ], - "install_type": "git-clone", - "description": "Custom nodes to aid in the exploration of Latent Space" - }, - { - "author": "IDGallagher", - "title": "ComfyUI-IG-Motion-I2V", - "id": "comfyui-ig-motion-i2v", - "reference": "https://github.com/IDGallagher/ComfyUI-IG-Motion-I2V", - "files": [ - "https://github.com/IDGallagher/ComfyUI-IG-Motion-I2V" - ], - "install_type": "git-clone", - "description": "ComfyUI adaptation of https://github.com/G-U-N/Motion-I2V" - }, - { - "author": "IDGallagher", - "title": "IG-Motion-Search", - "id": "motion-video-search", - "reference": "https://github.com/IDGallagher/MotionVideoSearch", - "files": [ - "https://github.com/IDGallagher/MotionVideoSearch" - ], - "install_type": "git-clone", - "description": "Nodes for searching videos by motion" - }, - { - "author": "violet-chen", - "title": "comfyui-psd2png", - "id": "psd2png", - "reference": "https://github.com/violet-chen/comfyui-psd2png", - "files": [ - "https://github.com/violet-chen/comfyui-psd2png" - ], - "install_type": "git-clone", - "description": "Nodes: Psd2Png." - }, - { - "author": "lldacing", - "title": "comfyui-easyapi-nodes", - "id": "easyapi", - "reference": "https://github.com/lldacing/comfyui-easyapi-nodes", - "files": [ - "https://github.com/lldacing/comfyui-easyapi-nodes" - ], - "install_type": "git-clone", - "description": "Provides some features and nodes related to API calls." - }, - { - "author": "lldacing", - "title": "ComfyUI_StableDelight_ll", - "id": "comfyui_stabledelight_ll", - "reference": "https://github.com/lldacing/ComfyUI_StableDelight_ll", - "files": [ - "https://github.com/lldacing/ComfyUI_StableDelight_ll" - ], - "install_type": "git-clone", - "description": "StableDelight: Revealing Hidden Textures by Removing Specular Reflections" - }, - { - "author": "lldacing", - "title": "ComfyUI_StableHair_ll", - "id": "comfyui_stablehair_ll", - "reference": "https://github.com/lldacing/ComfyUI_StableHair_ll", - "files": [ - "https://github.com/lldacing/ComfyUI_StableHair_ll" - ], - "install_type": "git-clone", - "description": "Hair transfer" - }, - { - "author": "lldacing", - "title": "ComfyUI_PuLID_Flux_ll", - "id": "comfyui_pulid_flux_ll", - "reference": "https://github.com/lldacing/ComfyUI_PuLID_Flux_ll", - "files": [ - "https://github.com/lldacing/ComfyUI_PuLID_Flux_ll" - ], - "install_type": "git-clone", - "description": "The implementation for PuLID-Flux, support TeaCache, no model pollution." - }, - { - "author": "lldacing", - "title": "ComfyUI_BiRefNet_ll", - "reference": "https://github.com/lldacing/ComfyUI_BiRefNet_ll", - "files": [ - "https://github.com/lldacing/ComfyUI_BiRefNet_ll" - ], - "install_type": "git-clone", - "description": "Sync with version of BiRefNet. NODES:AutoDownloadBiRefNetModel, LoadRembgByBiRefNetModel, RembgByBiRefNet." - }, - { - "author": "lldacing", - "title": "ComfyUI_Patches_ll", - "reference": "https://github.com/lldacing/ComfyUI_Patches_ll", - "files": [ - "https://github.com/lldacing/ComfyUI_Patches_ll" - ], - "install_type": "git-clone", - "description": "Some patches for Flux|HunYuanVideo etc, support TeaCache, PuLID." - }, - { - "author": "CosmicLaca", - "title": "Primere nodes for ComfyUI", - "id": "primere", - "reference": "https://github.com/CosmicLaca/ComfyUI_Primere_Nodes", - "files": [ - "https://github.com/CosmicLaca/ComfyUI_Primere_Nodes" - ], - "install_type": "git-clone", - "description": "This extension provides various utility nodes. Inputs(prompt, styles, dynamic, merger, ...), Outputs(style pile), Dashboard(selectors, loader, switch, ...), Networks(LORA, Embedding, Hypernetwork), Visuals(visual selectors, )" - }, - { - "author": "RenderRift", - "title": "ComfyUI-RenderRiftNodes", - "id": "renderrift", - "reference": "https://github.com/RenderRift/ComfyUI-RenderRiftNodes", - "files": [ - "https://github.com/RenderRift/ComfyUI-RenderRiftNodes" - ], - "install_type": "git-clone", - "description": "Nodes:RR_Date_Folder_Format, RR_Image_Metadata_Overlay, RR_VideoPathMetaExtraction, RR_DisplayMetaOptions. This extension provides nodes designed to enhance the Animatediff workflow." - }, - { - "author": "OpenArt-AI", - "title": "ComfyUI Assistant", - "id": "openart", - "reference": "https://github.com/OpenArt-AI/ComfyUI-Assistant", - "files": [ - "https://github.com/OpenArt-AI/ComfyUI-Assistant" - ], - "install_type": "git-clone", - "description": "ComfyUI Assistant is your one stop plugin for everything you need to get started with comfy-ui. Now it provides useful courses, tutorials, and basic templates." - }, - { - "author": "ttulttul", - "title": "ComfyUI Iterative Mixing Nodes", - "id": "itermix", - "reference": "https://github.com/ttulttul/ComfyUI-Iterative-Mixer", - "files": [ - "https://github.com/ttulttul/ComfyUI-Iterative-Mixer" - ], - "install_type": "git-clone", - "description": "Nodes to use Florence2 VLM for image vision tasks: object detection, captioning, segmentation and ocr" - }, - { - "author": "ttulttul", - "title": "ComfyUI-Tensor-Operations", - "id": "tensorop", - "reference": "https://github.com/ttulttul/ComfyUI-Tensor-Operations", - "files": [ - "https://github.com/ttulttul/ComfyUI-Tensor-Operations" - ], - "install_type": "git-clone", - "description": "This repo contains nodes for ComfyUI that implement some helpful operations on tensors, such as normalization." - }, - { - "author": "jitcoder", - "title": "LoraInfo", - "id": "lorainfo", - "reference": "https://github.com/jitcoder/lora-info", - "files": [ - "https://github.com/jitcoder/lora-info" - ], - "install_type": "git-clone", - "description": "Shows Lora information from CivitAI and outputs trigger words and example prompt" - }, - { - "author": "ceruleandeep", - "title": "ComfyUI LLaVA Captioner", - "id": "llava-captioner", - "reference": "https://github.com/ceruleandeep/ComfyUI-LLaVA-Captioner", - "files": [ - "https://github.com/ceruleandeep/ComfyUI-LLaVA-Captioner" - ], - "install_type": "git-clone", - "description": "A ComfyUI extension for chatting with your images. Runs on your own system, no external services used, no filter. Uses the [a/LLaVA multimodal LLM](https://llava-vl.github.io/) so you can give instructions or ask questions in natural language. It's maybe as smart as GPT3.5, and it can see." - }, - { - "author": "styler00dollar", - "title": "ComfyUI-sudo-latent-upscale", - "id": "sudo-latent-upscale", - "reference": "https://github.com/styler00dollar/ComfyUI-sudo-latent-upscale", - "files": [ - "https://github.com/styler00dollar/ComfyUI-sudo-latent-upscale" - ], - "install_type": "git-clone", - "description": "Directly upscaling inside the latent space. Model was trained for SD1.5 and drawn content. Might add new architectures or update models at some point. This took heavy inspriration from [city96/SD-Latent-Upscaler](https://github.com/city96/SD-Latent-Upscaler) and [Ttl/ComfyUi_NNLatentUpscale](https://github.com/Ttl/ComfyUi_NNLatentUpscale). " - }, - { - "author": "styler00dollar", - "title": "ComfyUI-deepcache", - "id": "deepcache", - "reference": "https://github.com/styler00dollar/ComfyUI-deepcache", - "files": [ - "https://github.com/styler00dollar/ComfyUI-deepcache" - ], - "install_type": "git-clone", - "description": "This extension provides nodes for [a/DeepCache: Accelerating Diffusion Models for Free](https://arxiv.org/abs/2312.00858)\nNOTE:Original code can be found [a/here](https://gist.github.com/laksjdjf/435c512bc19636e9c9af4ee7bea9eb86). Full credit to laksjdjf for sharing the code. " - }, - { - "author": "HarroweD and quadmoon", - "title": "Harrlogos Prompt Builder Node", - "id": "harrlogos-prompt-builder", - "reference": "https://github.com/NotHarroweD/Harronode", - "nodename_pattern": "Harronode", - "files": [ - "https://github.com/NotHarroweD/Harronode" - ], - "install_type": "git-clone", - "description": "Harronode is a custom node designed to build prompts easily for use with the Harrlogos SDXL LoRA. This Node simplifies the process of crafting prompts and makes all built in activation terms available at your fingertips." - }, - { - "author": "Limitex", - "title": "ComfyUI-Calculation", - "id": "calc", - "reference": "https://github.com/Limitex/ComfyUI-Calculation", - "files": [ - "https://github.com/Limitex/ComfyUI-Calculation" - ], - "install_type": "git-clone", - "description": "Nodes: Center Calculation. Improved Numerical Calculation for ComfyUI" - }, - { - "author": "Limitex", - "title": "ComfyUI-Diffusers", - "id": "diffusers", - "reference": "https://github.com/Limitex/ComfyUI-Diffusers", - "files": [ - "https://github.com/Limitex/ComfyUI-Diffusers" - ], - "install_type": "git-clone", - "description": "This extension enables the use of the diffuser pipeline in ComfyUI. It also includes nodes related to Stream Diffusion." - }, - { - "author": "aiXander", - "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": "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-lora-trainer", - "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", - "title": "ComfyUI-SaveAVIF", - "id": "saveavif", - "reference": "https://github.com/pkpkTech/ComfyUI-SaveAVIF", - "files": [ - "https://github.com/pkpkTech/ComfyUI-SaveAVIF" - ], - "install_type": "git-clone", - "description": "A custom node on ComfyUI that saves images in AVIF format. Workflow can be loaded from images saved at this node." - }, - { - "author": "pkpkTech", - "title": "ComfyUI-ngrok", - "id": "ngrok", - "reference": "https://github.com/pkpkTech/ComfyUI-ngrok", - "files": [ - "https://github.com/pkpkTech/ComfyUI-ngrok" - ], - "install_type": "git-clone", - "description": "Use ngrok to allow external access to ComfyUI.\nNOTE: Need to manually modify a token inside the __init__.py file." - }, - { - "author": "pkpk", - "title": "ComfyUI-TemporaryLoader", - "id": "temploader", - "reference": "https://github.com/pkpkTech/ComfyUI-TemporaryLoader", - "files": [ - "https://github.com/pkpkTech/ComfyUI-TemporaryLoader" - ], - "install_type": "git-clone", - "description": "This is a custom node of ComfyUI that downloads and loads models from the input URL. The model is temporarily downloaded into memory and not saved to storage.\nThis could be useful when trying out models or when using various models on machines with limited storage. Since the model is downloaded into memory, expect higher memory usage than usual." - }, - { - "author": "pkpkTech", - "title": "ComfyUI-SaveQueues", - "id": "savequeues", - "reference": "https://github.com/pkpkTech/ComfyUI-SaveQueues", - "files": [ - "https://github.com/pkpkTech/ComfyUI-SaveQueues" - ], - "install_type": "git-clone", - "description": "Add a button to the menu to save and load the running queue and the pending queues.\nThis is intended to be used when you want to exit ComfyUI with queues still remaining." - }, - { - "author": "Crystian", - "title": "Crystools", - "id": "crytools", - "reference": "https://github.com/crystian/ComfyUI-Crystools", - "files": [ - "https://github.com/crystian/ComfyUI-Crystools" - ], - "nodename_pattern": " \\[Crystools\\]$", - "install_type": "git-clone", - "description": "With this suit, you can see the resources monitor, progress bar & time elapsed, metadata and compare between two images, compare between two JSONs, show any value to console/display, pipes, and more!\nThis provides better nodes to load/save images, previews, etc, and see \"hidden\" data without loading a new workflow." - }, - { - "author": "Crystian", - "title": "Crystools-save", - "id": "crytools-save", - "reference": "https://github.com/crystian/ComfyUI-Crystools-save", - "files": [ - "https://github.com/crystian/ComfyUI-Crystools-save" - ], - "install_type": "git-clone", - "description": "With this quality of life extension, you can save your workflow with a specific name and include additional details such as the author, a description, and the version (in metadata/json). Important: When you share your workflow (via png/json), others will be able to see your information!" - }, - { - "author": "Kangkang625", - "title": "ComfyUI-Paint-by-Example", - "id": "paint-by-example", - "reference": "https://github.com/Kangkang625/ComfyUI-paint-by-example", - "pip": ["diffusers"], - "files": [ - "https://github.com/Kangkang625/ComfyUI-paint-by-example" - ], - "install_type": "git-clone", - "description": "This repo is a simple implementation of [a/Paint-by-Example](https://github.com/Fantasy-Studio/Paint-by-Example) based on its [a/huggingface pipeline](https://huggingface.co/Fantasy-Studio/Paint-by-Example)." - }, - { - "author": "54rt1n", - "title": "ComfyUI-DareMerge", - "id": "daremerge", - "reference": "https://github.com/54rt1n/ComfyUI-DareMerge", - "files": [ - "https://github.com/54rt1n/ComfyUI-DareMerge" - ], - "install_type": "git-clone", - "description": "ComfyUI powertools for SD1.5 and SDXL model merging." - }, - { - "author": "an90ray", - "title": "ComfyUI_RErouter_CustomNodes", - "id": "rerouter", - "reference": "https://github.com/an90ray/ComfyUI_RErouter_CustomNodes", - "files": [ - "https://github.com/an90ray/ComfyUI_RErouter_CustomNodes" - ], - "install_type": "git-clone", - "description": "Nodes: RErouter, String (RE), Int (RE)" - }, - { - "author": "jesenzhang", - "title": "ComfyUI_StreamDiffusion", - "id": "streamdiffusion", - "reference": "https://github.com/jesenzhang/ComfyUI_StreamDiffusion", - "files": [ - "https://github.com/jesenzhang/ComfyUI_StreamDiffusion" - ], - "install_type": "git-clone", - "description": "This is a simple implementation StreamDiffusion(A Pipeline-Level Solution for Real-Time Interactive Generation) for ComfyUI" - }, - { - "author": "ai-liam", - "title": "LiamUtil (single node)", - "id": "liam-util-single", - "reference": "https://github.com/ai-liam/comfyui_liam_util", - "files": [ - "https://github.com/ai-liam/comfyui_liam_util" - ], - "install_type": "git-clone", - "description": "Nodes: LiamLoadImage. This node provides the capability to load images from a URL." - }, - { - "author": "ai-liam", - "title": "LiamUtil", - "id": "liam-util", - "reference": "https://github.com/ai-liam/comfyui-liam", - "files": [ - "https://github.com/ai-liam/comfyui-liam" - ], - "install_type": "git-clone", - "description": "Nodes: LiamLibLoadImage, LiamLibImageToGray, LiamLibSaveImg, LiamLibFillImage, PreviewReliefImage, GetBetterDepthImage, LiamLibSaveText" - }, - { - "author": "Ryuukeisyou", - "title": "comfyui_face_parsing", - "id": "face-parsing", - "reference": "https://github.com/Ryuukeisyou/comfyui_face_parsing", - "files": [ - "https://github.com/Ryuukeisyou/comfyui_face_parsing" - ], - "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", - "id": "audioreactor", - "reference": "https://github.com/tocubed/ComfyUI-AudioReactor", - "files": [ - "https://github.com/tocubed/ComfyUI-AudioReactor" - ], - "install_type": "git-clone", - "description": "Nodes: Shadertoy, Load Audio (from Path), Audio Frame Transform (Shadertoy), Audio Frame Transform (Beats)" - }, - { - "author": "tocubed", - "title": "ComfyUI-EvTexture", - "reference": "https://github.com/tocubed/ComfyUI-EvTexture", - "files": [ - "https://github.com/tocubed/ComfyUI-EvTexture" - ], - "install_type": "git-clone", - "description": "Wrapper for EvTexture Video Upscaler: [a/https://github.com/DachunKai/EvTexture](https://github.com/DachunKai/EvTexture)" - }, - { - "author": "ntc-ai", - "title": "ComfyUI - Apply LoRA Stacker with DARE", - "reference": "https://github.com/ntc-ai/ComfyUI-DARE-LoRA-Merge", - "files": [ - "https://github.com/ntc-ai/ComfyUI-DARE-LoRA-Merge" - ], - "install_type": "git-clone", - "description": "An experiment about combining multiple LoRAs with [a/DARE](https://arxiv.org/pdf/2311.03099.pdf)" - }, - { - "author": "wwwins", - "title": "ComfyUI-Simple-Aspect-Ratio", - "reference": "https://github.com/wwwins/ComfyUI-Simple-Aspect-Ratio", - "files": [ - "https://github.com/wwwins/ComfyUI-Simple-Aspect-Ratio" - ], - "install_type": "git-clone", - "description": "Nodes:SimpleAspectRatio" - }, - { - "author": "ownimage", - "title": "ComfyUI-ownimage", - "reference": "https://github.com/ownimage/ComfyUI-ownimage", - "files": [ - "https://github.com/ownimage/ComfyUI-ownimage" - ], - "install_type": "git-clone", - "description": "Nodes:Caching Image Loader." - }, - { - "author": "Ryuukeisyou", - "title": "comfyui_io_helpers", - "reference": "https://github.com/Ryuukeisyou/comfyui_io_helpers", - "files": [ - "https://github.com/Ryuukeisyou/comfyui_io_helpers" - ], - "install_type": "git-clone", - "description": "Nodes:ImageLoadFromBase64, ImageLoadByPath, ImageLoadAsMaskByPath, ImageSaveToPath, ImageSaveAsBase64, VHSFileNamesToStrings(IOHelpers)." - }, - { - "author": "flowtyone", - "title": "ComfyUI-Flowty-LDSR", - "reference": "https://github.com/flowtyone/ComfyUI-Flowty-LDSR", - "files": [ - "https://github.com/flowtyone/ComfyUI-Flowty-LDSR" - ], - "install_type": "git-clone", - "description": "This is a custom node that lets you take advantage of Latent Diffusion Super Resolution (LDSR) models inside ComfyUI." - }, - { - "author": "flowtyone", - "title": "ComfyUI-Flowty-TripoSR", - "reference": "https://github.com/flowtyone/ComfyUI-Flowty-TripoSR", - "files": [ - "https://github.com/flowtyone/ComfyUI-Flowty-TripoSR" - ], - "install_type": "git-clone", - "description": "This is a custom node that lets you use TripoSR right from ComfyUI.\n[a/TripoSR](https://github.com/VAST-AI-Research/TripoSR) is a state-of-the-art open-source model for fast feedforward 3D reconstruction from a single image, collaboratively developed by Tripo AI and Stability AI. (TL;DR it creates a 3d model from an image.)" - }, - { - "author": "flowtyone", - "title": "ComfyUI-Flowty-CRM", - "reference": "https://github.com/flowtyone/ComfyUI-Flowty-CRM", - "files": [ - "https://github.com/flowtyone/ComfyUI-Flowty-CRM" - ], - "install_type": "git-clone", - "description": "This is a custom node that lets you use Convolutional Reconstruction Models right from ComfyUI.\n[a/CRM](https://ml.cs.tsinghua.edu.cn/~zhengyi/CRM/) is a high-fidelity feed-forward single image-to-3D generative model." - }, - { - "author": "massao000", - "title": "ComfyUI_aspect_ratios", - "reference": "https://github.com/massao000/ComfyUI_aspect_ratios", - "files": [ - "https://github.com/massao000/ComfyUI_aspect_ratios" - ], - "install_type": "git-clone", - "description": "Aspect ratio selector for ComfyUI based on [a/sd-webui-ar](https://github.com/alemelis/sd-webui-ar?tab=readme-ov-file)." - }, - { - "author": "SiliconFlow", - "title": "OneDiff Nodes", - "id": "onddiff", - "reference": "https://github.com/siliconflow/onediff_comfy_nodes", - "files": [ - "https://github.com/siliconflow/onediff_comfy_nodes" - ], - "install_type": "git-clone", - "description": "[a/Onediff](https://github.com/siliconflow/onediff) ComfyUI Nodes." - }, - { - "author": "hinablue", - "title": "ComfyUI 3D Pose Editor", - "id": "3d-pose-editor", - "reference": "https://github.com/hinablue/ComfyUI_3dPoseEditor", - "files": [ - "https://github.com/hinablue/ComfyUI_3dPoseEditor" - ], - "install_type": "git-clone", - "description": "Nodes:3D Pose Editor" - }, - { - "author": "chaojie", - "title": "ComfyUI-CameraCtrl-Wrapper", - "id": "cameractrl-wrapper", - "reference": "https://github.com/chaojie/ComfyUI-CameraCtrl-Wrapper", - "files": [ - "https://github.com/chaojie/ComfyUI-CameraCtrl-Wrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI-CameraCtrl-Wrapper" - }, - { - "author": "chaojie", - "title": "ComfyUI-EasyAnimate", - "id": "easyanimate", - "reference": "https://github.com/chaojie/ComfyUI-EasyAnimate", - "files": [ - "https://github.com/chaojie/ComfyUI-EasyAnimate" - ], - "install_type": "git-clone", - "description": "ComfyUI-EasyAnimate" - }, - { - "author": "chaojie", - "title": "ComfyUI_StreamingT2V", - "id": "streamingt2v", - "reference": "https://github.com/chaojie/ComfyUI_StreamingT2V", - "files": [ - "https://github.com/chaojie/ComfyUI_StreamingT2V" - ], - "install_type": "git-clone", - "description": "ComfyUI_StreamingT2V" - }, - { - "author": "chaojie", - "title": "ComfyUI-Open-Sora-Plan", - "id": "opensora-plan", - "reference": "https://github.com/chaojie/ComfyUI-Open-Sora-Plan", - "files": [ - "https://github.com/chaojie/ComfyUI-Open-Sora-Plan" - ], - "install_type": "git-clone", - "description": "ComfyUI node for [a/Open-Sora-Plan](https://github.com/PKU-YuanGroup/Open-Sora-Plan)" - }, - { - "author": "chaojie", - "title": "ComfyUI-MuseTalk", - "id": "musetalk-chaojie", - "reference": "https://github.com/chaojie/ComfyUI-MuseTalk", - "files": [ - "https://github.com/chaojie/ComfyUI-MuseTalk" - ], - "install_type": "git-clone", - "description": "ComfyUI MuseTalk" - }, - { - "author": "chaojie", - "title": "ComfyUI-MuseV", - "id": "musev", - "reference": "https://github.com/chaojie/ComfyUI-MuseV", - "files": [ - "https://github.com/chaojie/ComfyUI-MuseV" - ], - "install_type": "git-clone", - "description": "ComfyUI MuseV" - }, - { - "author": "chaojie", - "title": "ComfyUI-AniPortrait", - "id": "aniportrait", - "reference": "https://github.com/chaojie/ComfyUI-AniPortrait", - "files": [ - "https://github.com/chaojie/ComfyUI-AniPortrait" - ], - "install_type": "git-clone", - "description": "ComfyUI [a/AniPortrait](https://github.com/Zejun-Yang/AniPortrait)" - }, - { - "author": "chaojie", - "title": "ComfyUI-Img2Img-Turbo", - "id": "img2img-turbo", - "reference": "https://github.com/chaojie/ComfyUI-Img2Img-Turbo", - "files": [ - "https://github.com/chaojie/ComfyUI-Img2Img-Turbo" - ], - "install_type": "git-clone", - "description": "ComfyUI Img2Img-Turbo" - }, - { - "author": "chaojie", - "title": "ComfyUI-Champ", - "id": "champ", - "reference": "https://github.com/chaojie/ComfyUI-Champ", - "files": [ - "https://github.com/chaojie/ComfyUI-Champ" - ], - "install_type": "git-clone", - "description": "ComfyUI Champ" - }, - { - "author": "chaojie", - "title": "ComfyUI-Open-Sora", - "id": "opensora", - "reference": "https://github.com/chaojie/ComfyUI-Open-Sora", - "files": [ - "https://github.com/chaojie/ComfyUI-Open-Sora" - ], - "install_type": "git-clone", - "description": "ComfyUI Open Sora\nNOTE:only supports Linux now" - }, - { - "author": "chaojie", - "title": "ComfyUI-Trajectory", - "id": "trajectory", - "reference": "https://github.com/chaojie/ComfyUI-Trajectory", - "files": [ - "https://github.com/chaojie/ComfyUI-Trajectory" - ], - "install_type": "git-clone", - "description": "ComfyUI Trajectory" - }, - { - "author": "chaojie", - "title": "ComfyUI-dust3r", - "id": "dust3r", - "reference": "https://github.com/chaojie/ComfyUI-dust3r", - "files": [ - "https://github.com/chaojie/ComfyUI-dust3r" - ], - "install_type": "git-clone", - "description": "ComfyUI dust3r" - }, - { - "author": "chaojie", - "title": "ComfyUI-Gemma", - "id": "gamma", - "reference": "https://github.com/chaojie/ComfyUI-Gemma", - "files": [ - "https://github.com/chaojie/ComfyUI-Gemma" - ], - "install_type": "git-clone", - "description": "ComfyUI Gemma" - }, - { - "author": "chaojie", - "title": "ComfyUI-DynamiCrafter", - "id": "dynamicrafter-chaojie", - "reference": "https://github.com/chaojie/ComfyUI-DynamiCrafter", - "files": [ - "https://github.com/chaojie/ComfyUI-DynamiCrafter" - ], - "install_type": "git-clone", - "description": "Better Dynamic, Higher Resolution, and Stronger Coherence!" - }, - { - "author": "chaojie", - "title": "ComfyUI-Panda3d", - "id": "panda3d", - "reference": "https://github.com/chaojie/ComfyUI-Panda3d", - "files": [ - "https://github.com/chaojie/ComfyUI-Panda3d" - ], - "install_type": "git-clone", - "description": "ComfyUI 3d engine" - }, - { - "author": "chaojie", - "title": "ComfyUI-Pymunk", - "id": "pymunk", - "reference": "https://github.com/chaojie/ComfyUI-Pymunk", - "files": [ - "https://github.com/chaojie/ComfyUI-Pymunk" - ], - "install_type": "git-clone", - "description": "Pymunk is a easy-to-use pythonic 2d physics library that can be used whenever you need 2d rigid body physics from Python" - }, - { - "author": "chaojie", - "title": "ComfyUI-MotionCtrl", - "id": "motionctrl", - "reference": "https://github.com/chaojie/ComfyUI-MotionCtrl", - "files": [ - "https://github.com/chaojie/ComfyUI-MotionCtrl" - ], - "install_type": "git-clone", - "description": "Nodes: Download the weights of MotionCtrl [a/motionctrl.pth](https://huggingface.co/TencentARC/MotionCtrl/blob/main/motionctrl.pth) and put it to ComfyUI/models/checkpoints" - }, - { - "author": "chaojie", - "title": "ComfyUI-Motion-Vector-Extractor", - "id": "motion-vector-extractor", - "reference": "https://github.com/chaojie/ComfyUI-Motion-Vector-Extractor", - "files": [ - "https://github.com/chaojie/ComfyUI-Motion-Vector-Extractor" - ], - "install_type": "git-clone", - "description": "Nodes: that we currently provide the package only for x86-64 linux, such as Ubuntu or Debian, and Python 3.8, 3.9, and 3.10." - }, - { - "author": "chaojie", - "title": "ComfyUI-MotionCtrl-SVD", - "id": "motionctrl-svd", - "reference": "https://github.com/chaojie/ComfyUI-MotionCtrl-SVD", - "files": [ - "https://github.com/chaojie/ComfyUI-MotionCtrl-SVD" - ], - "install_type": "git-clone", - "description": "Nodes: Download the weights of MotionCtrl-SVD [a/motionctrl_svd.ckpt](https://huggingface.co/TencentARC/MotionCtrl/blob/main/motionctrl_svd.ckpt) and put it to ComfyUI/models/checkpoints" - }, - { - "author": "chaojie", - "title": "ComfyUI-DragAnything", - "id": "draganything", - "reference": "https://github.com/chaojie/ComfyUI-DragAnything", - "files": [ - "https://github.com/chaojie/ComfyUI-DragAnything" - ], - "install_type": "git-clone", - "description": "DragAnything" - }, - { - "author": "chaojie", - "title": "ComfyUI-DragNUWA", - "id": "dragnuwa", - "reference": "https://github.com/chaojie/ComfyUI-DragNUWA", - "files": [ - "https://github.com/chaojie/ComfyUI-DragNUWA" - ], - "install_type": "git-clone", - "description": "Nodes: Download the weights of DragNUWA [a/drag_nuwa_svd.pth](https://drive.google.com/file/d/1Z4JOley0SJCb35kFF4PCc6N6P1ftfX4i/view) and put it to ComfyUI/models/checkpoints/drag_nuwa_svd.pth\n[w/Due to changes in the torch package and versions of many other packages, it may disrupt your installation environment.]" - }, - { - "author": "chaojie", - "title": "ComfyUI-Moore-AnimateAnyone", - "id": "moore-animateanyone", - "reference": "https://github.com/chaojie/ComfyUI-Moore-AnimateAnyone", - "files": [ - "https://github.com/chaojie/ComfyUI-Moore-AnimateAnyone" - ], - "install_type": "git-clone", - "description": "Nodes: Run python tools/download_weights.py first to download weights automatically" - }, - { - "author": "chaojie", - "title": "ComfyUI-I2VGEN-XL", - "id": "i2vgen-xl", - "reference": "https://github.com/chaojie/ComfyUI-I2VGEN-XL", - "files": [ - "https://github.com/chaojie/ComfyUI-I2VGEN-XL" - ], - "install_type": "git-clone", - "description": "This is an implementation of [a/i2vgen-xl](https://github.com/ali-vilab/i2vgen-xl)" - }, - { - "author": "chaojie", - "title": "ComfyUI-LightGlue", - "id": "lightglue", - "reference": "https://github.com/chaojie/ComfyUI-LightGlue", - "files": [ - "https://github.com/chaojie/ComfyUI-LightGlue" - ], - "install_type": "git-clone", - "description": "This is an ComfyUI implementation of LightGlue to generate motion brush" - }, - { - "author": "chaojie", - "title": "ComfyUI-RAFT", - "id": "raft", - "reference": "https://github.com/chaojie/ComfyUI-RAFT", - "files": [ - "https://github.com/chaojie/ComfyUI-RAFT" - ], - "install_type": "git-clone", - "description": "This is an ComfyUI implementation of RAFT to generate motion brush" - }, - { - "author": "chaojie", - "title": "ComfyUI-LaVIT", - "id": "lavit", - "reference": "https://github.com/chaojie/ComfyUI-LaVIT", - "files": [ - "https://github.com/chaojie/ComfyUI-LaVIT" - ], - "install_type": "git-clone", - "description": "Nodes:VideoLaVITLoader, VideoLaVITT2V, VideoLaVITI2V, VideoLaVITI2VLong, VideoLaVITT2VLong, VideoLaVITI2I" - }, - { - "author": "chaojie", - "title": "ComfyUI-SimDA", - "id": "simda", - "reference": "https://github.com/chaojie/ComfyUI-SimDA", - "files": [ - "https://github.com/chaojie/ComfyUI-SimDA" - ], - "install_type": "git-clone", - "description": "Nodes:SimDATrain, SimDALoader, SimDARun, VHS_FILENAMES_STRING_SimDA" - }, - { - "author": "chaojie", - "title": "ComfyUI-Video-Editing-X-Attention", - "id": "video-editing-x-attention", - "reference": "https://github.com/chaojie/ComfyUI-Video-Editing-X-Attention", - "files": [ - "https://github.com/chaojie/ComfyUI-Video-Editing-X-Attention" - ], - "install_type": "git-clone", - "description": "Investigating the Effectiveness of Cross Attention to Unlock Zero-Shot Editing of Text-to-Video Diffusion Models" - }, - { - "author": "alexopus", - "title": "ComfyUI Image Saver", - "id": "comfyui-image-saver", - "reference": "https://github.com/alexopus/ComfyUI-Image-Saver", - "files": [ - "https://github.com/alexopus/ComfyUI-Image-Saver" - ], - "install_type": "git-clone", - "description": "Allows you to save images with their generation metadata compatible with Civitai. Works with png, jpeg and webp. Stores LoRAs, models and embeddings hashes for resource recognition." - }, - { - "author": "kft334", - "title": "Knodes", - "id": "knodes", - "reference": "https://github.com/kft334/Knodes", - "files": [ - "https://github.com/kft334/Knodes" - ], - "install_type": "git-clone", - "description": "Nodes: Image(s) To Websocket (Base64), Load Image (Base64),Load Images (Base64)" - }, - { - "author": "MrForExample", - "title": "ComfyUI-3D-Pack", - "id": "3dpack", - "reference": "https://github.com/MrForExample/ComfyUI-3D-Pack", - "files": [ - "https://github.com/MrForExample/ComfyUI-3D-Pack" - ], - "nodename_pattern": "^\\[Comfy3D\\]", - "install_type": "git-clone", - "description": "Make 3D assets generation in ComfyUI good and convenient as it generates image/video!\nThis is an extensive node suite that enables ComfyUI to process 3D inputs (Mesh & UV Texture, etc.) using cutting edge algorithms (3DGS, NeRF, etc.) and models (InstantMesh, CRM, TripoSR, etc.)\nNOTE: Pre-built python wheels can manually download from [a/https://github.com/MrForExample/Comfy3D_Pre_Builds](https://github.com/MrForExample/Comfy3D_Pre_Builds) if automatic install failed" - }, - { - "author": "Mr.ForExample", - "title": "ComfyUI-AnimateAnyone-Evolved", - "id": "animateanyone-evolved", - "reference": "https://github.com/MrForExample/ComfyUI-AnimateAnyone-Evolved", - "files": [ - "https://github.com/MrForExample/ComfyUI-AnimateAnyone-Evolved" - ], - "nodename_pattern": "^\\[AnimateAnyone\\]", - "install_type": "git-clone", - "description": "Improved AnimateAnyone implementation that allows you to use the opse image sequence and reference image to generate stylized video.\nThe current goal of this project is to achieve desired pose2video result with 1+FPS on GPUs that are equal to or better than RTX 3080!🚀\n[w/The torch environment may be compromised due to version issues as some torch-related packages are being reinstalled.]" - }, - { - "author": "Hangover3832", - "title": "ComfyUI-Hangover-Nodes", - "reference": "https://github.com/Hangover3832/ComfyUI-Hangover-Nodes", - "files": [ - "https://github.com/Hangover3832/ComfyUI-Hangover-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes: MS kosmos-2 Interrogator, Save Image w/o Metadata, Image Scale Bounding Box. An implementation of Microsoft [a/kosmos-2](https://huggingface.co/microsoft/kosmos-2-patch14-224) image to text transformer." - }, - { - "author": "Hangover3832", - "title": "ComfyUI-Hangover-Moondream", - "reference": "https://github.com/Hangover3832/ComfyUI-Hangover-Moondream", - "files": [ - "https://github.com/Hangover3832/ComfyUI-Hangover-Moondream" - ], - "install_type": "git-clone", - "description": "Moondream is a lightweight multimodal large language model.\n[w/WARN:Additional python code will be downloaded from huggingface and executed. You have to trust this creator if you want to use this node!]" - }, - { - "author": "Hangover3832", - "title": "Recognize Anything Model (RAM) for ComfyUI", - "reference": "https://github.com/Hangover3832/ComfyUI-Hangover-Recognize_Anything", - "files": [ - "https://github.com/Hangover3832/ComfyUI-Hangover-Recognize_Anything" - ], - "install_type": "git-clone", - "description": "This is an image recognition node for ComfyUI based on the RAM++ model from [a/xinyu1205](https://huggingface.co/xinyu1205).\nThis node outputs a string of tags with all the recognized objects and elements in the image in English or Chinese language.\nFor image tagging and captioning." - }, - { - "author": "tzwm", - "title": "ComfyUI Profiler", - "reference": "https://github.com/tzwm/comfyui-profiler", - "files": [ - "https://github.com/tzwm/comfyui-profiler" - ], - "install_type": "git-clone", - "description": "Calculate the execution time of all nodes." - }, - { - "author": "Daniel Lewis", - "title": "ComfyUI-Llama", - "reference": "https://github.com/daniel-lewis-ab/ComfyUI-Llama", - "files": [ - "https://github.com/daniel-lewis-ab/ComfyUI-Llama" - ], - "install_type": "git-clone", - "description": "This is a set of nodes to interact with llama-cpp-python" - }, - { - "author": "Daniel Lewis", - "title": "ComfyUI-TTS", - "reference": "https://github.com/daniel-lewis-ab/ComfyUI-TTS", - "files": [ - "https://github.com/daniel-lewis-ab/ComfyUI-TTS" - ], - "install_type": "git-clone", - "description": "Text To Speech (TTS) for ComfyUI" - }, - { - "author": "djbielejeski", - "title": "a-person-mask-generator", - "reference": "https://github.com/djbielejeski/a-person-mask-generator", - "files": [ - "https://github.com/djbielejeski/a-person-mask-generator" - ], - "install_type": "git-clone", - "description": "Extension for Automatic1111 and ComfyUI to automatically create masks for Background/Hair/Body/Face/Clothes in Img2Img" - }, - { - "author": "smagnetize", - "title": "kb-comfyui-nodes", - "reference": "https://github.com/smagnetize/kb-comfyui-nodes", - "files": [ - "https://github.com/smagnetize/kb-comfyui-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:SingleImageDataUrlLoader" - }, - { - "author": "ginlov", - "title": "segment_to_mask_comfyui", - "reference": "https://github.com/ginlov/segment_to_mask_comfyui", - "files": [ - "https://github.com/ginlov/segment_to_mask_comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:SegToMask" - }, - { - "author": "glowcone", - "title": "Load Image From Base64 URI", - "reference": "https://github.com/glowcone/comfyui-base64-to-image", - "files": [ - "https://github.com/glowcone/comfyui-base64-to-image" - ], - "install_type": "git-clone", - "description": "Nodes: LoadImageFromBase64. Loads an image and its transparency mask from a base64-encoded data URI for easy API connection." - }, - { - "author": "glowcone", - "title": "String Converter", - "reference": "https://github.com/glowcone/comfyui-string-converter", - "files": [ - "https://github.com/glowcone/comfyui-string-converter" - ], - "install_type": "git-clone", - "description": "Nodes: Convert String To Int, Convert String To Float" - }, - { - "author": "AInseven", - "title": "ComfyUI-fastblend", - "reference": "https://github.com/AInseven/ComfyUI-fastblend", - "files": [ - "https://github.com/AInseven/ComfyUI-fastblend" - ], - "install_type": "git-clone", - "description": "fastblend for comfyui, and other nodes that I write for video2video. rebatch image, my openpose" - }, - { - "author": "HebelHuber", - "title": "comfyui-enhanced-save-node", - "reference": "https://github.com/HebelHuber/comfyui-enhanced-save-node", - "files": [ - "https://github.com/HebelHuber/comfyui-enhanced-save-node" - ], - "install_type": "git-clone", - "description": "Nodes:Enhanced Save Node" - }, - { - "author": "LarryJane491", - "title": "Lora-Training-in-Comfy", - "reference": "https://github.com/LarryJane491/Lora-Training-in-Comfy", - "files": [ - "https://github.com/LarryJane491/Lora-Training-in-Comfy" - ], - "install_type": "git-clone", - "description": "If you see this message, your ComfyUI-Manager is outdated.\nRecent channel provides only the list of the latest nodes. If you want to find the complete node list, please go to the Default channel.\nMaking LoRA has never been easier!" - }, - { - "author": "LarryJane491", - "title": "Image-Captioning-in-ComfyUI", - "reference": "https://github.com/LarryJane491/Image-Captioning-in-ComfyUI", - "files": [ - "https://github.com/LarryJane491/Image-Captioning-in-ComfyUI" - ], - "install_type": "git-clone", - "description": "The LoRA Caption custom nodes, just like their name suggests, allow you to caption images so they are ready for LoRA training." - }, - { - "author": "Layer-norm", - "title": "Comfyui lama remover", - "reference": "https://github.com/Layer-norm/comfyui-lama-remover", - "files": [ - "https://github.com/Layer-norm/comfyui-lama-remover" - ], - "install_type": "git-clone", - "description": "A very simple ComfyUI node to remove item with mask." - }, - { - "author": "Taremin", - "title": "ComfyUI Prompt ExtraNetworks", - "reference": "https://github.com/Taremin/comfyui-prompt-extranetworks", - "files": [ - "https://github.com/Taremin/comfyui-prompt-extranetworks" - ], - "install_type": "git-clone", - "description": "Instead of LoraLoader or HypernetworkLoader, it receives a prompt and loads and applies LoRA or HN based on the specifications within the prompt. The main purpose of this custom node is to allow changes without reconnecting the LoraLoader node when the prompt is randomly altered, etc." - }, - { - "author": "Taremin", - "title": "ComfyUI String Tools", - "reference": "https://github.com/Taremin/comfyui-string-tools", - "files": [ - "https://github.com/Taremin/comfyui-string-tools" - ], - "install_type": "git-clone", - "description": " This extension provides the StringToolsConcat node, which concatenates multiple texts, and the StringToolsRandomChoice node, which selects one randomly from multiple texts." - }, - { - "author": "Taremin", - "title": "WebUI Monaco Prompt", - "reference": "https://github.com/Taremin/webui-monaco-prompt", - "files": [ - "https://github.com/Taremin/webui-monaco-prompt" - ], - "install_type": "git-clone", - "description": "Make it possible to edit the prompt using the Monaco Editor, an editor implementation used in VSCode.\nNOTE: This extension supports both ComfyUI and A1111 simultaneously." - }, - { - "author": "foxtrot-roger", - "title": "RF Nodes", - "reference": "https://github.com/foxtrot-roger/comfyui-rf-nodes", - "files": [ - "https://github.com/foxtrot-roger/comfyui-rf-nodes" - ], - "install_type": "git-clone", - "description": "A bunch of nodes that can be useful to manipulate primitive types (numbers, text, ...) Also some helpers to generate text and timestamps." - }, - { - "author": "abyz22", - "title": "image_control", - "reference": "https://github.com/abyz22/image_control", - "files": [ - "https://github.com/abyz22/image_control" - ], - "install_type": "git-clone", - "description": "Nodes:abyz22_Padding Image, abyz22_ImpactWildcardEncode, abyz22_setimageinfo, abyz22_SaveImage, abyz22_ImpactWildcardEncode_GetPrompt, abyz22_SetQueue, abyz22_drawmask, abyz22_FirstNonNull, abyz22_blendimages, abyz22_blend_onecolor. Please check workflow in [a/https://github.com/abyz22/image_control](https://github.com/abyz22/image_control)" - }, - { - "author": "HAL41", - "title": "ComfyUI aichemy nodes", - "reference": "https://github.com/HAL41/ComfyUI-aichemy-nodes", - "files": [ - "https://github.com/HAL41/ComfyUI-aichemy-nodes" - ], - "install_type": "git-clone", - "description": "Simple node to handle scaling of YOLOv8 segmentation masks" - }, - { - "author": "nkchocoai", - "title": "ComfyUI-SizeFromPresets", - "reference": "https://github.com/nkchocoai/ComfyUI-SizeFromPresets", - "files": [ - "https://github.com/nkchocoai/ComfyUI-SizeFromPresets" - ], - "install_type": "git-clone", - "description": "Add a node that outputs width and height of the size selected from the preset (.csv)." - }, - { - "author": "nkchocoai", - "title": "ComfyUI-PromptUtilities", - "reference": "https://github.com/nkchocoai/ComfyUI-PromptUtilities", - "files": [ - "https://github.com/nkchocoai/ComfyUI-PromptUtilities" - ], - "install_type": "git-clone", - "description": "Nodes: Format String, Join String List, Load Preset, Load Preset (Advanced), Const String, Const String (multi line). Add useful nodes related to prompt." - }, - { - "author": "nkchocoai", - "title": "ComfyUI-TextOnSegs", - "reference": "https://github.com/nkchocoai/ComfyUI-TextOnSegs", - "files": [ - "https://github.com/nkchocoai/ComfyUI-TextOnSegs" - ], - "install_type": "git-clone", - "description": "Add a node for drawing text with CR Draw Text of ComfyUI_Comfyroll_CustomNodes to the area of SEGS detected by Ultralytics Detector of ComfyUI-Impact-Pack." - }, - { - "author": "nkchocoai", - "title": "ComfyUI-SaveImageWithMetaData", - "reference": "https://github.com/nkchocoai/ComfyUI-SaveImageWithMetaData", - "files": [ - "https://github.com/nkchocoai/ComfyUI-SaveImageWithMetaData" - ], - "install_type": "git-clone", - "description": "Add a node to save images with metadata (PNGInfo) extracted from the input values of each node.\nSince the values are extracted dynamically, values output by various extension nodes can be added to metadata." - }, - { - "author": "nkchocoai", - "title": "ComfyUI-Dart", - "id": "dart", - "reference": "https://github.com/nkchocoai/ComfyUI-Dart", - "files": [ - "https://github.com/nkchocoai/ComfyUI-Dart" - ], - "install_type": "git-clone", - "description": "Add nodes that generates danbooru tags by [a/Dart(Danbooru Tags Transformer)](https://huggingface.co/p1atdev/dart-v1-sft)." - }, - { - "author": "JaredTherriault", - "title": "ComfyUI-JNodes", - "id": "jnodes", - "reference": "https://github.com/JaredTherriault/ComfyUI-JNodes", - "files": [ - "https://github.com/JaredTherriault/ComfyUI-JNodes" - ], - "install_type": "git-clone", - "description": "python and web UX improvements for ComfyUI: Lora/Embedding picker, web extension manager (enable/disable any extension without disabling python nodes), control any parameter with text prompts, image and video viewer, metadata viewer, token counter, comments in prompts, font control, and more! \n[w/'ImageFeed.js' from the custom scripts of pythongosssss is not compatible with this suite's ImageDrawer feature. Additionally, 'DynamicPrompts.js' and 'EditAttention.js' from the core, along with 'favicon.js' from the custom scripts of pythongosssss, are incompatible with advanced features of the suite. Please use the JNodes Extension Management setting in Settings > JNodes > Extension Management to disable these extensions by unchecking them to use the full functionality of the suite.]" - }, - { - "author": "prozacgod", - "title": "ComfyUI Multi-Workspace", - "id": "multi-workspace", - "reference": "https://github.com/prozacgod/comfyui-pzc-multiworkspace", - "files": [ - "https://github.com/prozacgod/comfyui-pzc-multiworkspace" - ], - "install_type": "git-clone", - "description": "A simple, quick, and dirty implementation of multiple workspaces within ComfyUI." - }, - { - "author": "Siberpone", - "title": "Lazy Pony Prompter", - "id": "lazy-pony-prompter", - "reference": "https://github.com/Siberpone/lazy-pony-prompter", - "files": [ - "https://github.com/Siberpone/lazy-pony-prompter" - ], - "install_type": "git-clone", - "description": "A booru API powered prompt generator for A1111 and ComfyUI with flexible tag filtering system and customizable prompt templates." - }, - { - "author": "dave-palt", - "title": "comfyui_DSP_imagehelpers", - "id": "dsp-imagehelpers", - "reference": "https://github.com/dave-palt/comfyui_DSP_imagehelpers", - "files": [ - "https://github.com/dave-palt/comfyui_DSP_imagehelpers" - ], - "install_type": "git-clone", - "description": "Nodes: DSP Image Concat" - }, - { - "author": "Inzaniak", - "title": "Ranbooru for ComfyUI", - "id": "ranbooru", - "reference": "https://github.com/Inzaniak/comfyui-ranbooru", - "files": [ - "https://github.com/Inzaniak/comfyui-ranbooru" - ], - "install_type": "git-clone", - "description": "Ranbooru is an extension for the comfyUI. The purpose of this extension is to add a node that gets a random set of tags from boorus pictures. This is mostly being used to help me test my checkpoints on a large variety of" - }, - { - "author": "miosp", - "title": "ComfyUI-FBCNN", - "id": "fbcnn", - "reference": "https://github.com/Miosp/ComfyUI-FBCNN", - "files": [ - "https://github.com/Miosp/ComfyUI-FBCNN" - ], - "install_type": "git-clone", - "description": "A node for JPEG de-artifacting using [a/FBCNN](https://github.com/jiaxi-jiang/FBCNN)." - }, - { - "author": "JcandZero", - "title": "ComfyUI_GLM4Node", - "id": "glm4node", - "reference": "https://github.com/JcandZero/ComfyUI_GLM4Node", - "files": [ - "https://github.com/JcandZero/ComfyUI_GLM4Node" - ], - "install_type": "git-clone", - "description": "GLM4 Vision Integration" - }, - { - "author": "darkpixel", - "title": "DarkPrompts", - "id": "darkprompts", - "reference": "https://github.com/darkpixel/darkprompts", - "files": [ - "https://github.com/darkpixel/darkprompts" - ], - "install_type": "git-clone", - "description": "Slightly better random prompt generation tools that allow combining and picking prompts from both file and text input sources." - }, - { - "author": "yytdfc", - "title": "Amazon Bedrock nodes for ComfyUI", - "id": "bedrock", - "reference": "https://github.com/aws-samples/comfyui-llm-node-for-amazon-bedrock", - "files": [ - "https://github.com/aws-samples/comfyui-llm-node-for-amazon-bedrock" - ], - "pip": ["boto3"], - "install_type": "git-clone", - "description": "Amazon Bedrock is a fully managed service that offers a choice of high-performing foundation models (FMs) from leading AI companies. This repo is the ComfyUI nodes for Bedrock service. You could invoke the foundation model in your ComfyUI pipeline." - }, - { - "author": "Qais Malkawi", - "title": "ComfyUI-Qais-Helper", - "id": "qais-helper", - "reference": "https://github.com/QaisMalkawi/ComfyUI-QaisHelper", - "files": [ - "https://github.com/QaisMalkawi/ComfyUI-QaisHelper" - ], - "install_type": "git-clone", - "description": "This Extension adds a few custom QOL nodes that ComfyUI lacks by default." - }, - { - "author": "longgui0318", - "title": "comfyui-mask-util", - "id": "mask-util", - "reference": "https://github.com/longgui0318/comfyui-mask-util", - "files": [ - "https://github.com/longgui0318/comfyui-mask-util" - ], - "install_type": "git-clone", - "description": "Nodes:Split Masks, Mask Selection Of Masks, Mask Region Info" - }, - { - "author": "longgui0318", - "title": "comfyui-llm-assistant", - "id": "llm-assistant", - "reference": "https://github.com/longgui0318/comfyui-llm-assistant", - "files": [ - "https://github.com/longgui0318/comfyui-llm-assistant" - ], - "install_type": "git-clone", - "description": "Nodes:Generate Stable Diffsution Prompt With LLM, Translate Text With LLM, Chat With LLM" - }, - { - "author": "longgui0318", - "title": "comfyui-magic-clothing", - "id": "magic-clothing", - "reference": "https://github.com/longgui0318/comfyui-magic-clothing", - "files": [ - "https://github.com/longgui0318/comfyui-magic-clothing" - ], - "install_type": "git-clone", - "description": "The comfyui supported version of the [a/Magic Clothing](https://github.com/ShineChen1024/MagicClothing) project, not the diffusers version, allows direct integration with modules such as ipadapter.[w/comfyui-oms-diffusion is renamed to comfyui-magic-clothing. You may need to reinstall this.]" - }, - { - "author": "longgui0318", - "title": "comfyui-common-util", - "id": "common-util", - "reference": "https://github.com/longgui0318/comfyui-common-util", - "files": [ - "https://github.com/longgui0318/comfyui-common-util" - ], - "install_type": "git-clone", - "description": "Nodes:Init Layer Info Array, Added Layer Info To Array, Layer Info Array Fuse, Layer Image Seleted, Layer Images IPAdapter Advanced, Enhanced Random Light Source" - }, - { - "author": "DimaChaichan", - "title": "LAizypainter-Exporter-ComfyUI", - "reference": "https://github.com/DimaChaichan/LAizypainter-Exporter-ComfyUI", - "files": [ - "https://github.com/DimaChaichan/LAizypainter-Exporter-ComfyUI" - ], - "install_type": "git-clone", - "description": "This exporter is a plugin for ComfyUI, which can export tasks for [a/LAizypainter](https://github.com/DimaChaichan/LAizypainter).\nLAizypainter is a Photoshop plugin with which you can send tasks directly to a Stable Diffusion server. More information about a [a/Task](https://github.com/DimaChaichan/LAizypainter?tab=readme-ov-file#task)" - }, - { - "author": "adriflex", - "title": "ComfyUI_Blender_Texdiff", - "id": "blender-texdiff", - "reference": "https://github.com/adriflex/ComfyUI_Blender_Texdiff", - "files": [ - "https://github.com/adriflex/ComfyUI_Blender_Texdiff" - ], - "install_type": "git-clone", - "description": "Nodes:Blender viewport color, Blender Viewport depth" - }, - { - "author": "Shraknard", - "title": "ComfyUI-Remover", - "id": "remover", - "reference": "https://github.com/Shraknard/ComfyUI-Remover", - "files": [ - "https://github.com/Shraknard/ComfyUI-Remover" - ], - "install_type": "git-clone", - "description": "Custom node for ComfyUI that makes parts of the image transparent (face, background...)" - }, - { - "author": "FlyingFireCo", - "title": "tiled_ksampler", - "reference": "https://github.com/FlyingFireCo/tiled_ksampler", - "files": [ - "https://github.com/FlyingFireCo/tiled_ksampler" - ], - "install_type": "git-clone", - "description": "Nodes:Tiled KSampler, Asymmetric Tiled KSampler, Circular VAEDecode." - }, - { - "author": "Nlar", - "title": "ComfyUI_CartoonSegmentation", - "id": "cartoon-seg", - "reference": "https://github.com/Nlar/ComfyUI_CartoonSegmentation", - "files": [ - "https://github.com/Nlar/ComfyUI_CartoonSegmentation" - ], - "install_type": "git-clone", - "description": "Front end ComfyUI nodes for CartoonSegmentation Based upon the work of the CartoonSegmentation repository this project will provide a front end to some of the features." - }, - { - "author": "godspede", - "title": "ComfyUI Substring", - "id": "substring", - "reference": "https://github.com/godspede/ComfyUI_Substring", - "files": [ - "https://github.com/godspede/ComfyUI_Substring" - ], - "install_type": "git-clone", - "description": "Just a simple substring node that takes text and length as input, and outputs the first length characters." - }, - { - "author": "gokayfem", - "title": "VLM_nodes", - "id": "vlm", - "reference": "https://github.com/gokayfem/ComfyUI_VLM_nodes", - "files": [ - "https://github.com/gokayfem/ComfyUI_VLM_nodes" - ], - "install_type": "git-clone", - "description": "Custom Nodes for Vision Language Models (VLM) , Large Language Models (LLM), Image Captioning, Automatic Prompt Generation, Creative and Consistent Prompt Suggestion, Keyword Extraction" - }, - { - "author": "gokayfem", - "title": "ComfyUI-Dream-Interpreter", - "id": "dream-interpreter", - "reference": "https://github.com/gokayfem/ComfyUI-Dream-Interpreter", - "files": [ - "https://github.com/gokayfem/ComfyUI-Dream-Interpreter" - ], - "install_type": "git-clone", - "description": "Tell your dream and it interprets it and puts you inside your dream" - }, - { - "author": "gokayfem", - "title": "ComfyUI-Depth-Visualization", - "id": "delpth-visualization", - "reference": "https://github.com/gokayfem/ComfyUI-Depth-Visualization", - "files": [ - "https://github.com/gokayfem/ComfyUI-Depth-Visualization" - ], - "install_type": "git-clone", - "description": "Works with any Depth Map and visualizes the applied version it inside ComfyUI" - }, - { - "author": "gokayfem", - "title": "ComfyUI-Texture-Simple", - "id": "texture-simple", - "reference": "https://github.com/gokayfem/ComfyUI-Texture-Simple", - "files": [ - "https://github.com/gokayfem/ComfyUI-Texture-Simple" - ], - "install_type": "git-clone", - "description": "Visualize your textures inside ComfyUI" - }, - { - "author": "Hiero207", - "title": "Hiero-Nodes", - "id": "hiero", - "reference": "https://github.com/Hiero207/ComfyUI-Hiero-Nodes", - "files": [ - "https://github.com/Hiero207/ComfyUI-Hiero-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Post to Discord w/ Webhook" - }, - { - "author": "azure-dragon-ai", - "title": "ComfyUI-ClipScore-Nodes", - "id": "clipscore", - "reference": "https://github.com/azure-dragon-ai/ComfyUI-ClipScore-Nodes", - "files": [ - "https://github.com/azure-dragon-ai/ComfyUI-ClipScore-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:ImageScore, Loader, Image Processor, Real Image Processor, Fake Image Processor, Text Processor. ComfyUI Nodes for ClipScore" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI Whisper", - "id": "whisper", - "reference": "https://github.com/yuvraj108c/ComfyUI-Whisper", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Whisper" - ], - "install_type": "git-clone", - "description": "Transcribe audio and add subtitles to videos using Whisper in ComfyUI" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI-Pronodes", - "id": "pronodes", - "reference": "https://github.com/yuvraj108c/ComfyUI-Pronodes", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Pronodes" - ], - "install_type": "git-clone", - "description": "A collection of nice utility nodes for ComfyUI" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI-Vsgan", - "id": "vsgan", - "reference": "https://github.com/yuvraj108c/ComfyUI-Vsgan", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Vsgan" - ], - "install_type": "git-clone", - "description": "Nodes:Upscale Video Tensorrt" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI Depth Anything TensorRT", - "id": "depth-anything-tensorrt", - "reference": "https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt" - ], - "install_type": "git-clone", - "description": "This extension provides a ComfyUI Custom Node implementation of the [a/Depth-Anything-Tensorrt](https://github.com/spacewalk01/depth-anything-tensorrt) in Python for ultra fast depth map generation" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI PiperTTS", - "id": "pipertts", - "reference": "https://github.com/yuvraj108c/ComfyUI-PiperTTS", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-PiperTTS" - ], - "install_type": "git-clone", - "description": "Convert Text-to-Speech inside ComfyUI using [a/Piper](https://github.com/rhasspy/piper)" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI Upscaler TensorRT", - "id": "upscaler-tensorrt", - "reference": "https://github.com/yuvraj108c/ComfyUI-Upscaler-Tensorrt", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Upscaler-Tensorrt" - ], - "install_type": "git-clone", - "description": "This project provides a Tensorrt implementation for fast image upscaling inside ComfyUI (3-4x faster)" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI YoloNasPose Tensorrt", - "id": "yolonaspose-tensorrt", - "reference": "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt" - ], - "install_type": "git-clone", - "description": "This repo provides a ComfyUI Custom Node implementation of [a/YOLO-NAS-POSE](https://github.com/Deci-AI/super-gradients), powered by TensorRT for ultra fast pose estimation. It has been adapted to work with openpose controlnet (experimental)" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI Dwpose TensorRT", - "id": "dwpose-tensorrt", - "reference": "https://github.com/yuvraj108c/ComfyUI-Dwpose-Tensorrt", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Dwpose-Tensorrt" - ], - "install_type": "git-clone", - "description": "This project provides a Tensorrt implementation of Dwpose for ultra fast pose estimation inside ComfyUI" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI Facerestore TensorRT", - "reference": "https://github.com/yuvraj108c/ComfyUI-Facerestore-Tensorrt", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Facerestore-Tensorrt" - ], - "install_type": "git-clone", - "description": "This project provides an experimental Tensorrt implementation for ultra fast face restoration inside ComfyUI.\nNote: This project doesn't do pre/post processing. It only works on cropped faces for now." - }, - { - "author": "yuvraj108c", - "title": "ComfyUI Rife TensorRT", - "reference": "https://github.com/yuvraj108c/ComfyUI-Rife-Tensorrt", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Rife-Tensorrt" - ], - "install_type": "git-clone", - "description": "This project provides a TensorRT implementation of [a/RIFE](https://github.com/hzwer/ECCV2022-RIFE) for ultra fast frame interpolation inside ComfyUI" - }, - { - "author": "yuvraj108c", - "title": "ComfyUI Video Depth Anything", - "reference": "https://github.com/yuvraj108c/ComfyUI-Video-Depth-Anything", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Video-Depth-Anything" - ], - "install_type": "git-clone", - "description": "This project is an unofficial ComfyUI implementation of [a/Video Depth Anything](https://github.com/DepthAnything/Video-Depth-Anything), for depth estimation on long videos without compromising quality, consistency, or generalization ability." - }, - { - "author": "blepping", - "title": "ComfyUI-bleh", - "id": "bleh", - "reference": "https://github.com/blepping/ComfyUI-bleh", - "files": [ - "https://github.com/blepping/ComfyUI-bleh" - ], - "install_type": "git-clone", - "description": "Better TAESD previews, BlehHyperTile." - }, - { - "author": "blepping", - "title": "ComfyUI-sonar", - "id": "sonar", - "reference": "https://github.com/blepping/ComfyUI-sonar", - "files": [ - "https://github.com/blepping/ComfyUI-sonar" - ], - "install_type": "git-clone", - "description": "A janky implementation of Sonar sampling (momentum-based sampling) for ComfyUI." - }, - { - "author": "blepping", - "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 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", - "title": "comfyui_jankdiffusehigh", - "id": "jank-diffusehigh", - "reference": "https://github.com/blepping/comfyui_jankdiffusehigh", - "files": [ - "https://github.com/blepping/comfyui_jankdiffusehigh" - ], - "install_type": "git-clone", - "description": "Janky implementation of [a/DiffuseHigh](https://github.com/yhyun225/DiffuseHigh/) for ComfyUI. Enables generating at resolutions higher than what the model was trained for without requiring model patches." - }, - { - "author": "blepping", - "title": "comfyui_overly_complicated_sampling", - "reference": "https://github.com/blepping/comfyui_overly_complicated_sampling", - "files": [ - "https://github.com/blepping/comfyui_overly_complicated_sampling" - ], - "install_type": "git-clone", - "description": "Experimental and mathematically unsound (but fun!) sampling for ComfyUI.\nFeel free create a question in Discussions for usage help: OCS Q&A Discussion[w/Status: In flux, may be useful but likely to change/break workflows frequently. Mainly for advanced users.]" - }, - { - "author": "JerryOrbachJr", - "title": "Random Size", - "reference": "https://github.com/JerryOrbachJr/ComfyUI-RandomSize", - "files": [ - "https://github.com/JerryOrbachJr/ComfyUI-RandomSize" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node that randomly selects a height and width pair from a list in a config file" - }, - { - "author": "jamal-alkharrat", - "title": "ComfyUI_rotate_image", - "reference": "https://github.com/jamal-alkharrat/ComfyUI_rotate_image", - "files": [ - "https://github.com/jamal-alkharrat/ComfyUI_rotate_image" - ], - "install_type": "git-clone", - "description": "ComfyUI Custom Node to Rotate Images, Img2Img node." - }, - { - "author": "mape", - "title": "mape's helpers", - "id": "mape-helpers", - "reference": "https://github.com/mape/ComfyUI-mape-Helpers", - "files": [ - "https://github.com/mape/ComfyUI-mape-Helpers" - ], - "install_type": "git-clone", - "description": "Multi-monitor image preview, Variable Assigment/Wireless Nodes, Prompt Tweaking, Command Palette, Pinned favourite nodes, Node navigation, Fuzzy search, Node time tracking, Organizing and Error management. For more info visit: [a/https://comfyui.ma.pe/](https://comfyui.ma.pe/)" - }, - { - "author": "zhongpei", - "title": "ComfyUI for InstructIR", - "id": "instructir", - "reference": "https://github.com/zhongpei/ComfyUI-InstructIR", - "files": [ - "https://github.com/zhongpei/ComfyUI-InstructIR" - ], - "install_type": "git-clone", - "description": "Enhancing Image Restoration. (ref:[a/InstructIR](https://github.com/mv-lab/InstructIR))" - }, - { - "author": "Loewen-Hob", - "title": "Rembg Background Removal Node for ComfyUI (Better)", - "id": "rembg-better", - "reference": "https://github.com/Loewen-Hob/rembg-comfyui-node-better", - "files": [ - "https://github.com/Loewen-Hob/rembg-comfyui-node-better" - ], - "install_type": "git-clone", - "description": "This custom node is based on the [a/rembg-comfyui-node](https://github.com/Jcd1230/rembg-comfyui-node) but provides additional functionality to select ONNX models." - }, - { - "author": "HaydenReeve", - "title": "ComfyUI Better Strings", - "id": "better-string", - "reference": "https://github.com/HaydenReeve/ComfyUI-Better-Strings", - "files": [ - "https://github.com/HaydenReeve/ComfyUI-Better-Strings" - ], - "install_type": "git-clone", - "description": "Strings should be easy, and simple. This extension aims to provide a set of nodes that make working with strings in ComfyUI a little bit easier." - }, - { - "author": "StartHua", - "title": "ComfyUI_Seg_VITON", - "id": "seg-viton", - "reference": "https://github.com/StartHua/ComfyUI_Seg_VITON", - "files": [ - "https://github.com/StartHua/ComfyUI_Seg_VITON" - ], - "install_type": "git-clone", - "description": "Nodes:segformer_clothes, segformer_agnostic, segformer_remove_bg, stabel_vition. Nodes for model dress up." - }, - { - "author": "StartHua", - "title": "Comfyui_joytag", - "id": "joytag", - "reference": "https://github.com/StartHua/Comfyui_joytag", - "files": [ - "https://github.com/StartHua/Comfyui_joytag" - ], - "install_type": "git-clone", - "description": "JoyTag is a state of the art AI vision model for tagging images, with a focus on sex positivity and inclusivity. It uses the Danbooru tagging schema, but works across a wide range of images, from hand drawn to photographic.\nDownload the weight and put it under checkpoints: [a/https://huggingface.co/fancyfeast/joytag/tree/main](https://huggingface.co/fancyfeast/joytag/tree/main)" - }, - { - "author": "StartHua", - "title": "comfyui_segformer_b2_clothes", - "id": "segformer-b2-clothes", - "reference": "https://github.com/StartHua/Comfyui_segformer_b2_clothes", - "files": [ - "https://github.com/StartHua/Comfyui_segformer_b2_clothes" - ], - "install_type": "git-clone", - "description": "SegFormer model fine-tuned on ATR dataset for clothes segmentation but can also be used for human segmentation!\nDownload the weight and put it under checkpoints: [a/https://huggingface.co/mattmdjaga/segformer_b2_clothes](https://huggingface.co/mattmdjaga/segformer_b2_clothes)" - }, - { - "author": "StartHua", - "title": "ComfyUI_OOTDiffusion_CXH", - "id": "ootdiffusion-cxh", - "reference": "https://github.com/StartHua/ComfyUI_OOTDiffusion_CXH", - "files": [ - "https://github.com/StartHua/ComfyUI_OOTDiffusion_CXH" - ], - "install_type": "git-clone", - "description": "Nodes:Ood_hd_CXH, Ood_hd_CXH. [a/OOTDiffusion](https://github.com/levihsu/OOTDiffusion)" - }, - { - "author": "StartHua", - "title": "ComfyUI_PCDMs", - "id": "pcdms", - "reference": "https://github.com/StartHua/ComfyUI_PCDMs", - "files": [ - "https://github.com/StartHua/ComfyUI_PCDMs" - ], - "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": "StartHua", - "title": "Comfyui_CXH_Phi_3.5", - "reference": "https://github.com/StartHua/Comfyui_CXH_Phi_3.5", - "files": [ - "https://github.com/StartHua/Comfyui_CXH_Phi_3.5" - ], - "install_type": "git-clone", - "description": "Phi-3.5-vision-instruct fast talk with image !\nFast , Fast ,Fast!\n1.Phi-3.5-vision-instruct" - }, - { - "author": "StartHua", - "title": "Comfyui_CXH_DeepLX", - "reference": "https://github.com/StartHua/Comfyui_CXH_DeepLX", - "files": [ - "https://github.com/StartHua/Comfyui_CXH_DeepLX" - ], - "install_type": "git-clone", - "description": "NODES:CXH_DeepLX_Free, CXH_DeepLX_translate" - }, - { - "author": "StartHua", - "title": "Comfyui_CXH_FluxLoraMerge", - "reference": "https://github.com/StartHua/Comfyui_CXH_FluxLoraMerge", - "files": [ - "https://github.com/StartHua/Comfyui_CXH_FluxLoraMerge" - ], - "install_type": "git-clone", - "description": "flux lora merge.\nadaptive Merge (uses tensor norms and weight), manual Merge (uses fixed weights you specify), additive Merge (uses 100% of the first and adds a percentage of the second)" - }, - { - "author": "StartHua", - "title": "Comfyui_Gemini2", - "reference": "https://github.com/StartHua/Comfyui_Gemini2", - "files": [ - "https://github.com/StartHua/Comfyui_Gemini2" - ], - "install_type": "git-clone", - "description": "NODES:CXH_Gemini2_TX, CXH_Gemini2_Vision, CXH_Local_Prompt" - }, - { - "author": "ricklove", - "title": "comfyui-ricklove", - "id": "ricklove", - "reference": "https://github.com/ricklove/comfyui-ricklove", - "files": [ - "https://github.com/ricklove/comfyui-ricklove" - ], - "install_type": "git-clone", - "description": "Nodes: Image Crop and Resize by Mask, Image Uncrop, Image Shadow, Optical Flow (Dip), Warp Image with Flow, Image Threshold (Channels), Finetune Variable, Finetune Analyze, Finetune Analyze Batch, ... Misc ComfyUI nodes by Rick Love" - }, - { - "author": "nosiu", - "title": "ComfyUI InstantID Faceswapper", - "id": "instantid-faceswapper", - "reference": "https://github.com/nosiu/comfyui-instantId-faceswap", - "files": [ - "https://github.com/nosiu/comfyui-instantId-faceswap" - ], - "install_type": "git-clone", - "description": "Implementation of [a/faceswap](https://github.com/nosiu/InstantID-faceswap/tree/main) based on [a/InstantID](https://github.com/InstantID/InstantID) for ComfyUI. Allows usage of [a/LCM Lora](https://huggingface.co/latent-consistency/lcm-lora-sdxl) which can produce good results in only a few generation steps.\nNOTE:Works ONLY with SDXL checkpoints." - }, - { - "author": "LyazS", - "title": "Anime Character Segmentation node for comfyui", - "reference": "https://github.com/LyazS/comfyui-anime-seg", - "files": [ - "https://github.com/LyazS/comfyui-anime-seg" - ], - "install_type": "git-clone", - "description": "A Anime Character Segmentation node for comfyui, based on [this hf space](https://huggingface.co/spaces/skytnt/anime-remove-background)." - }, - { - "author": "LyazS", - "title": "net tool node for comfyui", - "reference": "https://github.com/LyazS/comfyui-nettools", - "files": [ - "https://github.com/LyazS/comfyui-nettools" - ], - "install_type": "git-clone", - "description": "A net tool node for comfyui, rewrite from [comfyui-tooling-nodes](https://github.com/Acly/comfyui-tooling-nodes) but support more big data sending." - }, - { - "author": "Chan-0312", - "title": "ComfyUI-IPAnimate", - "reference": "https://github.com/Chan-0312/ComfyUI-IPAnimate", - "files": [ - "https://github.com/Chan-0312/ComfyUI-IPAnimate" - ], - "install_type": "git-clone", - "description": "This is a project that generates videos frame by frame based on IPAdapter+ControlNet. Unlike [a/Steerable-motion](https://github.com/banodoco/Steerable-Motion), we do not rely on AnimateDiff. This decision is primarily due to the fact that the videos generated by AnimateDiff are often blurry. Through frame-by-frame control using IPAdapter+ControlNet, we can produce higher definition and more controllable videos." - }, - { - "author": "Chan-0312", - "title": "ComfyUI-EasyDeforum", - "reference": "https://github.com/Chan-0312/ComfyUI-EasyDeforum", - "files": [ - "https://github.com/Chan-0312/ComfyUI-EasyDeforum" - ], - "install_type": "git-clone", - "description": "Nodes:Easy2DDeforum (Chan)" - }, - { - "author": "trumanwong", - "title": "ComfyUI-NSFW-Detection", - "reference": "https://github.com/trumanwong/ComfyUI-NSFW-Detection", - "files": [ - "https://github.com/trumanwong/ComfyUI-NSFW-Detection" - ], - "install_type": "git-clone", - "description": "An implementation of NSFW Detection for ComfyUI" - }, - { - "author": "TemryL", - "title": "ComfyS3", - "reference": "https://github.com/TemryL/ComfyS3", - "files": [ - "https://github.com/TemryL/ComfyS3" - ], - "install_type": "git-clone", - "description": "ComfyS3 seamlessly integrates with [a/Amazon S3](https://aws.amazon.com/en/s3/) in ComfyUI. This open-source project provides custom nodes for effortless loading and saving of images, videos, and checkpoint models directly from S3 buckets within the ComfyUI graph interface." - }, - { - "author": "MaraScott", - "title": "🐰 MaraScott Nodes", - "id": "marascott-nodes", - "reference": "https://github.com/MaraScott/ComfyUI_MaraScott_Nodes", - "files": [ - "https://github.com/MaraScott/ComfyUI_MaraScott_Nodes" - ], - "install_type": "git-clone", - "description": "A set of nodes including a universal bus, an Inpainting By Mask and a large Upscaler/Refiner\n[AnyBus,McInpainty,McBoaty]" - }, - { - "author": "yffyhk", - "title": "comfyui_auto_danbooru", - "reference": "https://github.com/yffyhk/comfyui_auto_danbooru", - "files": [ - "https://github.com/yffyhk/comfyui_auto_danbooru" - ], - "install_type": "git-clone", - "description": "Nodes: Get Danbooru, Tag Encode" - }, - { - "author": "dfl", - "title": "CLIP with BREAK syntax", - "reference": "https://github.com/dfl/comfyui-clip-with-break", - "files": [ - "https://github.com/dfl/comfyui-clip-with-break" - ], - "install_type": "git-clone", - "description": "Clip text encoder with BREAK formatting like A1111 (uses conditioning concat)" - }, - { - "author": "dfl", - "title": "ComfyUI-TCD-scheduler", - "id": "dfl-tcd", - "reference": "https://github.com/dfl/comfyui-tcd-scheduler", - "files": [ - "https://github.com/dfl/comfyui-tcd-scheduler" - ], - "install_type": "git-clone", - "description": "ComfyUI Custom Sampler nodes that implement Zheng et al.'s Trajectory Consistency Distillation based on [a/https://mhh0318.github.io/tcd](https://mhh0318.github.io/tcd)" - }, - { - "author": "antrobot", - "title": "antrobots ComfyUI Nodepack", - "reference": "https://github.com/antrobot1234/antrobots-comfyUI-nodepack", - "files": [ - "https://github.com/antrobot1234/antrobots-comfyUI-nodepack" - ], - "install_type": "git-clone", - "description": "A small node pack containing various things I felt like ought to be in base comfy-UI. Currently includes Some image handling nodes to help with inpainting, a version of KSampler (advanced) that allows for denoise, and a node that can swap it's inputs. Remember to make an issue if you experience any bugs or errors!" - }, - { - "author": "bilal-arikan", - "title": "ComfyUI_TextAssets", - "reference": "https://github.com/bilal-arikan/ComfyUI_TextAssets", - "files": [ - "https://github.com/bilal-arikan/ComfyUI_TextAssets" - ], - "install_type": "git-clone", - "description": "With this node you can upload text files to input folder from your local computer." - }, - { - "author": "kadirnar", - "title": "ComfyUI-Transformers", - "id": "comfy-transformers", - "reference": "https://github.com/kadirnar/ComfyUI-Transformers", - "files": [ - "https://github.com/kadirnar/ComfyUI-Transformers" - ], - "install_type": "git-clone", - "description": "ComfyUI-Transformers is a cutting-edge project combining the power of computer vision and natural language processing to create intuitive and user-friendly interfaces. Our goal is to make technology more accessible and engaging." - }, - { - "author": "kadirnar", - "title": "ComfyUI-YOLO", - "id": "comfy-yolo", - "reference": "https://github.com/kadirnar/ComfyUI-YOLO", - "files": [ - "https://github.com/kadirnar/ComfyUI-YOLO" - ], - "install_type": "git-clone", - "description": "Ultralytics-Powered Object Recognition for ComfyUI" - }, - { - "author": "digitaljohn", - "title": "ComfyUI-ProPost", - "reference": "https://github.com/digitaljohn/comfyui-propost", - "files": [ - "https://github.com/digitaljohn/comfyui-propost" - ], - "install_type": "git-clone", - "description": "A set of custom ComfyUI nodes for performing basic post-processing effects including Film Grain and Vignette. These effects can help to take the edge off AI imagery and make them feel more natural." - }, - { - "author": "deforum", - "title": "Deforum Nodes", - "reference": "https://github.com/XmYx/deforum-comfy-nodes", - "files": [ - "https://github.com/XmYx/deforum-comfy-nodes" - ], - "install_type": "git-clone", - "description": "Official Deforum animation pipeline tools that provide a unique way to create frame-by-frame generative motion art." - }, - { - "author": "adbrasi", - "title": "ComfyUI-TrashNodes-DownloadHuggingface", - "reference": "https://github.com/adbrasi/ComfyUI-TrashNodes-DownloadHuggingface", - "files": [ - "https://github.com/adbrasi/ComfyUI-TrashNodes-DownloadHuggingface" - ], - "install_type": "git-clone", - "description": "ComfyUI-TrashNodes-DownloadHuggingface is a ComfyUI node designed to facilitate the download of models you have just trained and uploaded to Hugging Face. This node is particularly useful for users who employ Google Colab for training and need to quickly download their models for deployment." - }, - { - "author": "mbrostami", - "title": "ComfyUI-HF", - "reference": "https://github.com/mbrostami/ComfyUI-HF", - "files": [ - "https://github.com/mbrostami/ComfyUI-HF" - ], - "install_type": "git-clone", - "description": "ComfyUI Node to work with Hugging Face repositories" - }, - { - "author": "Billius-AI", - "title": "ComfyUI-Path-Helper", - "reference": "https://github.com/Billius-AI/ComfyUI-Path-Helper", - "files": [ - "https://github.com/Billius-AI/ComfyUI-Path-Helper" - ], - "install_type": "git-clone", - "description": "Nodes:Create Project Root, Add Folder, Add Folder Advanced, Add File Name Prefix, Add File Name Prefix Advanced, ShowPath" - }, - { - "author": "Franck-Demongin", - "title": "NX_PromptStyler", - "reference": "https://github.com/Franck-Demongin/NX_PromptStyler", - "files": [ - "https://github.com/Franck-Demongin/NX_PromptStyler" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI to create a prompt based on a list of keywords saved in CSV files." - }, - { - "author": "Franck-Demongin", - "title": "NX_HuggingFace_Flux", - "reference": "https://github.com/Franck-Demongin/NX_HuggingFace_Flux", - "files": [ - "https://github.com/Franck-Demongin/NX_HuggingFace_Flux" - ], - "install_type": "git-clone", - "description": "Nodes:Hugging Face Flux" - }, - { - "author": "Franck-Demongin", - "title": "NX_Translator", - "reference": "https://github.com/Franck-Demongin/NX_Translator", - "files": [ - "https://github.com/Franck-Demongin/NX_Translator" - ], - "install_type": "git-clone", - "description": "A custom node for translating prompts with Google Translate or DeeplL directly in ComfyUI." - }, - { - "author": "xiaoxiaodesha", - "title": "hd-nodes-comfyui", - "reference": "https://github.com/xiaoxiaodesha/hd_node", - "files": [ - "https://github.com/xiaoxiaodesha/hd_node" - ], - "install_type": "git-clone", - "description": "Nodes:Combine HDMasks, Cover HDMasks, HD FaceIndex, HD SmoothEdge, HD GetMaskArea, HD Image Levels, HD Ultimate SD Upscale" - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-SVDResizer", - "id": "svdresizer", - "reference": "https://github.com/ShmuelRonen/ComfyUI-SVDResizer", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-SVDResizer" - ], - "install_type": "git-clone", - "description": "SVDResizer is a helper for resizing the source image, according to the sizes enabled in Stable Video Diffusion. The rationale behind the possibility of changing the size of the image in steps between the ranges of 576 and 1024, is the use of the greatest common denominator of these two numbers which is 64. SVD is lenient with resizing that adheres to this rule, so the chance of coherent video that is not the standard size of 576X1024 is greater. It is advisable to keep the value 1024 constant and play with the second size to maintain the stability of the result." - }, - { - "author": "ShmuelRonen", - "title": "Wav2Lip Node for ComfyUI", - "id": "wav2lip", - "reference": "https://github.com/ShmuelRonen/ComfyUI_wav2lip", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI_wav2lip" - ], - "install_type": "git-clone", - "description": "The Wav2Lip node is a custom node for ComfyUI that allows you to perform lip-syncing on videos using the Wav2Lip model. It takes an input video and an audio file and generates a lip-synced output video." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI_Gemini_Flash", - "id": "gemini-flash", - "reference": "https://github.com/ShmuelRonen/ComfyUI_Gemini_Flash", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI_Gemini_Flash" - ], - "install_type": "git-clone", - "description": "ComfyUI_Gemini_Flash is a custom node for ComfyUI, integrating the capabilities of the Gemini 1.5 Flash model. This node supports text and vision-based prompts, allowing users to analyze and adapt images to text prompts for text2image tasks." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI_pixtral_vision", - "reference": "https://github.com/ShmuelRonen/ComfyUI_pixtral_vision", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI_pixtral_vision" - ], - "install_type": "git-clone", - "description": "The ComfyUI_pixtral_vision is a powerful ComfyUI node designed to integrate seamlessly with the Mistral Pixtral API. It facilitates the analysis of images through deep learning models, interpreting and describing the visual content. Users can input an image directly and provide prompts for context, utilizing an API key for authentication." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-FreeMemory", - "reference": "https://github.com/ShmuelRonen/ComfyUI-FreeMemory", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-FreeMemory" - ], - "install_type": "git-clone", - "description": "ComfyUI-FreeMemory is a custom node extension for ComfyUI that provides advanced memory management capabilities within your image generation workflows. It aims to help prevent out-of-memory errors and optimize resource usage during complex operations." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI Flux 1.1 Ultra & Raw Node", - "reference": "https://github.com/ShmuelRonen/ComfyUI_Flux_1.1_RAW_API", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI_Flux_1.1_RAW_API" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node for Black Forest Labs' FLUX 1.1 [pro] API, supporting both regular and Ultra modes with optional Raw mode." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-AstralAnimator", - "id": "astralanimator", - "reference": "https://github.com/ShmuelRonen/ComfyUI-AstralAnimator", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-AstralAnimator" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that enables smooth, keyframe-based animations for image generation. Create dynamic sequences with control over motion, zoom, rotation, and easing effects. Ideal for AI-assisted animation and video content creation." - }, - { - "author": "ShmuelRonen", - "title": "Apply Style Model Adjust for ComfyUI", - "reference": "https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust" - ], - "install_type": "git-clone", - "description": "A custom node that provides enhanced control over style transfer balance when using FLUX style models in ComfyUI. This node offers better control over the influence of text prompts versus style reference images." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI Pixtral Large Extension", - "reference": "https://github.com/ShmuelRonen/ComfyUI_pixtral_large", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI_pixtral_large" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node that integrates Mistral AI's Pixtral Large vision model, enabling powerful multimodal AI capabilities within ComfyUI. Pixtral Large is a 124B parameter model (123B decoder + 1B visual encoder)" - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI Coherent Video Sampler Node", - "reference": "https://github.com/ShmuelRonen/ComfyUI-CohernetVideoSampler", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-CohernetVideoSampler" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that enables coherent video generation while maintaining efficient memory usage, specifically optimized for heavy models like Flux." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-Gemini_Flash_2.0_Exp", - "reference": "https://github.com/ShmuelRonen/ComfyUI-Gemini_Flash_2.0_Exp", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-Gemini_Flash_2.0_Exp" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node that integrates Google's Gemini Flash 2.0 Experimental model, enabling multimodal analysis of text, images, video frames, and audio directly within ComfyUI workflows." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-ImageMotionGuider", - "reference": "https://github.com/ShmuelRonen/ComfyUI-ImageMotionGuider", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-ImageMotionGuider" - ], - "install_type": "git-clone", - "description": "A custom ComfyUI node designed to create seamless motion effects from single images by integrating with Hunyuan Video through latent space manipulation." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-EmptyHunyuanLatent", - "reference": "https://github.com/ShmuelRonen/ComfyUI-EmptyHunyuanLatent", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-EmptyHunyuanLatent" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI to generate empty latent space compatible with Hunyuan models for both image and video generation." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-HunyuanVideoStyler", - "reference": "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoStyler", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoStyler" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that adds cinematic and movie scene styles to video generation prompts. This node helps create more dynamic and professional-looking video outputs by incorporating iconic movie scene aesthetics." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-LatentSyncWrapper", - "reference": "https://github.com/ShmuelRonen/ComfyUI-LatentSyncWrapper", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-LatentSyncWrapper" - ], - "install_type": "git-clone", - "description": "This node provides lip-sync capabilities in ComfyUI using ByteDance's LatentSync model. It allows you to synchronize video lips with audio input." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-HunyuanVideoSamplerSave", - "reference": "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node implementation for optimized video generation and motion effects, designed to work with Hunyuan text-to-video models." - }, - { - "author": "redhottensors", - "title": "ComfyUI-Prediction", - "id": "prediction", - "reference": "https://github.com/redhottensors/ComfyUI-Prediction", - "files": [ - "https://github.com/redhottensors/ComfyUI-Prediction" - ], - "install_type": "git-clone", - "description": "Fully customizable Classifier Free Guidance for ComfyUI." - }, - { - "author": "Mamaaaamooooo", - "title": "Batch Rembg for ComfyUI", - "id": "batch-rembg", - "reference": "https://github.com/Mamaaaamooooo/batchImg-rembg-ComfyUI-nodes", - "files": [ - "https://github.com/Mamaaaamooooo/batchImg-rembg-ComfyUI-nodes" - ], - "install_type": "git-clone", - "description": "Remove background of plural images." - }, - { - "author": "jordoh", - "title": "ComfyUI Deepface", - "id": "deepface", - "reference": "https://github.com/jordoh/ComfyUI-Deepface", - "files": [ - "https://github.com/jordoh/ComfyUI-Deepface" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes wrapping the [a/deepface](https://github.com/serengil/deepface) library." - }, - { - "author": "al-swaiti", - "title": "ComfyUI-CascadeResolutions", - "id": "cascade-resolution", - "reference": "https://github.com/al-swaiti/ComfyUI-CascadeResolutions", - "files": [ - "https://github.com/al-swaiti/ComfyUI-CascadeResolutions" - ], - "install_type": "git-clone", - "description": "Nodes:Cascade Resolutions" - }, - { - "author": "al-swaiti", - "title": "All-IN-ONE-style", - "id": "all-in-one-style", - "reference": "https://github.com/al-swaiti/All-IN-ONE-style", - "files": [ - "https://github.com/al-swaiti/All-IN-ONE-style" - ], - "install_type": "git-clone", - "description": "all art styles" - }, - { - "author": "al-swaiti", - "title": "GeminiOllama ComfyUI Extension", - "reference": "https://github.com/al-swaiti/ComfyUI-OllamaGemini", - "files": [ - "https://github.com/al-swaiti/ComfyUI-OllamaGemini" - ], - "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": "mirabarukaso", - "title": "ComfyUI_Mira", - "id": "mira", - "reference": "https://github.com/mirabarukaso/ComfyUI_Mira", - "files": [ - "https://github.com/mirabarukaso/ComfyUI_Mira" - ], - "install_type": "git-clone", - "description": "Slice regions of the canvas and convert them to masks for regional conditions widh PNG preview output. And a few support nodes." - }, - { - "author": "1038lab", - "title": "ComfyUI-OmniGen", - "reference": "https://github.com/1038lab/ComfyUI-OmniGen", - "files": [ - "https://github.com/1038lab/ComfyUI-OmniGen" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node implementation of OmniGen" - }, - { - "author": "1038lab", - "title": "ComfyUI-RMBG", - "reference": "https://github.com/1038lab/ComfyUI-RMBG", - "files": [ - "https://github.com/1038lab/ComfyUI-RMBG" - ], - "install_type": "git-clone", - "description": "A ComfyUI node for removing image backgrounds using RMBG-2.0" - }, - { - "author": "1038lab", - "title": "ComfyUI-WildPromptor", - "reference": "https://github.com/1038lab/ComfyUI-WildPromptor", - "files": [ - "https://github.com/1038lab/ComfyUI-WildPromptor" - ], - "install_type": "git-clone", - "description": "Create dynamic prompts with wildcard list." - }, - { - "author": "1038lab", - "title": "ComfyUI-EdgeTTS", - "reference": "https://github.com/1038lab/ComfyUI-EdgeTTS", - "files": [ - "https://github.com/1038lab/ComfyUI-EdgeTTS" - ], - "install_type": "git-clone", - "description": "ComfyUI-EdgeTTS is a powerful text-to-speech node for ComfyUI, leveraging Microsoft's Edge TTS capabilities. It enables seamless conversion of text into natural-sounding speech, supporting multiple languages and voices. Ideal for enhancing user interactions, this node is easy to integrate and customize, making it perfect for various applications." - }, - { - "author": "Klinter", - "title": "Klinter_nodes", - "id": "klinter", - "reference": "https://github.com/klinter007/klinter_nodes", - "files": [ - "https://github.com/klinter007/klinter_nodes" - ], - "install_type": "git-clone", - "description": "Concat_strings atm - celebrating first_node" - }, - { - "author": "Ludobico", - "title": "ComfyUI-ScenarioPrompt", - "id": "scenarioprompt", - "reference": "https://github.com/Ludobico/ComfyUI-ScenarioPrompt", - "files": [ - "https://github.com/Ludobico/ComfyUI-ScenarioPrompt" - ], - "install_type": "git-clone", - "description": "ScenarioPrompt is a custom node that helps you understand what you're prompting for each property as you build your prompts" - }, - { - "author": "logtd", - "title": "InstanceDiffusion Nodes", - "id": "instancediffusion", - "reference": "https://github.com/logtd/ComfyUI-InstanceDiffusion", - "files": [ - "https://github.com/logtd/ComfyUI-InstanceDiffusion" - ], - "install_type": "git-clone", - "description": "A set of nodes to perform multi-object prompting with InstanceDiffusion" - }, - { - "author": "logtd", - "title": "Tracking Nodes for Videos", - "id": "tracking", - "reference": "https://github.com/logtd/ComfyUI-TrackingNodes", - "files": [ - "https://github.com/logtd/ComfyUI-TrackingNodes" - ], - "install_type": "git-clone", - "description": "A set of nodes to track objects through videos using YOLO and other processors." - }, - { - "author": "logtd", - "title": "ComfyUI-InversedNoise", - "id": "inversed-noise", - "reference": "https://github.com/logtd/ComfyUI-InversedNoise", - "files": [ - "https://github.com/logtd/ComfyUI-InversedNoise" - ], - "install_type": "git-clone", - "description": "Nodes:Inversed Euler Sampler, Mix Noise with Latent, Combine Latent Noise" - }, - { - "author": "logtd", - "title": "ComfyUI-RefSampling", - "id": "refsampling", - "reference": "https://github.com/logtd/ComfyUI-RefSampling", - "files": [ - "https://github.com/logtd/ComfyUI-RefSampling" - ], - "install_type": "git-clone", - "description": "Nodes:Apply Ref UNet, Ref Sampler, Ref Sampler Custom" - }, - { - "author": "logtd", - "title": "ComfyUI-FLATTEN", - "id": "flatten", - "reference": "https://github.com/logtd/ComfyUI-FLATTEN", - "files": [ - "https://github.com/logtd/ComfyUI-FLATTEN" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use [a/FLATTEN: optical FLow-guided ATTENtion for consistent text-to-video editing](https://github.com/yrcong/flatten)." - }, - { - "author": "logtd", - "title": "ComfyUI-RAVE Attention", - "id": "rave-attn", - "reference": "https://github.com/logtd/ComfyUI-RAVE_ATTN", - "files": [ - "https://github.com/logtd/ComfyUI-RAVE_ATTN" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use RAVE attention as a temporal attention mechanism.\nThis differs from other implementations in that it does not concatenate the images together, but within the UNet's Self-Attention mechanism performs the RAVE technique. By not altering the images/latents throughout the UNet, this method does not affect other temporal techniques, style mechanisms, or other UNet modifications.\nFor example, it can be combined with AnimateDiff, ModelScope/ZeroScope, or FLATTEN." - }, - { - "author": "logtd", - "title": "ComfyUI-RefUNet", - "id": "refunet", - "reference": "https://github.com/logtd/ComfyUI-RefUNet", - "files": [ - "https://github.com/logtd/ComfyUI-RefUNet" - ], - "install_type": "git-clone", - "description": "A set of nodes to use Reference UNets" - }, - { - "author": "logtd", - "title": "ComfyUI-SEGAttention", - "id": "segattention", - "reference": "https://github.com/logtd/ComfyUI-SEGAttention", - "files": [ - "https://github.com/logtd/ComfyUI-SEGAttention" - ], - "install_type": "git-clone", - "description": "Nodes to use [a/Smoothed Energy Guidance](https://github.com/SusungHong/SEG-SDXL) for ComfyUI." - }, - { - "author": "logtd", - "title": "ComfyUI-SSREncoder", - "id": "ssrencoder", - "reference": "https://github.com/logtd/ComfyUI-SSREncoder", - "files": [ - "https://github.com/logtd/ComfyUI-SSREncoder" - ], - "install_type": "git-clone", - "description": "ComfyUI Nodes to use [a/SSR Encoder:Encoding Selective Subject Representation for Subject-Driven Generation](https://github.com/Xiaojiu-z/SSR_Encoder)." - }, - { - "author": "logtd", - "title": "ComfyUI-SeeCoder", - "id": "seecoder-logtd", - "reference": "https://github.com/logtd/ComfyUI-SeeCoder", - "files": [ - "https://github.com/logtd/ComfyUI-SeeCoder" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use the SeeCoder from [a/Prompt-Free-Diffusion](https://github.com/SHI-Labs/Prompt-Free-Diffusion)" - }, - { - "author": "logtd", - "title": "ComfyUI-4DHumans", - "id": "comfyui-4dhumans", - "reference": "https://github.com/logtd/ComfyUI-4DHumans", - "files": [ - "https://github.com/logtd/ComfyUI-4DHumans" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use [a/4D-Humans](ComfyUI nodes to use 4D-Humans)" - }, - { - "author": "logtd", - "title": "ComfyUI-ReNoise", - "reference": "https://github.com/logtd/ComfyUI-ReNoise", - "files": [ - "https://github.com/logtd/ComfyUI-ReNoise" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use ReNoise" - }, - { - "author": "logtd", - "title": "ComfyUI-MotionThiefExperiment", - "reference": "https://github.com/logtd/ComfyUI-MotionThiefExperiment", - "files": [ - "https://github.com/logtd/ComfyUI-MotionThiefExperiment" - ], - "install_type": "git-clone", - "description": "experimental node pack to test using reference videos for their motion." - }, - { - "author": "logtd", - "title": "ComfyUI-DiLightNet", - "reference": "https://github.com/logtd/ComfyUI-DiLightNet", - "files": [ - "https://github.com/logtd/ComfyUI-DiLightNet" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use [a/DiLightNet](https://github.com/iamNCJ/DiLightNet).\nThese nodes can run DiLightNet, but the Dust3r or BlenderPy implementations to create lighting are not included. Expect those to be added to seperate repos when time allows." - }, - { - "author": "logtd", - "title": "ComfyUI-ViewCrafter", - "reference": "https://github.com/logtd/ComfyUI-ViewCrafter", - "files": [ - "https://github.com/logtd/ComfyUI-ViewCrafter" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use [a/ViewCrafter](https://github.com/Drexubery/ViewCrafter/tree/main) for novel view synthesis." - }, - { - "author": "logtd", - "title": "ComfyUI-APGScaling", - "reference": "https://github.com/logtd/ComfyUI-APGScaling", - "files": [ - "https://github.com/logtd/ComfyUI-APGScaling" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use [a/APG scaling](https://huggingface.co/papers/2410.02416) for CFG, allowing for better image quality with higher CFG." - }, - { - "author": "logtd", - "title": "ComfyUI-Fluxtapoz", - "reference": "https://github.com/logtd/ComfyUI-Fluxtapoz", - "files": [ - "https://github.com/logtd/ComfyUI-Fluxtapoz" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for image editing with Flux, such as RF-Inversion and more" - }, - { - "author": "logtd", - "title": "ComfyUI-MochiEdit", - "reference": "https://github.com/logtd/ComfyUI-MochiEdit", - "files": [ - "https://github.com/logtd/ComfyUI-MochiEdit" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to edit videos using Genmo Mochi" - }, - { - "author": "logtd", - "title": "ComfyUI-LTXTricks", - "reference": "https://github.com/logtd/ComfyUI-LTXTricks", - "files": [ - "https://github.com/logtd/ComfyUI-LTXTricks" - ], - "install_type": "git-clone", - "description": "A set of nodes that provide additional controls for the LTX Video model" - }, - { - "author": "Big-Idea-Technology", - "title": "ComfyUI-Book-Tools Nodes for ComfyUI", - "id": "booktool", - "reference": "https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools", - "files": [ - "https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools" - ], - "install_type": "git-clone", - "description": "ComfyUI-Book-Tools is a set o new nodes for ComfyUI that allows users to easily add text overlays to images within their ComfyUI projects. This Node leverages Python Imaging Library (PIL) and PyTorch to dynamically render text on images, supporting a wide range of customization options including font size, alignment, color, and padding. Loop with any parameters (*), prompt batch schedule with prompt selector, end queue for automatic ending current queue." - }, - { - "author": "Big Idea Technology", - "title": "LLM Node for ComfyUI", - "reference": "https://github.com/Big-Idea-Technology/ComfyUI_LLM_Node", - "files": [ - "https://github.com/Big-Idea-Technology/ComfyUI_LLM_Node" - ], - "install_type": "git-clone", - "description": "The LLM_Node enhances ComfyUI by integrating advanced language model capabilities, enabling a wide range of NLP tasks such as text generation, content summarization, question answering, and more. This flexibility is powered by various transformer model architectures from the transformers library, allowing for the deployment of models like T5, GPT-2, and others based on your project's needs." - }, - { - "author": "Guillaume-Fgt", - "title": "ComfyUI_StableCascadeLatentRatio", - "id": "cascade-latent-ratio", - "reference": "https://github.com/Guillaume-Fgt/ComfyUI_StableCascadeLatentRatio", - "files": [ - "https://github.com/Guillaume-Fgt/ComfyUI_StableCascadeLatentRatio" - ], - "install_type": "git-clone", - "description": "A custom node to create empty latents for Stable Cascade.\nfeatures: width and height incrementation of 64 by default, possibility to lock the aspect ratio, switch width/height at execution" - }, - { - "author": "AuroBit", - "title": "ComfyUI OOTDiffusion", - "id": "ootdiffusion", - "reference": "https://github.com/AuroBit/ComfyUI-OOTDiffusion", - "files": [ - "https://github.com/AuroBit/ComfyUI-OOTDiffusion" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node that simply integrates the [a/OOTDiffusion](https://github.com/levihsu/OOTDiffusion) functionality." - }, - { - "author": "AuroBit", - "title": "ComfyUI-AnimateAnyone-reproduction", - "id": "animateanyone-reproduction", - "reference": "https://github.com/AuroBit/ComfyUI-AnimateAnyone-reproduction", - "files": [ - "https://github.com/AuroBit/ComfyUI-AnimateAnyone-reproduction" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node that simply integrates the [a/animate-anyone-reproduction](https://github.com/bendanzzc/AnimateAnyone-reproduction) functionality." - }, - { - "author": "czcz1024", - "title": "Face Compare", - "id": "facecompare", - "reference": "https://github.com/czcz1024/Comfyui-FaceCompare", - "files": [ - "https://github.com/czcz1024/Comfyui-FaceCompare" - ], - "install_type": "git-clone", - "description": "Nodes:FaceCompare" - }, - { - "author": "TheBill2001", - "title": "comfyui-upscale-by-model", - "reference": "https://github.com/TheBill2001/comfyui-upscale-by-model", - "files": [ - "https://github.com/TheBill2001/comfyui-upscale-by-model" - ], - "install_type": "git-clone", - "description": "This custom node allow upscaling an image by a factor using a model." - }, - { - "author": "TheBill2001", - "title": "Save Images with Captions", - "reference": "https://github.com/TheBill2001/ComfyUI-Save-Image-Caption", - "files": [ - "https://github.com/TheBill2001/ComfyUI-Save-Image-Caption" - ], - "install_type": "git-clone", - "description": "Provide two custom nodes to load and save images with captions as separate files." - }, - { - "author": "leoleelxh", - "title": "ComfyUI-LLMs", - "reference": "https://github.com/leoleelxh/ComfyUI-LLMs", - "files": [ - "https://github.com/leoleelxh/ComfyUI-LLMs" - ], - "install_type": "git-clone", - "description": "A minimalist node that calls LLMs, combined with one API, can call all language models, including local models." - }, - { - "author": "hughescr", - "title": "OpenPose Keypoint Extractor", - "reference": "https://github.com/hughescr/ComfyUI-OpenPose-Keypoint-Extractor", - "files": [ - "https://github.com/hughescr/ComfyUI-OpenPose-Keypoint-Extractor" - ], - "install_type": "git-clone", - "description": "This is a single node which can take the POSE_KEYPOINT output from the OpenPose extractor node, parse it, and return x,y,width,height bounding boxes around any elements of the OpenPose skeleton" - }, - { - "author": "jkrauss82", - "title": "ULTools for ComfyUI", - "reference": "https://github.com/jkrauss82/ultools-comfyui", - "files": [ - "https://github.com/jkrauss82/ultools-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:SaveImgAdv, CLIPTextEncodeWithStats. Collection of tools supporting txt2img generation in ComfyUI and other tasks." - }, - { - "author": "hiforce", - "title": "Comfyui HiFORCE Plugin", - "reference": "https://github.com/hiforce/comfyui-hiforce-plugin", - "files": [ - "https://github.com/hiforce/comfyui-hiforce-plugin" - ], - "install_type": "git-clone", - "description": "Custom nodes pack provided by [a/HiFORCE](https://www.hiforce.net/) for ComfyUI. This custom node helps to conveniently enhance images through Sampler, Upscaler, Mask, and more.\nNOTE:You should install [a/ComfyUI-Impact-Pack](https://github.com/ltdrdata/ComfyUI-Impact-Pack). Many optimizations are built upon the foundation of ComfyUI-Impact-Pack." - }, - { - "author": "kuschanow", - "title": "Advanced Latent Control", - "reference": "https://github.com/RomanKuschanow/ComfyUI-Advanced-Latent-Control", - "files": [ - "https://github.com/RomanKuschanow/ComfyUI-Advanced-Latent-Control" - ], - "install_type": "git-clone", - "description": "This custom node helps to transform latent in different ways." - }, - { - "author": "guill", - "title": "abracadabra-comfyui", - "reference": "https://github.com/guill/abracadabra-comfyui", - "files": [ - "https://github.com/guill/abracadabra-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:Abracadabra Summary, Abracadabra" - }, - { - "author": "cerspense", - "title": "cspnodes", - "reference": "https://github.com/cerspense/ComfyUI_cspnodes", - "files": [ - "https://github.com/cerspense/ComfyUI_cspnodes" - ], - "install_type": "git-clone", - "description": "Nodes:Image Dir Iterator, Modelscopet2v, Modelscopev2v, Vid Dir Iterator, Image Dir Iterator, Text File Line Iterator, Remap Range, Split Image Channels, Resize By Image, Increment Every N." - }, - { - "author": "qwixiwp", - "title": "queuetools", - "reference": "https://github.com/qwixiwp/queuetools", - "files": [ - "https://github.com/qwixiwp/queuetools" - ], - "install_type": "git-clone", - "description": "Nodes:load images (queue tools). tools made for queueing in comfyUI" - }, - { - "author": "Chan-0312", - "title": "ComfyUI-Prompt-Preview", - "reference": "https://github.com/Chan-0312/ComfyUI-Prompt-Preview", - "files": [ - "https://github.com/Chan-0312/ComfyUI-Prompt-Preview" - ], - "install_type": "git-clone", - "description": "Welcome to ComfyUI Prompt Preview, where you can visualize the styles from [sdxl_prompt_styler](https://github.com/twri/sdxl_prompt_styler)." - }, - { - "author": "munkyfoot", - "title": "ComfyUI-TextOverlay", - "id": "textoverlay-munkyfoot", - "reference": "https://github.com/Munkyfoot/ComfyUI-TextOverlay", - "files": [ - "https://github.com/Munkyfoot/ComfyUI-TextOverlay" - ], - "install_type": "git-clone", - "description": "This extension provides a node that allows you to overlay text on an image or a batch of images with support for custom fonts and styles." - }, - { - "author": "holchan", - "title": "ComfyUI-ModelDownloader", - "reference": "https://github.com/holchan/ComfyUI-ModelDownloader", - "files": [ - "https://github.com/holchan/ComfyUI-ModelDownloader" - ], - "install_type": "git-clone", - "description": "A ComfyUI node to download models(Checkpoints and LoRA) from external links and act as an output standalone node." - }, - { - "author": "CC-BryanOttho", - "title": "ComfyUI_API_Manager", - "reference": "https://github.com/CC-BryanOttho/ComfyUI_API_Manager", - "files": [ - "https://github.com/CC-BryanOttho/ComfyUI_API_Manager" - ], - "install_type": "git-clone", - "description": "This package provides three custom nodes designed to streamline workflows involving API requests, dynamic text manipulation based on API responses, and image posting to APIs. These nodes are particularly useful for automating interactions with APIs, enhancing text-based workflows with dynamic data, and facilitating image uploads." - }, - { - "author": "maracman", - "title": "ComfyUI-SubjectStyle-CSV", - "reference": "https://github.com/maracman/ComfyUI-SubjectStyle-CSV", - "files": [ - "https://github.com/maracman/ComfyUI-SubjectStyle-CSV" - ], - "install_type": "git-clone", - "description": "Store a CSV of prompts where the style can change for each subject. The CSV node initialises with the column (style) and row (subject) names for easy interpretability." - }, - { - "author": "438443467", - "title": "ComfyUI-GPT4V-Image-Captioner", - "reference": "https://github.com/438443467/ComfyUI-GPT4V-Image-Captioner", - "files": [ - "https://github.com/438443467/ComfyUI-GPT4V-Image-Captioner" - ], - "install_type": "git-clone", - "description": "Nodes:GPT4V-Image-Captioner" - }, - { - "author": "uetuluk", - "title": "comfyui-webcam-node", - "id": "webcam", - "reference": "https://github.com/uetuluk/comfyui-webcam-node", - "files": [ - "https://github.com/uetuluk/comfyui-webcam-node" - ], - "install_type": "git-clone", - "description": "Nodes:Webcam Capture" - }, - { - "author": "huchenlei", - "title": "ComfyUI-layerdiffuse (layerdiffusion)", - "id": "layerdiffuse", - "reference": "https://github.com/huchenlei/ComfyUI-layerdiffuse", - "files": [ - "https://github.com/huchenlei/ComfyUI-layerdiffuse" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation of [a/LayerDiffusion](https://github.com/layerdiffusion/LayerDiffusion)." - }, - { - "author": "huchenlei", - "title": "ComfyUI_DanTagGen", - "id": "dantangen", - "reference": "https://github.com/huchenlei/ComfyUI_DanTagGen", - "files": [ - "https://github.com/huchenlei/ComfyUI_DanTagGen" - ], - "install_type": "git-clone", - "description": "ComfyUI node of [a/Kohaku's DanTagGen Demo](https://huggingface.co/KBlueLeaf/DanTagGen?not-for-all-audiences=true)." - }, - { - "author": "huchenlei", - "title": "ComfyUI-openpose-editor", - "reference": "https://github.com/huchenlei/ComfyUI-openpose-editor", - "files": [ - "https://github.com/huchenlei/ComfyUI-openpose-editor" - ], - "install_type": "git-clone", - "description": "Port of [a/https://github.com/huchenlei/sd-webui-openpose-editor](https://github.com/huchenlei/sd-webui-openpose-editor) in ComfyUI" - }, - { - "author": "huchenlei", - "title": "ComfyUI-IC-Light-Native", - "id": "ic-light-native", - "reference": "https://github.com/huchenlei/ComfyUI-IC-Light-Native", - "files": [ - "https://github.com/huchenlei/ComfyUI-IC-Light-Native" - ], - "install_type": "git-clone", - "description": "ComfyUI native implementation of [a/IC-Light](https://github.com/lllyasviel/IC-Light)." - }, - { - "author": "huchenlei", - "title": "ComfyUI DenseDiffusion", - "id": "densediffusion", - "reference": "https://github.com/huchenlei/ComfyUI_densediffusion", - "files": [ - "https://github.com/huchenlei/ComfyUI_densediffusion" - ], - "install_type": "git-clone", - "description": "[a/DenseDiffusion](https://github.com/naver-ai/DenseDiffusion) custom node for ComfyUI." - }, - { - "author": "huchenlei", - "title": "ComfyUI_omost", - "id": "omost", - "reference": "https://github.com/huchenlei/ComfyUI_omost", - "files": [ - "https://github.com/huchenlei/ComfyUI_omost" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation of [a/Omost](https://github.com/lllyasviel/Omost), and everything about regional prompt.\nNOTE: You need to install ComfyUI_densediffusion to use this node." - }, - { - "author": "nathannlu", - "title": "ComfyUI Pets", - "id": "pets", - "reference": "https://github.com/nathannlu/ComfyUI-Pets", - "files": [ - "https://github.com/nathannlu/ComfyUI-Pets" - ], - "install_type": "git-clone", - "description": "Play with your pet while your workflow generates!" - }, - { - "author": "nathannlu", - "title": "Comfy Cloud", - "id": "cloud", - "reference": "https://github.com/nathannlu/ComfyUI-Cloud", - "files": [ - "https://github.com/nathannlu/ComfyUI-Cloud" - ], - "install_type": "git-clone", - "description": "Run your workflow using cloud GPU resources, from your local ComfyUI.\nNOTE:After you first install the plugin...\nThe first time you click 'generate', you will be prompted to log into your account.Subsequent generations after the first is faster (the first run it takes a while to process your workflow). Once those two steps have been completed, you will be able to seamlessly generate your workflow on the cloud!" - }, - { - "author": "11dogzi", - "title": "Comfyui-ergouzi-Nodes", - "id": "ergouzi-nodes", - "reference": "https://github.com/11dogzi/Comfyui-ergouzi-Nodes", - "files": [ - "https://github.com/11dogzi/Comfyui-ergouzi-Nodes" - ], - "install_type": "git-clone", - "description": "This is a node group kit that covers multiple nodes such as local refinement, tag management, random prompt words, text processing, image processing, mask processing, etc" - }, - { - "author": "11dogzi", - "title": "Comfyui-ergouzi-samplers", - "id": "ergouzi-samplers", - "reference": "https://github.com/11dogzi/Comfyui-ergouzi-samplers", - "files": [ - "https://github.com/11dogzi/Comfyui-ergouzi-samplers" - ], - "install_type": "git-clone", - "description": "Partial redraw sampler and variant seed sampler" - }, - { - "author": "11dogzi", - "title": "Comfyui-ergouzi-kaiguan", - "id": "ergouzi-kaiguan", - "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": "11dogzi", - "title": "ComfUI-EGAdapterMadAssistant", - "id": "madassistant", - "reference": "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant", - "files": [ - "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant" - ], - "install_type": "git-clone", - "description": "This is a hierarchical auxiliary project of the IPAdapter project, which uses a slider to quickly control the hierarchical weights and add fully random and semi random modes" - }, - { - "author": "BXYMartin", - "title": "ComfyUI-InstantIDUtils", - "id": "instantid-utils", - "reference": "https://github.com/BXYMartin/ComfyUI-InstantIDUtils", - "files": [ - "https://github.com/BXYMartin/ComfyUI-InstantIDUtils" - ], - "install_type": "git-clone", - "description": "Nodes:Multi-ControlNet Converter, List of Images, Convert PIL to Tensor (NHWC), Convert Tensor (NHWC) to (NCHW), Convert Tensor (NHWC) to PIL" - }, - { - "author": "cdb-boop", - "title": "comfyui-image-round", - "id": "image-round", - "reference": "https://github.com/cdb-boop/comfyui-image-round", - "files": [ - "https://github.com/cdb-boop/comfyui-image-round" - ], - "install_type": "git-clone", - "description": "A simple node to round an input image up (pad) or down (crop) to the nearest integer multiple. Padding offset from left/bottom and the padding value are adjustable." - }, - { - "author": "cdb-boop", - "title": "ComfyUI Bringing Old Photos Back to Life", - "reference": "https://github.com/cdb-boop/ComfyUI-Bringing-Old-Photos-Back-to-Life", - "files": [ - "https://github.com/cdb-boop/ComfyUI-Bringing-Old-Photos-Back-to-Life" - ], - "install_type": "git-clone", - "description": "Enhance old or low-quality images in ComfyUI. Optional features include automatic scratch removal and face enhancement. Based on Microsoft's Bringing-Old-Photos-Back-to-Life. Requires installing models, so see instructions here: https://github.com/cdb-boop/ComfyUI-Bringing-Old-Photos-Back-to-Life." - }, - { - "author": "atmaranto", - "title": "SaveAsScript", - "id": "saveasscript", - "reference": "https://github.com/atmaranto/ComfyUI-SaveAsScript", - "files": [ - "https://github.com/atmaranto/ComfyUI-SaveAsScript" - ], - "install_type": "git-clone", - "description": "A version of ComfyUI-to-Python-Extension that works as a custom node. Adds a button in the UI that saves the current workflow as a Python file, a CLI for converting workflows, and slightly better custom node support." - }, - { - "author": "meshmesh-io", - "title": "mm-comfyui-megamask", - "id": "megamask", - "reference": "https://github.com/meshmesh-io/mm-comfyui-megamask", - "files": [ - "https://github.com/meshmesh-io/mm-comfyui-megamask" - ], - "install_type": "git-clone", - "description": "Nodes:ColorListMaskToImage, FlattenAndCombineMaskImages" - }, - { - "author": "meshmesh-io", - "title": "mm-comfyui-loopback", - "id": "mm-loopback", - "reference": "https://github.com/meshmesh-io/mm-comfyui-loopback", - "files": [ - "https://github.com/meshmesh-io/mm-comfyui-loopback" - ], - "install_type": "git-clone", - "description": "Nodes:Loop, LoopStart, LoopEnd, LoopStart_SEGIMAGE, LoopEnd_SEGIMAGE" - }, - { - "author": "meshmesh-io", - "title": "ComfyUI-MeshMesh", - "id": "meshmesh", - "reference": "https://github.com/meshmesh-io/ComfyUI-MeshMesh", - "files": [ - "https://github.com/meshmesh-io/ComfyUI-MeshMesh" - ], - "install_type": "git-clone", - "description": "Nodes:Masks to Colored Masks, Color Picker" - }, - { - "author": "CozyMantis", - "title": "Cozy Human Parser", - "id": "humanparser", - "reference": "https://github.com/cozymantis/human-parser-comfyui-node", - "files": [ - "https://github.com/cozymantis/human-parser-comfyui-node" - ], - "install_type": "git-clone", - "description": "A ComfyUI node to automatically extract masks for body regions and clothing/fashion items. Made with 💚 by the CozyMantis squad." - }, - { - "author": "CozyMantis", - "title": "Cozy Reference Pose Generator", - "id": "posegen", - "reference": "https://github.com/cozymantis/pose-generator-comfyui-node", - "files": [ - "https://github.com/cozymantis/pose-generator-comfyui-node" - ], - "install_type": "git-clone", - "description": "Generate OpenPose face/body reference poses in ComfyUI with ease. Made with 💚 by the CozyMantis squad." - }, - { - "author": "CozyMantis", - "title": "Cozy Utils", - "id": "cozy-utils", - "reference": "https://github.com/cozymantis/cozy-utils-comfyui-nodes", - "files": [ - "https://github.com/cozymantis/cozy-utils-comfyui-nodes" - ], - "install_type": "git-clone", - "description": "Various cozy nodes, made with 💚 by the CozyMantis squad." - }, - { - "author": "vivax3794", - "title": "ComfyUI-Vivax-Nodes", - "reference": "https://github.com/vivax3794/ComfyUI-Vivax-Nodes", - "files": [ - "https://github.com/vivax3794/ComfyUI-Vivax-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Inspect, Any String, Model From URL" - }, - { - "author": "vivax3794", - "title": "ComfyUI-Sub-Nodes", - "reference": "https://github.com/vivax3794/ComfyUI-Sub-Nodes", - "files": [ - "https://github.com/vivax3794/ComfyUI-Sub-Nodes" - ], - "install_type": "git-clone", - "description": "Creating subgraph and Calling subgraphs." - }, - { - "author": "victorchall", - "title": "Comfyui Webcam capture node", - "reference": "https://github.com/victorchall/comfyui_webcamcapture", - "files": [ - "https://github.com/victorchall/comfyui_webcamcapture" - ], - "install_type": "git-clone", - "description": "This node captures images one at a time from your webcam when you click generate.\nThis is particular useful for img2img or controlnet workflows.\nNOTE:This node will take over your webcam, so if you have another program using it, you may need to close that program first. Likewise, you may need to close Comfyui or close the workflow to release the webcam." - }, - { - "author": "ljleb", - "title": "Mecha Merge Node Pack", - "id": "mecha", - "reference": "https://github.com/ljleb/comfy-mecha", - "files": [ - "https://github.com/ljleb/comfy-mecha" - ], - "install_type": "git-clone", - "description": "model merging nodes powered by sd-mecha, a memory efficient state dict recipe merger." - }, - { - "author": "diSty", - "title": "ComfyUI Frame Maker", - "id": "frame-maker", - "reference": "https://github.com/diStyApps/ComfyUI_FrameMaker", - "files": [ - "https://github.com/diStyApps/ComfyUI_FrameMaker" - ], - "install_type": "git-clone", - "description": "This node creates a sequence of frames by moving and scaling a subject image over a background image." - }, - { - "author": "diSty", - "title": "Flow - Streamlined Way to ComfyUI", - "reference": "https://github.com/diStyApps/ComfyUI-disty-Flow", - "files": [ - "https://github.com/diStyApps/ComfyUI-disty-Flow" - ], - "install_type": "git-clone", - "description": "Flow is a custom node designed to provide a more user-friendly interface for ComfyUI by acting as an alternative user interface for running workflows. It is not a replacement for workflow creation.\nFlow is currently in the early stages of development, so expect bugs and ongoing feature enhancements. With your support and feedback, Flow will settle into a steady stream." - }, - { - "author": "hackkhai", - "title": "ComfyUI-Image-Matting", - "id": "image-matting", - "reference": "https://github.com/hackkhai/ComfyUI-Image-Matting", - "files": [ - "https://github.com/hackkhai/ComfyUI-Image-Matting" - ], - "install_type": "git-clone", - "description": "This node improves the quality of the image mask. more suitable for image composite matting" - }, - { - "author": "ExponentialML", - "title": "ComfyUI_ModelScopeT2V", - "id": "modelscopet2v", - "reference": "https://github.com/ExponentialML/ComfyUI_ModelScopeT2V", - "files": [ - "https://github.com/ExponentialML/ComfyUI_ModelScopeT2V" - ], - "install_type": "git-clone", - "description": "Allows native usage of ModelScope based Text To Video Models in ComfyUI" - }, - { - "author": "ExponentialML", - "title": "ComfyUI - Native DynamiCrafter", - "id": "dynamicrafter", - "reference": "https://github.com/ExponentialML/ComfyUI_Native_DynamiCrafter", - "files": [ - "https://github.com/ExponentialML/ComfyUI_Native_DynamiCrafter" - ], - "install_type": "git-clone", - "description": "DynamiCrafter that works natively with ComfyUI's nodes, optimizations, ControlNet, and more." - }, - { - "author": "ExponentialML", - "title": "ComfyUI_VisualStylePrompting", - "id": "visual-style-prompting", - "reference": "https://github.com/ExponentialML/ComfyUI_VisualStylePrompting", - "files": [ - "https://github.com/ExponentialML/ComfyUI_VisualStylePrompting" - ], - "install_type": "git-clone", - "description": "ComfyUI Version of '[a/Visual Style Prompting with Swapping Self-Attention](https://github.com/naver-ai/Visual-Style-Prompting)'" - }, - { - "author": "angeloshredder", - "title": "StableCascadeResizer", - "reference": "https://github.com/angeloshredder/StableCascadeResizer", - "files": [ - "https://github.com/angeloshredder/StableCascadeResizer" - ], - "install_type": "git-clone", - "description": "Nodes:Cascade_Resizer" - }, - { - "author": "stavsap", - "title": "ComfyUI Ollama", - "id": "ollama", - "reference": "https://github.com/stavsap/comfyui-ollama", - "files": [ - "https://github.com/stavsap/comfyui-ollama" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI Nodes for interacting with [a/Ollama](https://ollama.com/) using the [a/ollama python client](https://github.com/ollama/ollama-python).\nIntegrate the power of LLMs into CompfyUI workflows easily." - }, - { - "author": "stavsap", - "title": "comfyui-kokoro", - "reference": "https://github.com/stavsap/comfyui-kokoro", - "files": [ - "https://github.com/stavsap/comfyui-kokoro" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI Nodes for TTS with Kokoro, genenrate and merge speakers for new style generations." - }, - { - "author": "dchatel", - "title": "comfyui_davcha", - "reference": "https://github.com/dchatel/comfyui_davcha", - "files": [ - "https://github.com/dchatel/comfyui_davcha" - ], - "install_type": "git-clone", - "description": "Nodes:SmartMask, ResizeCropFit, Percent Padding, SoftErosion, StringScheduleHelper, DStack, DavchaConditioningConcat, DavchaModelMergeSimple, DavchaCLIPMergeSimple, DavchaModelMergeSD1, DavchaModelMergeSDXL, ConditioningCompress... Some personal QoL and experimental nodes" - }, - { - "author": "dchatel", - "title": "comfyui_facetools", - "id": "facetools", - "reference": "https://github.com/dchatel/comfyui_facetools", - "files": [ - "https://github.com/dchatel/comfyui_facetools" - ], - "install_type": "git-clone", - "description": "These custom nodes provide a rotation aware face extraction, paste back, and various face related masking options." - }, - { - "author": "prodogape", - "title": "Comfyui-Minio", - "id": "minio", - "reference": "https://github.com/prodogape/ComfyUI-Minio", - "files": [ - "https://github.com/prodogape/ComfyUI-Minio" - ], - "install_type": "git-clone", - "description": "This plugin is mainly based on Minio, implementing the ability to read images from Minio, save images, facilitating expansion and connection across multiple machines." - }, - { - "author": "prodogape", - "title": "ComfyUI-EasyOCR", - "id": "easyocr", - "reference": "https://github.com/prodogape/ComfyUI-EasyOCR", - "files": [ - "https://github.com/prodogape/ComfyUI-EasyOCR" - ], - "install_type": "git-clone", - "description": "This node is primarily based on Easy-OCR to implement OCR text recognition functionality." - }, - { - "author": "prodogape", - "title": "ComfyUI-OmDet", - "id": "omdet", - "reference": "https://github.com/prodogape/ComfyUI-OmDet", - "files": [ - "https://github.com/prodogape/ComfyUI-OmDet" - ], - "install_type": "git-clone", - "description": "This node is mainly based on [a/OmDet](https://github.com/om-ai-lab/OmDet) for object detection, and it outputs related images, masks, and Labelme JSON information." - }, - { - "author": "prodogape", - "title": "Comfyui-Yolov8-JSON", - "reference": "https://github.com/prodogape/Comfyui-Yolov8-JSON", - "files": [ - "https://github.com/prodogape/Comfyui-Yolov8-JSON" - ], - "install_type": "git-clone", - "description": "This node is mainly based on the Yolov8 model for object detection, and it outputs related images, masks, and JSON information.[w/Repository url is changed. Please remove previous one and reinstall.]" - }, - { - "author": "kingzcheung", - "title": "ComfyUI_kkTranslator_nodes", - "id": "kktranslator", - "reference": "https://github.com/AIGCTeam/ComfyUI_kkTranslator_nodes", - "files": [ - "https://github.com/AIGCTeam/ComfyUI_kkTranslator_nodes" - ], - "install_type": "git-clone", - "description": "These nodes are mainly used to translate prompt words from other languages into English. PromptTranslateToText implements prompt word translation based on Helsinki NLP translation model.It doesn't require internet connection。" - }, - { - "author": "vsevolod-oparin", - "title": "Kandinsky 2.2 ComfyUI Plugin", - "id": "kandinsky", - "reference": "https://github.com/vsevolod-oparin/comfyui-kandinsky22", - "files": [ - "https://github.com/vsevolod-oparin/comfyui-kandinsky22" - ], - "install_type": "git-clone", - "description": "Nodes provide an options to combine prior and decoder models of Kandinsky 2.2." - }, - { - "author": "Xyem", - "title": "Xycuno Oobabooga", - "id": "xycuno-oobabooga", - "reference": "https://github.com/Xyem/Xycuno-Oobabooga", - "files": [ - "https://github.com/Xyem/Xycuno-Oobabooga" - ], - "install_type": "git-clone", - "description": "Xycuno Oobabooga provides custom nodes for ComfyUI, for sending requests to an [a/Oobabooga](https://github.com/oobabooga/text-generation-webui) instance to assist in creating prompt texts." - }, - { - "author": "shi3z", - "title": "ComfyUI_Memeplex_DALLE", - "id": "memeplex-dalle", - "reference": "https://github.com/shi3z/ComfyUI_Memeplex_DALLE", - "files": [ - "https://github.com/shi3z/ComfyUI_Memeplex_DALLE" - ], - "install_type": "git-clone", - "description": "You can use memeplex and DALL-E thru ComfyUI. You need API keys." - }, - { - "author": "if-ai", - "title": "ComfyUI-IF_AI_tools", - "id": "if-ai-tools", - "reference": "https://github.com/if-ai/ComfyUI-IF_AI_tools", - "files": [ - "https://github.com/if-ai/ComfyUI-IF_AI_tools" - ], - "install_type": "git-clone", - "description": "Various AI tools to use in Comfy UI. Starting with VL and prompt making tools using Ollma as backend will evolve as I find time." - }, - { - "author": "if-ai", - "title": "ComfyUI-IF_AI_WishperSpeechNode", - "id": "if-ai-whisper-speech", - "reference": "https://github.com/if-ai/ComfyUI-IF_AI_WishperSpeechNode", - "files": [ - "https://github.com/if-ai/ComfyUI-IF_AI_WishperSpeechNode" - ], - "install_type": "git-clone", - "description": "This repository hosts a Text-to-Speech (TTS) application that leverages Whisper Speech for voice synthesis, allowing users to train a voice model on-the-fly. It is built on ComfyUI and supports rapid training and inference processes." - }, - { - "author": "if-ai", - "title": "ComfyUI-IF_AI_HFDownloaderNode", - "id": "if-ai-hfdownloader", - "reference": "https://github.com/if-ai/ComfyUI-IF_AI_HFDownloaderNode", - "files": [ - "https://github.com/if-ai/ComfyUI-IF_AI_HFDownloaderNode" - ], - "install_type": "git-clone", - "description": "Talking avatars Heads for the IF_AI tools integrates dreamtalk in ComfyUI" - }, - { - "author": "if-ai", - "title": "ComfyUI-IF_MemoAvatar", - "reference": "https://github.com/if-ai/ComfyUI-IF_MemoAvatar", - "files": [ - "https://github.com/if-ai/ComfyUI-IF_MemoAvatar" - ], - "install_type": "git-clone", - "description": "ComfyUI MemoAvatar is a talking head avatar generator using Memory-Guided Diffusion for Expressive Talking Video Generation" - }, - { - "author": "if-ai", - "title": "ComfyUI-IF_Trellis", - "reference": "https://github.com/if-ai/ComfyUI-IF_Trellis", - "files": [ - "https://github.com/if-ai/ComfyUI-IF_Trellis" - ], - "install_type": "git-clone", - "description": "ComfyUI TRELLIS is a large 3D asset generation in various formats, such as Radiance Fields, 3D Gaussians, and meshes. The cornerstone of TRELLIS is a unified Structured LATent (SLAT) representation that allows decoding to different output formats and Rectified Flow Transformers tailored for SLAT as the powerful backbones." - }, - { - "author": "dmMaze", - "title": "Sketch2Manga", - "id": "sketch2manga", - "reference": "https://github.com/dmMaze/sketch2manga", - "files": [ - "https://github.com/dmMaze/sketch2manga" - ], - "install_type": "git-clone", - "description": "Apply screentone to line drawings or colored illustrations with diffusion models." - }, - { - "author": "olduvai-jp", - "title": "ComfyUI-HfLoader", - "id": "hfloader", - "reference": "https://github.com/olduvai-jp/ComfyUI-HfLoader", - "files": [ - "https://github.com/olduvai-jp/ComfyUI-HfLoader" - ], - "install_type": "git-clone", - "description": "Nodes:Lora Loader From HF" - }, - { - "author": "AiMiDi", - "title": "ComfyUI-Aimidi-nodes", - "id": "aimidi-nodes", - "reference": "https://github.com/AiMiDi/ComfyUI-Aimidi-nodes", - "files": [ - "https://github.com/AiMiDi/ComfyUI-Aimidi-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Merge Tag, Clear Tag, Add Tag, Load Images Pair Batch, Save Images Pair" - }, - { - "author": "ForeignGods", - "title": "ComfyUI-Mana-Nodes", - "id": "mana-nodes", - "reference": "https://github.com/ForeignGods/ComfyUI-Mana-Nodes", - "files": [ - "https://github.com/ForeignGods/ComfyUI-Mana-Nodes" - ], - "install_type": "git-clone", - "description": "Font Animation, Speech Recognition, Caption Generator, TTS" - }, - { - "author": "Cornea Valentin", - "title": "ControlNet Auxiliar", - "id": "controlnet-aux-valentin", - "reference": "https://github.com/madtunebk/ComfyUI-ControlnetAux", - "files": [ - "https://github.com/madtunebk/ComfyUI-ControlnetAux" - ], - "install_type": "git-clone", - "description": "This ComfyUI custom node, named ControlNet Auxiliar, is designed to provide auxiliary functionalities for image processing tasks. It is particularly useful for various image manipulation and enhancement operations. The node is integrated with functionalities for converting images between different formats and applying various image processing techniques." - }, - { - "author": "MarkoCa1", - "title": "ComfyUI-Text", - "reference": "https://github.com/MarkoCa1/ComfyUI-Text", - "files": [ - "https://github.com/MarkoCa1/ComfyUI-Text" - ], - "install_type": "git-clone", - "description": "Why make this node? Because I only need simple text related operations and don't want to install anything extra." - }, - { - "author": "MarkoCa1", - "title": "ComfyUI_Segment_Mask", - "id": "seg-mask", - "reference": "https://github.com/MarkoCa1/ComfyUI_Segment_Mask", - "files": [ - "https://github.com/MarkoCa1/ComfyUI_Segment_Mask" - ], - "install_type": "git-clone", - "description": "Mask cutout based on Segment Anything." - }, - { - "author": "Shadetail", - "title": "Eagleshadow Custom Nodes", - "id": "eagleshadow", - "reference": "https://github.com/Shadetail/ComfyUI_Eagleshadow", - "files": [ - "https://github.com/Shadetail/ComfyUI_Eagleshadow" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI by Eagleshadow." - }, - { - "author": "Jannchie", - "title": "ComfyUI-J", - "reference": "https://github.com/Jannchie/ComfyUI-J", - "files": [ - "https://github.com/Jannchie/ComfyUI-J" - ], - "install_type": "git-clone", - "description": "This is a completely different set of nodes than Comfy's own KSampler series. This set of nodes is based on Diffusers, which makes it easier to import models, apply prompts with weights, inpaint, reference only, controlnet, etc." - }, - { - "author": "daxcay", - "title": "ComfyUI-JDCN", - "id": "jdcn", - "reference": "https://github.com/daxcay/ComfyUI-JDCN", - "files": [ - "https://github.com/daxcay/ComfyUI-JDCN" - ], - "install_type": "git-clone", - "description": "Jerry Davos Custom Nodes for Saving Latents in Directory (BatchLatentSave) , Importing Latent from directory (BatchLatentLoadFromDir) , List to string, string to list, get any file list from directory which give filepath, filename, move any files from any directory to any other directory, VHS Video combine file mover, rebatch list of strings, batch image load from any dir, load image batch from any directory and other custom nodes." - }, - { - "author": "daxcay", - "title": "ComfyUI-DataSet", - "reference": "https://github.com/daxcay/ComfyUI-DataSet", - "files": [ - "https://github.com/daxcay/ComfyUI-DataSet" - ], - "install_type": "git-clone", - "description": "Data research, preparation, and manipulation nodes for model trainers and artists." - }, - { - "author": "daxcay", - "title": "ComfyUI-Nexus", - "reference": "https://github.com/daxcay/ComfyUI-Nexus", - "files": [ - "https://github.com/daxcay/ComfyUI-Nexus" - ], - "install_type": "git-clone", - "description": "Node to enable seamless multiuser workflow collaboration, run on local and remote comfy servers." - }, - { - "author": "daxcay", - "title": "ComfyUI-WA", - "reference": "https://github.com/daxcay/ComfyUI-WA", - "files": [ - "https://github.com/daxcay/ComfyUI-WA" - ], - "install_type": "git-clone", - "description": "Node to enable WhatsApp in ComfyUI." - }, - { - "author": "daxcay", - "title": "ComfyUI-TG", - "reference": "https://github.com/daxcay/ComfyUI-TG", - "files": [ - "https://github.com/daxcay/ComfyUI-TG" - ], - "install_type": "git-clone", - "description": "Node to enable Telegram in ComfyUI." - }, - { - "author": "daxcay", - "title": "ComfyUI-NODEJS", - "reference": "https://github.com/daxcay/ComfyUI-NODEJS", - "files": [ - "https://github.com/daxcay/ComfyUI-NODEJS" - ], - "install_type": "git-clone", - "description": "This node allows the execution of Node.js application within ComfyUI by leveraging the ComfyUI-NODEJS, which starts alongside ComfyUI and facilitates the installation of Node.js. The integration enables Python subprocesses to execute Node.js scripts." - }, - { - "author": "daxcay", - "title": "ComfyUI-YouTubeVideoPlayer", - "reference": "https://github.com/daxcay/ComfyUI-YouTubeVideoPlayer", - "files": [ - "https://github.com/daxcay/ComfyUI-YouTubeVideoPlayer" - ], - "install_type": "git-clone", - "description": "Plays youtube videos in comfy. Use this node to share tutorials or renders. Youtube Playlists mode is also in Future Development in which you can add multiple youtube links and form a playlist which would be ideal for chained tutorials or lisitening and sharing songs playlists with others." - }, - { - "author": "Seedsa", - "title": "ComfyUI Fooocus Nodes", - "id": "fooocus-nodes", - "reference": "https://github.com/Seedsa/Fooocus_Nodes", - "files": [ - "https://github.com/Seedsa/Fooocus_Nodes" - ], - "install_type": "git-clone", - "description": "This extension provides image generation features based on Fooocus." - }, - { - "author": "zhangp365", - "title": "zhangp365/ComfyUI-utils-nodes", - "reference": "https://github.com/zhangp365/ComfyUI-utils-nodes", - "files": [ - "https://github.com/zhangp365/ComfyUI-utils-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:LoadImageWithSwitch, ImageBatchOneOrMore, ModifyTextGender, ImageCompositeMaskedWithSwitch, ColorCorrectOfUtils, SplitMask, MaskFastGrow, CheckpointLoaderSimpleWithSwitch, ImageResizeTo8x, MatchImageRatioToPreset etc." - }, - { - "author": "zhangp365", - "title": "ComfyUI_photomakerV2_native", - "id": "comfyui_photomakerV2_native", - "reference": "https://github.com/zhangp365/ComfyUI_photomakerV2_native", - "files": [ - "https://github.com/zhangp365/ComfyUI_photomakerV2_native" - ], - "install_type": "git-clone", - "description": "Nodes: PhotoMakerLoaderV2,PhotoMakerEncodeV2" - }, - { - "author": "ratulrafsan", - "title": "Comfyui-SAL-VTON", - "id": "sal-vton", - "reference": "https://github.com/ratulrafsan/Comfyui-SAL-VTON", - "files": [ - "https://github.com/ratulrafsan/Comfyui-SAL-VTON" - ], - "install_type": "git-clone", - "description": "Dressup your models!\nThis is my quick implementation of the SAL-VTON node for ComfyUI.\nBased on the paper [a/Keyu Y. Tingwei G. et al. (2023). Linking Garment with Person via Semantically Associated Landmakrs for Virtual Try-On](https://openaccess.thecvf.com/content/CVPR2023/papers/Yan_Linking_Garment_With_Person_via_Semantically_Associated_Landmarks_for_Virtual_CVPR_2023_paper.pdf)" - }, - { - "author": "Nevysha", - "title": "ComfyUI-nevysha-top-menu", - "id": "nevysha-top-menu", - "reference": "https://github.com/Nevysha/ComfyUI-nevysha-top-menu", - "files": [ - "https://github.com/Nevysha/ComfyUI-nevysha-top-menu" - ], - "install_type": "git-clone", - "description": "A simple sidebar tweak to force fixe the ComfyUI menu to the top of the screen. Reaaally quick and dirty. May break with some ComfyUI setup." - }, - { - "author": "alisson-anjos", - "title": "ComfyUI-Ollama-Describer", - "id": "ollama-describer", - "reference": "https://github.com/alisson-anjos/ComfyUI-Ollama-Describer", - "files": [ - "https://github.com/alisson-anjos/ComfyUI-Ollama-Describer" - ], - "install_type": "git-clone", - "description": "This is an extension for ComfyUI that makes it possible to use some LLM models provided by Ollama, such as Gemma, Llava (multimodal), Llama2, Llama3 or Mistral. Speaking specifically of the LLaVa - Large Language and Vision Assistant model, although trained on a relatively small dataset, it demonstrates exceptional capabilities in understanding images and answering questions about them. This model presents similar behaviors to multimodal models such as GPT-4, even when presented with invisible images and instructions." - }, - { - "author": "chaosaiart", - "title": "Chaosaiart-Nodes", - "id": "chaosaiart", - "reference": "https://github.com/chaosaiart/Chaosaiart-Nodes", - "files": [ - "https://github.com/chaosaiart/Chaosaiart-Nodes" - ], - "install_type": "git-clone", - "description": "LowVRAM Animation : txt2video - img2video - video2video , Frame by Frame, compatible with LowVRAM GPUs\nIncluded : Prompt Switch, Checkpoint Switch, Cache, Number Count by Frame, Ksampler txt2img & img2img ..." - }, - { - "author": "viperyl", - "title": "ComfyUI-BiRefNet-Fix utils", - "id": "comfyui-birefnet", - "reference": "https://github.com/hieuck/ComfyUI-BiRefNet", - "files": [ - "https://github.com/hieuck/ComfyUI-BiRefNet" - ], - "install_type": "git-clone", - "description": "Bilateral Reference Network achieves SOTA result in multi Salient Object Segmentation dataset, this repo pack BiRefNet as ComfyUI nodes, and make this SOTA model easier use for everyone.\nNOTE: The original node was replaced with a version maintained by hieuck because it is no longer maintained." - }, - { - "author": "viperyl", - "title": "ComfyUI-RGT", - "id": "rgt", - "reference": "https://github.com/viperyl/ComfyUI-RGT", - "pip": ["loguru"], - "files": [ - "https://github.com/viperyl/ComfyUI-RGT" - ], - "install_type": "git-clone", - "description": "This repo cast Recursive Generalization Transformer for Image Super-Resolution to ComfyUI, the original [a/paper link](https://arxiv.org/abs/2303.06373) and [a/github link](https://github.com/zhengchen1999/RGT)" - }, - { - "author": "SuperBeastsAI", - "title": "ComfyUI-SuperBeasts", - "id": "superbeasts", - "reference": "https://github.com/SuperBeastsAI/ComfyUI-SuperBeasts", - "files": [ - "https://github.com/SuperBeastsAI/ComfyUI-SuperBeasts" - ], - "install_type": "git-clone", - "description": "Nodes:HDR Effects (SuperBeasts.AI). This repository contains custom nodes for ComfyUI created and used by SuperBeasts.AI (@SuperBeasts.AI on Instagram)" - }, - { - "author": "hay86", - "title": "ComfyUI Dreamtalk", - "id": "dreamtalk", - "reference": "https://github.com/hay86/ComfyUI_Dreamtalk", - "files": [ - "https://github.com/hay86/ComfyUI_Dreamtalk" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/dreamtalk](https://github.com/ali-vilab/dreamtalk) for ComfyUI" - }, - { - "author": "hay86", - "title": "ComfyUI Hallo", - "id": "hallo-hay86", - "reference": "https://github.com/hay86/ComfyUI_Hallo", - "files": [ - "https://github.com/hay86/ComfyUI_Hallo" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/hallo](https://github.com/fudan-generative-vision/hallo) for ComfyUI" - }, - { - "author": "hay86", - "title": "ComfyUI OpenVoice", - "id": "openvoice-hay86", - "reference": "https://github.com/hay86/ComfyUI_OpenVoice", - "files": [ - "https://github.com/hay86/ComfyUI_OpenVoice" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/OpenVoice](https://github.com/myshell-ai/OpenVoice) for ComfyUI" - }, - { - "author": "hay86", - "title": "ComfyUI DDColor", - "id": "ddcolor-hay86", - "reference": "https://github.com/hay86/ComfyUI_DDColor", - "files": [ - "https://github.com/hay86/ComfyUI_DDColor" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/DDColor](https://github.com/piddnad/DDColor) for ComfyUI" - }, - { - "author": "hay86", - "title": "ComfyUI MiniCPM-V", - "id": "minicpm-v", - "reference": "https://github.com/hay86/ComfyUI_MiniCPM-V", - "files": [ - "https://github.com/hay86/ComfyUI_MiniCPM-V" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/MiniCPM-V](https://github.com/OpenBMB/MiniCPM-V) for ComfyUI" - }, - { - "author": "hay86", - "title": "ComfyUI LatentSync", - "id": "latentsync", - "reference": "https://github.com/hay86/ComfyUI_LatentSync", - "files": [ - "https://github.com/hay86/ComfyUI_LatentSync" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/LatentSync](https://github.com/bytedance/LatentSync) for ComfyUI" - }, - { - "author": "shinich39", - "title": "comfyui-load-image-in-seq", - "reference": "https://github.com/shinich39/comfyui-load-image-in-seq", - "files": [ - "https://github.com/shinich39/comfyui-load-image-in-seq" - ], - "install_type": "git-clone", - "description": "This node is load png image sequentially with metadata. Only supported for PNG format that has been created by ComfyUI.[w/renamed from comfyui-load-image-39. You need to remove previous one and reinstall to this.]" - }, - { - "author": "shinich39", - "title": "comfyui-random-node", - "id": "random-node", - "reference": "https://github.com/shinich39/comfyui-ramdom-node", - "files": [ - "https://github.com/shinich39/comfyui-ramdom-node" - ], - "install_type": "git-clone", - "description": "Shuffle nodes after queue added. [w/Repository name has been changed from comfyui-random-node-39 to comfyui-random-node. Please remove and reinstall it.]" - }, - { - "author": "shinich39", - "title": "comfyui-local-db", - "reference": "https://github.com/shinich39/comfyui-local-db", - "files": [ - "https://github.com/shinich39/comfyui-local-db" - ], - "install_type": "git-clone", - "description": "Store text to Key-Values pair json." - }, - { - "author": "shinich39", - "title": "comfyui-model-db", - "reference": "https://github.com/shinich39/comfyui-model-db", - "files": [ - "https://github.com/shinich39/comfyui-model-db" - ], - "install_type": "git-clone", - "description": "Store settings by model." - }, - { - "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": "shinich39", - "title": "comfyui-textarea-command", - "reference": "https://github.com/shinich39/comfyui-textarea-command", - "files": [ - "https://github.com/shinich39/comfyui-textarea-command" - ], - "install_type": "git-clone", - "description": "Add command and comment in textarea. (e.g. // Disabled line)" - }, - { - "author": "shinich39", - "title": "comfyui-put-image", - "reference": "https://github.com/shinich39/comfyui-put-image", - "files": [ - "https://github.com/shinich39/comfyui-put-image" - ], - "install_type": "git-clone", - "description": "Load image from directory." - }, - { - "author": "shinich39", - "title": "comfyui-parse-image", - "reference": "https://github.com/shinich39/comfyui-parse-image", - "files": [ - "https://github.com/shinich39/comfyui-parse-image" - ], - "install_type": "git-clone", - "description": "Extract metadata from image." - }, - { - "author": "shinich39", - "title": "comfyui-view-recommendations", - "reference": "https://github.com/shinich39/comfyui-view-recommendations", - "files": [ - "https://github.com/shinich39/comfyui-view-recommendations" - ], - "install_type": "git-clone", - "description": "Load model generation data from civitai." - }, - { - "author": "wei30172", - "title": "comfygen", - "reference": "https://github.com/wei30172/comfygen", - "files": [ - "https://github.com/wei30172/comfygen" - ], - "install_type": "git-clone", - "description": "Setting Up a Web Interface Using ComfyUI.\nNOTE:When installed, you can access it via http://127.0.0.1:8188/comfygen." - }, - { - "author": "zombieyang", - "title": "SD-PPP", - "reference": "https://github.com/zombieyang/sd-ppp", - "files": [ - "https://github.com/zombieyang/sd-ppp" - ], - "install_type": "git-clone", - "description": "getting/sending picture from/to Photoshop with a simple connection. Make Photoshop become the workspace of your ComfyUI" - }, - { - "author": "KytraScript", - "title": "ComfyUI_KytraWebhookHTTP", - "reference": "https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP", - "files": [ - "https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP" - ], - "install_type": "git-clone", - "description": "A ComfyUI node that utilizes Moviepy to convert and send your images or videos to a webhook endpoint directly from ComfyUI." - }, - { - "author": "1mckw", - "title": "Comfyui-Gelbooru", - "reference": "https://github.com/1mckw/Comfyui-Gelbooru", - "files": [ - "https://github.com/1mckw/Comfyui-Gelbooru" - ], - "install_type": "git-clone", - "description": "Get random images from gelbooru, support multiple tag searches, exclude tags, etc. user and api key are optional." - }, - { - "author": "NeuralSamurAI", - "title": "SuperPrompter Node for ComfyUI", - "reference": "https://github.com/NeuralSamurAI/Comfyui-Superprompt-Unofficial", - "files": [ - "https://github.com/NeuralSamurAI/Comfyui-Superprompt-Unofficial" - ], - "install_type": "git-clone", - "description": "The SuperPrompter node is a ComfyUI node that uses the SuperPrompt-v1 model from Hugging Face to generate text based on a given prompt. It provides various parameters to control the text generation process." - }, - { - "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": "NeuralSamurAI", - "title": "PromptJSON Node for ComfyUI", - "reference": "https://github.com/NeuralSamurAI/ComfyUI-PromptJSON", - "files": [ - "https://github.com/NeuralSamurAI/ComfyUI-PromptJSON" - ], - "install_type": "git-clone", - "description": "PromptJSON is a custom node for ComfyUI that structures natural language prompts and generates prompts for external LLM nodes in image generation workflows. It aids in creating consistent, schema-based image descriptions." - }, - { - "author": "NeuralSamurAI", - "title": "FluxPseudoNegative", - "reference": "https://github.com/NeuralSamurAI/ComfyUI-FluxPseudoNegativePrompt", - "files": [ - "https://github.com/NeuralSamurAI/ComfyUI-FluxPseudoNegativePrompt" - ], - "install_type": "git-clone", - "description": "FluxPseudoNegative is an advanced custom node for ComfyUI that converts negative prompts into positive ones. It's designed to enhance prompt engineering for image generation models that don't natively support negative prompts or where using negative prompts significantly increases generation time. So instead of hacking CFG we simply invert your negative words and find their antonyms!" - }, - { - "author": "MokkaBoss1", - "title": "Node Pack mostly for manipulating strings and integers", - "reference": "https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1/wiki/Documentation-for-the-ComfyUI-Nodes-in-this-Node-Pack", - "files": [ - "https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1" - ], - "install_type": "git-clone", - "description": "Node Pack mostly for manipulating strings and integers" - }, - { - "author": "jiaxiangc", - "title": "ResAdapter for ComfyUI", - "reference": "https://github.com/jiaxiangc/ComfyUI-ResAdapter", - "files": [ - "https://github.com/jiaxiangc/ComfyUI-ResAdapter" - ], - "install_type": "git-clone", - "description": "We provide ComfyUI-ResAdapter node to help users to use [a/ResAdapter](https://github.com/bytedance/res-adapter) in ComfyUI." - }, - { - "author": "ParisNeo", - "title": "lollms_nodes_suite", - "reference": "https://github.com/ParisNeo/lollms_nodes_suite", - "files": [ - "https://github.com/ParisNeo/lollms_nodes_suite" - ], - "install_type": "git-clone", - "description": "lollms_nodes_suite is a set of nodes for comfyui that harnesses the power of lollms, a state-of-the-art AI text generation tool, to improve the quality of image generation." - }, - { - "author": "IsItDanOrAi", - "title": "ComfyUI-Stereopsis", - "reference": "https://github.com/IsItDanOrAi/ComfyUI-Stereopsis", - "files": [ - "https://github.com/IsItDanOrAi/ComfyUI-Stereopsis" - ], - "install_type": "git-clone", - "description": "This initiative represents a solo venture dedicated to integrating a stereopsis effect within ComfyUI (Stable Diffusion). Presently, the project is focused on the refinement of node categorization within a unified framework, as it is in the early stages of development. However, it has achieved functionality in a fundamental capacity. By processing a video through the Side-by-Side (SBS) node and applying Frame Delay to one of the inputs, it facilitates the creation of a stereopsis effect. This effect is compatible with any Virtual Reality headset that supports SBS video playback, offering a practical application in immersive media experiences." - }, - { - "author": "nickve28", - "title": "ComfyUI Nich Utils", - "reference": "https://github.com/nickve28/ComfyUI-Nich-Utils", - "files": [ - "https://github.com/nickve28/ComfyUI-Nich-Utils" - ], - "install_type": "git-clone", - "description": "Several utility nodes for use with ComfyUI." - }, - { - "author": "FrankChieng", - "title": "ComfyUI_Aniportrait", - "reference": "https://github.com/frankchieng/ComfyUI_Aniportrait", - "files": [ - "https://github.com/frankchieng/ComfyUI_Aniportrait" - ], - "install_type": "git-clone", - "description": "implementation of [a/AniPortrait](https://github.com/Zejun-Yang/AniPortrait) generating of videos, includes self driven, face reenacment and audio driven with a reference image" - }, - { - "author": "FrankChieng", - "title": "ComfyUI_MagicClothing", - "reference": "https://github.com/frankchieng/ComfyUI_MagicClothing", - "files": [ - "https://github.com/frankchieng/ComfyUI_MagicClothing" - ], - "install_type": "git-clone", - "description": "implementation of MagicClothing with garment and prompt in ComfyUI" - }, - { - "author": "BlakeOne", - "title": "ComfyUI SchedulerMixer", - "reference": "https://github.com/BlakeOne/ComfyUI-SchedulerMixer", - "files": [ - "https://github.com/BlakeOne/ComfyUI-SchedulerMixer" - ], - "install_type": "git-clone", - "description": "Create a custom scheduler from a weighted average of the built-in schedulers" - }, - { - "author": "BlakeOne", - "title": "ComfyUI CustomScheduler", - "reference": "https://github.com/BlakeOne/ComfyUI-CustomScheduler", - "files": [ - "https://github.com/BlakeOne/ComfyUI-CustomScheduler" - ], - "install_type": "git-clone", - "description": "Simple node for setting the sigma values directly. Note, for a full denoise the last sigma should be zero." - }, - { - "author": "BlakeOne", - "title": "ComfyUI NodePresets", - "id": "nodepresets", - "reference": "https://github.com/BlakeOne/ComfyUI-NodePresets", - "files": [ - "https://github.com/BlakeOne/ComfyUI-NodePresets" - ], - "install_type": "git-clone", - "description": "An extension for ComyUI that enables saving and loading node presets using the node's context menu.\nRight click a node and choose 'Presets' from its context menu to access the node's presets." - }, - { - "author": "BlakeOne", - "title": "ComfyUI NodeReset", - "id": "nodereset", - "reference": "https://github.com/BlakeOne/ComfyUI-NodeReset", - "files": [ - "https://github.com/BlakeOne/ComfyUI-NodeReset" - ], - "install_type": "git-clone", - "description": "An extension for ComyUI to allow resetting a node's inputs to their default values.\nNOTE:Right click any node and choose 'Reset' from the context menu." - }, - { - "author": "kale4eat", - "title": "ComfyUI_demucus", - "id": "demucus", - "reference": "https://github.com/kale4eat/ComfyUI-path-util", - "files": [ - "https://github.com/kale4eat/ComfyUI-path-util" - ], - "install_type": "git-clone", - "description": "Path utility for ComfyUI" - }, - { - "author": "kale4eat", - "title": "ComfyUI-string-util", - "reference": "https://github.com/kale4eat/ComfyUI-string-util", - "files": [ - "https://github.com/kale4eat/ComfyUI-string-util" - ], - "install_type": "git-clone", - "description": "String utility for ComfyUI" - }, - { - "author": "kale4eat", - "title": "ComfyUI-text-file-util", - "reference": "https://github.com/kale4eat/ComfyUI-text-file-util", - "files": [ - "https://github.com/kale4eat/ComfyUI-text-file-util" - ], - "install_type": "git-clone", - "description": "Text file utility for ComfyUI" - }, - { - "author": "kale4eat", - "title": "ComfyUI-speech-dataset-toolkit", - "reference": "https://github.com/kale4eat/ComfyUI-speech-dataset-toolkit", - "files": [ - "https://github.com/kale4eat/ComfyUI-speech-dataset-toolkit" - ], - "install_type": "git-clone", - "description": "Basic audio tools using torchaudio for ComfyUI. It is assumed to assist in the speech dataset creation for ASR, TTS, etc." - }, - { - "author": "DrMWeigand", - "title": "ComfyUI Color Detection Nodes", - "reference": "https://github.com/DrMWeigand/ComfyUI_ColorImageDetection", - "files": [ - "https://github.com/DrMWeigand/ComfyUI_ColorImageDetection" - ], - "install_type": "git-clone", - "description": "A collection of nodes for detecting color in images, leveraging RGB and LAB color spaces. These nodes aim to distinguish colored images from black and white, including those with color tints." - }, - { - "author": "DrMWeigand", - "title": "StereoVision Plugin for ComfyUI", - "reference": "https://github.com/DrMWeigand/ComfyUI-StereoVision", - "files": [ - "https://github.com/DrMWeigand/ComfyUI-StereoVision" - ], - "install_type": "git-clone", - "description": "The StereoVision plugin for ComfyUI enables the creation of stereoscopic and autostereoscopic images and videos using depth maps. It supports both traditional stereoscopic image generation and autostereogram (Magic Eye) creation." - }, - { - "author": "bobmagicii", - "title": "ComfyKit Custom Nodes", - "reference": "https://github.com/bobmagicii/comfykit-custom-nodes", - "files": [ - "https://github.com/bobmagicii/comfykit-custom-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:LoraWithMetadata, TypecasterImage." - }, - { - "author": "TJ16th", - "title": "comfyUI_TJ_NormalLighting", - "reference": "https://github.com/TJ16th/comfyUI_TJ_NormalLighting", - "files": [ - "https://github.com/TJ16th/comfyUI_TJ_NormalLighting" - ], - "install_type": "git-clone", - "description": "Custom Node for comfyUI for virtual lighting based on normal map.\nYou can use normal maps to add virtual lighting effects to your images." - }, - { - "author": "A4P7J1N7M05OT", - "title": "ComfyUI-PixelOE-Wrapper", - "reference": "https://github.com/A4P7J1N7M05OT/ComfyUI-PixelOE-Wrapper", - "files": [ - "https://github.com/A4P7J1N7M05OT/ComfyUI-PixelOE-Wrapper" - ], - "install_type": "git-clone", - "description": "A barebones ComfyUI wrapper for [a/PixelOE](https://github.com/KohakuBlueleaf/PixelOE).\nI cannot promise any support, if there is someone who wants to make a proper node, please do." - }, - { - "author": "A4P7J1N7M05OT", - "title": "ComfyUI-AutoColorGimp", - "reference": "https://github.com/A4P7J1N7M05OT/ComfyUI-AutoColorGimp", - "files": [ - "https://github.com/A4P7J1N7M05OT/ComfyUI-AutoColorGimp" - ], - "install_type": "git-clone", - "description": "Shamelessly copied the code to auto color correct the image like in gimp from this answer: [a/https://stackoverflow.com/a/56365560/4561887](https://stackoverflow.com/a/56365560/4561887)" - }, - { - "author": "ronniebasak", - "title": "ComfyUI-Tara-LLM-Integration", - "id": "tarallm", - "reference": "https://github.com/ronniebasak/ComfyUI-Tara-LLM-Integration", - "files": [ - "https://github.com/ronniebasak/ComfyUI-Tara-LLM-Integration" - ], - "install_type": "git-clone", - "description": "Tara is a powerful node for ComfyUI that integrates Large Language Models (LLMs) to enhance and automate workflow processes. With Tara, you can create complex, intelligent workflows that refine and generate content, manage API keys, and seamlessly integrate various LLMs into your projects." - }, - { - "author": "Sida Liu", - "title": "ComfyUI-Debug", - "id": "debug", - "reference": "https://github.com/liusida/ComfyUI-Debug", - "files": [ - "https://github.com/liusida/ComfyUI-Debug" - ], - "install_type": "git-clone", - "description": "Attach a debug node to an output to obtain more detailed information. Uncover the details of your models in ComfyUI with ease." - }, - { - "author": "Sida Liu", - "title": "ComfyUI-Login", - "id": "login", - "reference": "https://github.com/liusida/ComfyUI-Login", - "files": [ - "https://github.com/liusida/ComfyUI-Login" - ], - "install_type": "git-clone", - "description": "A simple password to protect ComfyUI." - }, - { - "author": "Sida Liu", - "title": "ComfyUI-AutoCropFaces", - "id": "autocropfaces", - "reference": "https://github.com/liusida/ComfyUI-AutoCropFaces", - "files": [ - "https://github.com/liusida/ComfyUI-AutoCropFaces" - ], - "install_type": "git-clone", - "description": "Use RetinaFace to detect and automatically crop faces." - }, - { - "author": "Sida Liu", - "title": "ComfyUI-SD3-nodes", - "id": "sd3-nodes", - "reference": "https://github.com/liusida/ComfyUI-SD3-nodes", - "files": [ - "https://github.com/liusida/ComfyUI-SD3-nodes" - ], - "install_type": "git-clone", - "description": "Nodes that support Stable Diffusion 3 Medium better." - }, - { - "author": "Sida Liu", - "title": "ComfyUI-B-LoRA", - "id": "b-lora", - "reference": "https://github.com/liusida/ComfyUI-B-LoRA", - "files": [ - "https://github.com/liusida/ComfyUI-B-LoRA" - ], - "install_type": "git-clone", - "description": "Load and apply B-LoRA models, currently B-LoRA models only works with SDXL (sdxl_base_1.0)." - }, - { - "author": "jtydhr88", - "title": "ComfyUI-Workflow-Encrypt", - "id": "workflow-encrypt", - "reference": "https://github.com/jtydhr88/ComfyUI-Workflow-Encrypt", - "files": [ - "https://github.com/jtydhr88/ComfyUI-Workflow-Encrypt" - ], - "install_type": "git-clone", - "description": "Encrypt your comfyui workflow, and share it with key" - }, - { - "author": "jtydhr88", - "title": "ComfyUI LayerDivider", - "id": "layer-divider", - "reference": "https://github.com/jtydhr88/ComfyUI-LayerDivider", - "files": [ - "https://github.com/jtydhr88/ComfyUI-LayerDivider" - ], - "install_type": "git-clone", - "description": "ComfyUI LayerDivider is custom nodes that generating layered psd files inside ComfyUI[w/Please follow readme and run install_windows_portable_win_py311_cu121 for ComfyUI embedded python.]" - }, - { - "author": "jtydhr88", - "title": "ComfyUI-Hunyuan3D-1-wrapper", - "reference": "https://github.com/jtydhr88/ComfyUI-Hunyuan3D-1-wrapper", - "files": [ - "https://github.com/jtydhr88/ComfyUI-Hunyuan3D-1-wrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI Hunyuan3D-1-wrapper is a custom node that allows you to run [a/Tencent/Hunyuan3D-1](https://github.com/Tencent/Hunyuan3D-1) in ComfyUI as a wrapper." - }, - { - "author": "SeaArtLab", - "title": "ComfyUI-Long-CLIP", - "reference": "https://github.com/SeaArtLab/ComfyUI-Long-CLIP", - "files": [ - "https://github.com/SeaArtLab/ComfyUI-Long-CLIP" - ], - "install_type": "git-clone", - "description": "This project implements the comfyui for long-clip, currently supporting the replacement of clip-l. For SD1.5, the SeaArtLongClip module can be used to replace the original clip in the model, expanding the token length from 77 to 248." - }, - { - "author": "tsogzark", - "title": "ComfyUI-load-image-from-url", - "reference": "https://github.com/tsogzark/ComfyUI-load-image-from-url", - "files": [ - "https://github.com/tsogzark/ComfyUI-load-image-from-url" - ], - "install_type": "git-clone", - "description": "A simple node to load image from local path or http url.\nYou can find this node from 'image' category." - }, - { - "author": "discus0434", - "title": "ComfyUI Caching Embeddings", - "id": "caching-embeddings", - "reference": "https://github.com/discus0434/comfyui-caching-embeddings", - "files": [ - "https://github.com/discus0434/comfyui-caching-embeddings" - ], - "install_type": "git-clone", - "description": "This repository simply caches the CLIP embeddings and subtly accelerates the inference process by bypassing unnecessary computations." - }, - { - "author": "discus0434", - "title": "ComfyUI Aesthetic Predictor V2.5", - "id": "aesthetic-predictor", - "reference": "https://github.com/discus0434/comfyui-aesthetic-predictor-v2-5", - "files": [ - "https://github.com/discus0434/comfyui-aesthetic-predictor-v2-5" - ], - "install_type": "git-clone", - "description": "Simple ComfyUI node that predicts the score of an aesthetic image with SigLIP-based predictor." - }, - { - "author": "discus0434", - "title": "ComfyUI Flux Accelerator", - "reference": "https://github.com/discus0434/comfyui-flux-accelerator", - "files": [ - "https://github.com/discus0434/comfyui-flux-accelerator" - ], - "install_type": "git-clone", - "description": "ComfyUI Flux Accelerator is a custom node for ComfyUI that accelerates Flux.1 image generation, just by using this node." - }, - { - "author": "AIFSH", - "title": "StyleShot-ComfyUI", - "id": "styleshot", - "reference": "https://github.com/AIFSH/StyleShot-ComfyUI", - "files": [ - "https://github.com/AIFSH/StyleShot-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/StyleShot](https://github.com/open-mmlab/StyleShot.git)" - }, - { - "author": "AIFSH", - "title": "VocalSeparation-ComfyUI", - "id": "vocalseparation", - "reference": "https://github.com/AIFSH/VocalSeparation-ComfyUI", - "files": [ - "https://github.com/AIFSH/VocalSeparation-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for separation vocals from music based on [a/ZFTurbo/Music-Source-Separation-Training](https://github.com/ZFTurbo/Music-Source-Separation-Training)" - }, - { - "author": "AIFSH", - "title": "DiffMorpher-ComfyUI", - "id": "diffmorpher", - "reference": "https://github.com/AIFSH/DiffMorpher-ComfyUI", - "files": [ - "https://github.com/AIFSH/DiffMorpher-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/DiffMorpher](https://github.com/Kevin-thu/DiffMorpher),you can find base workflow in [a/doc](https://github.com/AIFSH/DiffMorpher-ComfyUI/blob/main/doc)" - }, - { - "author": "AIFSH", - "title": "ComfyUI-UVR5", - "id": "uvr5", - "reference": "https://github.com/AIFSH/ComfyUI-UVR5", - "files": [ - "https://github.com/AIFSH/ComfyUI-UVR5" - ], - "install_type": "git-clone", - "description": "the custom code for [a/UVR5](https://github.com/Anjok07/ultimatevocalremovergui) to separate vocals and background music" - }, - { - "author": "AIFSH", - "title": "ComfyUI-IP_LAP", - "id": "iplap", - "reference": "https://github.com/AIFSH/ComfyUI-IP_LAP", - "files": [ - "https://github.com/AIFSH/ComfyUI-IP_LAP" - ], - "install_type": "git-clone", - "description": "Nodes:IP_LAP Node, Video Loader, PreView Video, Combine Audio Video. the comfyui custom node of [a/IP_LAP](https://github.com/Weizhi-Zhong/IP_LAP) to make audio driven videos!" - }, - { - "author": "AIFSH", - "title": "ComfyUI-GPT_SoVITS", - "id": "sovits", - "reference": "https://github.com/AIFSH/ComfyUI-GPT_SoVITS", - "files": [ - "https://github.com/AIFSH/ComfyUI-GPT_SoVITS" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/GPT-SoVITS](https://github.com/RVC-Boss/GPT-SoVITS)! you can voice cloning and tts in comfyui now\n[w/NOTE:make sure ffmpeg is worked in your commandline]" - }, - { - "author": "AIFSH", - "title": "ComfyUI-MuseTalk_FSH", - "id": "musetalk-fsh", - "reference": "https://github.com/AIFSH/ComfyUI-MuseTalk_FSH", - "files": [ - "https://github.com/AIFSH/ComfyUI-MuseTalk_FSH" - ], - "install_type": "git-clone", - "description": "the comfyui custom node of [a/MuseTalk](https://github.com/TMElyralab/MuseTalk) to make audio driven videos!" - }, - { - "author": "AIFSH", - "title": "ComfyUI-WhisperX", - "id": "whisperx", - "reference": "https://github.com/AIFSH/ComfyUI-WhisperX", - "files": [ - "https://github.com/AIFSH/ComfyUI-WhisperX" - ], - "install_type": "git-clone", - "description": "a comfyui cuatom node for audio subtitling based on [a/whisperX](https://github.com/m-bain/whisperX.git) and [a/translators](https://github.com/UlionTse/translators)" - }, - { - "author": "AIFSH", - "title": "ComfyUI-RVC", - "id": "aifsh-rvc", - "reference": "https://github.com/AIFSH/ComfyUI-RVC", - "files": [ - "https://github.com/AIFSH/ComfyUI-RVC" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/Retrieval-based-Voice-Conversion-WebUI](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI.git), you can Voice-Conversion in comfyui now!\nNOTE: make sure ffmpeg is worked in your commandline for Linux" - }, - { - "author": "AIFSH", - "title": "ComfyUI-XTTS", - "id": "xtts", - "reference": "https://github.com/AIFSH/ComfyUI-XTTS", - "files": [ - "https://github.com/AIFSH/ComfyUI-XTTS" - ], - "install_type": "git-clone", - "description": "a custom comfyui node for [a/coqui-ai/TTS](https://github.com/coqui-ai/TTS.git)'s xtts module! support 17 languages voice cloning and tts" - }, - { - "author": "AIFSH", - "title": "ComfyUI-Live2DViewer", - "id": "live2dviewer", - "reference": "https://github.com/AIFSH/ComfyUI-Live2DViewer", - "files": [ - "https://github.com/AIFSH/ComfyUI-Live2DViewer" - ], - "install_type": "git-clone", - "description": "a comfyui node for viewing Live2D model" - }, - { - "author": "AIFSH", - "title": "ComfyUI-FishSpeech", - "id": "fishspeech", - "reference": "https://github.com/AIFSH/ComfyUI-FishSpeech", - "files": [ - "https://github.com/AIFSH/ComfyUI-FishSpeech" - ], - "install_type": "git-clone", - "description": "a custom comfyui node for [a/fish-speech](https://github.com/fishaudio/fish-speech.git)" - }, - { - "author": "AIFSH", - "title": "ComfyUI_V-Express", - "id": "v-express-aifsh", - "reference": "https://github.com/AIFSH/ComfyUI_V-Express", - "files": [ - "https://github.com/AIFSH/ComfyUI_V-Express" - ], - "install_type": "git-clone", - "description": "the comfyui custom node of [a/V-Express](https://github.com/tencent-ailab/V-Express) to make audio driven videos!" - }, - { - "author": "AIFSH", - "title": "ComfyUI-MimicBrush", - "id": "mimicbrush", - "reference": "https://github.com/AIFSH/ComfyUI-MimicBrush", - "files": [ - "https://github.com/AIFSH/ComfyUI-MimicBrush" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/MimicBrush](https://github.com/ali-vilab/MimicBrush),then inpainting with reference image." - }, - { - "author": "AIFSH", - "title": "ComfyUI-Hallo", - "id": "hallo", - "reference": "https://github.com/AIFSH/ComfyUI-Hallo", - "files": [ - "https://github.com/AIFSH/ComfyUI-Hallo" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/hallo](https://github.com/fudan-generative-vision/hallo)" - }, - { - "author": "AIFSH", - "title": "ComfyUI-UniAnimate", - "id": "unianimate", - "reference": "https://github.com/AIFSH/ComfyUI-UniAnimate", - "files": [ - "https://github.com/AIFSH/ComfyUI-UniAnimate" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/UniAnimate](https://github.com/ali-vilab/UniAnimate)" - }, - { - "author": "AIFSH", - "title": "ComfyUI-3d-photo-inpainting", - "id": "3d-photo-inpainting", - "reference": "https://github.com/AIFSH/ComfyUI-3d-photo-inpainting", - "files": [ - "https://github.com/AIFSH/ComfyUI-3d-photo-inpainting" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/3d-photo-inpainting](https://github.com/vt-vl-lab/3d-photo-inpainting),then you can render one image to zoom-in/dolly zoom/swing motion/circle motion video" - }, - { - "author": "AIFSH", - "title": "AIFSH/ComfyUI-AuraSR", - "id": "aurasr-aifsh", - "reference": "https://github.com/AIFSH/ComfyUI-AuraSR", - "files": [ - "https://github.com/AIFSH/ComfyUI-AuraSR" - ], - "install_type": "git-clone", - "description": "a node for [a/AuraSR](https://github.com/fal-ai/aura-sr)" - }, - { - "author": "AIFSH", - "title": "ComfyUI-MARS5-TTS", - "id": "mars5-tts", - "reference": "https://github.com/AIFSH/ComfyUI-MARS5-TTS", - "files": [ - "https://github.com/AIFSH/ComfyUI-MARS5-TTS" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/MARS5-TTS](https://github.com/Camb-ai/MARS5-TTS)" - }, - { - "author": "AIFSH", - "title": "ComfyUI-I2V-Adapter", - "id": "i2v-adapter", - "reference": "https://github.com/AIFSH/ComfyUI-I2V-Adapter", - "files": [ - "https://github.com/AIFSH/ComfyUI-I2V-Adapter" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/I2V-Adapter](https://github.com/KwaiVGI/I2V-Adapter)" - }, - { - "author": "AIFSH", - "title": "ComfyUI-MimicMotion", - "id": "mimicmotion-aifsh", - "reference": "https://github.com/AIFSH/ComfyUI-MimicMotion", - "files": [ - "https://github.com/AIFSH/ComfyUI-MimicMotion" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/MimicMotion](https://github.com/Tencent/MimicMotion)" - }, - { - "author": "AIFSH", - "title": "ComfyUI-DiffSynth-Studio", - "id": "diffsynth-studio", - "reference": "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio", - "files": [ - "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio" - ], - "install_type": "git-clone", - "description": "make [a/DiffSynth-Studio](https://github.com/modelscope/DiffSynth-Studio) available in ComfyUI" - }, - { - "author": "AIFSH", - "title": "CosyVoice-ComfyUI", - "id": "cosyvoice", - "reference": "https://github.com/AIFSH/CosyVoice-ComfyUI", - "files": [ - "https://github.com/AIFSH/CosyVoice-ComfyUI" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/CosyVoice](https://github.com/FunAudioLLM/CosyVoice)" - }, - { - "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": "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": "AIFSH", - "title": "GSTTS-ComfyUI", - "id": "gstts", - "reference": "https://github.com/AIFSH/GSTTS-ComfyUI", - "files": [ - "https://github.com/AIFSH/GSTTS-ComfyUI" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/GPT-SoVITS](https://github.com/RVC-Boss/GPT-SoVITS)" - }, - { - "author": "AIFSH", - "title": "FancyVideo-ComfyUI", - "reference": "https://github.com/AIFSH/FancyVideo-ComfyUI", - "files": [ - "https://github.com/AIFSH/FancyVideo-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/FancyVideo](https://github.com/360CVGroup/FancyVideo)" - }, - { - "author": "AIFSH", - "title": "VideoSys-ComfyUI", - "reference": "https://github.com/AIFSH/VideoSys-ComfyUI", - "files": [ - "https://github.com/AIFSH/VideoSys-ComfyUI" - ], - "install_type": "git-clone", - "description": "NODES:TextNode, PreViewVideo, VideoSysNode." - }, - { - "author": "AIFSH", - "title": "HivisionIDPhotos-ComfyUI", - "reference": "https://github.com/AIFSH/HivisionIDPhotos-ComfyUI", - "files": [ - "https://github.com/AIFSH/HivisionIDPhotos-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/HivisionIDPhotos](https://github.com/Zeyi-Lin/HivisionIDPhotos)" - }, - { - "author": "AIFSH", - "title": "DiffSynth-ComfyUI", - "reference": "https://github.com/AIFSH/DiffSynth-ComfyUI", - "files": [ - "https://github.com/AIFSH/DiffSynth-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/DiffSynth-Studio](https://github.com/modelscope/DiffSynth-Studio)" - }, - { - "author": "AIFSH", - "title": "RealisDance-ComfyUI", - "reference": "https://github.com/AIFSH/RealisDance-ComfyUI", - "files": [ - "https://github.com/AIFSH/RealisDance-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/RealisDance](https://github.com/damo-cv/RealisDance)" - }, - { - "author": "AIFSH", - "title": "ViewCrafter-ComfyUI", - "reference": "https://github.com/AIFSH/ViewCrafter-ComfyUI", - "files": [ - "https://github.com/AIFSH/ViewCrafter-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/ViewCrafter](https://github.com/Drexubery/ViewCrafter)" - }, - { - "author": "AIFSH", - "title": "SenseVoice-ComfyUI", - "reference": "https://github.com/AIFSH/SenseVoice-ComfyUI", - "files": [ - "https://github.com/AIFSH/SenseVoice-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for SenseVoice" - }, - { - "author": "AIFSH", - "title": "EzAudio-ComfyUI", - "reference": "https://github.com/AIFSH/EzAudio-ComfyUI", - "files": [ - "https://github.com/AIFSH/EzAudio-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/EzAudio](https://github.com/haidog-yaqub/EzAudio)" - }, - { - "author": "AIFSH", - "title": "PyramidFlow-ComfyUI", - "reference": "https://github.com/AIFSH/PyramidFlow-ComfyUI", - "files": [ - "https://github.com/AIFSH/PyramidFlow-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/Pyramid-Flow](https://github.com/jy0205/Pyramid-Flow)" - }, - { - "author": "AIFSH", - "title": "JoyHallo-ComfyUI", - "reference": "https://github.com/AIFSH/JoyHallo-ComfyUI", - "files": [ - "https://github.com/AIFSH/JoyHallo-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/JoyHallo](https://github.com/jdh-algo/JoyHallo)" - }, - { - "author": "AIFSH", - "title": "F5-TTS-ComfyUI", - "reference": "https://github.com/AIFSH/F5-TTS-ComfyUI", - "files": [ - "https://github.com/AIFSH/F5-TTS-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/F5-TTS](https://github.com/SWivid/F5-TTS)" - }, - { - "author": "AIFSH", - "title": "FireRedTTS-ComfyUI", - "reference": "https://github.com/AIFSH/FireRedTTS-ComfyUI", - "files": [ - "https://github.com/AIFSH/FireRedTTS-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/FireRedTTS](https://github.com/FireRedTeam/FireRedTTS)" - }, - { - "author": "AIFSH", - "title": "IMAGDressing-ComfyUI", - "reference": "https://github.com/AIFSH/IMAGDressing-ComfyUI", - "files": [ - "https://github.com/AIFSH/IMAGDressing-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom nodde for [a/IMAGDressing](https://github.com/muzishen/IMAGDressing)" - }, - { - "author": "AIFSH", - "title": "OmniGen-ComfyUI", - "reference": "https://github.com/AIFSH/OmniGen-ComfyUI", - "files": [ - "https://github.com/AIFSH/OmniGen-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/OmniGen](https://github.com/VectorSpaceLab/OmniGen)" - }, - { - "author": "AIFSH", - "title": "MaskGCT-ComfyUI", - "reference": "https://github.com/AIFSH/MaskGCT-ComfyUI", - "files": [ - "https://github.com/AIFSH/MaskGCT-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/MaskGCT](https://github.com/open-mmlab/Amphion/blob/main/models/tts/maskgct/README.md) to Zero-Shot Text-to-Speech" - }, - { - "author": "AIFSH", - "title": "MiniMates-ComfyUI", - "reference": "https://github.com/AIFSH/MiniMates-ComfyUI", - "files": [ - "https://github.com/AIFSH/MiniMates-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/MiniMates](https://github.com/kleinlee/MiniMates)" - }, - { - "author": "AIFSH", - "title": "EchoMimicV2-ComfyUI", - "reference": "https://github.com/AIFSH/EchoMimicV2-ComfyUI", - "files": [ - "https://github.com/AIFSH/EchoMimicV2-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/echomimic_v2](https://github.com/antgroup/echomimic_v2)" - }, - { - "author": "Koishi-Star", - "title": "Euler-Smea-Dyn-Sampler", - "id": "smea", - "reference": "https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler", - "files": [ - "https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler" - ], - "install_type": "git-clone", - "description": "СomfyUI version of [a/Euler Smea Dyn Sampler](https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler). It adds samplers directly to KSampler nodes." - }, - { - "author": "Koishi-Star", - "title": "Pyramid_Noise_For_Inference", - "id": "Pyramid_Noise_For_Inference", - "reference": "https://github.com/Koishi-Star/Pyramid_Noise_For_Inference", - "files": [ - "https://github.com/Koishi-Star/Pyramid_Noise_For_Inference" - ], - "install_type": "git-clone", - "description": "Using pyramid_noise instead of original noise in inference" - }, - { - "author": "sdfxai", - "title": "SDFXBridgeForComfyUI - ComfyUI Custom Node for SDFX Integration", - "id": "sdfx", - "reference": "https://github.com/sdfxai/SDFXBridgeForComfyUI", - "files": [ - "https://github.com/sdfxai/SDFXBridgeForComfyUI" - ], - "install_type": "git-clone", - "description": "SDFXBridgeForComfyUI is a custom node designed for seamless integration between ComfyUI and SDFX. This custom node allows users to make ComfyUI compatible with SDFX when running the ComfyUI instance on their local machines." - }, - { - "author": "smthemex", - "title": "ComfyUI_FoleyCrafter", - "id": "comfyui_foleycrafter", - "reference": "https://github.com/smthemex/ComfyUI_FoleyCrafter", - "files": [ - "https://github.com/smthemex/ComfyUI_FoleyCrafter" - ], - "install_type": "git-clone", - "description": "FoleyCrafter is a video-to-audio generation framework which can produce realistic sound effects semantically relevant and synchronized with videos." - }, - { - "author": "smthemex", - "title": "ComfyUI_Diffree", - "id": "comfyui_diffree", - "reference": "https://github.com/smthemex/ComfyUI_Diffree", - "files": [ - "https://github.com/smthemex/ComfyUI_Diffree" - ], - "install_type": "git-clone", - "description": "using diffree: Text-Guided Shape Free Object Inpainting with Diffusion Model" - }, - { - "author": "smthemex", - "title": "ComfyUI_Stable_Makeup", - "id": "Stable_Makeup", - "reference": "https://github.com/smthemex/ComfyUI_Stable_Makeup", - "files": [ - "https://github.com/smthemex/ComfyUI_Stable_Makeup" - ], - "install_type": "git-clone", - "description": "you can using stable makeup when use comfyUI" - }, - { - "author": "smthemex", - "title": "ComfyUI_FollowYourEmoji", - "id": "FollowYourEmoji", - "reference": "https://github.com/smthemex/ComfyUI_FollowYourEmoji", - "files": [ - "https://github.com/smthemex/ComfyUI_FollowYourEmoji" - ], - "install_type": "git-clone", - "description": "You can make emoji from a video and a image in comfyui" - }, - { - "author": "smthemex", - "title": "ComfyUI_EchoMimic", - "id": "EchoMimic", - "reference": "https://github.com/smthemex/ComfyUI_EchoMimic", - "files": [ - "https://github.com/smthemex/ComfyUI_EchoMimic" - ], - "install_type": "git-clone", - "description": "You can using [a/EchoMimic](https://github.com/BadToBest/EchoMimic/tree/main) in comfyui,whitch Lifelike Audio-Driven Portrait Animations through Editable Landmark Conditioning " - }, - { - "author": "smthemex", - "title": "ComfyUI_ChatGLM_API", - "id": "chatglm-api", - "reference": "https://github.com/smthemex/ComfyUI_ChatGLM_API", - "files": [ - "https://github.com/smthemex/ComfyUI_ChatGLM_API" - ], - "install_type": "git-clone", - "description": "You can call Chatglm's API in comfyUI to translate and describe pictures, and the API similar to OpenAI." - }, - { - "author": "smthemex", - "title": "ComfyUI_StableAudio_Open", - "id": "stable-audio-open-1.0", - "reference": "https://github.com/smthemex/ComfyUI_StableAudio_Open", - "files": [ - "https://github.com/smthemex/ComfyUI_StableAudio_Open" - ], - "install_type": "git-clone", - "description": "You can use stable-audio-open-1.0 in comfyUI" - }, - { - "author": "smthemex", - "title": "ComfyUI_AnyDoor", - "id": "ComfyUI_AnyDoor", - "reference": "https://github.com/smthemex/ComfyUI_AnyDoor", - "files": [ - "https://github.com/smthemex/ComfyUI_AnyDoor" - ], - "install_type": "git-clone", - "description": "you can using anydoor ,change clothes,object" - }, - { - "author": "smthemex", - "title": "ComfyUI_HiDiffusion_Pro", - "id": "hidiffusion-pro", - "reference": "https://github.com/smthemex/ComfyUI_HiDiffusion_Pro", - "files": [ - "https://github.com/smthemex/ComfyUI_HiDiffusion_Pro" - ], - "install_type": "git-clone", - "description": "A HiDiffusion node for ComfyUI." - }, - { - "author": "smthemex", - "title": "ComfyUI_StoryDiffusion", - "id": "StoryDiffusion", - "reference": "https://github.com/smthemex/ComfyUI_StoryDiffusion", - "files": [ - "https://github.com/smthemex/ComfyUI_StoryDiffusion" - ], - "install_type": "git-clone", - "description": "you can using sotry-diffusion in comfyui" - }, - { - "author": "smthemex", - "title": "ComfyUI_MS_Diffusion", - "id": "MS_Diffusion", - "reference": "https://github.com/smthemex/ComfyUI_MS_Diffusion", - "files": [ - "https://github.com/smthemex/ComfyUI_MS_Diffusion" - ], - "install_type": "git-clone", - "description": "you can make story in comfyUI using MS-diffusion" - }, - { - "author": "smthemex", - "title": "ComfyUI_Pic2Story", - "id": "pic2story", - "reference": "https://github.com/smthemex/ComfyUI_Pic2Story", - "files": [ - "https://github.com/smthemex/ComfyUI_Pic2Story" - ], - "install_type": "git-clone", - "description": "you can using pic2story in comfyUI" - }, - { - "author": "smthemex", - "title": "ComfyUI_Llama3_8B", - "id": "llama3-8b", - "reference": "https://github.com/smthemex/ComfyUI_Llama3_8B", - "files": [ - "https://github.com/smthemex/ComfyUI_Llama3_8B" - ], - "install_type": "git-clone", - "description": "Llama3_8B for comfyUI, using pipeline workflow." - }, - { - "author": "smthemex", - "title": "ComfyUI_ParlerTTS", - "id": "parlertts", - "reference": "https://github.com/smthemex/ComfyUI_ParlerTTS", - "files": [ - "https://github.com/smthemex/ComfyUI_ParlerTTS" - ], - "install_type": "git-clone", - "description": "Parler-TTS is a lightweight text-to-speech (TTS) model that can generate high-quality, natural sounding speech in the style of a given speaker (gender, pitch, speaking style, etc)" - }, - { - "author": "smthemex", - "title": "ComfyUI_Pipeline_Tool", - "id": "pipeline-tool", - "reference": "https://github.com/smthemex/ComfyUI_Pipeline_Tool", - "files": [ - "https://github.com/smthemex/ComfyUI_Pipeline_Tool" - ], - "install_type": "git-clone", - "description": "A tool for novice users in Chinese Mainland to call the huggingface hub and download the huggingface models." - }, - { - "author": "smthemex", - "title": "ComfyUI_ID_Animator", - "id": "id-animator", - "reference": "https://github.com/smthemex/ComfyUI_ID_Animator", - "files": [ - "https://github.com/smthemex/ComfyUI_ID_Animator" - ], - "install_type": "git-clone", - "description": "This node allows you to use ID_Animator, the zero shot video generation model" - }, - { - "author": "smthemex", - "title": "ComfyUI_CustomNet", - "id": "customnet", - "reference": "https://github.com/smthemex/ComfyUI_CustomNet", - "files": [ - "https://github.com/smthemex/ComfyUI_CustomNet" - ], - "install_type": "git-clone", - "description": "you can using customnet in comfyUI" - }, - { - "author": "smthemex", - "title": "ComfyUI_Pops", - "id": "pops", - "reference": "https://github.com/smthemex/ComfyUI_Pops", - "files": [ - "https://github.com/smthemex/ComfyUI_Pops" - ], - "install_type": "git-clone", - "description": "You can use [a/Popspaper](https://popspaper.github.io/pOps/) method in comfyUI" - }, - { - "author": "smthemex", - "title": "ComfyUI_Streamv2v_Plus", - "id": "streamv2v", - "reference": "https://github.com/smthemex/ComfyUI_Streamv2v_Plus", - "files": [ - "https://github.com/smthemex/ComfyUI_Streamv2v_Plus" - ], - "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": "smthemex", - "title": "ComfyUI_CSGO_Wrapper", - "id": "comfyui_csgo_wrapper", - "reference": "https://github.com/smthemex/ComfyUI_CSGO_Wrapper", - "files": [ - "https://github.com/smthemex/ComfyUI_CSGO_Wrapper" - ], - "install_type": "git-clone", - "description": "using InstantX's CSGO in comfyUI for style" - }, - { - "author": "smthemex", - "title": "ComfyUI_DeepFakeDefenders", - "id": "comfyui_deepfakedefenders", - "reference": "https://github.com/smthemex/ComfyUI_DeepFakeDefenders", - "files": [ - "https://github.com/smthemex/ComfyUI_DeepFakeDefenders" - ], - "install_type": "git-clone", - "description": "ou can using DeepFakeDefenders in comfyUI to Prediction image is a DeepFake img or not." - }, - { - "author": "smthemex", - "title": "ComfyUI_Sapiens", - "reference": "https://github.com/smthemex/ComfyUI_Sapiens", - "files": [ - "https://github.com/smthemex/ComfyUI_Sapiens" - ], - "install_type": "git-clone", - "description": "You can call Using Sapiens to get seg,normal,pose,depth,mask maps. Sapiens From: [a/facebookresearch/sapiens](https://github.com/facebookresearch/sapiens)" - }, - { - "author": "smthemex", - "title": "ComfyUI_Hallo2", - "reference": "https://github.com/smthemex/ComfyUI_Hallo2", - "files": [ - "https://github.com/smthemex/ComfyUI_Hallo2" - ], - "install_type": "git-clone", - "description": "Long-Duration and High-Resolution Audio-driven Portrait Image Animation," - }, - { - "author": "smthemex", - "title": "ComfyUI_OmniParser", - "reference": "https://github.com/smthemex/ComfyUI_OmniParser", - "files": [ - "https://github.com/smthemex/ComfyUI_OmniParser" - ], - "install_type": "git-clone", - "description": "Try [a/OmniParser](https://github.com/microsoft/OmniParser) in ComfyUI which a simple screen parsing tool towards pure vision based GUI agent." - }, - { - "author": "smthemex", - "title": "ComfyUI_Demucs", - "reference": "https://github.com/smthemex/ComfyUI_Demucs", - "files": [ - "https://github.com/smthemex/ComfyUI_Demucs" - ], - "install_type": "git-clone", - "description": "Using Demucs in comfyUI, make Music Source Separation" - }, - { - "author": "smthemex", - "title": "ComfyUI_InstantIR_Wrapper", - "reference": "https://github.com/smthemex/ComfyUI_InstantIR_Wrapper", - "files": [ - "https://github.com/smthemex/ComfyUI_InstantIR_Wrapper" - ], - "install_type": "git-clone", - "description": "You can InstantIR to Fix blurry photos in ComfyUI ,[a/InstantIR](https://github.com/instantX-research/InstantIR):Blind Image Restoration with Instant Generative Reference" - }, - { - "author": "smthemex", - "title": "ComfyUI_Face_Anon_Simple", - "reference": "https://github.com/smthemex/ComfyUI_Face_Anon_Simple", - "files": [ - "https://github.com/smthemex/ComfyUI_Face_Anon_Simple" - ], - "install_type": "git-clone", - "description": "Face Anonymization make simple and easy." - }, - { - "author": "smthemex", - "title": "ComfyUI_PBR_Maker", - "reference": "https://github.com/smthemex/ComfyUI_PBR_Maker", - "files": [ - "https://github.com/smthemex/ComfyUI_PBR_Maker" - ], - "install_type": "git-clone", - "description": "you can make PBR in comfyUI" - }, - { - "author": "smthemex", - "title": "ComfyUI_TRELLIS", - "reference": "https://github.com/smthemex/ComfyUI_TRELLIS", - "files": [ - "https://github.com/smthemex/ComfyUI_TRELLIS" - ], - "install_type": "git-clone", - "description": "You can use TRELLIS in comfyUI\n[a/TRELLIS](https://github.com/microsoft/TRELLIS/tree/main), Structured 3D Latents for Scalable and Versatile 3D Generation" - }, - { - "author": "smthemex", - "title": "ComfyUI_SVFR", - "reference": "https://github.com/smthemex/ComfyUI_SVFR", - "files": [ - "https://github.com/smthemex/ComfyUI_SVFR" - ], - "install_type": "git-clone", - "description": "SVFR is a unified framework for face video restoration that supports tasks such as BFR, Colorization, Inpainting,you can use it in ComfyUI" - }, - { - "author": "smthemex", - "title": "ComfyUI_MangaNinjia", - "reference": "https://github.com/smthemex/ComfyUI_MangaNinjia", - "files": [ - "https://github.com/smthemex/ComfyUI_MangaNinjia" - ], - "install_type": "git-clone", - "description": "ComfyUI_MangaNinjia is a ComfyUI node of MangaNinja which is a Line Art Colorization with Precise Reference Following method." - }, - { - "author": "choey", - "title": "Comfy-Topaz", - "id": "topaz", - "reference": "https://github.com/choey/Comfy-Topaz", - "files": [ - "https://github.com/choey/Comfy-Topaz" - ], - "install_type": "git-clone", - "description": "Comfy-Topaz is a custom node for ComfyUI, which integrates with Topaz Photo AI to enhance (upscale, sharpen, denoise, etc.) images, allowing this traditionally asynchronous step to become a part of ComfyUI workflows.\nNOTE:Licensed installation of Topaz Photo AI" - }, - { - "author": "ALatentPlace", - "title": "ComfyUI_yanc", - "id": "yanc-alatentplace", - "reference": "https://github.com/ALatentPlace/ComfyUI_yanc", - "files": [ - "https://github.com/ALatentPlace/ComfyUI_yanc" - ], - "install_type": "git-clone", - "description": "Yet Another Node Collection. Adds some useful nodes, check out the GitHub page for more details." - }, - { - "author": "Wicloz", - "title": "ComfyUI Simply Nodes", - "reference": "https://github.com/Wicloz/ComfyUI-Simply-Nodes", - "files": [ - "https://github.com/Wicloz/ComfyUI-Simply-Nodes" - ], - "install_type": "git-clone", - "description": "Simple nodes to help clean up your workflow, mostly focussed on text operations." - }, - { - "author": "wandbrandon", - "title": "comfyui-pixel", - "id": "pixel", - "reference": "https://github.com/wandbrandon/comfyui-pixel", - "files": [ - "https://github.com/wandbrandon/comfyui-pixel" - ], - "install_type": "git-clone", - "description": "pixel art workshop nodes for comfyui." - }, - { - "author": "nullquant", - "title": "BrushNet", - "id": "brushnet", - "reference": "https://github.com/nullquant/ComfyUI-BrushNet", - "files": [ - "https://github.com/nullquant/ComfyUI-BrushNet" - ], - "install_type": "git-clone", - "description": "These are custom nodes for ComfyUI native implementation of [a/BrushNet](https://arxiv.org/abs/2403.06976) (inpaint), PowerPaint (inpaint, object removal) and HiDiffusion (higher resolution for SD15 and SDXL)" - }, - { - "author": "pamparamm", - "title": "sd-perturbed-attention", - "id": "pag", - "reference": "https://github.com/pamparamm/sd-perturbed-attention", - "files": [ - "https://github.com/pamparamm/sd-perturbed-attention" - ], - "install_type": "git-clone", - "description": "Perturbed-Attention Guidance, Smoothed Energy Guidance and Sliding Window Guidance for ComfyUI and SD Forge/reForge. (PAG)" - }, - { - "author": "pamparamm", - "title": "ComfyUI Vectorscope CC", - "id": "vectorscope", - "reference": "https://github.com/pamparamm/ComfyUI-vectorscope-cc", - "files": [ - "https://github.com/pamparamm/ComfyUI-vectorscope-cc" - ], - "install_type": "git-clone", - "description": "ComfyUI port of Vectorscope CC and Diffusion Color Grading by Haoming02. Makes it possible to adjust Brightness/Contrast/Saturation/Hue during image generation." - }, - { - "author": "pamparamm", - "title": "ComfyUI-ppm", - "id": "comfyui-ppm", - "reference": "https://github.com/pamparamm/ComfyUI-ppm", - "files": [ - "https://github.com/pamparamm/ComfyUI-ppm" - ], - "install_type": "git-clone", - "description": "Fixed AttentionCouple, NegPip(negative weights in prompts) for SDXL and FLUX, more CFG++ and SMEA DY samplers, etc." - }, - { - "author": "unwdef", - "title": "unwdef-nodes", - "reference": "https://github.com/unwdef/unwdef-nodes-comfyui", - "files": [ - "https://github.com/unwdef/unwdef-nodes-comfyui" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI by unwdef." - }, - { - "author": "fevre27", - "title": "Self-Guidance nodes", - "id": "self-guidance", - "reference": "https://github.com/forever22777/comfyui-self-guidance", - "files": [ - "https://github.com/forever22777/comfyui-self-guidance" - ], - "install_type": "git-clone", - "description": "Unofficial ComfyUI implementation of Self-Guidance." - }, - { - "author": "aburahamu", - "title": "ComfyUI-RequestPoster", - "id": "request-poster", - "reference": "https://github.com/aburahamu/ComfyUI-RequestsPoster", - "files": [ - "https://github.com/aburahamu/ComfyUI-RequestsPoster" - ], - "install_type": "git-clone", - "description": "This extension can send HTTP Requests. You can request image generation to StableDiffusion3 and post images to X (Twitter) and Discord." - }, - { - "author": "aburahamu", - "title": "ComfyUI-IsNiceParts", - "id": "isniceparts", - "reference": "https://github.com/aburahamu/ComfyUI-IsNiceParts", - "files": [ - "https://github.com/aburahamu/ComfyUI-IsNiceParts" - ], - "install_type": "git-clone", - "description": "This custom node detects body parts (currently only hands) from the received image and outputs the image if the skeleton can be estimated." - }, - { - "author": "Sorcerio", - "title": "MBM's Music Visualizer", - "reference": "https://github.com/Sorcerio/MBM-Music-Visualizer", - "files": [ - "https://github.com/Sorcerio/MBM-Music-Visualizer" - ], - "install_type": "git-clone", - "description": "An image generation based music visualizer integrated into comfyanonymous/ComfyUI as custom nodes." - }, - { - "author": "quadmoon", - "title": "quadmoon's ComfyUI nodes", - "reference": "https://github.com/traugdor/ComfyUI-quadMoons-nodes", - "files": [ - "https://github.com/traugdor/ComfyUI-quadMoons-nodes" - ], - "install_type": "git-clone", - "description": "These are just some nodes I wanted and couldn't find where anyone else had made them yet." - }, - { - "author": "quadme7macoon", - "title": "ComfyUI-ShadertoyGL", - "reference": "https://github.com/e7mac/ComfyUI-ShadertoyGL", - "files": [ - "https://github.com/e7mac/ComfyUI-ShadertoyGL" - ], - "install_type": "git-clone", - "description": "Nodes:Shadertoy, Shader, ColorChannelOffset." - }, - { - "author": "royceschultz", - "title": "ComfyUI-TranscriptionTools", - "id": "transcription-tools", - "reference": "https://github.com/royceschultz/ComfyUI-TranscriptionTools", - "files": [ - "https://github.com/royceschultz/ComfyUI-TranscriptionTools" - ], - "install_type": "git-clone", - "description": "Transcribe audio and video files in ComfyUI." - }, - { - "author": "kunieone", - "title": "ComfyUI_alkaid", - "id": "alkadi", - "reference": "https://github.com/kunieone/ComfyUI_alkaid", - "files": [ - "https://github.com/kunieone/ComfyUI_alkaid" - ], - "install_type": "git-clone", - "description": "Nodes:A_Face3DSwapper, A_FaceCrop, A_FacePaste, A_OpenPosePreprocessor, A_EmptyLatentImageLongside, A_GetImageSize, AlkaidLoader, AdapterFaceLoader, AdapterStyleLoader, ..." - }, - { - "author": "txt2any", - "title": "ComfyUI-PromptOrganizer", - "id": "prompt-organizer", - "reference": "https://github.com/txt2any/ComfyUI-PromptOrganizer", - "files": [ - "https://github.com/txt2any/ComfyUI-PromptOrganizer" - ], - "install_type": "git-clone", - "description": "This is a custom node for ComfyUI that automatically saves your AI-generated images specifically to [a/www.txt2any.com](http://www.txt2any.com/)." - }, - { - "author": "kealiu", - "title": "ComfyUI Load and Save file to S3", - "id": "savefile-to-s3", - "reference": "https://github.com/kealiu/ComfyUI-S3-Tools", - "files": [ - "https://github.com/kealiu/ComfyUI-S3-Tools" - ], - "install_type": "git-clone", - "description": "Nodes:Load From S3, Save To S3." - }, - { - "author": "kealiu", - "title": "ComfyUI-ZeroShot-MTrans", - "id": "zeroshot-mtrans", - "reference": "https://github.com/kealiu/ComfyUI-ZeroShot-MTrans", - "files": [ - "https://github.com/kealiu/ComfyUI-ZeroShot-MTrans" - ], - "install_type": "git-clone", - "description": "An unofficial ComfyUI custom node for [a/Zero-Shot Material Transfer from a Single Image](https://ttchengab.github.io/zest), Given an input image (e.g., a photo of an apple) and a single material exemplar image (e.g., a golden bowl), ZeST can transfer the gold material from the exemplar onto the apple with accurate lighting cues while making everything else consistent." - }, - { - "author": "kealiu", - "title": "ComfyUI-Zero123-Porting", - "id": "zero123-porting", - "reference": "https://github.com/kealiu/ComfyUI-Zero123-Porting", - "files": [ - "https://github.com/kealiu/ComfyUI-Zero123-Porting" - ], - "install_type": "git-clone", - "description": "Zero-1-to-3: Zero-shot One Image to 3D Object, unofficial porting of original [Zero123](https://github.com/cvlab-columbia/zero123)" - }, - { - "author": "TashaSkyUp", - "title": "ComfyUI_LiteLLM", - "id": "litellm", - "reference": "https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM", - "files": [ - "https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM" - ], - "install_type": "git-clone", - "description": "Nodes for calling LLMs, enabled by LiteLLM" - }, - { - "author": "AonekoSS", - "title": "ComfyUI-SimpleCounter", - "id": "simplecounter", - "reference": "https://github.com/AonekoSS/ComfyUI-SimpleCounter", - "files": [ - "https://github.com/AonekoSS/ComfyUI-SimpleCounter" - ], - "install_type": "git-clone", - "description": "Node: utils/Simple Counter\nThis node is a simple counter, when pressing 'Queue Prompt' resets the count." - }, - { - "author": "AonekoSS", - "title": "ComfyUI-LoRA-Tuner", - "id": "lora-tuner", - "reference": "https://github.com/AonekoSS/ComfyUI-LoRA-Tuner", - "files": [ - "https://github.com/AonekoSS/ComfyUI-LoRA-Tuner" - ], - "install_type": "git-clone", - "description": "Nodes: LoRA-Tuner. For using multiple LoRA easily." - }, - { - "author": "heshengtao", - "title": "comfyui_LLM_party", - "id": "llm-party", - "reference": "https://github.com/heshengtao/comfyui_LLM_party", - "files": [ - "https://github.com/heshengtao/comfyui_LLM_party" - ], - "install_type": "git-clone", - "description": "A set of block-based LLM agent node libraries designed for ComfyUI.This project aims to develop a complete set of nodes for LLM workflow construction based on comfyui. It allows users to quickly and conveniently build their own LLM workflows and easily integrate them into their existing SD workflows." - }, - { - "author": "heshengtao", - "title": "comfyui_LLM_schools", - "reference": "https://github.com/heshengtao/comfyui_LLM_schools", - "files": [ - "https://github.com/heshengtao/comfyui_LLM_schools" - ], - "install_type": "git-clone", - "description": "ComfyUI node library for fine-tuning LLMs" - }, - { - "author": "VAST-AI-Research", - "title": "Tripo for ComfyUI", - "id": "tripo", - "reference": "https://github.com/VAST-AI-Research/ComfyUI-Tripo", - "files": [ - "https://github.com/VAST-AI-Research/ComfyUI-Tripo" - ], - "install_type": "git-clone", - "description": "Custom nodes for using [a/Tripo](https://www.tripo3d.ai/) in ComfyUI to create 3D from text and image prompts." - }, - { - "author": "JettHu", - "title": "ComfyUI_TGate", - "id": "tgate", - "reference": "https://github.com/JettHu/ComfyUI_TGate", - "files": [ - "https://github.com/JettHu/ComfyUI_TGate" - ], - "install_type": "git-clone", - "description": "ComfyUI reference implementation for [a/T-GATE](https://github.com/HaozheLiu-ST/T-GATE)." - }, - { - "author": "JettHu", - "title": "ComfyUI-TCD", - "id": "jetthu-tcd", - "reference": "https://github.com/JettHu/ComfyUI-TCD", - "files": [ - "https://github.com/JettHu/ComfyUI-TCD" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation for [a/TCD](https://github.com/jabir-zheng/TCD)." - }, - { - "author": "sugarkwork", - "title": "comfyui_tag_filter", - "id": "tag-filter", - "reference": "https://github.com/sugarkwork/comfyui_tag_fillter", - "files": [ - "https://github.com/sugarkwork/comfyui_tag_fillter" - ], - "install_type": "git-clone", - "description": "This is a custom node of ComfyUI that categorizes tags outputted by tools like WD14Tagger, filters them by each category, and returns the filtered results." - }, - { - "author": "Intersection98", - "title": "ComfyUI-MX-post-processing-nodes", - "reference": "https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes", - "files": [ - "https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes" - ], - "install_type": "git-clone", - "description": "A collection of post processing nodes for ComfyUI, dds image post-processing adjustment capabilities to the ComfyUI." - }, - { - "author": "TencentQQGYLab", - "title": "ComfyUI-ELLA", - "id": "ella", - "reference": "https://github.com/TencentQQGYLab/ComfyUI-ELLA", - "files": [ - "https://github.com/TencentQQGYLab/ComfyUI-ELLA" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation for [a/ELLA](https://github.com/TencentQQGYLab/ELLA)." - }, - { - "author": "DarKDinDoN", - "title": "ComfyUI Checkpoint Automatic Config", - "id": "checkpoint-autoconfig", - "reference": "https://github.com/mech-tools/comfyui-checkpoint-automatic-config", - "files": [ - "https://github.com/mech-tools/comfyui-checkpoint-automatic-config" - ], - "install_type": "git-clone", - "description": "This node was designed to help with checkpoint configuration. Fee free to add new checkpoint configurations!" - }, - { - "author": "MinusZoneAI", - "title": "ComfyUI-Prompt-MZ", - "id": "prompt-mz", - "reference": "https://github.com/MinusZoneAI/ComfyUI-Prompt-MZ", - "files": [ - "https://github.com/MinusZoneAI/ComfyUI-Prompt-MZ" - ], - "install_type": "git-clone", - "description": "Use llama.cpp to help generate some nodes for prompt word related work" - }, - { - "author": "MinusZoneAI", - "title": "ComfyUI-StylizePhoto-MZ", - "id": "stylizephoto", - "reference": "https://github.com/MinusZoneAI/ComfyUI-StylizePhoto-MZ", - "files": [ - "https://github.com/MinusZoneAI/ComfyUI-StylizePhoto-MZ" - ], - "install_type": "git-clone", - "description": "A stylized node with simple operation. The effect is achieved by I2I and lora. The clay style is currently implemented.Comes with watermark function." - }, - { - "author": "MinusZoneAI", - "title": "ComfyUI-TrainTools-MZ", - "id": "traintools", - "reference": "https://github.com/MinusZoneAI/ComfyUI-TrainTools-MZ", - "files": [ - "https://github.com/MinusZoneAI/ComfyUI-TrainTools-MZ" - ], - "install_type": "git-clone", - "description": "Nodes for fine-tuning lora in ComfyUI, dependent on training tools such as kohya-ss/sd-scripts" - }, - { - "author": "MinusZoneAI", - "title": "ComfyUI-Kolors-MZ", - "id": "kolors-mz", - "reference": "https://github.com/MinusZoneAI/ComfyUI-Kolors-MZ", - "files": [ - "https://github.com/MinusZoneAI/ComfyUI-Kolors-MZ" - ], - "install_type": "git-clone", - "description": "Implementation of Kolors on ComfyUI\nReference from [a/https://github.com/kijai/ComfyUI-KwaiKolorsWrapper](https://github.com/kijai/ComfyUI-KwaiKolorsWrapper)\nUsing ComfyUI Native Sampling" - }, - { - "author": "MinusZoneAI", - "title": "ComfyUI-Flux1Quantize-MZ", - "reference": "https://github.com/MinusZoneAI/ComfyUI-Flux1Quantize-MZ", - "files": [ - "https://github.com/MinusZoneAI/ComfyUI-Flux1Quantize-MZ" - ], - "pip": ["git+https://github.com/IST-DASLab/marlin"], - "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": "MinusZoneAI", - "title": "ComfyUI-CogVideoX-MZ", - "reference": "https://github.com/MinusZoneAI/ComfyUI-CogVideoX-MZ", - "files": [ - "https://github.com/MinusZoneAI/ComfyUI-CogVideoX-MZ" - ], - "install_type": "git-clone", - "description": "Nodes:MZ_CogVideoXLoader" - }, - { - "author": "blueraincoatli", - "title": "comfyUI_SillyNodes", - "id": "silly", - "reference": "https://github.com/blueraincoatli/comfyUI_SillyNodes", - "files": [ - "https://github.com/blueraincoatli/comfyUI_SillyNodes" - ], - "install_type": "git-clone", - "description": "Using rgthree's fast_group_muter and bookmark nodes, introduce the pyautogui library to simulate clicks and hotkeys, and run groups in sequence. screen manipulation is involved" - }, - { - "author": "ty0x2333", - "title": "ComfyUI-Dev-Utils", - "id": "dev-utils", - "reference": "https://github.com/ty0x2333/ComfyUI-Dev-Utils", - "files": [ - "https://github.com/ty0x2333/ComfyUI-Dev-Utils" - ], - "install_type": "git-clone", - "description": "Execution Time Analysis, Reroute Enhancement, Node collection for developers." - }, - { - "author": "lquesada", - "title": "ComfyUI-Prompt-Combinator", - "id": "prompt-combinator", - "reference": "https://github.com/lquesada/ComfyUI-Prompt-Combinator", - "files": [ - "https://github.com/lquesada/ComfyUI-Prompt-Combinator" - ], - "install_type": "git-clone", - "description": "'🔢 Prompt Combinator' is a node that generates all possible combinations of prompts from several lists of strings.\n'🔢 Prompt Combinator Merger' is a node that enables merging the output of two different '🔢 Prompt Combinator' nodes." - }, - { - "author": "lquesada", - "title": "ComfyUI-Inpaint-CropAndStitch", - "id": "crop-and-stitch", - "reference": "https://github.com/lquesada/ComfyUI-Inpaint-CropAndStitch", - "files": [ - "https://github.com/lquesada/ComfyUI-Inpaint-CropAndStitch" - ], - "install_type": "git-clone", - "description": "'✂️ Inpaint Crop' is a node that crops an image before sampling. The context area can be specified via the mask, expand pixels and expand factor or via a separate (optional) mask.\n'✂️ Inpaint Stitch' is a node that stitches the inpainted image back into the original image without altering unmasked areas." - }, - { - "author": "lquesada", - "title": "ComfyUI-Interactive", - "id": "interactive", - "reference": "https://github.com/lquesada/ComfyUI-Interactive", - "files": [ - "https://github.com/lquesada/ComfyUI-Interactive" - ], - "install_type": "git-clone", - "description": "Nodes that allow making the UI interactive, with selectors and switches. Enables selecting across multiple options with the click of a button to move a workflow forward." - }, - { - "author": "randjtw", - "title": "advance-aesthetic-score", - "reference": "https://github.com/randjtw/advance-aesthetic-score", - "files": [ - "https://github.com/randjtw/advance-aesthetic-score" - ], - "install_type": "git-clone", - "description": "Nodes:Advance Aesthetic Score" - }, - { - "author": "FredBill1", - "title": "comfyui-fb-utils", - "id": "fb-utils", - "reference": "https://github.com/FredBill1/comfyui-fb-utils", - "files": [ - "https://github.com/FredBill1/comfyui-fb-utils" - ], - "install_type": "git-clone", - "description": "Nodes:FBStringJoin, FBStringSplit, FBMultilineStringList, FBMultilineString" - }, - { - "author": "jeffy5", - "title": "Faceless Node for ComfyUI", - "id": "faceless", - "reference": "https://github.com/jeffy5/comfyui-faceless-node", - "files": [ - "https://github.com/jeffy5/comfyui-faceless-node" - ], - "install_type": "git-clone", - "description": "A facefusion custom node for ComfyUI. Swap or restore faces for image or video" - }, - { - "author": "TaiTair", - "title": "Simswap Node for ComfyUI", - "id": "simswap", - "reference": "https://github.com/TaiTair/comfyui-simswap", - "files": [ - "https://github.com/TaiTair/comfyui-simswap" - ], - "install_type": "git-clone", - "description": "A hacky implementation of Simswap based on [a/Comfyui ReActor Node 0.5.1](https://github.com/Gourieff/comfyui-reactor-node) and [a/Simswap](https://github.com/neuralchen/SimSwap)." - }, - { - "author": "fofr", - "title": "ComfyUI-HyperSDXL1StepUnetScheduler (ByteDance)", - "id": "hypersdxl", - "reference": "https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler", - "files": [ - "https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler" - ], - "install_type": "git-clone", - "description": "Original author is ByteDance.\nComfyUI sampler for HyperSDXL UNet\nPorted from: [a/https://huggingface.co/ByteDance/Hyper-SD](https://huggingface.co/ByteDance/Hyper-SD)" - }, - { - "author": "fofr", - "title": "ComfyUI-Prompter-fofrAI", - "id": "prompter-fofr", - "reference": "https://github.com/fofr/ComfyUI-Prompter-fofrAI", - "files": [ - "https://github.com/fofr/ComfyUI-Prompter-fofrAI" - ], - "install_type": "git-clone", - "description": "A prompt helper for ComfyUI, based on [a/prompter.fofr.ai](https://prompter.fofr.ai)" - }, - { - "author": "fofr", - "title": "comfyui-fofr-toolkit", - "id": "fofr-toolkit", - "reference": "https://github.com/fofr/comfyui-fofr-toolkit", - "files": [ - "https://github.com/fofr/comfyui-fofr-toolkit" - ], - "install_type": "git-clone", - "description": "Nodes:Incrementer, Width and height from aspect ratio, Width and height for scaling image to ideal resolutio. A simple set of tooling nodes." - }, - { - "author": "fofr", - "title": "ComfyUI-Replicate", - "reference": "https://github.com/replicate/comfyui-replicate", - "files": [ - "https://github.com/replicate/comfyui-replicate" - ], - "install_type": "git-clone", - "description": "Run [a/Replicate models](https://replicate.com/explore) in ComfyUI." - }, - { - "author": "cfreilich", - "title": "Virtuoso Nodes for ComfyUI", - "id": "virtuoso", - "reference": "https://github.com/chrisfreilich/virtuoso-nodes", - "files": [ - "https://github.com/chrisfreilich/virtuoso-nodes" - ], - "install_type": "git-clone", - "description": "Photoshop type functions and adjustment layers: 30 blend modes, Selective Color, Blend If, Color Balance, Solid Color Images, Black and White, Hue/Saturation, Levels, and RGB Splitting and Merging." - }, - { - "author": "da2el-ai", - "title": "D2 Nodes ComfyUI", - "id": "d2-nodes-comfyui", - "reference": "https://github.com/da2el-ai/D2-nodes-ComfyUI", - "files": [ - "https://github.com/da2el-ai/D2-nodes-ComfyUI" - ], - "install_type": "git-clone", - "description": "This is a collection of custom nodes that make ComfyUI slightly more convenient." - }, - { - "author": "da2el-ai", - "title": "D2 Steps", - "id": "d2steps", - "reference": "https://github.com/da2el-ai/ComfyUI-d2-steps", - "files": [ - "https://github.com/da2el-ai/ComfyUI-d2-steps" - ], - "install_type": "git-clone", - "description": "A handy custom node for using Refiner (switching to a different checkpoint midway) When you specify the end of the base checkpoint, you can extract refiner_start which is end + 1. The output is fixed as an INT, so it can be passed to the handy custom node, Anything Everywhere? Since it only outputs a numerical value, it can also be used for other purposes." - }, - { - "author": "da2el-ai", - "title": "D2 Size Selector", - "id": "size-selector", - "reference": "https://github.com/da2el-ai/ComfyUI-d2-size-selector", - "files": [ - "https://github.com/da2el-ai/ComfyUI-d2-size-selector" - ], - "install_type": "git-clone", - "description": "This is a custom node that allows you to easily call up and set image size presets. Settings can be made by editing the included config.yaml. It is almost identical to Comfyroll Studio's CR AspectRatio. I created it because I wanted to easily edit the presets." - }, - { - "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": "Send images generated by ComfyUI to Eagle image management software" - }, - { - "author": "da2el-ai", - "title": "D2 XYPlot Utils", - "reference": "https://github.com/da2el-ai/ComfyUI-d2-xyplot-utils", - "files": [ - "https://github.com/da2el-ai/ComfyUI-d2-xyplot-utils" - ], - "install_type": "git-clone", - "description": "Custom node for using Prompt S/R in XY Plot\nAlso includes nodes for listing generic parameters like seed and cfg\nEasy to manipulate as elements are separated by line breaks\nDesigned for use with the XY Plot custom node qq-nodes-comfyui, but may work with other custom nodes as well" - }, - { - "author": "nat-chan", - "title": "ComfyUI-Transceiver📡", - "id": "transceiver", - "reference": "https://github.com/nat-chan/comfyui-transceiver", - "files": [ - "https://github.com/nat-chan/comfyui-transceiver" - ], - "install_type": "git-clone", - "description": "Transceiver is a python library that swiftly exchanges fundamental data structures, specifically numpy arrays, between processes, optimizing AI inference tasks that utilize ComfyUI." - }, - { - "author": "nat-chan", - "title": "ComfyUI-graphToPrompt", - "id": "graph2prompt", - "reference": "https://github.com/nat-chan/ComfyUI-graphToPrompt", - "files": [ - "https://github.com/nat-chan/ComfyUI-graphToPrompt" - ], - "install_type": "git-clone", - "description": "workflow.json -> workflow_api.json" - }, - { - "author": "web3nomad", - "title": "ComfyUI Invisible Watermark", - "id": "invisible-watermark", - "reference": "https://github.com/web3nomad/ComfyUI_Invisible_Watermark", - "files": [ - "https://github.com/web3nomad/ComfyUI_Invisible_Watermark" - ], - "install_type": "git-clone", - "description": "Nodes: InvisibleWatermarkEncode" - }, - { - "author": "GentlemanHu", - "title": "ComfyUI Suno API", - "id": "suno-api", - "reference": "https://github.com/GentlemanHu/ComfyUI-SunoAI", - "files": [ - "https://github.com/GentlemanHu/ComfyUI-SunoAI" - ], - "install_type": "git-clone", - "description": "An unofficial Python library for [a/Suno AI](https://www.suno.ai/) API" - }, - { - "author": "TemryL", - "title": "ComfyUI-IDM-VTON [WIP]", - "id": "idm-vton", - "reference": "https://github.com/TemryL/ComfyUI-IDM-VTON", - "files": [ - "https://github.com/TemryL/ComfyUI-IDM-VTON" - ], - "install_type": "git-clone", - "description": "ComfyUI adaptation of [a/IDM-VTON](https://github.com/yisol/IDM-VTON) for virtual try-on." - }, - { - "author": "NStor", - "title": "ComfyUI-RUS localization", - "reference": "https://github.com/Nestorchik/NStor-ComfyUI-Translation", - "files": [ - "https://github.com/Nestorchik/NStor-ComfyUI-Translation" - ], - "install_type": "git-clone", - "description": "Russian localization of ComfyUI, ComafyUI-Manager & more..." - }, - { - "author": "jax-explorer", - "title": "fast_video_comfyui", - "reference": "https://github.com/jax-explorer/fast_video_comfyui", - "files": [ - "https://github.com/jax-explorer/fast_video_comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:FastImageListToImageBatch" - }, - { - "author": "sugarkwork", - "title": "comfyui_cohere", - "id": "cohere", - "reference": "https://github.com/sugarkwork/comfyui_cohere", - "files": [ - "https://github.com/sugarkwork/comfyui_cohere" - ], - "install_type": "git-clone", - "description": "This is a node for using cohere (Command R+) from ComfyUI. You need to edit the startup .bat file of ComfyUI and describe the API key obtained from Cohere as follows." - }, - { - "author": "alessandrozonta", - "title": "ComfyUI-CenterNode", - "id": "comfyui-centernode", - "reference": "https://github.com/alessandrozonta/ComfyUI-CenterNode", - "files": [ - "https://github.com/alessandrozonta/ComfyUI-CenterNode" - ], - "install_type": "git-clone", - "description": "This extension contains a custom node for ComfyUI. The node, called 'Bounding Box Crop', is designed to compute the top-left coordinates of a cropped bounding box based on input coordinates and dimensions of the final cropped image. It does so computing the center of the cropping area and then computing where the top-left coordinates would be." - }, - { - "author": "alessandrozonta", - "title": "Save Layers Node for ComfyUI", - "id": "layers", - "reference": "https://github.com/alessandrozonta/ComfyUI-Layers", - "files": [ - "https://github.com/alessandrozonta/ComfyUI-Layers" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI allows you to create layers of an image based on input masks and save them into a PSD file." - }, - { - "author": "alessandrozonta", - "title": "OpenPose Node", - "id": "openpose-alessandrozonta", - "reference": "https://github.com/alessandrozonta/ComfyUI-OpenPose", - "files": [ - "https://github.com/alessandrozonta/ComfyUI-OpenPose" - ], - "install_type": "git-clone", - "description": "This extension contains a custom node for ComfyUI. The node, called 'Bounding Box Crop', is designed to compute the top-left coordinates of a cropped bounding box based on input coordinates and dimensions of the final cropped image. It does so computing the center of the cropping area and then computing where the top-left coordinates would be." - }, - { - "author": "curiousjp", - "title": "ComfyUI-MaskBatchPermutations", - "id": "maskbatch-permutations", - "reference": "https://github.com/curiousjp/ComfyUI-MaskBatchPermutations", - "files": [ - "https://github.com/curiousjp/ComfyUI-MaskBatchPermutations" - ], - "install_type": "git-clone", - "description": "Permutes a mask batch to present possible additive combinations. Passing a mask batch (e.g. out of [a/SEGS to Mask Batch](https://github.com/ltdrdata/ComfyUI-Impact-Pack)) will return a new mask batch representing all the possible combinations of the included masks. So, a mask batch with two mask sections, 'A' and 'B', will return a batch containing an empty mask, an empty mask & A, an empty mask & B, and an empty mask & A & B." - }, - { - "author": "BAIS1C", - "title": "ComfyUI_RSS_Feed_Reader", - "id": "rssfeed", - "reference": "https://github.com/BAIS1C/ComfyUI_RSS_Feed_Reader", - "files": [ - "https://github.com/BAIS1C/ComfyUI_RSS_Feed_Reader" - ], - "install_type": "git-clone", - "description": "A Simple Python RSS Feed Reader to create Prompts in Comfy UI" - }, - { - "author": "runtime44", - "title": "Runtime44 ComfyUI Nodes", - "reference": "https://github.com/runtime44/comfyui_r44_nodes", - "files": [ - "https://github.com/runtime44/comfyui_r44_nodes" - ], - "install_type": "git-clone", - "description": "Nodes: Runtime44Upscaler, Runtime44ColorMatch, Runtime44DynamicKSampler, Runtime44ImageOverlay, Runtime44ImageResizer, Runtime44ImageToNoise, Runtime44MaskSampler, Runtime44TiledMaskSampler, Runtime44IterativeUpscaleFactor, Runtime44ImageEnhance, Runtime44FilmGrain" - }, - { - "author": "osiworx", - "title": "ComfyUI_Prompt-Quill", - "reference": "https://github.com/osi1880vr/prompt_quill_comfyui", - "files": [ - "https://github.com/osi1880vr/prompt_quill_comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:Use Prompt Quill in Comfyui" - }, - { - "author": "philz1337x", - "title": "✨ Clarity AI - Creative Image Upscaler and Enhancer for ComfyUI", - "reference": "https://github.com/philz1337x/ComfyUI-ClarityAI", - "files": [ - "https://github.com/philz1337x/ComfyUI-ClarityAI" - ], - "install_type": "git-clone", - "description": "[a/Clarity AI](https://clarityai.cc) is a creative image enhancer and is able to upscale to high resolution. [w/NOTE: This is a Magnific AI alternative for ComfyUI.] \nCreate an API key on [a/ClarityAI.cc/api](https://clarityai.cc/api) and add to environment variable 'CAI_API_KEY'\nAlternatively you can write your API key to file 'cai_platform_key.txt'\nYou can also use and/or override the above by entering your API key in the 'api_key_override' field of the node." - }, - { - "author": "KoreTeknology", - "title": "ComfyUI Universal Styler", - "id": "universal-styler", - "reference": "https://github.com/KoreTeknology/ComfyUI-Universal-Styler", - "files": [ - "https://github.com/KoreTeknology/ComfyUI-Universal-Styler" - ], - "install_type": "git-clone", - "description": "A research Node based project on Artificial Intelligence using ComfyUI visual editor with Stable diffusion Local processing focus in mind. This custom node is intended to serve the purpose to offer a large palette of prompting scenrarios, based on Public Checkpoint Models OR/AND Private custom Models and LoRas. It includes an integrated learning machine process as well as a set of workflows." - }, - { - "author": "KoreTeknology", - "title": "ComfyUI Production Nodes Pack", - "reference": "https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack", - "files": [ - "https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack" - ], - "install_type": "git-clone", - "description": "This is set of custom nodes for your ComfyUI local installation. It offers the very basic nodes that are missing in the official 'Vanilla' package. It is a research Node based project on Artificial Intelligence using ComfyUI visual editor. This repository also includes a set of workflows to test the nodes.\nNOTE:Renamed from 'ComfyUI-Compositing-Nodes-Pack'" - }, - { - "author": "ZeDarkAdam", - "title": "ComfyUI-Embeddings-Tools", - "id": "embeddings-tools", - "reference": "https://github.com/ZeDarkAdam/ComfyUI-Embeddings-Tools", - "files": [ - "https://github.com/ZeDarkAdam/ComfyUI-Embeddings-Tools" - ], - "install_type": "git-clone", - "description": "EmbeddingsNameLoader, EmbendingList" - }, - { - "author": "chenpx976", - "title": "ComfyUI-RunRunRun", - "id": "runrunrun", - "reference": "https://github.com/chenpx976/ComfyUI-RunRunRun", - "files": [ - "https://github.com/chenpx976/ComfyUI-RunRunRun" - ], - "install_type": "git-clone", - "description": "add http api http://127.0.0.1:8188/comfyui-run/run use in other llm project." - }, - { - "author": "githubYiheng", - "title": "ComfyUI_GetFileNameFromURL", - "id": "getfilename-from-url", - "reference": "https://github.com/githubYiheng/ComfyUI_GetFileNameFromURL", - "files": [ - "https://github.com/githubYiheng/ComfyUI_GetFileNameFromURL" - ], - "install_type": "git-clone", - "description": "GetFileNameFromURL is a ComfyUI custom node that extracts the filename from a URL. It can handle various URLs and is capable of handling redirects." - }, - { - "author": "githubYiheng", - "title": "comfyui_kmeans_filter", - "id": "kmeans-filter", - "reference": "https://github.com/githubYiheng/comfyui_kmeans_filter", - "files": [ - "https://github.com/githubYiheng/comfyui_kmeans_filter" - ], - "install_type": "git-clone", - "description": "Nodes:Apply Kmeans Filter" - }, - { - "author": "githubYiheng", - "title": "ComfyUI_Change_IMAGE_BOREDER", - "id": "change-image-border", - "reference": "https://github.com/githubYiheng/ComfyUI_Change_IMAGE_BOREDER", - "files": [ - "https://github.com/githubYiheng/ComfyUI_Change_IMAGE_BOREDER" - ], - "install_type": "git-clone", - "description": "Nodes:Change Image Border" - }, - { - "author": "githubYiheng", - "title": "comfyui_meanshift_filter", - "id": "meanshift-filter", - "reference": "https://github.com/githubYiheng/comfyui_meanshift_filter", - "files": [ - "https://github.com/githubYiheng/comfyui_meanshift_filter" - ], - "install_type": "git-clone", - "description": "Nodes:Apply Meanshift Filter" - }, - { - "author": "githubYiheng", - "title": "comfyui_private_postprocessor", - "id": "githubyiheng-private-postprocessor", - "reference": "https://github.com/githubYiheng/comfyui_private_postprocessor", - "files": [ - "https://github.com/githubYiheng/comfyui_private_postprocessor" - ], - "install_type": "git-clone", - "description": "Nodes:Private ImageCPostprocessor" - }, - { - "author": "Fihade", - "title": "IC-Light-ComfyUI-Node", - "reference": "https://github.com/Fihade/IC-Light-ComfyUI-Node", - "files": [ - "https://github.com/Fihade/IC-Light-ComfyUI-Node" - ], - "install_type": "git-clone", - "description": "Original repo: [a/https://github.com/lllyasviel/IC-Light](https://github.com/lllyasviel/IC-Light)\nModels: [a/https://huggingface.co/lllyasviel/ic-light/tree/main](https://huggingface.co/lllyasviel/ic-light/tree/main), [a/https://huggingface.co/digiplay/Photon_v1/tree/main](https://huggingface.co/digiplay/Photon_v1/tree/main)\nmodels go into ComfyUI/models/unet" - }, - { - "author": "KewkLW", - "title": "ComfyUI-kewky_tools", - "id": "kewky-tools", - "reference": "https://github.com/KewkLW/ComfyUI-kewky_tools", - "files": [ - "https://github.com/KewkLW/ComfyUI-kewky_tools" - ], - "install_type": "git-clone", - "description": "text_append_node, vramdebugplus, tensordebugplus, animation_schedule_output" - }, - { - "author": "ITurchenko", - "title": "ComfyUI-SizeFromArray", - "id": "sizefromarray", - "reference": "https://github.com/ITurchenko/ComfyUI-SizeFromArray", - "files": [ - "https://github.com/ITurchenko/ComfyUI-SizeFromArray" - ], - "install_type": "git-clone", - "description": "Nodes:SizeFromArray" - }, - { - "author": "Suplex", - "title": "Suplex Misc ComfyUI Nodes", - "id": "suplex", - "reference": "https://github.com/saftle/uber_comfy_nodes", - "files": [ - "https://github.com/saftle/uber_comfy_nodes" - ], - "install_type": "git-clone", - "description": "Misc Nodes: ControlNet Selector Node, Load Optional ControlNet Model, Diffusers Selector, Save Image JPG No Meta, Multi Input Variable Rewrite" - }, - { - "author": "mephisto83", - "title": "petty-paint-comfyui-node", - "id": "petty-paint", - "reference": "https://github.com/mephisto83/petty-paint-comfyui-node", - "files": [ - "https://github.com/mephisto83/petty-paint-comfyui-node" - ], - "install_type": "git-clone", - "description": "An integration between comfy ui and petty paint" - }, - { - "author": "fsdymy1024", - "title": "ComfyUI_fsdymy", - "id": "fsdymy", - "reference": "https://github.com/fsdymy1024/ComfyUI_fsdymy", - "files": [ - "https://github.com/fsdymy1024/ComfyUI_fsdymy" - ], - "install_type": "git-clone", - "description": "Nodes:Save Image Without Metadata" - }, - { - "author": "ray", - "title": "Light Gradient for ComfyUI", - "id": "light-gradient", - "reference": "https://github.com/huagetai/ComfyUI_LightGradient", - "files": [ - "https://github.com/huagetai/ComfyUI_LightGradient" - ], - "install_type": "git-clone", - "description": "Nodes:Image Gradient,Mask Gradient" - }, - { - "author": "ray", - "title": "comfyui's gaffer(ComfyUI native implementation of IC-Light. )", - "id": "gaffer", - "reference": "https://github.com/huagetai/ComfyUI-Gaffer", - "files": [ - "https://github.com/huagetai/ComfyUI-Gaffer" - ], - "install_type": "git-clone", - "description": "Nodes:Load ICLight Model,Apply ICLight,Simple Light Source,Calculate Normal Map" - }, - { - "author": "YFG", - "title": "😸 YFG Comical Nodes", - "id": "comical", - "reference": "https://github.com/gonzalu/ComfyUI_YFG_Comical", - "files": [ - "https://github.com/gonzalu/ComfyUI_YFG_Comical" - ], - "install_type": "git-clone", - "description": "Image Historgram Generator - Outputs a set of images displaying the Histogram of the input image. Nodes: img2histograms, img2histogramsSelf" - }, - { - "author": "ruiqutech", - "title": "RuiquNodes for ComfyUI", - "id": "RuiquNodes", - "reference": "https://github.com/ruiqutech/ComfyUI-RuiquNodes", - "files": [ - "https://github.com/ruiqutech/ComfyUI-RuiquNodes" - ], - "install_type": "git-clone", - "description": "Nodes of EvaluateMultiple1, EvaluateMultiple3...\nSupport the execution of any fragment of Python code, generating multiple outputs from multiple inputs." - }, - { - "author": "teward", - "title": "ComfyUI-Helper-Nodes", - "id": "helper-nodes", - "reference": "https://github.com/teward/ComfyUI-Helper-Nodes", - "files": [ - "https://github.com/teward/ComfyUI-Helper-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes: HelperNodes_MultilineStringLiteral, HelperNodes_StringLiteral, HelperNodes_Steps, HelperNodes_CfgScale, HelperNodes_WidthHeight, HelperNodes_SchedulerSelector, HelperNodes_SamplerSelector, ..." - }, - { - "author": "fmatray", - "title": "ComfyUI_BattlemapGrid", - "id": "battlemap-grid", - "reference": "https://github.com/fmatray/ComfyUI_BattlemapGrid", - "files": [ - "https://github.com/fmatray/ComfyUI_BattlemapGrid" - ], - "install_type": "git-clone", - "description": "Nodes for ComfyUI in order to generate battelmaps" - }, - { - "author": "christian-byrne", - "title": "img2txt-comfyui-nodes", - "id": "img2txt-nodes", - "reference": "https://github.com/christian-byrne/img2txt-comfyui-nodes", - "files": [ - "https://github.com/christian-byrne/img2txt-comfyui-nodes" - ], - "install_type": "git-clone", - "description": "Get general description or specify questions to ask about images (medium, art style, background, etc.). Supports Chinese 🇨🇳 questions via MiniCPM model." - }, - { - "author": "christian-byrne", - "title": "Img2color - Extract Colors from Image", - "id": "img2colors-comfyui-node", - "reference": "https://github.com/christian-byrne/img2colors-comfyui-node", - "files": [ - "https://github.com/christian-byrne/img2colors-comfyui-node" - ], - "install_type": "git-clone", - "description": "Extract the most common colors from an image, up to any number. Convert colors to plain English names using various color naming systems." - }, - { - "author": "christian-byrne", - "title": "Node - Size Matcher", - "id": "sizematcher", - "reference": "https://github.com/christian-byrne/size-match-compositing-nodes", - "files": [ - "https://github.com/christian-byrne/size-match-compositing-nodes" - ], - "install_type": "git-clone", - "description": "Match image/mask sizes" - }, - { - "author": "christian-byrne", - "title": "comfyui-search-navigation", - "reference": "https://github.com/christian-byrne/comfyui-search-navigation", - "files": [ - "https://github.com/christian-byrne/comfyui-search-navigation" - ], - "install_type": "git-clone", - "description": "Search navigation extension." - }, - { - "author": "christian-byrne", - "title": "audio-separation-nodes-comfyui", - "reference": "https://github.com/christian-byrne/audio-separation-nodes-comfyui", - "files": [ - "https://github.com/christian-byrne/audio-separation-nodes-comfyui" - ], - "install_type": "git-clone", - "description": "Separate audio track into stems (vocals, bass, drums, other). Along with tools to recombine, tempo match, slice/crop audio." - }, - { - "author": "christian-byrne", - "title": "comfyui-default-values-manager", - "reference": "https://github.com/christian-byrne/comfyui-default-values-manager", - "files": [ - "https://github.com/christian-byrne/comfyui-default-values-manager" - ], - "install_type": "git-clone", - "description": "comfyui-default-values-manager" - }, - { - "author": "christian-byrne", - "title": "youtube-dl-comfyui", - "reference": "https://github.com/christian-byrne/youtube-dl-comfyui", - "files": [ - "https://github.com/christian-byrne/youtube-dl-comfyui" - ], - "install_type": "git-clone", - "description": "Download youtube videos/playlists" - }, - { - "author": "oztrkoguz", - "title": "ComfyUI StoryCreater", - "id": "storycreater", - "reference": "https://github.com/oztrkoguz/ComfyUI_StoryCreator", - "files": [ - "https://github.com/oztrkoguz/ComfyUI_StoryCreator" - ], - "install_type": "git-clone", - "description": "Nodes:story_sampler_simple, text2, kosmos2_sampler.\nI created a dataset for generating short stories [a/Short-Story](https://huggingface.co/datasets/oztrkoguz/Short-Story) and used it to fine-tune my own model using Phi-3." - }, - { - "author": "GraftingRayman", - "title": "GraftingRayman", - "id": "graftingrayman", - "reference": "https://github.com/GraftingRayman/ComfyUI_GraftingRayman", - "files": [ - "https://github.com/GraftingRayman/ComfyUI_GraftingRayman" - ], - "install_type": "git-clone", - "description": "Image Manipulation and Prompt Generation Nodes" - }, - { - "author": "GraftingRayman", - "title": "ComfyUI QueueTube", - "reference": "https://github.com/GraftingRayman/ComfyUI_QueueTube", - "files": [ - "https://github.com/GraftingRayman/ComfyUI_QueueTube" - ], - "install_type": "git-clone", - "description": "These nodes allow your YouTube LiveStream viewers to create on your local ComfyUI, you can make this a members only feature with a screen behind you displaying your members creations" - }, - { - "author": "GraftingRayman", - "title": "ComfyUI-PuLID-Flux-GR", - "reference": "https://github.com/GraftingRayman/ComfyUI-PuLID-Flux-GR", - "files": [ - "https://github.com/GraftingRayman/ComfyUI-PuLID-Flux-GR" - ], - "install_type": "git-clone", - "description": "This is a PuLID node that has been extended with new features." - }, - { - "author": "royceschultz", - "title": "ComfyUI-Notifications", - "reference": "https://github.com/royceschultz/ComfyUI-Notifications", - "files": [ - "https://github.com/royceschultz/ComfyUI-Notifications" - ], - "install_type": "git-clone", - "description": "Send notifications when a workflow completes." - }, - { - "author": "katalist-ai", - "title": "comfyUI-nsfw-detection", - "id": "nsfw-detection", - "reference": "https://github.com/katalist-ai/comfyUI-nsfw-detection", - "files": [ - "https://github.com/katalist-ai/comfyUI-nsfw-detection" - ], - "install_type": "git-clone", - "description": "Nodes: NudenetDetector" - }, - { - "author": "kaanyalova", - "title": "Extended Image Formats for ComfyUI", - "id": "extended-image-format", - "reference": "https://github.com/kaanyalova/ComfyUI_ExtendedImageFormats", - "files": [ - "https://github.com/kaanyalova/ComfyUI_ExtendedImageFormats" - ], - "install_type": "git-clone", - "description": "Adds a custom node for saving images in webp, jpeg, avif, jxl (no metadata) and supports loading workflows from saved images" - }, - { - "author": "badayvedat", - "title": "ComfyUI-fal-Connector", - "id": "fal", - "reference": "https://github.com/badayvedat/ComfyUI-fal-Connector", - "files": [ - "https://github.com/badayvedat/ComfyUI-fal-Connector" - ], - "install_type": "git-clone", - "description": "The ComfyUI-fal-Connector is a tool designed to provide an integration between ComfyUI and fal. This extension allows users to execute their ComfyUI workflows directly on [a/fal.ai](https://fal.ai/). This enables users to leverage the computational power and resources provided by fal.ai for running their ComfyUI workflows." - }, - { - "author": "TheMistoAI", - "title": "Anyline", - "id": "anyline", - "reference": "https://github.com/TheMistoAI/ComfyUI-Anyline", - "files": [ - "https://github.com/TheMistoAI/ComfyUI-Anyline" - ], - "install_type": "git-clone", - "description": "A Fast, Accurate, and Detailed Line Detection Preprocessor.\nAnyline is a ControlNet line preprocessor that accurately extracts object edges, image details, and textual content from most images. Users can input any type of image to quickly obtain line drawings with clear edges, sufficient detail preservation, and high fidelity text, which are then used as input for conditional generation in Stable Diffusion." - }, - { - "author": "mbrostami", - "title": "ComfyUI-TITrain", - "id": "titrain", - "reference": "https://github.com/mbrostami/ComfyUI-TITrain", - "files": [ - "https://github.com/mbrostami/ComfyUI-TITrain" - ], - "install_type": "git-clone", - "description": "Nodes:TextualInversionTrainingSDXL, TextualInversionTraining" - }, - { - "author": "ArcherFMY", - "title": "Diffusion360_ComfyUI", - "id": "diffusion360", - "reference": "https://github.com/ArcherFMY/Diffusion360_ComfyUI", - "files": [ - "https://github.com/ArcherFMY/Diffusion360_ComfyUI" - ], - "install_type": "git-clone", - "description": "ComfyUI plugin of [a/SD-T2I-360PanoImage](https://github.com/ArcherFMY/SD-T2I-360PanoImage).\nbase t2i-pipeline for generating 512*1024 panorama image from text input" - }, - { - "author": "Makeezi", - "title": "ComfyUI-promptLAB", - "id": "promptlab", - "reference": "https://github.com/Makeezi/ComfyUI-promptLAB", - "files": [ - "https://github.com/Makeezi/ComfyUI-promptLAB" - ], - "install_type": "git-clone", - "description": "connection nodes for api requests, fully supports promptLAB" - }, - { - "author": "portu-sim", - "title": "comfyui_bmab", - "id": "bmab", - "reference": "https://github.com/portu-sim/comfyui_bmab", - "files": [ - "https://github.com/portu-sim/comfyui_bmab" - ], - "install_type": "git-clone", - "description": "BMAB for ComfyUI. BMAB is an custom nodes of ComfyUI and has the function of post-processing the generated image according to settings. If necessary, you can find and redraw people, faces, and hands, or perform functions such as resize, resample, and add noise. You can composite two images or perform the Upscale function." - }, - { - "author": "griptape-ai", - "title": "ComfyUI Griptape Nodes", - "id": "griptape", - "reference": "https://github.com/griptape-ai/ComfyUI-Griptape", - "files": [ - "https://github.com/griptape-ai/ComfyUI-Griptape" - ], - "install_type": "git-clone", - "description": "This repo creates a series of nodes that enable you to utilize the [a/Griptape Python Framework](https://github.com/griptape-ai/griptape/) with ComfyUI, integrating AI into your workflow. This repo creates a series of nodes that enable you to utilize the Griptape Python Framework with ComfyUI, integrating AI into your workflow." - }, - { - "author": "cavinHuang", - "title": "comfyui-nodes-docs", - "id": "nodedocs", - "reference": "https://github.com/CavinHuang/comfyui-nodes-docs", - "files": [ - "https://github.com/CavinHuang/comfyui-nodes-docs" - ], - "install_type": "git-clone", - "description": "This is a plugin for displaying documentation for each comfyui node. " - }, - { - "author": "icesun963", - "title": "HFDownLoad Node for ComfyUI", - "id": "HFDownLoad-ic", - "reference": "https://github.com/icesun963/ComfyUI_HFDownLoad", - "files": [ - "https://github.com/icesun963/ComfyUI_HFDownLoad" - ], - "install_type": "git-clone", - "description": "Download the model from huggingface and put it in any directory." - }, - { - "author": "conquestace", - "title": "Image Uploader", - "id": "image-uploader", - "reference": "https://github.com/conquestace/ComfyUI-ImageUploader", - "files": [ - "https://github.com/conquestace/ComfyUI-ImageUploader" - ], - "install_type": "git-clone", - "description": "Upload images automatically to image hosting sites." - }, - { - "author": "chandlergis", - "title": "ComfyUI-IMG_Query", - "id": "img-query", - "reference": "https://github.com/chandlergis/ComfyUI-IMG_Query", - "files": [ - "https://github.com/chandlergis/ComfyUI-IMG_Query" - ], - "install_type": "git-clone", - "description": "Nodes:ImageRequestNode" - }, - { - "author": "Isaac Emesowum", - "title": "Isaac's Nodes", - "id": "isaac", - "reference": "https://github.com/iemesowum/ComfyUI_IsaacNodes", - "files": [ - "https://github.com/iemesowum/ComfyUI_IsaacNodes" - ], - "install_type": "git-clone", - "description": "This extension offers automatic drums extraction from audio files, as well as a few helper nodes to support my audio synchronization AnimateDiff workflows." - }, - { - "author": "fexploit", - "title": "ComfyUI-AutoTrimBG", - "id": "autotrimbg", - "reference": "https://github.com/fexploit/ComfyUI-AutoTrimBG", - "files": [ - "https://github.com/fexploit/ComfyUI-AutoTrimBG" - ], - "install_type": "git-clone", - "description": "ComfyUI-AutoCropBgTrim is a powerful tool designed to automatically clean up the background of your images. This tool trims unnecessary spaces and pixels, leaving only the main subject of the image. It generates both a mask and an image output, making it easy to focus on the essential elements. Perfect for enhancing your photos and preparing them for professional use." - }, - { - "author": "fexploit", - "title": "ComfyUI-AutoLabel", - "id": "autolabel", - "reference": "https://github.com/fexploit/ComfyUI-AutoLabel", - "files": [ - "https://github.com/fexploit/ComfyUI-AutoLabel" - ], - "install_type": "git-clone", - "description": "ComfyUI-AutoLabel is a custom node for ComfyUI that uses BLIP (Bootstrapping Language-Image Pre-training) to generate detailed descriptions of the main object in an image. This node leverages the power of BLIP to provide accurate and context-aware captions for images." - }, - { - "author": "fexploit", - "title": "ComfyUI-Classifier", - "id": "classifier", - "reference": "https://github.com/fexploit/ComfyUI-Classifier", - "files": [ - "https://github.com/fexploit/ComfyUI-Classifier" - ], - "install_type": "git-clone", - "description": "ComfyUI-Classifier is a custom node for ComfyUI that uses a zero-shot classification model to classify text inputs based on a set of candidate labels. This node leverages the power of Hugging Face Transformers to provide accurate and flexible text classification." - }, - { - "author": "linshier", - "title": "comfyui-remote-tools", - "id": "remote-tools", - "reference": "https://github.com/linshier/comfyui-remote-tools", - "files": [ - "https://github.com/linshier/comfyui-remote-tools" - ], - "install_type": "git-clone", - "description": "Node:SendBase64ToRemote. To connect to another ComfyUI server." - }, - { - "author": "Fantaxico", - "title": "ComfyUI-GCP-Storage", - "id": "gcp-storage", - "reference": "https://github.com/Fantaxico/ComfyUI-GCP-Storage", - "files": [ - "https://github.com/Fantaxico/ComfyUI-GCP-Storage" - ], - "install_type": "git-clone", - "description": "Node:GCP Storage Node. Support google-cloud-storage." - }, - { - "author": "daniabib", - "title": "ComfyUI ProPainter Nodes", - "id": "propainter", - "reference": "https://github.com/daniabib/ComfyUI_ProPainter_Nodes", - "files": [ - "https://github.com/daniabib/ComfyUI_ProPainter_Nodes" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node implementation of [a/ProPainter](https://github.com/sczhou/ProPainter) framework for video inpainting." - }, - { - "author": "iFREEGROUP", - "title": "comfyui-undistort", - "id": "undistort", - "reference": "https://github.com/iFREEGROUP/comfyui-undistort", - "files": [ - "https://github.com/iFREEGROUP/comfyui-undistort" - ], - "install_type": "git-clone", - "description": "Node:Load Checkerboard Images for Calibrate Camera, Matrix and distortion coefficient to text, Undistort" - }, - { - "author": "Auttasak-L", - "title": "ComfyUI-ImageCropper", - "id": "imagecropper", - "reference": "https://github.com/Auttasak-L/ComfyUI-ImageCropper", - "files": [ - "https://github.com/Auttasak-L/ComfyUI-ImageCropper" - ], - "install_type": "git-clone", - "description": "Nodes:Image cropping tool" - }, - { - "author": "muzi12888", - "title": "PoseKeypoint Mask", - "id": "posekeypoint-mask", - "reference": "https://github.com/muzi12888/ComfyUI-PoseKeypoint-Mask", - "files": [ - "https://github.com/muzi12888/ComfyUI-PoseKeypoint-Mask" - ], - "install_type": "git-clone", - "description": "Convert PoseKeypoint to mask, please refer to the example workflow for usage instructions." - }, - { - "author": "muzi12888", - "title": "m9-prompts-comfyui", - "id": "m9-prompts-comfyui", - "reference": "https://github.com/MarcusNyne/m9-prompts-comfyui", - "files": [ - "https://github.com/MarcusNyne/m9-prompts-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes for modifying a prompt to create prompt variations.\nScramblePrompts [m9]: Reorder prompts, remove prompts, modify weights\nTweakWeights [m9]: Modify the weights of prompts matching keywords" - }, - { - "author": "xuhongming251", - "title": "ComfyUI-GPEN", - "id": "gpen", - "reference": "https://github.com/xuhongming251/ComfyUI-GPEN", - "files": [ - "https://github.com/xuhongming251/ComfyUI-GPEN" - ], - "install_type": "git-clone", - "description": "Nodes:FaceEnhancement. Based on modelscope pipeline." - }, - { - "author": "xuhongming251", - "title": "ComfyUI-MuseTalkUtils", - "id": "musetalk-utils", - "reference": "https://github.com/xuhongming251/ComfyUI-MuseTalkUtils", - "files": [ - "https://github.com/xuhongming251/ComfyUI-MuseTalkUtils" - ], - "install_type": "git-clone", - "description": "MuseTalk ComfyUI Preprocess and Postprocess Nodes" - }, - { - "author": "xuhongming251", - "title": "ComfyUI_Camera", - "reference": "https://github.com/xuhongming251/ComfyUI_Camera", - "files": [ - "https://github.com/xuhongming251/ComfyUI_Camera" - ], - "install_type": "git-clone", - "description": "ComfyUI processes local real-time camera feed and provides real-time preview of the result." - }, - { - "author": "Thomas Ward", - "title": "TW-CUI-Util", - "id": "tw-cui-util", - "reference": "https://github.com/TW-CUI/TW-CUI-Util", - "files": [ - "https://github.com/TW-CUI/TW-CUI-Util" - ], - "install_type": "git-clone", - "description": "A collection of custom nodes to help with saving images, providing generation parameters, static literal nodes, and other useful nodes." - }, - { - "author": "lks-ai", - "title": "ComfyUI AnyNode: Any Node you ask for", - "id": "anynode", - "reference": "https://github.com/lks-ai/anynode", - "files": [ - "https://github.com/lks-ai/anynode" - ], - "install_type": "git-clone", - "description": "Nodes: AnyNode. Nodes that can be anything you ask. Auto-Generate functional nodes using LLMs. Create impossible workflows. API Compatibility: (OpenAI, LocalLLMs, Gemini)." - }, - { - "author": "lks-ai", - "title": "ComfyUI Stable Audio Open 1.0 Sampler", - "id": "stableaudiosampler", - "reference": "https://github.com/lks-ai/ComfyUI-StableAudioSampler", - "files": [ - "https://github.com/lks-ai/ComfyUI-StableAudioSampler" - ], - "install_type": "git-clone", - "description": "Nodes: StableAudioSampler. Wraps the new Stable Audio Open Model in the sampler that dropped Jun 5th. See Github for Features" - }, - { - "author": "SayanoAI", - "title": "Comfy-RVC", - "id": "sayano-rvc", - "reference": "https://github.com/SayanoAI/Comfy-RVC", - "files": [ - "https://github.com/SayanoAI/Comfy-RVC" - ], - "install_type": "git-clone", - "description": "ComfyUI custom nodes for RVC related inference and image generation" - }, - { - "author": "nirbhay-faaya", - "title": "ImgProcessing_ComfyUI", - "id": "imgprocessing", - "reference": "https://github.com/nirbhay-faaya/ImgProcessing_ComfyUI", - "files": [ - "https://github.com/nirbhay-faaya/ImgProcessing_ComfyUI" - ], - "install_type": "git-clone", - "description": "Custom Image processing ComfyUI Nodes" - }, - { - "author": "larsupb", - "title": "LoRA Power-Merger ComfyUI", - "id": "lora-powermerger", - "reference": "https://github.com/larsupb/LoRA-Merger-ComfyUI", - "files": [ - "https://github.com/larsupb/LoRA-Merger-ComfyUI" - ], - "install_type": "git-clone", - "description": "An extension for merging LoRAs. Offers a wide range of LoRA merge techniques (including dare) and XY plots. XY plots require efficiency nodes." - }, - { - "author": "Mason-McGough", - "title": "Mosaica", - "id": "mosaica", - "reference": "https://github.com/Mason-McGough/ComfyUI-Mosaica", - "files": [ - "https://github.com/Mason-McGough/ComfyUI-Mosaica" - ], - "install_type": "git-clone", - "description": "Create colorful mosaic images in ComfyUI by computing label images and applying lookup tables." - }, - { - "author": "cuongloveit", - "title": "comfy_http_request", - "reference": "https://github.com/cuongloveit/comfy_http_request", - "files": [ - "https://github.com/cuongloveit/comfy_http_request" - ], - "install_type": "git-clone", - "description": "Nodes:Send Http Request. You can use this node to save full size images through the websocket." - }, - { - "author": "Ron-Digital", - "title": "ComfyUI-SceneGenerator", - "id": "scenegenerator", - "reference": "https://github.com/Ron-Digital/ComfyUI-SceneGenerator", - "files": [ - "https://github.com/Ron-Digital/ComfyUI-SceneGenerator" - ], - "install_type": "git-clone", - "description": "ComfyUI-SceneGenerator is a ComfyUI plugin used to generate scene preview photos from JSON files. This plugin creates scenes based on the provided JSON configuration and produces two different image outputs: one containing only the products and the other containing both the products and the props." - }, - { - "author": "xliry", - "title": "ComfyUI_SendDiscord", - "id": "senddiscord", - "reference": "https://github.com/xliry/ComfyUI_SendDiscord", - "files": [ - "https://github.com/xliry/ComfyUI_SendDiscord" - ], - "install_type": "git-clone", - "description": "Nodes:Send Video to Discord" - }, - { - "author": "xliry", - "title": "color2rgb", - "reference": "https://github.com/vxinhao/color2rgb", - "files": [ - "https://raw.githubusercontent.com/vxinhao/color2rgb/main/color2rgb.py" - ], - "install_type": "copy", - "description": "Nodes:color2RGB" - }, - { - "author": "moyi7712", - "title": "ComfyUI_Seamless_Patten", - "id": "seamless-pattern", - "reference": "https://github.com/moyi7712/ComfyUI_Seamless_Patten", - "files": [ - "https://github.com/moyi7712/ComfyUI_Seamless_Patten" - ], - "install_type": "git-clone", - "description": "It make any text2image create seamless patten" - }, - { - "author": "nirex0", - "title": "ComfyUI_pytorch_openpose", - "id": "pytorch-openpose", - "reference": "https://github.com/nirex0/ComfyUI_pytorch_openpose", - "files": [ - "https://github.com/nirex0/ComfyUI_pytorch_openpose" - ], - "install_type": "git-clone", - "description": "All Credits go to the original Repo: [a/Hzzone/pytorch-openpose](https://github.com/Hzzone/pytorch-openpose)." - }, - { - "author": "AshMartian", - "title": "Dir Gir", - "id": "dir-gir", - "reference": "https://github.com/AshMartian/ComfyUI-DirGir", - "files": [ - "https://github.com/AshMartian/ComfyUI-DirGir" - ], - "install_type": "git-clone", - "description": "A collection of ComfyUI directory automation utility nodes. Directory Get It Right adds a GUI directory browser, and smart directory loop/iteration node that supports regex and file extension filtering." - }, - { - "author": "SozeInc", - "title": "ComfyUI-Mobile", - "id": "comfyui-mobile", - "reference": "https://github.com/SozeInc/ComfyUI-Mobile", - "files": [ - "https://github.com/SozeInc/ComfyUI-Mobile" - ], - "install_type": "git-clone", - "description": "Nodes: Ultimate Concat (Mobile), Send Notification (Mobile), Settings Launcher (Mobile), Settings Launcher Outputs (Mobile)" - }, - { - "author": "goktug", - "title": "Save Image Plus for ComfyUI", - "id": "saveimage-plus", - "reference": "https://github.com/Goktug/comfyui-saveimage-plus", - "files": [ - "https://github.com/Goktug/comfyui-saveimage-plus" - ], - "install_type": "git-clone", - "description": "Save Image Plus is a custom node for ComfyUI that allows you to save images in JPEG and WEBP formats with optional metadata embedding." - }, - { - "author": "wujm424606", - "title": "ComfyUi-Ollama-YN", - "id": "ollama-YN", - "reference": "https://github.com/wujm424606/ComfyUi-Ollama-YN", - "files": [ - "https://github.com/wujm424606/ComfyUi-Ollama-YN" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI Nodes for interacting with [a/Ollama](https://ollama.com/) using the [a/ollama python client](https://github.com/ollama/ollama-python).\n Meanwhile it will provide better prompt descriptor for stable diffusion." - }, - { - "author": "tmagara", - "title": "ComfyUI-Prediction-Boost", - "id": "prediction-boost", - "reference": "https://github.com/tmagara/ComfyUI-Prediction-Boost", - "files": [ - "https://github.com/tmagara/ComfyUI-Prediction-Boost" - ], - "install_type": "git-clone", - "description": "prediction boost custom node for ComfyUI" - }, - { - "author": "chesnokovivan", - "title": "ComfyUI-Novakid", - "id": "novakid", - "reference": "https://github.com/chesnokovivan/ComfyUI-Novakid", - "files": [ - "https://github.com/chesnokovivan/ComfyUI-Novakid" - ], - "install_type": "git-clone", - "description": "ComfyUI: Novakid. A node." - }, - { - "author": "Jin Liu", - "title": "ComfyUI-Photopea", - "id": "photopea", - "reference": "https://github.com/coolzilj/ComfyUI-Photopea", - "files": [ - "https://github.com/coolzilj/ComfyUI-Photopea" - ], - "install_type": "git-clone", - "description": "Edit images in the Photopea editor directly within ComfyUI." - }, - { - "author": "bitaffinity", - "title": "ComfyUI_HF_Inference", - "id": "hf-inference", - "reference": "https://github.com/bitaffinity/ComfyUI_HF_Inference", - "files": [ - "https://github.com/bitaffinity/ComfyUI_HF_Inference" - ], - "install_type": "git-clone", - "description": "Unofficial support for Hugging Face's hosted inference." - }, - { - "author": "claussteinmassl", - "title": "CS Transform Node for ComfyUI", - "id": "cs-transform", - "reference": "https://github.com/claussteinmassl/ComfyUI-CS-CustomNodes", - "files": [ - "https://github.com/claussteinmassl/ComfyUI-CS-CustomNodes" - ], - "install_type": "git-clone", - "description": "The CS Transform node is a custom node for ComfyUI that applies a series of transformations to an input image and mask. The transformations include scaling, rotation, and translation, all centered around a specified pivot point. The node ensures that the transformed image is properly accommodated within a canvas, which can be expanded if needed." - }, - { - "author": "MariusKM", - "title": "ComfyUI-BadmanNodes", - "id": "badman", - "reference": "https://github.com/MariusKM/ComfyUI-BadmanNodes", - "files": [ - "https://github.com/MariusKM/ComfyUI-BadmanNodes" - ], - "install_type": "git-clone", - "description": "Nodes:Badman_Blend, Badman_HexGenerator, Badman_String, Badman_Concat_String, Badman_Print, BadmanIO, BadmanIntUtil" - }, - { - "author": "TMElyralab", - "title": "Comfyui-MusePose", - "id": "musepose", - "reference": "https://github.com/TMElyralab/Comfyui-MusePose", - "files": [ - "https://github.com/TMElyralab/Comfyui-MusePose" - ], - "install_type": "git-clone", - "description": "[a/MusePose](https://github.com/TMElyralab/MusePose) is an image-to-video generation framework for virtual human under control signal such as pose.\nNOTE: You need to download weigths manually from: [a/https://huggingface.co/TMElyralab/MusePose](https://huggingface.co/TMElyralab/MusePose).[w/The repository name has changed. If you are not receiving updates, please delete the existing node and reinstall it.]" - }, - { - "author": "PnthrLeo", - "title": "comfyUI-PL-data-tools", - "reference": "https://github.com/PnthrLeo/comfyUI-PL-data-tools", - "files": [ - "https://github.com/PnthrLeo/comfyUI-PL-data-tools" - ], - "install_type": "git-clone", - "description": "Image data check, filtering and augmentation tools for ComfyUI 🔬\nNOTE: Renamed from 'comfyUI-image-search'" - }, - { - "author": "l20richo", - "title": "ComfyUI-Azure-Blob-Storage", - "id": "azure-blob-storage", - "reference": "https://github.com/l20richo/ComfyUI-Azure-Blob-Storage", - "files": [ - "https://github.com/l20richo/ComfyUI-Azure-Blob-Storage" - ], - "install_type": "git-clone", - "description": "ComfyUI-Azure-Blob-Storage seamlessly integrates with [a/Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs/) in ComfyUI. This open-source project provides custom nodes for effortless loading and saving of images, videos, and checkpoint models directly from Azure blob containers within the ComfyUI graph interface." - }, - { - "author": "AARG-FAN", - "title": "Image-vector-for-ComfyUI", - "id": "image-vector", - "reference": "https://github.com/AARG-FAN/Image-Vector-for-ComfyUI", - "files": [ - "https://github.com/AARG-FAN/Image-Vector-for-ComfyUI" - ], - "install_type": "git-clone", - "description": "a wrap-up of ComfyUI nodes for converting pixels to raster, sent out to [a/Vtracer](https://github.com/visioncortex/vtracer)!" - }, - { - "author": "Smirnov75", - "title": "ComfyUI-mxToolkit", - "id": "mxtoolkit", - "reference": "https://github.com/Smirnov75/ComfyUI-mxToolkit", - "files": [ - "https://github.com/Smirnov75/ComfyUI-mxToolkit" - ], - "install_type": "git-clone", - "description": "A set of useful nodes for convenient use of ComfyUI, including: Seed randomization before the generation process starts, with saving of the last used values and the ability to automatically interrupt the current generation; A function to pause the generation process; Slider nodes for convenient control of input parameters; An alternative version of the standard Reroute node." - }, - { - "author": "humgate", - "title": "simplecomfy", - "reference": "https://github.com/humgate/simplecomfy", - "files": [ - "https://github.com/humgate/simplecomfy" - ], - "install_type": "git-clone", - "description": "Simple JS application based on ComfyUI which takes prompt and style picture from user and runs hardcoded workflow inference returning generated image to user." - }, - { - "author": "vanche1212", - "title": "ZMG PLUGIN", - "id": "zmg", - "reference": "https://github.com/vanche1212/ComfyUI-ZMG-Nodes", - "files": [ - "https://github.com/vanche1212/ComfyUI-ZMG-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:ApiRequestNode, LoadVideoNode, JsonParserNode, OllamaRequestNode, OldPhotoColorizationNode." - }, - { - "author": "hben35096", - "title": "ComfyUI-ToolBox", - "id": "hben-toolbox", - "reference": "https://github.com/hben35096/ComfyUI-ToolBox", - "files": [ - "https://github.com/hben35096/ComfyUI-ToolBox" - ], - "install_type": "git-clone", - "description": "Nodes:commonly_node." - }, - { - "author": "hben35096", - "title": "ComfyUI-ReplenishNodes", - "reference": "https://github.com/hben35096/ComfyUI-ReplenishNodes", - "files": [ - "https://github.com/hben35096/ComfyUI-ReplenishNodes" - ], - "install_type": "git-clone", - "description": "NODES:Batch Image Blend, Mask Levels Adjust, Get Batch Count, Load Lora Name, Load Sampler Name, Load Scheduler Name, Load Ckpt Name....\nThe nodes in this repository are only used as secondary nodes." - }, - { - "author": "tiankuan93", - "title": "V-Express: Conditional Dropout for Progressive Training of Portrait Video Generation", - "id": "v-express", - "reference": "https://github.com/tiankuan93/ComfyUI-V-Express", - "files": [ - "https://github.com/tiankuan93/ComfyUI-V-Express" - ], - "install_type": "git-clone", - "description": "[Original] In the field of portrait video generation, the use of single images to generate portrait videos has become increasingly prevalent. A common approach involves leveraging generative models to enhance adapters for controlled generation. However, control signals can vary in strength, including text, audio, image reference, pose, depth map, etc. Among these, weaker conditions often struggle to be effective due to interference from stronger conditions, posing a challenge in balancing these conditions. In our work on portrait video generation, we identified audio signals as particularly weak, often overshadowed by stronger signals such as pose and original image. However, direct training with weak signals often leads to difficulties in convergence. To address this, we propose V-Express, a simple method that balances different control signals through a series of progressive drop operations. Our method gradually enables effective control by weak conditions, thereby achieving generation capabilities that simultaneously take into account pose, input image, and audio.\nNOTE: You need to downdload [a/model_ckpts](https://huggingface.co/tk93/V-Express/tree/main) manually." - }, - { - "author": "CMonk", - "title": "Stable Projectorz Bridge", - "id": "projectorz", - "reference": "https://github.com/tianlang0704/ComfyUI-StableProjectorzBridge", - "files": [ - "https://github.com/tianlang0704/ComfyUI-StableProjectorzBridge" - ], - "install_type": "git-clone", - "description": "This custom nodes enables Stable Projectorz to work with ComfyUI Directly." - }, - { - "author": "Scorpinaus", - "title": "ComfyUI-DiffusersLoader", - "id": "comfyui-diffusersloader", - "reference": "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader", - "files": [ - "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader" - ], - "install_type": "git-clone", - "description": "This node pack allows loading of SD checkpoints that uses diffusers format in comfyUI." - }, - { - "author": "chakib-belgaid", - "title": "ComfyUI Style Plugin", - "id": "style-plugin", - "reference": "https://github.com/chakib-belgaid/Comfyui_Prompt_styler", - "files": [ - "https://github.com/chakib-belgaid/Comfyui_Prompt_styler" - ], - "install_type": "git-clone", - "description": "This is a simple plugin for ComfyUI that allows you to import A1111 CSV styles into ComfyUI prompts." - }, - { - "author": "chakib-belgaid", - "title": "ComfyUI-autosize", - "id": "autosize", - "reference": "https://github.com/chakib-belgaid/ComfyUI-autosize", - "files": [ - "https://github.com/chakib-belgaid/ComfyUI-autosize" - ], - "install_type": "git-clone", - "description": "A ComfyUI utility plugin designed to optimize the latent space for generating high-quality results. It approximates the closest size model for better generation results." - }, - { - "author": "ThereforeGames", - "title": "ComfyUI-Unprompted", - "id": "unprompted", - "reference": "https://github.com/ThereforeGames/ComfyUI-Unprompted", - "files": [ - "https://github.com/ThereforeGames/ComfyUI-Unprompted" - ], - "install_type": "git-clone", - "description": "A node that processes input text with the [a/Unprompted templating language](https://github.com/ThereforeGames/unprompted)." - }, - { - "author": "Tool Of North america", - "title": "Easy automatic (square) image cropper using Yolo", - "id": "tooldigital", - "reference": "https://github.com/tooldigital/ComfyUI-Yolo-Cropper", - "files": [ - "https://github.com/tooldigital/ComfyUI-Yolo-Cropper" - ], - "install_type": "git-clone", - "description": "A very simple and easy to use node to automaticaaly create (square) image crops and masks using YoloV8. This can be very useful when using controlnet and ip adapters" - }, - { - "author": "luandev", - "title": "ComfyUI CrewAI", - "id": "crewai", - "reference": "https://github.com/luandev/ComfyUI-CrewAI", - "files": [ - "https://github.com/luandev/ComfyUI-CrewAI" - ], - "install_type": "git-clone", - "description": "ComfyUI-CrewAI aims to integrate Crew AI's multi-agent collaboration framework into the ComfyUI environment. By combining the strengths of Crew AI's role-based, collaborative AI agent system with ComfyUI's intuitive interface, we will create a robust platform for managing and executing complex AI tasks seamlessly" - }, - { - "author": "chandlergis", - "title": "ComfyUI_EmojiOverlay", - "id": "emoji-overlay", - "reference": "https://github.com/chandlergis/ComfyUI_EmojiOverlay", - "files": [ - "https://github.com/chandlergis/ComfyUI_EmojiOverlay" - ], - "install_type": "git-clone", - "description": "Nodes:Image Emoji Overlay" - }, - { - "author": "risunobushi", - "title": "comfyUI_FrequencySeparation_RGB-HSV", - "id": "freq-sep", - "reference": "https://github.com/risunobushi/comfyUI_FrequencySeparation_RGB-HSV", - "files": [ - "https://github.com/risunobushi/comfyUI_FrequencySeparation_RGB-HSV" - ], - "install_type": "git-clone", - "description": "A collection of simple nodes for Frequency Separation / Frequency Recombine with RGB and HSV methods" - }, - { - "author": "risunobushi", - "title": "ComfyUI-Similarity-Score", - "reference": "https://github.com/risunobushi/ComfyUI-Similarity-Score", - "files": [ - "https://github.com/risunobushi/ComfyUI-Similarity-Score" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that calculates CLIP and LPIPS similarity scores between two images." - }, - { - "author": "zohac", - "title": "ComfyUI_ZC_DrawShape", - "id": "drawshape", - "reference": "https://github.com/zohac/ComfyUI_ZC_DrawShape", - "files": [ - "https://github.com/zohac/ComfyUI_ZC_DrawShape" - ], - "install_type": "git-clone", - "description": "Nodes:ZC DrawShape Node" - }, - { - "author": "DataCTE", - "title": "Prompt Injection Node for ComfyUI", - "id": "prompt-injection", - "reference": "https://github.com/DataCTE/prompt_injection", - "files": [ - "https://github.com/DataCTE/prompt_injection" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI allows you to inject specific prompts at specific blocks of the Stable Diffusion UNet, providing fine-grained control over the generated image. It is based on the concept that the content/subject understanding of the model is primarily contained within the MID0 and MID1 blocks, as demonstrated in the B-Lora (Content Style implicit separation) paper. Features.\nInject different prompts into specific UNet blocks Three different node variations for flexible workflow integration Customize the learning rate of specific blocks to focus on content, lighting, style, or other aspects Potential for developing a 'Mix of Experts' approach by swapping blocks on-the-fly based on prompt content" - }, - { - "author": "FrankChieng", - "title": "ComfyUI_llm_easyanimiate", - "id": "llm-easyanimate", - "nodename_pattern": "^FrankChiengEasyAnimate", - "reference": "https://github.com/frankchieng/ComfyUI_llm_easyanimiate", - "files": [ - "https://github.com/frankchieng/ComfyUI_llm_easyanimiate" - ], - "install_type": "git-clone", - "description": "implementation easyanimate with llama3-8b-6bit instruction LLM generation prompt help" - }, - { - "author": "nuanarchy", - "title": "ComfyUI-NuA-FlashFace", - "id": "nua-flashface", - "reference": "https://github.com/nuanarchy/ComfyUI-NuA-FlashFace", - "files": [ - "https://github.com/nuanarchy/ComfyUI-NuA-FlashFace" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation of [a/FlashFace: Human Image Personalization with High-fidelity Identity Preservation](https://github.com/ali-vilab/FlashFace)\nNOTE: You need to downalod models manually." - }, - { - "author": "nuanarchy", - "title": "ComfyUI-NuA-BIRD", - "id": "nua-bird", - "reference": "https://github.com/nuanarchy/ComfyUI-NuA-BIRD", - "files": [ - "https://github.com/nuanarchy/ComfyUI-NuA-BIRD" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation of '[a/Blind Image Restoration via Fast Diffusion Inversion](https://github.com/hamadichihaoui/BIRD)' Original [a/article](https://arxiv.org/abs/2405.19572)" - }, - { - "author": "denfrost", - "title": "Den_ComfyUI_Workflows", - "id": "den", - "reference": "https://github.com/denfrost/Den_ComfyUI_Workflow", - "files": [ - "https://github.com/denfrost/Den_ComfyUI_Workflow" - ], - "install_type": "git-clone", - "description": "Custom nodes make easy Advanced Workflows. Focus on Image/Video and ControlNet efficiency and performances. Manipulation of Latent Space, Automatic pipeline with a bit efforts." - }, - { - "author": "marduk191", - "title": "marduk191 workflow settings", - "id": "marnodes", - "reference": "https://github.com/marduk191/comfyui-marnodes", - "files": [ - "https://github.com/marduk191/comfyui-marnodes" - ], - "install_type": "git-clone", - "description": "A node to set workflow settings." - }, - { - "author": "marduk191", - "title": "Flux Prompt Enhance Node for ComfyUI", - "id": "fluxpromptenhancer", - "reference": "https://github.com/marduk191/ComfyUI-Fluxpromptenhancer", - "files": [ - "https://github.com/marduk191/ComfyUI-Fluxpromptenhancer" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI integrates the Flux-Prompt-Enhance model, allowing you to enhance your prompts directly within your ComfyUI workflows." - }, - { - "author": "haohaocreates", - "title": "ComfyUI-HH-Image-Selector", - "id": "hh-image-selector", - "reference": "https://github.com/haohaocreates/ComfyUI-HH-Image-Selector", - "files": [ - "https://github.com/haohaocreates/ComfyUI-HH-Image-Selector" - ], - "install_type": "git-clone", - "description": "comfy ui custom node that returns an image from a batch based on selected criteria such as RGB value, brightness, etc (credits to chris goringe's custom nodes tutorial )." - }, - { - "author": "exdysa", - "title": "comfyui-selector", - "reference": "https://github.com/exdysa/comfyui-selector", - "files": [ - "https://github.com/exdysa/comfyui-selector" - ], - "install_type": "git-clone", - "description": "Selector and Recourse. Presets & failsafes. Work flow. EXDYSA" - }, - { - "author": "Jin Liu", - "title": "ComfyUI-LJNodes", - "id": "ComfyUI-LJNodes", - "reference": "https://github.com/coolzilj/ComfyUI-LJNodes", - "files": [ - "https://github.com/coolzilj/ComfyUI-LJNodes" - ], - "install_type": "git-clone", - "description": "A variety of custom nodes to enhance ComfyUI for a buttery smooth experience." - }, - { - "author": "GavChap", - "title": "ComfyUI-SD3LatentSelectRes", - "id": "sd3latent-select-res", - "reference": "https://github.com/GavChap/ComfyUI-SD3LatentSelectRes", - "files": [ - "https://github.com/GavChap/ComfyUI-SD3LatentSelectRes" - ], - "install_type": "git-clone", - "description": "You'll get a new node called SD3 Latent Select Resolution, you can pick the x and y sizes from a list." - }, - { - "author": "BenNarum", - "title": "SigmaWaveFormNodes", - "id": "sigmawaveform", - "reference": "https://github.com/BenNarum/SigmaWaveFormNode", - "files": [ - "https://github.com/BenNarum/SigmaWaveFormNode" - ], - "install_type": "git-clone", - "description": "A set of tools for generating and altering sigmas in ComfyUI." - }, - { - "author": "shobhitic", - "title": "PlusMinusTextClip - Single node for Positive and Negative Prompts", - "id": "plusminustextclip", - "reference": "https://github.com/shobhitic/ComfyUI-PlusMinusTextClip", - "files": [ - "https://github.com/shobhitic/ComfyUI-PlusMinusTextClip" - ], - "install_type": "git-clone", - "description": "This adds a node that has both the positive and negative prompts as input in one node. You can just add one node and be done with both Positive and Negative prompts, in place of adding two different nodes for them." - }, - { - "author": "Late Night Labs", - "title": "LNL Frame Selector", - "id": "lnlframeselector", - "reference": "https://github.com/latenightlabs/ComfyUI-LNL", - "files": [ - "https://github.com/latenightlabs/ComfyUI-LNL" - ], - "install_type": "git-clone", - "description": "Frame Selector & Sequence Selection Node for ComfyUI." - }, - { - "author": "Michael Standen", - "title": "Ollama Prompt Encode", - "id": "ollamapromptencode", - "reference": "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode", - "files": [ - "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode" - ], - "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", - "id": "ttools", - "reference": "https://github.com/toxicwind/ComfyUI-TTools", - "files": [ - "https://github.com/toxicwind/ComfyUI-TTools" - ], - "install_type": "git-clone", - "description": "Text Randomization and Formatting, JSON Extraction and Processing, SD3 Resolution Solver" - }, - { - "author": "Yanick112", - "title": "ComfyUI-ToSVG", - "id": "tosvg", - "reference": "https://github.com/Yanick112/ComfyUI-ToSVG", - "files": [ - "https://github.com/Yanick112/ComfyUI-ToSVG" - ], - "install_type": "git-clone", - "description": "This project converts raster images into SVG format using the [a/VTracer](https://github.com/visioncortex/vtracer) library. It's a handy tool for designers and developers who need to work with vector graphics programmatically." - }, - { - "author": "dicksondickson", - "title": "ComfyUI-Dickson-Nodes", - "id": "dicksonnodes", - "reference": "https://github.com/dicksondickson/ComfyUI-Dickson-Nodes", - "files": [ - "https://github.com/dicksondickson/ComfyUI-Dickson-Nodes" - ], - "install_type": "git-clone", - "description": "A set of custom nodes that I've either written myself or adapted from other authors" - }, - { - "author": "juehackr", - "title": "comfyui_fk_server", - "id": "fk-server", - "reference": "https://github.com/juehackr/comfyui_fk_server", - "files": [ - "https://github.com/juehackr/comfyui_fk_server" - ], - "install_type": "git-clone", - "description": "🤗🤗🤗Comfyui Universal Translation Plugin (no longer requires adding various nodes, directly add translation function on the existing nodes), allowing Comfyui to support Chinese input and automatic translation for any long text input box, while adding error translation function (calling Baidu Translate), achieving translation freedom!" - }, - { - "author": "G-370", - "title": "ComfyUI-SD3-Powerlab", - "id": "sd3-powerlab", - "reference": "https://github.com/G-370/ComfyUI-SD3-Powerlab", - "files": [ - "https://github.com/G-370/ComfyUI-SD3-Powerlab" - ], - "install_type": "git-clone", - "description": "Nodes:Render SD3 Attention, SD3 Attention To Image, SD3 Image Into Attention." - }, - { - "author": "TylerZoro", - "title": "SD3-Scaling", - "id": "sd3-scaling", - "reference": "https://github.com/TylerZoro/SD3-Scaling", - "files": [ - "https://github.com/TylerZoro/SD3-Scaling" - ], - "install_type": "git-clone", - "description": "Tools for scaling images and latents appropriate to SD3 in ComfyUI." - }, - { - "author": "baicai99", - "title": "ComfyUI-FrameSkipping", - "id": "FrameSkipping", - "reference": "https://github.com/baicai99/ComfyUI-FrameSkipping", - "files": [ - "https://github.com/baicai99/ComfyUI-FrameSkipping" - ], - "install_type": "git-clone", - "description": "Used to process video redrawing, frame skipping, frame ending early, etc." - }, - { - "author": "SuperMasterBlasterLaser", - "title": "ComfyUI_YOLO_Classifiers", - "id": "yolo-classifier", - "reference": "https://github.com/SuperMasterBlasterLaser/ComfyUI_YOLO_Classifiers", - "files": [ - "https://github.com/SuperMasterBlasterLaser/ComfyUI_YOLO_Classifiers" - ], - "install_type": "git-clone", - "description": "Nodes:YOLO Classifier Model Loader, YOLO Classify." - }, - { - "author": "SamKhoze", - "title": "DeepFuze", - "id": "deepfuze", - "reference": "https://github.com/SamKhoze/ComfyUI-DeepFuze", - "files": [ - "https://github.com/SamKhoze/ComfyUI-DeepFuze" - ], - "install_type": "git-clone", - "description": "DeepFuze is a state-of-the-art deep learning tool that seamlessly integrates with ComfyUI to revolutionize facial transformations, lipsyncing, video generation, voice cloning, face swapping, and lipsync translation. Leveraging advanced algorithms, DeepFuze enables users to combine audio and video with unparalleled realism, ensuring perfectly synchronized facial movements. This innovative solution is ideal for content creators, animators, developers, and anyone seeking to elevate their video editing projects with sophisticated AI-driven features." - }, - { - "author": "superyoman", - "title": "comfyui_lumaAPI", - "id": "luma", - "reference": "https://github.com/superyoman/comfyui_lumaAPI", - "files": [ - "https://github.com/superyoman/comfyui_lumaAPI" - ], - "install_type": "git-clone", - "description": "Unofficial Luma API-ComfyUI version.[w/WARN: This project is for learning purpose only!]" - }, - { - "author": "chris-the-wiz", - "title": "EmbeddingsCurveEditor_ComfyUI", - "id": "embeddings-curve-editor", - "reference": "https://github.com/chris-the-wiz/EmbeddingsCurveEditor_ComfyUI", - "files": [ - "https://github.com/chris-the-wiz/EmbeddingsCurveEditor_ComfyUI" - ], - "install_type": "git-clone", - "description": "Edit embeddings with a curve. Actually should work on any 1D input tensor. Tested with IPAdapter-Plus." - }, - { - "author": "zhulu111", - "title": "ComfyUI_Bxb", - "id": "ComfyUI_Bxb", - "reference": "https://github.com/zhulu111/ComfyUI_Bxb", - "files": [ - "https://github.com/zhulu111/ComfyUI_Bxb" - ], - "install_type": "git-clone", - "description": "sdBxb, a tool that converts ComfyUI workflows into WeChat Mini Program, Douyin Mini Program, and H5 with one click, and supports payments." - }, - { - "author": "lordgasmic", - "title": "comfyui_wildcards", - "reference": "https://github.com/lordgasmic/comfyui_wildcards", - "files": [ - "https://github.com/lordgasmic/comfyui_wildcards" - ], - "install_type": "git-clone", - "description": "This is an attempt to recreate the wildcards plugin for Automatic1111 but for ComfyUI." - }, - { - "author": "lordgasmic", - "title": "comfyui_save_image_with_options", - "reference": "https://github.com/lordgasmic/comfyui_save_image_with_options", - "files": [ - "https://github.com/lordgasmic/comfyui_save_image_with_options" - ], - "install_type": "git-clone", - "description": "Nodes:Save Image with Options" - }, - { - "author": "opvelll", - "title": "Comfy UI Text List Product", - "id": "listproduct", - "reference": "https://github.com/opvelll/ComfyUI_TextListProduct", - "files": [ - "https://github.com/opvelll/ComfyUI_TextListProduct" - ], - "install_type": "git-clone", - "description": "This is a custom node for Comfy UI. It mainly wraps itertools.product and can be used to create patterns by combining prompts. It is recommended to install this custom node in combination with the nodes from the WAS Node Suite." - }, - { - "author": "jakechai", - "title": "ComfyUI-JakeUpgrade", - "id": "jkupgrade", - "reference": "https://github.com/jakechai/ComfyUI-JakeUpgrade", - "files": [ - "https://github.com/jakechai/ComfyUI-JakeUpgrade" - ], - "install_type": "git-clone", - "description": "A ComfyUI workflow customization by Jake." - }, - { - "author": "celsojr2013", - "title": "ComfyUI SimpleTools Suit", - "reference": "https://github.com/celsojr2013/comfyui_simpletools", - "files": [ - "https://github.com/celsojr2013/comfyui_simpletools" - ], - "install_type": "git-clone", - "description": "Nodes:Simple Google Translator, Simple Resolution Solver.\nThis is a small set of simple nodes that help your workflow on ComfyUI." - }, - { - "author": "celsojr2013", - "title": "comfyui_jamworks_client", - "reference": "https://github.com/celsojr2013/comfyui_jamworks_client", - "files": [ - "https://github.com/celsojr2013/comfyui_jamworks_client" - ], - "install_type": "git-clone", - "description": "Nodes:Jamworks_Login, Jamworks_Download, Shell_Command.\nA Simple Client for Jamworks Platform DAM Integration" - }, - { - "author": "fablestudio", - "title": "ComfyUI-Showrunner-Utils", - "reference": "https://github.com/fablestudio/ComfyUI-Showrunner-Utils", - "files": [ - "https://github.com/fablestudio/ComfyUI-Showrunner-Utils" - ], - "install_type": "git-clone", - "description": "Comfyui Custom Nodes for Showrunner" - }, - { - "author": "MilitantHitchhiker", - "title": "MilitantHitchhiker-SwitchbladePack", - "id": "hitchhiker", - "reference": "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack", - "files": [ - "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack" - ], - "install_type": "git-clone", - "description": "Militant Hitchhiker's Switchblade Pack is a collection of custom nodes for ComfyUI that provide various multi-function capabilities." - }, - { - "author": "slyt", - "title": "comfyui-ollama-nodes", - "reference": "https://github.com/slyt/comfyui-ollama-nodes", - "files": [ - "https://github.com/slyt/comfyui-ollama-nodes" - ], - "install_type": "git-clone", - "description": "ComfyUI custom nodes for working with [a/Ollama](https://github.com/ollama/ollama).\nNOTE:Assumes that an Ollama server is running at http://127.0.0.1:11434 and accessible by the ComfyUI backend." - }, - { - "author": "zwng", - "title": "ComfyUI_Zwng_Nodes", - "id": "zwng", - "reference": "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes", - "files": [ - "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes" - ], - "install_type": "git-clone", - "description": "Simple nodes for loading image files.Nodes that include a simple remote connection to Photoshop, a node that can overlay and preview an image with a mask, and a node that can load images directly from a file path." - }, - { - "author": "Shibiko-AI", - "title": "Shibiko AI ComfyUI Tools", - "id": "shibiko-ai-tools", - "reference": "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools", - "files": [ - "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools" - ], - "install_type": "git-clone", - "description": "This is a collection of tools that I use to make my life easier when developing ComfyUI applications. It is a collection of tools that I have created to help me with my development process. I have decided to share these tools with the community in the hopes that they will be useful to others as well. I use this tools to further develop features for [a/https://shibiko.ai](https://shibiko.ai)" - }, - { - "author": "SherryXieYuchen", - "title": "ComfyUI-Image-Inpainting", - "id": "image-inpainting", - "reference": "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting", - "files": [ - "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting" - ], - "install_type": "git-clone", - "description": "Nodes:VAE Encode Inpaint, VAE Decode Inpaint, ColorCorrection Inpaint, ImagePreprocess Inpaint, ImagePostprocess Inpaint, Load Model Inpaint, Inpainting (using Model)" - }, - { - "author": "zeroxoxo", - "title": "ComfyUI-Fast-Style-Transfer", - "id": "fast-style-transfer", - "reference": "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer", - "files": [ - "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer" - ], - "install_type": "git-clone", - "description": "ComfyUI node for fast neural style transfer. This is a simple conversion based on this: [a/https://github.com/rrmina/fast-neural-style-pytorch](https://github.com/rrmina/fast-neural-style-pytorch) Only basic inference functionality is ported for now." - }, - { - "author": "iwanders", - "title": "iwanders/ComfyUI_nodes", - "id": "iwanders-nodes", - "reference": "https://github.com/iwanders/ComfyUI_nodes", - "files": [ - "https://github.com/iwanders/ComfyUI_nodes" - ], - "install_type": "git-clone", - "description": "Nodes:IW SaveString, IW PrintString, IW ReplaceString, IW StringNode, IW StringConcat, IW TokenizerVocab, IW JsonPickItem." - }, - { - "author": "rhdunn", - "title": "comfyui-bus-plugin", - "id": "bus", - "reference": "https://github.com/rhdunn/comfyui-bus-plugin", - "files": [ - "https://github.com/rhdunn/comfyui-bus-plugin" - ], - "install_type": "git-clone", - "description": "A collection of nodes for rerouting multiple I/O lines together in a bus." - }, - { - "author": "rhdunn", - "title": "comfyui-audio-processing", - "reference": "https://github.com/rhdunn/comfyui-audio-processing", - "files": [ - "https://github.com/rhdunn/comfyui-audio-processing" - ], - "install_type": "git-clone", - "description": "This plugin is compatible with the ComfyUI audio nodes." - }, - { - "author": "hyunamy", - "title": "Comfy-UI on-complete-email-me", - "id": "hyunamy", - "reference": "https://github.com/hyunamy/comfy-ui-on-complete-email-me", - "files": [ - "https://github.com/hyunamy/comfy-ui-on-complete-email-me" - ], - "install_type": "git-clone", - "description": "A feature that sends an email via Gmail once image generation is completed in Comfy-ui." - }, - { - "author": "veighnsche", - "title": "comfyui_gr85", - "id": "gr85", - "reference": "https://github.com/veighnsche/comfyui_gr85", - "files": [ - "https://github.com/veighnsche/comfyui_gr85" - ], - "install_type": "git-clone", - "description": "Nodes:Image Dimension Resizer, Image Sizer, Random Ratio, Show Text, Random Title Character, Random Wildcard Tag Picker, Random Show Atm Loc Outfit, Contains Word, Elements Concatenator, ..." - }, - { - "author": "hwhaocool", - "title": "ComfyUI-Select-Any", - "id": "select-any", - "reference": "https://github.com/hwhaocool/ComfyUI-Select-Any", - "files": [ - "https://github.com/hwhaocool/ComfyUI-Select-Any" - ], - "install_type": "git-clone", - "description": "a comfyui custom node, which can select value from inputs" - }, - { - "author": "GreenLandisaLie", - "title": "AuraSR-ComfyUI", - "id": "aurasr-greenlandisalie", - "reference": "https://github.com/GreenLandisaLie/AuraSR-ComfyUI", - "files": [ - "https://github.com/GreenLandisaLie/AuraSR-ComfyUI" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation of [a/Aura-SR](https://github.com/fal-ai/aura-sr)" - }, - { - "author": "licyk", - "title": "ComfyUI-Restart-Sampler", - "id": "restart-sampler-licyk", - "reference": "https://github.com/licyk/ComfyUI-Restart-Sampler", - "files": [ - "https://github.com/licyk/ComfyUI-Restart-Sampler" - ], - "install_type": "git-clone", - "description": "This extension is a node that directly expands the functionality of KSampler, adding the TCD sampling to KSampler." - }, - { - "author": "licyk", - "title": "ComfyUI-HakuImg", - "id": "HakuImg", - "reference": "https://github.com/licyk/ComfyUI-HakuImg", - "files": [ - "https://github.com/licyk/ComfyUI-HakuImg" - ], - "install_type": "git-clone", - "description": "Image processing tool for ComfyUI" - }, - { - "author": "licyk", - "title": "ComfyUI-TCD-Sampler", - "id": "TCD-Sampler", - "reference": "https://github.com/licyk/ComfyUI-TCD-Sampler", - "files": [ - "https://github.com/licyk/ComfyUI-TCD-Sampler" - ], - "install_type": "git-clone", - "description": "Adding TCD sampling" - }, - { - "author": "my-opencode", - "title": "ComfyUI_IndustrialMagick", - "id": "industrialmagick", - "reference": "https://github.com/my-opencode/ComfyUI_IndustrialMagick", - "files": [ - "https://github.com/my-opencode/ComfyUI_IndustrialMagick" - ], - "install_type": "git-clone", - "description": "[a/ImageMagick](https://imagemagick.org/index.php) nodes for ComfyUI. Adds nodes to call ImageMagick subprocesses from ComfyUI.\nRequirements: [a/ImagMagick7](https://imagemagick.org/script/download.php), 'magick' command in your CLI environment." - }, - { - "author": "my-opencode", - "title": "ComfyUI_KSamplerTimer", - "id": "ksamplertimer", - "reference": "https://github.com/my-opencode/ComfyUI_KSamplerTimer", - "files": [ - "https://github.com/my-opencode/ComfyUI_KSamplerTimer" - ], - "install_type": "git-clone", - "description": "A custom node that returns the generation time of the KSampler. Intended for benchmarking or debugging." - }, - { - "author": "SEkINVR", - "title": "ComfyUI SaveAS", - "id": "saveas", - "reference": "https://github.com/SEkINVR/ComfyUI-SaveAs", - "files": [ - "https://github.com/SEkINVR/ComfyUI-SaveAs" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI allows you to save images in multiple formats, including PNG, JPG, WebP, and ICO.\n[w/ComfyUI-Save-Multi-Format is renamed to SaveAs. Remove previous one and reinstall to this.]" - }, - { - "author": "MrSamSeen", - "title": "ComfyUI_SSStereoscope", - "id": "ssstereoscope", - "reference": "https://github.com/MrSamSeen/ComfyUI_SSStereoscope", - "files": [ - "https://github.com/MrSamSeen/ComfyUI_SSStereoscope" - ], - "install_type": "git-clone", - "description": "Side by Side 3D Stereoscope generation node for ComfyUI by SamSeen." - }, - { - "author": "jroc22", - "title": "ComfyUI-CSV-prompt-builder", - "id": "csv-prompt-builder", - "reference": "https://github.com/jroc22/ComfyUI-CSV-prompt-builder", - "files": [ - "https://github.com/jroc22/ComfyUI-CSV-prompt-builder" - ], - "install_type": "git-clone", - "description": "This is a simple node for creating prompts using a .csv file. I created this node as an easy way to output different prompts each time a workflow is run." - }, - { - "author": "DeJoker", - "title": "Pipeline Parallel ComfyUI", - "reference": "https://github.com/DeJoker/pipeline-parallel-comfy", - "files": [ - "https://github.com/DeJoker/pipeline-parallel-comfy" - ], - "install_type": "git-clone", - "description": "provide extra api to run prompt request with parallel execution of independent node" - }, - { - "author": "yiwangsimple", - "title": "ComfyUI_DW_Chat", - "reference": "https://github.com/yiwangsimple/ComfyUI_DW_Chat", - "files": [ - "https://github.com/yiwangsimple/ComfyUI_DW_Chat" - ], - "install_type": "git-clone", - "description": "Content generation with open source models in comfyui via graq api implementation.\n[w/This repo is renamed from ComfyUI_GroqChat to ComfyUI_DW_CHAT. Please remove previous one and reinstall to this.]" - }, - { - "author": "yiwangsimple", - "title": "florence_dw", - "reference": "https://github.com/yiwangsimple/florence_dw", - "files": [ - "https://github.com/yiwangsimple/florence_dw" - ], - "install_type": "git-clone", - "description": "Based on the original repository [a/https://github.com/spacepxl/ComfyUI-Florence-2](https://github.com/spacepxl/ComfyUI-Florence-2), the model loading and storage methods have been improved, and sd3 has been newly added with enhanced speed and accuracy." - }, - { - "author": "Tritant", - "title": "ComfyUI-CreaPrompt", - "id": "creaprompt", - "reference": "https://github.com/tritant/ComfyUI_CreaPrompt", - "files": [ - "https://github.com/tritant/ComfyUI_CreaPrompt" - ], - "install_type": "git-clone", - "description": "Generate random prompts easily." - }, - { - "author": "metncelik", - "title": "comfyui_met_suite", - "reference": "https://github.com/metncelik/comfyui_met_suite", - "files": [ - "https://github.com/metncelik/comfyui_met_suite" - ], - "install_type": "git-clone", - "description": "Nodes: Primitive BBOX, BBOX Padding, BBOX Resize, ImageResize KeepRatio." - }, - { - "author": "Smuzzies", - "title": "comfyui_meme_maker", - "reference": "https://github.com/Smuzzies/comfyui_meme_maker", - "files": [ - "https://github.com/Smuzzies/comfyui_meme_maker" - ], - "install_type": "git-clone", - "description": "Meme Maker Node for ComfyUI." - }, - { - "author": "bluevisor", - "title": "ComfyUI_PS_Blend_Node", - "reference": "https://github.com/bluevisor/ComfyUI_PS_Blend_Node", - "files": [ - "https://github.com/bluevisor/ComfyUI_PS_Blend_Node" - ], - "install_type": "git-clone", - "description": "This repository contains a simple custom node for ComfyUI that implements familiar PS-style blend modes using PyTorch. The PSBlendNode allows you to blend two images together using a variety of blend modes and an opacity parameter." - }, - { - "author": "wTechArtist", - "title": "ComfyUI-CustomNodes", - "reference": "https://github.com/wTechArtist/ComfyUI-CustomNodes", - "files": [ - "https://github.com/wTechArtist/ComfyUI-CustomNodes" - ], - "install_type": "git-clone", - "description": "Nodes:Image Blending Mode Mask, Load Image With Bool, IPAdapter Mad Scientist Weight_Type, IPAdapter FaceID With Bool" - }, - { - "author": "mullakhmetov", - "title": "comfyui_dynamic_util_nodes", - "reference": "https://github.com/mullakhmetov/comfyui_dynamic_util_nodes", - "files": [ - "https://github.com/mullakhmetov/comfyui_dynamic_util_nodes" - ], - "install_type": "git-clone", - "description": "ComfyS3 helpful util nodes for dynamic workflows" - }, - { - "author": "HECer", - "title": "ComfyUI-FilePathCreator", - "reference": "https://github.com/HECer/ComfyUI-FilePathCreator", - "files": [ - "https://github.com/HECer/ComfyUI-FilePathCreator" - ], - "install_type": "git-clone", - "description": "The ComfyUI-FilePathCreator is a custom node extension for ComfyUI designed to generate dynamic filenames based on user-defined parameters. This node helps streamline the process of creating organized and timestamped filenames, ideal for saving output files in a structured manner." - }, - { - "author": "adigayung", - "title": "ComfyUI-Translator", - "reference": "https://github.com/adigayung/ComfyUI-Translator", - "files": [ - "https://github.com/adigayung/ComfyUI-Translator" - ], - "install_type": "git-clone", - "description": "Auto translate all languages ​​to english" - }, - { - "author": "ZZXYWQ", - "title": "ZZX Nodes", - "id": "ZZXYWQ", - "reference": "https://github.com/ZZXYWQ/ComfyUI-ZZXYWQ", - "files": [ - "https://github.com/ZZXYWQ/ComfyUI-ZZXYWQ" - ], - "install_type": "git-clone", - "description": "Nodes: StreamRecorder, VideoFormatConverter, ZZX_PaintsUndo" - }, - { - "author": "SiliconFlow", - "title": "☁️BizyAir Nodes", - "id": "bizyair", - "reference": "https://github.com/siliconflow/BizyAir", - "files": [ - "https://github.com/siliconflow/BizyAir" - ], - "install_type": "git-clone", - "description": "[a/BizyAir](https://github.com/siliconflow/BizyAir) Comfy Nodes that can run in any environment." - }, - { - "author": "BenNarum", - "title": "ComfyUI_CAS", - "reference": "https://github.com/BenNarum/ComfyUI_CAS", - "files": [ - "https://github.com/BenNarum/ComfyUI_CAS" - ], - "install_type": "git-clone", - "description": "This extension provides nodes that allow experimentation with various elements (samplers, latent, activators, attenuator, scheulders, ...) of Stable Diffusion." - }, - { - "author": "Indra's Mirror", - "title": "ComfyUI-Documents", - "reference": "https://github.com/Excidos/ComfyUI-Documents", - "files": [ - "https://github.com/Excidos/ComfyUI-Documents" - ], - "install_type": "git-clone", - "description": "ComfyUI-Documents is a powerful extension for ComfyUI that enhances workflows with advanced document processing capabilities. It includes nodes for loading and parsing various document types (PDF, TXT, DOC, DOCX), converting PDF pages to images, splitting PDFs into individual pages, and selecting specific images from batches. Features include text extraction, image conversion, and seamless integration with existing ComfyUI projects." - }, - { - "author": "Indra's Mirror", - "title": "ComfyUI-Lumina-Next-SFT-DiffusersWrapper", - "reference": "https://github.com/Excidos/ComfyUI-Lumina-Next-SFT-DiffusersWrapper", - "files": [ - "https://github.com/Excidos/ComfyUI-Lumina-Next-SFT-DiffusersWrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI-Lumina-Next-SFT-DiffusersWrapper is a custom node for ComfyUI that integrates the advanced Lumina-Next-SFT model. It offers high-quality image generation with features like time-aware scaling, optional ODE sampling, and support for high-resolution outputs. This node brings the power of the Lumina text-to-image pipeline directly into ComfyUI workflows, allowing for flexible and powerful image generation capabilities." - }, - { - "author": "Expo", - "title": "LM Studio Image to Text Node for ComfyUI", - "id": "comfyui-lmstudio-image-to-text-node", - "reference": "https://github.com/mattjohnpowell/comfyui-lmstudio-image-to-text-node", - "files": [ - "https://github.com/mattjohnpowell/comfyui-lmstudio-image-to-text-node" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that integrates LM Studio's vision models to generate text descriptions of images. It provides a flexible and customizable way to add image-to-text capabilities to your ComfyUI workflows, working with LM Studio's local API." - }, - { - "author": "injet-zhou", - "title": "comfyui_extra_api", - "reference": "https://github.com/injet-zhou/comfyui_extra_api", - "files": [ - "https://github.com/injet-zhou/comfyui_extra_api" - ], - "install_type": "git-clone", - "description": "Add more endpoints to make easy for utilizing ComfyUI API." - }, - { - "author": "leestuartx", - "title": "ComfyUI-GG", - "reference": "https://github.com/leestuartx/ComfyUI-GG", - "files": [ - "https://github.com/leestuartx/ComfyUI-GG" - ], - "install_type": "git-clone", - "description": "ComfyUI-GG is a collection of ComfyUI nodes designed to enhance productivity in image processing workflows. This plugin provides a set of custom nodes that perform various image manipulations and metadata extractions to streamline your tasks." - }, - { - "author": "mgfxer", - "title": "ComfyUI-FrameFX", - "reference": "https://github.com/mgfxer/ComfyUI-FrameFX", - "files": [ - "https://github.com/mgfxer/ComfyUI-FrameFX" - ], - "install_type": "git-clone", - "description": "A set of custom nodes for frame interpolation and video processing in ComfyUI." - }, - { - "author": "Cyberschorsch", - "title": "ComfyUI Checkpoint Loader Config", - "reference": "https://github.com/Cyberschorsch/ComfyUI-checkpoint-config-loader", - "files": [ - "https://github.com/Cyberschorsch/ComfyUI-checkpoint-config-loader" - ], - "install_type": "git-clone", - "description": "Provides a custom node to load config for sampler nodes from a yaml file." - }, - { - "author": "fearnworks", - "title": "Fearnworks Nodes", - "id": "fearnworks", - "reference": "https://github.com/fearnworks/ComfyUI_FearnworksNodes", - "files": [ - "https://github.com/fearnworks/ComfyUI_FearnworksNodes" - ], - "install_type": "git-clone", - "description": "This extension provides various nodes to support multimodal workflows." - }, - { - "author": "807502278", - "title": "ComfyUI-3D-MeshTool", - "id": "3D-MeshTool", - "reference": "https://github.com/807502278/ComfyUI-3D-MeshTool", - "files": [ - "https://github.com/807502278/ComfyUI-3D-MeshTool" - ], - "install_type": "git-clone", - "description": "A simple 3D model processing tool within ComfyUI." - }, - { - "author": "807502278", - "title": "ComfyUI-WJNodes", - "reference": "https://github.com/807502278/ComfyUI-WJNodes", - "files": [ - "https://github.com/807502278/ComfyUI-WJNodes" - ], - "install_type": "git-clone", - "description": "Ready to use upon download. No need to install dependencies for the time being.\nIf there are new functions or suggestions, please provide feedback.\nAttention! The delfile node is not recommended for use on servers. I am not responsible for any losses incurred." - }, - { - "author": "807502278", - "title": "ComfyUI_MaskGCT", - "reference": "https://github.com/807502278/ComfyUI_MaskGCT", - "files": [ - "https://github.com/807502278/ComfyUI_MaskGCT" - ], - "install_type": "git-clone", - "description": "Suitable for Windows - MaskGCT ComfyUI Node Wrapping" - }, - { - "author": "JackEllie", - "title": "ComfyUI-AI-Assistant", - "id": "AI-Assistant", - "reference": "https://github.com/JackEllie/ComfyUI_AI_Assistant", - "files": [ - "https://github.com/JackEllie/ComfyUI_AI_Assistant" - ], - "install_type": "git-clone", - "description": "ComfyUI native implementation of [a/AI-Assistant](https://github.com/tori29umai0123/AI-Assistant)." - }, - { - "author": "APZmedia", - "title": "APZmedia Clean Name", - "id": "clean-filename", - "reference": "https://github.com/APZmedia/ComfyUI-APZmedia-cleanName-from-string", - "files": [ - "https://github.com/APZmedia/ComfyUI-APZmedia-cleanName-from-string" - ], - "install_type": "git-clone", - "description": "A custom node to sanitize text to make clean file names from strings." - }, - { - "author": "APZmedia", - "title": "APZmedia Fast Image Save Node", - "reference": "https://github.com/APZmedia/APZmedia-comfyui-fast-image-save", - "files": [ - "https://github.com/APZmedia/APZmedia-comfyui-fast-image-save" - ], - "install_type": "git-clone", - "description": "This node for ComfyUI allows saving images with an optional alpha channel (transparency). It supports saving images in formats like PNG, JPEG, and WebP." - }, - { - "author": "N3rd00d", - "title": "ComfyUI-Paint3D-Nodes", - "id": "paint3d", - "reference": "https://github.com/N3rd00d/ComfyUI-Paint3D-Nodes", - "files": [ - "https://github.com/N3rd00d/ComfyUI-Paint3D-Nodes" - ], - "install_type": "git-clone", - "description": "Paint3D Nodes is a custom ComfyUI node for 3D model texture inpainting based on [a/Paint3D](https://arxiv.org/pdf/2312.13913)." - }, - { - "author": "sn0w12", - "title": "ComfyUI-Sn0w-Scripts", - "reference": "https://github.com/sn0w12/ComfyUI-Sn0w-Scripts", - "files": [ - "https://github.com/sn0w12/ComfyUI-Sn0w-Scripts" - ], - "install_type": "git-clone", - "description": "A collection of nodes and improvements created for general ease and lora management. These are just nodes I made and found useful, they should work with most other nodes. Most nodes that take in a prompt are made with booru tags in mind and might not work as expected with other prompts." - }, - { - "author": "MiaoshouAI", - "title": "ComfyUI-Miaoshouai-Tagger", - "id": "miaoshouai-tagger", - "reference": "https://github.com/miaoshouai/ComfyUI-Miaoshouai-Tagger", - "files": [ - "https://github.com/miaoshouai/ComfyUI-Miaoshouai-Tagger" - ], - "install_type": "git-clone", - "description": "Nodes to use Florence2 VLM for image tagging and captioning" - }, - { - "author": "Patricio Gonzalez Vivo", - "title": "GLSL Nodes", - "reference": "https://github.com/patriciogonzalezvivo/comfyui_glslnodes", - "files": [ - "https://github.com/patriciogonzalezvivo/comfyui_glslnodes" - ], - "install_type": "git-clone", - "description": "A collections of nodes to support GLSL shaders inside a workflow." - }, - { - "author": "2kpr", - "title": "ComfyUI-UltraPixel", - "id": "comfyui-ultrapixel", - "reference": "https://github.com/2kpr/ComfyUI-UltraPixel", - "files": [ - "https://github.com/2kpr/ComfyUI-UltraPixel" - ], - "install_type": "git-clone", - "description": "Implementation of UltraPixel on ComfyUI" - }, - { - "author": "LightSketch-ai", - "title": "ComfyUI-LivePortraitNode (Replicate API)", - "id": "lightsketchlp", - "reference": "https://github.com/LightSketch-ai/ComfyUI-LivePortraitNode", - "files": [ - "https://github.com/LightSketch-ai/ComfyUI-LivePortraitNode" - ], - "install_type": "git-clone", - "description": "Two simple to install nodes to get Live Portrait working in ComfyUI without the need for a fancy GPU (Replicate account needed)." - }, - { - "author": "aaronchm", - "title": "z-a1111-sd-webui-DanTagGen", - "id": "z-a1111-sd-webui-DanTagGen", - "reference": "https://github.com/Aaron-CHM/ComfyUI-z-a1111-sd-webui-DanTagGen", - "files": [ - "https://github.com/Aaron-CHM/ComfyUI-z-a1111-sd-webui-DanTagGen" - ], - "install_type": "git-clone", - "description": "Improved DanTagGen implementation that posesses all functionality of the A1111 webui extension." - }, - { - "author": "mikebilly", - "title": "Transparent-background-comfyUI", - "id": "transparent-background-comfyui", - "reference": "https://github.com/mikebilly/Transparent-background-comfyUI", - "files": [ - "https://github.com/mikebilly/Transparent-background-comfyUI" - ], - "install_type": "git-clone", - "description": "Removes background using Transparent Background" - }, - { - "author": "un-seen", - "title": "comfyui-tensorop", - "id": "comfyui-tensorop", - "reference": "https://github.com/un-seen/comfyui-tensorops", - "files": [ - "https://github.com/un-seen/comfyui-tensorops" - ], - "install_type": "git-clone", - "description": "Nodes to perform tensor operations in ComfyUI" - }, - { - "author": "un-seen", - "title": "ComfyUI Segment Anything", - "reference": "https://github.com/un-seen/comfyui_segment_anything_plus", - "files": [ - "https://github.com/un-seen/comfyui_segment_anything_plus" - ], - "install_type": "git-clone", - "description": "This project is a ComfyUI version of [a/sd-webui-segment-anything](https://github.com/continue-revolution/sd-webui-segment-anything). At present, only the most core functionalities have been implemented. I would like to express my gratitude to [a/continue-revolution](https://github.com/continue-revolution) for their preceding work on which this is based." - }, - { - "author": "john-mnz", - "title": "ComfyUI-Inspyrenet-Rembg", - "id": "inspyrenet", - "reference": "https://github.com/john-mnz/ComfyUI-Inspyrenet-Rembg", - "files": [ - "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)" - }, - { - "author": "Koushakur", - "title": "ComfyUI-DenoiseChooser", - "id": "denoise-chooser", - "reference": "https://github.com/Koushakur/ComfyUI-DenoiseChooser", - "files": [ - "https://github.com/Koushakur/ComfyUI-DenoiseChooser" - ], - "install_type": "git-clone", - "description": "The latent gets passed straight through unaltered, if it's empty (i.e from a 'Empty Latent Image' node) FLOAT outputs the first value, otherwise it outputs the second value" - }, - { - "author": "ycchanau", - "title": "ComfyUI Preview Magnifier", - "id": "magnifier", - "reference": "https://github.com/ycchanau/ComfyUI_Preview_Magnifier", - "files": [ - "https://github.com/ycchanau/ComfyUI_Preview_Magnifier" - ], - "install_type": "git-clone", - "description": "Custom nodes that preview image with a magnifier." - }, - { - "author": "lrzjason", - "title": "Comfyui Kolors Utils", - "reference": "https://github.com/lrzjason/Comfyui-Kolors-Utils", - "files": [ - "https://github.com/lrzjason/Comfyui-Kolors-Utils" - ], - "install_type": "git-clone", - "description": "NODES: Save Weight As Kolors Unet, Save Kolors" - }, - { - "author": "lrzjason", - "title": "Comfyui-In-Context-Lora-Utils", - "reference": "https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils", - "files": [ - "https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils" - ], - "install_type": "git-clone", - "description": "NODES: Add Mask For IC Lora, Create Context Window, Concatenate Context Window, Auto Patch" - }, - { - "author": "lrzjason", - "title": "ComfyUIJasonNode", - "reference": "https://github.com/lrzjason/ComfyUIJasonNode", - "files": [ - "https://raw.githubusercontent.com/lrzjason/ComfyUIJasonNode/main/SDXLMixSampler.py", - "https://raw.githubusercontent.com/lrzjason/ComfyUIJasonNode/main/LatentByRatio.py" - ], - "install_type": "copy", - "description": "NODES: SDXLMixSampler, LatentByRatio" - }, - { - "author": "amorano", - "title": "Cozy Communication", - "id": "cozy_comm", - "reference": "https://github.com/cozy-comfyui/cozy_comm", - "files": [ - "https://github.com/cozy-comfyui/cozy_comm" - ], - "nodename_pattern": " \\(cozy\\)", - "install_type": "git-clone", - "description": "Post images and video to Discord. Nodes to facilitate communication using REST." - }, - { - "author": "RhizoNymph", - "title": "ComfyUI-Latte", - "id": "latte", - "reference": "https://github.com/RhizoNymph/ComfyUI-Latte", - "files": [ - "https://github.com/RhizoNymph/ComfyUI-Latte" - ], - "install_type": "git-clone", - "description": "Nodes to use [a/latte](https://github.com/Vchitect/Latte) for text to video generation" - }, - { - "author": "RhizoNymph", - "title": "ComfyUI-CLIPSlider", - "id": "clipslider", - "reference": "https://github.com/RhizoNymph/ComfyUI-CLIPSlider", - "files": [ - "https://github.com/RhizoNymph/ComfyUI-CLIPSlider" - ], - "install_type": "git-clone", - "description": "A node to replicate [a/https://huggingface.co/spaces/latentexplorers/latentnavigation-flux](A node to replicate https://huggingface.co/spaces/latentexplorers/latentnavigation-flux)" - }, - { - "author": "RhizoNymph", - "title": "ComfyUI-ColorWheel", - "reference": "https://github.com/RhizoNymph/ComfyUI-ColorWheel", - "files": [ - "https://github.com/RhizoNymph/ComfyUI-ColorWheel" - ], - "install_type": "git-clone", - "description": "NODES:Color Wheel Generator" - }, - { - "author": "Marksusu", - "title": "ComfyUI_MTCLIPEncode", - "id": "mtclipencode", - "reference": "https://github.com/Marksusu/ComfyUI_MTCLIPEncode", - "files": [ - "https://github.com/Marksusu/ComfyUI_MTCLIPEncode" - ], - "install_type": "git-clone", - "description": "MTCLIPEncode: An extension for ComfyUI's CLIPTextEncode node, offering multilingual translation (using MarianMT) and prompt enhancement (using Ollama). Seamlessly translate your native language prompts into English and further optimize them for generating your desired images with Stable Diffusion. Supports Krita AI Diffusion." - }, - { - "author": "fssorc", - "title": "ComfyUI_FaceShaper", - "id": "facesharper", - "reference": "https://github.com/fssorc/ComfyUI_FaceShaper", - "files": [ - "https://github.com/fssorc/ComfyUI_FaceShaper" - ], - "install_type": "git-clone", - "description": "Match two faces' shape before using other face swap nodes\nFace-swapping tools typically only replace facial features during the swap, without altering the facial shape. When there is a significant difference in facial shape between the target person and the person in the original photo, the result of the face swap is less satisfactory.\nThis project is a small script that can first liquefy and stretch the face in the original photo according to the horizontal and vertical proportions of the target person's facial contour. The resulting image can be used as input for other face-swapping nodes." - }, - { - "author": "fssorc", - "title": "ComfyUI_pose_inter", - "reference": "https://github.com/fssorc/ComfyUI_pose_inter", - "files": [ - "https://github.com/fssorc/ComfyUI_pose_inter" - ], - "install_type": "git-clone", - "description": "Generate transition frames between two character posture images. The prerequisite for running is to have installed comfyui_controlnet_aux, using its Open Pose or DWPose preprocessor" - }, - { - "author": "fssorc", - "title": "ComfyUI_FFT", - "reference": "https://github.com/fssorc/ComfyUI_FFT", - "files": [ - "https://github.com/fssorc/ComfyUI_FFT" - ], - "install_type": "git-clone", - "description": "Perform a Fast Fourier Transform on the image, and then users can freely select the filtering range to filter the image. The main function is to remove the grid patterns on the image, and it can also perform high-pass filtering and low-pass filtering. The detailed workflow is shown in the figure below. The PNG file contains the ComfyUI workflow.The working principle is similar to the FFT filter in Photoshop." - }, - { - "author": "fssorc", - "title": "ComfyUI_RopeWrapper", - "reference": "https://github.com/fssorc/ComfyUI_RopeWrapper", - "files": [ - "https://github.com/fssorc/ComfyUI_RopeWrapper" - ], - "install_type": "git-clone", - "description": "Wrap Rope into ComfyUI, do a little change to use in ComfyUI. All credit goes to Hillobar and his ROPE [ㅁ/https://github.com/Hillobar/Rope](https://github.com/Hillobar/Rope)" - }, - { - "author": "BetaDoggo", - "title": "ComfyUI YetAnotherSafetyChecker", - "id": "yetanothersafetychecker", - "reference": "https://github.com/BetaDoggo/ComfyUI-YetAnotherSafetyChecker", - "files": [ - "https://github.com/BetaDoggo/ComfyUI-YetAnotherSafetyChecker" - ], - "install_type": "git-clone", - "description": "Just a simple node to filter out NSFW outputs. This node utilizes [a/AdamCodd/vit-base-nsfw-detector](https://huggingface.co/AdamCodd/vit-base-nsfw-detector) to score the outputs. I chose this model because it's small, fast, and performed very well in my testing. Nudity tends to be scored in the 0.95+ range, but I've set the default to 0.8 as a safe baseline." - }, - { - "author": "BetaDoggo", - "title": "neggles/ComfyUI-WDV-Nodes [gist-wrapper]", - "reference": "https://github.com/BetaDoggo/ComfyUI-WDV-Nodes", - "files": [ - "https://github.com/BetaDoggo/ComfyUI-WDV-Nodes" - ], - "install_type": "git-clone", - "description": "100% of code taken from [a/https://gist.github.com/neggles/ecb6327251a9e274428d07636c727eb9](https://gist.github.com/neggles/ecb6327251a9e274428d07636c727eb9)." - }, - { - "author": "BetaDoggo", - "title": "ComfyUI Video Player", - "id": "videoplayer", - "reference": "https://github.com/BetaDoggo/ComfyUI-VideoPlayer", - "files": [ - "https://github.com/BetaDoggo/ComfyUI-VideoPlayer" - ], - "install_type": "git-clone", - "description": "A silly POC Video Player for ComfyUI" - }, - { - "author": "BetaDoggo", - "title": "Gatcha Embeddings", - "reference": "https://github.com/BetaDoggo/ComfyUI-Gatcha-Embedding", - "files": [ - "https://github.com/BetaDoggo/ComfyUI-Gatcha-Embedding" - ], - "install_type": "git-clone", - "description": "A revolutionary technique for increasing output variety." - }, - { - "author": "BetaDoggo", - "title": "ComfyUI-FastSDCPU", - "reference": "https://github.com/BetaDoggo/ComfyUI-FastSDCPU", - "files": [ - "https://github.com/BetaDoggo/ComfyUI-FastSDCPU" - ], - "install_type": "git-clone", - "description": "A set of nodes for interfacing with the FastSDCPU webserver." - }, - { - "author": "WX-NPS1598", - "title": "Auto Crop By NPS", - "id": "autocrop-nps", - "reference": "https://github.com/WX-NPS1598/ComfyUI-Auto_Crop_By_NPS", - "files": [ - "https://github.com/WX-NPS1598/ComfyUI-Auto_Crop_By_NPS" - ], - "install_type": "git-clone", - "description": "A very useful automatic cropping tool! It can realize cropping, expansion and rotation functions in the form of a slider. " - }, - { - "author": "googincheng", - "title": "ComfyUX", - "id": "comfyux", - "reference": "https://github.com/googincheng/ComfyUX", - "files": [ - "https://github.com/googincheng/ComfyUX" - ], - "install_type": "git-clone", - "description": "Better user experience plugin for ComfyUI." - }, - { - "author": "wootwootwootwoot", - "title": "ComfyUI-RK-Sampler", - "id": "rk_sampler", - "reference": "https://github.com/wootwootwootwoot/ComfyUI-RK-Sampler", - "files": [ - "https://github.com/wootwootwootwoot/ComfyUI-RK-Sampler" - ], - "install_type": "git-clone", - "description": "Batched Runge-Kutta Samplers for ComfyUI" - }, - { - "author": "TechnoByteJS", - "title": "TechNodes", - "id": "technodes", - "reference": "https://github.com/TechnoByteJS/ComfyUI-TechNodes", - "files": [ - "https://github.com/TechnoByteJS/ComfyUI-TechNodes" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for merging, testing and more.\nNOTE: SDNext Merge, VAE Merge, MBW Layers, Repeat VAE, Quantization." - }, - { - "author": "Fantasy AI Studio", - "title": "FAI-Node", - "id": "FAI-Node", - "reference": "https://github.com/alanhuang67/ComfyUI-FAI-Node", - "files": [ - "https://github.com/alanhuang67/ComfyUI-FAI-Node" - ], - "install_type": "git-clone", - "description": "Various custom nodes for ComfyUI" - }, - { - "author": "MuziekMagie", - "title": "ComfyUI-Matchering", - "id": "matchering", - "reference": "https://github.com/MuziekMagie/ComfyUI-Matchering", - "files": [ - "https://github.com/MuziekMagie/ComfyUI-Matchering" - ], - "install_type": "git-clone", - "description": "A [a/Matchering](https://github.com/sergree/matchering)-node for ComfyUI.\nNOTE: You take TWO audio files and feed them into Matchering" - }, - { - "author": "filliptm", - "title": "ComfyUI_FL-Trainer", - "reference": "https://github.com/filliptm/ComfyUI_FL-Trainer", - "files": [ - "https://github.com/filliptm/ComfyUI_FL-Trainer" - ], - "install_type": "git-clone", - "description": "Train Image Loras on both sd1.5 and SDXL. This repo git clones the pieces needed to train. It pops open a second terminal window do do the training. It will also display the inference samples in the node itself so you can track the results." - }, - { - "author": "Mintbeer96", - "title": "ComfyUI-KerasOCR", - "reference": "https://github.com/Mintbeer96/ComfyUI-KerasOCR", - "files": [ - "https://github.com/Mintbeer96/ComfyUI-KerasOCR" - ], - "install_type": "git-clone", - "description": "An OCR node for detect text in image and returns covering mask." - }, - { - "author": "pikenrover", - "title": "ComfyUI_PRNodes", - "reference": "https://github.com/pikenrover/ComfyUI_PRNodes", - "files": [ - "https://github.com/pikenrover/ComfyUI_PRNodes" - ], - "install_type": "git-clone", - "description": "Nodes:RandomPrompt, RandomPromptMixed, ImageScaleTo, EmptyLatentImageScaleBy, LoraLoaderExtended, Save Image w/Metadata, CheckpointLoaderSimpleExtended" - }, - { - "author": "EnragedAntelope", - "title": "ComfyUI-Doubutsu-Describer", - "reference": "https://github.com/EnragedAntelope/ComfyUI-Doubutsu-Describer", - "files": [ - "https://github.com/EnragedAntelope/ComfyUI-Doubutsu-Describer" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI allows you to use the Doubutsu small VLM model to describe images. Credit and further information on Doubutsu: [a/https://huggingface.co/qresearch/doubutsu-2b-pt-756](https://huggingface.co/qresearch/doubutsu-2b-pt-756)" - }, - { - "author": "EnragedAntelope", - "title": "ComfyUI-ConstrainResolution", - "reference": "https://github.com/EnragedAntelope/ComfyUI-ConstrainResolution", - "files": [ - "https://github.com/EnragedAntelope/ComfyUI-ConstrainResolution" - ], - "install_type": "git-clone", - "description": "Given min/max resolution constraints, this automatically suggests optimal dimensions while preserving aspect ratio. Ideal for Image to Image (I2I) and Image to Video (I2V) workflows!" - }, - { - "author": "EnragedAntelope", - "title": "ComfyUI-EACloudNodes", - "reference": "https://github.com/EnragedAntelope/ComfyUI-EACloudNodes", - "files": [ - "https://github.com/EnragedAntelope/ComfyUI-EACloudNodes" - ], - "install_type": "git-clone", - "description": "A collection of ComfyUI custom nodes for interacting with various cloud services. These nodes are designed to work with any ComfyUI instance, including cloud-hosted environments (such as MimicPC) where users may have limited system access." - }, - { - "author": "jn-jairo", - "title": "JNComfy", - "reference": "https://github.com/jn-jairo/jn_comfyui", - "files": [ - "https://github.com/jn-jairo/jn_comfyui" - ], - "install_type": "git-clone", - "description": "ComfyUI extension with patches and nodes.\nPatches:Preview device, Extension device, Temperature, Memory estimation, Optimizations, Easy generic inputs, Easy multiple inputs.\nNODES: Image nodes, Image/Area nodes, Image/Blip nodes, Image/Face nodes, Sampling nodes, Patch nodes, Primitive nodes, Primitive/Conversion nodes, Primitive/Process nodes, Workflow nodes, etc..." - }, - { - "author": "akierson", - "title": "comfyui-colornodes", - "reference": "https://github.com/akierson/comfyui-colornodes", - "files": [ - "https://github.com/akierson/comfyui-colornodes" - ], - "install_type": "git-clone", - "description": "Basic Color Nodes for ComfyUI" - }, - { - "author": "akierson", - "title": "ComfyUI-textnodes", - "reference": "https://github.com/akierson/ComfyUI-textnodes", - "files": [ - "https://github.com/akierson/ComfyUI-textnodes" - ], - "install_type": "git-clone", - "description": "Misc Text Nodes for Comfy UI" - }, - { - "author": "ai-shizuka", - "title": "ComfyUI-tbox", - "reference": "https://github.com/ai-shizuka/ComfyUI-tbox", - "files": [ - "https://github.com/ai-shizuka/ComfyUI-tbox" - ], - "install_type": "git-clone", - "description": "Nodes:ImageLoader, ImageSaver, ImagesSaver, ImageResize, ImageSize, GFPGANNode, MaskAddNode, Video Load, ..." - }, - { - "author": "neverbiasu", - "title": "ComfyUI-Image-Captioner", - "id": "image-captioner", - "reference": "https://github.com/neverbiasu/ComfyUI-Image-Captioner", - "files": [ - "https://github.com/neverbiasu/ComfyUI-Image-Captioner" - ], - "install_type": "git-clone", - "description": "A ComfyUI extension for generating captions for your images. Runs on your own system, no external services used, no filter.\nUses various VLMs with APIs to generate captions for images. You can give instructions or ask questions in natural language." - }, - { - "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": "neverbiasu", - "title": "ComfyUI-StyleShot", - "reference": "https://github.com/neverbiasu/ComfyUI-StyleShot", - "files": [ - "https://github.com/neverbiasu/ComfyUI-StyleShot" - ], - "install_type": "git-clone", - "description": "This project integrates [a/StyleShot](https://github.com/open-mmlab/StyleShot) functionality into ComfyUI, thanks to the foundational work by continue-revolution." - }, - { - "author": "neverbiasu", - "title": "ComfyUI-Dashscope", - "reference": "https://github.com/neverbiasu/ComfyUI-Dashscope", - "files": [ - "https://github.com/neverbiasu/ComfyUI-Dashscope" - ], - "install_type": "git-clone", - "description": "This project adapts the dashscope([a/aliyun-bailian](https://bailian.console.aliyun.com)) api into ComfyUI." - }, - { - "author": "DriftJohnson", - "title": "DJZ-Nodes", - "id": "DJZ-Nodes", - "reference": "https://github.com/MushroomFleet/DJZ-Nodes", - "files": [ - "https://github.com/MushroomFleet/DJZ-Nodes" - ], - "install_type": "git-clone", - "description": "AspectSize and other nodes" - }, - { - "author": "var1ableX", - "title": "ComfyUI_Accessories", - "reference": "https://github.com/var1ableX/ComfyUI_Accessories", - "files": [ - "https://github.com/var1ableX/ComfyUI_Accessories" - ], - "install_type": "git-clone", - "description": "Get Mask Dimensions" - }, - { - "author": "Makki_Shizu", - "title": "comfyui_reimgsize", - "id": "reimgsize", - "reference": "https://github.com/MakkiShizu/comfyui_reimgsize", - "files": [ - "https://github.com/MakkiShizu/comfyui_reimgsize" - ], - "install_type": "git-clone", - "description": "a simple reimgsize node(s) in comfyui." - }, - { - "author": "Makki_Shizu", - "title": "ComfyUI-Prompt-Wildcards", - "id": "Prompt-Wildcards", - "reference": "https://github.com/MakkiShizu/ComfyUI-Prompt-Wildcards", - "files": [ - "https://github.com/MakkiShizu/ComfyUI-Prompt-Wildcards" - ], - "install_type": "git-clone", - "description": "Optional wildcards in ComfyUI" - }, - { - "author": "Makki_Shizu", - "title": "ComfyUI-SaveAnimatedGIF", - "id": "SaveAnimatedGIF", - "reference": "https://github.com/MakkiShizu/ComfyUI-SaveAnimatedGIF", - "files": [ - "https://github.com/MakkiShizu/ComfyUI-SaveAnimatedGIF" - ], - "install_type": "git-clone", - "description": "Save animated GIF format nodes in ComfyUI" - }, - { - "author": "JosefKuchar", - "title": "ComfyUI-AdvancedTiling", - "reference": "https://github.com/JosefKuchar/ComfyUI-AdvancedTiling", - "files": [ - "https://github.com/JosefKuchar/ComfyUI-AdvancedTiling" - ], - "install_type": "git-clone", - "description": "Advanced tiling of various shapes for ComfyUI" - }, - { - "author": "Fuou Marinas", - "title": "ComfyUI-EbSynth", - "id": "comfyEbsynth", - "reference": "https://github.com/FuouM/ComfyUI-EbSynth", - "files": [ - "https://github.com/FuouM/ComfyUI-EbSynth" - ], - "install_type": "git-clone", - "description": "Run EbSynth, Fast Example-based Image Synthesis and Style Transfer, in ComfyUI." - }, - { - "author": "Parameshvadivel", - "title": "ComfyUI-SVGview", - "id": "svgview", - "reference": "https://github.com/Parameshvadivel/ComfyUI-SVGview", - "files": [ - "https://github.com/Parameshvadivel/ComfyUI-SVGview" - ], - "install_type": "git-clone", - "description": "Nodes:Preview SVG" - }, - { - "author": "Visionatrix", - "title": "ComfyUI-Visionatrix", - "id": "visionatrix", - "reference": "https://github.com/Visionatrix/ComfyUI-Visionatrix", - "files": [ - "https://github.com/Visionatrix/ComfyUI-Visionatrix" - ], - "install_type": "git-clone", - "description": "The ComfyUI-Visionatrix nodes are designed for convenient ComfyUI to [a/Visionatrix](https://github.com/Visionatrix/Visionatrix) workflow support migration, in particular to extract prompt input params (input, textarea, checkbox, select, range, file) to be used in simplified Visionatrix UI." - }, - { - "author": "liangt", - "title": "comfyui-loadimagewithsubfolder", - "reference": "https://github.com/liangt/comfyui-loadimagewithsubfolder", - "files": [ - "https://github.com/liangt/comfyui-loadimagewithsubfolder" - ], - "install_type": "git-clone", - "description": "Extend LoadImage node with subfolder support" - }, - { - "author": "vault-developer", - "title": "ImageBlender", - "reference": "https://github.com/vault-developer/comfyui-image-blender", - "files": [ - "https://github.com/vault-developer/comfyui-image-blender" - ], - "install_type": "git-clone", - "description": "ComfyuiImageBlender is a custom node for ComfyUI. It may be used to blend two images together using a specified blending mode." - }, - { - "author": "gisu", - "title": "foxpack", - "id": "foxp", - "reference": "https://github.com/gisu/comfyui-foxpack", - "files": [ - "https://github.com/gisu/comfyui-foxpack" - ], - "install_type": "git-clone", - "description": "Collection of nodes for the automation of workflows" - }, - { - "author": "webfiltered", - "title": "WTF? - a debug node for ComfyUI", - "id": "debugnode", - "reference": "https://github.com/webfiltered/DebugNode-ComfyUI", - "files": [ - "https://github.com/webfiltered/DebugNode-ComfyUI" - ], - "install_type": "git-clone", - "description": "This node provides a simple way to view the output of many nodes, without leaving ComfyUI." - }, - { - "author": "pzc163", - "title": "Comfyui-CatVTON", - "id": "comfyui-catvton", - "reference": "https://github.com/pzc163/Comfyui-CatVTON", - "files": [ - "https://github.com/pzc163/Comfyui-CatVTON" - ], - "install_type": "git-clone", - "description": "Comfyui-CatVTON This repository is the modified official Comfyui node of CatVTON, which is a simple and efficient virtual try-on diffusion model with 1) Lightweight Network (899.06M parameters totally), 2) Parameter-Efficient Training (49.57M parameters trainable) 3) Simplified Inference (< 8G VRAM for 1024X768 resolution).\nThe original GitHub project is [a/https://github.com/Zheng-Chong/CatVTON](https://github.com/Zheng-Chong/CatVTON)" - }, - { - "author": "pzc163", - "title": "Comfyui_MiniCPMv2_6-prompt-generator", - "id": "Comfyui_MiniCPMv2_6-prompt-generator", - "reference": "https://github.com/pzc163/Comfyui_MiniCPMv2_6-prompt-generator", - "files": [ - "https://github.com/pzc163/Comfyui_MiniCPMv2_6-prompt-generator" - ], - "install_type": "git-clone", - "description": "This is an implementation of [MiniCPMv2_6-prompt-generator](https://huggingface.co/pzc163/MiniCPMv2_6-prompt-generator) by [ComfyUI](https://github.com/comfyanonymous/ComfyUI), including support for single-image caption, generate prompt by upload image and batch-images Prompt generation." - }, - { - "author": "aisabervisionlab", - "title": "ComfyUI_merge_ASVL", - "id": "merge-asvl", - "reference": "https://github.com/aisabervisionlab/ComfyUI_merge_ASVL", - "files": [ - "https://github.com/aisabervisionlab/ComfyUI_merge_ASVL" - ], - "install_type": "git-clone", - "description": "This is a simple node for connecting images. For pictures of the same size, users can choose to fill in vertical in the parameter to connect the pictures vertically or fill in horizontal to connect the pictures horizontally." - }, - { - "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": "akatz-ai", - "title": "🌊 Depthflow Nodes", - "id": "depthflow-akatz-ai", - "reference": "https://github.com/akatz-ai/ComfyUI-Depthflow-Nodes", - "files": [ - "https://github.com/akatz-ai/ComfyUI-Depthflow-Nodes" - ], - "install_type": "git-clone", - "description": "Implementation of DepthFlow nodes for ComfyUI, adds a 2.5D parallax effect to images and videos. Compatible with Ryan's Flex system." - }, - { - "author": "akatz-ai", - "title": "DepthCrafter Nodes", - "id": "depthcrafter-akatz-ai", - "reference": "https://github.com/akatz-ai/ComfyUI-DepthCrafter-Nodes", - "files": [ - "https://github.com/akatz-ai/ComfyUI-DepthCrafter-Nodes" - ], - "install_type": "git-clone", - "description": "Implementation of DepthCrafter nodes for ComfyUI, create consistent depth maps for your videos." - }, - { - "author": "akatz-ai", - "title": "ComfyUI-X-Portrait-Nodes", - "id": "comfyui-x-portrait-nodes", - "reference": "https://github.com/akatz-ai/ComfyUI-X-Portrait-Nodes", - "files": [ - "https://github.com/akatz-ai/ComfyUI-X-Portrait-Nodes" - ], - "install_type": "git-clone", - "description": "Implementation of X-Portrait nodes for ComfyUI, animate portraits with an input video and a reference image." - }, - { - "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." - }, - { - "author": "Fuou Marinas", - "title": "FM_nodes", - "reference": "https://github.com/FuouM/FM_nodes", - "files": [ - "https://github.com/FuouM/FM_nodes" - ], - "install_type": "git-clone", - "description": "A collection of ComfyUI nodes. Including: WFEN, RealViFormer, ProPIH" - }, - { - "author": "Fuou Marinas", - "title": "ComfyUI-FirstOrderMM", - "id": "fomm", - "reference": "https://github.com/FuouM/ComfyUI-FirstOrderMM", - "files": [ - "https://github.com/FuouM/ComfyUI-FirstOrderMM" - ], - "install_type": "git-clone", - "description": "ComfyUI-native nodes to run First Order Motion Model for Image Animation and its non-diffusion-based successors. [a/https://github.com/AliaksandrSiarohin/first-order-model](https://github.com/AliaksandrSiarohin/first-order-model)" - }, - { - "author": "Fuou Marinas", - "title": "ComfyUI-StyleTransferPlus", - "id": "styletransferplus", - "reference": "https://github.com/FuouM/ComfyUI-StyleTransferPlus", - "files": [ - "https://github.com/FuouM/ComfyUI-StyleTransferPlus" - ], - "install_type": "git-clone", - "description": "Nodes:Neural Neighbor, CAST, EFDM, MicroAST, Coral Color Transfer." - }, - { - "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": "MiddleKD", - "title": "ComfyUI-productfix", - "reference": "https://github.com/MiddleKD/ComfyUI-productfix", - "files": [ - "https://github.com/MiddleKD/ComfyUI-productfix" - ], - "install_type": "git-clone", - "description": "This is a ComfyUI custom node that helps generate images while preserving the text, logos, and details of e-commerce products." - }, - { - "author": "MiddleKD", - "title": "ComfyUI-denoise-mask-scheduler", - "reference": "https://github.com/MiddleKD/ComfyUI-denoise-mask-scheduler", - "files": [ - "https://github.com/MiddleKD/ComfyUI-denoise-mask-scheduler" - ], - "install_type": "git-clone", - "description": "ComfyUI-denoise-mask-scheduler experimental approach involves selectively applying a denoise mask at each step during the inpainting inference process in diffusion models." - }, - { - "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": "noarche", - "title": "noarche/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": "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, Caption, BatchImageProcessor" - }, - { - "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": "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": "Using image caption models to extract prompts in ComfyUI" - }, - { - "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, Save Diffusion Model, Load Checkpoint BNB On the fly, Load UNET BNB On the fly" - }, - { - "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": "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": "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": "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": "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": "leeguandong", - "title": "ComfyUI_M3Net", - "reference": "https://github.com/leeguandong/ComfyUI_M3Net", - "files": [ - "https://github.com/leeguandong/ComfyUI_M3Net" - ], - "install_type": "git-clone", - "description": "ComfyUI for [a/M3Net](https://github.com/I2-Multimedia-Lab/M3Net)" - }, - { - "author": "leeguandong", - "title": "ComfyUI_InternVL2", - "reference": "https://github.com/leeguandong/ComfyUI_InternVL2", - "files": [ - "https://github.com/leeguandong/ComfyUI_InternVL2" - ], - "install_type": "git-clone", - "description": "ComfyUI for [a/InternVL](https://github.com/OpenGVLab/InternVL)" - }, - { - "author": "leeguandong", - "title": "ComfyUI_LLaSM", - "reference": "https://github.com/leeguandong/ComfyUI_LLaSM", - "files": [ - "https://github.com/leeguandong/ComfyUI_LLaSM" - ], - "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": "leeguandong", - "title": "ComfyUI_VisualAttentionMap", - "reference": "https://github.com/leeguandong/ComfyUI_VisualAttentionMap", - "files": [ - "https://github.com/leeguandong/ComfyUI_VisualAttentionMap" - ], - "install_type": "git-clone", - "description": "NODES:HF ModelLoader, Show Images, Text2Image Inference, Decode Latent, Show CrossAttn Map, Show SelfAttn Map" - }, - { - "author": "leeguandong", - "title": "ComfyUI nodes to use MasaCtrl", - "reference": "https://github.com/leeguandong/ComfyUI_MasaCtrl", - "files": [ - "https://github.com/leeguandong/ComfyUI_MasaCtrl" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use MasaCtrl" - }, - { - "author": "leeguandong", - "title": "ComfyUI_CompareModelWeights", - "reference": "https://github.com/leeguandong/ComfyUI_CompareModelWeights", - "files": [ - "https://github.com/leeguandong/ComfyUI_CompareModelWeights" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use CompareModelWeights" - }, - { - "author": "leeguandong", - "title": "ComfyUI_FluxCustomId", - "reference": "https://github.com/leeguandong/ComfyUI_FluxCustomId", - "files": [ - "https://github.com/leeguandong/ComfyUI_FluxCustomId" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use FluxCustomId\nOriginal repo: [a/https://github.com/damo-cv/FLUX-customID](https://github.com/damo-cv/FLUX-customID)" - }, - { - "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": "kappa54", - "title": "ComfyUI Usability", - "id": "comfyui_usability", - "reference": "https://github.com/kappa54m/ComfyUI_Usability", - "files": [ - "https://github.com/kappa54m/ComfyUI_Usability" - ], - "install_type": "git-clone", - "description": "Custom nodes intended to improve usability." - }, - { - "author": "IuvenisSapiens", - "title": "ComfyUI_MiniCPM-V-2_6-int4", - "id": "minicpm-v-2_6-int4", - "reference": "https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4", - "files": [ - "https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4" - ], - "install_type": "git-clone", - "description": "This is an implementation of [a/MiniCPM-V-2_6-int4](https://github.com/OpenBMB/MiniCPM-V) by [a/ComfyUI](https://github.com/comfyanonymous/ComfyUI), including support for text-based queries, video queries, single-image queries, and multi-image queries to generate captions or responses." - }, - { - "author": "IuvenisSapiens", - "title": "ComfyUI_Qwen2-Audio-7B-Instruct-Int4", - "id": "qwen2-audio-7b-instruct-int4", - "reference": "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-Audio-7B-Instruct-Int4", - "files": [ - "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-Audio-7B-Instruct-Int4" - ], - "install_type": "git-clone", - "description": "This is an implementation of [a/Qwen2-Audio-7B-Instruct-Int4](https://github.com/QwenLM/Qwen2-Audio) by [a/ComfyUI](https://github.com/comfyanonymous/ComfyUI), including support for text-based queries and audio queries to generate captions or responses." - }, - { - "author": "mltask", - "title": "MLTask_ComfyUI", - "id": "mltask_comfyui", - "reference": "https://github.com/misterjoessef/MLTask_ComfyUI", - "files": [ - "https://github.com/misterjoessef/MLTask_ComfyUI" - ], - "install_type": "git-clone", - "description": "a set of nodes to help u run ai code using MLTask" - }, - { - "author": "smlbiobot", - "title": "ComfyUI-Flux-Replicate-API", - "id": "replicate-api", - "reference": "https://github.com/smlbiobot/ComfyUI-Flux-Replicate-API", - "files": [ - "https://github.com/smlbiobot/ComfyUI-Flux-Replicate-API" - ], - "install_type": "git-clone", - "description": "Flux Pro via Replicate API\nCreate API key at [a/https://replicate.com/account/api-tokens](https://replicate.com/account/api-tokens)\nCopy config.ini.example to config.ini and put the replicate key there." - }, - { - "author": "smlbiobot", - "title": "sml-comfyui-prompt-expansion", - "id": "sml-comfyui-prompt-expansion", - "reference": "https://github.com/smlbiobot/sml-comfyui-prompt-expansion", - "files": [ - "https://github.com/smlbiobot/sml-comfyui-prompt-expansion" - ], - "install_type": "git-clone", - "description": "Prompt Expansion for Stable Diffusion, using Deepseek API." - }, - { - "author": "Jjulianadv", - "title": "Wild Divide", - "reference": "https://github.com/Julian-adv/WildDivide", - "files": [ - "https://github.com/Julian-adv/WildDivide" - ], - "install_type": "git-clone", - "description": "This extension provides the ability to build prompts using wildcards for each region of a split image." - }, - { - "author": "goburiin", - "title": "nsfwrecog-comfyui", - "reference": "https://github.com/goburiin/nsfwrecog-comfyui", - "files": [ - "https://github.com/goburiin/nsfwrecog-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:NSFW Detector" - }, - { - "author": "eastoc", - "title": "Semantic-SAM", - "reference": "https://github.com/eastoc/ComfyUI_SemanticSAM", - "files": [ - "https://github.com/eastoc/ComfyUI_SemanticSAM" - ], - "install_type": "git-clone", - "description": "Segment and Recognize Anything at Any Granularity." - }, - { - "author": "LING-APE", - "title": "ComfyUI-PixelResolutionCalculator", - "id": "PixelCalulator", - "reference": "https://github.com/Ling-APE/ComfyUI-PixelResolutionCalculator", - "files": [ - "https://github.com/Ling-APE/ComfyUI-PixelResolutionCalculator" - ], - "install_type": "git-clone", - "description": "Simple resuluition calculator to convert pixel resolution and aspect ratio to laten friendlt pixel width and height size." - }, - { - "author": "Cyber-Blacat", - "title": "ComfyUI-Yuan", - "reference": "https://github.com/Cyber-Blacat/ComfyUI-Yuan", - "files": [ - "https://github.com/Cyber-Blacat/ComfyUI-Yuan" - ], - "install_type": "git-clone", - "description": "Some simple&practical ComfyUI image processing nodes." - }, - { - "author": "blackcodetavern", - "title": "ComfyUI-Benripack", - "reference": "https://github.com/blackcodetavern/ComfyUI-Benripack", - "files": [ - "https://github.com/blackcodetavern/ComfyUI-Benripack" - ], - "install_type": "git-clone", - "description": "ComfyUI-Benripack is an extension for ComfyUI that provides a CharacterPipe node. This node allows for managing various elements such as images, prompts, and models in a single structure, simplifying the workflow for character-based image generation." - }, - { - "author": "MohammadAboulEla", - "title": "ComfyUI-iTools", - "reference": "https://github.com/MohammadAboulEla/ComfyUI-iTools", - "files": [ - "https://github.com/MohammadAboulEla/ComfyUI-iTools" - ], - "install_type": "git-clone", - "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", - "title": "Hellrunner's Magical Nodes", - "reference": "https://github.com/Hellrunner2k/ComfyUI-HellrunnersMagicalNodes", - "files": [ - "https://github.com/Hellrunner2k/ComfyUI-HellrunnersMagicalNodes" - ], - "install_type": "git-clone", - "description": "Nodes:Magical Save Node, Thermal Latenator. This package contains a collection of neat nodes that are supposed to ease your comfy-flow." - }, - { - "author": "caleboleary", - "title": "Comfyui-calbenodes", - "reference": "https://github.com/caleboleary/Comfyui-calbenodes", - "files": [ - "https://github.com/caleboleary/Comfyui-calbenodes" - ], - "install_type": "git-clone", - "description": "Nodes:CharacterManagerNode, FilmGrain, FlipFlopperSameArch" - }, - { - "author": "Raapys", - "title": "LatentGC Aggressive", - "id": "latentgcaggressive", - "reference": "https://github.com/Raapys/ComfyUI-LatentGC_Aggressive", - "files": [ - "https://github.com/Raapys/ComfyUI-LatentGC_Aggressive" - ], - "install_type": "git-clone", - "description": "Simple latent-passthrough node for running a full VRAM cleanup between workflow stages." - }, - { - "author": "Pheat-AI", - "title": "Remade_nodes", - "reference": "https://github.com/Pheat-AI/Remade_nodes", - "files": [ - "https://github.com/Pheat-AI/Remade_nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Batch Image Blend by Mask, Batch Enlarged Overlay, Batch Image Overlay, Remove Black Pixels to Transparent, Canny Shrink and Recenter, ..." - }, - { - "author": "OgreLemonSoup", - "title": "Gallery&Tabs", - "id": "LoadImageGallery", - "reference": "https://github.com/OgreLemonSoup/ComfyUI-Load-Image-Gallery", - "files": [ - "https://github.com/OgreLemonSoup/ComfyUI-Load-Image-Gallery" - ], - "install_type": "git-clone", - "description": "Adds a gallery to the Load Image node and tabs for Load Checkpoint/Lora/etc nodes" - }, - { - "author": "OuticNZ", - "title": "ComfyUI-Simple-Of-Complex", - "reference": "https://github.com/OuticNZ/ComfyUI-Simple-Of-Complex", - "files": [ - "https://github.com/OuticNZ/ComfyUI-Simple-Of-Complex" - ], - "install_type": "git-clone", - "description": "Nodes:Text Switch 2 Way, Prompt Tidy, Text With Context." - }, - { - "author": "justUmen", - "title": "Bjornulf_custom_nodes", - "reference": "https://github.com/justUmen/Bjornulf_custom_nodes", - "files": [ - "https://github.com/justUmen/Bjornulf_custom_nodes" - ], - "install_type": "git-clone", - "description": "Nodes: Ollama, Green Screen to Transparency, Save image for Bjornulf LobeChat, Text with random Seed, Random line from input, Combine images (Background+Overlay alpha), Image to grayscale (black & white), Remove image Transparency (alpha), Resize Image, ..." - }, - { - "author": "jstit", - "title": "comfyui_custom_node_image", - "reference": "https://github.com/jstit/comfyui_custom_node_image", - "files": [ - "https://github.com/jstit/comfyui_custom_node_image" - ], - "install_type": "git-clone", - "description": "Nodes:ImageCropCircle." - }, - { - "author": "jstit", - "title": "ComfyUI-HeadshotPro", - "reference": "https://github.com/HeadshotPro/ComfyUI-HeadshotPro", - "files": [ - "https://github.com/HeadshotPro/ComfyUI-HeadshotPro" - ], - "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": "This custom node package for ComfyUI is designed to streamline your workflow with powerful file-counting capabilities." - }, - { - "author": "ChrisColeTech", - "title": "ComfyUI-Elegant-Resource-Monitor", - "reference": "https://github.com/ChrisColeTech/ComfyUI-Elegant-Resource-Monitor", - "files": [ - "https://github.com/ChrisColeTech/ComfyUI-Elegant-Resource-Monitor" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI will add a simple and elegant resource monitor." - }, - { - "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, audio manipulation & reactivity, and temporal masks" - }, - { - "author": "RyanOnTheInside", - "title": "Nodes for use with real-time applications of ComfyUI", - "id": "realtimenodes", - "reference": "https://github.com/ryanontheinside/ComfyUI_RealTimeNodes", - "files": [ - "https://github.com/ryanontheinside/ComfyUI_RealTimeNodes" - ], - "install_type": "git-clone", - "description": "These nodes are for real-time applications of ComfyUI." - }, - { - "author": "RyanOnTheInside", - "title": "ComfyUI-EfficientTAM", - "reference": "https://github.com/ryanontheinside/ComfyUI_EfficientTAM", - "files": [ - "https://github.com/ryanontheinside/ComfyUI_EfficientTAM" - ], - "install_type": "git-clone", - "description": "A ComfyUI implementation of [a/EfficientTAM](https://github.com/yformer/EfficientTAM)" - }, - { - "author": "ryanontheinside", - "title": "Doom", - "reference": "https://github.com/ryanontheinside/ComfyUI_Doom", - "files": [ - "https://github.com/ryanontheinside/ComfyUI_Doom" - ], - "install_type": "git-clone", - "description": "Play Doom in ComfyUI." - }, - { - "author": "ryanontheinside", - "title": "ComfyUI_ProfilerX", - "reference": "https://github.com/ryanontheinside/ComfyUI_ProfilerX", - "files": [ - "https://github.com/ryanontheinside/ComfyUI_ProfilerX" - ], - "install_type": "git-clone", - "description": "Node and workflow profiling. Find bottlenecks in your workflows. See trends over time." - }, - { - "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", - "id": "minimap", - "reference": "https://github.com/OliverCrosby/Comfyui-Minimap", - "files": [ - "https://github.com/OliverCrosby/Comfyui-Minimap" - ], - "install_type": "git-clone", - "description": "A simple minimap in the bottom-right of the window showing the full workflow, left click to navigate" - }, - { - "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": "markuryy", - "title": "ComfyUI Flux Prompt Saver", - "reference": "https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver", - "files": [ - "https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver" - ], - "install_type": "git-clone", - "description": "The Flux Prompt Saver is set of simple nodes for saving images generated with Flux with A1111-style metadata." - }, - { - "author": "eesahe", - "title": "ComfyUI-eesahesNodes", - "reference": "https://github.com/EeroHeikkinen/ComfyUI-eesahesNodes", - "files": [ - "https://github.com/EeroHeikkinen/ComfyUI-eesahesNodes" - ], - "install_type": "git-clone", - "description": "InstantX's Flux union ControlNet loader and implementation" - }, - { - "author": "anhkhoatranle30", - "title": "Handy Node ComfyUI", - "id": "handynode", - "reference": "https://github.com/anhkhoatranle30/Handy-Nodes-ComfyUI", - "files": [ - "https://github.com/anhkhoatranle30/Handy-Nodes-ComfyUI" - ], - "install_type": "git-clone", - "description": "This is a pack with some handy nodes for ComfyUI." - }, - { - "author": "Artiprocher", - "title": "Dashscope FLUX API for ComfyUI", - "id": "dashscope_api", - "reference": "https://github.com/modelscope/comfyscope", - "files": [ - "https://github.com/modelscope/comfyscope" - ], - "install_type": "git-clone", - "description": "The FLUX model API from DashScope, developed by Black Forest Labs, offers superior image generation capabilities with optimized support for Chinese prompts, achieving a commendable tradeoff between performance and the quality of generated images compared to other open-source models." - }, - { - "author": "lucafoscili", - "title": "LF Nodes", - "reference": "https://github.com/lucafoscili/comfyui-lf", - "files": [ - "https://github.com/lucafoscili/comfyui-lf" - ], - "install_type": "git-clone", - "description": "Custom nodes with a touch of extra UX, including: history for primitives, JSON manipulation, logic switches with visual feedback, LLM chat... and more!" - }, - { - "author": "JPrevots", - "title": "ComfyUI-PhyCV", - "reference": "https://github.com/JPrevots/ComfyUI-PhyCV", - "files": [ - "https://github.com/JPrevots/ComfyUI-PhyCV" - ], - "install_type": "git-clone", - "description": "Nodes:PhyCV - Phase-Stretch Transform (PST), PhyCV - VEViD, PhyCV - Page." - }, - { - "author": "rnbwdsh", - "title": "Latent Walk", - "reference": "https://github.com/rnbwdsh/ComfyUI-LatentWalk", - "files": [ - "https://github.com/rnbwdsh/ComfyUI-LatentWalk" - ], - "install_type": "git-clone", - "description": "Latent space walks for latents, conditionals and noise" - }, - { - "author": "kudou-reira", - "title": "ComfyUI_StringToHex", - "reference": "https://github.com/kasukanra/ComfyUI_StringToHex", - "files": [ - "https://github.com/kasukanra/ComfyUI_StringToHex" - ], - "install_type": "git-clone", - "description": "This is a simple ComfyUI node that will take in a string of 'color' (i.e. 'blue') and output a hex color format." - }, - { - "author": "phyblas", - "title": "paint-by-example @ ComfyUI", - "id": "paintbyexample", - "reference": "https://github.com/phyblas/paint-by-example_comfyui", - "files": [ - "https://github.com/phyblas/paint-by-example_comfyui" - ], - "install_type": "git-clone", - "description": "Implementation of paint-by-example on ComfyUI" - }, - { - "author": "aidenli", - "title": "ComfyUI_NYJY", - "id": "NYJY", - "reference": "https://github.com/aidenli/ComfyUI_NYJY", - "files": [ - "https://github.com/aidenli/ComfyUI_NYJY" - ], - "install_type": "git-clone", - "description": "Nodes: Translate, JoyTag, JoyCaption." - }, - { - "author": "Pseudotools", - "title": "Pseudocomfy", - "id": "pseudocomfy", - "reference": "https://github.com/Pseudotools/Pseudocomfy", - "files": [ - "https://github.com/Pseudotools/Pseudocomfy" - ], - "install_type": "git-clone", - "description": "A package designed to enable multi-regional prompting for architectural rendering, integrated with the Rhino Pseudorandom plugin." - }, - { - "author": "TTPlanetPig", - "title": "Comfyui_TTP_Toolset", - "reference": "https://github.com/TTPlanetPig/Comfyui_TTP_Toolset", - "files": [ - "https://github.com/TTPlanetPig/Comfyui_TTP_Toolset" - ], - "install_type": "git-clone", - "description": "This is a workflow for my simple logic amazing upscale node for DIT model. it can be common use for Flux,Hunyuan,SD3 It can simple tile the initial image into pieces and then use image-interrogator to get each tile prompts for more accurate upscale process. The condition will be properly handled and the hallucination will be significantly eliminated." - }, - { - "author": "TTPlanetPig", - "title": "for comfyui image proprocessor", - "reference": "https://github.com/TTPlanetPig/Comfyui_TTP_CN_Preprocessor", - "files": [ - "https://github.com/TTPlanetPig/Comfyui_TTP_CN_Preprocessor" - ], - "install_type": "git-clone", - "description": "Adapt for Hunyuan now\nNOTE: The files in the repo are not organized, which may lead to update issues." - }, - { - "author": "TTPlanetPig", - "title": "Comfyui_JC2", - "reference": "https://github.com/TTPlanetPig/Comfyui_JC2", - "files": [ - "https://github.com/TTPlanetPig/Comfyui_JC2" - ], - "install_type": "git-clone", - "description": "Wrapped Joy Caption alpha 2 node for comfyui from [a/https://huggingface.co/spaces/fancyfeast/joy-caption-alpha-two](https://huggingface.co/spaces/fancyfeast/joy-caption-alpha-two) Easy use, for GPU with less 19G, please use nf4 for better balanced speed and result. This Node also took a reference from /chflame163/ComfyUI_LayerStyle and [a/https://huggingface.co/John6666/joy-caption-alpha-two-cli-mod](https://huggingface.co/John6666/joy-caption-alpha-two-cli-mod)" - }, - { - "author": "TTPlanetPig", - "title": "Comfyui_Hunyuan3D", - "reference": "https://github.com/TTPlanetPig/Comfyui_Hunyuan3D", - "files": [ - "https://github.com/TTPlanetPig/Comfyui_Hunyuan3D" - ], - "install_type": "git-clone", - "description": "NODES:TTP_Hunyuan3DNode, TTP_SquareImage, TTP_GIFViewer" - }, - { - "author": "TTPlanetPig", - "title": "Clothing Migration Kit", - "reference": "https://github.com/TTPlanetPig/Comfyui_Object_Migration", - "files": [ - "https://github.com/TTPlanetPig/Comfyui_Object_Migration" - ], - "install_type": "git-clone", - "description": "This is an experimental project focused on Stable Diffusion (SD) models. In a single generated image, the same object or character consistently maintains a very high level of consistency. I had already attempted to address this issue in the SDXL model." - }, - { - "author": "camenduru", - "title": "ComfyUI-TostAI", - "reference": "https://github.com/camenduru/ComfyUI-TostAI", - "files": [ - "https://github.com/camenduru/ComfyUI-TostAI" - ], - "install_type": "git-clone", - "description": "NODES: SendToTostAI" - }, - { - "author": "xlinx", - "title": "ComfyUI-decadetw-auto-prompt-llm", - "reference": "https://github.com/xlinx/ComfyUI-decadetw-auto-prompt-llm", - "files": [ - "https://github.com/xlinx/ComfyUI-decadetw-auto-prompt-llm" - ], - "install_type": "git-clone", - "description": "Auto prompt by LLM and LLM-Vision. (Trigger more details hiding in model)" - }, - { - "author": "xlinx", - "title": "ComfyUI-decadetw-auto-messaging-realtime", - "reference": "https://github.com/xlinx/ComfyUI-decadetw-auto-messaging-realtime", - "files": [ - "https://github.com/xlinx/ComfyUI-decadetw-auto-messaging-realtime" - ], - "install_type": "git-clone", - "description": "Auto messging sd-image and sd-info to mobile phone IM realtime. (LINE | Telegram | Discord)" - }, - { - "author": "xlinx", - "title": "ComfyUI-decadetw-spout-syphon-im-vj", - "reference": "https://github.com/xlinx/ComfyUI-decadetw-spout-syphon-im-vj", - "files": [ - "https://github.com/xlinx/ComfyUI-decadetw-spout-syphon-im-vj" - ], - "install_type": "git-clone", - "description": "I'm SD-VJ. (share SD-generating-process in realtime by gpu)" - }, - { - "author": "wmpmiles", - "title": "comfyui-some-image-processing-stuff", - "reference": "https://github.com/wmpmiles/comfyui-some-image-processing-stuff", - "files": [ - "https://github.com/wmpmiles/comfyui-some-image-processing-stuff" - ], - "install_type": "git-clone", - "description": "Some ComfyUI nodes that provide some image-processing functionality. Resampling, Color Grading, Inpainting, ..." - }, - { - "author": "nonnonstop", - "title": "comfyui-faster-loading", - "reference": "https://github.com/nonnonstop/comfyui-faster-loading", - "files": [ - "https://github.com/nonnonstop/comfyui-faster-loading" - ], - "install_type": "git-clone", - "description": "This extension applies a patch that limits the model loading speed when using an HDD in a Windows environment. See [a/comfyanonymous/ComfyUI#1992](https://github.com/comfyanonymous/ComfyUI/issues/1992). [w/As this patch is only useful in very limited environments, its installation is not recommended under normal circumstances. Memory usage may increase.]" - }, - { - "author": "Dr.Jusseaux", - "title": "Diffusers-in-ComfyUI", - "reference": "https://github.com/maepopi/Diffusers-in-ComfyUI", - "files": [ - "https://github.com/maepopi/Diffusers-in-ComfyUI" - ], - "install_type": "git-clone", - "description": "A collection of ComfyUI custom nodes that allow to use most Diffusers pipelines and components in Comfy(Txt2Img, Img2Img, Inpainting, LoRAS, B-LoRAS, ControlNet...)" - }, - { - "author": "niknah", - "title": "Quick Connections", - "id": "quick-connections", - "reference": "https://github.com/niknah/quick-connections", - "files": [ - "https://github.com/niknah/quick-connections" - ], - "install_type": "git-clone", - "description": "Quick connections, Circuit board connections" - }, - { - "author": "niknah", - "title": "ComfyUI-F5-TTS", - "reference": "https://github.com/niknah/ComfyUI-F5-TTS", - "files": [ - "https://github.com/niknah/ComfyUI-F5-TTS" - ], - "install_type": "git-clone", - "description": "ComfyUI node for to make text to speech audio using F5-TTS [a/https://github.com/SWivid/F5-TTS](https://github.com/SWivid/F5-TTS)" - }, - { - "author": "niknah", - "title": "ComfyUI Hunyuan-3D-2", - "id": "comfyui-hunyuan-3d-2", - "reference": "https://github.com/niknah/ComfyUI-Hunyuan-3D-2", - "files": [ - "https://github.com/niknah/ComfyUI-Hunyuan-3D-2" - ], - "install_type": "git-clone", - "description": "Image to 3D using Hunyuan-3D-2" - }, - { - "author": "daryltucker", - "title": "ComfyUI-LoadFiles", - "id": "LoadFiles", - "reference": "https://github.com/daryltucker/ComfyUI-LoadFiles", - "files": [ - "https://github.com/daryltucker/ComfyUI-LoadFiles" - ], - "install_type": "git-clone", - "description": "The primary goal of these nodes is to provide a way to access files generated by ComfyUI workflows, local to the machine running ComfyUI. These nodes should always return an updated list of files when triggered." - }, - { - "author": "X-T-E-R", - "title": "ComfyUI Easy Civitai (XTNodes)", - "reference": "https://github.com/X-T-E-R/ComfyUI-EasyCivitai-XTNodes", - "files": [ - "https://github.com/X-T-E-R/ComfyUI-EasyCivitai-XTNodes" - ], - "install_type": "git-clone", - "description": "Load your model with image previews, or directly download and import Civitai models via URL. This custom ComfyUI node supports Checkpoint, LoRA, and LoRA Stack models, offering features like bypass options." - }, - { - "author": "hyejinlee12", - "title": "ComfyUI-Fill-Image-for-Outpainting", - "id": "fill-image-for-outpainting", - "reference": "https://github.com/Lhyejin/ComfyUI-Fill-Image-for-Outpainting", - "files": [ - "https://github.com/Lhyejin/ComfyUI-Fill-Image-for-Outpainting" - ], - "install_type": "git-clone", - "description": "This node is to fill image for outpainting(inpainting)\nFill image using cv2 methods(cv2_ns, cv2_telea and edge_pad)" - }, - { - "author": "yhayano-ponotech", - "title": "ComfyUI-Fal-API-Flux", - "reference": "https://github.com/yhayano-ponotech/ComfyUI-Fal-API-Flux", - "files": [ - "https://github.com/yhayano-ponotech/ComfyUI-Fal-API-Flux" - ], - "install_type": "git-clone", - "description": "This repository contains custom nodes for ComfyUI that integrate the fal.ai FLUX.1 [dev] with LoRA API, specifically for text-to-image generation. These nodes allow you to use the FLUX.1 model directly within your ComfyUI workflows." - }, - { - "author": "yhayano-ponotech", - "title": "ComfyUI Local Save Node", - "reference": "https://github.com/yhayano-ponotech/comfyui-save-image-local", - "files": [ - "https://github.com/yhayano-ponotech/comfyui-save-image-local" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node for directly downloading generated images to your local PC with customizable filenames and formats (PNG/JPEG)." - }, - { - "author": "Rvage0815", - "title": "ComfyUI-RvTools", - "reference": "https://github.com/Rvage0815/ComfyUI-RvTools", - "files": [ - "https://github.com/Rvage0815/ComfyUI-RvTools" - ], - "install_type": "git-clone", - "description": "this node contains a lot of small little helpers like switches, passers and selectors that i use a lot to build my workflows." - }, - { - "author": "Rvage0815", - "title": "RvTComfyUI-RvTools_v2", - "reference": "https://github.com/Rvage0815/ComfyUI-RvTools_v2", - "files": [ - "https://github.com/Rvage0815/ComfyUI-RvTools_v2" - ], - "install_type": "git-clone", - "description": "this node contains a lot of small little helpers like switches, passers and selectors that i use a lot to build my workflows." - }, - { - "author": "erosDiffusion", - "title": "Compositor Node", - "reference": "https://github.com/erosDiffusion/ComfyUI-enricos-nodes", - "files": [ - "https://github.com/erosDiffusion/ComfyUI-enricos-nodes" - ], - "install_type": "git-clone", - "description": "pass up to 8 images and visually place, rotate and scale them to build the perfect composition. group move and group rescale. remember their position and scaling value across generations to easy swap images. use the buffer zone to to park an asset you don't want to use or easily reach transformations controls" - }, - { - "author": "Steudio", - "title": "ComfyUI Steudio", - "id": "Steudio", - "reference": "https://github.com/Steudio/ComfyUI_Steudio", - "files": [ - "https://github.com/Steudio/ComfyUI_Steudio" - ], - "install_type": "git-clone", - "description": "Divide and Conquer Node Suite: It calculates the optimal upscale resolution and seamlessly divides the image into tiles, ready for individual processing using your preferred workflow. After processing, the tiles are seamlessly merged into a larger image, offering sharper and more detailed visuals." - }, - { - "author": "Assistant", - "title": "ComfyUI-PromptList", - "reference": "https://github.com/NakamuraShippo/ComfyUI-PromptList", - "files": [ - "https://github.com/NakamuraShippo/ComfyUI-PromptList" - ], - "install_type": "git-clone", - "description": "Custom node to manage prompts in YAML format." - }, - { - "author": "Assistant", - "title": "ComfyUI-NS-ManySliders", - "reference": "https://github.com/NakamuraShippo/ComfyUI-NS-ManySliders", - "files": [ - "https://github.com/NakamuraShippo/ComfyUI-NS-ManySliders" - ], - "install_type": "git-clone", - "description": "ComfyUI-NS-ManySliders is a custom node developed for ComfyUI that allows you to manipulate values using multiple sliders. With this node, you can easily adjust numerous numerical parameters intuitively, making it useful for various purposes." - }, - { - "author": "nux1111", - "title": "ComfyUI_NetDist_Plus", - "reference": "https://github.com/nux1111/ComfyUI_NetDist_Plus", - "files": [ - "https://github.com/nux1111/ComfyUI_NetDist_Plus" - ], - "install_type": "git-clone", - "description": "Run ComfyUI workflows on multiple local GPUs/networked machines with options to edit the json values within comfyui.\nOriginal repo: [a/city96/ComfyUI_NetDist](https://github.com/city96/ComfyUI_NetDist)" - }, - { - "author": "mittimi", - "title": "ComfyUI_mittimiLoadPreset2", - "id": "comfyui_mittimi_load_preset2", - "reference": "https://github.com/mittimi/ComfyUI_mittimiLoadPreset2", - "files": [ - "https://github.com/mittimi/ComfyUI_mittimiLoadPreset2" - ], - "install_type": "git-clone", - "description": "This node can easily switch between models and prompts by saving presets." - }, - { - "author": "mittimi", - "title": "ComfyUI_mittimiRecalculateSize", - "id": "comfyui_mittimi_recalculate_size", - "reference": "https://github.com/mittimi/ComfyUI_mittimiRecalculateSize", - "files": [ - "https://github.com/mittimi/ComfyUI_mittimiRecalculateSize" - ], - "install_type": "git-clone", - "description": "This is the node that performs the magnification calculation." - }, - { - "author": "mittimi", - "title": "ComfyUI_mittimiWidthHeight", - "id": "comfyui_mittimi_width_height", - "reference": "https://github.com/mittimi/ComfyUI_mittimiWidthHeight", - "files": [ - "https://github.com/mittimi/ComfyUI_mittimiWidthHeight" - ], - "install_type": "git-clone", - "description": "This node can easily switch between vertical and horizontal values with a single button." - }, - { - "author": "RodrigoSKohl", - "title": "Panoramic Image Stitcher", - "reference": "https://github.com/RodrigoSKohl/ComfyUI-Panoramic-ImgStitcher", - "files": [ - "https://github.com/RodrigoSKohl/ComfyUI-Panoramic-ImgStitcher" - ], - "install_type": "git-clone", - "description": "Simple Node to make panoramic images" - }, - { - "author": "nicehero", - "title": "comfyui-SegGPT", - "reference": "https://github.com/nicehero/comfyui-SegGPT", - "files": [ - "https://github.com/nicehero/comfyui-SegGPT" - ], - "install_type": "git-clone", - "description": "SegGPT model for comfyui,segmentation everything with mask prompt. Download (https://huggingface.co/BAAI/SegGPT/blob/main/seggpt_vit_large.pth) in this node path." - }, - { - "author": "sakura1bgx", - "title": "ComfyUI_FlipStreamViewer", - "reference": "https://github.com/sakura1bgx/ComfyUI_FlipStreamViewer", - "files": [ - "https://github.com/sakura1bgx/ComfyUI_FlipStreamViewer" - ], - "install_type": "git-clone", - "description": "ComfyUI_FlipStreamViewer is a tool that provides a viewer interface for flipping images with frame interpolation, allowing you to watch high-fidelity pseudo-videos without needing AnimateDiff." - }, - { - "author": "ducido", - "title": "ObjectFusion_ComfyUI_nodes", - "id": "objectfusion-nodes", - "reference": "https://github.com/ducido/ObjectFusion_ComfyUI_nodes", - "files": [ - "https://github.com/ducido/ObjectFusion_ComfyUI_nodes" - ], - "install_type": "git-clone", - "description": "This is a node to generate new image that combine 2 objects from different scene." - }, - { - "author": "DanielHabib", - "title": "ComfyUI-Voxels", - "reference": "https://github.com/DanielHabib/ComfyUI-Voxels", - "files": [ - "https://github.com/DanielHabib/ComfyUI-Voxels" - ], - "install_type": "git-clone", - "description": "NODES:Mesh To Voxel, Voxel Block Saver, Voxel Viewer, Voxel Block Loader, Voxel Video Viewer, Voxel Blocks Into Voxel Video, Voxel Video Preview, Voxelize Mesh, ..." - }, - { - "author": "jsonL", - "title": "ComfyUI-tagger", - "id": "comfyui-tagger", - "reference": "https://github.com/StarMagicAI/comfyui_tagger", - "files": [ - "https://github.com/StarMagicAI/comfyui_tagger" - ], - "install_type": "git-clone", - "description": "Nodes to use Florence2 VLM for image vision tasks: object detection, captioning, segmentation and ocr" - }, - { - "author": "boredofnames", - "title": "ComfyUI-ntfy", - "reference": "https://github.com/boredofnames/ComfyUI-ntfy", - "files": [ - "https://github.com/boredofnames/ComfyUI-ntfy" - ], - "install_type": "git-clone", - "description": "NODES:Save Image and ntfy" - }, - { - "author": "Xclbr7", - "title": "ComfyUI-Merlin: Magic Photo Prompter", - "reference": "https://github.com/Xclbr7/ComfyUI-Merlin", - "files": [ - "https://github.com/Xclbr7/ComfyUI-Merlin" - ], - "install_type": "git-clone", - "description": "ComfyUI-Merlin is a custom node extension for ComfyUI, introducing the Magic Photo Prompter. This powerful tool enhances your prompt engineering process by allowing users to easily construct detailed, high-quality prompts for photo-realistic image generation." - }, - { - "author": "microbote", - "title": "StyledCLIPTextEncode", - "reference": "https://github.com/microbote/ComfyUI-StyledCLIPTextEncode", - "files": [ - "https://github.com/microbote/ComfyUI-StyledCLIPTextEncode" - ], - "install_type": "git-clone", - "description": "StyledCLIPTextEncode is a node that enables you to build your prompts(both postive and negative) based on the selected style. It provides up-to 77 styles currently and has been tested on SDXL and SD1.5 checkpoints. It's ported from project [a/Style Selector for SDXL 1.0](https://github.com/ahgsql/StyleSelectorXL), which is only availabe on WebUI." - }, - { - "author": "Isi-dev", - "title": "ComfyUI-Img2DrawingAssistants", - "id": "Img2DrawingAssistants", - "reference": "https://github.com/Isi-dev/ComfyUI-Img2DrawingAssistants", - "files": [ - "https://github.com/Isi-dev/ComfyUI-Img2DrawingAssistants" - ], - "install_type": "git-clone", - "description": "These are ComfyUI nodes to assist in converting an image to sketches or lineArts." - }, - { - "author": "tianguangliu", - "title": "comfyui-utools", - "id": "utools", - "reference": "https://github.com/tianguanggliu/Utools", - "files": [ - "https://github.com/tianguanggliu/Utools" - ], - "install_type": "git-clone", - "description": "Efficiency tools, Personalized style, Other Nodes, ..." - }, - { - "author": "celoron", - "title": "ComfyUI-VisualQueryTemplate", - "reference": "https://github.com/celoron/ComfyUI-VisualQueryTemplate", - "files": [ - "https://github.com/celoron/ComfyUI-VisualQueryTemplate" - ], - "install_type": "git-clone", - "description": "A ComfyUI node for transforming images into descriptive text using templated visual question answering. Leverages Hugging Face's VQA models with transformers" - }, - { - "author": "Alex Genovese", - "title": "Huggingface Api Serverless", - "reference": "https://github.com/alexgenovese/ComfyUI_HF_Servelress_Inference", - "files": [ - "https://github.com/alexgenovese/ComfyUI_HF_Servelress_Inference" - ], - "install_type": "git-clone", - "description": "Huggingface Api Serverless request" - }, - { - "author": "freelifehacker", - "title": "ComfyUI-ImgMask2PNG", - "reference": "https://github.com/freelifehacker/ComfyUI-ImgMask2PNG", - "files": [ - "https://github.com/freelifehacker/ComfyUI-ImgMask2PNG" - ], - "install_type": "git-clone", - "description": "NODES:ImageMask2PNG" - }, - { - "author": "souki202", - "title": "ComfyUI-LoadImage-Advanced", - "reference": "https://github.com/souki202/ComfyUI-LoadImage-Advanced", - "files": [ - "https://github.com/souki202/ComfyUI-LoadImage-Advanced" - ], - "install_type": "git-clone", - "description": "This is a node that simply integrates LoadImage, Vae Encode, Upscale, Resolution factor correction, and Color Adjustment." - }, - { - "author": "drmbt", - "title": "comfyui-dreambait-nodes", - "id": "drmbt", - "reference": "https://github.com/drmbt/comfyui-dreambait-nodes", - "files": [ - "https://github.com/drmbt/comfyui-dreambait-nodes" - ], - "install_type": "git-clone", - "description": "A collection of forks, QoL nodes and utilities for ComfyUI" - }, - { - "author": "InstaSD", - "title": "InstaSD nodes for ComfyUI", - "reference": "https://github.com/WaddingtonHoldings/ComfyUI-InstaSD", - "files": [ - "https://github.com/WaddingtonHoldings/ComfyUI-InstaSD" - ], - "install_type": "git-clone", - "description": "A collection of nodes for use with InstaSD. These nodes will be transformed into app inputs when you deploy your ComfyUI workflow on InstaSD." - }, - { - "author": "Shiba-2-shiba", - "title": "ComfyUI-color-ascii-art-node", - "id": "comfyui-color-ascii-art-node", - "reference": "https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node", - "files": [ - "https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node" - ], - "install_type": "git-clone", - "description": "This is a custom node to convert png images into color ASCII art. As noted below, multiple font sizes are used in the specification. The resolution of the generated file is set to be the same as the input image." - }, - { - "author": "Shiba-2-shiba", - "title": "ComfyUI_DiffusionModel_fp8_converter", - "id": "fp8-converter", - "reference": "https://github.com/Shiba-2-shiba/ComfyUI_DiffusionModel_fp8_converter", - "files": [ - "https://github.com/Shiba-2-shiba/ComfyUI_DiffusionModel_fp8_converter" - ], - "install_type": "git-clone", - "description": "This is a custom node to convert only the Diffusion model part or CLIP model part to fp8 in ComfyUI.\nVAE fp8 conversion is not supported.\nThe advantage of this node is that you do not need to separate unet/clip/vae in advance when converting to fp8, but can use the safetenros files that ComfyUI provides." - }, - { - "author": "Bao Pham", - "title": "ComfyUI-LyraVSIH", - "id": "lyra-vsih", - "reference": "https://github.com/pbpbpb2705/ComfyUI-LyraVSIH", - "files": [ - "https://github.com/pbpbpb2705/ComfyUI-LyraVSIH" - ], - "install_type": "git-clone", - "description": "This extension provides a set of nodes that can be used to mask multiple object at once" - }, - { - "author": "AbyssBadger0", - "title": "Kolors Awesome Prompts", - "reference": "https://github.com/AbyssBadger0/ComfyUI_Kolors_awesome_prompts", - "files": [ - "https://github.com/AbyssBadger0/ComfyUI_Kolors_awesome_prompts" - ], - "install_type": "git-clone", - "description": "Nodes:KolorsAwesomePrompts" - }, - { - "author": "IuvenisSapiens", - "title": "ComfyUI_Qwen2-VL-Instruct", - "id": "qwen2-vl-instruct", - "reference": "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-VL-Instruct", - "files": [ - "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-VL-Instruct" - ], - "install_type": "git-clone", - "description": "This is an implementation of [a/Qwen2-VL-Instruct](https://github.com/QwenLM/Qwen2-VL) by [a/ComfyUI](https://github.com/comfyanonymous/ComfyUI), which includes, but is not limited to, support for text-based queries, video queries, single-image queries, and multi-image queries to generate captions or responses." - }, - { - "author": "Hmily", - "title": "ComfyUI-Light-Tool", - "id": "comfyui-light-tool", - "reference": "https://github.com/ihmily/ComfyUI-Light-Tool", - "files": [ - "https://github.com/ihmily/ComfyUI-Light-Tool" - ], - "install_type": "git-clone", - "description": "An awesome light image processing tool nodes for ComfyUI." - }, - { - "author": "k-komarov", - "title": "comfyui-bunny-cdn-storage", - "reference": "https://github.com/k-komarov/comfyui-bunny-cdn-storage", - "files": [ - "https://github.com/k-komarov/comfyui-bunny-cdn-storage" - ], - "install_type": "git-clone", - "description": "Save Your Image to BunnyStorage" - }, - { - "author": "PabloGFX", - "title": "Head-Orientation-Node - by PabloGFX", - "id": "head-orientation-node", - "reference": "https://github.com/lazniak/Head-Orientation-Node-for-ComfyUI---by-PabloGFX", - "files": [ - "https://github.com/lazniak/Head-Orientation-Node-for-ComfyUI---by-PabloGFX" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that analyzes and sorts images based on head orientation using MediaPipe. It detects facial landmarks, calculates head pose, and intelligently sorts images for enhanced AI image processing workflows." - }, - { - "author": "PabloGFX", - "title": "Google Photos Loader - by PabloGFX", - "id": "google-photos-loader", - "reference": "https://github.com/lazniak/comfyui-google-photos-loader", - "files": [ - "https://github.com/lazniak/comfyui-google-photos-loader" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node that integrates Google Photos into your workflows. List albums, load images from specific albums, and search photos directly within ComfyUI. Features customizable image loading options, sorting, and efficient caching for seamless integration of your Google Photos library into AI image processing pipelines." - }, - { - "author": "PabloGFX", - "title": "LiquidTime - by PabloGFX", - "id": "liquid-time-interpolation", - "reference": "https://github.com/lazniak/LiquidTime-Interpolation", - "files": [ - "https://github.com/lazniak/LiquidTime-Interpolation" - ], - "install_type": "git-clone", - "description": "LiquidTime is a simple yet powerful frame interpolation node for ComfyUI. Just input your sequence and desired frame count - the node handles all complex calculations and generates smooth in-between frames for you. A must-have tool for AI animation and video creation that lets you shape time like liquid." - }, - { - "author": "45uee", - "title": "ComfyUI-Color_Transfer", - "reference": "https://github.com/45uee/ComfyUI-Color_Transfer", - "files": [ - "https://github.com/45uee/ComfyUI-Color_Transfer" - ], - "install_type": "git-clone", - "description": "Postprocessing nodes that implement color palette transfer for images." - }, - { - "author": "Phando", - "title": "ComfyUI-PhandoNodes", - "reference": "https://github.com/Phando/ComfyUI-PhandoNodes", - "files": [ - "https://github.com/Phando/ComfyUI-PhandoNodes" - ], - "install_type": "git-clone", - "description": "A collection of nodes to help streamline your ComfyUI workflows" - }, - { - "author": "geocine", - "title": "geocine-comfyui", - "reference": "https://github.com/geocine/geocine-comfyui", - "files": [ - "https://github.com/geocine/geocine-comfyui" - ], - "install_type": "git-clone", - "description": "NODES:Image Selector (geocine), Image Scale (geocine)" - }, - { - "author": "SeanScripts", - "title": "ComfyUI-Unload-Model", - "reference": "https://github.com/SeanScripts/ComfyUI-Unload-Model", - "files": [ - "https://github.com/SeanScripts/ComfyUI-Unload-Model" - ], - "install_type": "git-clone", - "description": "For unloading a model or all models, using the memory management that is already present in ComfyUI. Copied from [a/https://github.com/willblaschko/ComfyUI-Unload-Models](https://github.com/willblaschko/ComfyUI-Unload-Models) but without the unnecessary extra stuff." - }, - { - "author": "SeanScripts", - "title": "ComfyUI-PixtralLlamaMolmoVision", - "reference": "https://github.com/SeanScripts/ComfyUI-PixtralLlamaMolmoVision", - "files": [ - "https://github.com/SeanScripts/ComfyUI-PixtralLlamaMolmoVision" - ], - "install_type": "git-clone", - "description": "For loading and running Pixtral, Llama 3.2 Vision, and Molmo models. Put models in the models/LLM folder.\n[w/Renamed from ComfyUI-PixtralLlamaVision. Please reinstall.]" - }, - { - "author": "ExterminanzHS", - "title": "Gecco Discord Autosend", - "reference": "https://github.com/ExterminanzHS/Gecco-Discord-Autosend", - "files": [ - "https://github.com/ExterminanzHS/Gecco-Discord-Autosend" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI to automatically send generated images to Discord channels." - }, - { - "author": "Hugo", - "title": "ComfyUI-BiRefNet-Hugo", - "id": "BiRefNet", - "reference": "https://github.com/MoonHugo/ComfyUI-BiRefNet-Hugo", - "files": [ - "https://github.com/MoonHugo/ComfyUI-BiRefNet-Hugo" - ], - "install_type": "git-clone", - "description": "This repository wraps the latest BiRefNet model as ComfyUI nodes. Compared to the previous model, the latest model offers higher and better matting accuracy." - }, - { - "author": "MoonHugo", - "title": "ComfyUI-FFmpeg", - "id": "FFmpeg", - "reference": "https://github.com/MoonHugo/ComfyUI-FFmpeg", - "files": [ - "https://github.com/MoonHugo/ComfyUI-FFmpeg" - ], - "install_type": "git-clone", - "description": "Encapsulate the commonly used functions of FFmpeg into ComfyUI nodes, making it convenient for users to perform various video processing tasks within ComfyUI." - }, - { - "author": "MoonHugo", - "title": "ComfyUI-StableAudioOpen", - "id": "stable-audio-open", - "reference": "https://github.com/MoonHugo/ComfyUI-StableAudioOpen", - "files": [ - "https://github.com/MoonHugo/ComfyUI-StableAudioOpen" - ], - "install_type": "git-clone", - "description": "The implementation of the audio generation model stable-audio-open in ComfyUI enables ComfyUI to achieve text-to-audio functionality." - }, - { - "author": "GrenKain", - "title": "PixelArt Processing Nodes", - "id": "gk_pixelart", - "reference": "https://github.com/GrenKain/PixelArt-Processing-Nodes-for-ComfyUI", - "files": [ - "https://github.com/GrenKain/PixelArt-Processing-Nodes-for-ComfyUI" - ], - "install_type": "git-clone", - "description": "This repository provides custom nodes for ComfyUI that enable pixel art style image processing, including downscaling, upscaling, color quantization, and resolution adjustments." - }, - { - "author": "Trgtuan10", - "title": "ComfyUI_YoloSegment_Mask", - "reference": "https://github.com/Trgtuan10/ComfyUI_YoloSegment_Mask", - "files": [ - "https://github.com/Trgtuan10/ComfyUI_YoloSegment_Mask" - ], - "install_type": "git-clone", - "description": "NODES:Object Mask.\nNOTE:push [a/yolov8x-seg.pt](https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8x-seg.pt) in models/yolo" - }, - { - "author": "Tenney95", - "title": "ComfyUI-NodeAligner", - "reference": "https://github.com/Tenney95/ComfyUI-NodeAligner", - "files": [ - "https://github.com/Tenney95/ComfyUI-NodeAligner" - ], - "install_type": "git-clone", - "description": "ComfyUI-NodeAligner is a lightweight ComfyUI layout plugin that includes features such as node alignment, distribution, and resizing. This plugin is designed to simplify layout adjustments in visual node editors or custom UI components, making node arrangement more convenient and efficient." - }, - { - "author": "VykosX", - "title": "ControlFlowUtils", - "reference": "https://github.com/VykosX/ControlFlowUtils", - "files": [ - "https://github.com/VykosX/ControlFlowUtils" - ], - "install_type": "git-clone", - "description": "Custom nodes to improve flow control and logic + several utilities to enhance capabilities" - }, - { - "author": "tachyon-beep", - "title": "ComfyUI Simple Feed", - "id": "simplefeed", - "reference": "https://github.com/tachyon-beep/comfyui-simplefeed", - "files": [ - "https://github.com/tachyon-beep/comfyui-simplefeed" - ], - "install_type": "git-clone", - "description": "A lightweight image tray forked from Comfy-UI-CustomScripts with simple sorting, positioning and filtering options." - }, - { - "author": "alexisrolland", - "title": "ComfyUI-Phi", - "reference": "https://github.com/alexisrolland/ComfyUI-Phi", - "files": [ - "https://github.com/alexisrolland/ComfyUI-Phi" - ], - "install_type": "git-clone", - "description": "Custom nodes to run microsoft/Phi models." - }, - { - "author": "LatentRat", - "title": "comfy_remote_run", - "reference": "https://github.com/LatentRat/comfy_remote_run", - "files": [ - "https://github.com/LatentRat/comfy_remote_run" - ], - "install_type": "git-clone", - "description": "Nodes to run nodes on remote ComfyUI instances." - }, - { - "author": "kinglord", - "title": "Prompt Gallery", - "id": "promptGallery", - "reference": "https://github.com/Kinglord/ComfyUI_Prompt_Gallery", - "files": [ - "https://github.com/Kinglord/ComfyUI_Prompt_Gallery" - ], - "install_type": "git-clone", - "description": "New UI on the sidebar that allows for quick and easy navigation of images to help build styles, characters, backgrounds, etc. or even entire random prompts." - }, - { - "author": "kinglord", - "title": "ComfyUI_LoRA_Sidebar", - "reference": "https://github.com/Kinglord/ComfyUI_LoRA_Sidebar", - "files": [ - "https://github.com/Kinglord/ComfyUI_LoRA_Sidebar" - ], - "install_type": "git-clone", - "description": "A custom front-end UX node that creates a visual library of all your LoRAs. It's designed to be fast, slim, and make using LoRAs in Comfy a lot more fun for visual users - especially if you have lots of LoRAs. Should make people used to A1111 and other UI heavy platforms feel more at home. If you've got lots of LoRAs, this sidebar could be your new best friend!" - }, - { - "author": "alexcong", - "title": "Qwen2-VL wrapper for ComfyUI", - "id": "comfyui-qwen2-vl", - "reference": "https://github.com/alexcong/ComfyUI_QwenVL", - "files": [ - "https://github.com/alexcong/ComfyUI_QwenVL" - ], - "install_type": "git-clone", - "description": "ComfyUI Qwen2-VL wrapper that supports text-based and single-image queries." - }, - { - "author": "Bin-sam", - "title": "DynamicPose-ComfyUI", - "reference": "https://github.com/Bin-sam/DynamicPose-ComfyUI", - "files": [ - "https://github.com/Bin-sam/DynamicPose-ComfyUI" - ], - "install_type": "git-clone", - "description": "NODES:pose_extraction, Load_reference_unet, Load_denoising_unet, Load_Pose_Guider, Pose_Guider_Encode, DynamicPose_Sampler, load_pose_model, align" - }, - { - "author": "Metal3d", - "title": "Human Parts Detector", - "id": "human-parts-detector", - "reference": "https://github.com/metal3d/ComfyUI_Human_Parts", - "files": [ - "https://github.com/metal3d/ComfyUI_Human_Parts" - ], - "install_type": "git-clone", - "description": "Detect human parts using the DeepLabV3+ ResNet50 model from Keras-io. You can extract hair, arms, legs, and other parts with ease and with small memory usage." - }, - { - "author": "Fuwuffy", - "title": "ComfyUI-VisualArea-Nodes", - "id": "comfyui-visualarea-nodes", - "reference": "https://github.com/Fuwuffyi/ComfyUI-VisualArea-Nodes", - "files": [ - "https://github.com/Fuwuffyi/ComfyUI-VisualArea-Nodes" - ], - "install_type": "git-clone", - "description": "This is a collection of nodes created to aid when managing area conditionings." - }, - { - "author": "Cyber-BCat", - "title": "ComfyUI_Auto_Caption", - "reference": "https://github.com/Cyber-BCat/ComfyUI_Auto_Caption", - "files": [ - "https://github.com/Cyber-BCat/ComfyUI_Auto_Caption" - ], - "install_type": "git-clone", - "description": "This report contains a 'load many images' node which is going to load the image set by the number of file names from smallest to largest, and the images will no longer be loaded in the wrong order! Setting index=0 makes it load from the first small value (image flie name) image, and index=2 will load them from the second image. Another node 'load images & resize' can resize the image by the first loaded image." - }, - { - "author": "cr7Por", - "title": "ComfyUI_DepthFlow", - "reference": "https://github.com/cr7Por/ComfyUI_DepthFlow", - "files": [ - "https://github.com/cr7Por/ComfyUI_DepthFlow" - ], - "install_type": "git-clone", - "description": "comfyui custom node for depthflow\noriginal depthflow website: [a/https://github.com/BrokenSource/DepthFlow](https://github.com/BrokenSource/DepthFlow)\ncheck this for installation: [a/https://brokensrc.dev/get/](https://brokensrc.dev/get/)" - }, - { - "author": "aimerib", - "title": "ComfyUI-HigherBitDepthSaveImage", - "reference": "https://github.com/aimerib/ComfyUI_HigherBitDepthSaveImage", - "files": [ - "https://github.com/aimerib/ComfyUI_HigherBitDepthSaveImage" - ], - "install_type": "git-clone", - "description": "A comfyui node that provides save image with higher bit depth." - }, - { - "author": "nchenevey1", - "title": "comfyui-gimp-nodes", - "reference": "https://github.com/nchenevey1/comfyui-gimp-nodes", - "files": [ - "https://github.com/nchenevey1/comfyui-gimp-nodes" - ], - "install_type": "git-clone", - "description": "Provides nodes geared towards using GIMP as a frontend for ComfyUI." - }, - { - "author": "MetaGLM", - "title": "ComfyUI ZhipuAI Platform", - "id": "zhipuai-platform", - "reference": "https://github.com/MetaGLM/ComfyUI-ZhipuAI-Platform", - "files": [ - "https://github.com/MetaGLM/ComfyUI-ZhipuAI-Platform" - ], - "pip": ["zhipuai-platform-video"], - "install_type": "git-clone", - "description": "This platform extension provides ZhipuAI nodes, enabling you to configure a workflow for online video generation." - }, - { - "author": "zhiselfly", - "title": "ComfyUI-Alimama-ControlNet-compatible", - "reference": "https://github.com/zhiselfly/ComfyUI-Alimama-ControlNet-compatible", - "files": [ - "https://github.com/zhiselfly/ComfyUI-Alimama-ControlNet-compatible" - ], - "install_type": "git-clone", - "description": "Compatible with alimama's SD3-ControlNet Demo on ComfyUI." - }, - { - "author": "pydn", - "title": "ComfyUI to Python Extension", - "id": "comfyui-to-python-extension", - "reference": "https://github.com/pydn/ComfyUI-to-Python-Extension", - "files": [ - "https://github.com/pydn/ComfyUI-to-Python-Extension" - ], - "install_type": "git-clone", - "description": "This custom node allows you to generate pure python code from your ComfyUI workflow with the click of a button. Great for rapid experimentation or production deployment." - }, - { - "author": "Dayuppy", - "title": "Discord Webhook", - "id": "DiscordWebhook", - "reference": "https://github.com/Dayuppy/ComfyUI-DiscordWebhook", - "files": [ - "https://github.com/Dayuppy/ComfyUI-DiscordWebhook" - ], - "install_type": "git-clone", - "description": "A very simple Discord webhook integration node for ComfyUI that lets you post images and text." - }, - { - "author": "NyaamZ", - "title": "Efficiency Nodes ExtendeD", - "id": "efficiency-ed", - "reference": "https://github.com/NyaamZ/efficiency-nodes-ED", - "files": [ - "https://github.com/NyaamZ/efficiency-nodes-ED" - ], - "install_type": "git-clone", - "description": "Expansion of Efficiency Nodes for ComfyUI. Significant UX improvements.[w/NOTE: This node requires [a/Efficiency Nodes for ComfyUI Version 2.0+](https://github.com/jags111/efficiency-nodes-comfyui) and [a/ComfyUI-Custom-Scripts](https://github.com/pythongosssss/ComfyUI-Custom-Scripts). Also, this node makes changes to user.css.]" - }, - { - "author": "NyaamZ", - "title": "ComfyUI ImageGallery ExtendeD", - "id": "image-gallery-ed", - "reference": "https://github.com/NyaamZ/ComfyUI-ImageGallery-ED", - "files": [ - "https://github.com/NyaamZ/ComfyUI-ImageGallery-ED" - ], - "install_type": "git-clone", - "description": "Custom javascript extensions for better UX for ComfyUI. Double click on image to open. It's convenient for checking images." - }, - { - "author": "NyaamZ", - "title": "Get Booru Tag ExtendeD", - "reference": "https://github.com/NyaamZ/ComfyUI-GetBooruTag-ED", - "files": [ - "https://github.com/NyaamZ/ComfyUI-GetBooruTag-ED" - ], - "description": "Get tag from Booru site.", - "install_type": "git-clone" - }, - { - "author": "chrissy0", - "title": "chris-comfyui-nodes", - "reference": "https://github.com/chrissy0/chris-comfyui-nodes", - "files": [ - "https://github.com/chrissy0/chris-comfyui-nodes" - ], - "install_type": "git-clone", - "description": "This repository contains a custom node for ComfyUI that pads an image to be square, filling the new pixels black." - }, - { - "author": "revirevy", - "title": "Comfyui_saveimage_imgbb", - "id": "Comfyui_saveimage_imgbb", - "reference": "https://github.com/revirevy/Comfyui_saveimage_imgbb", - "files": [ - "https://github.com/revirevy/Comfyui_saveimage_imgbb" - ], - "install_type": "git-clone", - "description": "This custom node allow you to upload result images to imgbb." - }, - { - "author": "Kinglord", - "title": "ComfyUI_Slider_Sidebar", - "reference": "https://github.com/Kinglord/ComfyUI_Slider_Sidebar", - "files": [ - "https://github.com/Kinglord/ComfyUI_Slider_Sidebar" - ], - "install_type": "git-clone", - "description": "A custom node that adds a UI element to the sidebar allowing easy access, navigation, and use of a massive collection (100+) of LECO (Slider) LoRAs. LECOs are an amazing tool to generate variance in your output with a minimal impact to consistency, i.e. deviating form your prompt. They can also allow you access to control parts of your image without taking up CLIP space, saving your token weights for more valuable keywords. If you haven't used them, there's never been a better time to try!" - }, - { - "author": "Isi-dev", - "title": "Image to Painting and Inspyrenet Assistant Nodes", - "id": "ComfyUI-Img2PaintingAssistant", - "reference": "https://github.com/Isi-dev/ComfyUI-Img2PaintingAssistant", - "files": [ - "https://github.com/Isi-dev/ComfyUI-Img2PaintingAssistant" - ], - "install_type": "git-clone", - "description": "These are ComfyUI nodes to assist in converting images to paintings and to assist the Inspyrenet Rembg node to totally remove, or replace with a color, the original background from images so that the background does not reappear in videos or in nodes that do not retain the alpha channel in rgba images." - }, - { - "author": "311-code", - "title": "ComfyUI MagicClip_Strength for SDXL", - "reference": "https://github.com/311-code/ComfyUI-MagicClip_Strength", - "files": [ - "https://github.com/311-code/ComfyUI-MagicClip_Strength" - ], - "install_type": "git-clone", - "description": "This project allows you to adjust SDXL's two text encoder's strengths individually for clip_g (ViT-bigG) and clip_l (CLIP-ViT-L) within ComfyUI. (And other adjustments)" - }, - { - "author": "godmt", - "title": "ComfyUI-List-Utils", - "reference": "https://github.com/godmt/ComfyUI-List-Utils", - "files": [ - "https://github.com/godmt/ComfyUI-List-Utils" - ], - "install_type": "git-clone", - "description": "LIST and BATCH utilities which support: create, convert, get or slice items" - }, - { - "author": "pedrogengo", - "title": "ComfyUI-LumaAI-API", - "id": "lumaai-api", - "reference": "https://github.com/lumalabs/ComfyUI-LumaAI-API", - "files": [ - "https://github.com/lumalabs/ComfyUI-LumaAI-API" - ], - "install_type": "git-clone", - "description": "Luma Dream Machine API official ComfyUI custom node." - }, - { - "author": "mingsky", - "title": "ComfyUI-MingNodes", - "id": "ComfyUI_MingNodes_Mingsky", - "reference": "https://github.com/mingsky-ai/ComfyUI-MingNodes", - "files": [ - "https://github.com/mingsky-ai/ComfyUI-MingNodes" - ], - "install_type": "git-clone", - "description": "Nodes: ConvertGrayChannelNode, AdjustBrightnessContrastSaturationNode, BaiduTranslateNode." - }, - { - "author": "blob8", - "title": "ComfyUI_sloppy-comic", - "reference": "https://github.com/blob8/ComfyUI_sloppy-comic", - "files": [ - "https://github.com/blob8/ComfyUI_sloppy-comic" - ], - "install_type": "git-clone", - "description": "Using IPAdapter for style consistency, the node accepts a story structured as text {prompt} text {prompt} etc. and generates a comic, saving it to /output. It also adds LLM API Request node, providing an openai compatible LLM API for generating the stories." - }, - { - "author": "banqingyuan", - "title": "ComfyUI-text-replace", - "reference": "https://github.com/banqingyuan/ComfyUI-text-replace", - "files": [ - "https://github.com/banqingyuan/ComfyUI-text-replace" - ], - "install_type": "git-clone", - "description": "NODES: OCR Location Node, Image Erase Node, Chat Overlay Node, Extract JSON Node." - }, - { - "author": "edelvarden", - "title": "ComfyUI-ImageMetadataExtension", - "reference": "https://github.com/edelvarden/ComfyUI-ImageMetadataExtension", - "files": [ - "https://github.com/edelvarden/ComfyUI-ImageMetadataExtension" - ], - "install_type": "git-clone", - "description": "Custom node for ComfyUI. It adds additional metadata for saved images, ensuring compatibility with the Civitai website." - }, - { - "author": "dfghsdh", - "title": "ComfyUI_FluxPromptGen", - "reference": "https://github.com/dfghsdh/ComfyUI_FluxPromptGen", - "files": [ - "https://github.com/dfghsdh/ComfyUI_FluxPromptGen" - ], - "install_type": "git-clone", - "description": "Flux Prompt Generator is a custom node set for ComfyUI that enhances prompt generation and image captioning capabilities. It integrates advanced language models and image captioning techniques to provide versatile and powerful prompt manipulation tools for your AI image generation workflows.\nNOTE:PORT OF [a/https://huggingface.co/Aitrepreneur/FLUX-Prompt-Generator](https://huggingface.co/Aitrepreneur/FLUX-Prompt-Generator) for COMFYUI" - }, - { - "author": "liushuchun", - "title": "ComfyUI_Lora_List_With_Url_Loader", - "reference": "https://github.com/liushuchun/ComfyUI_Lora_List_With_Url_Loader", - "files": [ - "https://github.com/liushuchun/ComfyUI_Lora_List_With_Url_Loader" - ], - "install_type": "git-clone", - "description": "Nodes:ComfyUI_Lora_List_With_Url_Loader. Load loras from urls and auto fetch them on web if they are missing." - }, - { - "author": "silveroxides", - "title": "Model and Checkpoint Loaders for NF4 and FP4", - "reference": "https://github.com/silveroxides/ComfyUI_bnb_nf4_fp4_Loaders", - "files": [ - "https://github.com/silveroxides/ComfyUI_bnb_nf4_fp4_Loaders" - ], - "install_type": "git-clone", - "description": "Nodes for loading both Checkpoints and UNET/Diffussion models quantized to bitsandbytes NF4 or FP4 format.\nStill under development and some limitations such as using LoRA might apply still." - }, - { - "author": "turkyden", - "title": "ComfyUI-SmartCrop", - "reference": "https://github.com/turkyden/ComfyUI-SmartCrop", - "files": [ - "https://github.com/turkyden/ComfyUI-SmartCrop" - ], - "install_type": "git-clone", - "description": "a ComfyUI Custom Node for [a/smartcrop.py](https://github.com/smartcrop/smartcrop.py)" - }, - { - "author": "DareFail", - "title": "ComfyUI-Roboflow", - "reference": "https://github.com/DareFail/ComfyUI-Roboflow", - "files": [ - "https://github.com/DareFail/ComfyUI-Roboflow" - ], - "install_type": "git-clone", - "description": "This is a ComfyUI node that connects with [a/Roboflow workflows](https://roboflow.com/workflows/build).\nRoboflow hosts hundreds of thousands of open source and custom object detection models." - }, - { - "author": "valofey", - "title": "OpenRouter Node", - "reference": "https://github.com/valofey/Openrouter-Node", - "files": [ - "https://github.com/valofey/Openrouter-Node" - ], - "install_type": "git-clone", - "description": "This is a node to use OpenRouter API from within ComfyUI. It supports both prompt and image+prompt requests (for multimodal LLMs)." - }, - { - "author": "Charlweed", - "title": "ImageTransceiver - ComfyUI", - "reference": "https://github.com/Charlweed/image_transceiver", - "files": [ - "https://github.com/Charlweed/image_transceiver" - ], - "install_type": "git-clone", - "description": "ImageTransceiver is a custom node that enables image generating clients to connect directly to ComfyUI, and send those images in near real-time. For example, an image manipulation program like GIMP can connect an image to a workflow in ComfyUI, and every time the image changes in GIMP, the changes are immediately made in the workflow. Cloning" - }, - { - "author": "tanglaoya321", - "title": "ComfyUI-StoryMaker", - "reference": "https://github.com/tanglaoya321/ComfyUI-StoryMaker", - "files": [ - "https://github.com/tanglaoya321/ComfyUI-StoryMaker" - ], - "install_type": "git-clone", - "description": "NODES:StoryMakerSinglePortraitNode, StoryMakerTwoPortraitNode, StoryMakerSwapClothNode." - }, - { - "author": "CRT", - "title": "CRT-Nodes", - "id": "CRT-Nodes", - "reference": "https://github.com/plugcrypt/CRT-Nodes", - "files": [ - "https://github.com/plugcrypt/CRT-Nodes" - ], - "install_type": "git-clone", - "description": "This set includes toggle nodes for Lora Unet blocks L1/L2 and a node to remove trailing comma from string end." - }, - { - "author": "GiusTex", - "title": "ComfyUI-DiffusersImageOutpaint", - "reference": "https://github.com/GiusTex/ComfyUI-DiffusersImageOutpaint", - "files": [ - "https://github.com/GiusTex/ComfyUI-DiffusersImageOutpaint" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for outpainting images with diffusers, based on [a/diffusers-image-outpaint](https://huggingface.co/spaces/fffiloni/diffusers-image-outpaint/tree/main) by fffiloni." - }, - { - "author": "CY-CHENYUE", - "title": "ComfyUI-MiniCPM-Plus", - "id": "minicpm-plus", - "reference": "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-Plus", - "files": [ - "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-Plus" - ], - "install_type": "git-clone", - "description": "Custom nodes for MiniCPM language models in ComfyUI. Provides advanced text generation and image understanding functions." - }, - { - "author": "CY-CHENYUE", - "title": "ComfyUI-Molmo", - "id": "comfyui-molmo", - "reference": "https://github.com/CY-CHENYUE/ComfyUI-Molmo", - "files": [ - "https://github.com/CY-CHENYUE/ComfyUI-Molmo" - ], - "install_type": "git-clone", - "description": "Use of the molmo model.Generate detailed image descriptions and analysis using Molmo models in ComfyUI." - }, - { - "author": "CY-CHENYUE", - "title": "ComfyUI-InpaintEasy", - "id": "ComfyUI-InpaintEasy", - "reference": "https://github.com/CY-CHENYUE/ComfyUI-InpaintEasy", - "files": [ - "https://github.com/CY-CHENYUE/ComfyUI-InpaintEasy" - ], - "description": "InpaintEasy is a set of optimized local repainting (Inpaint) nodes that provide a simpler and more powerful local repainting workflow. It makes local repainting work easier and more efficient with intelligent cropping and merging functions.", - "tags": ["inpaint", "crop", "image"], - "install_type": "git-clone" - }, - { - "author": "CY-CHENYUE", - "title": "ComfyUI-OmniGenX", - "id": "ComfyUI-OmniGenX", - "reference": "https://github.com/CY-CHENYUE/ComfyUI-OmniGenX", - "files": [ - "https://github.com/CY-CHENYUE/ComfyUI-OmniGenX" - ], - "description": "OmniGen Unified Image Generation Model Integration.", - "install_type": "git-clone" - }, - { - "author": "CY-CHENYUE", - "title": "ComfyUI-Redux-Prompt", - "id": "ComfyUI-Redux-Prompt", - "reference": "https://github.com/CY-CHENYUE/ComfyUI-Redux-Prompt", - "files": [ - "https://github.com/CY-CHENYUE/ComfyUI-Redux-Prompt" - ], - "description": "A ComfyUI custom node that provides fine-grained control over style transfer using Redux style models.", - "tags": ["Flux", "redux", "prompt"], - "install_type": "git-clone" - }, - { - "author": "CY-CHENYUE", - "title": "ComfyUI-MiniCPM-o", - "id": "ComfyUI-MiniCPM-o", - "reference": "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-o", - "files": [ - "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-o" - ], - "description": "ComfyUI custom nodes for MiniCPM", - "install_type": "git-clone" - }, - { - "author": "codecringebinge", - "title": "ComfyUI-Arrow-Key-Canvas-Navigation", - "id": "codecringebinge.arrow.key.canvas.navigation", - "reference": "https://github.com/codecringebinge/ComfyUI-Arrow-Key-Canvas-Navigation", - "files": [ - "https://github.com/codecringebinge/ComfyUI-Arrow-Key-Canvas-Navigation" - ], - "install_type": "git-clone", - "description": "A ComfyUI Custom Node that enables arrow key canvas navigation with a pan speed setting." - }, - { - "author": "asaddi", - "title": "ComfyUI-YALLM-node", - "reference": "https://github.com/asaddi/ComfyUI-YALLM-node", - "files": [ - "https://github.com/asaddi/ComfyUI-YALLM-node" - ], - "install_type": "git-clone", - "description": "Yet another set of LLM nodes for ComfyUI (for local/remote OpenAI-like APIs, multi-modal models supported)" - }, - { - "author": "ycyy", - "title": "ComfyUI-YCYY-LoraInfo", - "reference": "https://github.com/ycyy/ComfyUI-YCYY-LoraInfo", - "files": [ - "https://github.com/ycyy/ComfyUI-YCYY-LoraInfo" - ], - "install_type": "git-clone", - "description": "You can use this node to get information about lora. For example trigger words, description and example images." - }, - { - "author": "Darth-Veitcher", - "title": "Comfy DV", - "id": "comfydv", - "reference": "https://github.com/darth-veitcher/comfydv", - "files": [ - "https://github.com/darth-veitcher/comfydv" - ], - "install_type": "git-clone", - "description": "Nodes: String Formatting (f-string and jinja2), Random Choice, Model Memory management, and other quality of life improvements." - }, - { - "author": "ez-af", - "title": "ComfyUI-EZ-AF-Nodes", - "id": "ez-af", - "reference": "https://github.com/ez-af/ComfyUI-EZ-AF-Nodes", - "files": [ - "https://github.com/ez-af/ComfyUI-EZ-AF-Nodes" - ], - "install_type": "git-clone", - "description": "This pack helps to conveniently control text in complex prompt-builder type workflows. Load/Read Prompts from .CSV; Concatenate large amounts of text; Use string input as ANY type. Requires pythongosssss custom scripts" - }, - { - "author": "danbochman", - "title": "FASHN Virtual Try-On", - "id": "fashn", - "reference": "https://github.com/fashn-AI/ComfyUI-FASHN", - "files": [ - "https://github.com/fashn-AI/ComfyUI-FASHN" - ], - "install_type": "git-clone", - "description": "Node for the FASHN Virtual Try-On API. Requires an API Key from fashn.ai" - }, - { - "author": "BRIA AI", - "title": "BRIA AI API nodes", - "reference": "https://github.com/Bria-AI/ComfyUI-BRIA-API", - "files": [ - "https://github.com/Bria-AI/ComfyUI-BRIA-API" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI using BRIA's API." - }, - { - "author": "L.HC", - "title": "SimpleToolsNodes", - "reference": "https://github.com/Mcmillian/ComfyUI-SimpleToolsNodes", - "files": [ - "https://github.com/Mcmillian/ComfyUI-SimpleToolsNodes" - ], - "install_type": "git-clone", - "description": "Two simple nodes: 1. Get the steps based on the model name, 2. Generate prompts using chatglm." - }, - { - "author": "creeper", - "title": "comfyui_nai_api", - "reference": "https://github.com/Creeper-MZ/comfyui_nai_api", - "files": [ - "https://github.com/Creeper-MZ/comfyui_nai_api" - ], - "install_type": "git-clone", - "description": "A node that can use Nai in Comfyui" - }, - { - "author": "syaofox", - "title": "ComfyUI_fnodes", - "reference": "https://github.com/syaofox/ComfyUI_fnodes", - "files": [ - "https://github.com/syaofox/ComfyUI_fnodes" - ], - "install_type": "git-clone", - "description": "ComfyUI_fnodes is a collection of custom nodes designed for ComfyUI. These nodes provide additional functionality that can enhance your ComfyUI workflows.\nFile manipulation tools, Image resizing tools, IPAdapter tools, Image processing tools, Mask tools, Face analysis tools, Sampler tools, Miscellaneous tools" - }, - { - "author": "guyaton", - "title": "guy-nodes-comfyui", - "reference": "https://github.com/guyaton/guy-nodes-comfyui", - "files": [ - "https://github.com/guyaton/guy-nodes-comfyui" - ], - "install_type": "git-clone", - "description": "These are designed to be custom nodes i found usefulness to that hopefully others can share." - }, - { - "author": "thoddnn", - "title": "ComfyUI MLX Nodes", - "reference": "https://github.com/thoddnn/ComfyUI-MLX", - "files": [ - "https://github.com/thoddnn/ComfyUI-MLX" - ], - "install_type": "git-clone", - "description": "Faster workflows for ComfyUI users on Mac with Apple silicon" - }, - { - "author": "acorderob", - "title": "Prompt PostProcessor", - "reference": "https://github.com/acorderob/sd-webui-prompt-postprocessor", - "files": [ - "https://github.com/acorderob/sd-webui-prompt-postprocessor" - ], - "install_type": "git-clone", - "description": "Stable Diffusion WebUI & ComfyUI extension to post-process the prompt, including sending content from the prompt to the negative prompt and wildcards." - }, - { - "author": "Moooonet", - "title": "ComfyUI-ArteMoon", - "reference": "https://github.com/Moooonet/ComfyUI-ArteMoon", - "files": [ - "https://github.com/Moooonet/ComfyUI-ArteMoon" - ], - "install_type": "git-clone", - "description": "This plugin works with [a/IF_AI_Tools](https://github.com/if-ai/ComfyUI-IF_AI_tools) to build a workflow in ComfyUI that uses AI to assist in generating prompts." - }, - { - "author": "Nojahhh", - "title": "ComfyUI GLM-4 Wrapper", - "reference": "https://github.com/Nojahhh/ComfyUI_GLM4_Wrapper", - "files": [ - "https://github.com/Nojahhh/ComfyUI_GLM4_Wrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI GLM-4 Wrapper. This powerful tool enhances your prompt engineering process by allowing users to easily construct detailed, high-quality prompts for image/video generation based on user image and/or user prompts." - }, - { - "author": "nilor-corp", - "title": "Nilor Nodes by Nilor Corp", - "id": "nilor-nodes", - "reference": "https://github.com/nilor-corp/nilor-nodes", - "files": [ - "https://github.com/nilor-corp/nilor-nodes" - ], - "install_type": "git-clone", - "description": "Custom utility nodes for ComfyUI by Nilor Corp. Probably not useful for most people, but contains stuff for working with lists, filenames, image batches, etc in a very specifc way." - }, - { - "author": "willchil", - "title": "ComfyUI-Environment-Visualizer", - "reference": "https://github.com/willchil/ComfyUI-Environment-Visualizer", - "files": [ - "https://github.com/willchil/ComfyUI-Environment-Visualizer" - ], - "install_type": "git-clone", - "description": "This ComfyUI node pack allows the user to take a panoramic image and a corresponding depth map, and turn them into a 3D environment, which they can view in an immersive WebXR environment." - }, - { - "author": "YarvixPA", - "title": "ComfyUI-NeuralMedia", - "reference": "https://github.com/YarvixPA/ComfyUI-NeuralMedia", - "files": [ - "https://github.com/YarvixPA/ComfyUI-NeuralMedia" - ], - "install_type": "git-clone", - "description": "A set of custom nodes modified to achieve things I felt were missing." - }, - { - "author": "SpenserCai", - "title": "ComfyUI-FunAudioLLM", - "id": "funaudiollm", - "reference": "https://github.com/SpenserCai/ComfyUI-FunAudioLLM", - "files": [ - "https://github.com/SpenserCai/ComfyUI-FunAudioLLM" - ], - "install_type": "git-clone", - "description": "Comfyui custom node for [a/FunAudioLLM](https://funaudiollm.github.io/) include [a/CosyVoice](https://github.com/FunAudioLLM/CosyVoice) and [a/SenseVoice](https://github.com/FunAudioLLM/SenseVoice)." - }, - { - "author": "GadzoinksOfficial", - "title": "Gadzoinks", - "reference": "https://github.com/GadzoinksOfficial/gadzoinks_ComfyUI", - "files": [ - "https://github.com/GadzoinksOfficial/gadzoinks_ComfyUI" - ], - "install_type": "git-clone", - "description": "Custom node for integrating with gadzoinks iPhone app" - }, - { - "author": "educator-art", - "title": "ComfyUI-Load-DirectoryFiles", - "reference": "https://github.com/educator-art/ComfyUI-Load-DirectoryFiles", - "files": [ - "https://github.com/educator-art/ComfyUI-Load-DirectoryFiles" - ], - "install_type": "git-clone", - "description": "This node loads prompts (txt) and images (png) from a specified directory. By specifying an index, it outputs the selected file." - }, - { - "author": "raysers", - "title": "Mflux-ComfyUI", - "reference": "https://github.com/raysers/Mflux-ComfyUI", - "files": [ - "https://github.com/raysers/Mflux-ComfyUI" - ], - "install_type": "git-clone", - "description": "Simple use of [a/Mflux](https://github.com/filipstrand/mflux) in ComfyUI, suitable for users who are not familiar with terminal usage.\nNOTE: A MLX port of FLUX based on the Huggingface Diffusers implementation." - }, - { - "author": "civen-cn", - "title": "ComfyUI-PaddleOcr", - "reference": "https://github.com/civen-cn/ComfyUI-PaddleOcr", - "files": [ - "https://github.com/civen-cn/ComfyUI-PaddleOcr" - ], - "install_type": "git-clone", - "description": "Nodes related to [a/PaddleOCR](https://paddlepaddle.github.io/PaddleOCR) OCR." - }, - { - "author": "rdancer", - "title": "ComfyUI_Florence2SAM2", - "reference": "https://github.com/rdancer/ComfyUI_Florence2SAM2", - "files": [ - "https://github.com/rdancer/ComfyUI_Florence2SAM2" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node implementing Florence 2 + Segment Anything Model 2, based on [a/SkalskiP's HuggingFace space](https://huggingface.co/spaces/SkalskiP/florence-sam)" - }, - { - "author": "gelasdev", - "title": "ComfyUI-FLUX-BFL-API", - "reference": "https://github.com/gelasdev/ComfyUI-FLUX-BFL-API", - "files": [ - "https://github.com/gelasdev/ComfyUI-FLUX-BFL-API" - ], - "install_type": "git-clone", - "description": "Custom nodes for integrating Flux models with the BFL API." - }, - { - "author": "ggarra13", - "title": "ComfyUI-mrv2", - "reference": "https://github.com/ggarra13/ComfyUI-mrv2", - "files": [ - "https://github.com/ggarra13/ComfyUI-mrv2" - ], - "install_type": "git-clone", - "description": "Nodes to interact with the mrv2 player" - }, - { - "author": "JichaoLiang", - "title": "Immortal_comfyUI", - "reference": "https://github.com/JichaoLiang/Immortal_comfyUI", - "files": [ - "https://github.com/JichaoLiang/Immortal_comfyUI" - ], - "install_type": "git-clone", - "description": "NODES:ImNewNode, ImAppendNode, MergeNode, SetProperties, SaveToDirectory, batchNodes, redirectToNode, SetEvent, ..." - }, - { - "author": "SSsnap", - "title": "Snap Processing for Comfyui", - "reference": "https://github.com/SS-snap/ComfyUI-Snap_Processing", - "files": [ - "https://github.com/SS-snap/ComfyUI-Snap_Processing" - ], - "install_type": "git-clone", - "description": "preprocessing images, presented in a visual way. It also calculates the corresponding image area." - }, - { - "author": "RiceRound", - "title": "ComfyUI Compression and Encryption Node", - "id": "cryptocat", - "reference": "https://github.com/RiceRound/ComfyUI_CryptoCat", - "files": [ - "https://github.com/RiceRound/ComfyUI_CryptoCat" - ], - "install_type": "git-clone", - "description": "a lightweight open-source node for ComfyUI, designed to simplify workflows while providing encryption protection for them." - }, - { - "author": "yvann-ba", - "title": "ComfyUI_Yvann-Nodes", - "reference": "https://github.com/yvann-ba/ComfyUI_Yvann-Nodes", - "files": [ - "https://github.com/yvann-ba/ComfyUI_Yvann-Nodes" - ], - "install_type": "git-clone", - "description": "Audio reactivity nodes for AI animations 🔊 Analyze audio, extract drums and vocals. Generate reactive masks and weights. Create audio-driven visuals. Produce weight graphs and audio masks. Compatible with IPAdapter, ControlNets and more. Features audio scheduling and waveform analysis. Tutorials to use this pack: [a/Yvann Youtube](https://www.youtube.com/@yvann.mp4)" - }, - { - "author": "Playbook", - "title": "Playbook Nodes", - "id": "playbook-3d", - "reference": "https://github.com/playbook3d/playbook3d-comfyui-nodes", - "files": [ - "https://github.com/playbook3d/playbook3d-comfyui-nodes" - ], - "install_type": "git-clone", - "description": "Custom nodes for connecting 3D scenes and ComfyUI workflows." - }, - { - "author": "Elaine-chennn", - "title": "ComfyUI Overlay Media Node", - "reference": "https://github.com/Elaine-chennn/comfyui-overlay-media", - "files": [ - "https://github.com/Elaine-chennn/comfyui-overlay-media" - ], - "install_type": "git-clone", - "description": "This repository contains a custom ComfyUI node for overlaying media using ffmpeg." - }, - { - "author": "laogou666", - "title": "ComfyUI_LG_FFT", - "reference": "https://github.com/LAOGOU-666/ComfyUI_LG_FFT", - "files": [ - "https://github.com/LAOGOU-666/ComfyUI_LG_FFT" - ], - "install_type": "git-clone", - "description": "Implementation of Fast Fourier Transform in COMFYUI" - }, - { - "author": "laogou666", - "title": "Comfyui-LG_Relight", - "reference": "https://github.com/LAOGOU-666/Comfyui-LG_Relight", - "files": [ - "https://github.com/LAOGOU-666/Comfyui-LG_Relight" - ], - "install_type": "git-clone", - "description": "A simple implementation of real-time 3D lighting in ComfyUI. It's an open-source node, have fun playing around!" - }, - { - "author": "VertexStudio", - "title": "roblox-comfyui-nodes", - "reference": "https://github.com/VertexStudio/roblox-comfyui-nodes", - "files": [ - "https://github.com/VertexStudio/roblox-comfyui-nodes" - ], - "install_type": "git-clone", - "description": "NODES:Scale Image Node, Switch Image Node, Switch Text Node, First Number Node, Mirror Effect Node, Text To ImageNode, Flow Nodes, Simple Save Image Node" - }, - { - "author": "2kpr", - "title": "ComfyUI-PMRF", - "id": "comfyui-pmrf", - "reference": "https://github.com/2kpr/ComfyUI-PMRF", - "files": [ - "https://github.com/2kpr/ComfyUI-PMRF" - ], - "install_type": "git-clone", - "description": "Implementation of PMRF on ComfyUI" - }, - { - "author": "dionren", - "title": "Export Workflow With Cyuai Api Available Nodes", - "id": "comfyUI-Pro-Export-Tool", - "reference": "https://github.com/dionren/ComfyUI-Pro-Export-Tool", - "files": [ - "https://github.com/dionren/ComfyUI-Pro-Export-Tool" - ], - "install_type": "git-clone", - "description": "This is a node to convert workflows to cyuai api available nodes." - }, - { - "author": "l1yongch1", - "title": "ComfyUI_PhiCaption", - "reference": "https://github.com/l1yongch1/ComfyUI_PhiCaption", - "files": [ - "https://github.com/l1yongch1/ComfyUI_PhiCaption" - ], - "install_type": "git-clone", - "description": "In addition to achieving conventional single-image, single-round reverse engineering, it can also achieve single-image multi-round and multi-image single-round reverse engineering. Moreover, the Phi model has a better understanding of prompts." - }, - { - "author": "tkreuziger", - "title": "ComfyUI and Claude", - "reference": "https://github.com/tkreuziger/comfyui-claude", - "files": [ - "https://github.com/tkreuziger/comfyui-claude" - ], - "install_type": "git-clone", - "description": "A set of custom nodes that are using Anthropic's Claude models for describing images and transforming texts." - }, - { - "author": "sipie800", - "title": "ComfyUI-PuLID-Flux-Enhanced", - "reference": "https://github.com/sipie800/ComfyUI-PuLID-Flux-Enhanced", - "files": [ - "https://github.com/sipie800/ComfyUI-PuLID-Flux-Enhanced" - ], - "install_type": "git-clone", - "description": "adapted from [a/https://github.com/balazik/ComfyUI-PuLID-Flux](https://github.com/balazik/ComfyUI-PuLID-Flux).\ncommon fusion methods for multi-image input, some further experimental fusion methods, switch between using gray image (official) and rgb.," - }, - { - "author": "EvilBT", - "title": "JoyCaptionAlpha Two for ComfyUI", - "reference": "https://github.com/EvilBT/ComfyUI_SLK_joy_caption_two", - "files": [ - "https://github.com/EvilBT/ComfyUI_SLK_joy_caption_two" - ], - "install_type": "git-clone", - "description": "NODES:Joy Caption Two, Joy Caption Two Advanced, Joy Caption Two Load, Joy Caption Extra Options" - }, - { - "author": "Q-Bug4", - "title": "Simple JSON Parser Node for ComfyUI", - "reference": "https://github.com/Q-Bug4/Comfyui-Simple-Json-Node", - "files": [ - "https://github.com/Q-Bug4/Comfyui-Simple-Json-Node" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI to parse and extract data from JSON strings." - }, - { - "author": "Q-Bug4", - "title": "Comfyui-Qb-Date-Nodes", - "reference": "https://github.com/Q-Bug4/Comfyui-Qb-DateNodes", - "files": [ - "https://github.com/Q-Bug4/Comfyui-Qb-DateNodes" - ], - "install_type": "git-clone", - "description": "A custom node designed for ComfyUI, allowing users to format the current date and time based on a specified format." - }, - { - "author": "bartly", - "title": "Babel Removebg Api Node for ComfyUI", - "id": "BabelRemovebgApi", - "reference": "https://github.com/bartly/Comfyui_babel_removebg_api", - "files": [ - "https://github.com/bartly/Comfyui_babel_removebg_api" - ], - "install_type": "git-clone", - "description": "This is a node to remove background of human picture." - }, - { - "author": "NumZ", - "title": "ComfyUI-FlowChain", - "id": "FlowChainNode", - "reference": "https://github.com/numz/Comfyui-FlowChain", - "files": [ - "https://github.com/numz/ComfyUI-FlowChain" - ], - "install_type": "git-clone", - "description": "Convert your workflows into node and chain them." - }, - { - "author": "SozeInc", - "title": "Quality of Life Nodes for ComfyUI", - "id": "ComfyUI_Soze", - "reference": "https://github.com/SozeInc/ComfyUI_Soze", - "files": [ - "https://github.com/SozeInc/ComfyUI_Soze" - ], - "install_type": "git-clone", - "description": "These nodes aid with batching image processing and maintaining input file names in output files and other quality of life nodes." - }, - { - "author": "MzMaXaM", - "title": "ComfyUi-MzMaXaM", - "reference": "https://github.com/MzMaXaM/ComfyUi-MzMaXaM", - "files": [ - "https://github.com/MzMaXaM/ComfyUi-MzMaXaM" - ], - "install_type": "git-clone", - "description": "A pack of nodes(only 2 for now) to make my life easier and hopefully yours ;)" - }, - { - "author": "robertvoy", - "title": "ComfyUI Flux Continuum: Modular Interface", - "reference": "https://github.com/robertvoy/ComfyUI-Flux-Continuum", - "files": [ - "https://github.com/robertvoy/ComfyUI-Flux-Continuum" - ], - "install_type": "git-clone", - "description": "Set of custom nodes to use with the ComfyUI Flux Continuum: Modular Interface. NODES: Text Versions, Image64 Display, Tabs, Step Slider, Denoise Slider, Guidance Slider, Batch Slider, Max Shift Slider, ControlNet Slider" - }, - { - "author": "Lam Yan", - "title": "ComfyUI_Lam", - "id": "ComfyUI_Lam", - "reference": "https://github.com/yanlang0123/ComfyUI_Lam", - "files": [ - "https://github.com/yanlang0123/ComfyUI_Lam" - ], - "install_type": "git-clone", - "description": "This extension has some useful nodes, loops, wechat public number +AI chat drawing, distributed cluster" - }, - { - "author": "moustafa-nasr", - "title": "ComfyUI-SimpleLogger", - "reference": "https://github.com/moustafa-nasr/ComfyUI-SimpleLogger", - "files": [ - "https://github.com/moustafa-nasr/ComfyUI-SimpleLogger" - ], - "install_type": "git-clone", - "description": "A simple node to save your history in html file. I saves the WorkFlow with all it's input values so you can duplicate it later." - }, - { - "author": "sweetndata", - "title": "ComfyUI-googletrans", - "reference": "https://github.com/sweetndata/ComfyUI-googletrans", - "files": [ - "https://github.com/sweetndata/ComfyUI-googletrans" - ], - "install_type": "git-clone", - "description": "NODES:Google Translate" - }, - { - "author": "sweetndata", - "title": "ComfyUI-Image-Harmonizer", - "reference": "https://github.com/sweetndata/ComfyUI-Image-Harmonizer", - "files": [ - "https://github.com/sweetndata/ComfyUI-Image-Harmonizer" - ], - "install_type": "git-clone", - "description": "NODES:Image-Harmonizer" - }, - { - "author": "sweetndata", - "title": "ComfyUI_Sticker_Compositer", - "reference": "https://github.com/sweetndata/ComfyUI_Sticker_Compositer", - "files": [ - "https://github.com/sweetndata/ComfyUI_Sticker_Compositer" - ], - "install_type": "git-clone", - "description": "NODES:Sticker Compositer.\nbackground frame + sticker" - }, - { - "author": "BlackVortexAI", - "title": "BV Nodes", - "reference": "https://github.com/BlackVortexAI/ComfyUI-BVortexNodes", - "files": [ - "https://github.com/BlackVortexAI/ComfyUI-BVortexNodes" - ], - "install_type": "git-clone", - "description": "This repository contains a user-defined node for ComfyUI, currently there are nodes for capturing captions. But will be expanded in the future." - }, - { - "author": "JosephThomasParker", - "title": "ComfyUI-DrawThingsWrapper", - "reference": "https://github.com/JosephThomasParker/ComfyUI-DrawThingsWrapper", - "files": [ - "https://github.com/JosephThomasParker/ComfyUI-DrawThingsWrapper" - ], - "install_type": "git-clone", - "description": "These nodes provide a wrapper for calling Draw Things image generations from ComfyUI.\nWait, why? The Draw Things app has been optimized for Apple hardware and runs roughly x3 faster than ComfyUI generations. But ComfyUI is a flexible and powerful tools, and has some features - like queuing and face swapping - that haven't been implemented in Draw Things." - }, - { - "author": "Kesin11", - "title": "ComfyUI-list-filter", - "reference": "https://github.com/Kesin11/ComfyUI-list-filter", - "files": [ - "https://github.com/Kesin11/ComfyUI-list-filter" - ], - "install_type": "git-clone", - "description": "Custom nodes for convenient filtering image or string lists in ComfyUI workflow." - }, - { - "author": "taches-ai", - "title": "ComfyUI Scene Composer", - "reference": "https://github.com/taches-ai/comfyui-scene-composer", - "files": [ - "https://github.com/taches-ai/comfyui-scene-composer" - ], - "install_type": "git-clone", - "description": "A collection of nodes to facilitate the creation of scenes in ComfyUI." - }, - { - "author": "NguynHungNguyen", - "title": "Segment Any Bedroom Interior", - "reference": "https://github.com/NguynHungNguyen/Segment-Bedroom-Interior", - "files": [ - "https://github.com/NguynHungNguyen/Segment-Bedroom-Interior" - ], - "install_type": "git-clone", - "description": "Segment Any Bedroom Interior is a Python-based project designed to segment furniture and objects within a bedroom image. The segmentation process uses RGB codes to accurately differentiate between various pieces of furniture, providing a precise mask output for each segmented object. This project is integrated with ComfyUI to allow easy and intuitive usage." - }, - { - "author": "MyShell", - "title": "ComfyUI-ShellAgent-Plugin", - "id": "comfyui_shellagent_plugin", - "reference": "https://github.com/myshell-ai/ComfyUI-ShellAgent-Plugin", - "files": [ - "https://github.com/myshell-ai/ComfyUI-ShellAgent-Plugin" - ], - "install_type": "git-clone", - "description": "This repository provides utility nodes for defining inputs and outputs in ComfyUI workflows. These nodes are essential for running ShellAgent apps with ComfyUI, but they can also be used independently to specify input/output variables and their requirements explicitly." - }, - { - "author": "Vrch Studio (vrch.ai)", - "title": "ComfyUI Web Viewer", - "reference": "https://github.com/VrchStudio/comfyui-web-viewer", - "files": [ - "https://github.com/VrchStudio/comfyui-web-viewer" - ], - "install_type": "git-clone", - "description": "The ComfyUI Web Viewer by [a/vrch.ai](https://vrch.ai) is a custom node collection offering a real-time AI-generated interactive art framework. This utility integrates realtime streaming into ComfyUI workflows, supporting keyboard control nodes, OSC control nodes, sound input nodes, and more. Accessible from any device with a web browser, it enables real time interaction with AI-generated content, making it ideal for interactive visual projects and enhancing ComfyUI workflows with efficient content management and display." - }, - { - "author": "kk8bit", - "title": "KayTool", - "reference": "https://github.com/kk8bit/KayTool", - "files": [ - "https://github.com/kk8bit/KayTool" - ], - "install_type": "git-clone", - "description": "This is a versatile and ever-expanding toolkit for ComfyUI, offering powerful node functionalities such as “Custom Save Image,” “Professional Color Adjustment,” and “Prompt Enhancer.” Its features include precise image saving with support for ICC color profiles (sRGB/Adobe RGB), metadata embedding, advanced image adjustments (exposure, contrast, color temperature, hue, saturation), professional filter previews, dynamic prompt editing, and high-quality Baidu AI translation." - }, - { - "author": "sousakujikken", - "title": "ComfyUI-PixydustQuantizer", - "reference": "https://github.com/sousakujikken/ComfyUI-PixydustQuantizer", - "files": [ - "https://github.com/sousakujikken/ComfyUI-PixydustQuantizer" - ], - "install_type": "git-clone", - "description": "Pixydust Quantizer is a custom node extension for ComfyUI that allows for the simplified recreation of tile patterns used in 1990s 16-color PC graphics, offering advanced color quantization and palette optimization features.Additionally, it includes a CRT-like effect node that mimics the phosphor glow and slight color bleeding of old CRT displays, adding a nostalgic aesthetic.With version 2.0.0, it now supports batch image processing, enabling efficient handling of video frames and image sequences." - }, - { - "author": "hoveychen", - "title": "ComfyUI-MusePose-Remaster", - "id": "musepose-remaster", - "reference": "https://github.com/hoveychen/ComfyUI-MusePose-Remaster", - "files": [ - "https://github.com/hoveychen/ComfyUI-MusePose-Remaster" - ], - "install_type": "git-clone", - "description": "MusePose Remaster is a remaster version of ComfyUI MusePose node.\nIt supports auto weights download, remove most necessary dependencies, etc." - }, - { - "author": "AhBumm", - "title": "Customizable API Call Nodes by BillBum", - "id": "billbum", - "reference": "https://github.com/AhBumm/ComfyUI_BillBum_Nodes", - "files": [ - "https://github.com/AhBumm/ComfyUI_BillBum_Nodes" - ], - "nodename_pattern": "\\(BillBum\\)$", - "install_type": "git-clone", - "description": "API call node for Third-party platforms both official and local. Support VLMs LLMs Dalle3 Flux-Pro SD3 etc. And some little tools: img to b64 url, b64 url to img, b64 url to b64 data, reg text to word and ',' only, etc." - }, - { - "author": "Scepter", - "title": "ComfyUI-Scepter", - "id": "scepter", - "reference": "https://github.com/modelscope/scepter", - "files": [ - "https://github.com/modelscope/scepter" - ], - "install_type": "git-clone", - "description": "Custom nodes for various visual generation and editing tasks using Scepter." - }, - { - "author": "DeemosTech", - "title": "ComfyUI-Rodin", - "id": "rodinHyperhuamn", - "reference": "https://github.com/Ravenmelt/ComfyUI-Rodin", - "files": [ - "https://github.com/Ravenmelt/ComfyUI-Rodin" - ], - "install_type": "git-clone", - "description": "Comfyui-rodin is a 3D generation extension based on Rodin-API. It provides many of the functionality nodes currently available in RodinAPI and It provides a 3D preview node for ComfyUI." - }, - { - "author": "Ardenius", - "title": "ComfyUI-Ardenius", - "id": "ARD", - "reference": "https://github.com/ArdeniusAI/ComfyUI-Ardenius", - "files": [ - "https://github.com/ArdeniusAI/ComfyUI-Ardenius" - ], - "install_type": "git-clone", - "description": "ARD ComfyUI Ardenius include ARD Control Box, ARD Math nodes and other helper nodes to be added in the future. for more info https://ko-fi.com/ardenius." - }, - { - "author": "brayevalerien", - "title": "ComfyUI Resynthesizer", - "reference": "https://github.com/brayevalerien/ComfyUI-resynthesizer", - "files": [ - "https://github.com/brayevalerien/ComfyUI-resynthesizer" - ], - "install_type": "git-clone", - "description": "This repository is a quick port of [a/Resynthesizer](https://github.com/bootchk/resynthesizer) to ComfyUI.\nResynthesizer is the open-source implementation of a texture generation technique proposed by Paul Harrison in 2005, especially useful for removing an object from an image (inpainting), which is most likely close to what Photoshop uses to for the content aware fill feature. Note that this is not using a diffusion model to inpaint, as opposed to many techniques of today, which makes it very fast and predictable, but sometimes yields worse results." - }, - { - "author": "BZcreativ", - "title": "ComfyUI-FLUX-TOGETHER-API", - "reference": "https://github.com/BZcreativ/ComfyUI-FLUX-TOGETHER-API", - "files": [ - "https://github.com/BZcreativ/ComfyUI-FLUX-TOGETHER-API" - ], - "install_type": "git-clone", - "description": "A custom node implementation for ComfyUI that integrates with Together.ai's FLUX image generation models. This project is inspired by and adapted from [a/ComfyUI-FLUX-BFL-API](https://github.com/gelasdev/ComfyUI-FLUX-BFL-API) to work with the Together.ai API." - }, - { - "author": "stormcenter", - "title": "ComfyUI-AutoSplitGridImage", - "reference": "https://github.com/stormcenter/ComfyUI-AutoSplitGridImage", - "files": [ - "https://github.com/stormcenter/ComfyUI-AutoSplitGridImage" - ], - "install_type": "git-clone", - "description": "ComfyUI-AutoSplitGridImage is a custom node for ComfyUI that provides intelligent image splitting functionality. It combines edge detection for column splits and uniform division for row splits, offering a balanced approach to grid-based image segmentation." - }, - { - "author": "stormcenter", - "title": "ComfyUI LivePhoto Creator", - "reference": "https://github.com/stormcenter/ComfyUI-LivePhotoCreator", - "files": [ - "https://github.com/stormcenter/ComfyUI-LivePhotoCreator" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that allows you to create iPhone-compatible Live Photos from videos. This node can convert video sequences into Live Photo format, with the ability to select key frames and customize the output." - }, - { - "author": "stormcenter", - "title": "ComfyUI-SVGFullfill", - "reference": "https://github.com/stormcenter/ComfyUI-SVGFullfill", - "files": [ - "https://github.com/stormcenter/ComfyUI-SVGFullfill" - ], - "install_type": "git-clone", - "description": "ComfyUI-SVGFullfill is a custom node for ComfyUI that handles SVG file processing. Key features: - SVG file upload and preview - Replace images (up to 3) and text elements (up to 10) in SVG - Chinese font support - Real-time canvas preview - PNG export" - }, - { - "author": "AkashKarnatak", - "title": "ComfyUI_faishme", - "reference": "https://github.com/AkashKarnatak/ComfyUI_faishme", - "files": [ - "https://github.com/AkashKarnatak/ComfyUI_faishme" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for our product Faishme" - }, - { - "author": "ARZUMATA", - "title": "ComfyUI-ARZUMATA", - "reference": "https://github.com/ARZUMATA/ComfyUI-ARZUMATA", - "files": [ - "https://github.com/ARZUMATA/ComfyUI-ARZUMATA" - ], - "install_type": "git-clone", - "description": "NODES:Caching CLIP Text Encode for FLUX.\nRandom nodes for ComfyUI for various purposes." - }, - { - "author": "ARZUMATA", - "title": "ComfyUI-Qwen2", - "reference": "https://github.com/ARZUMATA/ComfyUI-ARZUMATA-Qwen2", - "files": [ - "https://github.com/ARZUMATA/ComfyUI-ARZUMATA-Qwen2" - ], - "install_type": "git-clone", - "description": "Qwen2 Nodes for ComfyUI.\nI needed to run Qwen2 on ComfyUI to use it in my workflow for batching images and captioning and none of the implementations I found on the web worked the way I wanted.[w/May contain bugs.]" - }, - { - "author": "Rinsanga1", - "title": "comfyui-florence2xy", - "reference": "https://github.com/Rinsanga1/comfyui-florence2xy", - "files": [ - "https://github.com/Rinsanga1/comfyui-florence2xy" - ], - "install_type": "git-clone", - "description": "NODES:Florence2 Coordinates (XY Split), Phi-3.5 Vision Instruct." - }, - { - "author": "gt732", - "title": "ComfyUI-DreamWaltz-G", - "reference": "https://github.com/gt732/ComfyUI-DreamWaltz-G", - "files": [ - "https://github.com/gt732/ComfyUI-DreamWaltz-G" - ], - "install_type": "git-clone", - "description": "This repository contains custom ComfyUI nodes designed to integrate with [a/DreamWaltz-G](https://github.com/Yukun-Huang/DreamWaltz-G), a cutting-edge model for generating expressive 3D Gaussian avatars using skeleton-guided 2D diffusion." - }, - { - "author": "clhui", - "title": "Clh Tool for ComfyUI", - "id": "ComfyUi-clh-Tool", - "reference": "https://github.com/clhui/ComfyUi-clh-Tool", - "files": [ - "https://github.com/clhui/ComfyUi-clh-Tool" - ], - "install_type": "git-clone", - "description": "Some mathematical calculation nodes,freedom And omnipotent, string calculation nodes, can customize the number of parameters and calculation formulas(expression). The calculation content can also be displayed in places such as the label title of Comfy Node,String to Image Title Label" - }, - { - "author": "ruucm", - "title": "Ruucm's ComfyUI Nodes", - "id": "ruucm", - "reference": "https://github.com/ruucm/ruucm-comfy", - "nodename_pattern": " \\(ruucm\\)$", - "files": [ - "https://github.com/ruucm/ruucm-comfy" - ], - "install_type": "git-clone", - "description": "Nodes: Load External LoRA Model Only" - }, - { - "author": "Apache0ne", - "title": "ComfyUI-EasyUrlLoader", - "id": "easy-url-loader", - "reference": "https://github.com/Apache0ne/ComfyUI-EasyUrlLoader", - "files": [ - "https://github.com/Apache0ne/ComfyUI-EasyUrlLoader" - ], - "install_type": "git-clone", - "description": "Simple 4k YT Downloader Through URL" - }, - { - "author": "TZOOTZ", - "title": "TZOOTZ VHS Effect Node", - "reference": "https://github.com/TZOOTZ/ComfyUI-TZOOTZ_VHS", - "files": [ - "https://github.com/TZOOTZ/ComfyUI-TZOOTZ_VHS" - ], - "pip": ["numpy<2"], - "install_type": "git-clone", - "description": "The TZOOTZ VHS Effect Node is designed for multimedia creators who want to blend digital precision with analog imperfection ↔️. Inspired by retro VHS aesthetics, this node lets you apply grain, color bleeding, saturation adjustments, and more, giving any image a touch of analog warmth and noise." - }, - { - "author": "jianzhichun", - "title": "ComfyUI-Easyai", - "id": "comfyui-easyai", - "reference": "https://github.com/jianzhichun/ComfyUI-Easyai", - "files": [ - "https://github.com/jianzhichun/ComfyUI-Easyai" - ], - "install_type": "git-clone", - "description": "ComfyUI-Easyai is a powerful extension for ComfyUI that enables users to share workflows and models to easyai." - }, - { - "author": "Isulion", - "title": "ComfyUI_Isulion Random Prompt Generator", - "reference": "https://github.com/Isulion/ComfyUI_Isulion", - "files": [ - "https://github.com/Isulion/ComfyUI_Isulion" - ], - "install_type": "git-clone", - "description": "ComfyUI Nodes that generate prompts and many more." - }, - { - "author": "sneccc", - "title": "comfyui-snek-nodes", - "reference": "https://github.com/sneccc/comfyui-snek-nodes", - "files": [ - "https://github.com/sneccc/comfyui-snek-nodes" - ], - "install_type": "git-clone", - "description": "NODES:Aesthetics, Aesthetics V2, Load AI Toolkit Latent Flux, Send_to_Eagle" - }, - { - "author": "theshubzworld", - "title": "OllamaKiller Node for ComfyUI", - "reference": "https://github.com/theshubzworld/ComfyUI-ollama_killer", - "files": [ - "https://github.com/theshubzworld/ComfyUI-ollama_killer" - ], - "install_type": "git-clone", - "description": "OllamaKiller is a utility node for ComfyUI designed to manage VRAM usage more efficiently by automatically terminating the ollama_llama_server.exe process. This is particularly useful for users with limited VRAM, allowing them to clear up memory after running models and improve workflow performance." - }, - { - "author": "theshubzworld", - "title": "SD3.5 Empty Latent Size Picker", - "reference": "https://github.com/theshubzworld/ComfyUI-SD3.5-Latent-Size-Picker", - "files": [ - "https://github.com/theshubzworld/ComfyUI-SD3.5-Latent-Size-Picker" - ], - "install_type": "git-clone", - "description": "A utility node for generating empty latent tensors in Stable Diffusion v3.5-compatible resolutions. This node allows for custom batch sizes, width/height overrides, and inverting aspect ratios, ensuring flexibility and compatibility in ComfyUI workflows." - }, - { - "author": "jeffrey2212", - "title": "Pony Character Prompt Picker for ComfyUI", - "reference": "https://github.com/jeffrey2212/ComfyUI-PonyCharacterPrompt", - "files": [ - "https://github.com/jeffrey2212/ComfyUI-PonyCharacterPrompt" - ], - "install_type": "git-clone", - "description": "The Pony Character Prompt Picker node reads an Excel file specified by the user, allows manual selection of a tab, and randomly picks a cell value from a specified column, starting from row 3 to the end. The selected value is output as a string to the next node in the ComfyUI workflow." - }, - { - "author": "Jonseed", - "title": "ComfyUI-Detail-Daemon", - "reference": "https://github.com/Jonseed/ComfyUI-Detail-Daemon", - "files": [ - "https://github.com/Jonseed/ComfyUI-Detail-Daemon" - ], - "install_type": "git-clone", - "description": "A port of muerrilla's [a/sd-webui-Detail-Daemon](https://github.com/muerrilla/sd-webui-detail-daemon) as a node for ComfyUI, to adjust sigmas that control detail." - }, - { - "author": "chris-arsenault", - "title": "ComfyUI-AharaNodes", - "reference": "https://github.com/chris-arsenault/ComfyUI-AharaNodes", - "files": [ - "https://github.com/chris-arsenault/ComfyUI-AharaNodes" - ], - "install_type": "git-clone", - "description": "NODES:Frame Segmenter, Get Frame at Index, Repeat Sampler Config, Patch Repeat Sampler Config (Model), Patch Repeat Sampler Config (Latent), KSampler (Simple Input)" - }, - { - "author": "mfg637", - "title": "ComfyUI-ScheduledGuider-Ext", - "reference": "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext", - "files": [ - "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext" - ], - "install_type": "git-clone", - "description": "NODES:ScheduledCFGGuider, PerpNegScheduledCFGGuider, CosineScheduler, Add zSNR Sigma max, InvertSigmas, ConcatSigmas, OffsetSigmas" - }, - { - "author": "changwook987", - "title": "ComfyUI-Small-Utility", - "reference": "https://github.com/changwook987/ComfyUI-Small-Utility", - "files": [ - "https://github.com/changwook987/ComfyUI-Small-Utility" - ], - "install_type": "git-clone", - "description": "Context menu extension for CLIPTextEncode (sort prompt), EmptyLatentImage (sdxl size selector)." - }, - { - "author": "OpalSky", - "title": "OpalSky Nodes", - "reference": "https://github.com/OpalSky-AI/OpalSky_Nodes", - "files": [ - "https://github.com/OpalSky-AI/OpalSky_Nodes" - ], - "install_type": "git-clone", - "description": "A set of custom nodes for ComfyUI that provides enhanced string manipulation and prompt variant generation functionality for AI workflows." - }, - { - "author": "JustinMatters", - "title": "ComfyUI JMNodes", - "id": "JMNodes", - "reference": "https://github.com/JustinMatters/comfyUI-JMNodes", - "files": [ - "https://github.com/JustinMatters/comfyUI-JMNodes" - ], - "install_type": "git-clone", - "description": "Provides nodes to support generation of all possible combinations of a set of prompts via boolean logic" - }, - { - "author": "lgldlk", - "title": "ComfyUI-PC-ding-dong", - "reference": "https://github.com/lgldlk/ComfyUI-PC-ding-dong", - "files": [ - "https://github.com/lgldlk/ComfyUI-PC-ding-dong" - ], - "install_type": "git-clone", - "description": "Just like when your pizza is ready and the oven goes 'Ding! 🍕', this plugin lets your ComfyUI notify you when your AI creations are done baking!\nA ComfyUI custom node that sends you a friendly 'ding-dong' notification when your workflows are fully cooked and ready to serve. No more staring at the screen waiting - let the AI kitchen tell you when dinner's ready! 👨‍🍳" - }, - { - "author": "raspie10032", - "title": "ComfyUI NAI Prompt Converter", - "reference": "https://github.com/raspie10032/ComfyUI_RS_NAI_Local_Prompt_converter", - "files": [ - "https://github.com/raspie10032/ComfyUI_RS_NAI_Local_Prompt_converter" - ], - "install_type": "git-clone", - "description": "A custom node extension for ComfyUI that enables conversion between NovelAI and ComfyUI prompt formats, along with extraction of NovelAI metadata from PNG images." - }, - { - "author": "Wakfull33", - "title": "ComfyUI-SaveImageCivitAI", - "reference": "https://github.com/Wakfull33/ComfyUI-SaveImageCivitAI", - "files": [ - "https://github.com/Wakfull33/ComfyUI-SaveImageCivitAI" - ], - "install_type": "git-clone", - "description": "A custom node allowing to save images with CIVITAI readable datas" - }, - { - "author": "waterminer", - "title": "ComfyUI-tagcomplete", - "reference": "https://github.com/waterminer/ComfyUI-tagcomplete", - "files": [ - "https://github.com/waterminer/ComfyUI-tagcomplete" - ], - "install_type": "git-clone", - "description": "This extension provides tag completion feature in textbox." - }, - { - "author": "grovebadger", - "title": "Negative Wildcard Processor Node for ComfyUI", - "id": "neg_wildcard_processor", - "reference": "https://github.com/GrvBdgr/comfyui-negativewildcardsprocessor", - "files": [ - "https://github.com/GrvBdgr/comfyui-negativewildcardsprocessor" - ], - "install_type": "git-clone", - "description": "Node to process negative wildcard tokens () and move them from the positive prompt to the negative." - }, - { - "author": "Apache0ne", - "title": "SambaNova", - "id": "SambaNovaAPI", - "reference": "https://github.com/Apache0ne/SambaNova", - "files": [ - "https://github.com/Apache0ne/SambaNova" - ], - "install_type": "git-clone", - "description": "Super Fast LLM's llama3.1-405B,70B,8B and more" - }, - { - "author": "catboxanon", - "title": "comfyui_stealth_pnginfo", - "reference": "https://github.com/catboxanon/comfyui_stealth_pnginfo", - "files": [ - "https://github.com/catboxanon/comfyui_stealth_pnginfo" - ], - "install_type": "git-clone", - "description": "Fork of [a/sd_webui_stealth_pnginfo](https://github.com/ashen-sensored/sd_webui_stealth_pnginfo) with ComfyUI support." - }, - { - "author": "dafeng012", - "title": "comfyui-imgmake", - "reference": "https://github.com/dafeng012/comfyui-imgmake", - "files": [ - "https://github.com/dafeng012/comfyui-imgmake" - ], - "install_type": "git-clone", - "description": "This extension integrates ebsynth_utility into comfyui, and I've written some of my own nodes for secondary use." - }, - { - "author": "zubenelakrab", - "title": "ComfyUI-ASV-Nodes Node", - "id": "ComfyUI-ASV-Nodes", - "reference": "https://github.com/zubenelakrab/ComfyUI-ASV-Nodes", - "files": [ - "https://github.com/zubenelakrab/ComfyUI-ASV-Nodes" - ], - "install_type": "git-clone", - "description": "ComfyUI-ASV-Nodes make prompting easier." - }, - { - "author": "zubenelakrab", - "title": "ComfyUI Neural Nodes", - "reference": "https://github.com/xobiomesh/ComfyUI_xObiomesh", - "files": [ - "https://github.com/xobiomesh/ComfyUI_xObiomesh" - ], - "install_type": "git-clone", - "description": "An advanced ComfyUI extension that enables multi-agent LLM conversations using Ollama models." - }, - { - "author": "KohakuBlueleaf", - "title": "TIPO-extension", - "reference": "https://github.com/KohakuBlueleaf/z-tipo-extension", - "files": [ - "https://github.com/KohakuBlueleaf/z-tipo-extension" - ], - "install_type": "git-clone", - "description": "A general extension to utilize TIPO or DanTagGen to do 'text-presampling' based on KGen library: [a/https://github.com/KohakuBlueleaf/KGen](https://github.com/KohakuBlueleaf/KGen)" - }, - { - "author": "hanoixan", - "title": "ComfyUI DataBeast", - "reference": "https://github.com/hanoixan/ComfyUI-DataBeast", - "files": [ - "https://github.com/hanoixan/ComfyUI-DataBeast" - ], - "install_type": "git-clone", - "description": "This extension provides convenience nodes for batch processing." - }, - { - "author": "HelloVision", - "title": "ComfyUI_HelloMeme", - "reference": "https://github.com/HelloVision/ComfyUI_HelloMeme", - "files": [ - "https://github.com/HelloVision/ComfyUI_HelloMeme" - ], - "install_type": "git-clone", - "description": "This repository is the official implementation of the [a/HelloMeme](https://arxiv.org/pdf/2410.22901) ComfyUI interface, featuring both image and video generation functionalities. Example workflow files can be found in the ComfyUI_HelloMeme/workflows directory. Test images and videos are saved in the ComfyUI_HelloMeme/examples directory. Below are screenshots of the interfaces for image and video generation.\nNOTE: 'HelloMeme: Integrating Spatial Knitting Attentions to Embed High-Level and Fidelity-Rich Conditions in Diffusion Models'" - }, - { - "author": "nkrcrft", - "title": "ComfyUI-RecraftAI", - "id": "recraftai", - "reference": "https://github.com/recraft-ai/ComfyUI-RecraftAI", - "files": [ - "https://github.com/recraft-ai/ComfyUI-RecraftAI" - ], - "install_type": "git-clone", - "description": "Recraft AI official ComfyUI custom nodes. Recraft V3 (code-named red_panda) is a text-to-image model with the ability to generate long texts, images in a wide list of styles, including custom brand styles." - }, - { - "author": "basix", - "title": "Basix Image Filters", - "id": "basix_image_filters", - "reference": "https://github.com/maludwig/basix_image_filters", - "files": [ - "https://github.com/maludwig/basix_image_filters" - ], - "install_type": "git-clone", - "description": "A handful of image filters for ComfyUI (darken, lighten, levels, saturate, hue)" - }, - { - "author": "Frost Ming", - "title": "Comfy-Pack", - "reference": "https://github.com/bentoml/comfy-pack", - "files": [ - "https://github.com/bentoml/comfy-pack" - ], - "description": "A comprehensive toolkit for standardizing, packaging and deploying ComfyUI workflows as reproducible environments and production-ready REST services", - "install_type": "git-clone" - }, - { - "author": "Poseidon-fan", - "title": "ComfyUI-RabbitMQ-Publisher", - "reference": "https://github.com/Poseidon-fan/ComfyUI-RabbitMQ-Publisher", - "files": [ - "https://github.com/Poseidon-fan/ComfyUI-RabbitMQ-Publisher" - ], - "description": "ComfyUI custom_node that publish output image to rabbit_mq", - "install_type": "git-clone" - }, - { - "author": "Blonicx", - "title": "ComfyUI-Rework-X", - "id": "rework-x", - "reference": "https://github.com/Blonicx/ComfyUI-X-Rework", - "files": [ - "https://github.com/Blonicx/ComfyUI-X-Rework" - ], - "install_type": "git-clone", - "description": "This is a plugin for ComfyUI that adds new Util Nodes and Nodes for easier image creation and sharing." - }, - { - "author": "1zhangyy1", - "title": "ComfyUI VIDU", - "reference": "https://github.com/1zhangyy1/comfyui-vidu-nodes", - "files": [ - "https://github.com/1zhangyy1/comfyui-vidu-nodes" - ], - "description": "This is a ComfyUI node package that integrates with VIDU API, supporting features such as text-to-video, image-to-video, character-to-video generation, and video super-resolution.", - "install_type": "git-clone" - }, - { - "author": "LevelPixel", - "title": "ComfyUI_LevelPixel", - "id": "levelpixel", - "reference": "https://github.com/LevelPixel/ComfyUI-LevelPixel", - "files": [ - "https://github.com/LevelPixel/ComfyUI-LevelPixel" - ], - "install_type": "git-clone", - "description": "Various nodes of the Level Pixel company. Includes convenient advanced nodes for working with images from folders; counting files in a folder; cleaning memory; tag filters. Model Unloader, LLM Unloader (GGUF unloaders), Free memory, Tag Filters, Tag Category Filters, Tag Choice Parser, File counter, Image Loader From Path (with counters), Image Remove Background based on RemBG." - }, - { - "author": "morino-kumasan", - "title": "comfyui-toml-prompt", - "reference": "https://github.com/morino-kumasan/comfyui-toml-prompt", - "files": [ - "https://github.com/morino-kumasan/comfyui-toml-prompt" - ], - "description": "Encode Prompt in TOML for ComfyUI.", - "install_type": "git-clone" - }, - { - "author": "wentao-uw", - "title": "ComfyUI template matching", - "reference": "https://github.com/wentao-uw/ComfyUI-template-matching", - "files": [ - "https://github.com/wentao-uw/ComfyUI-template-matching" - ], - "description": "This project is a ComfyUI version of [a/https://github.com/cozheyuanzhangde/Invariant-TemplateMatching](https://github.com/cozheyuanzhangde/Invariant-TemplateMatching).", - "install_type": "git-clone" - }, - { - "author": "w00dycomfyuirun", - "title": "ComfyUI_Appstore", - "id": "ComfyUI_Appstore", - "reference": "https://github.com/ronaldzgithub/ComfyUI_Appstore", - "files": [ - "https://github.com/ronaldzgithub/ComfyUI_Appstore" - ], - "install_type": "git-clone", - "description": "ComfyUI_Appstore, a tool that converts ComfyUI workflows into web apps on huaxiaobao.net with one click, and supports payments, like ComfyUI_Bxb (Bxb) does. Providing a way for the comfyui authors to get profit from." - }, - { - "author": "kycg", - "title": "Kw_Json_Lora_CivitAIDownloader", - "reference": "https://github.com/kycg/comfyui-Lora-auto-downloader", - "files": [ - "https://github.com/kycg/comfyui-Lora-auto-downloader" - ], - "description": "This tool allows you to download models from CivitAI based on a JSON configuration that defines LORA and checkpoint models. It uses token-based authentication to download files from specified URLs and saves them to specified directories. based on CivitAIDownloader", - "install_type": "git-clone" - }, - { - "author": "VangengLab", - "title": "ComfyUI-LivePortrait_v2", - "reference": "https://github.com/VangengLab/ComfyUI-LivePortrait_v2", - "files": [ - "https://github.com/VangengLab/ComfyUI-LivePortrait_v2" - ], - "install_type": "git-clone", - "description": "We developed a custom_node for Liveportrait_v2 that enables flexible use on Comfyui to drive animal image-based emoji generation from videos." - }, - { - "author": "VangengLab", - "title": "ComfyUI-LivePortrait_v3", - "reference": "https://github.com/VangengLab/ComfyUI-LivePortrait_v3", - "files": [ - "https://github.com/VangengLab/ComfyUI-LivePortrait_v3" - ], - "install_type": "git-clone", - "description": "We developed a custom_node for Liveportrait_v3 that enables flexible use on Comfyui to drive image-based emoji generation from photos." - }, - { - "author": "wTechArtist", - "title": "ComfyUI-StableDelight-weiweiliang", - "reference": "https://github.com/wTechArtist/ComfyUI-StableDelight-weiweiliang", - "files": [ - "https://github.com/wTechArtist/ComfyUI-StableDelight-weiweiliang" - ], - "install_type": "git-clone", - "description": "Nodes:StableDelight-weiweiliang" - }, - { - "author": "Comflowy", - "title": "Comflowy's Custom Nodes", - "id": "comflowy", - "reference": "https://github.com/6174/comflowy-nodes", - "files": [ - "https://github.com/6174/comflowy-nodes" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI by Comflowy." - }, - { - "author": "akspa0", - "title": "ComfyUI-FapMixPlus", - "reference": "https://github.com/akspa0/ComfyUI-FapMixPlus", - "files": [ - "https://github.com/akspa0/ComfyUI-FapMixPlus" - ], - "install_type": "git-clone", - "description": "This is an audio processing script that applies soft limiting, optional loudness normalization, and optional slicing for transcription. It can also produce stereo-mixed outputs with optional audio appended to the end. The script organizes processed files into structured folders with sanitized filenames and retains original timestamps for continuity." - }, - { - "author": "troyxmccall", - "title": "ComfyUI-ScaleToTargetMegapixels", - "reference": "https://github.com/troyxmccall/ComfyUI-ScaleToTargetMegapixels", - "files": [ - "https://github.com/troyxmccall/ComfyUI-ScaleToTargetMegapixels" - ], - "install_type": "git-clone", - "description": "NODES:ScaleToTargetMegapixels." - }, - { - "author": "neph1", - "title": "comfyui-smooth-step-lora-loader", - "reference": "https://github.com/neph1/comfyui-smooth-step-lora-loader", - "files": [ - "https://github.com/neph1/comfyui-smooth-step-lora-loader" - ], - "install_type": "git-clone", - "description": "This custom node provides a smooth step function that normalizes LoRA values by enhancing elements above the mean while reducing those below it. Users can independently control both the LoRA strength and smooth step intensity to fine-tune their results, though the effectiveness may vary between different seeds and LoRA types." - }, - { - "author": "ImmortalPie", - "title": "PonySwitch Node", - "reference": "https://github.com/ImmortalPie/ComfyUI-PonySwitch", - "files": [ - "https://github.com/ImmortalPie/ComfyUI-PonySwitch" - ], - "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": "Isi-dev", - "title": "ComfyUI-Animation_Nodes_and_Workflows", - "id": "ComfyUI-Animation_Nodes_and_Workflows", - "reference": "https://github.com/Isi-dev/ComfyUI-Animation_Nodes_and_Workflows", - "files": [ - "https://github.com/Isi-dev/ComfyUI-Animation_Nodes_and_Workflows" - ], - "install_type": "git-clone", - "description": "These are nodes and workflows that can facilitate the creation of animations and video compilations." - }, - { - "author": "LatentSpaceDirective", - "title": "ComfyUI-Texturaizer", - "id": "texturaizer", - "reference": "https://github.com/LatentSpaceDirective/ComfyUI-Texturaizer", - "files": [ - "https://github.com/LatentSpaceDirective/ComfyUI-Texturaizer" - ], - "install_type": "git-clone", - "description": "These are companion nodes for Texturaizer, a Blender plugin that connects complex 3D data to ComfyUI. https://texturaizer.com" - }, - { - "author": "Lasse Lauwerys", - "title": "Touch screen gesture support", - "reference": "https://github.com/Iemand005/ComfyUI-Touch-Gestures", - "files": [ - "https://github.com/Iemand005/ComfyUI-Touch-Gestures" - ], - "install_type": "git-clone", - "description": "Implements proper multitouch zooming and panning into ComfyUI to make it more usable on mobile devices." - }, - { - "author": "phazei", - "title": "Prompt Stash Saver Node for ComfyUI", - "id": "stash-saver", - "reference": "https://github.com/phazei/ConfyUI-node-prompt-stash-saver", - "files": [ - "https://github.com/phazei/ConfyUI-node-prompt-stash-saver" - ], - "install_type": "git-clone", - "description": "Prompt Stash is a simple plugin for ComfyUI that lets you save your prompts and organize them into multiple lists. It also features a pass-through functionality, so you can hook it up to an LLM node (or any text outputting node) and capture its outputs directly." - }, - { - "author": "Doctor Diffusion", - "title": "Schedulizer", - "id": "schedulizer", - "reference": "https://github.com/DoctorDiffusion/ComfyUI-Schedulizer", - "files": [ - "https://github.com/DoctorDiffusion/ComfyUI-Schedulizer" - ], - "install_type": "git-clone", - "description": "Nodes:Whisper Node, Prompt Schedule Converter. Convert song lyrics into a useable prompt travel schedule within comfyUI. Includes whisper large-v2." - }, - { - "author": "Doctor Diffusion", - "title": "MediaMixer", - "id": "mediamixer", - "reference": "https://github.com/DoctorDiffusion/ComfyUI-MediaMixer", - "files": [ - "https://github.com/DoctorDiffusion/ComfyUI-MediaMixer" - ], - "install_type": "git-clone", - "description": "A node suite for downloading audio and video from youtube as we all sevral useful video utilits such as a final frame selector and a node that merges two videos into one." - }, - { - "author": "Doctor Diffusion", - "title": "ComfyUI-SnakeOil", - "reference": "https://github.com/DoctorDiffusion/ComfyUI-SnakeOil", - "files": [ - "https://github.com/DoctorDiffusion/ComfyUI-SnakeOil" - ], - "install_type": "git-clone", - "description": "Use [a/Doctor Diffusion's snake oil nLoRAs](https://civitai.com/models/987843) as well as [a/other negative LoRAs](https://civitai.com/models/186617/doctor-diffusions-negative-xl-lora) easily within ComfyUI." - }, - { - "author": "Doctor Diffusion", - "title": "ComfyUI BEN - Background Erase Network", - "reference": "https://github.com/DoctorDiffusion/ComfyUI-BEN", - "files": [ - "https://github.com/DoctorDiffusion/ComfyUI-BEN" - ], - "install_type": "git-clone", - "description": "Remove backgrounds from images with [a/BEN](https://huggingface.co/PramaLLC/BEN) in ComfyUI" - }, - { - "author": "Doctor Diffusion", - "title": "ComfyUI-basic-pitch", - "reference": "https://github.com/DoctorDiffusion/ComfyUI-basic-pitch", - "files": [ - "https://github.com/DoctorDiffusion/ComfyUI-basic-pitch" - ], - "install_type": "git-clone", - "description": "Audio to midi functionality within ComfyUI" - }, - { - "author": "robtl2", - "title": "ComfyUI-ComfyBridge", - "reference": "https://github.com/robtl2/ComfyUI-ComfyBridge", - "files": [ - "https://github.com/robtl2/ComfyUI-ComfyBridge" - ], - "install_type": "git-clone", - "description": "A socket service that helps third-party DCC software maintain long-term image exchange with comfyUI." - }, - { - "author": "bombax-xiaoice", - "title": "ComfyUI-MagicDance", - "reference": "https://github.com/bombax-xiaoice/ComfyUI-MagicDance", - "files": [ - "https://github.com/bombax-xiaoice/ComfyUI-MagicDance" - ], - "install_type": "git-clone", - "description": "ComfyUI supports over [a/Boese0601/MagicDance](https://github.com/Boese0601/MagicDance)." - }, - { - "author": "bombax-xiaoice", - "title": "ComfyUI-Allegro", - "reference": "https://github.com/bombax-xiaoice/ComfyUI-Allegro", - "files": [ - "https://github.com/bombax-xiaoice/ComfyUI-Allegro" - ], - "install_type": "git-clone", - "description": "ComfyUI supports over [a/rhymes-ai/Allegro](https://huggingface.co/rhymes-ai/Allegro), which uses text prompt to generate short video in relatively high quality, especially comparing to other open source solutions available for now." - }, - { - "author": "bombax-xiaoice", - "title": "ComfyUI-Open-Sora-I2V", - "reference": "https://github.com/bombax-xiaoice/ComfyUI-Open-Sora-I2V", - "files": [ - "https://github.com/bombax-xiaoice/ComfyUI-Open-Sora-I2V" - ], - "install_type": "git-clone", - "description": "Another comfy implementation for the short video generation project hpcaitech/Open-Sora, supporting latest V2 and V3 models as well as image to video functions, etc." - }, - { - "author": "bombax-xiaoice", - "title": "ComfyUI-OpenSoraPlan", - "reference": "https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan", - "files": [ - "https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan" - ], - "install_type": "git-clone", - "description": "Another comfy implementation for the short video generation project PKU-YuanGroup/Open-Sora-Plan, supporting latest 1.3.0 and 1.2.0 and image to video feature, etc." - }, - { - "author": "chenbaiyujason", - "title": "ComfyUI-SCStepFun", - "reference": "https://github.com/chenbaiyujason/ComfyUI_StepFun", - "files": [ - "https://github.com/chenbaiyujason/ComfyUI_StepFun" - ], - "install_type": "git-clone", - "description": "To use stepfun's library, you need an official api that supports multimodal inputs such as video and pictures [a/https://platform.stepfun.com/request-restriction](https://platform.stepfun.com/request-restriction)" - }, - { - "author": "yondonfu", - "title": "ComfyUI-Background-Edit", - "id": "comfyui-background-edit", - "reference": "https://github.com/yondonfu/ComfyUI-Background-Edit", - "files": [ - "https://github.com/yondonfu/ComfyUI-Background-Edit" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for editing background of images/videos with CUDA acceleration support." - }, - { - "author": "yondonfu", - "title": "ComfyUI-Torch-Compile", - "id": "comfyui-torch-compile", - "reference": "https://github.com/yondonfu/ComfyUI-Torch-Compile", - "files": [ - "https://github.com/yondonfu/ComfyUI-Torch-Compile" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for torch.compile." - }, - { - "author": "GorillaFrame", - "title": "GFrbmg2", - "reference": "https://github.com/gorillaframeai/GF_nodes", - "files": [ - "https://github.com/gorillaframeai/GF_nodes" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI provides advanced background removal capabilities using the briaai/RMBG-2.0 model. It is designed to seamlessly integrate into the ComfyUI environment, offering users a powerful tool for image processing tasks." - }, - { - "author": "amaozhao", - "title": "ComfyUI_DeployCash", - "id": "ComfyUI_DeployCash", - "reference": "https://github.com/jacklukai/ComfyUI_DeployCash", - "files": [ - "https://github.com/jacklukai/ComfyUI_DeployCash" - ], - "install_type": "git-clone", - "description": "DeployCash, a tool that converts workflows into WeChat and H5 with one click, and supports payments." - }, - { - "author": "zer0thgear", - "title": "zer0 Comfy Utilities", - "id": "zer0-comfy-utils", - "reference": "https://github.com/zer0thgear/zer0-comfy-utils", - "files": [ - "https://github.com/zer0thgear/zer0-comfy-utils" - ], - "install_type": "git-clone", - "description": "Collection of personal nodes including tavern card-related nodes, prompt manipulation related utilities, and a node to combine a list of strings back into one string." - }, - { - "author": "fallingmeteorite", - "title": "nsfw-image-check-comfyui", - "reference": "https://github.com/fallingmeteorite/nsfw-image-check-comfyui", - "files": [ - "https://github.com/fallingmeteorite/nsfw-image-check-comfyui" - ], - "install_type": "git-clone", - "description": "NODES:Nsfw Image Check Node" - }, - { - "author": "VikramxD", - "title": "VEnhancer ComfyUI Extension", - "reference": "https://github.com/VikramxD/VEnhancer-ComfyUI-Wrapper", - "files": [ - "https://github.com/VikramxD/VEnhancer-ComfyUI-Wrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI workflow for VEnhancer Inference" - }, - { - "author": "BIMer-99", - "title": "Comfyui_Hunyuan3D_EX", - "reference": "https://github.com/BIMer-99/Comfyui_Hunyuan3D_EX", - "files": [ - "https://github.com/BIMer-99/Comfyui_Hunyuan3D_EX" - ], - "install_type": "git-clone", - "description": "This is a custom node designed to simplify the use of Hunyuan3D in ComfyUI" - }, - { - "author": "vuongminh1907", - "title": "ComfyUI_ZenID", - "reference": "https://github.com/vuongminh1907/ComfyUI_ZenID", - "files": [ - "https://github.com/vuongminh1907/ComfyUI_ZenID" - ], - "install_type": "git-clone", - "description": "Inspired by [a/InstantID](https://github.com/instantX-research/InstantID) and [a/InstantID Comfy](https://github.com/cubiq/ComfyUI_InstantID)\nThis ZenID Node has been refactored for specialized tasks like Face Swap" - }, - { - "author": "yorkane", - "title": "ComfyUI-KYNode", - "reference": "https://github.com/yorkane/ComfyUI-KYNode", - "files": [ - "https://github.com/yorkane/ComfyUI-KYNode" - ], - "install_type": "git-clone", - "description": "NODES:Advanced Lying Sigma Sampler, Save Image To target Path" - }, - { - "author": "c0ffymachyne", - "title": "ComfyUI Signal Processing", - "reference": "https://github.com/c0ffymachyne/ComfyUI_SignalProcessing", - "files": [ - "https://github.com/c0ffymachyne/ComfyUI_SignalProcessing" - ], - "install_type": "git-clone", - "description": "Audio processing nodes for comfyui." - }, - { - "author": "c0ffymachyne", - "title": "Bytebeat Synthesizer: Composing with Operators", - "reference": "https://github.com/c0ffymachyne/ComfyUI_BeatByte", - "files": [ - "https://github.com/c0ffymachyne/ComfyUI_BeatByte" - ], - "install_type": "git-clone", - "description": "Bytebeat is like composing music with the tools of a programmer’s toolkit. Instead of piano keys, you have operators like >>, |, and &. It’s like giving your CPU a guitar and letting it shred! 🤘" - }, - { - "author": "liuqianhonga", - "title": "ComfyUI-Image-Compressor", - "reference": "https://github.com/liuqianhonga/ComfyUI-Image-Compressor", - "files": [ - "https://github.com/liuqianhonga/ComfyUI-Image-Compressor" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node for image compression that supports multiple compression formats and parameter adjustments." - }, - { - "author": "liuqianhonga", - "title": "ComfyUI-Html2Image", - "reference": "https://github.com/liuqianhonga/ComfyUI-Html2Image", - "files": [ - "https://github.com/liuqianhonga/ComfyUI-Html2Image" - ], - "install_type": "git-clone", - "description": "NODES: Webpage Screenshot, Camera Watermark, Template To Image" - }, - { - "author": "liuqianhonga", - "title": "ComfyUI-String-Helper", - "reference": "https://github.com/liuqianhonga/ComfyUI-String-Helper", - "files": [ - "https://github.com/liuqianhonga/ComfyUI-String-Helper" - ], - "install_type": "git-clone", - "description": "NODES: String Formatter, String List" - }, - { - "author": "liuqianhonga", - "title": "ComfyUI-QHNodes", - "reference": "https://github.com/liuqianhonga/ComfyUI-QHNodes", - "files": [ - "https://github.com/liuqianhonga/ComfyUI-QHNodes" - ], - "install_type": "git-clone", - "description": "A custom node collection developed for ComfyUI, offering preset dimensions for Latent, loading LoRA from folders, and integrating multiple commonly used custom nodes." - }, - { - "author": "duhaifeng", - "title": "ComfyUI-BiRefNet-lite", - "reference": "https://github.com/rubi-du/ComfyUI-BiRefNet-Super", - "files": [ - "https://github.com/rubi-du/ComfyUI-BiRefNet-Super" - ], - "install_type": "git-clone", - "description": "This repository packages the latest BiRefNet model as a ComfyUI node for use, supporting chunked loading on both CPU and GPU, as well as model caching features." - }, - { - "author": "duhaifeng", - "title": "ComfyUI-Flux-Inpainting", - "reference": "https://github.com/rubi-du/ComfyUI-Flux-Inpainting", - "files": [ - "https://github.com/rubi-du/ComfyUI-Flux-Inpainting" - ], - "install_type": "git-clone", - "description": "This node wraps the flux fill model as ComfyUI nodes. Use NF4 flux fill model, support for inpainting and outpainting image. Compared to the flux fill dev model, these nodes can use the flux fill model to perform inpainting and outpainting work under lower VRM conditions." - }, - { - "author": "duhaifeng", - "title": "ComfyUI-ICC-nodes", - "reference": "https://github.com/rubi-du/ComfyUI-ICC-nodes", - "files": [ - "https://github.com/rubi-du/ComfyUI-ICC-nodes" - ], - "install_type": "git-clone", - "description": "This repository support processing Comfyui image nodes with ICC profile, load and save images with ICC profile" - }, - { - "author": "vkff5833", - "title": "ComfyUI-PromptConverter", - "reference": "https://github.com/vkff5833/ComfyUI-PromptConverter", - "files": [ - "https://github.com/vkff5833/ComfyUI-PromptConverter" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node that converts prompts between different AI image generation models." - }, - { - "author": "yichengup", - "title": "Comfyui-Ycanvas", - "reference": "https://github.com/yichengup/Comfyui-Ycanvas", - "files": [ - "https://github.com/yichengup/Comfyui-Ycanvas" - ], - "install_type": "git-clone", - "description": "NODES:Canvas View" - }, - { - "author": "yichengup", - "title": "Comfyui_Flux_Style_Adjust (Redux)", - "reference": "https://github.com/yichengup/Comfyui_Flux_Style_Adjust", - "files": [ - "https://github.com/yichengup/Comfyui_Flux_Style_Adjust" - ], - "install_type": "git-clone", - "description": "StyleModelApply adds more controls" - }, - { - "author": "yichengup", - "title": "Comfyui_Redux_Advanced", - "reference": "https://github.com/yichengup/Comfyui_Redux_Advanced", - "files": [ - "https://github.com/yichengup/Comfyui_Redux_Advanced" - ], - "install_type": "git-clone", - "description": "Redux style adds more controls" - }, - { - "author": "yichengup", - "title": "Comfyui-Deepseek", - "reference": "https://github.com/yichengup/Comfyui-Deepseek", - "files": [ - "https://github.com/yichengup/Comfyui-Deepseek" - ], - "install_type": "git-clone", - "description": "About DeepSeek Chat API\nGo here to register and get the api-key [a/https://platform.deepseek.com/](https://platform.deepseek.com/) Then enter api_key in config.json" - }, - { - "author": "Horizon Team", - "title": "ComfyUI_FluxMod", - "id": "fluxmod", - "reference": "https://github.com/lodestone-rock/ComfyUI_FluxMod", - "files": [ - "https://github.com/lodestone-rock/ComfyUI_FluxMod" - ], - "install_type": "git-clone", - "description": "A modulation layer addon for Flux that reduces model size to 8.8B parameters without significant quality loss." - }, - { - "author": "lth", - "title": "Comfyui_three_js", - "id": "lth", - "reference": "https://github.com/lo-th/Comfyui_three_js", - "files": [ - "https://github.com/lo-th/Comfyui_three_js" - ], - "install_type": "git-clone", - "description": "Use power of three.js in 3d view on comfyui." - }, - { - "author": "AIPOQUE", - "title": "ComfyUI-APQNodes", - "reference": "https://github.com/AIPOQUE/ComfyUI-APQNodes", - "files": [ - "https://github.com/AIPOQUE/ComfyUI-APQNodes" - ], - "install_type": "git-clone", - "description": "Without fine-tuning, FLUX.1 Dev model cannot understand exact color codes. However, it is known that FLUX.1 Dev can repeatedly produce certain colors with certain prompt(color name). Fortunately, on CIVITAI, [a/“novuschroma” shared 155 pre-tested color names](https://civitai.com/models/879997/color-wildcards-for-flux-and-sdxl) that FLUX.1 Dev can handle. Thanks to his resource, color palette consists exclusively of 155 colors can be configured. ‘ColorPalette’ node from ComfyUI APQNodes converts input hex color code to the most similar color name(from pre-tested 155 color names) of which FLUX.1 Dev is aware." - }, - { - "author": "arcum42", - "title": "Sage Utils", - "reference": "https://github.com/arcum42/ComfyUI_SageUtils", - "files": [ - "https://github.com/arcum42/ComfyUI_SageUtils" - ], - "install_type": "git-clone", - "description": "A collection of custom nodes by arcum42. Currently focused on saving metadata in images so that Civitai picks it up, pulling Civitai information, and misc helper nodes." - }, - { - "author": "Tomudo", - "title": "ComfyUI-ascii-art", - "id": "comfyui-ascii-art", - "reference": "https://github.com/tomudo/ComfyUI-ascii-art", - "files": [ - "https://github.com/tomudo/ComfyUI-ascii-art" - ], - "install_type": "git-clone", - "description": "This is a custom node to convert image to ascii art string." - }, - { - "author": "tuohe", - "title": "ComfyUI-HaiperAI-API", - "id": "haiperai-api", - "reference": "https://github.com/Haiper-ai/ComfyUI-HaiperAI-API", - "files": [ - "https://github.com/Haiper-ai/ComfyUI-HaiperAI-API" - ], - "install_type": "git-clone", - "description": "Haiper API official ComfyUI custom node." - }, - { - "author": "tungdop2", - "title": "Face Restorer for ComfyUI", - "id": "face_restorer", - "reference": "https://github.com/tungdop2/Comfyui_face_restorer", - "files": [ - "https://github.com/tungdop2/Comfyui_face_restorer" - ], - "install_type": "git-clone", - "description": "The face restore node for ComfyUI, based on RestoreFormer" - }, - { - "author": "tungdop2", - "title": "Joy Caption Alpha Two for ComfyUI", - "id": "joy-captioner-alpha-two", - "reference": "https://github.com/tungdop2/Comfyui_joy-caption-alpha-two", - "files": [ - "https://github.com/tungdop2/Comfyui_joy-caption-alpha-two" - ], - "install_type": "git-clone", - "description": "The Joy Caption Alpha Two node for ComfyUI, based on https://huggingface.co/spaces/fancyfeast/joy-caption-alpha-two" - }, - { - "author": "pschroedl", - "title": "ComfyUI-SAM2-Realtime", - "reference": "https://github.com/pschroedl/ComfyUI-SAM2-Realtime", - "files": [ - "https://github.com/pschroedl/ComfyUI-SAM2-Realtime" - ], - "install_type": "git-clone", - "description": "NODES:(Down)Load SAM2-Realtime Model, Sam2RealtimeSegmentation" - }, - { - "author": "Shakker-Labs", - "title": "ComfyUI-IPAdapter-Flux", - "reference": "https://github.com/Shakker-Labs/ComfyUI-IPAdapter-Flux", - "files": [ - "https://github.com/Shakker-Labs/ComfyUI-IPAdapter-Flux" - ], - "install_type": "git-clone", - "description": "NODES:Load IPAdapter Flux Model, Apply IPAdapter Flux Model" - }, - { - "author": "iamandeepsandhu", - "title": "NSFW Check for ComfyUI", - "reference": "https://github.com/iamandeepsandhu/ComfyUI-NSFW-Check", - "files": [ - "https://github.com/iamandeepsandhu/ComfyUI-NSFW-Check" - ], - "install_type": "git-clone", - "description": "This project is designed to detect whether images generated by ComfyUI are Not Safe For Work (NSFW). It uses a machine learning model to classify images as either safe or not safe for work and returns a confidence score for the NSFW classification." - }, - { - "author": "Black-Lioness", - "title": "ComfyUI-PromptUtils", - "reference": "https://github.com/Black-Lioness/ComfyUI-PromptUtils", - "files": [ - "https://github.com/Black-Lioness/ComfyUI-PromptUtils" - ], - "install_type": "git-clone", - "description": "A set of ComfyUI nodes designed to enhance your workflow with realistic filename generation and keyword generation." - }, - { - "author": "SparknightLLC", - "title": "ComfyUI-LatentClamp", - "reference": "https://github.com/SparknightLLC/ComfyUI-LatentClamp", - "files": [ - "https://github.com/SparknightLLC/ComfyUI-LatentClamp" - ], - "install_type": "git-clone", - "description": "A node for ComfyUI that modifies the values in the samples input that fall outside of a min and max range using a multiplier." - }, - { - "author": "SparknightLLC", - "title": "ComfyUI-MaskArbiter", - "reference": "https://github.com/SparknightLLC/ComfyUI-MaskArbiter", - "files": [ - "https://github.com/SparknightLLC/ComfyUI-MaskArbiter" - ], - "install_type": "git-clone", - "description": "A node for ComfyUI that takes a list of masks and returns a single mask based on your criteria." - }, - { - "author": "SparknightLLC", - "title": "ComfyUI-ConditionalInterrupt", - "reference": "https://github.com/SparknightLLC/ComfyUI-ConditionalInterrupt", - "files": [ - "https://github.com/SparknightLLC/ComfyUI-ConditionalInterrupt" - ], - "install_type": "git-clone", - "description": "A node for ComfyUI that terminates the workflow processing if 'proceed' is set to False. More convenient than manually bypassing a bunch of nodes.\nThis is a restructured version of the 'SRL Conditional Interrupt' node from the [a/srl-nodes](https://github.com/seanlynch/srl-nodes) pack." - }, - { - "author": "lightricks", - "title": "ComfyUI-LTXVideo", - "id": "ltxv", - "reference": "https://github.com/Lightricks/ComfyUI-LTXVideo", - "files": [ - "https://github.com/Lightricks/ComfyUI-LTXVideo" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for LTXVideo model." - }, - { - "author": "Kai Duehrkop", - "title": "Advanced Reflux control", - "id": "advancedRefluxControl", - "reference": "https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl", - "files": [ - "https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl" - ], - "install_type": "git-clone", - "description": "This extension offers a new Apply-Style node for Redux that allows for changing the influence of the conditioning image on the final outcome. This effectively allows for changing the style or content of an image using a prompt while using Redux." - }, - { - "author": "ramesh-x90", - "title": "ComfyUI_pyannote", - "reference": "https://github.com/ramesh-x90/ComfyUI_pyannote", - "files": [ - "https://github.com/ramesh-x90/ComfyUI_pyannote" - ], - "install_type": "git-clone", - "description": "This repository provides custom nodes for ComfyUI designed to process audio files, performing speaker diarization and integrating speaker data into whisper-transcribed segments. These nodes utilize the PyAnnote library for speaker identification and pandas for efficient data handling." - }, - { - "author": "wu12023", - "title": "ComfyUI-Image-Evaluation", - "reference": "https://github.com/wu12023/ComfyUI-Image-Evaluation", - "files": [ - "https://github.com/wu12023/ComfyUI-Image-Evaluation" - ], - "install_type": "git-clone", - "description": "An extension to ComfyUI that evaluates images using multiple models." - }, - { - "author": "windfancy", - "title": "zsq_prompt", - "reference": "https://github.com/windfancy/zsq_prompt", - "files": [ - "https://github.com/windfancy/zsq_prompt" - ], - "install_type": "git-clone", - "description": "NODES: PromptStyler, PromptLatent, PromptCLIPEncode, PromptSelector" - }, - { - "author": "exectails", - "title": "Info Utils", - "id": "et_infoutils", - "reference": "https://github.com/exectails/comfyui-et_infoutils", - "files": [ - "https://github.com/exectails/comfyui-et_infoutils" - ], - "install_type": "git-clone", - "description": "Nodes that facilitate simpler information providing and gathering, such as Text Box, Show Data and Token Counter nodes." - }, - { - "author": "exectails", - "title": "String Utils", - "id": "et_stringutils", - "reference": "https://github.com/exectails/comfyui-et_stringutils", - "files": [ - "https://github.com/exectails/comfyui-et_stringutils" - ], - "install_type": "git-clone", - "description": "Nodes dedicated to the analysis and transformation of text strings, such as for formatting and conversions between types." - }, - { - "author": "exectails", - "title": "Dynamic Prompts", - "id": "et_dynamicprompts", - "reference": "https://github.com/exectails/comfyui-et_dynamicprompts", - "files": [ - "https://github.com/exectails/comfyui-et_dynamicprompts" - ], - "install_type": "git-clone", - "description": "Nodes that implement functionality similar to the Dynamic Prompts extension for A1111." - }, - { - "author": "Lasse Lauwerys", - "title": "Touchpad and trackpad gesture support", - "reference": "https://github.com/Iemand005/ComfyUI-Touchpad-Gestures", - "files": [ - "https://github.com/Iemand005/ComfyUI-Touchpad-Gestures" - ], - "install_type": "git-clone", - "description": "Implements proper touchpad zooming and panning into ComfyUI to make it more usable on laptops." - }, - { - "author": "SleeeepyZhou", - "title": "CNtranslator", - "id": "cn-translator", - "reference": "https://github.com/SleeeepyZhou/ComfyUI-CNtranslator", - "files": [ - "https://github.com/SleeeepyZhou/ComfyUI-CNtranslator" - ], - "install_type": "git-clone", - "description": "A translation node for users in Chinese Mainland. (Because of the network firewall in Chinese Mainland, many translation APIs cannot be used normally.)" - }, - { - "author": "flycarl", - "title": "ComfyUI-Pixelate", - "reference": "https://github.com/flycarl/ComfyUI-Pixelate", - "files": [ - "https://github.com/flycarl/ComfyUI-Pixelate" - ], - "install_type": "git-clone", - "description": "[a/sd-webui-pixelart](https://github.com/mrreplicart/sd-webui-pixelart) are referenced by many webui users, this node is mean to use it in ComfyUI." - }, - { - "author": "Alvaroeai", - "title": "ComfyUI-Text2Json", - "reference": "https://github.com/Alvaroeai/ComfyUI-Text2Json", - "files": [ - "https://github.com/Alvaroeai/ComfyUI-Text2Json" - ], - "install_type": "git-clone", - "description": "This repository contains a custom node for ComfyUI that converts text into a JSON object. The node is designed to be user-friendly and supports multi-line JSON input." - }, - { - "author": "dymokomi", - "title": "comfyui_dygen", - "reference": "https://github.com/dymokomi/comfyui_dygen", - "files": [ - "https://github.com/dymokomi/comfyui_dygen" - ], - "install_type": "git-clone", - "description": "NODES: DY Image Quantize, DY Image Cluster, DY Image Palette, DY Image Masks, Image List to Grid, DY Image Scaler, DY Random Lines, DY Adaptive Color Lines, DY Adaptive Color Circles, DY Adaptive Color Rectangles, DY Binary Pattern Stamper" - }, - { - "author": "bananasss00", - "title": "ComfyUI-flux_fill_patcher", - "reference": "https://github.com/bananasss00/ComfyUI-flux_fill_patcher", - "files": [ - "https://github.com/bananasss00/ComfyUI-flux_fill_patcher" - ], - "install_type": "git-clone", - "description": "flux patcher for Fill Flux.Dev lora [a/https://civitai.com/models/981615/fluxfill-inpaint-lora](https://civitai.com/models/981615/fluxfill-inpaint-lora)" - }, - { - "author": "Yuan-ManX", - "title": "ComfyUI-SoundHub", - "reference": "https://github.com/Yuan-ManX/ComfyUI-SoundHub", - "files": [ - "https://github.com/Yuan-ManX/ComfyUI-SoundHub" - ], - "install_type": "git-clone", - "description": "ComfyUI-SoundHub is a collection of audio processing nodes designed for ComfyUI, enabling seamless audio processing and generation within your ComfyUI workflows." - }, - { - "author": "Yuan-ManX", - "title": "ComfyUI-LLaMA-Mesh", - "reference": "https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh", - "files": [ - "https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for LLaMA-Mesh model." - }, - { - "author": "Starnodes2024", - "title": "ComfyUI_StarNodes", - "reference": "https://github.com/Starnodes2024/ComfyUI_StarNodes", - "files": [ - "https://github.com/Starnodes2024/ComfyUI_StarNodes" - ], - "install_type": "git-clone", - "description": "NODES: StarNode Startsettings for Flux and SD, Smplers for Flux and SD, Detail Deamon, Wildcards and more Helper Nodes" - }, - { - "author": "motivated3", - "title": "ComfyUI MiaoShua Creator", - "id": "comfyui-shua-creator", - "reference": "https://github.com/motivated3/comfyui-shua-creator", - "files": [ - "https://github.com/motivated3/comfyui-shua-creator" - ], - "install_type": "git-clone", - "description": "With the MiaoShua creator's end, you can use this plugin to upload debugged workflows for consumer end users to use." - }, - { - "author": "takemetosiberia", - "title": "SAMURAI Nodes for ComfyUI", - "reference": "https://github.com/takemetosiberia/ComfyUI-SAMURAI--SAM2-", - "files": [ - "https://github.com/takemetosiberia/ComfyUI-SAMURAI--SAM2-" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for video object segmentation using [a/SAMURAI](https://github.com/yangchris11/samurai) model." - }, - { - "author": "purpen", - "title": "AIRedoon", - "reference": "https://github.com/purpen/ComfyUI-AIRedoon", - "files": [ - "https://github.com/purpen/ComfyUI-AIRedoon" - ], - "install_type": "git-clone", - "description": "NODES:AIRedoon Qwen Model Loader, AIRedoon Translator, AIRedoon Image Caption, AIRedoon LoRA Stack, AIRedoon Image RGBA2RGB, AIRedoon Preview Text, AIRedoon Save Text, ...\nRedoonAi Tool Kit" - }, - { - "author": "purpen", - "title": "ComfyUI-ImageTagger", - "reference": "https://github.com/purpen/ComfyUI-ImageTagger", - "files": [ - "https://github.com/purpen/ComfyUI-ImageTagger" - ], - "install_type": "git-clone", - "description": "NODES:AIRedoon Image Caption.\nAnalyze image tagger" - }, - { - "author": "itsjustregi", - "title": "ComfyUI-EasyPony", - "reference": "https://github.com/regiellis/ComfyUI-EasyPony", - "files": [ - "https://github.com/regiellis/ComfyUI-EasyPony" - ], - "install_type": "git-clone", - "description": "Easy Pony is a helper node that simplifies the process of adding scoring and other attributes to prompts when using Pony models." - }, - { - "author": "itsjustregi", - "title": "ComfyUI-EasyNoobai", - "reference": "https://github.com/regiellis/ComfyUI-EasyNoobai", - "files": [ - "https://github.com/regiellis/ComfyUI-EasyNoobai" - ], - "install_type": "git-clone", - "description": "Simple set of nodes to assist with prompt generation for NOOBAI XL / Illustrious models" - }, - { - "author": "mrhan1993", - "title": "ComfyUI-Fooocus", - "reference": "https://github.com/mrhan1993/ComfyUI-Fooocus", - "files": [ - "https://github.com/mrhan1993/ComfyUI-Fooocus" - ], - "install_type": "git-clone", - "description": "This extension provides image generation features based on Fooocus." - }, - { - "author": "Kling AI", - "title": "ComfyUI-KLingAI-API", - "reference": "https://github.com/KwaiVGI/ComfyUI-KLingAI-API", - "files": [ - "https://github.com/KwaiVGI/ComfyUI-KLingAI-API" - ], - "install_type": "git-clone", - "description": "Provide high-quality video and image generation capabilities, meeting creators' needs for creative content production and management through more convenient operations, richer functionalities, professional parameters, and stunning effects." - }, - { - "author": "lujiazho", - "title": "ComfyUI-CatvtonFluxWrapper", - "id": "comfyui-catvton-flux-wrapper", - "reference": "https://github.com/lujiazho/ComfyUI-CatvtonFluxWrapper", - "files": [ - "https://github.com/lujiazho/ComfyUI-CatvtonFluxWrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI-CatvtonFluxWrapper provides ComfyUI nodes for diffusers implementation of Catvton-Flux." - }, - { - "author": "Stable Diffusion VN", - "title": "SDVN Comfy node", - "id": "SDVN", - "reference": "https://github.com/StableDiffusionVN/SDVN_Comfy_node", - "files": [ - "https://github.com/StableDiffusionVN/SDVN_Comfy_node" - ], - "install_type": "git-clone", - "description": "Smart Node Set, Supporting Easier and More Convenient Ways to Use Comfyui.Support Translate, Dynamic Prompt, Wildcard in most nodes.Support API with popular models (Gemini, Dall-E, Chat GPT).Support to download and use models directly at Comfyui.Support sub-folder with input folders.Support Merger Model more intelligently.Support smart, higher customization node and neat, more beautiful.And many other complementary nodes ..." - }, - { - "author": "Eugene (JEONG-JIWOO)", - "title": "ComfyUI_Eugene_Nodes", - "reference": "https://github.com/JEONG-JIWOO/ComfyUI_Eugene_Nodes", - "files": [ - "https://github.com/JEONG-JIWOO/ComfyUI_Eugene_Nodes" - ], - "install_type": "git-clone", - "description": "A collection of utility nodes using Dictionary designed to optimize and manage workflows in ComfyUI." - }, - { - "author": "xs315431", - "title": "Comfyui_Get_promptId", - "reference": "https://github.com/xs315431/Comfyui_Get_promptId", - "files": [ - "https://github.com/xs315431/Comfyui_Get_promptId" - ], - "install_type": "git-clone", - "description": "NODES: Get Prompt_Id, Success Callback\nget comfyui task id and Callback for successful image generation, in conjunction with the back-end" - }, - { - "author": "5x00", - "title": "ComfyUI-VLM_Captions", - "reference": "https://github.com/5x00/ComfyUI-VLM-Captions", - "files": [ - "https://github.com/5x00/ComfyUI-VLM-Captions" - ], - "install_type": "git-clone", - "description": "A simple ComfyUI node that let's you use Claude or ChatGPT 4o's VLM capabilities to generate captions/tags for images." - }, - { - "author": "5x00", - "title": "ComfyUI-PiAPI-Faceswap", - "reference": "https://github.com/5x00/ComfyUI-PiAPI-Faceswap", - "files": [ - "https://github.com/5x00/ComfyUI-PiAPI-Faceswap" - ], - "install_type": "git-clone", - "description": "A simple ComfyUI nodes that integrates [a/PiAPI faceswap](https://piapi.ai/faceswap-api) service into ComfyUI. This can be helpful if you're trying to create a workflow that includes faceswap for commercial usage." - }, - { - "author": "ClownsharkBatwing", - "title": "RES4LYF", - "id": "res4lyf", - "reference": "https://github.com/ClownsharkBatwing/RES4LYF", - "files": [ - "https://github.com/ClownsharkBatwing/RES4LYF" - ], - "install_type": "git-clone", - "description": "Advanced samplers with new noise scaling math to enable SDE sampling with all publicly available rectified flow models; new unsampling/noise inversion methods and other advanced techniques for inpainting and/or guiding the sampling process with latent images. 40 sampler types, 20 noise types, 7 noise scaling modes, in a single node. Also includes a wide variety of QoF and other utility nodes for manipulating sigmas, latents, images, and more." - }, - { - "author": "theshubzworld", - "title": "Together Vision Node", - "id": "comfyui_together_vision", - "reference": "https://github.com/theshubzworld/ComfyUI-TogetherVision", - "files": [ - "https://github.com/theshubzworld/ComfyUI-TogetherVision" - ], - "install_type": "git-clone", - "description": "A custom ComfyUI node using Together AI's Vision models for free image descriptions, image generation, and image-to-image transformation. Features include customizable prompts, advanced parameters, and robust error handling." - }, - { - "author": "NeoGriever", - "title": "ComfyUI - NeoGriever", - "id": "neogrievernodes", - "reference": "https://github.com/NeoGriever/ComfyUI-NeoGriever", - "files": [ - "https://github.com/NeoGriever/ComfyUI-NeoGriever" - ], - "install_type": "git-clone", - "description": "NeoGriever's helper nodes. Better CLIP Text Encoder, Resolution Provider, Multimask Write/Read, TextBoxes Simple/Join/x2/x3, Sliders INT/FLOAT/STEPPER, String Tool/Squisher/Cutter, Create Solid Color, Fill with Color, Checkerboard Generator, Image Progress Bar" - }, - { - "author": "PauldeLavallaz", - "title": "Claude Prompt Generator", - "id": "claude_prompt_generator", - "reference": "https://github.com/PauldeLavallaz/comfyui_claude_prompt_generator", - "files": [ - "https://github.com/PauldeLavallaz/comfyui_claude_prompt_generator" - ], - "install_type": "git-clone", - "description": "Node that generates prompts using Anthropic Claude API." - }, - { - "author": "huanngzh", - "title": "ComfyUI-MVAdapter", - "reference": "https://github.com/huanngzh/ComfyUI-MVAdapter", - "files": [ - "https://github.com/huanngzh/ComfyUI-MVAdapter" - ], - "description": "This extension integrates [a/MV-Adapter](https://github.com/huanngzh/MV-Adapter) into ComfyUI, allowing users to generate multi-view consistent images from text prompts or single images directly within the ComfyUI interface.", - "install_type": "git-clone" - }, - { - "author": "Aerse", - "title": "ComfyUI-Seed-Nodes", - "reference": "https://github.com/Aerse/ComfyUI-Seed-Nodes", - "files": [ - "https://github.com/Aerse/ComfyUI-Seed-Nodes" - ], - "description": "ComfyUI-Seed-Nodes is a custom node library that extends the functionality of ComfyUI, offering advanced image loading and pixelation tools.", - "install_type": "git-clone" - }, - { - "author": "Slickytail", - "title": "ComfyUI-InstantX-IPAdapter-SD3", - "reference": "https://github.com/Slickytail/ComfyUI-InstantX-IPAdapter-SD3", - "files": [ - "https://github.com/Slickytail/ComfyUI-InstantX-IPAdapter-SD3" - ], - "description": "ComfyUI implementation of the [a/InstantX IP-Adapter for SD3.5 Large](https://huggingface.co/InstantX/SD3.5-Large-IP-Adapter).", - "install_type": "git-clone" - }, - { - "author": "sourceful-official", - "title": "LoadLoraModelOnlyWithUrl", - "reference": "https://github.com/sourceful-official/LoadLoraModelOnlyWithUrl", - "files": [ - "https://github.com/sourceful-official/LoadLoraModelOnlyWithUrl" - ], - "description": "ComfyUI-LoadLoraModelOnlyWithUrl", - "install_type": "git-clone" - }, - { - "author": "kimara-ai", - "title": "Kimara.ai's Advanced Watermarking Tools", - "reference": "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks", - "files": [ - "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks" - ], - "description": "The KimaraAIWatermarker custom node allows you to apply watermark text and logo overlays to images. Optionally, the watermark can be moved by the move_watermark_step amount of pixels after each generated image. To apply a moving watermark to a list of images, use the KimaraAIBatchImages node to concatenate the list into a single tensor, then use that as an input for the watermark node, as shown in the example image below.", - "install_type": "git-clone" - }, - { - "author": "magic-quill", - "title": "ComfyUI_MagicQuill", - "id": "MagicQuill", - "reference": "https://github.com/magic-quill/ComfyUI_MagicQuill", - "files": [ - "https://github.com/magic-quill/ComfyUI_MagicQuill" - ], - "install_type": "git-clone", - "description": "Towards GPT-4 like large language and visual assistant." - }, - { - "author": "weilin9999", - "title": "WeiLin-ComfyUI-prompt-all-in-one", - "id": "prompt-all-in-one", - "reference": "https://github.com/weilin9999/WeiLin-ComfyUI-prompt-all-in-one", - "files": [ - "https://github.com/weilin9999/WeiLin-ComfyUI-prompt-all-in-one" - ], - "install_type": "git-clone", - "description": "Write prompt words like WebUI" - }, - { - "author": "weilin9999", - "title": "WeiLin-Comfyui-Tools", - "id": "Comfyui-Tools", - "reference": "https://github.com/weilin9999/WeiLin-Comfyui-Tools", - "files": [ - "https://github.com/weilin9999/WeiLin-Comfyui-Tools" - ], - "install_type": "git-clone", - "description": "quickly use the prompt word tool in ComfyUI" - }, - { - "author": "jax-explorer", - "title": "comfyui-model-dynamic-loader", - "reference": "https://github.com/jax-explorer/comfyui-model-dynamic-loader", - "files": [ - "https://github.com/jax-explorer/comfyui-model-dynamic-loader" - ], - "install_type": "git-clone", - "description": "for comfyonline dynamic loader\ncomfyonline is comfyui cloud website" - }, - { - "author": "LucipherDev", - "title": "ComfyUI-Golden-Noise", - "reference": "https://github.com/LucipherDev/ComfyUI-Golden-Noise", - "files": [ - "https://github.com/LucipherDev/ComfyUI-Golden-Noise" - ], - "install_type": "git-clone", - "description": "ComfyUI Custom Node for 'Golden Noise for Diffusion Models: A Learning Framework'. This node refines the initial latent noise in the diffusion process, enhancing both image quality and semantic coherence." - }, - { - "author": "LucipherDev", - "title": "ComfyUI-AniDoc", - "reference": "https://github.com/LucipherDev/ComfyUI-AniDoc", - "files": [ - "https://github.com/LucipherDev/ComfyUI-AniDoc" - ], - "install_type": "git-clone", - "description": "ComfyUI Custom Nodes for 'AniDoc: Animation Creation Made Easier'. This approach automates line art video colorization using a novel model that aligns color information from references, ensures temporal consistency, and reduces manual effort in animation production." - }, - { - "author": "LucipherDev", - "title": "ComfyUI-TangoFlux", - "reference": "https://github.com/LucipherDev/ComfyUI-TangoFlux", - "files": [ - "https://github.com/LucipherDev/ComfyUI-TangoFlux" - ], - "install_type": "git-clone", - "description": "ComfyUI Custom Nodes for 'TangoFlux: Super Fast and Faithful Text to Audio Generation with Flow Matching'. This generates high-quality 44.1kHz audio up to 30 seconds using just a text prompt." - }, - { - "author": "envy-ai", - "title": "ComfyUI-ConDelta", - "reference": "https://github.com/envy-ai/ComfyUI-ConDelta", - "files": [ - "https://github.com/envy-ai/ComfyUI-ConDelta" - ], - "install_type": "git-clone", - "description": "This extension extends ComfyUI's capabilities with respect to manipulating conditionings." - }, - { - "author": "kraglik", - "title": "PromptCollapse", - "reference": "https://github.com/kraglik/prompt_collapse", - "files": [ - "https://github.com/kraglik/prompt_collapse" - ], - "install_type": "git-clone", - "description": "A prompt generation system that manages relationships between prompt components to maintain logical consistency. Integrates with ComfyUI as a custom node." - }, - { - "author": "abdozmantar", - "title": "DeepExtract", - "reference": "https://github.com/abdozmantar/ComfyUI-DeepExtract", - "files": [ - "https://github.com/abdozmantar/ComfyUI-DeepExtract" - ], - "install_type": "git-clone", - "description": "DeepExtract is a powerful and efficient tool designed to separate vocals and sounds from audio files, providing an enhanced experience for musicians, producers, and audio engineers. With DeepExtract, you can quickly and effectively isolate vocals or instruments from mixed audio tracks, facilitating tasks like remixing, karaoke preparation, or audio analysis." - }, - { - "author": "ctefer", - "title": "CFE_comfyui", - "reference": "https://github.com/CpreForEver/CFE_comfyui", - "files": [ - "https://github.com/CpreForEver/CFE_comfyui" - ], - "install_type": "git-clone", - "description": "This is a subset of nodes for ComfyUI that I made just for my own workflow. The nodes support Flux (single conditioning, no negatives) and are just a way of minimizing the noodles. There's no real journey to be made here, just anything that helps me get through the day." - }, - { - "author": "inflamously", - "title": "comfyui-prompt-enhancer", - "reference": "https://github.com/inflamously/comfyui-prompt-enhancer", - "files": [ - "https://github.com/inflamously/comfyui-prompt-enhancer" - ], - "install_type": "git-clone", - "description": "A crazy node that pragmatically just enhances a given prompt with various descriptions in the hope that the image quality just increase and prompting just gets easier." - }, - { - "author": "111496583yzy", - "title": "Jigsaw Puzzle Effect Plugin", - "reference": "https://github.com/111496583yzy/comfyui-PuzzleCrack-Effect", - "files": [ - "https://github.com/111496583yzy/comfyui-PuzzleCrack-Effect" - ], - "install_type": "git-clone", - "description": "The Jigsaw Puzzle Effect plugin provides a unique puzzle effect for image processing. By dividing an image into multiple puzzle pieces and optionally adding missing pieces, users can easily create artistic puzzle effects." - }, - { - "author": "nsdtcloud3d", - "title": "ComfyUI-3D-Convert", - "reference": "https://github.com/nsdtcloud3d/ComfyUI-3D-Convert", - "files": [ - "https://github.com/nsdtcloud3d/ComfyUI-3D-Convert" - ], - "install_type": "git-clone", - "description": "ComfyUI-3D-Covert is a 3D File Format Conversion Extension based on 3dconvert.nsdt.cloud-API. It provides a node ConvertTo3DFormat currently available, is a powerful tool designed to streamline the conversion of 3D models between a wide array of file formats." - }, - { - "author": "Mr.Chip", - "title": "ComfyUI-SaveImageS3", - "id": "zouyuimages3", - "reference": "https://github.com/mrchipset/ComfyUI-SaveImageS3", - "files": [ - "https://github.com/mrchipset/ComfyUI-SaveImageS3" - ], - "install_type": "git-clone", - "description": "This extension offers a custom node to save image to S3-compatible oss." - }, - { - "author": "DesertPixelAi", - "title": "ComfyUI-Desert-Pixel-Nodes", - "reference": "https://github.com/DesertPixelAi/ComfyUI-Desert-Pixel-Nodes", - "files": [ - "https://github.com/DesertPixelAi/ComfyUI-Desert-Pixel-Nodes" - ], - "install_type": "git-clone", - "description": "A collection of custom nodes for ComfyUI focused on animation, image processing, and workflow optimization." - }, - { - "author": "muhammederem", - "title": "BLIP Vision-Language Model Integration", - "reference": "https://github.com/muhammederem/blip-comfyui", - "files": [ - "https://github.com/muhammederem/blip-comfyui" - ], - "install_type": "git-clone", - "description": "A Python implementation for integrating the BLIP (Bootstrapping Language-Image Pre-training) model for visual question answering." - }, - { - "author": "jiaqianjing", - "title": "ComfyUI-MidjourneyHub", - "reference": "https://github.com/jiaqianjing/ComfyUI-MidjourneyHub", - "files": [ - "https://github.com/jiaqianjing/ComfyUI-MidjourneyHub" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node for integrating with Midjourney API." - }, - { - "author": "SlackinJack", - "title": "distrifuser_comfyui", - "reference": "https://github.com/SlackinJack/distrifuser_comfyui", - "files": [ - "https://github.com/SlackinJack/distrifuser_comfyui" - ], - "install_type": "git-clone", - "description": "[a/Distrifuser](https://github.com/mit-han-lab/distrifuser) sampler node for ComfyUI\n" - }, - { - "author": "Runware Inc.", - "title": "Runware.ai ComfyUI Inference API Integration", - "id": "runware", - "reference": "https://github.com/Runware/ComfyUI-Runware", - "files": [ - "https://github.com/Runware/ComfyUI-Runware" - ], - "install_type": "git-clone", - "description": "Runware Inference API Integration for ComfyUI (No GPU Required)." - }, - { - "author": "shannooty", - "title": "ComfyUI Timer Nodes", - "id": "comfyui-timer-nodes", - "reference": "https://github.com/Shannooty/ComfyUI-Timer-Nodes", - "files": [ - "https://github.com/Shannooty/ComfyUI-Timer-Nodes" - ], - "install_type": "git-clone", - "description": "This project provides a set of custom timer nodes for ComfyUI. These nodes allow you to measure and append runtime information to strings or other data during your workflow." - }, - { - "author": "HM-RunningHub", - "title": "ComfyUI_RH_OminiControl", - "reference": "https://github.com/HM-RunningHub/ComfyUI_RH_OminiControl", - "files": [ - "https://github.com/HM-RunningHub/ComfyUI_RH_OminiControl" - ], - "install_type": "git-clone", - "description": "ComfyUI_RH_OminiControl is a ComfyUI plugin based on OminiControl By splitting the pipeline load, the plugin efficiently runs on NVIDIA RTX 4090 GPUs. Additionally, the spatial and fill functionalities are generated using the schnell model, reducing the number of sampling steps and improving overall efficiency." - }, - { - "author": "sebord", - "title": "ComfyUI-LMCQ", - "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\nNOTE: The files in the repo are not organized, which may lead to update issues." - }, - { - "author": "InstantStudioAI", - "title": "ComfyUI-InstantStudio", - "reference": "https://github.com/InstantStudioAI/ComfyUI-InstantStudio", - "files": [ - "https://github.com/InstantStudioAI/ComfyUI-InstantStudio" - ], - "install_type": "git-clone", - "description": "A collection of nodes to enhance your experience with ComfyUI." - }, - { - "author": "Tlant", - "title": "ComfyUI-OllamaPromptsGeneratorTlant", - "reference": "https://github.com/Tlant/ComfyUI-OllamaPromptsGeneratorTlant", - "files": [ - "https://github.com/Tlant/ComfyUI-OllamaPromptsGeneratorTlant" - ], - "install_type": "git-clone", - "description": "Use ollama to generate prompts based on reference text in comfyui." - }, - { - "author": "DarioFT", - "title": "ComfyUI-VideoDirCombiner", - "reference": "https://github.com/DarioFT/ComfyUI-VideoDirCombiner", - "files": [ - "https://github.com/DarioFT/ComfyUI-VideoDirCombiner" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that combines multiple videos from a directory with optional transitions and background music. Perfect for batch processing and creating seamless video compilations." - }, - { - "author": "Kim", - "title": "ComfyUI_KimNodes", - "reference": "https://github.com/wjl0313/ComfyUI_KimNodes", - "files": [ - "https://github.com/wjl0313/ComfyUI_KimNodes" - ], - "install_type": "git-clone", - "description": "Image effects, icon layout processing, cropping — this toolbox is a node library organized according to my own needs." - }, - { - "author": "LiJT", - "title": "Gemini prompt generator JT version", - "reference": "https://github.com/LiJT/ComfyUI-Gemini-Prompt-Generator-JT", - "files": [ - "https://github.com/LiJT/ComfyUI-Gemini-Prompt-Generator-JT" - ], - "install_type": "git-clone", - "description": "Custom node to use Gemini 1.5 and above for Comfyui to generates theme related prompts for image generators" - }, - { - "author": "codeprimate", - "title": "ComfyUI Mask Contour Processor", - "reference": "https://github.com/codeprimate/ComfyUI-MaskContourProcessor", - "files": [ - "https://github.com/codeprimate/ComfyUI-MaskContourProcessor" - ], - "install_type": "git-clone", - "description": "A ComfyUI node that improves inpainting results by extending mask boundaries with geometric patterns, helping create smoother transitions and better context for AI-driven image completion." - }, - { - "author": "Miyuutsu", - "title": "comfyui-save-vpred", - "reference": "https://github.com/Miyuutsu/comfyui-save-vpred", - "files": [ - "https://github.com/Miyuutsu/comfyui-save-vpred" - ], - "install_type": "git-clone", - "description": "Simple ComfyUI Custom Node to enable saving checkpoints with V-Pred ZTSNR tensors and metadata." - }, - { - "author": "kostenickj", - "title": "comfyui-jk-easy-nodes", - "reference": "https://github.com/kostenickj/jk-comfyui-helpers", - "files": [ - "https://github.com/kostenickj/jk-comfyui-helpers" - ], - "install_type": "git-clone", - "description": "NODES: EasyHRFix, EasyHRFix_Context, JKAnythingToString, JKBigContext, JKDynamicThresholdingMultiModel, JKEasyCheckpointLoader, JKEasyDetailer, JKEasyDetailer_Context, JKEasyKSampler_Context, JKEasyWatermark, JKInspireSchedulerAdapter, JKLilContext, JKMultiModelSamplerUnpatch, JKStringEmpty, JKStringEquals, JKStringNotEmpty, JKStringNotEquals, JKStringToSamplerAdapter" - }, - { - "author": "IamCreateAI", - "title": "ComfyUI-Ruyi", - "reference": "https://github.com/IamCreateAI/Ruyi-Models", - "files": [ - "https://github.com/IamCreateAI/Ruyi-Models" - ], - "install_type": "git-clone", - "description": "ComfyUI wrapper nodes for Ruyi, an image-to-video model by CreateAI." - }, - { - "author": "pollockjj", - "title": "ComfyUI-MultiGPU", - "reference": "https://github.com/pollockjj/ComfyUI-MultiGPU", - "files": [ - "https://github.com/pollockjj/ComfyUI-MultiGPU" - ], - "install_type": "git-clone", - "description": "This extension adds CUDA device selection to supported loader nodes in ComfyUI. By monkey-patching ComfyUI’s memory management, each model component (like UNet, Clip, or VAE) can be loaded on a specific GPU. Examples included are multi-GPU workflows for SDXL, FLUX, LTXVideo, and Hunyuan Video for both standard and GGUF loader nodes." - }, - { - "author": "PressWagon", - "title": "ComfyUI-StringsAndThings", - "reference": "https://github.com/PressWagon/ComfyUI-StringsAndThings", - "files": [ - "https://github.com/PressWagon/ComfyUI-StringsAndThings" - ], - "install_type": "git-clone", - "description": "EA collection of ComfyUI custom nodes for formatting and debugging string data with the intention of collecting generation data to be processed by a custom node pack like comfy-image-saver, as well as miscellaneous extra nodes to experiment with." - }, - { - "author": "ADDOOR", - "title": "ComfyUI-Addoor", - "reference": "https://github.com/Eagle-CN/ComfyUI-Addoor", - "files": [ - "https://github.com/Eagle-CN/ComfyUI-Addoor" - ], - "install_type": "git-clone", - "description": "A collection of batch operation toolkits suitable for ComfyUI" - }, - { - "author": "CyanAutumn", - "title": "ComfyUi Random Manage Cyan", - "id": "CyanAutumn", - "reference": "https://github.com/CyanAutumn/ComfyUi_Random_Manage_Cyan", - "files": [ - "https://github.com/CyanAutumn/ComfyUi_Random_Manage_Cyan" - ], - "install_type": "git-clone", - "description": "A random prompt node" - }, - { - "author": "Black Forest Labs", - "title": "Black Forest Labs API Nodes", - "reference": "https://github.com/black-forest-labs/bfl-comfy-nodes", - "files": [ - "https://github.com/black-forest-labs/bfl-comfy-nodes" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for Black Forest Labs API Services" - }, - { - "author": "kazeyori", - "title": "Quick Image Sequence Process", - "reference": "https://github.com/kazeyori/ComfyUI-QuickImageSequenceProcess", - "files": [ - "https://github.com/kazeyori/ComfyUI-QuickImageSequenceProcess" - ], - "install_type": "git-clone", - "description": "A ComfyUI plugin for quick image sequence processing. This plugin allows users to manipulate frame sequences with various operations including frame insertion, deletion, and duplication." - }, - { - "author": "Light-x02", - "title": "Image Metadata Nodes", - "id": "image_metadata_nodes", - "reference": "https://github.com/Light-x02/ComfyUI-Image-Metadata-Nodes", - "files": [ - "https://github.com/Light-x02/ComfyUI-Image-Metadata-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes for loading and saving images with metadata in ComfyUI." - }, - { - "author": "Light-x02", - "title": "Flux Settings Node", - "id": "flux_settings_node", - "reference": "https://github.com/Light-x02/ComfyUI-FluxSettingsNode", - "files": [ - "https://github.com/Light-x02/ComfyUI-FluxSettingsNode" - ], - "install_type": "git-clone", - "description": "A combined node for ComfyUI with six configurable tabs for managing multiple parameter configurations, including guidance, sampler, scheduler, steps, and denoise." - }, - { - "author": "marcoc2", - "title": "Image Processing Suite for ComfyUI", - "reference": "https://github.com/marcoc2/ComfyUI-AnotherUtils", - "files": [ - "https://github.com/marcoc2/ComfyUI-AnotherUtils" - ], - "install_type": "git-clone", - "description": "A collection of specialized image processing nodes for ComfyUI, focused on dataset preparation and pixel art manipulation." - }, - { - "author": "BIMer-99", - "title": "ComfyUI_FishSpeech_EX", - "reference": "https://github.com/BIMer-99/ComfyUI_FishSpeech_EX", - "files": [ - "https://github.com/BIMer-99/ComfyUI_FishSpeech_EX" - ], - "install_type": "git-clone", - "description": "This plugin is optimized for Fish-Speech-1.5 version and is only applicable to version 1.5" - }, - { - "author": "AEmotionStudio", - "title": "ComfyUI Christmas Theme 🎄✨", - "reference": "https://github.com/AEmotionStudio/ComfyUI-ChristmasTheme", - "files": [ - "https://github.com/AEmotionStudio/ComfyUI-ChristmasTheme" - ], - "install_type": "git-clone", - "description": "A beautiful theme extension for ComfyUI that adds festive touches with dynamic backgrounds, snowfall effects, and animated node connections" - }, - { - "author": "xfgexo", - "title": "EXO Custom ComfyUI Nodes", - "id": "exo-custom-nodes", - "reference": "https://github.com/xfgexo/EXO-Custom-ComfyUI-Nodes", - "files": [ - "https://github.com/xfgexo/EXO-Custom-ComfyUI-Nodes" - ], - "install_type": "git-clone", - "description": "A custom node pack made with efficiency and quality of life features in mind. Most notably is my Prompt Builder Deluxe Node. Unlike any other run-of-the-mill prompt builder or styler node out there. Mine allows you to create and design in a way no other node does." - }, - { - "author": "jefferyharrell", - "title": "JH XMP Metadata Nodes", - "reference": "https://github.com/ComfyUI-JH/ComfyUI-JH-XMP-Metadata-Nodes", - "files": [ - "https://github.com/ComfyUI-JH/ComfyUI-JH-XMP-Metadata-Nodes" - ], - "install_type": "git-clone", - "description": "These are custom nodes for ComfyUI for the loading and saving of metadata in XMP format. XMP metadata is embedded in the images created by these nodes; it travels along wherever the image does. Both macOS and Windows index XMP metadata automatically, making it searchable from the Finder on the Mac or the File Explorer in Windows. Apps like Photoshop or Lightroom (and presumably many others) expose XMP metadata and allow it to be edited." - }, - { - "author": "jefferyharrell", - "title": "JH Misc. Nodes", - "reference": "https://github.com/ComfyUI-JH/ComfyUI-JH-Misc-Nodes", - "files": [ - "https://github.com/ComfyUI-JH/ComfyUI-JH-Misc-Nodes" - ], - "install_type": "git-clone", - "description": "NODES: Daisy-Chainable String Constant, Two-Way Switch, Three-Way Switch, Preview Imag\nMiscellaneous custom nodes for ComfyUI" - }, - { - "author": "TKRLAB", - "title": "Prompt List JSON", - "reference": "https://github.com/TKRLAB/ComfyUI_Prompt_List_JSON", - "files": [ - "https://github.com/TKRLAB/ComfyUI_Prompt_List_JSON" - ], - "install_type": "git-clone", - "description": "This repository provides a custom node for ComfyUI that allows managing positive and negative prompts in a structured JSON format. The node supports adding, updating, and logging prompts, ensuring seamless integration into your workflow." - }, - { - "author": "kevinmcmahondev", - "title": "Skin Tone Detector for ComfyUI", - "reference": "https://github.com/kevinmcmahondev/comfyui-skin-tone-detector", - "files": [ - "https://github.com/kevinmcmahondev/comfyui-skin-tone-detector" - ], - "install_type": "git-clone", - "description": "A ComfyUI node that detects the skin tone of a person in an image and matches it to the standard emoji skin tone palette." - }, - { - "author": "mahdi", - "title": "seamless-clone-comfyui", - "reference": "https://github.com/Aksaz/comfyui-seamless-clone", - "files": [ - "https://github.com/Aksaz/comfyui-seamless-clone" - ], - "install_type": "git-clone", - "description": "Seamless Clone for ComfyUI" - }, - { - "author": "SlackinJack", - "title": "asyncdiff_comfyui", - "reference": "https://github.com/SlackinJack/asyncdiff_comfyui", - "files": [ - "https://github.com/SlackinJack/asyncdiff_comfyui" - ], - "install_type": "git-clone", - "description": "AsyncDiff node for ComfyUI" - }, - { - "author": "pharmapsychotic", - "title": "comfy-cliption", - "id": "comfy-cliption", - "reference": "https://github.com/pharmapsychotic/comfy-cliption", - "files": [ - "https://github.com/pharmapsychotic/comfy-cliption" - ], - "install_type": "git-clone", - "description": "Image to caption with CLIP ViT-L/14. Small and fast addition to the CLIP-L model you already have loaded to generate captions for images within your workflow." - }, - { - "author": "York Xiang", - "title": "Remembering utils", - "id": "comfyui-rememberingutils", - "reference": "https://github.com/bombless/comfyUI-RememberingUtils", - "files": [ - "https://github.com/bombless/comfyUI-RememberingUtils" - ], - "install_type": "git-clone", - "description": "Helper nodes to display last seed and prompt." - }, - { - "author": "shahkoorosh", - "title": "ComfyUI-KGnodes", - "reference": "https://github.com/shahkoorosh/ComfyUI-KGnodes", - "files": [ - "https://github.com/shahkoorosh/ComfyUI-KGnodes" - ], - "install_type": "git-clone", - "description": "NODES:Custom Resolution Latent Node, Style Selector\nThis Custom node offers various experimental nodes to make it easier to use ComfyUI." - }, - { - "author": "shahkoorosh", - "title": "comfyui-sunflower-nodes", - "reference": "https://github.com/andygill/comfyui-sunflower-nodes", - "files": [ - "https://github.com/andygill/comfyui-sunflower-nodes" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for 3D visualization." - }, - { - "author": "shahkoorosh", - "title": "ComfyUI_RH_APICall", - "reference": "https://github.com/HM-RunningHub/ComfyUI_RH_APICall", - "files": [ - "https://github.com/HM-RunningHub/ComfyUI_RH_APICall" - ], - "install_type": "git-clone", - "description": "This is a ComfyUI plugin that makes it easier to call and run workflows from RunningHub in your local ComfyUI setup." - }, - { - "author": "shahkoorosh", - "title": "ComfyUI-PersianText", - "reference": "https://github.com/shahkoorosh/ComfyUI-PersianText", - "files": [ - "https://github.com/shahkoorosh/ComfyUI-PersianText" - ], - "install_type": "git-clone", - "description": "A powerful ComfyUI node for rendering text with advanced styling options, including full support for Persian/Farsi and Arabic scripts." - }, - { - "author": "wqjuser", - "title": "ComfyUI-Chat-Image", - "reference": "https://github.com/wqjuser/ComfyUI-Chat-Image", - "files": [ - "https://github.com/wqjuser/ComfyUI-Chat-Image" - ], - "install_type": "git-clone", - "description": "Use an online large language model to describe images." - }, - { - "author": "solution9th", - "title": "Comfyui_mobilesam", - "reference": "https://github.com/solution9th/Comfyui_mobilesam", - "files": [ - "https://github.com/solution9th/Comfyui_mobilesam" - ], - "install_type": "git-clone", - "description": "NODES: Mobile SAM Model Loader, Mobile SAM Detector, Mobile SAM Predictor" - }, - { - "author": "ronsantash", - "title": "ComfyUIFlexiLoRALoader", - "reference": "https://github.com/ronsantash/Comfyui-flexi-lora-loader", - "files": [ - "https://github.com/ronsantash/Comfyui-flexi-lora-loader" - ], - "install_type": "git-clone", - "description": "FlexiLoRALoader - A ComfyUI custom node for dynamic LoRA weight management. Apply multiple LoRAs with flexible weight patterns and randomization features for creative AI image generation.\nFeatures: • Multiple LoRA handling (up to 3) • Weight pattern presets • Random/Sequential mode • Debug logging support" - }, - { - "author": "zhilemann", - "title": "ComfyUI-moondream2", - "reference": "https://github.com/zhilemann/ComfyUI-moondream2", - "files": [ - "https://github.com/zhilemann/ComfyUI-moondream2" - ], - "install_type": "git-clone", - "description": "nodes for nightly moondream2 VLM inference\nsupports only captioning and visual queries at the moment" - }, - { - "author": "cherninlab", - "title": "Logo Generator Node for ComfyUI", - "reference": "https://github.com/cherninlab/logo-generator-comfyui", - "files": [ - "https://github.com/cherninlab/logo-generator-comfyui" - ], - "install_type": "git-clone", - "description": "This custom node allows you to generate logo images using Google Fonts." - }, - { - "author": "SongGuo11", - "title": "ComfyUI SaveAnything Node (SG11)", - "reference": "https://github.com/SongGuo11/ComfyUI-SaveAnything-SG11", - "files": [ - "https://github.com/SongGuo11/ComfyUI-SaveAnything-SG11" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node for saving images in various formats" - }, - { - "author": "ciga2011", - "title": "ComfyUI MarkItDown", - "id": "markitdown", - "reference": "https://github.com/ciga2011/ComfyUI-MarkItDown", - "files": [ - "https://github.com/ciga2011/ComfyUI-MarkItDown" - ], - "pip": ["markitdown", "openai"], - "install_type": "git-clone", - "description": "This node pack helps to convert various files to Markdown. It supports pdf, pptx, xlsx, docx, html and image files." - }, - { - "author": "ciga2011", - "title": "ComfyUI Pollinations", - "id": "pollinations", - "reference": "https://github.com/ciga2011/ComfyUI-Pollinations", - "files": [ - "https://github.com/ciga2011/ComfyUI-Pollinations" - ], - "install_type": "git-clone", - "description": "Generate images from text prompts using Pollinations' AI models for free." - }, - { - "author": "ciga2011", - "title": "ComfyUI Prompt Optimizer", - "id": "promptoptimizer", - "reference": "https://github.com/ciga2011/ComfyUI-PromptOptimizer", - "files": [ - "https://github.com/ciga2011/ComfyUI-PromptOptimizer" - ], - "install_type": "git-clone", - "description": "Optimize prompts for text-to-image models at no cost." - }, - { - "author": "IgalOgonov", - "title": "Simple String Repository", - "reference": "https://github.com/IgalOgonov/ComfyUI_Simple_String_Repository", - "files": [ - "https://github.com/IgalOgonov/ComfyUI_Simple_String_Repository" - ], - "install_type": "git-clone", - "description": "Custom node that allows storing and accessing strings, meant to be parts of a prompt, in a simplified manner. Partially supports dynamic prompt syntax." - }, - { - "author": "fairy-root", - "title": "ComfyUI-GLHF", - "id": "comfyui-glhf", - "reference": "https://github.com/fairy-root/ComfyUI-GLHF", - "files": [ - "https://github.com/fairy-root/ComfyUI-GLHF" - ], - "install_type": "git-clone", - "description": "GLHF is a ComfyUI node that facilitates seamless interaction with the GLHF chat API. Designed to enhance user experience, it supports multiple language models, web search integration, and customizable instructions, making it a powerful extension for AI-driven workflows." - }, - { - "author": "Jurdn", - "title": "Jurdns Groq API Node", - "id": "jurdnsgroqapinode", - "reference": "https://github.com/jurdnisglobby/ComfyUI-Jurdns-Groq-Node", - "files": [ - "https://github.com/jurdnisglobby/ComfyUI-Jurdns-Groq-Node" - ], - "pip": ["groq"], - "install_type": "git-clone", - "description": "This node utilizes the Groq.com API to enhance prompts. (Place API key and main system prompt in the groq_config.json)" - }, - { - "author": "randomnoner11", - "title": "ComfyUI-MistralAI-API", - "reference": "https://github.com/randomnoner11/ComfyUI-MistralAI-API", - "files": [ - "https://github.com/randomnoner11/ComfyUI-MistralAI-API" - ], - "install_type": "git-clone", - "description": "Mistral AI API's chat completion endpoint in ComfyUI" - }, - { - "author": "ahernandezmiro", - "title": "ComfyUI-GCP_Storage_tools", - "reference": "https://github.com/ahernandezmiro/ComfyUI-GCP_Storage_tools", - "files": [ - "https://github.com/ahernandezmiro/ComfyUI-GCP_Storage_tools" - ], - "install_type": "git-clone", - "description": "A set of ComfyUI nodes for GPC Storage access" - }, - { - "author": "rohitsainier", - "title": "ComfyUI-InstagramDownloader", - "id": "comfyui-instagram-downloader", - "reference": "https://github.com/rohitsainier/ComfyUI-InstagramDownloader", - "files": [ - "https://github.com/rohitsainier/ComfyUI-InstagramDownloader" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node package that allows downloading and organizing Instagram content directly in your ComfyUI Output folder" - }, - { - "author": "zmwv823", - "title": "ComfyUI_Anytext", - "reference": "https://github.com/zmwv823/ComfyUI_Anytext", - "files": [ - "https://github.com/zmwv823/ComfyUI_Anytext" - ], - "install_type": "git-clone", - "description": "Unofficial Simple And Rough Implementation Of [a/AnyText](https://github.com/tyxsspa/AnyText) and [a/Glyph-ByT5] (https://github.com/AIGText/Glyph-ByT5) and [a/JoyType](https://github.com/jdh-algo/JoyType)" - }, - { - "author": "SKBv0", - "title": "ComfyUI SKBundle", - "reference": "https://github.com/SKBv0/ComfyUI_SKBundle", - "files": [ - "https://github.com/SKBv0/ComfyUI_SKBundle" - ], - "install_type": "git-clone", - "description": "Nodes: MultiText, TextBox, TitlePlus, SeamlessTexture, AspectRatioPlus, DisplayEverything, ComparerPlus, AnySwitch, Node Design Tools..." - }, - { - "author": "civen-cn", - "title": "ComfyUI Whisper Translator", - "reference": "https://github.com/civen-cn/ComfyUI-Whisper-Translator", - "files": [ - "https://github.com/civen-cn/ComfyUI-Whisper-Translator" - ], - "install_type": "git-clone", - "description": "This is a ComfyUI node that allows you to translate subtitles using the Whisper. Now support for multiple languages: ['zh', 'en', 'ja', 'ko', 'ru', 'fr', 'de', 'es', 'pt', 'it', 'ar'] You may need to put fonts in the 'fonts' folder to support different languages." - }, - { - "author": "WainWong", - "title": "ComfyUI-Loop-image", - "reference": "https://github.com/WainWong/ComfyUI-Loop-image", - "files": [ - "https://github.com/WainWong/ComfyUI-Loop-image" - ], - "install_type": "git-clone", - "description": "ComfyUI Loop Image is a node package specifically designed for image loop processing. It provides two main processing modes: Batch Image Processing and Single Image Processing, along with supporting image segmentation and merging functions." - }, - { - "author": "Jash-Vora", - "title": "FitDiT", - "reference": "https://github.com/Jash-Vora/ComfyUI-GarmentDiT", - "files": [ - "https://github.com/Jash-Vora/ComfyUI-GarmentDiT" - ], - "install_type": "git-clone", - "description": "[a/FitDiT](https://arxiv.org/abs/2411.10499): Advancing the Authentic Garment Details for High-fidelity Virtual Try-onon" - }, - { - "author": "rhplus0831", - "title": "ComfyMepi", - "reference": "https://github.com/rhplus0831/ComfyMepi", - "files": [ - "https://github.com/rhplus0831/ComfyMepi" - ], - "install_type": "git-clone", - "description": "Another mobile frontend for ComfyUI" - }, - { - "author": "0x-jerry", - "title": "Rembg Background Removal Node for ComfyUI", - "reference": "https://github.com/0x-jerry/comfyui-rembg", - "files": [ - "https://github.com/0x-jerry/comfyui-rembg" - ], - "install_type": "git-clone", - "description": "Rembg Background Removal Node for ComfyUI" - }, - { - "author": "sanbuphy", - "title": "ComfyUI-AudioLDM", - "reference": "https://github.com/sanbuphy/ComfyUI-AudioLDM", - "files": [ - "https://github.com/sanbuphy/ComfyUI-AudioLDM" - ], - "install_type": "git-clone", - "description": "ComfyUI Workflow to run audioldm-l-full pipeline\n[a/https://huggingface.co/cvssp/audioldm-l-full](https://huggingface.co/cvssp/audioldm-l-full)" - }, - { - "author": "bear2b", - "title": "ColorMatrixGPU Node for ComfyUI", - "reference": "https://github.com/bear2b/comfyui-argo-nodes", - "files": [ - "https://github.com/bear2b/comfyui-argo-nodes" - ], - "install_type": "git-clone", - "description": "This node applies a custom 4x4 color matrix to an image using GPU acceleration via PyTorch." - }, - { - "author": "phuvinh010701", - "title": "ComfyUI-Nudenet", - "reference": "https://github.com/phuvinh010701/ComfyUI-Nudenet", - "files": [ - "https://github.com/phuvinh010701/ComfyUI-Nudenet" - ], - "install_type": "git-clone", - "description": "Nodes for NSFW content filtering" - }, - { - "author": "Vaibhavs10", - "title": "ComfyUI-DDUF", - "reference": "https://github.com/Vaibhavs10/ComfyUI-DDUF", - "files": [ - "https://github.com/Vaibhavs10/ComfyUI-DDUF" - ], - "install_type": "git-clone", - "description": "Run DDUF in ComfyUI - powered by Diffusers." - }, - { - "author": "AconexOfficial", - "title": "ComfyUI GOAT Nodes", - "reference": "https://github.com/AconexOfficial/ComfyUI_GOAT_Nodes", - "files": [ - "https://github.com/AconexOfficial/ComfyUI_GOAT_Nodes" - ], - "install_type": "git-clone", - "description": "Nodes to level up your workflows performance and streamline specific functions." - }, - { - "author": "Jaminanim", - "title": "ComfyUI-Random-Int-Divisor-Node", - "reference": "https://github.com/Jaminanim/ComfyUI-Random-Int-Divisor-Node", - "files": [ - "https://github.com/Jaminanim/ComfyUI-Random-Int-Divisor-Node" - ], - "install_type": "git-clone", - "description": "A set of custom ComfyUI nodes for generating random integers within a range, adjusted to the nearest multiple of a user-defined divisor. Needlessly includes both an efficient and simple list implementation. Updates with each generation." - }, - { - "author": "cenzijing", - "title": "ComfyUI-Markmap", - "reference": "https://github.com/cenzijing/ComfyUI-Markmap", - "files": [ - "https://github.com/cenzijing/ComfyUI-Markmap" - ], - "install_type": "git-clone", - "description": "A ComfyUI custom node for creating mindmaps from markdown" - }, - { - "author": "bongsang", - "title": "ComfyUI-Bongsang", - "reference": "https://github.com/bongsang/ComfyUI-Bongsang", - "files": [ - "https://github.com/bongsang/ComfyUI-Bongsang" - ], - "install_type": "git-clone", - "description": "The 'ComfyUI-Bongsang' is very useful tools for a diffusion model developer." - }, - { - "author": "muxueChen", - "title": "CosyVoice2 for ComfyUI", - "reference": "https://github.com/muxueChen/ComfyUI_NTCosyVoice", - "files": [ - "https://github.com/muxueChen/ComfyUI_NTCosyVoice" - ], - "install_type": "git-clone", - "description": "ComfyUI_NTCosyVoice is a plugin of ComfyUI for Cosysvoice2" - }, - { - "author": "inventorado", - "title": "ComfyUI Neural Network Toolkit NNT ", - "id": "nnt", - "reference": "https://github.com/inventorado/ComfyUI_NNT", - "files": [ - "https://github.com/inventorado/ComfyUI_NNT" - ], - "install_type": "git-clone", - "description": "Neural Network Toolkit (NNT) for ComfyUI is an extensive set of custom ComfyUI nodes for designing, training, and fine-tuning neural networks. This toolkit allows defining models, layers, training workflows, transformers, and tensor operations in a visual manner using nodes." - }, - { - "author": "Hullabalo", - "title": "ComfyUI-Loop", - "reference": "https://github.com/Hullabalo/ComfyUI-Loop", - "files": [ - "https://github.com/Hullabalo/ComfyUI-Loop" - ], - "install_type": "git-clone", - "description": "A pair of nodes (Load Image and Save Image) to create a simple loop in your ComfyUI inpainting workflow, without the need of loading your last saved image" - }, - { - "author": "hodanajan", - "title": "optimal-crop-resolution", - "reference": "https://github.com/hodanajan/optimal-crop-resolution", - "files": [ - "https://github.com/hodanajan/optimal-crop-resolution" - ], - "install_type": "git-clone", - "description": "ComfyUI node to calculate optimal resolution to crop the image to (from a list of aspect ratios)" - }, - { - "author": "JJ", - "title": "ComfyUI-Jtils", - "reference": "https://github.com/cnbjjj/ComfyUI-Jtils", - "files": [ - "https://github.com/cnbjjj/ComfyUI-Jtils" - ], - "install_type": "git-clone", - "description": "An extension for ComfyUI that adds utility functions and nodes not available in the default setup." - }, - { - "author": "billwuhao", - "title": "ComfyUI_OneButtonPrompt_Flux", - "reference": "https://github.com/billwuhao/ComfyUI_OneButtonPrompt_Flux", - "files": [ - "https://github.com/billwuhao/ComfyUI_OneButtonPrompt_Flux" - ], - "install_type": "git-clone", - "description": "ComfyUI_OneButtonPrompt_Flux is a Flux prompt generation node. The subject can be 'human,' 'other' or a combination of both. For human, pose settings can be enabled. Additionally, various styles can be applied. Finally, combine it with 'Prompt Enhancement' to seamlessly automate image generation, eliminating the hassle of designing prompts." - }, - { - "author": "pandaer119", - "title": "ComfyUI_pandai", - "reference": "https://github.com/pandaer119/ComfyUI_pandai", - "files": [ - "https://github.com/pandaer119/ComfyUI_pandai" - ], - "install_type": "git-clone", - "description": "Introduction The ComfyUI_pandai node is a custom ComfyUI node designed to interact with the DeepSeek API. It supports text generation, translation, and text polishing. With this node, users can easily generate text, translate content, and refine the generated text for better quality." - }, - { - "author": "umiyuki", - "title": "ComfyUI Pad To Eight", - "reference": "https://github.com/umiyuki/comfyui-pad-to-eight", - "files": [ - "https://github.com/umiyuki/comfyui-pad-to-eight" - ], - "install_type": "git-clone", - "description": "A custom ComfyUI node that pads an image to a multiple of 8 width." - }, - { - "author": "Meettya", - "title": "ComfyUI-OneForOne", - "reference": "https://github.com/Meettya/ComfyUI-OneForOne", - "files": [ - "https://github.com/Meettya/ComfyUI-OneForOne" - ], - "install_type": "git-clone", - "description": "Node:Image Fit Calculator" - }, - { - "author": "KunmyonChoi", - "title": "ComfyUI_S3_direct", - "reference": "https://github.com/KunmyonChoi/ComfyUI_S3_direct", - "files": [ - "https://github.com/KunmyonChoi/ComfyUI_S3_direct" - ], - "install_type": "git-clone", - "description": "ComfyUI custom_node that load and save file directly from S3\nSimplified version of [a/https://github.com/kealiu/ComfyUI-S3-Tools](https://github.com/kealiu/ComfyUI-S3-Tools)" - }, - { - "author": "ChenDarYen", - "title": "ComfyUI-TimestepShiftModel", - "reference": "https://github.com/ChenDarYen/ComfyUI-TimestepShiftModel", - "files": [ - "https://github.com/ChenDarYen/ComfyUI-TimestepShiftModel" - ], - "install_type": "git-clone", - "description": "This is a ComfyUI implementation of the timestep shift technique used in [a/NitroFusion: High-Fidelity Single-Step Diffusion through Dynamic Adversarial Training.](https://arxiv.org/abs/2412.02030)\nFor more details, visit the official [a/NitroFusion GitHub repository](https://github.com/ChenDarYen/NitroFusion)." - }, - { - "author": "facok", - "title": "ComfyUI-HunyuanVideoMultiLora", - "reference": "https://github.com/facok/ComfyUI-HunyuanVideoMultiLora", - "files": [ - "https://github.com/facok/ComfyUI-HunyuanVideoMultiLora" - ], - "install_type": "git-clone", - "description": "A custom LoRA-loading node designed to prevent issues such as blurriness and other artifacts when loading multiple LoRAs in HunYuan Video.\nUsage Instructions: The connection method remains unchanged from the original. The only difference is the additional blocks_type option. Please select double_blocks." - }, - { - "author": "facok", - "title": "ComfyUI-TeaCacheHunyuanVideo", - "reference": "https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo", - "files": [ - "https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo" - ], - "install_type": "git-clone", - "description": "This is a TeaCache acceleration node for HunYuan Video, supporting the native node workflow for seamless upgrades. Simply choose the acceleration multiplier you want—currently, three levels are available." - }, - { - "author": "FinetunersAI", - "title": "ComfyUI_Finetuners_Suite", - "reference": "https://github.com/FinetunersAI/ComfyUI_Finetuners_Suite", - "files": [ - "https://github.com/FinetunersAI/ComfyUI_Finetuners_Suite" - ], - "install_type": "git-clone", - "description": "A suite of nodes for ComfyUI that helps making ComfyUI more accesible for artists" - }, - { - "author": "sh570655308", - "title": "ComfyUI-GigapixelAI", - "id": "gigapixel", - "reference": "https://github.com/sh570655308/ComfyUI-GigapixelAI", - "files": [ - "https://github.com/sh570655308/ComfyUI-GigapixelAI" - ], - "install_type": "git-clone", - "description": "Custom nodes use gigapixelai in comfyui." - }, - { - "author": "sh570655308", - "title": "ComfyUI-TopazVideoAI", - "id": "tvai", - "reference": "https://github.com/sh570655308/ComfyUI-TopazVideoAI", - "files": [ - "https://github.com/sh570655308/ComfyUI-TopazVideoAI" - ], - "install_type": "git-clone", - "description": "Custom nodes use topazvideoai in comfyui." - }, - { - "author": "jammyfu", - "title": "Painting Coder Utils", - "id": "painting-coder-utils", - "reference": "https://github.com/jammyfu/ComfyUI_PaintingCoderUtils", - "files": [ - "https://github.com/jammyfu/ComfyUI_PaintingCoderUtils" - ], - "install_type": "git-clone", - "description": "A practical collection of nodes for ComfyUI that streamlines image and text processing workflows. Features include image optimized resolution adjustment, text cleaning tools, dynamic image/text combination, and mask preview utilities. Perfect for artists and developers looking to enhance their AI art creation pipeline." - }, - { - "author": "welltop-cn", - "title": "ComfyUI-TeaCache", - "id": "teacache", - "reference": "https://github.com/welltop-cn/ComfyUI-TeaCache", - "files": [ - "https://github.com/welltop-cn/ComfyUI-TeaCache" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [ali-vilab/TeaCache](https://github.com/ali-vilab/TeaCache) for ComfyUI" - }, - { - "author": "calcuis", - "title": "gguf", - "id": "gguf", - "reference": "https://github.com/calcuis/gguf", - "files": [ - "https://github.com/calcuis/gguf" - ], - "preemptions":[ - "LoaderGGUF", - "ClipLoaderGGUF", - "DualClipLoaderGGUF", - "TripleClipLoaderGGUF", - "LoaderGGUFAdvanced", - "GGUFSave" - ], - "install_type": "git-clone", - "description": "gguf node for comfyui" - }, - { - "author": "ainewsto", - "title": "comfyui-labs-google", - "reference": "https://github.com/ainewsto/comfyui-labs-google", - "files": [ - "https://github.com/ainewsto/comfyui-labs-google" - ], - "install_type": "git-clone", - "description": "NODES: ComfyUI-ImageFx, ComfyUI-Whisk" - }, - { - "author": "gremlation", - "title": "ComfyUI-ViewData", - "reference": "https://github.com/gremlation/ComfyUI-ViewData", - "files": [ - "https://github.com/gremlation/ComfyUI-ViewData" - ], - "install_type": "git-clone", - "description": "A ComfyUI node that displays the type and contents of whatever is connected to the input. In the case of a Tensor object, it shows the shape instead of its value." - }, - { - "author": "gremlation", - "title": "ComfyUI-JMESPath", - "reference": "https://github.com/gremlation/ComfyUI-JMESPath", - "files": [ - "https://github.com/gremlation/ComfyUI-JMESPath" - ], - "install_type": "git-clone", - "description": "A ComfyUI node that runs a [a/JMESPath](https://jmespath.org/) query against input JSON and outputs the result." - }, - { - "author": "gremlation", - "title": "ComfyUI-jq", - "reference": "https://github.com/gremlation/ComfyUI-jq", - "files": [ - "https://github.com/gremlation/ComfyUI-jq" - ], - "install_type": "git-clone", - "description": "A ComfyUI node that runs a [a/jq](https://jqlang.github.io/jq/) query against input JSON and outputs the result." - }, - { - "author": "gremlation", - "title": "ComfyUI-ImageLabel", - "reference": "https://github.com/gremlation/ComfyUI-ImageLabel", - "files": [ - "https://github.com/gremlation/ComfyUI-ImageLabel" - ], - "install_type": "git-clone", - "description": "A ComfyUI node that extends an image vertically to add a label either above or below it." - }, - { - "author": "gremlation", - "title": "ComfyUI-TrackAndWheel", - "reference": "https://github.com/gremlation/ComfyUI-TrackAndWheel", - "files": [ - "https://github.com/gremlation/ComfyUI-TrackAndWheel" - ], - "install_type": "git-clone", - "description": "A ComfyUI extension that improves panning and zooming on trackpads and with the mouse wheel." - }, - { - "author": "fuselayer", - "title": "comfyui-mosaic-blur", - "reference": "https://github.com/fuselayer/comfyui-mosaic-blur", - "files": [ - "https://github.com/fuselayer/comfyui-mosaic-blur" - ], - "install_type": "git-clone", - "description": "A simple mosaic blur node for ComfyUI that uses CV2 or Pillow" - }, - { - "author": "jerrylongyan", - "title": "ComfyUI-My-Mask", - "reference": "https://github.com/jerrylongyan/ComfyUI-My-Mask", - "files": [ - "https://github.com/jerrylongyan/ComfyUI-My-Mask" - ], - "install_type": "git-clone", - "description": "Some nodes for processing masks, currently including nodes that fill in the concave parts of existing masks with convex hulls." - }, - { - "author": "mira-6", - "title": "comfyui-sasolver", - "reference": "https://github.com/mira-6/comfyui-sasolver", - "files": [ - "https://github.com/mira-6/comfyui-sasolver" - ], - "install_type": "git-clone", - "description": "SASolver for Comfyui. Adapted from [a/comfyanonymous/ComfyUI#4454](https://github.com/comfyanonymous/ComfyUI/pull/4454) and [a/https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler](https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler)" - }, - { - "author": "dreamhartley", - "title": "ComfyUI_show_seed", - "reference": "https://github.com/dreamhartley/ComfyUI_show_seed", - "files": [ - "https://github.com/dreamhartley/ComfyUI_show_seed" - ], - "install_type": "git-clone", - "description": "A custom node that saves images while displaying the seed value used in generation" - }, - { - "author": "bubbliiiing", - "title": "Video Generation Nodes for EasyAnimate", - "id": "easyanimatenodes", - "reference": "https://github.com/aigc-apps/EasyAnimate", - "files": [ - "https://github.com/aigc-apps/EasyAnimate" - ], - "install_type": "git-clone", - "description": "Video Generation Nodes for EasyAnimate, which suppors text-to-video, image-to-video, video-to-video and different controls." - }, - { - "author": "DraconicDragon", - "title": "ComfyUI-Venice-API", - "reference": "https://github.com/DraconicDragon/ComfyUI-Venice-API", - "files": [ - "https://github.com/DraconicDragon/ComfyUI-Venice-API" - ], - "install_type": "git-clone", - "description": "A custom node implementation for ComfyUI that integrates with venice.ai's Flux and SDXL image generation models. This project is adapted from [a/ComfyUI-FLUX-TOGETHER-API](https://github.com/BZcreativ/ComfyUI-FLUX-TOGETHER-API) to work with the venice.ai API." - }, - { - "author": "Wenaka2004", - "title": "ComfyUI-TagClassifier", - "reference": "https://github.com/Wenaka2004/ComfyUI-TagClassifier", - "files": [ - "https://github.com/Wenaka2004/ComfyUI-TagClassifier" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node,use Deepseek v3 to classify the input tags" - }, - { - "author": "westNeighbor", - "title": "ComfyUI-ultimate-openpose-render", - "reference": "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-render", - "files": [ - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-render" - ], - "install_type": "git-clone", - "description": "Enhanced features with flexible choice of inputs and outputs, fine control for pose plotting, freedom to composite poses and fast local pose editting." - }, - { - "author": "westNeighbor", - "title": "ComfyUI-ultimate-openpose-estimator", - "reference": "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-estimator", - "files": [ - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-estimator" - ], - "install_type": "git-clone", - "description": "Super fast tensorrt performance with accuate pose estimation of dwpose model, giving the detecting threshold control, plus pose image render and pose json format output. Fine control for pose plotting." - }, - { - "author": "westNeighbor", - "title": "ComfyUI-ultimate-openpose-editor", - "reference": "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-editor", - "files": [ - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-editor" - ], - "install_type": "git-clone", - "description": "Enhanced features with flexible choice of inputs and outputs, fine control for pose plotting, freedom to composite poses and fast local pose editting." - }, - { - "author": "a-und-b", - "title": "ComfyUI_Delay", - "reference": "https://github.com/a-und-b/ComfyUI_Delay", - "files": [ - "https://github.com/a-und-b/ComfyUI_Delay" - ], - "install_type": "git-clone", - "description": "Simple custom node for ComfyUI to artificially delay a workflow at any point." - }, - { - "author": "a-und-b", - "title": "ComfyUI_JSON_Helper", - "reference": "https://github.com/a-und-b/ComfyUI_JSON_Helper", - "files": [ - "https://github.com/a-und-b/ComfyUI_JSON_Helper" - ], - "install_type": "git-clone", - "description": "Simple custom node for ComfyUI that converts JSON strings to JSON objects." - }, - { - "author": "a-und-b", - "title": "ComfyUI_LoRA_from_URL", - "reference": "https://github.com/a-und-b/ComfyUI_LoRA_from_URL", - "files": [ - "https://github.com/a-und-b/ComfyUI_LoRA_from_URL" - ], - "install_type": "git-clone", - "description": "A simple-as-possible custom node for ComfyUI to load LoRA models from a public URL." - }, - { - "author": "r3dial", - "title": "Redial Discomphy - Discord Integration for ComfyUI", - "reference": "https://github.com/r3dial/redial-discomphy", - "files": [ - "https://github.com/r3dial/redial-discomphy" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that enables direct posting of images, videos, and messages to Discord channels. This node seamlessly integrates your ComfyUI workflows with Discord communication, allowing you to automatically share your generated content." - }, - { - "author": "r3dsd", - "title": "Comfyui-Template-Loader", - "reference": "https://github.com/r3dsd/comfyui-template-loader", - "files": [ - "https://github.com/r3dsd/comfyui-template-loader" - ], - "install_type": "git-clone", - "description": "Easily Load Your Frequently Used Prompts in ComfyUI\nWith ComfyUI Template Loader, managing and reusing your favorite prompts has never been simpler. Save time and streamline your workflow by loading your go-to templates with just a few clicks!" - }, - { - "author": "r3dsd", - "title": "HommageTools for ComfyUI", - "reference": "https://github.com/ArtHommage/HommageTools", - "files": [ - "https://github.com/ArtHommage/HommageTools" - ], - "install_type": "git-clone", - "description": "Entry point for HommageTools node collection for ComfyUI. Handles node registration, imports, and logging configuration." - }, - { - "author": "l-comm", - "title": "WatermarkRemoval", - "id": "watermark-removal", - "reference": "https://github.com/l-comm/WatermarkRemoval", - "files": [ - "https://github.com/l-comm/WatermarkRemoval" - ], - "install_type": "git-clone", - "description": "Watermark removal project" - }, - { - "author": "jhj0517", - "title": "ComfyUI-Moondream-Gaze-Detection", - "id": "comfyui-moondream-gaze-detection", - "reference": "https://github.com/jhj0517/ComfyUI-Moondream-Gaze-Detection", - "files": [ - "https://github.com/jhj0517/ComfyUI-Moondream-Gaze-Detection" - ], - "install_type": "git-clone", - "description": "Moondream's gaze detection feature wrapper node." - }, - { - "author": "jhj0517", - "title": "ComfyUI jhj Kokoro Onnx", - "id": "comfyui-jhj-kokoro-onnx", - "reference": "https://github.com/jhj0517/ComfyUI-jhj-Kokoro-Onnx", - "files": [ - "https://github.com/jhj0517/ComfyUI-jhj-Kokoro-Onnx" - ], - "install_type": "git-clone", - "description": "kokoro-onnx (opensource TTS model) wrapper for ComfyUI." - }, - { - "author": "jnxmx", - "title": "ComfyUI_HuggingFace_Downloader", - "reference": "https://github.com/jnxmx/ComfyUI_HuggingFace_Downloader", - "files": [ - "https://github.com/jnxmx/ComfyUI_HuggingFace_Downloader" - ], - "install_type": "git-clone", - "description": "The ComfyUI HuggingFace Downloader is a custom node extension for ComfyUI, designed to streamline the process of downloading models, checkpoints, and other resources from the Hugging Face Hub directly into your models directory. This tool simplifies workflow integration by providing a seamless interface to select and download required resources." - }, - { - "author": "philiprodriguez", - "title": "ComfyUI-HunyuanImageLatentToVideoLatent", - "reference": "https://github.com/philiprodriguez/ComfyUI-HunyuanImageLatentToVideoLatent", - "files": [ - "https://github.com/philiprodriguez/ComfyUI-HunyuanImageLatentToVideoLatent" - ], - "install_type": "git-clone", - "description": "A ComfyUI node which copies a given latent's samples tensor along the time axis ((length - 1) // 4) + 1 times to form a longer latent (see EmptyHunyuanLatentVideo's implementation for why this specific number of copies is used) and then prepares a noise_mask tensor of the same shape such that the value of the mask for a given time step is given by the function at https://www.desmos.com/calculator/vhw74mr1vh." - }, - { - "author": "benjiyaya", - "title": "ComfyUI-HunyuanVideoImagesGuider", - "reference": "https://github.com/benjiyaya/ComfyUI-HunyuanVideoImagesGuider", - "files": [ - "https://github.com/benjiyaya/ComfyUI-HunyuanVideoImagesGuider" - ], - "install_type": "git-clone", - "description": "A specialized node for ComfyUI that enable advanced motion and animation capabilities for image as guider for video processing In Hunyuan Video." - }, - { - "author": "Zeks", - "title": "comfyui-rapidfire", - "reference": "https://github.com/Zeks/comfyui-rapidfire", - "files": [ - "https://github.com/Zeks/comfyui-rapidfire" - ], - "install_type": "git-clone", - "description": "A set of nodes for rapidfiring the half backed latents, cleaning up obvious bad generations and automatically queueing the rest to fully generate." - }, - { - "author": "meanin2", - "title": "ComfyUI Watermark Image Node", - "reference": "https://github.com/meanin2/comfyui-watermarking", - "files": [ - "https://github.com/meanin2/comfyui-watermarking" - ], - "install_type": "git-clone", - "description": "This custom node allows you to overlay a watermark image onto an existing image within ComfyUI." - }, - { - "author": "Kurdknight", - "title": "KurdKnight ComfyUI System Check Node", - "reference": "https://github.com/Kurdknight/Kurdknight_comfycheck", - "files": [ - "https://github.com/Kurdknight/Kurdknight_comfycheck" - ], - "install_type": "git-clone", - "description": "A comprehensive system information node for ComfyUI that provides detailed information about your system, GPU, CUDA, and AI libraries configuration. Works on both Windows and Linux systems." - }, - { - "author": "ThepExcel", - "title": "Multiline Text Choice Node for ComfyUI", - "reference": "https://github.com/ThepExcel/aiangelgallery-comfyui", - "files": [ - "https://github.com/ThepExcel/aiangelgallery-comfyui" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI allows users to input multiline text and select a specific line by its number. The node processes the input and returns the selected line along with its index." - }, - { - "author": "BoyuanJiang", - "title": "FitDiT[official] - High-fidelity Virtual Try-on", - "id": "fitdit", - "reference": "https://github.com/BoyuanJiang/FitDiT/tree/FitDiT-ComfyUI", - "files": [ - "https://github.com/BoyuanJiang/FitDiT-ComfyUI" - ], - "install_type": "git-clone", - "description": "FitDiT is designed for high-fidelity virtual try-on using Diffusion Transformers (DiT)." - }, - { - "author": "nofunstudio", - "title": "Node_Fun_ComfyUI", - "reference": "https://github.com/nofunstudio/Node_Fun_ComfyUI", - "files": [ - "https://github.com/nofunstudio/Node_Fun_ComfyUI" - ], - "install_type": "git-clone", - "description": "ComfyUI Custom Node Pack Layered Infinite Zoom Node" - }, - { - "author": "PixelML", - "title": "PixelML ComfyUI Nodes", - "reference": "https://github.com/PixelML/ComfyUI-PixelML-CustomNodes", - "files": [ - "https://github.com/PixelML/ComfyUI-PixelML-CustomNodes" - ], - "install_type": "git-clone", - "description": "A collection of custom nodes for ComfyUI focused on variable handling and workflow automation." - }, - { - "author": "shabri-arrahim", - "title": "ComfyUI Safety Checker", - "reference": "https://github.com/shabri-arrahim/ComfyUI-Safety-Checker", - "files": [ - "https://github.com/shabri-arrahim/ComfyUI-Safety-Checker" - ], - "install_type": "git-clone", - "description": "This project provides custom safety checkers for image classification using Falcons AI and CompVis models. The safety checkers are designed to detect and filter out NSFW content from images." - }, - { - "author": "shenduldh", - "title": "ComfyUI-Lightning", - "reference": "https://github.com/shenduldh/ComfyUI-Lightning", - "files": [ - "https://github.com/shenduldh/ComfyUI-Lightning" - ], - "install_type": "git-clone", - "description": "Accelerate FLUX inferencing speed for ComfyUI." - }, - { - "author": "theAdamColton", - "title": "ComfyUI-texflow-extension", - "reference": "https://github.com/theAdamColton/ComfyUI-texflow-extension", - "files": [ - "https://github.com/theAdamColton/ComfyUI-texflow-extension" - ], - "install_type": "git-clone", - "description": "This is the ComfyUI extension for use with texflow. It provides two new nodes, 'Load Texflow Depth Image' and 'Save Texflow Image'.\nFor more information see [a/the main texflow repo](https://github.com/theAdamColton/texflow/)" - }, - { - "author": "hmwl", - "title": "ComfyUI_zip", - "reference": "https://github.com/hmwl/ComfyUI_zip", - "files": [ - "https://github.com/hmwl/ComfyUI_zip" - ], - "install_type": "git-clone", - "description": "ComfyUI zip package image processing" - }, - { - "author": "nisimjoseph", - "title": "ComfyUI OpenAI Prompter", - "reference": "https://github.com/nisimjoseph/ComfyUI_OpenAI-Prompter", - "files": [ - "https://github.com/nisimjoseph/ComfyUI_OpenAI-Prompter" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that generates creative and detailed prompts using OpenAI's GPT models." - }, - { - "author" : "ngosset", - "title": "ImageSimilarity", - "id": "imageSimilarity", - "reference": "https://github.com/ngosset/ComfyUI-ImageSimilarity", - "files": [ - "https://github.com/ngosset/ComfyUI-ImageSimilarity" - ], - "install_type": "git-clone", - "description": "Uses ResNet embeddings and cosine similarity to compare the likeness of two images." - }, - { - "author": "Bellzs", - "title": "ComfyUI-LoRA-Assistant", - "reference": "https://github.com/Bellzs/ComfyUI-LoRA-Assistant", - "files": [ - "https://github.com/Bellzs/ComfyUI-LoRA-Assistant" - ], - "install_type": "git-clone", - "description": "The plug-in is designed to automatically save the association between the LoRA model and Trigger words to a Local JSON file so that when the LoRA model is loaded, the associated trigger words can be automatically loaded via the node 'LoRA Trigger Local' without manual input." - }, - { - "author" : "strand1", - "title": "ComfyUI-Autogen", - "reference": "https://github.com/strand1/ComfyUI-Autogen", - "files": [ - "https://github.com/strand1/ComfyUI-Autogen" - ], - "install_type": "git-clone", - "description": "A collection of nodes for using Autogen with ComfyUI\n[a/AutoGen](https://github.com/microsoft/AutoGen): assistant agents, group chats, code executor, etc." - }, - { - "author": "hellercommaa", - "title": "Hunyuan Video Resolutions", - "id": "hunyuanvideoresolutions", - "reference": "https://github.com/HellerCommaA/ComfyUI-VideoResolutions", - "files": [ - "https://github.com/HellerCommaA/ComfyUI-VideoResolutions" - ], - "install_type": "git-clone", - "description": "A super simple node that outputs common video resolutions as 2 integers for Hunyuan and others!" - }, - { - "author": "benjiyaya", - "title": "ComfyUI-KokoroTTS", - "reference": "https://github.com/benjiyaya/ComfyUI-KokoroTTS", - "files": [ - "https://github.com/benjiyaya/ComfyUI-KokoroTTS" - ], - "install_type": "git-clone", - "description": "A Text To Speech node using Kokoro TTS in ComfyUI." - }, - { - "author": "WangPengxing", - "title": "ComfyUI WPX Nodes", - "reference": "https://github.com/WangPengxing/ComfyUI_WPX_Node", - "files": [ - "https://github.com/WangPengxing/ComfyUI_WPX_Node" - ], - "install_type": "git-clone", - "description": "A custom node collection for ComfyUI, offering enhanced image processing features." - }, - { - "author": "PixelFunAI", - "title": "Hunyuan LoRA Loader Nodes", - "reference": "https://github.com/PixelFunAI/ComfyUI_PixelFun", - "files": [ - "https://github.com/PixelFunAI/ComfyUI_PixelFun" - ], - "install_type": "git-clone", - "description": "This collection provides four additional nodes for loading and managing Hunyuan Video LoRAs in ComfyUI" - }, - { - "author": "Burgstall-labs", - "title": "ComfyUI-BS_Kokoro-onnx", - "reference": "https://github.com/Burgstall-labs/ComfyUI-BS_Kokoro-onnx", - "files": [ - "https://github.com/Burgstall-labs/ComfyUI-BS_Kokoro-onnx" - ], - "install_type": "git-clone", - "description": "A ComfyUI wrapper for [a/Kokoro-onnx](https://github.com/thewh1teagle/kokoro-onnx)" - }, - { - "author": "Kidev", - "title": "ComfyUI Fisheye Effects Nodes", - "reference": "https://github.com/Kidev/ComfyUI-Fisheye-effects", - "files": [ - "https://github.com/Kidev/ComfyUI-Fisheye-effects" - ], - "install_type": "git-clone", - "description": "Provides tools for applying and removing fisheye lens effects from images." - }, - { - "author": "feixuetuba", - "title": "Spleeter", - "reference": "https://github.com/feixuetuba/Spleeter", - "files": [ - "https://github.com/feixuetuba/Spleeter" - ], - "install_type": "git-clone", - "description": "This is a ComfyUI plugin based on [a/Spleeter](https://github.com/deezer/spleete). The model files are available on BaiduNetDisk. After downloading the model, place it in the checkpoints directory." - }, - { - "author": "aidec", - "title": "Comfyui_TextBatch_aidec", - "reference": "https://github.com/aidec/Comfyui_TextBatch_aidec", - "files": [ - "https://github.com/aidec/Comfyui_TextBatch_aidec" - ], - "install_type": "git-clone", - "description": "The Text Queue Processor can split text into groups line by line for batch processing (unfinished, with noticeable bugs still being fixed). Currently, on the first run, it may only process one item. Once that is completed, running it again usually works fine. After each run, the `start_index` needs to be manually reset. Occasionally, strange issues occur, such as multiple queues being added at once, while other times it works perfectly fine. The potential causes are still under investigation." - }, - { - "author": "asutermo", - "title": "Try Off w/ Flux and CatVTON", - "id": "tryoffflux", - "reference": "https://github.com/asutermo/ComfyUI-Flux-TryOff", - "files": [ - "https://github.com/asutermo/ComfyUI-Flux-TryOff" - ], - "install_type": "git-clone", - "description": "This is a set of nodes to make it possible to extract garments/clothing from models to apply elsewhere." - }, - { - "author": "bugltd", - "title": "ComfyLab Pack", - "id": "comfylab-pack", - "reference": "https://github.com/bugltd/ComfyLab-Pack", - "files": [ - "https://github.com/bugltd/ComfyLab-Pack" - ], - "nodename_pattern": " \\(lab\\)$", - "install_type": "git-clone", - "description": "Nodes: XY Plot with many options, Output Config (JSON / JSON5 / YAML), Queue, Format String, List utilities, Input nodes, ...." - }, - { - "author": "duchamps0305", - "title": "comfyui-white-extractor", - "reference": "https://github.com/duchamps0305/comfyui-white-extractor", - "files": [ - "https://github.com/duchamps0305/comfyui-white-extractor" - ], - "install_type": "git-clone", - "description": "a simple white extractor node for comfyui." - }, - { - "author": "DJ-Tribefull", - "title": "Comfyui FOCUS nodes", - "reference": "https://github.com/DJ-Tribefull/Comfyui_FOCUS_nodes", - "files": [ - "https://github.com/DJ-Tribefull/Comfyui_FOCUS_nodes" - ], - "install_type": "git-clone", - "description": "This is a small collection of nodes designed for efficiency and the reduction of screen clutter. I work primarily with a two-stage SDXL workflow, so some of the nodes are tailored to that, but many of the most useful nodes can be used in any context." - }, - { - "author": "KLL535", - "title": "ComfyUI_SimpleButcher", - "reference": "https://github.com/KLL535/ComfyUI_SimpleButcher", - "files": [ - "https://github.com/KLL535/ComfyUI_SimpleButcher" - ], - "install_type": "git-clone", - "description": "I needed to automate the process of generating images and I did not find ready-made simple solutions for this, so I wrote my own. The idea is to repeat the functionality of forge: the script 'Prompts from file or textbox'. So that you can easily sort through pre-prepared lists of prompts, lora, styles, and connect text as you like. The resulting images must be compatible with Forge, and ideally, no different from it. The problem is that Forge uses the internal name from the Lora file metadata as the lora name, not the file name. Therefore, all existing solutions simply did not understand my templates. I would also like it if lore could be written in any order and any quantity in a text file in this format: or and this would be applied automatically, without the need to create nodes for each lora separately. I would like the civitai site to understand metadata, the closest to this was the alexopus/ComfyUI-Image-Saver project, but it loses lora written in Forge style, by internal name." - }, - { - "author": "mango125", - "title": "ComfyUI-Mango-Random", - "reference": "https://github.com/mango-rgb/ComfyUI-Mango-Random-node", - "files": [ - "https://github.com/mango-rgb/ComfyUI-Mango-Random-node" - ], - "install_type": "git-clone", - "description": "🥭 Mango Random Nodes - A collection of random file nodes for ComfyUI" - }, - { - "author": "meanin2", - "title": "ComfyUI Image Watermarking Node", - "reference": "https://github.com/meanin2/comfyui-MGnodes", - "files": [ - "https://github.com/meanin2/comfyui-MGnodes" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that allows you to add image watermarks with advanced controls for transparency, positioning, and color manipulation." - }, - { - "author": "WUYUDING2583", - "title": "Save Image With Callback", - "reference": "https://github.com/WUYUDING2583/ComfyUI-Save-Image-Callback", - "files": [ - "https://github.com/WUYUDING2583/ComfyUI-Save-Image-Callback" - ], - "install_type": "git-clone", - "description": "This node enables integration between ComfyUI and external services by adding callback capabilities to the image saving process. When an image is saved, the node automatically call your webhook with your specified URL with custom data." - }, - { - "author": "GoingAI1998", - "title": "ComfyUI Web Canvas Node", - "reference": "https://github.com/GoingAI1998/Comfyui_imgcanvas", - "files": [ - "https://github.com/GoingAI1998/Comfyui_imgcanvas" - ], - "install_type": "git-clone", - "description": "ComfyUI_imgcanvas At present, I have not used the useful comfyui custom node about layer mixing, and I have written a comfyui runtime automatic pop-up window for layer editing node" - }, - { - "author": "fblissjr", - "title": "ComfyUI-EmbeddingPipelineAnalytics", - "reference": "https://github.com/fblissjr/ComfyUI-EmbeddingPipelineAnalytics", - "files": [ - "https://github.com/fblissjr/ComfyUI-EmbeddingPipelineAnalytics" - ], - "install_type": "git-clone", - "description": "this repo is to capture end-to-end data, metadata, and embeddings for ComfyUI workflows, specifically HunyuanVideo to start." - }, - { - "author": "vincentfs", - "title": "ComfyUI-ArchiGraph", - "id": "archigraph", - "reference": "https://github.com/vincentfs/ComfyUI-ArchiGraph", - "files": [ - "https://github.com/vincentfs/ComfyUI-ArchiGraph" - ], - "install_type": "git-clone", - "description": "Implementation of architectural related graph algorithm in ComfyUI." - }, - { - "author": "lingha", - "title": "comfyui_kj", - "id": "comfyui_kj", - "reference": "https://github.com/XieChengYuan/comfyui_kj", - "files": [ - "https://github.com/XieChengYuan/comfyui_kj" - ], - "install_type": "git-clone", - "description": "comfyui_kj, A tool that can package workflows into projects and publish them to a WeChat Mini Program named Kaji, allowing charges to be collected from users." - }, - { - "author": "ziwang-com", - "title": "comfyui-deepseek-r1", - "reference": "https://github.com/ziwang-com/comfyui-deepseek-r1", - "files": [ - "https://github.com/ziwang-com/comfyui-deepseek-r1" - ], - "install_type": "git-clone", - "description": "Comfyui-deepseek-r1 Node Plugin" - }, - { - "author": "davidgressett", - "title": "CartesianCSVNode for ComfyUI", - "reference": "https://github.com/davidgressett/comfyui-systemlevel", - "files": [ - "https://github.com/davidgressett/comfyui-systemlevel" - ], - "install_type": "git-clone", - "description": "This custom node allows you to load data from one or more CSV files, then feed that data into subsequent nodes in a ComfyUI workflow." - }, - { - "author": "SshunWang", - "title": "ComfyUI for CosyVoice", - "reference": "https://github.com/SshunWang/ComfyUI_CosyVoice", - "files": [ - "https://github.com/SshunWang/ComfyUI_CosyVoice" - ], - "install_type": "git-clone", - "description": "Support both CosyVoice1.0 and CosyVoice2.0. Referenced [a/CosyVoice-ComfyUI](https://github.com/AIFSH/CosyVoice-ComfyUI), the following modifications have been made: Add support for CosyVoice2.0, Add whether to use stream processing options, Use speed control by CosyVoice, Add model path check to avoid duplicate downloads, Provide two ways of use" - }, - { - "author": "Kayarte", - "title": "AudioDriven-Latent-Space-Tools-for-ComfyUI", - "reference": "https://github.com/Kayarte/AudioDriven-Latent-Space-Tools-for-ComfyUI", - "files": [ - "https://github.com/Kayarte/AudioDriven-Latent-Space-Tools-for-ComfyUI" - ], - "install_type": "git-clone", - "description": "This is a custom node for ComfyUI that analyzes audio files using Librosa, extracting tempo, beat times, energy levels, and timestamps. The analysis results can be displayed in a text box within ComfyUI." - }, - { - "author": "MontagenAI", - "title": "ComfyUI-Montagen", - "reference": "https://github.com/MontagenAI/ComfyUI-Montagen", - "files": [ - "https://github.com/MontagenAI/ComfyUI-Montagen" - ], - "install_type": "git-clone", - "description": "ComfyUI-Montagen is an extension designed to enhance the video editing ability of ComfyUI with custom nodes and Montagen. It offers basic video editing features and integrates media clips with the ComfyUI workflow. Furthermore, this extension unlocks the full potential of AI-based video generation and task automation." - }, - { - "author": "Xiangyu-CAS", - "title": "HandFixer", - "reference": "https://github.com/Xiangyu-CAS/HandFixer", - "files": [ - "https://github.com/Xiangyu-CAS/HandFixer" - ], - "install_type": "git-clone", - "description": "This project addresses the issue of numerous hand defects in AI-generated portrait images by using a workflow based on FLUX/FLUX-Fill to correct hand deformities. It is effective for both real-life and anime images, including those generated by DiT/SDXL/Midjourney. It supports diffusers, gradio, ComfyUI, and more" - }, - { - "author": "cake-ml", - "title": "TinySanaPreview", - "reference": "https://github.com/cake-ml/tiny-sana-preview", - "files": [ - "https://github.com/cake-ml/tiny-sana-preview" - ], - "install_type": "git-clone", - "description": "TinySanaPreview is a custom ComfyUI node that implements real-time previews during generation for Sana diffusion models." - }, - { - "author": "huixingyun", - "title": "ComfyUI-HX-Captioner", - "reference": "https://github.com/huixingyun/ComfyUI-HX-Captioner", - "files": [ - "https://github.com/huixingyun/ComfyUI-HX-Captioner" - ], - "install_type": "git-clone", - "description": "A ComfyUI plugin library based on [a/https://github.com/stavsap/comfyui-ollama](https://github.com/stavsap/comfyui-ollama), with the Ollama cluster provided by Huixingyun." - }, - { - "author": "bradsec", - "title": "ComfyUI_StringEssentials", - "reference": "https://github.com/bradsec/ComfyUI_StringEssentials", - "files": [ - "https://github.com/bradsec/ComfyUI_StringEssentials" - ], - "install_type": "git-clone", - "description": "Essential string manipulation nodes for ComfyUI." - }, - { - "author": "Dr.Positliver", - "title": "comfyui-zegr", - "reference": "https://github.com/Positliver/comfyui-zegr", - "files": [ - "https://github.com/Positliver/comfyui-zegr" - ], - "install_type": "git-clone", - "description": "comfyui share models to oss conveniently." - }, - { - "author": "danielw", - "title": "Custom nodes for llm chat with optional image input", - "id": "llm-api", - "reference": "https://github.com/tianyuw/ComfyUI-LLM-API", - "files": [ - "https://github.com/tianyuw/ComfyUI-LLM-API" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that enables Large Language Model (LLM) chat interactions with optional image input support." - }, - { - "author": "JohnDoeSmithee", - "reference": "https://github.com/JohnDoeSmithee/ComfyUI-SoX-Mixdown", - "files": [ - "https://github.com/JohnDoeSmithee/ComfyUI-SoX-Mixdown" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node for sox's mixdown function such as 'sox --combine inputfile1.wav inputfile2.wav outputfile.wav'." - }, - { - "author": "JTriggerFish", - "title": "Comfy Latent Tools", - "reference": "https://github.com/JTriggerFish/ComfyLatentTools", - "files": [ - "https://github.com/JTriggerFish/ComfyLatentTools" - ], - "install_type": "git-clone", - "description": "A set of tools for manipulating latent tensors in ComfyUI" - }, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { - "author": "Ser-Hilary", - "title": "SDXL_sizing", - "reference": "https://github.com/Ser-Hilary/SDXL_sizing", - "files": [ - "https://raw.githubusercontent.com/Ser-Hilary/SDXL_sizing/main/conditioning_sizing_for_SDXL.py" - ], - "install_type": "copy", - "description": "Nodes:sizing_node. Size calculation node related to image size in prompts supported by SDXL." - }, - { - "author": "ailex000", - "title": "Image Gallery", - "reference": "https://github.com/ailex000/ComfyUI-Extensions", - "js_path": "image-gallery", - "files": [ - "https://raw.githubusercontent.com/ailex000/ComfyUI-Extensions/main/image-gallery/imageGallery.js" - ], - "install_type": "copy", - "description": "Custom javascript extensions for better UX for ComfyUI. Supported nodes: PreviewImage, SaveImage. Double click on image to open." - }, - { - "author": "rock-land", - "title": "graphNavigator", - "reference": "https://github.com/rock-land/graphNavigator", - "js_path": "graphNavigator", - "files": [ - "https://raw.githubusercontent.com/rock-land/graphNavigator/main/graphNavigator/graphNavigator.js" - ], - "install_type": "copy", - "description": "ComfyUI Web Extension for saving views and navigating graphs." - }, - { - "author": "diffus3", - "title": "diffus3/ComfyUI-extensions", - "reference": "https://github.com/diffus3/ComfyUI-extensions", - "js_path": "diffus3", - "files": [ - "https://raw.githubusercontent.com/diffus3/ComfyUI-extensions/main/multiReroute/multireroute.js", - "https://raw.githubusercontent.com/diffus3/ComfyUI-extensions/main/setget/setget.js" - ], - "install_type": "copy", - "description": "Extensions: subgraph, setget, multiReroute" - }, - { - "author": "m957ymj75urz", - "title": "m957ymj75urz/ComfyUI-Custom-Nodes", - "reference": "https://github.com/m957ymj75urz/ComfyUI-Custom-Nodes", - "js_path": "m957ymj75urz", - "files": [ - "https://raw.githubusercontent.com/m957ymj75urz/ComfyUI-Custom-Nodes/main/clip-text-encode-split/clip_text_encode_split.py", - "https://raw.githubusercontent.com/m957ymj75urz/ComfyUI-Custom-Nodes/main/colors/colors.js" - ], - "install_type": "copy", - "description": "Nodes: RawText, RawTextCLIPEncode, RawTextCombine, RawTextReplace, Extension: m957ymj75urz.colors" - }, - { - "author": "Bikecicle", - "title": "Waveform Extensions", - "reference": "https://github.com/Bikecicle/ComfyUI-Waveform-Extensions", - "files": [ - "https://raw.githubusercontent.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/main/EXT_AudioManipulation.py", - "https://raw.githubusercontent.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/main/EXT_VariationUtils.py" - ], - "install_type": "copy", - "description": "Some additional audio utilites for use on top of Sample Diffusion ComfyUI Extension" - }, - { - "author": "dawangraoming", - "title": "KSampler GPU", - "reference": "https://github.com/dawangraoming/ComfyUI_ksampler_gpu", - "files": [ - "https://raw.githubusercontent.com/dawangraoming/ComfyUI_ksampler_gpu/main/ksampler_gpu.py" - ], - "install_type": "copy", - "description": "KSampler is provided, based on GPU random noise" - }, - { - "author": "fitCorder", - "title": "fcSuite", - "reference": "https://github.com/fitCorder/fcSuite", - "files": [ - "https://raw.githubusercontent.com/fitCorder/fcSuite/main/fcSuite.py" - ], - "install_type": "copy", - "description": "fcFloatMatic is a custom module, that when configured correctly will increment through the lines generating you loras at different strengths. The JSON file will load the config." - }, - { - "author": "lordgasmic", - "title": "Wildcards", - "reference": "https://github.com/lordgasmic/ComfyUI-Wildcards", - "files": [ - "https://raw.githubusercontent.com/lordgasmic/comfyui_wildcards/master/wildcards.py" - ], - "install_type": "copy", - "description": "Nodes:CLIPTextEncodeWithWildcards. This wildcard node is a wildcard node that operates based on the seed." - }, - { - "author": "throttlekitty", - "title": "SDXLCustomAspectRatio", - "reference": "https://github.com/throttlekitty/SDXLCustomAspectRatio", - "files": [ - "https://raw.githubusercontent.com/throttlekitty/SDXLCustomAspectRatio/main/SDXLAspectRatio.py" - ], - "install_type": "copy", - "description": "A quick and easy ComfyUI custom node for setting SDXL-friendly aspect ratios." - }, - { - "author": "s1dlx", - "title": "comfy_meh", - "reference": "https://github.com/s1dlx/comfy_meh", - "files": [ - "https://raw.githubusercontent.com/s1dlx/comfy_meh/main/meh.py" - ], - "install_type": "copy", - "description": "Advanced merging methods." - }, - { - "author": "tudal", - "title": "Hakkun-ComfyUI-nodes", - "reference": "https://github.com/tudal/Hakkun-ComfyUI-nodes", - "files": [ - "https://raw.githubusercontent.com/tudal/Hakkun-ComfyUI-nodes/main/hakkun_nodes.py" - ], - "install_type": "copy", - "description": "Nodes: Prompt parser. ComfyUI extra nodes. Mostly prompt parsing." - }, - { - "author": "SadaleNet", - "title": "ComfyUI A1111-like Prompt Custom Node Solution", - "reference": "https://github.com/SadaleNet/CLIPTextEncodeA1111-ComfyUI", - "files": [ - "https://raw.githubusercontent.com/SadaleNet/CLIPTextEncodeA1111-ComfyUI/master/custom_nodes/clip_text_encoder_a1111.py" - ], - "install_type": "copy", - "description": "Nodes: CLIPTextEncodeA1111, RerouteTextForCLIPTextEncodeA1111." - }, - { - "author": "wsippel", - "title": "SDXLResolutionPresets", - "reference": "https://github.com/wsippel/comfyui_ws", - "files": [ - "https://raw.githubusercontent.com/wsippel/comfyui_ws/main/sdxl_utility.py" - ], - "install_type": "copy", - "description": "Nodes: SDXLResolutionPresets. Easy access to the officially supported resolutions, in both horizontal and vertical formats: 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640" - }, - { - "author": "nicolai256", - "title": "comfyUI_Nodes_nicolai256", - "id": "nicoali256", - "reference": "https://github.com/nicolai256/comfyUI_Nodes_nicolai256", - "files": [ - "https://raw.githubusercontent.com/nicolai256/comfyUI_Nodes_nicolai256/main/yugioh-presets.py" - ], - "install_type": "copy", - "description": "Nodes: yugioh_Presets. by Nicolai256 inspired by throttlekitty SDXLAspectRatio" - }, - { - "author": "Onierous", - "title": "QRNG_Node_ComfyUI", - "id": "qrng", - "reference": "https://github.com/Onierous/QRNG_Node_ComfyUI", - "files": [ - "https://raw.githubusercontent.com/Onierous/QRNG_Node_ComfyUI/main/qrng_node.py" - ], - "install_type": "copy", - "description": "Nodes: QRNG Node CSV. A node that takes in an array of random numbers from the ANU QRNG API and stores them locally for generating quantum random number noise_seeds in ComfyUI" - }, - { - "author": "ntdviet", - "title": "ntdviet/comfyui-ext", - "reference": "https://github.com/ntdviet/comfyui-ext", - "files": [ - "https://raw.githubusercontent.com/ntdviet/comfyui-ext/main/custom_nodes/gcLatentTunnel/gcLatentTunnel.py" - ], - "install_type": "copy", - "description": "Nodes:LatentGarbageCollector. This ComfyUI custom node flushes the GPU cache and empty cuda interprocess memory. It's helpfull for low memory environment such as the free Google Colab, especially when the workflow VAE decode latents of the size above 1500x1500." - }, - { - "author": "alkemann", - "title": "alkemann nodes", - "id": "alkemann", - "reference": "https://gist.github.com/alkemann/7361b8eb966f29c8238fd323409efb68", - "files": [ - "https://gist.githubusercontent.com/alkemann/7361b8eb966f29c8238fd323409efb68/raw/f9605be0b38d38d3e3a2988f89248ff557010076/alkemann.py" - ], - "install_type": "copy", - "description": "Nodes:Int to Text, Seed With Text, Save A1 Image." - }, - { - "author": "catscandrive", - "title": "Image loader with subfolders", - "id": "imgsubfolders", - "reference": "https://github.com/catscandrive/comfyui-imagesubfolders", - "files": [ - "https://raw.githubusercontent.com/catscandrive/comfyui-imagesubfolders/main/loadImageWithSubfolders.py" - ], - "install_type": "copy", - "description": "Adds an Image Loader node that also shows images in subfolders of the default input directory" - }, - { - "author": "Smuzzies", - "title": "Chatbox Overlay node for ComfyUI", - "id": "chatbox-overlay", - "reference": "https://github.com/Smuzzies/comfyui_chatbox_overlay", - "files": [ - "https://raw.githubusercontent.com/Smuzzies/comfyui_chatbox_overlay/main/chatbox_overlay.py" - ], - "install_type": "copy", - "description": "Nodes: Chatbox Overlay. Custom node for ComfyUI to add a text box over a processed image before save node." - }, - { - "author": "CaptainGrock", - "title": "ComfyUIInvisibleWatermark", - "id": "invisible-watermark-grock", - "reference": "https://github.com/CaptainGrock/ComfyUIInvisibleWatermark", - "files": [ - "https://raw.githubusercontent.com/CaptainGrock/ComfyUIInvisibleWatermark/main/Invisible%20Watermark.py" - ], - "install_type": "copy", - "description": "Nodes:Apply Invisible Watermark, Extract Watermark. Adds up to 12 characters encoded into an image that can be extracted." - }, - { - "author": "LZC", - "title": "Hayo comfyui nodes", - "id": "lzcnodes", - "reference": "https://github.com/1shadow1/hayo_comfyui_nodes", - "files": [ - "https://raw.githubusercontent.com/1shadow1/hayo_comfyui_nodes/main/LZCNodes.py" - ], - "install_type": "copy", - "description": "Nodes:tensor_trans_pil, Make Transparent mask, MergeImages, words_generatee, load_PIL image" - }, - { - "author": "underclockeddev", - "title": "Preview Subselection Node for ComfyUI", - "id": "preview-subselection", - "reference": "https://github.com/underclockeddev/ComfyUI-PreviewSubselection-Node", - "files": [ - "https://raw.githubusercontent.com/underclockeddev/ComfyUI-PreviewSubselection-Node/master/preview_subselection.py" - ], - "install_type": "copy", - "description": "A node which takes in x, y, width, height, total width, and total height, in order to accurately represent the area of an image which is covered by area-based conditioning." - }, - { - "author": "underclockeddev", - "title": "BrevImage", - "id": "brevimage", - "reference": "https://github.com/bkunbargi/BrevImage", - "files": [ - "https://raw.githubusercontent.com/bkunbargi/BrevImage/main/BrevLoadImage.py" - ], - "install_type": "copy", - "description": "Nodes:BrevImage. ComfyUI Load Image From URL" - }, - { - "author": "jw782cn", - "title": "ComfyUI-Catcat", - "id": "catcat", - "reference": "https://github.com/jw782cn/ComfyUI-Catcat", - "files": [ - "https://github.com/jw782cn/ComfyUI-Catcat" - ], - "install_type": "copy", - "description": "Extension to show random cat GIFs while queueing prompt." - }, - { - "author": "barckley75", - "title": "comfyUI_DaVinciResolve", - "reference": "https://github.com/barckley75/comfyUI_DaVinciResolve", - "files": [ - "https://raw.githubusercontent.com/barckley75/comfyUI_DaVinciResolve/main/custom_nodes/node_text_to_speech.py", - "https://raw.githubusercontent.com/barckley75/comfyUI_DaVinciResolve/refs/heads/main/custom_nodes/nodes_phi_3_contitioning.py", - "https://raw.githubusercontent.com/barckley75/comfyUI_DaVinciResolve/main/custom_nodes/save_audio_to_davinci.py", - "https://raw.githubusercontent.com/barckley75/comfyUI_DaVinciResolve/main/custom_nodes/save_image_to_davinci.py" - ], - "install_type": "copy", - "description": "Nodes:TextToSpeech, phy_3_conditioning, SaveAudioToDaVinci, SaveImageToDaVinci.\nNOTE:In order to use DaVinci node you must have DaVinci Resolve Studio connected to the API. For more information check the help seciton in DaVinci Resolve Studio HELP>DOCUMENTATION>DEVELOPER. It will open a folder, search for scripting and the for README.txt file, the API documentation." - }, - { - "author": "Limbicnation", - "title": "ComfyUIDepthEstimation", - "reference": "https://github.com/Limbicnation/ComfyUIDepthEstimation", - "files": [ - "https://raw.githubusercontent.com/Limbicnation/ComfyUIDepthEstimation/main/depth_estimation_node.py" - ], - "pip": ["transformers"], - "install_type": "copy", - "description": "A custom depth estimation node for ComfyUI using transformer models. It integrates depth estimation with automatic gamma correction, contrast adjustment, and edge detection, based on the [a/TransformDepth](https://github.com/Limbicnation/TransformDepth) repository." - }, - { - "author": "seghier", - "title": "ComfyUI_LibreTranslate", - "reference": "https://github.com/seghier/ComfyUI_LibreTranslate", - "files": [ - "https://raw.githubusercontent.com/seghier/ComfyUI_LibreTranslate/main/translate_node.py" - ], - "install_type": "copy", - "description": "Use LibreTranslation in ComfyUI [a/https://github.com/LibreTranslate/LibreTranslate](https://github.com/LibreTranslate/LibreTranslate)" - }, - { - "author": "ultimatech-cn", - "title": "FaceSimilarity", - "reference": "https://github.com/ultimatech-cn/FaceSimilarity", - "files": [ - "https://raw.githubusercontent.com/ultimatech-cn/FaceSimilarity/main/faceSimilarity.py" - ], - "install_type": "copy", - "description": "A ComfyUI custom node for face comparison. This node utilizes Face++'s facial recognition and comparison algorithms by directly calling the Face++ API. Its usage in the workflow is as follows:" - }, - { - "author": "folkghost", - "title": "CSV Search Node", - "reference": "https://github.com/folkghost/comfyui_search_csv", - "files": [ - "https://raw.githubusercontent.com/folkghost/comfyui_search_csv/main/search_csv_node.py" - ], - "install_type": "copy", - "description": "This repository contains a custom node for ComfyUI that allows searching for a keyword in the first column of a CSV file and returning a value from a specified column in that row. The node is designed to be modular and fit within the node-based workflow of ComfyUI." - }, - { - "author": "bobsblazed", - "title": "Bobs_Latent_Optimizer", - "reference": "https://github.com/BobsBlazed/Bobs_Latent_Optimizer", - "files": [ - "https://github.com/BobsBlazed/Bobs_Latent_Optimizer/raw/refs/heads/main/Bobs_Latent_Optimizer.py" - ], - "install_type": "copy", - "description": "This custom node for ComfyUI is designed to optimize latent generation for use with FLUX, SDXL and SD3. It provides flexible control over aspect ratios, megapixel sizes, and upscale factors, allowing users to dynamically create latents that fit specific tiling and resolution needs." - }, - { - "author": "SimonHeese", - "title": "ComfyUI_AnimationNodes", - "reference": "https://github.com/SimonHeese/ComfyUI_AnimationNodes", - "files": [ - "https://github.com/SimonHeese/ComfyUI_AnimationNodes/raw/refs/heads/main/animated_offset_pad.py", - "https://github.com/SimonHeese/ComfyUI_AnimationNodes/raw/refs/heads/main/animated_rotation_zoom.py" - ], - "install_type": "copy", - "description": "NODES:Animated Offset Padding, Animated Rotation & Zoom" - }, - { - "author": "duskfallcrew", - "title": "Embedding Merge for ComfyUI", - "reference": "https://github.com/duskfallcrew/Comfyui_EmbeddingMerge_Node", - "files": [ - "https://github.com/duskfallcrew/Comfyui_EmbeddingMerge_Node/raw/refs/heads/main/merge_embed.py" - ], - "install_type": "copy", - "description": "Extremely inspired and forked from: [a/https://github.com/klimaleksus/stable-diffusion-webui-embedding-merge](https://github.com/klimaleksus/stable-diffusion-webui-embedding-merge)" - }, - { - "author": "ptmaster", - "title": "ComfyUI-Load-Diffusion-Model-to-Muti-GPUs", - "reference": "https://github.com/ptmaster/ComfyUI-Load-Diffusion-Model-to-Muti-GPUs", - "files": [ - "https://github.com/ptmaster/ComfyUI-Load-Diffusion-Model-to-Muti-GPUs/raw/refs/heads/main/Load%20Diffusion%20Model%20into%20Muti%20GPUs.py" - ], - "install_type": "copy", - "description": "NODES: OverrideLoadedDiffusionDevice.\nI happen to have two graphics cards, and I want to load models into another graphics card in Comfyui, so I designed this small node." - }, - - - { - "author": "theally", - "title": "TheAlly's Custom Nodes", - "id": "ally", - "reference": "https://civitai.com/models/19625?modelVersionId=23296", - "files": [ - "https://civitai.com/api/download/models/25114", - "https://civitai.com/api/download/models/24679", - "https://civitai.com/api/download/models/24154", - "https://civitai.com/api/download/models/23884", - "https://civitai.com/api/download/models/23649", - "https://civitai.com/api/download/models/23467", - "https://civitai.com/api/download/models/23296" - ], - "install_type": "unzip", - "description": "Custom nodes for ComfyUI by TheAlly." - }, - { - "author": "xss", - "title": "Custom Nodes by xss", - "id": "xss", - "reference": "https://civitai.com/models/24869/comfyui-custom-nodes-by-xss", - "files": [ - "https://civitai.com/api/download/models/32717", - "https://civitai.com/api/download/models/47776", - "https://civitai.com/api/download/models/29772", - "https://civitai.com/api/download/models/31618", - "https://civitai.com/api/download/models/31591", - "https://civitai.com/api/download/models/29773", - "https://civitai.com/api/download/models/29774", - "https://civitai.com/api/download/models/29755", - "https://civitai.com/api/download/models/29750" - ], - "install_type": "unzip", - "description": "Various image processing nodes." - }, - { - "author": "aimingfail", - "title": "Image2Halftone Node for ComfyUI", - "id": "img2halftone", - "reference": "https://civitai.com/models/143293/image2halftone-node-for-comfyui", - "files": [ - "https://civitai.com/api/download/models/158997" - ], - "install_type": "unzip", - "description": "This is a node to convert an image into a CMYK Halftone dot image." - } - ] -} diff --git a/custom_nodes/comfyui-manager/docs/en/cm-cli.md b/custom_nodes/comfyui-manager/docs/en/cm-cli.md deleted file mode 100644 index bc07eda1959569b1710ed83685e608e258758dc7..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/docs/en/cm-cli.md +++ /dev/null @@ -1,146 +0,0 @@ -# `cm-cli`: ComfyUI-Manager CLI - -`cm-cli` is a tool that allows you to use various functions of ComfyUI-Manager from the command line without launching ComfyUI. - - -``` --= ComfyUI-Manager CLI (V2.24) =- - - -python cm-cli.py [OPTIONS] - -OPTIONS: - [install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel ] ?[--mode [remote|local|cache]] - [update|disable|enable|fix] all ?[--channel ] ?[--mode [remote|local|cache]] - [simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel ] ?[--mode [remote|local|cache]] - save-snapshot ?[--output ] - restore-snapshot ?[--pip-non-url] ?[--pip-non-local-url] ?[--pip-local-url] - cli-only-mode [enable|disable] - restore-dependencies - clear -``` - -## How To Use? -* You can execute it via `python cm-cli.py`. -* For example, if you want to update all custom nodes: - * In the ComfyUI-Manager directory, you can execute the command `python cm-cli.py update all`. - * If running from the ComfyUI directory, you can specify the path to cm-cli.py like this: `python custom_nodes/ComfyUI-Manager/cm-cli.py update all`. - -## Prerequisite -* It must be run in the same Python environment as the one running ComfyUI. - * If using a venv, you must run it with the venv activated. - * If using a portable version, and you are in the directory with the run_nvidia_gpu.bat file, you should execute the command as follows: - `.\python_embeded\python.exe ComfyUI\custom_nodes\ComfyUI-Manager\cm-cli.py update all` -* The path for ComfyUI can be set with the COMFYUI_PATH environment variable. If omitted, a warning message will appear, and the path will be set relative to the installed location of ComfyUI-Manager: - ``` - WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path. - ``` - -## Features - -### 1. --channel, --mode -* For viewing information and managing custom nodes, you can set the information database through --channel and --mode. -* For instance, executing the command `python cm-cli.py update all --channel recent --mode remote` will operate based on the latest information from remote rather than local data embedded in the current ComfyUI-Manager repo and will only target the list in the recent channel. -* --channel, --mode are only available with the commands `simple-show, show, install, uninstall, update, disable, enable, fix`. - -### 2. Viewing Management Information - -`[simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel ] ?[--mode [remote|local|cache]]` - -* `[show|simple-show]` - `show` provides detailed information, while `simple-show` displays information more simply. - -Executing a command like `python cm-cli.py show installed` will display detailed information about the installed custom nodes. - -``` --= ComfyUI-Manager CLI (V2.24) =- - -FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json -[ ENABLED ] ComfyUI-Manager (author: Dr.Lt.Data) -[ ENABLED ] ComfyUI-Impact-Pack (author: Dr.Lt.Data) -[ ENABLED ] ComfyUI-Inspire-Pack (author: Dr.Lt.Data) -[ ENABLED ] ComfyUI_experiments (author: comfyanonymous) -[ ENABLED ] ComfyUI-SAI_API (author: Stability-AI) -[ ENABLED ] stability-ComfyUI-nodes (author: Stability-AI) -[ ENABLED ] comfyui_controlnet_aux (author: Fannovel16) -[ ENABLED ] ComfyUI-Frame-Interpolation (author: Fannovel16) -[ DISABLED ] ComfyUI-Loopchain (author: Fannovel16) -``` - -Using a command like `python cm-cli.py simple-show installed` will simply display information about the installed custom nodes. - -``` --= ComfyUI-Manager CLI (V2.24) =- - -FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json -ComfyUI-Manager -ComfyUI-Impact-Pack -ComfyUI-Inspire-Pack -ComfyUI_experiments -ComfyUI-SAI_API -stability-ComfyUI-nodes -comfyui_controlnet_aux -ComfyUI-Frame-Interpolation -ComfyUI-Loopchain -``` - -`[installed|enabled|not-installed|disabled|all|snapshot|snapshot-list]` - * `enabled`, `disabled`: Shows nodes that have been enabled or disabled among the installed custom nodes. - * `installed`: Shows all nodes that have been installed, regardless of whether they are enabled or disabled. - * `not-installed`: Shows a list of custom nodes that have not been installed. - * `all`: Shows a list of all custom nodes. - * `snapshot`: Displays snapshot information of the currently installed custom nodes. When viewed with `show`, it is displayed in JSON format, and with `simple-show`, it is displayed simply, along with the commit hash. - * `snapshot-list`: Shows a list of snapshot files stored in ComfyUI-Manager/snapshots. - -### 3. Managing Custom Nodes - -`[install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel ] ?[--mode [remote|local|cache]]` - -* You can apply management functions by listing the names of custom nodes, such as `python cm-cli.py install ComfyUI-Impact-Pack ComfyUI-Inspire-Pack ComfyUI_experiments`. -* The names of the custom nodes are as shown by `show` and are the names of the git repositories. -(Plans are to update the use of nicknames in the future.) - -`[update|disable|enable|fix] all ?[--channel ] ?[--mode [remote|local|cache]]` - -* The `update, disable, enable, fix` functions can be specified for all. - -* Detailed Operations - * `install`: Installs the specified custom nodes. - * `reinstall`: Removes and then reinstalls the specified custom nodes. - * `uninstall`: Uninstalls the specified custom nodes. - * `update`: Updates the specified custom nodes. - * `disable`: Disables the specified custom nodes. - * `enable`: Enables the specified custom nodes. - * `fix`: Attempts to fix dependencies for the specified custom nodes. - - -### 4. Snapshot Management -* `python cm-cli.py save-snapshot [--output ]`: Saves the current snapshot. - * With `--output`, you can save a file in .yaml format to any specified path. -* `python cm-cli.py restore-snapshot `: Restores to the specified snapshot. - * If a file exists at the snapshot path, that snapshot is loaded. - * If no file exists at the snapshot path, it is implicitly assumed to be in ComfyUI-Manager/snapshots. - * `--pip-non-url`: Restore for pip packages registered on PyPI. - * `--pip-non-local-url`: Restore for pip packages registered at web URLs. - * `--pip-local-url`: Restore for pip packages specified by local paths. - - -### 5. CLI Only Mode - -You can set whether to use ComfyUI-Manager solely via CLI. - -`cli-only-mode [enable|disable]` - -* This mode can be used if you want to restrict the use of ComfyUI-Manager through the GUI for security or policy reasons. - * When CLI only mode is enabled, ComfyUI-Manager is loaded in a very restricted state, the internal web API is disabled, and the Manager button is not displayed in the main menu. - -### 6. Dependency Restoration - -`restore-dependencies` - -* This command can be used if custom nodes are installed under the `ComfyUI/custom_nodes` path but their dependencies are not installed. -* It is useful when starting a new cloud instance, like colab, where dependencies need to be reinstalled and installation scripts re-executed. -* It can also be utilized if ComfyUI is reinstalled and only the custom_nodes path has been backed up and restored. - -### 7. Clear - -In the GUI, installations, updates, or snapshot restorations are scheduled to execute the next time ComfyUI is launched. The `clear` command clears this scheduled state, ensuring no pre-execution actions are applied. \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/docs/en/use_aria2.md b/custom_nodes/comfyui-manager/docs/en/use_aria2.md deleted file mode 100644 index ae98fcf206297ec285e8b876d7481828a1336436..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/docs/en/use_aria2.md +++ /dev/null @@ -1,40 +0,0 @@ -# Use `aria2` as downloader - -Two environment variables are needed to use `aria2` as the downloader. - -```bash -export COMFYUI_MANAGER_ARIA2_SERVER=http://127.0.0.1:6800 -export COMFYUI_MANAGER_ARIA2_SECRET=__YOU_MUST_CHANGE_IT__ -``` - -An example `docker-compose.yml` - -```yaml -services: - - aria2: - container_name: aria2 - image: p3terx/aria2-pro - environment: - - PUID=1000 - - PGID=1000 - - UMASK_SET=022 - - RPC_SECRET=__YOU_MUST_CHANGE_IT__ - - RPC_PORT=5080 - - DISK_CACHE=64M - - IPV6_MODE=false - - UPDATE_TRACKERS=false - - CUSTOM_TRACKER_URL= - volumes: - - ./config:/config - - ./downloads:/downloads - - ~/ComfyUI/models:/models - - ~/ComfyUI/custom_nodes:/custom_nodes - ports: - - 6800:6800 - restart: unless-stopped - logging: - driver: json-file - options: - max-size: 1m -``` diff --git a/custom_nodes/comfyui-manager/docs/ko/cm-cli.md b/custom_nodes/comfyui-manager/docs/ko/cm-cli.md deleted file mode 100644 index 4614af399b8565d8b9ae5a8b5baddd2ade0c5100..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/docs/ko/cm-cli.md +++ /dev/null @@ -1,149 +0,0 @@ -# `cm-cli`: ComfyUI-Manager CLI - -`cm-cli` 는 ComfyUI를 실행시키지 않고 command line에서 ComfyUI-Manager의 여러가지 기능을 사용할 수 있도록 도와주는 도구입니다. - - -``` --= ComfyUI-Manager CLI (V2.24) =- - - -python cm-cli.py [OPTIONS] - -OPTIONS: - [install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel ] ?[--mode [remote|local|cache]] - [update|disable|enable|fix] all ?[--channel ] ?[--mode [remote|local|cache]] - [simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel ] ?[--mode [remote|local|cache]] - save-snapshot ?[--output ] - restore-snapshot ?[--pip-non-url] ?[--pip-non-local-url] ?[--pip-local-url] - cli-only-mode [enable|disable] - restore-dependencies - clear -``` - -## How To Use? -* `python cm-cli.py` 를 통해서 실행 시킬 수 있습니다. -* 예를 들어 custom node를 모두 업데이트 하고 싶다면 - * ComfyUI-Manager경로 에서 `python cm-cli.py update all` 를 command를 실행할 수 있습니다. - * ComfyUI 경로에서 실행한다면, `python custom_nodes/ComfyUI-Manager/cm-cli.py update all` 와 같이 cm-cli.py 의 경로를 지정할 수도 있습니다. - -## Prerequisite -* ComfyUI 를 실행하는 python과 동일한 python 환경에서 실행해야 합니다. - * venv를 사용할 경우 해당 venv를 activate 한 상태에서 실행해야 합니다. - * portable 버전을 사용할 경우 run_nvidia_gpu.bat 파일이 있는 경로인 경우, 다음과 같은 방식으로 코맨드를 실행해야 합니다. - `.\python_embeded\python.exe ComfyUI\custom_nodes\ComfyUI-Manager\cm-cli.py update all` -* ComfyUI 의 경로는 COMFYUI_PATH 환경 변수로 설정할 수 있습니다. 만약 생략할 경우 다음과 같은 경고 메시지가 나타나며, ComfyUI-Manager가 설치된 경로를 기준으로 상대 경로로 설정됩니다. - ``` - WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path. - ``` - -## Features - -### 1. --channel, --mode -* 정보 보기 기능과 커스텀 노드 관리 기능의 경우는 --channel과 --mode를 통해 정보 DB를 설정할 수 있습니다. -* 예들 들어 `python cm-cli.py update all --channel recent --mode remote`와 같은 command를 실행할 경우, 현재 ComfyUI-Manager repo에 내장된 로컬의 정보가 아닌 remote의 최신 정보를 기준으로 동작하며, recent channel에 있는 목록을 대상으로만 동작합니다. -* --channel, --mode 는 `simple-show, show, install, uninstall, update, disable, enable, fix` command에서만 사용 가능합니다. - -### 2. 관리 정보 보기 - -`[simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel ] ?[--mode [remote|local|cache]]` - - -* `[show|simple-show]` - `show`는 상세하게 정보를 보여주며, `simple-show`는 간단하게 정보를 보여줍니다. - - -`python cm-cli.py show installed` 와 같은 코맨드를 실행하면 설치된 커스텀 노드의 정보를 상세하게 보여줍니다. -``` --= ComfyUI-Manager CLI (V2.24) =- - -FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json -[ ENABLED ] ComfyUI-Manager (author: Dr.Lt.Data) -[ ENABLED ] ComfyUI-Impact-Pack (author: Dr.Lt.Data) -[ ENABLED ] ComfyUI-Inspire-Pack (author: Dr.Lt.Data) -[ ENABLED ] ComfyUI_experiments (author: comfyanonymous) -[ ENABLED ] ComfyUI-SAI_API (author: Stability-AI) -[ ENABLED ] stability-ComfyUI-nodes (author: Stability-AI) -[ ENABLED ] comfyui_controlnet_aux (author: Fannovel16) -[ ENABLED ] ComfyUI-Frame-Interpolation (author: Fannovel16) -[ DISABLED ] ComfyUI-Loopchain (author: Fannovel16) -``` - -`python cm-cli.py simple-show installed` 와 같은 코맨드를 이용해서 설치된 커스텀 노드의 정보를 간단하게 보여줍니다. - -``` --= ComfyUI-Manager CLI (V2.24) =- - -FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json -ComfyUI-Manager -ComfyUI-Impact-Pack -ComfyUI-Inspire-Pack -ComfyUI_experiments -ComfyUI-SAI_API -stability-ComfyUI-nodes -comfyui_controlnet_aux -ComfyUI-Frame-Interpolation -ComfyUI-Loopchain -``` - -* `[installed|enabled|not-installed|disabled|all|snapshot|snapshot-list]` - * `enabled`, `disabled`: 설치된 커스텀 노드들 중 enable 되었거나, disable된 노드들을 보여줍니다. - * `installed`: enable, disable 여부와 상관없이 설치된 모든 노드를 보여줍니다 - * `not-installed`: 설치되지 않은 커스텀 노드의 목록을 보여줍니다. - * `all`: 모든 커스텀 노드의 목록을 보여줍니다. - * `snapshot`: 현재 설치된 커스텀 노드의 snapshot 정보를 보여줍니다. `show`롤 통해서 볼 경우는 json 출력 형태로 보여주며, `simple-show`를 통해서 볼 경우는 간단하게, 커밋 해시와 함께 보여줍니다. - * `snapshot-list`: ComfyUI-Manager/snapshots 에 저장된 snapshot 파일의 목록을 보여줍니다. - -### 3. 커스텀 노드 관리 하기 - -`[install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel ] ?[--mode [remote|local|cache]]` - -* `python cm-cli.py install ComfyUI-Impact-Pack ComfyUI-Inspire-Pack ComfyUI_experiments` 와 같이 커스텀 노드의 이름을 나열해서 관리 기능을 적용할 수 있습니다. -* 커스텀 노드의 이름은 `show`를 했을 때 보여주는 이름이며, git repository의 이름입니다. -(추후 nickname 을 사용가능하돌고 업데이트 할 예정입니다.) - -`[update|disable|enable|fix] all ?[--channel ] ?[--mode [remote|local|cache]]` - -* `update, disable, enable, fix` 기능은 all 로 지정 가능합니다. - -* 세부 동작 - * `install`: 지정된 커스텀 노드들을 설치합니다 - * `reinstall`: 지정된 커스텀 노드를 삭제하고 재설치 합니다. - * `uninstall`: 지정된 커스텀 노드들을 삭제합니다. - * `update`: 지정된 커스텀 노드들을 업데이트합니다. - * `disable`: 지정된 커스텀 노드들을 비활성화합니다. - * `enable`: 지정된 커스텀 노드들을 활성화합니다. - * `fix`: 지정된 커스텀 노드의 의존성을 고치기 위한 시도를 합니다. - - -### 4. 스냅샷 관리 기능 -* `python cm-cli.py save-snapshot ?[--output ]`: 현재의 snapshot을 저장합니다. - * --output 으로 임의의 경로에 .yaml 파일과 format으로 저장할 수 있습니다. -* `python cm-cli.py restore-snapshot `: 지정된 snapshot으로 복구합니다. - * snapshot 경로에 파일이 존재하는 경우 해당 snapshot을 로드합니다. - * snapshot 경로에 파일이 존재하지 않는 경우 묵시적으로, ComfyUI-Manager/snapshots 에 있다고 가정합니다. - * `--pip-non-url`: PyPI 에 등록된 pip 패키지들에 대해서 복구를 수행 - * `--pip-non-local-url`: web URL에 등록된 pip 패키지들에 대해서 복구를 수행 - * `--pip-local-url`: local 경로를 지정하고 있는 pip 패키지들에 대해서 복구를 수행 - - -### 5. CLI only mode - -ComfyUI-Manager를 CLI로만 사용할 것인지를 설정할 수 있습니다. - -`cli-only-mode [enable|disable]` - -* security 혹은 policy 의 이유로 GUI 를 통한 ComfyUI-Manager 사용을 제한하고 싶은 경우 이 모드를 사용할 수 있습니다. - * CLI only mode를 적용할 경우 ComfyUI-Manager 가 매우 제한된 상태로 로드되어, 내부적으로 제공하는 web API가 비활성화 되며, 메인 메뉴에서도 Manager 버튼이 표시되지 않습니다. - - -### 6. 의존성 설치 - -`restore-dependencies` - -* `ComfyUI/custom_nodes` 하위 경로에 커스텀 노드들이 설치되어 있긴 하지만, 의존성이 설치되지 않은 경우 사용할 수 있습니다. -* colab 과 같이 cloud instance를 새로 시작하는 경우 의존성 재설치 및 설치 스크립트가 재실행 되어야 하는 경우 사용합니다. -* ComfyUI을 재설치할 경우, custom_nodes 경로만 백업했다가 재설치 할 경우 활용 가능합니다. - - -### 7. clear - -GUI에서 install, update를 하거나 snapshot 을 restore하는 경우 예약을 통해서 다음번 ComfyUI를 실행할 경우 실행되는 구조입니다. `clear` 는 이런 예약 상태를 clear해서, 아무런 사전 실행이 적용되지 않도록 합니다. \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/extension-node-map.json b/custom_nodes/comfyui-manager/extension-node-map.json deleted file mode 100644 index 78b4fe324784b9e73da6dfc0f6a9b86d73a5bda7..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/extension-node-map.json +++ /dev/null @@ -1,28104 +0,0 @@ -{ - "https://gist.githubusercontent.com/alkemann/7361b8eb966f29c8238fd323409efb68/raw/f9605be0b38d38d3e3a2988f89248ff557010076/alkemann.py": [ - [ - "Int to Text", - "Save A1 Image", - "Seed With Text" - ], - { - "title_aux": "alkemann nodes" - } - ], - "https://github.com/0x-jerry/comfyui-rembg": [ - [ - "Load Rembg Model", - "Rembg Remove background" - ], - { - "title_aux": "Rembg Background Removal Node for ComfyUI" - } - ], - "https://github.com/0xbitches/ComfyUI-LCM": [ - [ - "LCM_Sampler", - "LCM_Sampler_Advanced", - "LCM_img2img_Sampler", - "LCM_img2img_Sampler_Advanced" - ], - { - "title_aux": "Latent Consistency Model for ComfyUI" - } - ], - "https://github.com/1038lab/ComfyUI-EdgeTTS": [ - [ - "EdgeTTS", - "Save_Audio", - "WhisperSTT" - ], - { - "title_aux": "ComfyUI-EdgeTTS" - } - ], - "https://github.com/1038lab/ComfyUI-OmniGen": [ - [ - "ailab_OmniGen" - ], - { - "title_aux": "ComfyUI-OmniGen" - } - ], - "https://github.com/1038lab/ComfyUI-RMBG": [ - [ - "ClothesSegment", - "FaceSegment", - "FashionSegmentAccessories", - "FashionSegmentClothing", - "RMBG", - "Segment" - ], - { - "title_aux": "ComfyUI-RMBG" - } - ], - "https://github.com/1038lab/ComfyUI-WildPromptor": [ - [ - "AllInOneList", - "KeywordPicker", - "PromptBuilder", - "PromptConcat", - "WildPromptorAllInOne", - "WildPromptorGenerator", - "WildPromptor_DataToPromptList", - "WildPromptor_Enhancer" - ], - { - "title_aux": "ComfyUI-WildPromptor" - } - ], - "https://github.com/111496583yzy/comfyui-PuzzleCrack-Effect": [ - [ - "MyJigsawPuzzleEffect", - "MyRegionBoundaryEffect" - ], - { - "title_aux": "Jigsaw Puzzle Effect Plugin" - } - ], - "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant": [ - [ - "EGIPAdapter_Mad_Assistant", - "EGIPAdapter_Mad_AssistantV1", - "EGIPAdapter_Mad_AssistantV2", - "EGIPAdapter_Mad_AssistantV3", - "EGIPAdapter_Mad_AssistantV4", - "EGIPAdapter_Mad_AssistantV5", - "EGIPAdapter_Mad_AssistantV6" - ], - { - "title_aux": "ComfUI-EGAdapterMadAssistant" - } - ], - "https://github.com/11dogzi/Comfyui-ergouzi-Nodes": [ - [ - "EG-YSZT-ZT", - "EG_CPSYTJ", - "EG_FX_BDAPI", - "EG_HT_YSTZ", - "EG_JF_ZZSC", - "EG_JXFZ_node", - "EG_K_LATENT", - "EG_RY_HT", - "EG_SCQY_BHDQY", - "EG_SCQY_QBQY", - "EG_SCQY_SXQY", - "EG_SJ", - "EG_SJPJ_Node", - "EG_SS_RYZH", - "EG_SZ_JDYS", - "EG_TC_Node", - "EG_TSCDS_CJ", - "EG_TSCDS_DG", - "EG_TSCDS_FG", - "EG_TSCDS_JT", - "EG_TSCDS_QT", - "EG_TSCDS_RW", - "EG_TSCDS_WP", - "EG_TSCDS_ZL", - "EG_TSCMB_GL", - "EG_TXZZ_ZH", - "EG_TX_CCHQ", - "EG_TX_CJPJ", - "EG_TX_JZRY", - "EG_TX_LJ", - "EG_TX_LJBC", - "EG_TX_SFBLS", - "EG_TX_WHLJ", - "EG_WB_KSH", - "EG_WXZ_QH", - "EG_XZ_QH", - "EG_YSQY_BBLLD", - "EG_YSQY_BLLD", - "EG_ZY_WBK", - "EG_ZZHBCJ", - "EG_ZZKZ_HT_node", - "EG_ZZ_BSYH", - "EG_ZZ_BYYH", - "EG_ZZ_HSYH", - "EG_ZZ_MHHT", - "EG_ZZ_SSKZ", - "ER_JBCH", - "ER_TX_ZZCJ" - ], - { - "title_aux": "Comfyui-ergouzi-Nodes" - } - ], - "https://github.com/11dogzi/Comfyui-ergouzi-kaiguan": [ - [ - "ALLty", - "EGRWGL", - "EGRYDZQHNode", - "GroupSwitchNode", - "GroupSwitchNodee", - "GroupSwitchNodeee", - "GroupSwitchNodeeee", - "hulue", - "jinyong" - ], - { - "title_aux": "Comfyui-ergouzi-kaiguan" - } - ], - "https://github.com/11dogzi/Comfyui-ergouzi-samplers": [ - [ - "EGBYZZCYQ", - "EGCYQJB", - "EGCYQJBCJ" - ], - { - "title_aux": "Comfyui-ergouzi-samplers" - } - ], - "https://github.com/1mckw/Comfyui-Gelbooru": [ - [ - "Gelbooru (ID)", - "Gelbooru (Random)", - "UrlsToImage" - ], - { - "title_aux": "Comfyui-Gelbooru" - } - ], - "https://github.com/1zhangyy1/comfyui-vidu-nodes": [ - [ - "Character2Video", - "Image2Video", - "Text2Video", - "UpscaleVideo", - "VideoDownloader" - ], - { - "title_aux": "ComfyUI VIDU" - } - ], - "https://github.com/2kpr/ComfyUI-PMRF": [ - [ - "PMRF" - ], - { - "title_aux": "ComfyUI-PMRF" - } - ], - "https://github.com/2kpr/ComfyUI-UltraPixel": [ - [ - "UltraPixelLoad", - "UltraPixelProcess" - ], - { - "author": "italo", - "title_aux": "ComfyUI-UltraPixel" - } - ], - "https://github.com/311-code/ComfyUI-MagicClip_Strength": [ - [ - "CLIPTextEncodeSDXL_311_code" - ], - { - "title_aux": "ComfyUI MagicClip_Strength for SDXL" - } - ], - "https://github.com/42lux/ComfyUI-42lux": [ - [ - "FluxEmptyLatentSizePicker", - "FluxHighresFixScaler", - "ModelSamplingFluxNormalized", - "PromptWithTokenCounter" - ], - { - "title_aux": "Just a bunch of QOL nodes by 42lux" - } - ], - "https://github.com/438443467/ComfyUI-GPT4V-Image-Captioner": [ - [ - "GPT4VCaptioner", - "Image Load with Metadata", - "SAMIN String Attribute Selector", - "SANMIN Adapt Coordinates", - "SANMIN AdjustTransparency", - "SANMIN BlurMaskArea", - "SANMIN ChineseToCharacter", - "SANMIN ClothingWildcards", - "SANMIN ConvertToEnglish", - "SANMIN EditWildcards", - "SANMIN Float", - "SANMIN LoadPathImagesPreview", - "SANMIN SCALE AND FILL BLACK", - "SANMIN SanmiSaveImageToLocal", - "SANMIN SimpleWildcards", - "SANMIN Upscale And Original Size", - "Samin Counter", - "Samin Load Image Batch" - ], - { - "title_aux": "ComfyUI-GPT4V-Image-Captioner" - } - ], - "https://github.com/45uee/ComfyUI-Color_Transfer": [ - [ - "ColorPalette", - "PaletteTransfer" - ], - { - "title_aux": "ComfyUI-Color_Transfer" - } - ], - "https://github.com/54rt1n/ComfyUI-DareMerge": [ - [ - "DM_AdvancedDareModelMerger", - "DM_AdvancedModelMerger", - "DM_AttentionGradient", - "DM_BlockGradient", - "DM_BlockModelMerger", - "DM_DareClipMerger", - "DM_DareModelMergerBlock", - "DM_DareModelMergerElement", - "DM_DareModelMergerMBW", - "DM_GradientEdit", - "DM_GradientOperations", - "DM_GradientReporting", - "DM_InjectNoise", - "DM_LoRALoaderTags", - "DM_LoRAReporting", - "DM_MBWGradient", - "DM_MagnitudeMasker", - "DM_MaskEdit", - "DM_MaskOperations", - "DM_MaskReporting", - "DM_ModelReporting", - "DM_NormalizeModel", - "DM_QuadMasker", - "DM_ShellGradient", - "DM_SimpleMasker" - ], - { - "title_aux": "ComfyUI-DareMerge" - } - ], - "https://github.com/5x00/ComfyUI-PiAPI-Faceswap": [ - [ - "Face Swapper" - ], - { - "title_aux": "ComfyUI-PiAPI-Faceswap" - } - ], - "https://github.com/5x00/ComfyUI-VLM-Captions": [ - [ - "Image To Caption" - ], - { - "title_aux": "ComfyUI-VLM_Captions" - } - ], - "https://github.com/6174/comflowy-nodes": [ - [ - "Comflowy_Clarity_Upscale", - "Comflowy_Extract_JSON", - "Comflowy_Flux", - "Comflowy_Flux_Dev_Lora", - "Comflowy_Flux_Pro_Ultra", - "Comflowy_Hailuo", - "Comflowy_Http_Request", - "Comflowy_Ideogram", - "Comflowy_Kling", - "Comflowy_LLM", - "Comflowy_Load_JSON", - "Comflowy_Luma", - "Comflowy_Omost_LLM", - "Comflowy_Omost_Load_Canvas_Conditioning", - "Comflowy_Omost_Load_Canvas_Python_Code", - "Comflowy_Omost_Preview", - "Comflowy_Omost_To_Conditioning", - "Comflowy_Preview_JSON", - "Comflowy_Preview_Video", - "Comflowy_Recraft", - "Comflowy_Set_API_Key" - ], - { - "title_aux": "Comflowy's Custom Nodes" - } - ], - "https://github.com/807502278/ComfyUI-3D-MeshTool": [ - [ - "Auto_Normal", - "List_to_Tensor", - "Load_OBJ", - "Mesh_Clean_Data", - "Mesh_Cleanup", - "Mesh_Data_Get", - "Mesh_Data_Set", - "Mesh_Data_Statistics", - "Mesh_Optimization", - "Mesh_Subdivide", - "RT-to-camposes", - "Tensor_to_List", - "UV_options", - "UnwrapUV_Auto_xatlas", - "UnwrapUV_xatlas", - "array-append", - "array-attribute", - "array-convert", - "array-end-increment", - "array-end-step", - "array-is-null", - "array-number-to-angle", - "array-select-element", - "array-step", - "array-step-increment", - "array-t", - "array-to-camposes", - "cam-pos-bus", - "get-tensor-shape", - "img-bath-rotationZ", - "img-to-tensor", - "json-to-campos", - "mesh_data_bus", - "mesh_remap_cubvh", - "ply_load", - "ply_normalize", - "ply_save", - "show_any", - "string-to-array", - "tensor-new", - "tensor-shape", - "tensor-to-img", - "vc_to_texture" - ], - { - "author": "807502278", - "description": "A simple 3D model processing tool within ComfyUI", - "nickname": "3D Mesh Tool", - "title": "3D Mesh Tool", - "title_aux": "ComfyUI-3D-MeshTool" - } - ], - "https://github.com/807502278/ComfyUI-WJNodes": [ - [ - "AdvCrop", - "ApplyEasyOCR_batch", - "BiRefNet2_tensort", - "BilateralFilter", - "ColorSegmentation", - "ColorSegmentation_v2", - "ComfyUIPath", - "CoordsSelectMask", - "ImageChannelBus", - "InvertChannelAdv", - "LoadColorConfig", - "LoadImageAdv", - "LoadImageFromPath", - "MaskAndMaskMath", - "MaskDetection", - "MaskLineMapping", - "MaskSelectMask", - "MergeImageList", - "PathAppend", - "PrimitiveNode", - "RGBABatchToImage", - "Sam2AutoSegmentation_data", - "SaveImageOut", - "SaveImageToPath", - "SegmDetectorCombined_batch", - "SelectBatch_v2", - "SelectImagesBatch", - "SplitPath", - "ToImageListData", - "VideoFade", - "Video_OverlappingSeparation_test", - "WAS_Mask_Fill_Region_batch", - "any_data", - "array_count", - "bbox_restore_mask", - "get_TypeName", - "get_image_data", - "load_BiRefNet2_General", - "load_EasyOCR_model", - "load_model_value", - "sort_images_batch" - ], - { - "title_aux": "ComfyUI-WJNodes" - } - ], - "https://github.com/807502278/ComfyUI_MaskGCT": [ - [ - "audio_capture_percentage", - "audio_resample", - "audio_scale", - "from_path_load_audio", - "get_audio_data", - "get_text_data", - "load_maskgct_model", - "load_w2vbert_model", - "maskgct_pipeline", - "maskgct_run_v2", - "maskgct_setting", - "multilingual_slice", - "remove_blank_space", - "whisper_large_v3" - ], - { - "title_aux": "ComfyUI_MaskGCT" - } - ], - "https://github.com/80sVectorz/ComfyUI-Static-Primitives": [ - [ - "FloatStaticPrimitive", - "IntStaticPrimitive", - "StringMlStaticPrimitive", - "StringStaticPrimitive" - ], - { - "title_aux": "ComfyUI-Static-Primitives" - } - ], - "https://github.com/A4P7J1N7M05OT/ComfyUI-AutoColorGimp": [ - [ - "AutoColorGimp" - ], - { - "title_aux": "ComfyUI-AutoColorGimp" - } - ], - "https://github.com/A4P7J1N7M05OT/ComfyUI-PixelOE-Wrapper": [ - [ - "PixelOE", - "PixelOETorch" - ], - { - "title_aux": "ComfyUI-PixelOE-Wrapper" - } - ], - "https://github.com/AARG-FAN/Image-Vector-for-ComfyUI": [ - [ - "AIraster" - ], - { - "title_aux": "Image-vector-for-ComfyUI" - } - ], - "https://github.com/AIFSH/AniTalker-ComfyUI": [ - [ - "AniTalkerNode", - "PreViewVideo" - ], - { - "title_aux": "AniTalker-ComfyUI" - } - ], - "https://github.com/AIFSH/ComfyUI-3d-photo-inpainting": [ - [ - "LoadImagePath", - "PreViewVideo", - "TreeDNode" - ], - { - "title_aux": "ComfyUI-3d-photo-inpainting" - } - ], - "https://github.com/AIFSH/ComfyUI-AuraSR": [ - [ - "AuraSRNode" - ], - { - "title_aux": "AIFSH/ComfyUI-AuraSR" - } - ], - "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio": [ - [ - "ControlNetPathLoader", - "DiffTextNode", - "DiffutoonNode", - "ExVideoNode", - "LoadVideo", - "PreViewVideo", - "SDPathLoader" - ], - { - "title_aux": "ComfyUI-DiffSynth-Studio" - } - ], - "https://github.com/AIFSH/ComfyUI-FishSpeech": [ - [ - "FishSpeech_INFER", - "FishSpeech_INFER_SRT", - "LoadAudio", - "LoadSRT", - "PreViewAudio" - ], - { - "title_aux": "ComfyUI-FishSpeech" - } - ], - "https://github.com/AIFSH/ComfyUI-GPT_SoVITS": [ - [ - "GPT_SOVITS_FT", - "GPT_SOVITS_INFER", - "GPT_SOVITS_TTS", - "LoadAudio", - "LoadSRT", - "PreViewAudio" - ], - { - "title_aux": "ComfyUI-GPT_SoVITS" - } - ], - "https://github.com/AIFSH/ComfyUI-Hallo": [ - [ - "HalloNode", - "LoadAudioPath", - "LoadImagePath", - "PreViewVideo" - ], - { - "title_aux": "ComfyUI-Hallo" - } - ], - "https://github.com/AIFSH/ComfyUI-I2V-Adapter": [ - [ - "I2V_AdapterNode", - "LoraPathLoader", - "MotionLoraLoader", - "PreViewVideo", - "PromptNode" - ], - { - "title_aux": "ComfyUI-I2V-Adapter" - } - ], - "https://github.com/AIFSH/ComfyUI-IP_LAP": [ - [ - "CombineAudioVideo", - "IP_LAP", - "LoadVideo", - "PreViewVideo" - ], - { - "title_aux": "ComfyUI-IP_LAP" - } - ], - "https://github.com/AIFSH/ComfyUI-Live2DViewer": [ - [ - "Live2DViewer", - "LoadAudio" - ], - { - "title_aux": "ComfyUI-Live2DViewer" - } - ], - "https://github.com/AIFSH/ComfyUI-MARS5-TTS": [ - [ - "LoadAudioPath", - "MARS5TTS_Node", - "PreViewAudio", - "TTSTextEncode" - ], - { - "title_aux": "ComfyUI-MARS5-TTS" - } - ], - "https://github.com/AIFSH/ComfyUI-MimicBrush": [ - [ - "MimicBrushNode" - ], - { - "title_aux": "ComfyUI-MimicBrush" - } - ], - "https://github.com/AIFSH/ComfyUI-MimicMotion": [ - [ - "LoadVideo", - "MimicMotionNode", - "PreViewVideo" - ], - { - "title_aux": "ComfyUI-MimicMotion" - } - ], - "https://github.com/AIFSH/ComfyUI-MuseTalk_FSH": [ - [ - "CombineAudioVideo", - "LoadVideo", - "MuseTalk", - "MuseTalkRealTime", - "PreViewVideo" - ], - { - "title_aux": "ComfyUI-MuseTalk_FSH" - } - ], - "https://github.com/AIFSH/ComfyUI-RVC": [ - [ - "CombineAudio", - "LoadAudio", - "PreViewAudio", - "RVC_Infer", - "RVC_Train" - ], - { - "title_aux": "ComfyUI-RVC" - } - ], - "https://github.com/AIFSH/ComfyUI-UVR5": [ - [ - "LoadAudioPath", - "PreViewAudio", - "UVR5_Node" - ], - { - "title_aux": "ComfyUI-UVR5" - } - ], - "https://github.com/AIFSH/ComfyUI-UniAnimate": [ - [ - "LoadImagePath", - "LoadVideo", - "PoseAlignNode", - "PreViewVideo", - "UniAnimateNode" - ], - { - "title_aux": "ComfyUI-UniAnimate" - } - ], - "https://github.com/AIFSH/ComfyUI-WhisperX": [ - [ - "LoadAudioPath", - "PreViewSRT", - "SRTToString", - "WhisperX" - ], - { - "title_aux": "ComfyUI-WhisperX" - } - ], - "https://github.com/AIFSH/ComfyUI-XTTS": [ - [ - "LoadAudioPath", - "LoadSRT", - "PreViewAudio", - "XTTS_INFER", - "XTTS_INFER_SRT" - ], - { - "title_aux": "ComfyUI-XTTS" - } - ], - "https://github.com/AIFSH/ComfyUI_V-Express": [ - [ - "LoadAudioPath", - "LoadImagePath", - "LoadVideo", - "PreViewVideo", - "VExpress" - ], - { - "title_aux": "ComfyUI_V-Express" - } - ], - "https://github.com/AIFSH/CosyVoice-ComfyUI": [ - [ - "CosyVoiceDubbingNode", - "CosyVoiceNode", - "LoadSRT", - "TextNode" - ], - { - "title_aux": "CosyVoice-ComfyUI" - } - ], - "https://github.com/AIFSH/DHLive-ComfyUI": [ - [ - "CombineVideo", - "DHLIVELoadVideo", - "DHLiveNode", - "PreViewVideo", - "StaticVideo" - ], - { - "title_aux": "DHLive-ComfyUI" - } - ], - "https://github.com/AIFSH/DiffMorpher-ComfyUI": [ - [ - "DiffMorpherNode", - "PreViewGIF", - "TextNode" - ], - { - "title_aux": "DiffMorpher-ComfyUI" - } - ], - "https://github.com/AIFSH/DiffSynth-ComfyUI": [ - [ - "CogVideoNode", - "DownloadModelsNode", - "LoadVideo", - "PreViewVideo", - "TextEncode" - ], - { - "title_aux": "DiffSynth-ComfyUI" - } - ], - "https://github.com/AIFSH/EchoMimicV2-ComfyUI": [ - [ - "EchoMimicV2Node", - "EchoMimicV2PoseNode" - ], - { - "title_aux": "EchoMimicV2-ComfyUI" - } - ], - "https://github.com/AIFSH/EzAudio-ComfyUI": [ - [ - "EzAudioControlNetNode", - "EzAudioEditNode", - "EzAudioNode", - "TextPromptNode" - ], - { - "title_aux": "EzAudio-ComfyUI" - } - ], - "https://github.com/AIFSH/F5-TTS-ComfyUI": [ - [ - "F5TTSNode" - ], - { - "title_aux": "F5-TTS-ComfyUI" - } - ], - "https://github.com/AIFSH/FancyVideo-ComfyUI": [ - [ - "FancyVideoI2VNode", - "FancyVideoV2VNode" - ], - { - "title_aux": "FancyVideo-ComfyUI" - } - ], - "https://github.com/AIFSH/FireRedTTS-ComfyUI": [ - [ - "FireRedTTSNode" - ], - { - "title_aux": "FireRedTTS-ComfyUI" - } - ], - "https://github.com/AIFSH/GSTTS-ComfyUI": [ - [ - "ASRNode", - "AudioSlicerNode", - "ConfigGPTNode", - "ConfigSoVITSNode", - "DatasetNode", - "ExperienceNode", - "GSFinetuneNone", - "GSVTTSNode", - "LoadSRT", - "PreViewSRT", - "TSCY_Node", - "TextDictNode" - ], - { - "title_aux": "GSTTS-ComfyUI" - } - ], - "https://github.com/AIFSH/HivisionIDPhotos-ComfyUI": [ - [ - "AddBackgroundNode", - "AddWaterMarkNode", - "ENHivisionParamsNode", - "HivisionLayOutNode", - "HivisionNode", - "LaterProcessNode", - "ZHHivisionParamsNode" - ], - { - "author": "cuny", - "description": "", - "title_aux": "HivisionIDPhotos-ComfyUI" - } - ], - "https://github.com/AIFSH/IMAGDressing-ComfyUI": [ - [ - "IMAGDressingNode", - "TextNode" - ], - { - "title_aux": "IMAGDressing-ComfyUI" - } - ], - "https://github.com/AIFSH/JoyHallo-ComfyUI": [ - [ - "JoyHalloNode" - ], - { - "title_aux": "JoyHallo-ComfyUI" - } - ], - "https://github.com/AIFSH/MaskGCT-ComfyUI": [ - [ - "MaskGCTNode" - ], - { - "title_aux": "MaskGCT-ComfyUI" - } - ], - "https://github.com/AIFSH/MiniMates-ComfyUI": [ - [ - "MiniMatesNode" - ], - { - "title_aux": "MiniMates-ComfyUI" - } - ], - "https://github.com/AIFSH/OmniGen-ComfyUI": [ - [ - "OmniGenLoader", - "OmniGenNode" - ], - { - "title_aux": "OmniGen-ComfyUI" - } - ], - "https://github.com/AIFSH/PyramidFlow-ComfyUI": [ - [ - "PyramidFlowNode" - ], - { - "title_aux": "PyramidFlow-ComfyUI" - } - ], - "https://github.com/AIFSH/RealisDance-ComfyUI": [ - [ - "LoadFile", - "LoadVideo", - "PreViewVideo", - "RealisDanceNode" - ], - { - "title_aux": "RealisDance-ComfyUI" - } - ], - "https://github.com/AIFSH/SenseVoice-ComfyUI": [ - [ - "SenseVoiceNode", - "ShowTextNode" - ], - { - "title_aux": "SenseVoice-ComfyUI" - } - ], - "https://github.com/AIFSH/StyleShot-ComfyUI": [ - [ - "StyleShotNode", - "TextNode" - ], - { - "title_aux": "StyleShot-ComfyUI" - } - ], - "https://github.com/AIFSH/VideoSys-ComfyUI": [ - [ - "PreViewVideo", - "TextNode", - "VideoSysNode" - ], - { - "title_aux": "VideoSys-ComfyUI" - } - ], - "https://github.com/AIFSH/ViewCrafter-ComfyUI": [ - [ - "LoadVideo", - "PreViewVideo", - "ViewCrafterTxTNode" - ], - { - "title_aux": "ViewCrafter-ComfyUI" - } - ], - "https://github.com/AIFSH/VocalSeparation-ComfyUI": [ - [ - "CombineAudioNode", - "VocalSeparationNode" - ], - { - "title_aux": "VocalSeparation-ComfyUI" - } - ], - "https://github.com/AIGCTeam/ComfyUI_kkTranslator_nodes": [ - [ - "LoadMarianMTCheckPoint", - "PromptBaiduFanyiToText", - "PromptTranslateToText" - ], - { - "title_aux": "ComfyUI_kkTranslator_nodes" - } - ], - "https://github.com/AIGODLIKE/ComfyUI-CUP": [ - [ - "Mask", - "OpenPose", - "OpenPoseCanny", - "OpenPoseDepth", - "OpenPoseFace", - "OpenPoseFull", - "OpenPoseFullExtraLimb", - "OpenPoseHand", - "OpenPoseKeyPose", - "OpenPoseLineart", - "OpenPoseMediaPipeFace", - "PreviewAudio", - "SaveAudioBL", - "\u5b58\u50a8", - "\u5bfc\u5165", - "\u622a\u56fe", - "\u6750\u8d28\u56fe", - "\u8f93\u5165\u56fe\u50cf", - "\u9884\u89c8" - ], - { - "title_aux": "ComfyUI-CUP" - } - ], - "https://github.com/AIGODLIKE/ComfyUI-ToonCrafter": [ - [ - "ToonCrafterNode", - "ToonCrafterWithSketch" - ], - { - "title_aux": "ComfyUI-ToonCrafter" - } - ], - "https://github.com/AIPOQUE/ComfyUI-APQNodes": [ - [ - "ColorPalette|AIPOQUE" - ], - { - "title_aux": "ComfyUI-APQNodes" - } - ], - "https://github.com/AInseven/ComfyUI-fastblend": [ - [ - "FillDarkMask", - "InterpolateKeyFrame", - "MaskListcaptoBatch", - "Merge_Image_List", - "MyOpenPoseNode", - "SmoothVideo", - "alert_when_finished", - "reBatchImage" - ], - { - "title_aux": "ComfyUI-fastblend" - } - ], - "https://github.com/AIrjen/OneButtonPrompt": [ - [ - "AutoNegativePrompt", - "CreatePromptVariant", - "OneButtonArtify", - "OneButtonFlufferize", - "OneButtonPreset", - "OneButtonPrompt", - "OneButtonSuperPrompt", - "SavePromptToFile" - ], - { - "title_aux": "One Button Prompt" - } - ], - "https://github.com/ALatentPlace/ComfyUI_yanc": [ - [ - "> Bloom", - "> Blur", - "> Brightness", - "> Clear Text", - "> Combine Channels", - "> Contrast", - "> Divide Channels", - "> Edge Enhance", - "> Film Grain", - "> Float to Int", - "> Fog", - "> Get Mean Color", - "> HUE", - "> Int", - "> Int to Text", - "> Layer Weights (for IPAMS)", - "> Lens Distortion", - "> Light Source Mask", - "> Load Image", - "> Load Image From Folder", - "> Mask Curves", - "> NIKSampler", - "> Noise From Image", - "> Normal Map Lighting", - "> RGB Color", - "> RGB Shift", - "> Resolution by Aspect Ratio", - "> Rotate Image", - "> Saturation", - "> Save Image", - "> Save Text", - "> Scale Image to Side", - "> Scanlines", - "> Sharpen", - "> Text", - "> Text Combine", - "> Text Count", - "> Text Pick Line by Index", - "> Text Pick Random Line", - "> Text Random Weights", - "> Text Replace", - "> Vignette" - ], - { - "title_aux": "ComfyUI_yanc" - } - ], - "https://github.com/APZmedia/APZmedia-comfyui-fast-image-save": [ - [ - "APZmedia Fast image save" - ], - { - "title_aux": "APZmedia Fast Image Save Node" - } - ], - "https://github.com/APZmedia/ComfyUI-APZmedia-cleanName-from-string": [ - [ - "APZmediaStandardFilenameBuilder", - "CleanFileNameNode", - "GenerateFilePathNode" - ], - { - "title_aux": "APZmedia Clean Name" - } - ], - "https://github.com/ARZUMATA/ComfyUI-ARZUMATA": [ - [ - "CachingCLIPTextEncodeFlux|ARZUMATA", - "CachingCLIPTextEncode|ARZUMATA" - ], - { - "title_aux": "ComfyUI-ARZUMATA" - } - ], - "https://github.com/ARZUMATA/ComfyUI-ARZUMATA-Qwen2": [ - [ - "Image2Base64", - "Qwen2ModelLoader", - "Qwen2ModelRunInference" - ], - { - "title_aux": "ComfyUI-Qwen2" - } - ], - "https://github.com/Aaron-CHM/ComfyUI-z-a1111-sd-webui-DanTagGen": [ - [ - "DanTagGen" - ], - { - "title_aux": "z-a1111-sd-webui-DanTagGen" - } - ], - "https://github.com/AbdullahAlfaraj/Comfy-Photoshop-SD": [ - [ - "APS_LatentBatch", - "APS_Seed", - "ContentMaskLatent", - "ControlNetScript", - "ControlnetUnit", - "GaussianLatentImage", - "GetConfig", - "LoadImageBase64", - "LoadImageWithMetaData", - "LoadLorasFromPrompt", - "MaskExpansion" - ], - { - "title_aux": "Comfy-Photoshop-SD" - } - ], - "https://github.com/AbyssBadger0/ComfyUI_BadgerTools": [ - [ - "ApplyMaskToImage-badger", - "CropImageByMask-badger", - "ExpandImageWithColor-badger", - "FindThickLinesFromCanny-badger", - "Find_closest_factors-badger", - "FloatToInt-badger", - "FloatToString-badger", - "FrameToVideo-badger", - "GETRequset-badger", - "GarbageCollect-badger", - "GetColorFromBorder-badger", - "GetDirName-badger", - "GetUUID-badger", - "IdentifyBorderColorToMask-badger", - "IdentifyColorToMask-badger", - "ImageNormalization-badger", - "ImageOverlap-badger", - "ImageScaleToSide-badger", - "IntToString-badger", - "IntToStringAdvanced-badger", - "LoadImageAdvanced-badger", - "LoadImagesFromDirListAdvanced-badger", - "MapColorsToPalette-badger", - "NormalizationNumber-badger", - "ReduceColors-badger", - "RotateImageWithPadding-badger", - "SegmentToMaskByPoint-badger", - "SimpleBoolean-badger", - "StringToFizz-badger", - "TextListToString-badger", - "ToPixel-badger", - "ToPixelV2-badger", - "TrimTransparentEdges-badger", - "VideoCutFromDir-badger", - "VideoToFrame-badger", - "deleteDir-badger", - "findCenterOfMask-badger", - "getImageSide-badger", - "getParentDir-badger", - "mkdir-badger" - ], - { - "title_aux": "ComfyUI_BadgerTools" - } - ], - "https://github.com/AbyssBadger0/ComfyUI_Kolors_awesome_prompts": [ - [ - "KolorsAwesomePrompts" - ], - { - "title_aux": "Kolors Awesome Prompts" - } - ], - "https://github.com/Acly/comfyui-inpaint-nodes": [ - [ - "INPAINT_ApplyFooocusInpaint", - "INPAINT_DenoiseToCompositingMask", - "INPAINT_ExpandMask", - "INPAINT_InpaintWithModel", - "INPAINT_LoadFooocusInpaint", - "INPAINT_LoadInpaintModel", - "INPAINT_MaskedBlur", - "INPAINT_MaskedFill", - "INPAINT_VAEEncodeInpaintConditioning" - ], - { - "title_aux": "ComfyUI Inpaint Nodes" - } - ], - "https://github.com/Acly/comfyui-tooling-nodes": [ - [ - "ETN_ApplyMaskToImage", - "ETN_ApplyReferenceImages", - "ETN_AttentionMask", - "ETN_BackgroundRegion", - "ETN_CropImage", - "ETN_DefineRegion", - "ETN_ExtractImageTile", - "ETN_ExtractMaskTile", - "ETN_GenerateTileMask", - "ETN_KritaCanvas", - "ETN_KritaImageLayer", - "ETN_KritaMaskLayer", - "ETN_KritaOutput", - "ETN_KritaSelection", - "ETN_KritaSendText", - "ETN_KritaStyle", - "ETN_ListRegionMasks", - "ETN_LoadImageBase64", - "ETN_LoadMaskBase64", - "ETN_MergeImageTile", - "ETN_NSFWFilter", - "ETN_Parameter", - "ETN_ReferenceImage", - "ETN_SendImageWebSocket", - "ETN_TileLayout", - "ETN_Translate" - ], - { - "title_aux": "ComfyUI Nodes for External Tooling" - } - ], - "https://github.com/AconexOfficial/ComfyUI_GOAT_Nodes": [ - [ - "Advanced_Upscale_Image_Using_Model", - "Capped_Float_Positive", - "Capped_Int_Positive", - "Embedding_Selector", - "Fast_Color_Match", - "Fast_Film_Grain", - "Get_Side_Length_Of_Image", - "Image_Crop", - "Image_Dimensions", - "Image_Stitch", - "Image_Tiler", - "Image_Untiler", - "Int_Divide_Rounded", - "Sampler_Settings", - "Smart_Seed", - "Triple_Prompt" - ], - { - "title_aux": "ComfyUI GOAT Nodes" - } - ], - "https://github.com/Aerse/ComfyUI-Seed-Nodes": [ - [ - "Seed-Nodes: ImagePixelator", - "Seed-Nodes: ImageTo3D", - "Seed-Nodes: LoadImage", - "Seed-Nodes: LoadMultipleImages", - "Seed-Nodes: SLICPixelator" - ], - { - "title_aux": "ComfyUI-Seed-Nodes" - } - ], - "https://github.com/AhBumm/ComfyUI_BillBum_Nodes": [ - [ - "BillBum_Modified_Base64_Url2Data_Node", - "BillBum_Modified_Base64_Url2Img_Node", - "BillBum_Modified_Dalle_API_Node", - "BillBum_Modified_DropoutToken_Node", - "BillBum_Modified_Flux_API_Node", - "BillBum_Modified_Ideogram_API_Node", - "BillBum_Modified_ImageSplit_Node", - "BillBum_Modified_Image_API_Call_Node", - "BillBum_Modified_LLM_API_Node", - "BillBum_Modified_Recraft_API_Node", - "BillBum_Modified_RegText_Node", - "BillBum_Modified_SD3_API_Node", - "BillBum_Modified_Structured_LLM_Node(Imperfect)", - "BillBum_Modified_Together_API_Node", - "BillBum_Modified_VisionLM_API_Node", - "BillBum_Modified_img2b64_url_Node", - "BillBum_NonSysPrompt_VLM_API_Node", - "Input_Text", - "Text_Concat" - ], - { - "nodename_pattern": "\\(BillBum\\)$", - "title_aux": "Customizable API Call Nodes by BillBum" - } - ], - "https://github.com/AiMiDi/ComfyUI-Aimidi-nodes": [ - [ - "Add Tag", - "Clear Tag", - "Load Images Pair Batch", - "Merge Tag", - "Move Tag To Top", - "Reserve Tag", - "Save Images Pair" - ], - { - "title_aux": "ComfyUI-Aimidi-nodes" - } - ], - "https://github.com/AkashKarnatak/ComfyUI_faishme": [ - [ - "Faishme Debug", - "Faishme Mannequin to Model Loader", - "Faishme Moondream", - "Load Fashion Model" - ], - { - "title_aux": "ComfyUI_faishme" - } - ], - "https://github.com/Aksaz/comfyui-seamless-clone": [ - [ - "Seamless Clone" - ], - { - "title_aux": "seamless-clone-comfyui" - } - ], - "https://github.com/AlekPet/ComfyUI_Custom_Nodes_AlekPet": [ - [ - "ArgosTranslateCLIPTextEncodeNode", - "ArgosTranslateTextNode", - "ChatGLM4InstructMediaNode", - "ChatGLM4InstructNode", - "ChatGLM4TranslateCLIPTextEncodeNode", - "ChatGLM4TranslateTextNode", - "ColorsCorrectNode", - "DeepTranslatorCLIPTextEncodeNode", - "DeepTranslatorTextNode", - "GoogleTranslateCLIPTextEncodeNode", - "GoogleTranslateTextNode", - "HexToHueNode", - "IDENode", - "PainterNode", - "PoseNode", - "PreviewTextNode" - ], - { - "title_aux": "AlekPet/ComfyUI_Custom_Nodes_AlekPet" - } - ], - "https://github.com/Alvaroeai/ComfyUI-Text2Json": [ - [ - "TextToJson" - ], - { - "title_aux": "ComfyUI-Text2Json" - } - ], - "https://github.com/Amorano/Jovi_GLSL": [ - [ - "BLEND LINEAR (JOV_GL)", - "COLOR CONVERSION (JOV_GL)", - "COLOR PALETTE (JOV_GL)", - "CONICAL GRADIENT (JOV_GL)", - "DIRECTIONAL WARP (JOV_GL)", - "FILTER RANGE (JOV_GL)", - "GRAYSCALE (JOV_GL)", - "HSV ADJUST (JOV_GL)", - "INVERT (JOV_GL)", - "MIN MAX (JOV_GL)", - "NOISE PERLIN (JOV_GL)", - "NOISE SIMPLEX (JOV_GL)", - "NOISE WORLEY (JOV_GL)", - "NORMAL (JOV_GL)", - "NORMAL BLEND (JOV_GL)", - "PIXELATE (JOV_GL)", - "POSTERIZE (JOV_GL)", - "SOBEL (JOV_GL)", - "TRANSFORM (JOV_GL)" - ], - { - "title_aux": "Jovi_GLSL" - } - ], - "https://github.com/Amorano/Jovi_Measure": [ - [ - "BLUR EFFECT (JOV_MEASURE)", - "SHANNON ENTROPY (JOV_MEASURE)" - ], - { - "title_aux": "Jovi_Measure" - } - ], - "https://github.com/Amorano/Jovi_Spout": [ - [ - "SPOUT READER (JOV_SPOUT)", - "SPOUT WRITER (JOV_SPOUT)" - ], - { - "title_aux": "Jovi_Spout" - } - ], - "https://github.com/Amorano/Jovimetrix": [ - [ - "ADJUST (JOV) \ud83d\udd78\ufe0f", - "AKASHIC (JOV) \ud83d\udcd3", - "ARRAY (JOV) \ud83d\udcda", - "BIT SPLIT (JOV) \u2b44", - "BLEND (JOV) \u2697\ufe0f", - "COLOR BLIND (JOV) \ud83d\udc41\u200d\ud83d\udde8", - "COLOR MATCH (JOV) \ud83d\udc9e", - "COLOR MEANS (JOV) \u3030\ufe0f", - "COLOR THEORY (JOV) \ud83d\udede", - "COMPARISON (JOV) \ud83d\udd75\ud83c\udffd", - "CONSTANT (JOV) \ud83d\udfea", - "CROP (JOV) \u2702\ufe0f", - "DELAY (JOV) \u270b\ud83c\udffd", - "EXPORT (JOV) \ud83d\udcfd", - "FILTER MASK (JOV) \ud83e\udd3f", - "FLATTEN (JOV) \u2b07\ufe0f", - "GLSL (JOV) \ud83c\udf69", - "GLSL BLEND LINEAR (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL COLOR CONVERSION (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL COLOR PALETTE (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL CONICAL GRADIENT (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL DIRECTIONAL WARP (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL FILTER RANGE (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL GRAYSCALE (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL HSV ADJUST (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL INVERT (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL NORMAL (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL NORMAL BLEND (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL POSTERIZE (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL TRANSFORM (JOV) \ud83e\uddd9\ud83c\udffd", - "GRADIENT MAP (JOV) \ud83c\uddf2\ud83c\uddfa", - "GRAPH (JOV) \ud83d\udcc8", - "IMAGE INFO (JOV) \ud83d\udcda", - "LERP (JOV) \ud83d\udd30", - "MIDI FILTER (JOV) \u2733\ufe0f", - "MIDI FILTER EZ (JOV) \u2747\ufe0f", - "MIDI MESSAGE (JOV) \ud83c\udf9b\ufe0f", - "MIDI READER (JOV) \ud83c\udfb9", - "OP BINARY (JOV) \ud83c\udf1f", - "OP UNARY (JOV) \ud83c\udfb2", - "PIXEL MERGE (JOV) \ud83e\udec2", - "PIXEL SPLIT (JOV) \ud83d\udc94", - "PIXEL SWAP (JOV) \ud83d\udd03", - "QUEUE (JOV) \ud83d\uddc3", - "QUEUE TOO (JOV) \ud83d\uddc3", - "ROUTE (JOV) \ud83d\ude8c", - "SAVE OUTPUT (JOV) \ud83d\udcbe", - "SHAPE GEN (JOV) \u2728", - "SPOUT WRITER (JOV) \ud83c\udfa5", - "STACK (JOV) \u2795", - "STEREOGRAM (JOV) \ud83d\udcfb", - "STEREOSCOPIC (JOV) \ud83d\udd76\ufe0f", - "STREAM READER (JOV) \ud83d\udcfa", - "STREAM WRITER (JOV) \ud83c\udf9e\ufe0f", - "STRINGER (JOV) \ud83e\ude80", - "SWIZZLE (JOV) \ud83d\ude35", - "TEXT GEN (JOV) \ud83d\udcdd", - "THRESHOLD (JOV) \ud83d\udcc9", - "TICK (JOV) \u23f1", - "TRANSFORM (JOV) \ud83c\udfdd\ufe0f", - "VALUE (JOV) \ud83e\uddec", - "WAVE GEN (JOV) \ud83c\udf0a" - ], - { - "author": "Alexander G. Morano", - "description": "Integrates Webcam, MIDI, Spout and GLSL shader support. Animation", - "nodename_pattern": " \\(JOV\\)$", - "title": "Jovimetrix", - "title_aux": "Jovimetrix Composition Nodes" - } - ], - "https://github.com/Anibaaal/ComfyUI-UX-Nodes": [ - [ - "AdvancedCompositeImageMasked", - "BlockLayerStringGenerator", - "BlurNode", - "ColorGeneratorNode", - "DropShadowNode", - "EasyResolutionPicker", - "LerpNode", - "RemoveJSONMarkdownFormatting" - ], - { - "title_aux": "ComfyUI UX Nodes" - } - ], - "https://github.com/AonekoSS/ComfyUI-LoRA-Tuner": [ - [ - "LoraTuner" - ], - { - "title_aux": "ComfyUI-LoRA-Tuner" - } - ], - "https://github.com/AonekoSS/ComfyUI-SimpleCounter": [ - [ - "Simple Counter" - ], - { - "title_aux": "ComfyUI-SimpleCounter" - } - ], - "https://github.com/Apache0ne/ComfyUI-EasyUrlLoader": [ - [ - "EasyUrlLoader" - ], - { - "title_aux": "ComfyUI-EasyUrlLoader" - } - ], - "https://github.com/Apache0ne/SambaNova": [ - [ - "SambaNovaLLMNode" - ], - { - "title_aux": "SambaNova" - } - ], - "https://github.com/ArcherFMY/Diffusion360_ComfyUI": [ - [ - "Diffusion360LoaderImage2Pano", - "Diffusion360LoaderText2Pano", - "Diffusion360Sampler", - "Diffusion360SamplerImage2Pano", - "Diffusion360SamplerText2Pano", - "InputImage", - "InputText", - "VAEDecodeTiledBlended" - ], - { - "title_aux": "Diffusion360_ComfyUI" - } - ], - "https://github.com/ArdeniusAI/ComfyUI-Ardenius": [ - [ - "ARD 4crop Latent", - "ARD 4img Combine", - "ARD 4latent Upscale", - "ARD 4vae Decode", - "ARD Basic Load Image", - "ARD Control Box", - "ARD Counter", - "ARD Dual Prompt", - "ARD Empty Latent Image", - "ARD Float", - "ARD Float To Integer", - "ARD Integer", - "ARD Integer To Float", - "ARD Load Image", - "ARD Math", - "ARD Position", - "ARD Prompt Travel", - "ARD Remainder", - "ARD Resize", - "ARD Save Image", - "ARD Seed", - "ARD Text Box", - "ARD Text Box Counter", - "ARD XY Scripts" - ], - { - "title_aux": "ComfyUI-Ardenius" - } - ], - "https://github.com/ArtBot2023/CharacterFaceSwap": [ - [ - "Color Blend", - "Crop Face", - "Exclude Facial Feature", - "Generation Parameter Input", - "Generation Parameter Output", - "Image Full BBox", - "Load BiseNet", - "Load RetinaFace", - "Mask Contour", - "Segment Face", - "Uncrop Face" - ], - { - "title_aux": "Character Face Swap" - } - ], - "https://github.com/ArtVentureX/comfyui-animatediff": [ - [ - "AnimateDiffCombine", - "AnimateDiffLoraLoader", - "AnimateDiffModuleLoader", - "AnimateDiffSampler", - "AnimateDiffSlidingWindowOptions", - "ImageSizeAndBatchSize", - "LoadVideo" - ], - { - "title_aux": "AnimateDiff" - } - ], - "https://github.com/AshMartian/ComfyUI-DirGir": [ - [ - "Dir_Gir_Looper", - "Dir_Gir_Picker", - "Gir_Image_Nabber" - ], - { - "title_aux": "Dir Gir" - } - ], - "https://github.com/AuroBit/ComfyUI-AnimateAnyone-reproduction": [ - [ - "AnimateAnyone" - ], - { - "title_aux": "ComfyUI-AnimateAnyone-reproduction" - } - ], - "https://github.com/AustinMroz/ComfyUI-DynamicOversampling": [ - [ - "DynamicSampler", - "MeasuredSampler", - "ResolveMaskPromise" - ], - { - "title_aux": "DynamicOversampling" - } - ], - "https://github.com/AustinMroz/ComfyUI-SpliceTools": [ - [ - "LogSigmas", - "RerangeSigmas", - "SpliceDenoised", - "SpliceLatents", - "TemporalSplice" - ], - { - "title_aux": "SpliceTools" - } - ], - "https://github.com/Auttasak-L/ComfyUI-ImageCropper": [ - [ - "ImageCropper" - ], - { - "title_aux": "ComfyUI-ImageCropper" - } - ], - "https://github.com/BAIS1C/ComfyUI_RSS_Feed_Reader": [ - [ - "RSSFeedNode" - ], - { - "title_aux": "ComfyUI_RSS_Feed_Reader" - } - ], - "https://github.com/BIMer-99/ComfyUI_FishSpeech_EX": [ - [ - "AudioToPrompt", - "LoadVQGAN", - "Prompt2Semantic", - "SaveAudioToMp3", - "Semantic2Audio" - ], - { - "title_aux": "ComfyUI_FishSpeech_EX" - } - ], - "https://github.com/BIMer-99/Comfyui_Hunyuan3D_EX": [ - [ - "GenerateSixViews", - "Hunyuan3DNode", - "RemoveBackground", - "SquareImage", - "TriMeshViewer" - ], - { - "title_aux": "Comfyui_Hunyuan3D_EX" - } - ], - "https://github.com/BXYMartin/ComfyUI-InstantIDUtils": [ - [ - "ListOfImages", - "MultiControlNetConverter", - "NHWC2NCHWTensor", - "NHWCTensor2PIL", - "PIL2NHWCTensor" - ], - { - "title_aux": "ComfyUI-InstantIDUtils" - } - ], - "https://github.com/BZcreativ/ComfyUI-FLUX-TOGETHER-API": [ - [ - "FluxDev_TOGETHER", - "FluxPro11_TOGETHER", - "FluxPro_TOGETHER" - ], - { - "title_aux": "ComfyUI-FLUX-TOGETHER-API" - } - ], - "https://github.com/BadCafeCode/masquerade-nodes-comfyui": [ - [ - "Blur", - "Change Channel Count", - "Combine Masks", - "Constant Mask", - "Convert Color Space", - "Create QR Code", - "Create Rect Mask", - "Cut By Mask", - "Get Image Size", - "Image To Mask", - "Make Image Batch", - "Mask By Text", - "Mask Morphology", - "Mask To Region", - "MasqueradeIncrementer", - "Mix Color By Mask", - "Mix Images By Mask", - "Paste By Mask", - "Prune By Mask", - "Separate Mask Components", - "Unary Image Op", - "Unary Mask Op" - ], - { - "title_aux": "Masquerade Nodes" - } - ], - "https://github.com/Beinsezii/bsz-cui-extras": [ - [ - "BSZAbsoluteHires", - "BSZAspectHires", - "BSZColoredLatentImageXL", - "BSZCombinedHires", - "BSZHueChromaXL", - "BSZInjectionKSampler", - "BSZLatentDebug", - "BSZLatentFill", - "BSZLatentGradient", - "BSZLatentHSVAImage", - "BSZLatentOffsetXL", - "BSZLatentRGBAImage", - "BSZLatentbuster", - "BSZPixelbuster", - "BSZPixelbusterHelp", - "BSZPrincipledConditioning", - "BSZPrincipledSampler", - "BSZPrincipledScale", - "BSZStrangeResample" - ], - { - "title_aux": "bsz-cui-extras" - } - ], - "https://github.com/Bellzs/ComfyUI-LoRA-Assistant": [ - [ - "LoRATriggerLocal" - ], - { - "title_aux": "ComfyUI-LoRA-Assistant" - } - ], - "https://github.com/BenNarum/ComfyUI_CAS": [ - [ - "AttentionToSigmas", - "AttenuatorNode", - "BasicCFGGuider", - "CELU", - "CustomAdvancedSampler", - "CustomLCMCFGPP", - "CustomModelSamplingDiscreteDistilledAncestralCFGPP", - "CustomModelSamplingDiscreteDistilledCFGPP", - "CustomX0AncestralCFGPP", - "CustomX0CFGPP", - "ELU", - "EPSCFGPPScheduler", - "GELU", - "GLU", - "HardTanhScheduler", - "Hardshrink", - "Hardsigmoid", - "Hardswish", - "Hardtanh", - "LatentActivation", - "LatentChannelPresets", - "LatentConvolution", - "LatentFFT", - "LatentFrequencyPresets", - "LatentGlitch", - "LatentMath", - "LatentMathFormulaBuilder", - "LatentMosaic", - "LatentNoisePresets", - "LatentPixelSort", - "LatentSelfAttention", - "LatentTwist", - "LatentValuePresets", - "LatentWarpPresets", - "LeakyReLU", - "LogSigmoid", - "LogSoftmax", - "Mish", - "PReLU", - "RReLU", - "ReLU", - "ReLU6", - "SELU", - "SamplerCustomLCMCFGPP", - "SamplerCustomModelSamplingDiscreteDistilledAncestralCFGPP", - "SamplerCustomModelSamplingDiscreteDistilledCFGPP", - "SamplerCustomX0AncestralCFGPP", - "SamplerCustomX0CFGPP", - "SamplerDPMCFGPP", - "SamplerDynamicCFGPP", - "SamplerEulerAttnCFGPP", - "SamplerEulerStepControlAncestralCFGPP", - "SamplerHeunCFGPP", - "SamplerLCMUpscaleW", - "SamplerLCMUpscaleWCFGPP", - "SamplerLCMUpscaleWGPU", - "SamplerStepSizeControlCFGPP", - "SamplerWeightedCFGPP", - "SiLU", - "Softmax", - "Softmax2D", - "SoftmaxScheduler", - "Softmin", - "Softplus", - "Softshrink", - "Softsign", - "Tanh", - "Tanhshrink", - "Threshold", - "tcd_euler_a_w", - "tcd_w" - ], - { - "title_aux": "ComfyUI_CAS" - } - ], - "https://github.com/BenNarum/SigmaWaveFormNode": [ - [ - "AttenuatorNode", - "FourierFilterNode", - "PhaseLockedLoopNode", - "SigmaWaveFormNode", - "SigmaWaveFormNodeAdvanced", - "SigmaWaveFormNodeSimple" - ], - { - "title_aux": "SigmaWaveFormNodes" - } - ], - "https://github.com/BennyKok/comfyui-deploy": [ - [ - "ComfyDeployOutputImage", - "ComfyDeployWebscoketImageInput", - "ComfyDeployWebscoketImageOutput", - "ComfyUIDeployExternalBoolean", - "ComfyUIDeployExternalCheckpoint", - "ComfyUIDeployExternalFaceModel", - "ComfyUIDeployExternalImage", - "ComfyUIDeployExternalImageAlpha", - "ComfyUIDeployExternalImageBatch", - "ComfyUIDeployExternalLora", - "ComfyUIDeployExternalNumber", - "ComfyUIDeployExternalNumberInt", - "ComfyUIDeployExternalNumberSlider", - "ComfyUIDeployExternalText", - "ComfyUIDeployExternalTextAny", - "ComfyUIDeployExternalVid", - "ComfyUIDeployExternalVideo", - "ComfyUIDeployModelList", - "ComfyUIDeployStringCombine" - ], - { - "author": "BennyKok", - "description": "", - "nickname": "Comfy Deploy", - "title": "comfyui-deploy", - "title_aux": "ComfyUI Deploy" - } - ], - "https://github.com/BetaDoggo/ComfyUI-FastSDCPU": [ - [ - "fastsdcpu", - "fastsdcpu_lcm_models", - "fastsdcpu_loadModel", - "fastsdcpu_vino_models" - ], - { - "title_aux": "ComfyUI-FastSDCPU" - } - ], - "https://github.com/BetaDoggo/ComfyUI-Gatcha-Embedding": [ - [ - "GatchaEmbedding" - ], - { - "title_aux": "Gatcha Embeddings" - } - ], - "https://github.com/BetaDoggo/ComfyUI-VideoPlayer": [ - [ - "AllInOnePlayer", - "ImageToEmoji", - "LoadFrame", - "LoadJPGFrame", - "LoadVideoFrame" - ], - { - "title_aux": "ComfyUI Video Player" - } - ], - "https://github.com/BetaDoggo/ComfyUI-WDV-Nodes": [ - [ - "ModelSamplingWaifuDiffusionV" - ], - { - "title_aux": "neggles/ComfyUI-WDV-Nodes [gist-wrapper]" - } - ], - "https://github.com/BetaDoggo/ComfyUI-YetAnotherSafetyChecker": [ - [ - "YetAnotherSafetyChecker" - ], - { - "title_aux": "ComfyUI YetAnotherSafetyChecker" - } - ], - "https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools": [ - [ - "BTPromptSchedule", - "BTPromptSelector", - "EndQueue", - "ImageTextOverlay", - "Loop", - "LoopEnd", - "LoopStart" - ], - { - "title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI" - } - ], - "https://github.com/Big-Idea-Technology/ComfyUI_LLM_Node": [ - [ - "AdvOptions_Node", - "CodingOptionsNode", - "LLM_Node", - "Output_Node", - "QuantizationConfig_Node" - ], - { - "title_aux": "LLM Node for ComfyUI" - } - ], - "https://github.com/Billius-AI/ComfyUI-Path-Helper": [ - [ - "Add File Name Prefix", - "Add File Name Prefix Advanced", - "Add Folder", - "Add Folder Advanced", - "Create Project Root", - "Join Variables", - "Show Path", - "Show String" - ], - { - "title_aux": "ComfyUI-Path-Helper" - } - ], - "https://github.com/Bin-sam/DynamicPose-ComfyUI": [ - [ - "DynamicPose_Sampler", - "Load_Pose_Guider", - "Load_denoising_unet", - "Load_reference_unet", - "Pose_Guider_Encode", - "align", - "load_pose_model", - "pose_extraction" - ], - { - "title_aux": "DynamicPose-ComfyUI" - } - ], - "https://github.com/Black-Lioness/ComfyUI-PromptUtils": [ - [ - "FilenameGenerator", - "KeywordGenerator" - ], - { - "title_aux": "ComfyUI-PromptUtils" - } - ], - "https://github.com/BlackVortexAI/ComfyUI-BVortexNodes": [ - [ - "BV Conditional ImagePipe Splitter", - "BV Image Caption Saver", - "BV Image Difference Heatmap", - "BV Image Size with Math", - "BV ImagePipe Junction", - "BV ImagePipe Loader", - "BV ImagePipe Merger", - "BV Show LoRA Blocks", - "BV String to Combo", - "BV Upscale Config", - "BV Vector Edit", - "BV Vector Edit Dropdown FLUX", - "BV Vector Edit Range", - "BV Vector Edit Range Dropdown FLUX", - "BV Vector Edit Selector FLUX", - "BV Vector Permutation", - "BV Vector of Length-n", - "BV Vector to String", - "BV Vector to String List" - ], - { - "title_aux": "BV Nodes" - } - ], - "https://github.com/BlakeOne/ComfyUI-CustomScheduler": [ - [ - "CustomScheduler" - ], - { - "title_aux": "ComfyUI CustomScheduler" - } - ], - "https://github.com/BlakeOne/ComfyUI-SchedulerMixer": [ - [ - "SchedulerMixer" - ], - { - "title_aux": "ComfyUI SchedulerMixer" - } - ], - "https://github.com/BlenderNeko/ComfyUI_ADV_CLIP_emb": [ - [ - "BNK_AddCLIPSDXLParams", - "BNK_AddCLIPSDXLRParams", - "BNK_CLIPTextEncodeAdvanced", - "BNK_CLIPTextEncodeSDXLAdvanced" - ], - { - "title_aux": "Advanced CLIP Text Encode" - } - ], - "https://github.com/BlenderNeko/ComfyUI_Cutoff": [ - [ - "BNK_CutoffBasePrompt", - "BNK_CutoffRegionsToConditioning", - "BNK_CutoffRegionsToConditioning_ADV", - "BNK_CutoffSetRegions" - ], - { - "title_aux": "ComfyUI Cutoff" - } - ], - "https://github.com/BlenderNeko/ComfyUI_Noise": [ - [ - "BNK_DuplicateBatchIndex", - "BNK_GetSigma", - "BNK_InjectNoise", - "BNK_NoisyLatentImage", - "BNK_SlerpLatent", - "BNK_Unsampler" - ], - { - "title_aux": "ComfyUI Noise" - } - ], - "https://github.com/BlenderNeko/ComfyUI_SeeCoder": [ - [ - "ConcatConditioning", - "SEECoderImageEncode" - ], - { - "title_aux": "SeeCoder [WIP]" - } - ], - "https://github.com/BlenderNeko/ComfyUI_TiledKSampler": [ - [ - "BNK_TiledKSampler", - "BNK_TiledKSamplerAdvanced" - ], - { - "title_aux": "Tiled sampling for ComfyUI" - } - ], - "https://github.com/Blonicx/ComfyUI-X-Rework": [ - [ - "ClearNode", - "LoadImageURL", - "StopNode", - "UploadImage", - "XSampler", - "XSave" - ], - { - "title_aux": "ComfyUI-Rework-X" - } - ], - "https://github.com/BoyuanJiang/FitDiT-ComfyUI": [ - [ - "FitDiTLoader", - "FitDiTMaskGenerator", - "FitDiTTryOn" - ], - { - "title_aux": "FitDiT[official] - High-fidelity Virtual Try-on" - } - ], - "https://github.com/Bria-AI/ComfyUI-BRIA-API": [ - [ - "BriaEraser", - "BriaGenFill", - "BriaTailoredGen", - "ReimagineNode", - "ShotByImageNode", - "ShotByTextNode", - "TailoredModelInfoNode", - "Text2ImageBaseNode", - "Text2ImageFastNode", - "Text2ImageHDNode" - ], - { - "title_aux": "BRIA AI API nodes" - } - ], - "https://github.com/Burgstall-labs/ComfyUI-BS_Kokoro-onnx": [ - [ - "Kokoro TTS" - ], - { - "title_aux": "ComfyUI-BS_Kokoro-onnx" - } - ], - "https://github.com/CC-BryanOttho/ComfyUI_API_Manager": [ - [ - "APIRequestNode", - "PostImageToAPI", - "TextPromptCombinerNode" - ], - { - "title_aux": "ComfyUI_API_Manager" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-InpaintEasy": [ - [ - "CropByMask", - "ImageAndMaskResizeNode", - "ImageCropMerge", - "InpaintEasyModel" - ], - { - "title_aux": "ComfyUI-InpaintEasy" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-Plus": [ - [ - "MiniCPM3_4B", - "MiniCPM3_4B_GPTQ_Int4", - "MiniCPM_V_2_6", - "MiniCPM_V_2_6_Int4", - "TextDisplay" - ], - { - "author": "CY-CHENYUE", - "description": "Custom nodes for MiniCPM language models in ComfyUI", - "nickname": "MiniCPM-Plus", - "title": "MiniCPM-Plus", - "title_aux": "ComfyUI-MiniCPM-Plus" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-o": [ - [ - "Load MiniCPM Model", - "MiniCPM Image Chat" - ], - { - "title_aux": "ComfyUI-MiniCPM-o" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-Molmo": [ - [ - "Molmo7BDbnb" - ], - { - "title_aux": "ComfyUI-Molmo" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-OmniGenX": [ - [ - "LoadOmniGen" - ], - { - "title_aux": "ComfyUI-OmniGenX" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-Redux-Prompt": [ - [ - "ReduxPromptStyler" - ], - { - "title_aux": "ComfyUI-Redux-Prompt" - } - ], - "https://github.com/CYBERLOOM-INC/ComfyUI-nodes-hnmr": [ - [ - "CLIPIter", - "Dict2Model", - "GridImage", - "ImageBlend2", - "KSamplerOverrided", - "KSamplerSetting", - "KSamplerXYZ", - "LatentToHist", - "LatentToImage", - "ModelIter", - "RandomLatentImage", - "SaveStateDict", - "SaveText", - "StateDictLoader", - "StateDictMerger", - "StateDictMergerBlockWeighted", - "StateDictMergerBlockWeightedMulti", - "VAEDecodeBatched", - "VAEEncodeBatched", - "VAEIter" - ], - { - "title_aux": "ComfyUI-nodes-hnmr" - } - ], - "https://github.com/Chan-0312/ComfyUI-EasyDeforum": [ - [ - "Easy2DDeforum" - ], - { - "title_aux": "ComfyUI-EasyDeforum" - } - ], - "https://github.com/Chan-0312/ComfyUI-IPAnimate": [ - [ - "IPAdapterAnimate" - ], - { - "title_aux": "ComfyUI-IPAnimate" - } - ], - "https://github.com/Chan-0312/ComfyUI-Prompt-Preview": [ - [ - "SDXLPromptStylerAdvancedPreview", - "SDXLPromptStylerPreview" - ], - { - "title_aux": "ComfyUI-Prompt-Preview" - } - ], - "https://github.com/Chaoses-Ib/ComfyUI_Ib_CustomNodes": [ - [ - "ImageToPIL", - "LoadImageFromPath", - "PILToImage", - "PILToMask" - ], - { - "title_aux": "ComfyUI_Ib_CustomNodes" - } - ], - "https://github.com/Charlweed/image_transceiver": [ - [ - "ImageTransceiver" - ], - { - "title_aux": "ImageTransceiver - ComfyUI" - } - ], - "https://github.com/ChenDarYen/ComfyUI-TimestepShiftModel": [ - [ - "Timestep Shift Model" - ], - { - "title_aux": "ComfyUI-TimestepShiftModel" - } - ], - "https://github.com/ChrisColeTech/ComfyUI-Elegant-Resource-Monitor": [ - [ - "Resource Monitor" - ], - { - "title_aux": "ComfyUI-Elegant-Resource-Monitor" - } - ], - "https://github.com/ChrisColeTech/ComfyUI-Line-counter": [ - [ - "Directory File Counter", - "Simple Number Counter", - "Text File Line Counter" - ], - { - "title_aux": "ComfyUI-Line-counter" - } - ], - "https://github.com/ClownsharkBatwing/RES4LYF": [ - [ - "AdvancedNoise", - "Base64ToConditioning", - "CLIPTextEncodeFluxUnguided", - "ClownInpaint", - "ClownInpaintSimple", - "ClownSampler", - "ClownSamplerAdvanced", - "ClownsharKSampler", - "ClownsharKSamplerAutomation", - "ClownsharKSamplerAutomation_Beta", - "ClownsharKSamplerGuide", - "ClownsharKSamplerGuides", - "ClownsharKSamplerOptions", - "ClownsharKSamplerOptions_SDE_Noise", - "ClownsharkSamplerOptions_FrameWeights", - "Conditioning Recast FP64", - "ConditioningAdd", - "ConditioningAverageScheduler", - "ConditioningMultiply", - "ConditioningOrthoCollin", - "ConditioningToBase64", - "ConditioningTruncate", - "ConditioningZeroAndTruncate", - "EmptyLatentImage64", - "EmptyLatentImageCustom", - "Film Grain", - "FluxGuidanceDisable", - "FluxLoader", - "FluxOrthoCFGPatcher", - "FluxRegionalConditioning", - "FluxRegionalPrompt", - "Frequency Separation Hard Light", - "Frequency Separation Hard Light LAB", - "Image Channels LAB", - "Image Crop Location Exact", - "Image Median Blur", - "Image Pair Split", - "Latent Batcher", - "Latent Match Channelwise", - "Latent Normalize Channels", - "Latent to Cuda", - "LatentBatch_channels", - "LatentBatch_channels_16", - "LatentNoiseBatch_fractal", - "LatentNoiseBatch_gaussian", - "LatentNoiseBatch_gaussian_channels", - "LatentNoiseBatch_perlin", - "LatentNoiseList", - "LatentNoised", - "LatentPhaseMagnitude", - "LatentPhaseMagnitudeMultiply", - "LatentPhaseMagnitudeOffset", - "LatentPhaseMagnitudePower", - "Legacy_ClownSampler", - "Legacy_ClownsharKSampler", - "Legacy_ClownsharKSamplerGuides", - "Legacy_SharkSampler", - "ModelSamplingAdvanced", - "ModelSamplingAdvancedResolution", - "ModelTimestepPatcher", - "PrepForUnsampling", - "ReFluxPatcher", - "SD35Loader", - "SamplerOptions_GarbageCollection", - "SamplerOptions_TimestepScaling", - "SamplerRK_Test", - "Set Precision", - "Set Precision Advanced", - "Set Precision Universal", - "SharkSampler", - "Sigmas Abs", - "Sigmas Add", - "Sigmas Cleanup", - "Sigmas Concat", - "Sigmas DeleteBelowFloor", - "Sigmas DeleteDuplicates", - "Sigmas From Text", - "Sigmas Iteration Karras", - "Sigmas Iteration Polyexp", - "Sigmas Math1", - "Sigmas Math3", - "Sigmas Modulus", - "Sigmas Mult", - "Sigmas Noise Inversion", - "Sigmas Pad", - "Sigmas Power", - "Sigmas Quotient", - "Sigmas Recast", - "Sigmas Rescale", - "Sigmas SetFloor", - "Sigmas Split", - "Sigmas Start", - "Sigmas Truncate", - "Sigmas Unpad", - "Sigmas Variance Floor", - "Sigmas2 Add", - "Sigmas2 Mult", - "SigmasPreview", - "SigmasSchedulePreview", - "StableCascade_StageB_Conditioning64", - "StableCascade_StageC_VAEEncode_Exact", - "StyleModelApplyAdvanced", - "Tan Scheduler", - "Tan Scheduler 2", - "Tan Scheduler 2 Simple", - "TextBox1", - "TextBox3", - "TorchCompileModelFluxAdv", - "UNetSave", - "UltraSharkSampler", - "UltraSharkSampler Tiled", - "UltraSharkSamplerRBTest", - "VAEEncodeAdvanced", - "VGG19StyleTransfer", - "Zampler_Test" - ], - { - "title_aux": "RES4LYF" - } - ], - "https://github.com/Clybius/ComfyUI-Extra-Samplers": [ - [ - "GeometricCFGGuider", - "ImageAssistedCFGGuider", - "MegaCFGGuider", - "SamplerCLYB_4M_SDE_Momentumized", - "SamplerCustomModelMixtureDuo", - "SamplerCustomNoise", - "SamplerCustomNoiseDuo", - "SamplerDPMPP_3M_SDE_DynETA", - "SamplerDPMPP_DualSDE_Momentumized", - "SamplerEulerAncestralDancing_Experimental", - "SamplerLCMCustom", - "SamplerRES_Momentumized", - "SamplerSupreme", - "SamplerTTM", - "ScaledCFGGuider", - "SimpleExponentialScheduler", - "WarmupDecayCFGGuider" - ], - { - "title_aux": "ComfyUI Extra Samplers" - } - ], - "https://github.com/Clybius/ComfyUI-Latent-Modifiers": [ - [ - "Latent Diffusion Mega Modifier" - ], - { - "title_aux": "ComfyUI-Latent-Modifiers" - } - ], - "https://github.com/ComfyUI-JH/ComfyUI-JH-Misc-Nodes": [ - [ - "JHDaisyChainableStringConstantNode", - "JHPreviewImage", - "JHThreeWaySwitchNode", - "JHTwoWaySwitchNode" - ], - { - "title_aux": "JH Misc. Nodes" - } - ], - "https://github.com/CosmicLaca/ComfyUI_Primere_Nodes": [ - [ - "DebugToFile", - "PrimereAestheticCKPTScorer", - "PrimereAnyDetailer", - "PrimereAnyOutput", - "PrimereCKPT", - "PrimereCKPTLoader", - "PrimereCLIPEncoder", - "PrimereClearNetworkTagsPrompt", - "PrimereConceptDataTuple", - "PrimereDiTPurifyPrompt", - "PrimereDynamicParser", - "PrimereEmbedding", - "PrimereEmbeddingHandler", - "PrimereEmbeddingKeywordMerger", - "PrimereEmotionsStyles", - "PrimereFaceAnalyzer", - "PrimereFastSeed", - "PrimereHypernetwork", - "PrimereImageSegments", - "PrimereKSampler", - "PrimereLLMEnhancer", - "PrimereLORA", - "PrimereLYCORIS", - "PrimereLatentNoise", - "PrimereLensStyles", - "PrimereLoraKeywordMerger", - "PrimereLoraStackMerger", - "PrimereLycorisKeywordMerger", - "PrimereLycorisStackMerger", - "PrimereMetaCollector", - "PrimereMetaDistributor", - "PrimereMetaDistributorStage2", - "PrimereMetaHandler", - "PrimereMetaSave", - "PrimereMetaTupleCollector", - "PrimereMidjourneyStyles", - "PrimereModelConceptSelector", - "PrimereModelKeyword", - "PrimereNetworkDataCollector", - "PrimereNetworkTagLoader", - "PrimerePreviewImage", - "PrimerePrompt", - "PrimerePromptOrganizer", - "PrimerePromptOrganizerCSV", - "PrimerePromptSwitch", - "PrimereRefinerPrompt", - "PrimereResolution", - "PrimereResolutionCoordinatorMPX", - "PrimereResolutionMultiplierMPX", - "PrimereSamplersSteps", - "PrimereSeed", - "PrimereStyleLoader", - "PrimereStylePile", - "PrimereTextOutput", - "PrimereUpscaleModel", - "PrimereVAE", - "PrimereVAELoader", - "PrimereVisualCKPT", - "PrimereVisualEmbedding", - "PrimereVisualHypernetwork", - "PrimereVisualLORA", - "PrimereVisualLYCORIS", - "PrimereVisualPromptOrganizerCSV", - "PrimereVisualStyle" - ], - { - "title_aux": "Primere nodes for ComfyUI" - } - ], - "https://github.com/CpreForEver/CFE_comfyui": [ - [ - "CFE Aspect Ratio", - "CFE FLUX Guidance", - "CFE FLUX Sampler", - "CFE FLUX Sampler (Pipe)", - "CFE Flux In Pipe", - "CFE Flux Out Pipe", - "CFE Lora Params", - "CFE Scheduler", - "CFE Sigma Sampler", - "CFE Sigma Sampler Strings" - ], - { - "title_aux": "CFE_comfyui" - } - ], - "https://github.com/Creeper-MZ/comfyui_nai_api": [ - [ - "NovelAI", - "NovelAI_Declutter_Preprocessor", - "NovelAI_Lineart_Processor", - "NovelAI_Prompt", - "NovelAI_Sketch_Processor", - "NovelAI_VIBE" - ], - { - "title_aux": "comfyui_nai_api" - } - ], - "https://github.com/CyanAutumn/ComfyUi_Random_Manage_Cyan": [ - [ - "Random Prompt Cyan", - "Remove Prompt Cyan" - ], - { - "title_aux": "ComfyUi Random Manage Cyan" - } - ], - "https://github.com/Cyber-BCat/ComfyUI_Auto_Caption": [ - [ - "Auto Caption", - "Joy Model load", - "LoadManyImages" - ], - { - "title_aux": "ComfyUI_Auto_Caption" - } - ], - "https://github.com/Cyber-Blacat/ComfyUI-Yuan": [ - [ - "Black and white", - "Image Judgment", - "ImageMinusMask", - "Light or Dark", - "Load Random Images", - "Mask Preprocess Morphology", - "PhotoShop Transfer", - "Yuan" - ], - { - "title_aux": "ComfyUI-Yuan" - } - ], - "https://github.com/Cyberschorsch/ComfyUI-checkpoint-config-loader": [ - [ - "Checkpoint Loader Config" - ], - { - "title_aux": "ComfyUI Checkpoint Loader Config" - } - ], - "https://github.com/DJ-Tribefull/Comfyui_FOCUS_nodes": [ - [ - "Control Pipe (DJ Nodes)", - "Global Seed (DJ Nodes)", - "KSampler Settings (DJ Nodes)", - "Model Unloader (DJ Nodes)", - "Prompt Box (DJ Nodes)", - "SDXL All-In-One (DJ Nodes)", - "SDXL Control Module (DJ Nodes)", - "SDXL Preprocess (DJ Nodes)", - "Style Injector (DJ Nodes)", - "Style Selector (DJ Nodes)", - "Wildcard Processor (DJ Nodes)" - ], - { - "title_aux": "Comfyui FOCUS nodes" - } - ], - "https://github.com/Danand/ComfyUI-ComfyCouple": [ - [ - "Attention couple", - "Comfy Couple" - ], - { - "author": "Rei D.", - "description": "If you want to draw two different characters together without blending their features, so you could try to check out this custom node.", - "nickname": "Danand", - "title": "Comfy Couple", - "title_aux": "Comfy Couple" - } - ], - "https://github.com/DanielHabib/ComfyUI-Voxels": [ - [ - "ImageBatchToImageList", - "MaskBatchToMaskList", - "MeshToVoxel", - "VoxelBlockLoader", - "VoxelBlockSaver", - "VoxelBlocksIntoVoxelVideo", - "VoxelVideoAPIInputNode", - "VoxelVideoLoader", - "VoxelVideoPreview", - "VoxelVideoViewer", - "VoxelViewer", - "VoxelizeMesh" - ], - { - "title_aux": "ComfyUI-Voxels" - } - ], - "https://github.com/DareFail/ComfyUI-Roboflow": [ - [ - "CustomWorkflow_1image", - "LabelEmotions", - "RemoveBackground" - ], - { - "title_aux": "ComfyUI-Roboflow" - } - ], - "https://github.com/DarioFT/ComfyUI-VideoDirCombiner": [ - [ - "VideoDirCombiner" - ], - { - "title_aux": "ComfyUI-VideoDirCombiner" - } - ], - "https://github.com/DataCTE/prompt_injection": [ - [ - "AdvancedPromptInjection", - "PromptInjection", - "SVDPromptInjection", - "SimplePromptInjection" - ], - { - "title_aux": "Prompt Injection Node for ComfyUI" - } - ], - "https://github.com/Dayuppy/ComfyUI-DiscordWebhook": [ - [ - "DiscordPostViaWebhook", - "DiscordSetWebhook", - "Set Discord Webhook", - "Use Discord Webhook" - ], - { - "author": "Dayuppy", - "description": "A very simple Discord webhook integration node for ComfyUI that lets you post images and text.", - "nickname": "DiscordWebhook", - "title": "Discord Webhook", - "title_aux": "Discord Webhook" - } - ], - "https://github.com/DeJoker/pipeline-parallel-comfy": [ - [ - "PipelineParallel" - ], - { - "title_aux": "Pipeline Parallel ComfyUI" - } - ], - "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": [ - [], - { - "author": "Derfuu", - "description": "Pack of simple (or not) and modded nodes for scaling images/latents, editing numbers or text. Automate calculations depending on image sizes or any other thing you want. Or randomize any number in your workflow. Debug node included.", - "nickname": "Derfuu simple/modded Nodes", - "nodename_pattern": "^DF_", - "title": "Derfuu simple/modded Nodes", - "title_aux": "Derfuu_ComfyUI_ModdedNodes" - } - ], - "https://github.com/DesertPixelAi/ComfyUI-Desert-Pixel-Nodes": [ - [ - "DP 10 String Switch", - "DP 2 String Switch", - "DP 5 Find And Replace", - "DP 5 String Switch", - "DP Add Weight To String Sdxl", - "DP Advanced Weight String Sdxl", - "DP Animation Calculator 10 Inputs", - "DP Animation Calculator 5 Inputs", - "DP Art Style Generator", - "DP Aspect Ratio Picker", - "DP Big Letters", - "DP Broken Token", - "DP Clean Prompt", - "DP Clean Prompt Travel", - "DP Combo Controller", - "DP Condition Mixer", - "DP ControlNet Apply Advanced", - "DP Crazy Prompt Mixer", - "DP Create Json File", - "DP Custom Aspect Ratio", - "DP Diff Int 8step Selector", - "DP Draggable Floats 1", - "DP Draggable Floats 2", - "DP Draggable Floats 3", - "DP Fast Slow Motion", - "DP Five Lora", - "DP Five Lora Random", - "DP Image And String Pairs Switch", - "DP Image Color Analyzer", - "DP Image Color Analyzer Small", - "DP Image Color Effect", - "DP Image Effect Processor", - "DP Image Effect Processor Small", - "DP Image Empty Latent Switch Flux", - "DP Image Empty Latent Switch SDXL", - "DP Image Slide Show", - "DP Image Strip", - "DP Image Switch 10", - "DP Image Switch 3", - "DP Image Switch 5", - "DP Int 0-1000", - "DP Int 0-1000 4 Step", - "DP Int 0-1000 8 Step", - "DP Line Cycler", - "DP Load Checkpoint With Info", - "DP Load Controlnet Model With Name", - "DP Load Dual CLIP With Info", - "DP Load Image Effects", - "DP Load Image Effects Small", - "DP Load Image Minimal", - "DP Load UNET With Info", - "DP Logo Animator", - "DP Logo Animator Advanced", - "DP Lora Random Strength Controller", - "DP Lora Strength Controller", - "DP Lora Strength Stepper", - "DP Mask Settings", - "DP Prompt Inverter", - "DP Prompt Manager", - "DP Prompt Manager Small", - "DP Prompt Mode Controller", - "DP Prompt Styler", - "DP Prompt Token Compressor", - "DP Random Character", - "DP Random Crazy Prompt Generator", - "DP Random Logo Style Generator", - "DP Random Min Max", - "DP Random Mode Controller", - "DP Random Mode Switch", - "DP Random Psychedelic Punk Generator", - "DP Random Superhero Prompt Generator", - "DP Random Vehicle Generator", - "DP Sampler", - "DP Save Preview Image", - "DP Set New Model Folder Link", - "DP String Text", - "DP String Text With Weight", - "DP String With Switch", - "DP Strings Connector", - "DP Strip Edge Masks", - "DP Switch Controller", - "DP Text Preview", - "DP Transition Frames Selector", - "DP Video Effect Receiver", - "DP Video Effect Sender", - "DP Video Flicker", - "DP Video Looper", - "DP Video Transition", - "DP_Crazy_Prompt_Mixer", - "DP_Logo_Animator_Advanced", - "DP_Lora_Strength_Stepper", - "DP_Prompt_Inverter", - "DP_Strings_Connector" - ], - { - "title_aux": "ComfyUI-Desert-Pixel-Nodes" - } - ], - "https://github.com/Dobidop/ComfyStereo": [ - [ - "LazyStereo", - "StereoImageNode" - ], - { - "title_aux": "Dobidop ComfyStereo" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-BEN": [ - [ - "BackgroundEraseNetwork" - ], - { - "title_aux": "ComfyUI BEN - Background Erase Network" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-MediaMixer": [ - [ - "FinalFrameSelector", - "FirstFrameSelector", - "PromptJournal", - "ReverseFrameSequence", - "VideoMerge", - "YouTubeVideoDownloader" - ], - { - "title_aux": "MediaMixer" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-Schedulizer": [ - [ - "prompt_schedule_converter", - "whisper_node" - ], - { - "title_aux": "Schedulizer" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-SnakeOil": [ - [ - "NegativeLoRALoader" - ], - { - "title_aux": "ComfyUI-SnakeOil" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-basic-pitch": [ - [ - "AudioToMidi", - "SaveMidi" - ], - { - "title_aux": "ComfyUI-basic-pitch" - } - ], - "https://github.com/DrMWeigand/ComfyUI-StereoVision": [ - [ - "AutostereogramGenerator", - "StereoscopicGenerator" - ], - { - "title_aux": "StereoVision Plugin for ComfyUI" - } - ], - "https://github.com/DrMWeigand/ComfyUI_ColorImageDetection": [ - [ - "LABColorDetection", - "RGBColorDetection" - ], - { - "title_aux": "ComfyUI Color Detection Nodes" - } - ], - "https://github.com/DraconicDragon/ComfyUI-Venice-API": [ - [ - "FluxPro11_TOGETHER", - "FluxPro_TOGETHER", - "GenerateImage_VENICE", - "GenerateText_VENICE", - "UpscaleImage_VENICE", - "testaaaaa" - ], - { - "title_aux": "ComfyUI-Venice-API" - } - ], - "https://github.com/Eagle-CN/ComfyUI-Addoor": [ - [ - "AD_AnyFileList", - "AD_BatchImageLoadFromDir", - "AD_CSVPromptStyler", - "AD_CSVReader", - "AD_CSVTranslator", - "AD_DeleteLocalAny", - "AD_FluxTrainStepMath", - "AD_HFDownload", - "AD_ImageDrawRectangleSimple", - "AD_ImageIndexer", - "AD_ImageSaver", - "AD_LoadImageAdvanced", - "AD_PromptReplace", - "AD_TextIndexer", - "AD_TextListToString", - "AD_TextSaver", - "AD_TxtToCSVCombiner", - "AD_ZipSave", - "AD_advanced-padding", - "AD_color-image", - "AD_image-concat", - "AD_image-resize", - "AD_mockup-maker", - "AD_poster-maker", - "AD_prompt-saver", - "ImageCaptioner", - "ImageResize", - "Incrementer \ud83e\udeb4", - "TextAppendNode", - "Width and height for scaling image to ideal resolution \ud83e\udeb4", - "Width and height from aspect ratio \ud83e\udeb4", - "YANC.MultilineString", - "comfyui-easy-padding", - "image concat mask" - ], - { - "author": "ComfyUI Addoor", - "description": "Save prompts to CSV file with customizable naming pattern", - "title": "ComfyUI-PromptSaver", - "title_aux": "ComfyUI-Addoor" - } - ], - "https://github.com/EeroHeikkinen/ComfyUI-eesahesNodes": [ - [ - "InstantX Flux Union ControlNet Loader" - ], - { - "author": "eesahe", - "description": "InstantX's Flux union ControlNet loader and implementation", - "nickname": "eesahesNodes", - "title": "eesahe's Nodes", - "title_aux": "ComfyUI-eesahesNodes" - } - ], - "https://github.com/Elaine-chennn/comfyui-overlay-media": [ - [ - "OverlayMediaNode", - "VideoUpload" - ], - { - "title_aux": "ComfyUI Overlay Media Node" - } - ], - "https://github.com/Electrofried/ComfyUI-OpenAINode": [ - [ - "OpenAINode" - ], - { - "title_aux": "OpenAINode" - } - ], - "https://github.com/EllangoK/ComfyUI-post-processing-nodes": [ - [ - "ArithmeticBlend", - "AsciiArt", - "Blend", - "Blur", - "CannyEdgeMask", - "ChromaticAberration", - "ColorCorrect", - "ColorTint", - "Dissolve", - "Dither", - "DodgeAndBurn", - "FilmGrain", - "Glow", - "HSVThresholdMask", - "KMeansQuantize", - "KuwaharaBlur", - "Parabolize", - "PencilSketch", - "PixelSort", - "Pixelize", - "Quantize", - "Sharpen", - "SineWave", - "Solarize", - "Vignette" - ], - { - "title_aux": "ComfyUI-post-processing-nodes" - } - ], - "https://github.com/EnragedAntelope/ComfyUI-ConstrainResolution": [ - [ - "ConstrainResolution" - ], - { - "title_aux": "ComfyUI-ConstrainResolution" - } - ], - "https://github.com/EnragedAntelope/ComfyUI-Doubutsu-Describer": [ - [ - "DoubutsuDescriber" - ], - { - "title_aux": "ComfyUI-Doubutsu-Describer" - } - ], - "https://github.com/EnragedAntelope/ComfyUI-EACloudNodes": [ - [ - "GroqNode", - "OpenRouterModels", - "OpenrouterNode" - ], - { - "title_aux": "ComfyUI-EACloudNodes" - } - ], - "https://github.com/EvilBT/ComfyUI_SLK_joy_caption_two": [ - [ - "Batch_joy_caption_two", - "Batch_joy_caption_two_advanced", - "Joy_caption_two", - "Joy_caption_two_advanced", - "Joy_caption_two_load", - "Joy_extra_options" - ], - { - "title_aux": "JoyCaptionAlpha Two for ComfyUI" - } - ], - "https://github.com/Excidos/ComfyUI-Documents": [ - [ - "ChunkRouter", - "DocumentLoader", - "ImageSelector", - "PDFPageSplitter", - "PDFToImage", - "TextChunker" - ], - { - "title_aux": "ComfyUI-Documents" - } - ], - "https://github.com/Excidos/ComfyUI-Lumina-Next-SFT-DiffusersWrapper": [ - [ - "LuminaDiffusersNode" - ], - { - "title_aux": "ComfyUI-Lumina-Next-SFT-DiffusersWrapper" - } - ], - "https://github.com/ExponentialML/ComfyUI_ModelScopeT2V": [ - [ - "ModelScopeT2VLoader" - ], - { - "title_aux": "ComfyUI_ModelScopeT2V" - } - ], - "https://github.com/ExponentialML/ComfyUI_Native_DynamiCrafter": [ - [ - "DynamiCrafterLoader", - "DynamiCrafterProcessor" - ], - { - "title_aux": "ComfyUI - Native DynamiCrafter" - } - ], - "https://github.com/ExponentialML/ComfyUI_VisualStylePrompting": [ - [ - "ApplyVisualStyle" - ], - { - "title_aux": "ComfyUI_VisualStylePrompting" - } - ], - "https://github.com/ExterminanzHS/Gecco-Discord-Autosend": [ - [ - "GeccoAutosend", - "GeccoImageSave", - "GeccoSelectchannel" - ], - { - "title_aux": "Gecco Discord Autosend" - } - ], - "https://github.com/Extraltodeus/ComfyUI-AutomaticCFG": [ - [ - "Automatic CFG", - "Automatic CFG - Advanced", - "Automatic CFG - Attention modifiers", - "Automatic CFG - Attention modifiers tester", - "Automatic CFG - Custom attentions", - "Automatic CFG - Excellent attention", - "Automatic CFG - Negative", - "Automatic CFG - Post rescale only", - "Automatic CFG - Preset Loader", - "Automatic CFG - Unpatch function", - "Automatic CFG - Warp Drive", - "SAG delayed activation", - "Temperature separate settings CLIP SDXL", - "Temperature settings CLIP", - "Temperature settings SD 1.5", - "Temperature settings SDXL", - "Zero Uncond CFG - standalone patch (incompatible with the others)" - ], - { - "title_aux": "ComfyUI-AutomaticCFG" - } - ], - "https://github.com/Extraltodeus/LoadLoraWithTags": [ - [ - "LoraLoaderTagsQuery" - ], - { - "title_aux": "LoadLoraWithTags" - } - ], - "https://github.com/Extraltodeus/Skimmed_CFG": [ - [ - "Skimmed CFG", - "Skimmed CFG - Clean Skim", - "Skimmed CFG - Difference CFG", - "Skimmed CFG - Timed flip", - "Skimmed CFG - linear interpolation", - "Skimmed CFG - linear interpolation dual scales", - "Skimmed CFG - replace" - ], - { - "title_aux": "DistanceSampler" - } - ], - "https://github.com/Extraltodeus/Stable-Diffusion-temperature-settings": [ - [ - "CLIP Temperature", - "Unet Temperature" - ], - { - "title_aux": "Stable-Diffusion-temperature-settings" - } - ], - "https://github.com/Extraltodeus/Uncond-Zero-for-ComfyUI": [ - [ - "Conditioning combine positive and negative", - "Conditioning crop or fill", - "Uncond Zero", - "interrupt on NaN" - ], - { - "title_aux": "Uncond-Zero-for-ComfyUI" - } - ], - "https://github.com/Extraltodeus/Vector_Sculptor_ComfyUI": [ - [ - "CLIP Vector Sculptor text encode", - "Conditioning (Average keep magnitude)", - "Conditioning (Slerp)", - "Conditioning SDXL merge clip_g / clip_l", - "Conditioning normalize magnitude to empty" - ], - { - "title_aux": "Vector_Sculptor_ComfyUI" - } - ], - "https://github.com/Extraltodeus/noise_latent_perlinpinpin": [ - [ - "NoisyLatentPerlin", - "NoisyLatentPerlin16ch" - ], - { - "title_aux": "noise latent perlinpinpin" - } - ], - "https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler": [ - [ - "Aligned Scheduler", - "Gaussian Tail Scheduler", - "Get sigmas as float", - "Graph sigmas", - "Manual scheduler", - "Merge many sigmas by average", - "Merge sigmas by average", - "Merge sigmas gradually", - "Multiply sigmas", - "Output min/max sigmas", - "Split and concatenate sigmas", - "The Golden Scheduler" - ], - { - "title_aux": "sigmas_tools_and_the_golden_scheduler" - } - ], - "https://github.com/Fannovel16/ComfyUI-Frame-Interpolation": [ - [ - "AMT VFI", - "CAIN VFI", - "FILM VFI", - "FLAVR VFI", - "GMFSS Fortuna VFI", - "IFRNet VFI", - "IFUnet VFI", - "KSampler Gradually Adding More Denoise (efficient)", - "M2M VFI", - "Make Interpolation State List", - "RIFE VFI", - "STMFNet VFI", - "Sepconv VFI", - "VFI FloatToInt" - ], - { - "title_aux": "ComfyUI Frame Interpolation" - } - ], - "https://github.com/Fannovel16/ComfyUI-MagickWand": [ - [ - "ImageMagick Adaptive Blur", - "ImageMagick Adaptive Resize", - "ImageMagick Adaptive Sharpen", - "ImageMagick Adaptive Threshold", - "ImageMagick Auto Gamma", - "ImageMagick Auto Level", - "ImageMagick Auto Orient", - "ImageMagick Auto Threshold", - "ImageMagick Blue Shift", - "ImageMagick Blur", - "ImageMagick Brightness Contrast", - "ImageMagick Canny", - "ImageMagick Charcoal", - "ImageMagick Chop", - "ImageMagick Clahe", - "ImageMagick Clamp", - "ImageMagick Coalesce", - "ImageMagick Color Decision List", - "ImageMagick Color Matrix", - "ImageMagick Combine", - "ImageMagick Concat", - "ImageMagick Contrast", - "ImageMagick Contrast Stretch", - "ImageMagick Crop", - "ImageMagick Cycle Color Map", - "ImageMagick Decipher", - "ImageMagick Despeckle", - "ImageMagick Distort", - "ImageMagick Edge", - "ImageMagick Emboss", - "ImageMagick Encipher", - "ImageMagick Enhance", - "ImageMagick Equalize", - "ImageMagick Evaluate", - "ImageMagick Extent", - "ImageMagick Flip", - "ImageMagick Flop", - "ImageMagick Forward Fourier Transform", - "ImageMagick Function", - "ImageMagick Gamma", - "ImageMagick Gaussian Blur", - "ImageMagick Hough Lines", - "ImageMagick Implode", - "ImageMagick Kmeans", - "ImageMagick Kuwahara", - "ImageMagick Level", - "ImageMagick Levelize", - "ImageMagick Linear Stretch", - "ImageMagick Liquid Rescale", - "ImageMagick Local Contrast", - "ImageMagick Magnify", - "ImageMagick Mean Shift", - "ImageMagick Merge Layers", - "ImageMagick Mode", - "ImageMagick Modulate", - "ImageMagick Morphology", - "ImageMagick Motion Blur", - "ImageMagick Negate", - "ImageMagick Noise", - "ImageMagick Normalize", - "ImageMagick Oil Paint", - "ImageMagick Ordered Dither", - "ImageMagick Polynomial", - "ImageMagick Posterize", - "ImageMagick Quantize", - "ImageMagick Random Threshold", - "ImageMagick Range Threshold", - "ImageMagick Resample", - "ImageMagick Resize", - "ImageMagick Roll", - "ImageMagick Rotational Blur", - "ImageMagick Sample", - "ImageMagick Scale", - "ImageMagick Selective Blur", - "ImageMagick Sepia Tone", - "ImageMagick Shade", - "ImageMagick Shadow", - "ImageMagick Sharpen", - "ImageMagick Shave", - "ImageMagick Sigmoidal Contrast", - "ImageMagick Sketch", - "ImageMagick Smush", - "ImageMagick Solarize", - "ImageMagick Splice", - "ImageMagick Spread", - "ImageMagick Statistic", - "ImageMagick Swirl", - "ImageMagick Threshold", - "ImageMagick Thumbnail", - "ImageMagick Transform", - "ImageMagick Transform Colorspace", - "ImageMagick Transparentize", - "ImageMagick Transpose", - "ImageMagick Transverse", - "ImageMagick Unsharp Mask", - "ImageMagick Vignette", - "ImageMagick Wave", - "ImageMagick Wavelet Denoise", - "ImageMagick White Balance" - ], - { - "title_aux": "ComfyUI-MagickWand" - } - ], - "https://github.com/Fannovel16/ComfyUI-MotionDiff": [ - [ - "EmptyMotionData", - "ExportSMPLTo3DSoftware", - "Export_SMPLMultipleSubjects_To_3DSoftware", - "Human4D_Img2SMPL", - "Humans4DLoader", - "MotionCLIPTextEncode", - "MotionDataVisualizer", - "MotionDiffLoader", - "MotionDiffSimpleSampler", - "RenderMultipleSubjectsSMPLMesh", - "RenderSMPLMesh", - "Render_OpenPose_From_SMPL_Mesh_Multiple_Subjects", - "SMPLLoader", - "SMPLShapeParameters", - "SaveSMPL", - "SmplifyMotionData", - "SpectreFaceReconLoader", - "SpectreImg2SMPL", - "mgpt_model_loader", - "mgpt_t2m" - ], - { - "title_aux": "ComfyUI MotionDiff" - } - ], - "https://github.com/Fannovel16/ComfyUI-Video-Matting": [ - [ - "BRIAAI Matting", - "Robust Video Matting" - ], - { - "title_aux": "ComfyUI-Video-Matting" - } - ], - "https://github.com/Fannovel16/comfyui_controlnet_aux": [ - [ - "AIO_Preprocessor", - "AnimalPosePreprocessor", - "AnimeFace_SemSegPreprocessor", - "AnimeLineArtPreprocessor", - "AnyLineArtPreprocessor_aux", - "BAE-NormalMapPreprocessor", - "BinaryPreprocessor", - "CannyEdgePreprocessor", - "ColorPreprocessor", - "ControlNetAuxSimpleAddText", - "ControlNetPreprocessorSelector", - "DSINE-NormalMapPreprocessor", - "DWPreprocessor", - "DensePosePreprocessor", - "DepthAnythingPreprocessor", - "DepthAnythingV2Preprocessor", - "DiffusionEdge_Preprocessor", - "ExecuteAllControlNetPreprocessors", - "FacialPartColoringFromPoseKps", - "FakeScribblePreprocessor", - "HEDPreprocessor", - "HintImageEnchance", - "ImageGenResolutionFromImage", - "ImageGenResolutionFromLatent", - "ImageIntensityDetector", - "ImageLuminanceDetector", - "InpaintPreprocessor", - "LeReS-DepthMapPreprocessor", - "LineArtPreprocessor", - "LineartStandardPreprocessor", - "M-LSDPreprocessor", - "Manga2Anime_LineArt_Preprocessor", - "MaskOptFlow", - "MediaPipe-FaceMeshPreprocessor", - "MeshGraphormer+ImpactDetector-DepthMapPreprocessor", - "MeshGraphormer-DepthMapPreprocessor", - "Metric3D-DepthMapPreprocessor", - "Metric3D-NormalMapPreprocessor", - "Metric_DepthAnythingV2Preprocessor", - "MiDaS-DepthMapPreprocessor", - "MiDaS-NormalMapPreprocessor", - "OneFormer-ADE20K-SemSegPreprocessor", - "OneFormer-COCO-SemSegPreprocessor", - "OpenposePreprocessor", - "PiDiNetPreprocessor", - "PixelPerfectResolution", - "PyraCannyPreprocessor", - "RenderAnimalKps", - "RenderPeopleKps", - "SAMPreprocessor", - "SavePoseKpsAsJsonFile", - "ScribblePreprocessor", - "Scribble_PiDiNet_Preprocessor", - "Scribble_XDoG_Preprocessor", - "SemSegPreprocessor", - "ShufflePreprocessor", - "TEEDPreprocessor", - "TTPlanet_TileGF_Preprocessor", - "TTPlanet_TileSimple_Preprocessor", - "TilePreprocessor", - "UniFormer-SemSegPreprocessor", - "Unimatch_OptFlowPreprocessor", - "UpperBodyTrackingFromPoseKps", - "Zoe-DepthMapPreprocessor", - "Zoe_DepthAnythingPreprocessor" - ], - { - "author": "tstandley", - "preemptions": [ - "AIO_Preprocessor", - "AnimalPosePreprocessor", - "AnimeFace_SemSegPreprocessor", - "AnimeLineArtPreprocessor", - "BAE-NormalMapPreprocessor", - "BinaryPreprocessor", - "CannyEdgePreprocessor", - "ColorPreprocessor", - "DSINE-NormalMapPreprocessor", - "DWPreprocessor", - "DensePosePreprocessor", - "DepthAnythingPreprocessor", - "DiffusionEdge_Preprocessor", - "FacialPartColoringFromPoseKps", - "FakeScribblePreprocessor", - "HEDPreprocessor", - "HintImageEnchance", - "ImageGenResolutionFromImage", - "ImageGenResolutionFromLatent", - "ImageIntensityDetector", - "ImageLuminanceDetector", - "InpaintPreprocessor", - "LeReS-DepthMapPreprocessor", - "LineArtPreprocessor", - "LineartStandardPreprocessor", - "M-LSDPreprocessor", - "Manga2Anime_LineArt_Preprocessor", - "MaskOptFlow", - "MediaPipe-FaceMeshPreprocessor", - "MeshGraphormer-DepthMapPreprocessor", - "MiDaS-DepthMapPreprocessor", - "MiDaS-NormalMapPreprocessor", - "OneFormer-ADE20K-SemSegPreprocessor", - "OneFormer-COCO-SemSegPreprocessor", - "OpenposePreprocessor", - "PiDiNetPreprocessor", - "PixelPerfectResolution", - "SAMPreprocessor", - "SavePoseKpsAsJsonFile", - "ScribblePreprocessor", - "Scribble_XDoG_Preprocessor", - "SemSegPreprocessor", - "ShufflePreprocessor", - "TEEDPreprocessor", - "TilePreprocessor", - "UniFormer-SemSegPreprocessor", - "Unimatch_OptFlowPreprocessor", - "Zoe-DepthMapPreprocessor", - "Zoe_DepthAnythingPreprocessor" - ], - "title_aux": "ComfyUI's ControlNet Auxiliary Preprocessors" - } - ], - "https://github.com/Fantaxico/ComfyUI-GCP-Storage": [ - [ - "GCPStorageNode" - ], - { - "title_aux": "ComfyUI-GCP-Storage" - } - ], - "https://github.com/Feidorian/feidorian-ComfyNodes": [ - [], - { - "nodename_pattern": "^Feidorian_", - "title_aux": "feidorian-ComfyNodes" - } - ], - "https://github.com/Fictiverse/ComfyUI_Fictiverse": [ - [ - "Add Margin With Color", - "Essential Params", - "If Image Valid", - "Image Params", - "Is Image Valid ?", - "None if same Image", - "Video Params" - ], - { - "title_aux": "ComfyUI Fictiverse Nodes" - } - ], - "https://github.com/Fihade/IC-Light-ComfyUI-Node": [ - [ - "LoadICLightUnetDiffusers", - "diffusers_model_loader", - "iclight_diffusers_sampler" - ], - { - "title_aux": "IC-Light-ComfyUI-Node" - } - ], - "https://github.com/FinetunersAI/ComfyUI_Finetuners_Suite": [ - [ - "AutoImageResize", - "GroupLink", - "ModelListNode", - "VariablesInjector", - "VariablesLogicNode" - ], - { - "title_aux": "ComfyUI_Finetuners_Suite" - } - ], - "https://github.com/FizzleDorf/ComfyUI-AIT": [ - [ - "AIT_Unet_Loader", - "AIT_VAE_Encode_Loader" - ], - { - "title_aux": "ComfyUI-AIT" - } - ], - "https://github.com/FizzleDorf/ComfyUI_FizzNodes": [ - [ - "AbsCosWave", - "AbsSinWave", - "BatchGLIGENSchedule", - "BatchPromptSchedule", - "BatchPromptScheduleEncodeSDXL", - "BatchPromptScheduleLatentInput", - "BatchPromptScheduleNodeFlowEnd", - "BatchPromptScheduleSDXLLatentInput", - "BatchStringSchedule", - "BatchValueSchedule", - "BatchValueScheduleLatentInput", - "CalculateFrameOffset", - "ConcatStringSingle", - "CosWave", - "FizzFrame", - "FizzFrameConcatenate", - "ImagesFromBatchSchedule", - "Init FizzFrame", - "InvCosWave", - "InvSinWave", - "Lerp", - "PromptSchedule", - "PromptScheduleEncodeSDXL", - "PromptScheduleNodeFlow", - "PromptScheduleNodeFlowEnd", - "SawtoothWave", - "SinWave", - "SquareWave", - "StringConcatenate", - "StringSchedule", - "TriangleWave", - "ValueSchedule", - "convertKeyframeKeysToBatchKeys" - ], - { - "title_aux": "FizzNodes" - } - ], - "https://github.com/FlyingFireCo/tiled_ksampler": [ - [ - "Asymmetric Tiled KSampler", - "Circular VAEDecode", - "Tiled KSampler" - ], - { - "title_aux": "tiled_ksampler" - } - ], - "https://github.com/ForeignGods/ComfyUI-Mana-Nodes": [ - [ - "Canvas Properties", - "Combine Video", - "Font Properties", - "Generate Audio", - "Preset Color Animations", - "Save/Preview Text", - "Scheduled Values", - "Speech Recognition", - "Split Video", - "Text to Image Generator" - ], - { - "title_aux": "ComfyUI-Mana-Nodes" - } - ], - "https://github.com/Franck-Demongin/NX_HuggingFace_Flux": [ - [ - "HFFlux" - ], - { - "title_aux": "NX_HuggingFace_Flux" - } - ], - "https://github.com/Franck-Demongin/NX_PromptStyler": [ - [ - "NX_PromptStyler" - ], - { - "title_aux": "NX_PromptStyler" - } - ], - "https://github.com/Franck-Demongin/NX_Translator": [ - [ - "Nx_Translator" - ], - { - "title_aux": "NX_Translator" - } - ], - "https://github.com/FuouM/ComfyUI-EbSynth": [ - [ - "ES_Guides7", - "ES_Translate", - "ES_VideoTransfer", - "ES_VideoTransferExtra" - ], - { - "author": "Fuou Marinas", - "description": "Run EbSynth in ComfyUI.", - "nickname": "EbSynth", - "title": "ComfyUI-EbSynth", - "title_aux": "ComfyUI-EbSynth" - } - ], - "https://github.com/FuouM/ComfyUI-FirstOrderMM": [ - [ - "Articulate_Runner", - "FOMM_Partswap", - "FOMM_Runner", - "FOMM_Seg10Chooser", - "FOMM_Seg15Chooser", - "FOMM_Seg5Chooser", - "FSRT_Runner", - "MRFA_Runner", - "Spline_Runner" - ], - { - "author": "Fuou Marinas", - "description": "ComfyUI-native nodes to run First Order Motion Model for Image Animation and its non-diffusion-based successors.", - "nickname": "FOMM", - "title": "ComfyUI-FirstOrderMM", - "title_aux": "ComfyUI-FirstOrderMM" - } - ], - "https://github.com/FuouM/ComfyUI-StyleTransferPlus": [ - [ - "AESFA", - "AesFAStyleBlend", - "AesPA", - "CAST", - "CoralColorTransfer", - "EFDM", - "MicroAST", - "NeuralNeighbor", - "TSSAT", - "UniST", - "UniST_Video" - ], - { - "author": "ZJU", - "description": "A collection of style transfer nodes.", - "nickname": "StyleTransferPlus", - "title": "ComfyUI-StyleTransferPlus", - "title_aux": "ComfyUI-StyleTransferPlus" - } - ], - "https://github.com/FuouM/FM_nodes": [ - [ - "CoLIE_LowLight_Enhance", - "ConvIR_DeHaze", - "ConvIR_DeRain", - "ConvIR_DeSnow", - "ConvIR_DefocusDeblur", - "ConvIR_MotionDeBlur", - "ProPIH_Harmonizer", - "RealViFormerSR", - "StabStitch", - "StabStitch_Crop_Resize", - "StabStitch_Stabilize", - "WFEN" - ], - { - "author": "Fuou Marinas", - "description": "A collection of nodes.", - "nickname": "FM_nodes", - "title": "FM Nodes", - "title_aux": "FM_nodes" - } - ], - "https://github.com/Fuwuffyi/ComfyUI-VisualArea-Nodes": [ - [ - "VisualAreaPrompt", - "VisualAreaPromptAdvanced" - ], - { - "author": "Fuwuffy", - "description": "This is a collection of nodes created to aid when managing area conditionings.", - "nickname": "comfy-visual-area", - "title": "ComfyUI Visual Area Nodes", - "title_aux": "ComfyUI-VisualArea-Nodes" - } - ], - "https://github.com/G-370/ComfyUI-SD3-Powerlab": [ - [ - "G370SD3PowerLab_AttentionToImage", - "G370SD3PowerLab_ImageIntoAttention", - "G370SD3PowerLab_ImageIntoLayer", - "G370SD3PowerLab_LayerToImage", - "G370SD3PowerLab_RenderAttention" - ], - { - "title_aux": "ComfyUI-SD3-Powerlab" - } - ], - "https://github.com/GMapeSplat/ComfyUI_ezXY": [ - [ - "ConcatenateString", - "ItemFromDropdown", - "IterationDriver", - "JoinImages", - "LineToConsole", - "NumberFromList", - "NumbersToList", - "PlotImages", - "StringFromList", - "StringToLabel", - "StringsToList", - "ezMath", - "ezXY_AssemblePlot", - "ezXY_Driver" - ], - { - "title_aux": "ezXY scripts and nodes" - } - ], - "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes": [ - [ - "Danbooru (ID)", - "Danbooru (Random)", - "Random File From Path", - "Replace Strings", - "Simple Wildcards", - "Simple Wildcards (Dir.)", - "Wildcards Nodes" - ], - { - "title_aux": "ComfyUI-GTSuya-Nodes" - } - ], - "https://github.com/GadzoinksOfficial/gadzoinks_ComfyUI": [ - [ - "Gadzoinks" - ], - { - "author": "gadzoinksofficial", - "description": "Custom node for integrating with gadzoinks iPhone app", - "nickname": "Gadzoinks", - "title": "Gadzoinks", - "title_aux": "Gadzoinks" - } - ], - "https://github.com/GavChap/ComfyUI-SD3LatentSelectRes": [ - [ - "SD3LatentSelectRes" - ], - { - "title_aux": "ComfyUI-SD3LatentSelectRes" - } - ], - "https://github.com/GeekyGhost/ComfyUI-GeekyRemB": [ - [ - "GeekyRemB" - ], - { - "title_aux": "ComfyUI-GeekyRemB" - } - ], - "https://github.com/GentlemanHu/ComfyUI-SunoAI": [ - [ - "GentlemanHu_SunoAI", - "GentlemanHu_SunoAI_NotSafe" - ], - { - "title_aux": "ComfyUI Suno API" - } - ], - "https://github.com/GiusTex/ComfyUI-DiffusersImageOutpaint": [ - [ - "DiffusersImageOutpaint", - "EncodeDiffusersOutpaintPrompt", - "LoadDiffusersOutpaintModels", - "PadImageForDiffusersOutpaint" - ], - { - "title_aux": "ComfyUI-DiffusersImageOutpaint" - } - ], - "https://github.com/GoingAI1998/Comfyui_imgcanvas": [ - [ - "WebCanvas" - ], - { - "title_aux": "ComfyUI Web Canvas Node" - } - ], - "https://github.com/Goktug/comfyui-saveimage-plus": [ - [ - "SaveImagePlus" - ], - { - "title_aux": "Save Image Plus for ComfyUI" - } - ], - "https://github.com/Gourieff/ComfyUI-ReActor": [ - [ - "ImageRGBA2RGB", - "ReActorBuildFaceModel", - "ReActorFaceBoost", - "ReActorFaceSwap", - "ReActorFaceSwapOpt", - "ReActorImageDublicator", - "ReActorLoadFaceModel", - "ReActorMakeFaceModelBatch", - "ReActorMaskHelper", - "ReActorOptions", - "ReActorRestoreFace", - "ReActorSaveFaceModel", - "ReActorUnload" - ], - { - "title_aux": "comfyui-reactor-node" - } - ], - "https://github.com/GraftingRayman/ComfyUI-PuLID-Flux-GR": [ - [ - "GRApplyPulidFlux", - "GRPulidFluxEvaClipLoader", - "GRPulidFluxInsightFaceLoader", - "GRPulidFluxModelLoader" - ], - { - "title_aux": "ComfyUI-PuLID-Flux-GR" - } - ], - "https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [ - [ - "GR Background Remover REMBG", - "GR Checkered Board", - "GR Counter", - "GR Flip Tile Random Inverted", - "GR Flip Tile Random Red Ring", - "GR Image Details Displayer", - "GR Image Details Saver", - "GR Image Paste", - "GR Image Paste With Mask", - "GR Image Resize", - "GR Image Resize Methods", - "GR Image Size", - "GR Image/Depth Mask", - "GR Mask", - "GR Mask Create", - "GR Mask Create Random", - "GR Mask Create Random Multi", - "GR Mask Resize", - "GR Multi Mask Create", - "GR Onomatopoeia", - "GR Pan Or Zoom", - "GR Prompt Generator", - "GR Prompt Generator Extended", - "GR Prompt HUB", - "GR Prompt Selector", - "GR Prompt Selector Multi", - "GR Prompty", - "GR Scroller", - "GR Stack Image", - "GR Text Overlay", - "GR Tile and Border Image", - "GR Tile and Border Image Random Flip" - ], - { - "title_aux": "GraftingRayman" - } - ], - "https://github.com/GraftingRayman/ComfyUI_QueueTube": [ - [ - "GR QueueTube" - ], - { - "title_aux": "ComfyUI QueueTube" - } - ], - "https://github.com/GreenLandisaLie/AuraSR-ComfyUI": [ - [ - "AuraSR.AuraSRUpscaler" - ], - { - "title_aux": "AuraSR-ComfyUI" - } - ], - "https://github.com/GrenKain/PixelArt-Processing-Nodes-for-ComfyUI": [ - [ - "PixelArtDownscaleNode", - "PixelArtNode" - ], - { - "title_aux": "PixelArt Processing Nodes" - } - ], - "https://github.com/GrvBdgr/comfyui-negativewildcardsprocessor": [ - [ - "custom_token_processor", - "neg_wildcard_processor" - ], - { - "title_aux": "Negative Wildcard Processor Node for ComfyUI" - } - ], - "https://github.com/Guillaume-Fgt/ComfyUI_StableCascadeLatentRatio": [ - [ - "StableCascadeLatentRatio" - ], - { - "title_aux": "ComfyUI_StableCascadeLatentRatio" - } - ], - "https://github.com/HAL41/ComfyUI-aichemy-nodes": [ - [ - "aichemyYOLOv8Segmentation" - ], - { - "title_aux": "ComfyUI aichemy nodes" - } - ], - "https://github.com/HECer/ComfyUI-FilePathCreator": [ - [ - "FilePathCreator", - "FilePathExtractor" - ], - { - "title_aux": "ComfyUI-FilePathCreator" - } - ], - "https://github.com/HM-RunningHub/ComfyUI_RH_APICall": [ - [ - "RH_ExecuteNode", - "RH_ImageUploaderNode", - "RH_NodeInfoListNode", - "RH_SettingsNode", - "RH_Utils" - ], - { - "title_aux": "ComfyUI_RH_APICall" - } - ], - "https://github.com/HM-RunningHub/ComfyUI_RH_OminiControl": [ - [ - "RunningHub_Omini_Fill", - "RunningHub_Omini_Spatial", - "RunningHub_Omini_Subject" - ], - { - "title_aux": "ComfyUI_RH_OminiControl" - } - ], - "https://github.com/Haiper-ai/ComfyUI-HaiperAI-API": [ - [ - "HaiperImage2Video", - "HaiperKeyframeConditioning", - "HaiperText2Image", - "HaiperText2Video" - ], - { - "title_aux": "ComfyUI-HaiperAI-API" - } - ], - "https://github.com/Hangover3832/ComfyUI-Hangover-Moondream": [ - [ - "Moondream Interrogator" - ], - { - "author": "AlexL", - "description": "An implementation of the moondream visual LLM", - "nickname": "Hangover-Moondream", - "title": "ComfyUI-Hangover-Moondream", - "title_aux": "ComfyUI-Hangover-Moondream" - } - ], - "https://github.com/Hangover3832/ComfyUI-Hangover-Nodes": [ - [ - "Image Scale Bounding Box", - "MS kosmos-2 Interrogator", - "Make Inpaint Model", - "Save Image w/o Metadata" - ], - { - "author": "AlexL", - "description": "An implementation of Microsoft kosmos-2 image to text transformer.", - "nickname": "Hangover-ms_kosmos2", - "title": "ComfyUI-Hangover-Kosmos2", - "title_aux": "ComfyUI-Hangover-Nodes" - } - ], - "https://github.com/Hangover3832/ComfyUI-Hangover-Recognize_Anything": [ - [ - "Recognize Anything Model (RAM)" - ], - { - "author": "AlexL", - "description": "An implementation of the Recognize Anything Model (RAM++) for ComfyUI. The counterpart of Segment Anything Model (SAM).", - "nickname": "Hangover-Recognize_Anything", - "title": "ComfyUI-Hangover-Recognize_Anything", - "title_aux": "Recognize Anything Model (RAM) for ComfyUI" - } - ], - "https://github.com/Haoming02/comfyui-diffusion-cg": [ - [ - "Normalization", - "Recenter", - "Recenter XL" - ], - { - "title_aux": "Diffusion CG" - } - ], - "https://github.com/Haoming02/comfyui-floodgate": [ - [ - "FloodGate" - ], - { - "title_aux": "Floodgate" - } - ], - "https://github.com/Haoming02/comfyui-resharpen": [ - [ - "Resharpen" - ], - { - "title_aux": "ComfyUI ReSharpen" - } - ], - "https://github.com/HaydenReeve/ComfyUI-Better-Strings": [ - [ - "BetterString" - ], - { - "title_aux": "ComfyUI Better Strings" - } - ], - "https://github.com/HeadshotPro/ComfyUI-HeadshotPro": [ - [ - "[HSP] Download Dreambooth Checkpoint", - "[HSP] Download Flux Lora", - "[HSP] Get Random Value From List", - "[HSP] Load Canny Pose Face", - "[HSP] Transparent to White Background" - ], - { - "title_aux": "ComfyUI-HeadshotPro" - } - ], - "https://github.com/HebelHuber/comfyui-enhanced-save-node": [ - [ - "EnhancedSaveNode" - ], - { - "title_aux": "comfyui-enhanced-save-node" - } - ], - "https://github.com/HellerCommaA/ComfyUI-VideoResolutions": [ - [ - "HunyuanResolutions" - ], - { - "title_aux": "Hunyuan Video Resolutions" - } - ], - "https://github.com/HelloVision/ComfyUI_HelloMeme": [ - [ - "CropPortrait", - "GetDriveExpression", - "GetDriveExpression2", - "GetDrivePose", - "GetFaceLandmarks", - "HMFaceToolkitsLoader", - "HMImagePipelineLoader", - "HMPipelineImage", - "HMPipelineVideo", - "HMVideoPipelineLoader" - ], - { - "title_aux": "ComfyUI_HelloMeme" - } - ], - "https://github.com/Hellrunner2k/ComfyUI-HellrunnersMagicalNodes": [ - [ - "AdjustMojo", - "LoadMaskMap", - "MagicalSaveNode", - "MojoLoader", - "MojoMaker", - "SaveMojo", - "ThermalLatenator" - ], - { - "title_aux": "Hellrunner's Magical Nodes" - } - ], - "https://github.com/Hiero207/ComfyUI-Hiero-Nodes": [ - [ - "Load Prompt Travel file", - "Post to Discord w/ Webhook", - "Save Prompt Travel file" - ], - { - "author": "Hiero", - "description": "Just some nodes that I wanted/needed, so I made them.", - "nickname": "HNodes", - "title": "Hiero-Nodes", - "title_aux": "Hiero-Nodes" - } - ], - "https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": [ - [ - "AgentMemoryProvider", - "AgentNode", - "BasicRecursionFilterNode", - "DocumentChunkRecursionFilterNode", - "DocumentProcessor", - "LinuxMemoryDirectory", - "QueryNode" - ], - { - "description": "Nodes for interfacing with LiteLLM", - "nickname": "Tasha", - "title": "ComfyUI_LiteLLM", - "title_aux": "ComfyUI_LiteLLM" - } - ], - "https://github.com/Hullabalo/ComfyUI-Loop": [ - [ - "ImageCutLoop", - "ImagePasteLoop", - "LoadImageSimple", - "SaveImageSimple" - ], - { - "title_aux": "ComfyUI-Loop" - } - ], - "https://github.com/IDGallagher/ComfyUI-IG-Motion-I2V": [ - [ - "MI2V Flow Animator", - "MI2V Flow Predictor", - "MI2V PauseNode", - "MotionPainter" - ], - { - "author": "IDGallagher", - "description": "Custom nodes to aid in the exploration of Latent Space", - "nickname": "IG Interpolation Nodes", - "title": "IG Interpolation Nodes", - "title_aux": "ComfyUI-IG-Motion-I2V" - } - ], - "https://github.com/IDGallagher/ComfyUI-IG-Nodes": [ - [ - "IG Analyze SSIM", - "IG Cross Fade Images", - "IG Explorer", - "IG Float", - "IG Float List", - "IG Folder", - "IG Int", - "IG Interpolate", - "IG Load Image", - "IG Load Images", - "IG MotionPredictor", - "IG Multiply", - "IG Path Join", - "IG String", - "IG String List", - "IG ZFill", - "SM Video Base", - "SM Video Base Control" - ], - { - "author": "IDGallagher", - "description": "Custom nodes to aid in the exploration of Latent Space", - "nickname": "IG Interpolation Nodes", - "title": "IG Interpolation Nodes", - "title_aux": "IG Interpolation Nodes" - } - ], - "https://github.com/IDGallagher/MotionVideoSearch": [ - [ - "IG Motion Video Frame", - "IG Motion Video Search" - ], - { - "author": "IDGallagher", - "description": "Search an index of videos by motion image", - "nickname": "IG Motion Video Search", - "title": "IG Motion Video Search", - "title_aux": "IG-Motion-Search" - } - ], - "https://github.com/ITurchenko/ComfyUI-SizeFromArray": [ - [ - "SizeFromArray" - ], - { - "title_aux": "ComfyUI-SizeFromArray" - } - ], - "https://github.com/IamCreateAI/Ruyi-Models": [ - [ - "Ruyi_EnhanceAVideo", - "Ruyi_I2VSampler", - "Ruyi_LoadLora", - "Ruyi_LoadModel", - "Ruyi_TeaCache" - ], - { - "title_aux": "ComfyUI-Ruyi" - } - ], - "https://github.com/IgalOgonov/ComfyUI_Simple_String_Repository": [ - [ - "SimpleStringRepository", - "SimpleStringRepositoryCompact", - "SimpleStringRepositoryLarge", - "SimpleStringRepositoryLargeCompact", - "SimpleStringRepositorySmall", - "SimpleStringRepositorySmallCompact" - ], - { - "title_aux": "Simple String Repository" - } - ], - "https://github.com/ImmortalPie/ComfyUI-PonySwitch": [ - [ - "PonySwitch" - ], - { - "title_aux": "PonySwitch Node" - } - ], - "https://github.com/InstantStudioAI/ComfyUI-InstantStudio": [ - [ - "HuggingFace Classify", - "Moondream", - "UploadImagesToInstantStudio" - ], - { - "title_aux": "ComfyUI-InstantStudio" - } - ], - "https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes": [ - [ - "MX_AlphaBlend", - "MX_Blend", - "MX_Blur", - "MX_Canny", - "MX_ChromaticAberration", - "MX_ColorCorrect", - "MX_ColorMatch", - "MX_ColorTint", - "MX_Glow", - "MX_HSVThresholdMask", - "MX_KuwaharaBlur(Cartoon)", - "MX_LUT", - "MX_LensBokeh", - "MX_LensOpticAxis", - "MX_LensZoomBurst", - "MX_Mosaic", - "MX_Noise", - "MX_Posterize", - "MX_SineWave", - "MX_Solarize", - "MX_Vignette" - ], - { - "title_aux": "ComfyUI-MX-post-processing-nodes" - } - ], - "https://github.com/Inzaniak/comfyui-ranbooru": [ - [ - "LockSeed", - "PromptBackground", - "PromptLimit", - "PromptMix", - "PromptRandomWeight", - "PromptRemove", - "Ranbooru", - "RanbooruURL", - "RandomPicturePath", - "TimestampFileName" - ], - { - "title_aux": "Ranbooru for ComfyUI" - } - ], - "https://github.com/IsItDanOrAi/ComfyUI-Stereopsis": [ - [ - "Dan_FrameDelay", - "Dan_Stereopsis" - ], - { - "title_aux": "ComfyUI-Stereopsis" - } - ], - "https://github.com/Isi-dev/ComfyUI-Animation_Nodes_and_Workflows": [ - [ - "CLIPTextEncodeStyles", - "JoinVideos", - "MakeDrivingVideoForLivePortrait", - "MakePortraitWalk", - "MoveInOrOut", - "MoveLeftOrRight", - "MoveUpOrDown", - "Replace_Img_or_Vid_Bg_Assistant" - ], - { - "title_aux": "ComfyUI-Animation_Nodes_and_Workflows" - } - ], - "https://github.com/Isi-dev/ComfyUI-Img2DrawingAssistants": [ - [ - "LineArt_Assistant", - "LineArt_Assistant_2", - "Sketch_Assistant", - "Sketch_Assistant_grayScale" - ], - { - "title_aux": "ComfyUI-Img2DrawingAssistants" - } - ], - "https://github.com/Isi-dev/ComfyUI-Img2PaintingAssistant": [ - [ - "Painting", - "ProcessInspyrenetRembg" - ], - { - "title_aux": "Image to Painting and Inspyrenet Assistant Nodes" - } - ], - "https://github.com/Isi-dev/ComfyUI-UniAnimate-W": [ - [ - "Animate_X_Image", - "Animate_X_Image_Long", - "Animate_X_Image_v2", - "Animate_X_ReposeImage", - "Animate_X_ReposeImage_v2", - "Gen_align_pose", - "Gen_align_pose2", - "ReposeImage", - "UniAnimateImage", - "UniAnimateImageLong" - ], - { - "title_aux": "UniAnimate Nodes for ComfyUI" - } - ], - "https://github.com/Isulion/ComfyUI_Isulion": [ - [ - "CustomTextNode", - "DisplayImageFromURL", - "IsuCollage_Node", - "Isulion Civitai Image Display", - "Isulion Civitai Model Explorer", - "Isulion Civitai Trending", - "IsulionActionGenerator", - "IsulionAlienWorldGenerator", - "IsulionAnimalBehaviorGenerator", - "IsulionAnimalRandom", - "IsulionArtStyleGenerator", - "IsulionArtifactGenerator", - "IsulionCivitaiImageDisplay", - "IsulionCivitaiModelExplorer", - "IsulionCivitaiTrending", - "IsulionClothingGenerator", - "IsulionCuteAnimalRandom", - "IsulionEmotionGenerator", - "IsulionEpochGenerator", - "IsulionFantasyRaceGenerator", - "IsulionHabitatGenerator", - "IsulionLoadImagesNode", - "IsulionMagicalEffectGenerator", - "IsulionMegaPromptV3", - "IsulionMultiplePromptGenerator", - "IsulionMythicalLocationGenerator", - "IsulionNegativePromptGenerator", - "IsulionProfessionGenerator", - "IsulionPromptEnhancer", - "IsulionSceneComposition", - "IsulionSpacecraftGenerator", - "IsulionStyleMixer", - "IsulionTechGenerator", - "IsulionTimeOfDayGenerator", - "IsulionVideoPromptGenerator", - "IsulionWeatherGenerator", - "\ud83d\udca4 IsulionShutdown" - ], - { - "title_aux": "ComfyUI_Isulion Random Prompt Generator" - } - ], - "https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4": [ - [ - "DisplayText", - "LoadVideo", - "MiniCPM_VQA", - "MiniCPM_VQA_Polished", - "MultipleImagesInput", - "PreviewVideo" - ], - { - "title_aux": "ComfyUI_MiniCPM-V-2_6-int4" - } - ], - "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-Audio-7B-Instruct-Int4": [ - [ - "AudioLoader", - "AudioPreviewer", - "Qwen2_AQA" - ], - { - "title_aux": "ComfyUI_Qwen2-Audio-7B-Instruct-Int4" - } - ], - "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-VL-Instruct": [ - [ - "ImageLoader", - "MultiplePathsInput", - "Qwen2_VQA" - ], - { - "title_aux": "ComfyUI_Qwen2-VL-Instruct" - } - ], - "https://github.com/JEONG-JIWOO/ComfyUI_Eugene_Nodes": [ - [ - "DictBus", - "DictBusEdit", - "DictBusUnpack", - "DictMultilineSelect", - "DictTemplate", - "DictUpdate1", - "DictUpdate10", - "DictUpdate5", - "LoraPresetListLoader", - "LoraPresetLoader", - "LoraPresetSaver", - "LoraPresetSelector" - ], - { - "title_aux": "ComfyUI_Eugene_Nodes" - } - ], - "https://github.com/JPS-GER/ComfyUI_JPS-Nodes": [ - [ - "CLIPTextEncode SDXL Plus (JPS)", - "Conditioning Switch (JPS)", - "ControlNet Switch (JPS)", - "Crop Image Pipe (JPS)", - "Crop Image Settings (JPS)", - "Crop Image Square (JPS)", - "Crop Image TargetSize (JPS)", - "CtrlNet CannyEdge Pipe (JPS)", - "CtrlNet CannyEdge Settings (JPS)", - "CtrlNet MiDaS Pipe (JPS)", - "CtrlNet MiDaS Settings (JPS)", - "CtrlNet OpenPose Pipe (JPS)", - "CtrlNet OpenPose Settings (JPS)", - "CtrlNet ZoeDepth Pipe (JPS)", - "CtrlNet ZoeDepth Settings (JPS)", - "Disable Enable Switch (JPS)", - "Enable Disable Switch (JPS)", - "Generation TXT IMG Settings (JPS)", - "Get Date Time String (JPS)", - "Get Image Size (JPS)", - "IP Adapter Settings (JPS)", - "IP Adapter Settings Pipe (JPS)", - "IP Adapter Tiled Settings (JPS)", - "IP Adapter Tiled Settings Pipe (JPS)", - "IPA Switch (JPS)", - "Image Prepare Pipe (JPS)", - "Image Prepare Settings (JPS)", - "Image Switch (JPS)", - "ImageToImage Pipe (JPS)", - "ImageToImage Settings (JPS)", - "Images Masks MultiPipe (JPS)", - "InstantID Mask Prepare Pipe (JPS)", - "InstantID Mask Prepare Settings (JPS)", - "InstantID Pipe (JPS)", - "InstantID Pose Prepare Pipe (JPS)", - "InstantID Pose Prepare Settings (JPS)", - "InstantID Settings (JPS)", - "InstantID Source Prepare Pipe (JPS)", - "InstantID Source Prepare Settings (JPS)", - "Integer Switch (JPS)", - "Largest Int (JPS)", - "Latent Switch (JPS)", - "Lora Loader (JPS)", - "Mask Switch (JPS)", - "Model Switch (JPS)", - "Multiply Float Float (JPS)", - "Multiply Int Float (JPS)", - "Multiply Int Int (JPS)", - "Prepare Image (JPS)", - "Prepare Image Plus (JPS)", - "Prepare Image Tiled IPA (JPS)", - "Resolution Multiply (JPS)", - "Revision Settings (JPS)", - "Revision Settings Pipe (JPS)", - "SDXL Basic Settings (JPS)", - "SDXL Basic Settings Pipe (JPS)", - "SDXL Fundamentals MultiPipe (JPS)", - "SDXL Prompt Handling (JPS)", - "SDXL Prompt Handling Plus (JPS)", - "SDXL Prompt Styler (JPS)", - "SDXL Recommended Resolution Calc (JPS)", - "SDXL Resolutions (JPS)", - "SDXL Settings (JPS)", - "SDXL Settings Pipe (JPS)", - "Sampler Scheduler Settings (JPS)", - "Save Images Plus (JPS)", - "Substract Int Int (JPS)", - "Text Concatenate (JPS)", - "Text Prompt (JPS)", - "Text Prompt Combo (JPS)", - "Time Seed (JPS)", - "VAE Switch (JPS)" - ], - { - "author": "JPS", - "description": "Various nodes to handle SDXL Resolutions, SDXL Basic Settings, IP Adapter Settings, Revision Settings, SDXL Prompt Styler, Crop Image to Square, Crop Image to Target Size, Get Date-Time String, Resolution Multiply, Largest Integer, 5-to-1 Switches for Integer, Images, Latents, Conditioning, Model, VAE, ControlNet", - "nickname": "JPS Custom Nodes", - "title": "JPS Custom Nodes for ComfyUI", - "title_aux": "JPS Custom Nodes for ComfyUI" - } - ], - "https://github.com/JPrevots/ComfyUI-PhyCV": [ - [ - "PAGE", - "PST", - "VEVID" - ], - { - "title_aux": "ComfyUI-PhyCV" - } - ], - "https://github.com/JTriggerFish/ComfyLatentTools": [ - [ - "LatentNormalizedLanczosResize" - ], - { - "title_aux": "Comfy Latent Tools" - } - ], - "https://github.com/JackEllie/ComfyUI_AI_Assistant": [ - [ - "apply_lighting_effects", - "clean_prompt_tags", - "noline_process", - "prompt_blacklist", - "prompt_sorting", - "resize_image_sdxl_ratio" - ], - { - "title_aux": "ComfyUI-AI-Assistant" - } - ], - "https://github.com/Jaminanim/ComfyUI-Random-Int-Divisor-Node": [ - [ - "RandomIntegerNodeEfficient", - "RandomIntegerNodeEfficientAdvanced", - "RandomIntegerNodeList" - ], - { - "title_aux": "ComfyUI-Random-Int-Divisor-Node" - } - ], - "https://github.com/Jannchie/ComfyUI-J": [ - [ - "DiffusersCompelPromptEmbedding", - "DiffusersControlnetLoader", - "DiffusersControlnetUnit", - "DiffusersControlnetUnitStack", - "DiffusersDecoder", - "DiffusersGenerator", - "DiffusersPipeline", - "DiffusersPrepareLatents", - "DiffusersTextureInversionLoader", - "DiffusersXLPipeline", - "GetAverageColorFromImage", - "GetFilledColorImage" - ], - { - "title_aux": "ComfyUI-J" - } - ], - "https://github.com/JaredTherriault/ComfyUI-JNodes": [ - [ - "JNodes_AddOrSetMetaDataKey", - "JNodes_AnyToString", - "JNodes_AppendReversedFrames", - "JNodes_AudioInputOptions", - "JNodes_BooleanSelectorWithString", - "JNodes_BreakMediaInfo", - "JNodes_CheckpointSelectorWithString", - "JNodes_ConditioningInOut", - "JNodes_CreateStereoscopicImageFromDepth", - "JNodes_DiffusionModelSelector", - "JNodes_FloatLiteral", - "JNodes_GetCleanFilename", - "JNodes_GetComfyDirectory", - "JNodes_GetLeafDirectory", - "JNodes_GetOutputDirectory", - "JNodes_GetParameterFromList", - "JNodes_GetParameterGlobal", - "JNodes_GetTempDirectory", - "JNodes_ImageFormatSelector", - "JNodes_ImageSizeSelector", - "JNodes_IntLiteral", - "JNodes_JoinVideosInDirectory", - "JNodes_LoadVideo", - "JNodes_LoadVisualMediaFromPath", - "JNodes_LoadVisualMediaFromPath_Batch", - "JNodes_LoadVisualMediaFromPath_List", - "JNodes_LoraExtractor", - "JNodes_MediaInfoToString", - "JNodes_ModelInOut", - "JNodes_OutVideoInfo", - "JNodes_ParseDynamicPrompts", - "JNodes_ParseParametersToGlobalList", - "JNodes_ParseWildcards", - "JNodes_PromptBuilderSingleSubject", - "JNodes_RemoveCommentedText", - "JNodes_RemoveMetaDataKey", - "JNodes_RemoveParseableDataForInference", - "JNodes_SamplerSelectorWithString", - "JNodes_SaveImageWithOutput", - "JNodes_SaveVideo", - "JNodes_SaveVideoWithOptions", - "JNodes_SchedulerSelectorWithString", - "JNodes_SearchAndReplace", - "JNodes_SearchAndReplaceFromFile", - "JNodes_SearchAndReplaceFromList", - "JNodes_SelectRandomFileFromDirectory", - "JNodes_SeparateStringByDelimiters", - "JNodes_SetMetadataA1111", - "JNodes_SetNegativePromptInMetaData", - "JNodes_SetPositivePromptInMetaData", - "JNodes_SplitAndJoin", - "JNodes_StringLiteral", - "JNodes_SubdirectorySelector", - "JNodes_SyncedStringLiteral", - "JNodes_TokenCounter", - "JNodes_TrimAndStrip", - "JNodes_UploadVideo", - "JNodes_UploadVisualMedia", - "JNodes_VaeSelectorWithString" - ], - { - "title_aux": "ComfyUI-JNodes" - } - ], - "https://github.com/Jash-Vora/ComfyUI-GarmentDiT": [ - [ - "GarmentEnhancementNode" - ], - { - "title_aux": "FitDiT" - } - ], - "https://github.com/JcandZero/ComfyUI_GLM4Node": [ - [ - "GLM3_turbo_CHAT", - "GLM4_CHAT", - "GLM4_Vsion_IMGURL" - ], - { - "title_aux": "ComfyUI_GLM4Node" - } - ], - "https://github.com/Jcd1230/rembg-comfyui-node": [ - [ - "Image Remove Background (rembg)" - ], - { - "title_aux": "Rembg Background Removal Node for ComfyUI" - } - ], - "https://github.com/JerryOrbachJr/ComfyUI-RandomSize": [ - [ - "JOJR_RandomSize" - ], - { - "author": "JerryOrbachJr", - "description": "A ComfyUI custom node that randomly selects a height and width pair from a list in a config file", - "nickname": "Random Size", - "title": "Random Size", - "title_aux": "Random Size" - } - ], - "https://github.com/JettHu/ComfyUI-TCD": [ - [ - "TCDModelSamplingDiscrete" - ], - { - "title_aux": "ComfyUI-TCD" - } - ], - "https://github.com/JettHu/ComfyUI_TGate": [ - [ - "TGateApply", - "TGateApplyAdvanced", - "TGateApplySimple" - ], - { - "title_aux": "ComfyUI_TGate" - } - ], - "https://github.com/JichaoLiang/Immortal_comfyUI": [ - [ - "AppendNode", - "CombineVideos", - "ImAppendFreeChatAction", - "ImAppendImageActionNode", - "ImAppendQuickbackNode", - "ImAppendQuickbackVideoNode", - "ImAppendVideoNode", - "ImDumpEntity", - "ImDumpNode", - "ImLoadPackage", - "ImNodeTitleOverride", - "ImSetActionKeywordMapping", - "MergeNode", - "NewNode", - "Node2String", - "OllamaChat", - "SaveImagePath", - "SaveToDirectory", - "SetEvent", - "SetNodeMapping", - "SetProperties", - "String2Node", - "TurnOnOffNodeOnEnter", - "batchNodes", - "grepNodeByText", - "mergeEntityAndPointer", - "redirectToNode" - ], - { - "title_aux": "Immortal_comfyUI" - } - ], - "https://github.com/JohnDoeSmithee/ComfyUI-SoX-Mixdown": [ - [ - "SoxMixNode" - ], - { - "title_aux": null - } - ], - "https://github.com/Jonseed/ComfyUI-Detail-Daemon": [ - [ - "DetailDaemonGraphSigmasNode", - "DetailDaemonSamplerNode", - "LyingSigmaSampler", - "MultiplySigmas" - ], - { - "title_aux": "ComfyUI-Detail-Daemon" - } - ], - "https://github.com/Jordach/comfy-plasma": [ - [ - "JDC_AutoContrast", - "JDC_BlendImages", - "JDC_BrownNoise", - "JDC_Contrast", - "JDC_EqualizeGrey", - "JDC_GaussianBlur", - "JDC_GreyNoise", - "JDC_Greyscale", - "JDC_ImageLoader", - "JDC_ImageLoaderMeta", - "JDC_PinkNoise", - "JDC_Plasma", - "JDC_PlasmaSampler", - "JDC_PowerImage", - "JDC_RandNoise", - "JDC_ResizeFactor" - ], - { - "title_aux": "comfy-plasma" - } - ], - "https://github.com/JosefKuchar/ComfyUI-AdvancedTiling": [ - [ - "AdvancedTiling", - "AdvancedTilingSettings", - "AdvancedTilingVAEDecode" - ], - { - "title_aux": "ComfyUI-AdvancedTiling" - } - ], - "https://github.com/JosephThomasParker/ComfyUI-DrawThingsWrapper": [ - [ - "DrawThingsGenerateFromPipeline", - "DrawThingsImg2Img", - "DrawThingsImg2ImgPipeline", - "DrawThingsPipelineAddControl", - "DrawThingsPipelineAddCustom", - "DrawThingsPipelineAddLora", - "DrawThingsTxt2Img", - "DrawThingsTxt2ImgPipeline" - ], - { - "title_aux": "ComfyUI-DrawThingsWrapper" - } - ], - "https://github.com/Julian-adv/WildDivide": [ - [ - "Attention couple wild divide", - "Comfy Divide", - "WildPromptGenerator", - "WildcardDivide", - "WildcardEncode" - ], - { - "author": "Julian Adventurer.", - "description": "This node is used to encode a wildcard string.", - "nickname": "WildDivide", - "title": "Wild Divide", - "title_aux": "Wild Divide" - } - ], - "https://github.com/JustinMatters/comfyUI-JMNodes": [ - [ - "JMBinaryNot", - "JMIntegerToBooleans", - "JMNumberList", - "JMSWitchablePrompt" - ], - { - "title_aux": "ComfyUI JMNodes" - } - ], - "https://github.com/KLL535/ComfyUI_SimpleButcher": [ - [ - "Simple Extract Lora From Text", - "Simple Image Saver (as Forge)", - "Simple Load Line From Text File", - "Simple Lora Loader" - ], - { - "title_aux": "ComfyUI_SimpleButcher" - } - ], - "https://github.com/Kangkang625/ComfyUI-paint-by-example": [ - [ - "PaintbyExamplePipeLoader", - "PaintbyExampleSampler" - ], - { - "title_aux": "ComfyUI-Paint-by-Example" - } - ], - "https://github.com/Kayarte/AudioDriven-Latent-Space-Tools-for-ComfyUI": [ - [ - "AdvancedNoisePatterns", - "AudioNoiseMapper", - "LibrosaAnalysisNode", - "NoiseToLatentConverter" - ], - { - "title_aux": "AudioDriven-Latent-Space-Tools-for-ComfyUI" - } - ], - "https://github.com/Kesin11/ComfyUI-list-filter": [ - [ - "list_filter_FilterImageListByIndexList", - "list_filter_FilterStringListByIndexList", - "list_filter_FindAnyStrings", - "list_filter_FindNotAnyStrings", - "list_filter_StringToIndex", - "random_normal_dist" - ], - { - "title_aux": "ComfyUI-list-filter" - } - ], - "https://github.com/KewkLW/ComfyUI-kewky_tools": [ - [ - "CLIPInterrogator", - "FormattedPromptNode", - "ImageBatcher", - "LoadImagePlus", - "LoadVideoPlus", - "TensorDebugPlus", - "TextAppendNode", - "TextSearchNode", - "VRAM_Debug_Plus" - ], - { - "title_aux": "ComfyUI-kewky_tools" - } - ], - "https://github.com/Kidev/ComfyUI-Fisheye-effects": [ - [ - "Defisheye", - "Fisheye" - ], - { - "title_aux": "ComfyUI Fisheye Effects Nodes" - } - ], - "https://github.com/KohakuBlueleaf/z-tipo-extension": [ - [ - "TIPO", - "TIPOFormat", - "TIPOOperation" - ], - { - "title_aux": "TIPO-extension" - } - ], - "https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack": [ - [ - "Brightness Image", - "ColorMatch2", - "Contrast Image", - "Get Text", - "Image Difference", - "ImageConcatenate", - "ImageDesaturate", - "ImageExtend", - "ImageFlip", - "ImageRotate", - "LoadImageNai", - "Math Operation", - "NoteAdvanced", - "Set Text" - ], - { - "title_aux": "ComfyUI Production Nodes Pack" - } - ], - "https://github.com/KoreTeknology/ComfyUI-Universal-Styler": [ - [ - "Load Nai Styles Complex CSV", - "ShowText|pysssss", - "Universal_Styler_Node", - "concat" - ], - { - "title_aux": "ComfyUI Universal Styler" - } - ], - "https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet": [ - [ - "ACN_AdvancedControlNetApply", - "ACN_AdvancedControlNetApplySingle", - "ACN_AdvancedControlNetApplySingle_v2", - "ACN_AdvancedControlNetApply_v2", - "ACN_ControlNet++InputNode", - "ACN_ControlNet++LoaderAdvanced", - "ACN_ControlNet++LoaderSingle", - "ACN_ControlNetLoaderAdvanced", - "ACN_ControlNetLoaderWithLoraAdvanced", - "ACN_CtrLoRALoader", - "ACN_CustomControlNetWeightsFlux", - "ACN_CustomControlNetWeightsSD15", - "ACN_CustomT2IAdapterWeights", - "ACN_DefaultUniversalWeights", - "ACN_DiffControlNetLoaderAdvanced", - "ACN_ExtrasMiddleMult", - "ACN_ReferenceControlNet", - "ACN_ReferenceControlNetFinetune", - "ACN_ReferencePreprocessor", - "ACN_ScaledSoftControlNetWeights", - "ACN_SoftControlNetWeightsSD15", - "ACN_SoftT2IAdapterWeights", - "ACN_SparseCtrlIndexMethodNode", - "ACN_SparseCtrlLoaderAdvanced", - "ACN_SparseCtrlMergedLoaderAdvanced", - "ACN_SparseCtrlRGBPreprocessor", - "ACN_SparseCtrlSpreadMethodNode", - "ACN_SparseCtrlWeightExtras", - "ACN_TimestepKeyframeFromStrengthList", - "ACN_TimestepKeyframeInterpolation", - "ControlNetLoaderAdvanced", - "CustomControlNetWeights", - "CustomT2IAdapterWeights", - "DiffControlNetLoaderAdvanced", - "LatentKeyframe", - "LatentKeyframeBatchedGroup", - "LatentKeyframeGroup", - "LatentKeyframeTiming", - "LoadImagesFromDirectory", - "ScaledSoftControlNetWeights", - "ScaledSoftMaskedUniversalWeights", - "SoftControlNetWeights", - "SoftT2IAdapterWeights", - "TimestepKeyframe" - ], - { - "title_aux": "ComfyUI-Advanced-ControlNet" - } - ], - "https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved": [ - [ - "ADE_AdjustPEFullStretch", - "ADE_AdjustPEManual", - "ADE_AdjustPESweetspotStretch", - "ADE_AdjustWeightAllAdd", - "ADE_AdjustWeightAllMult", - "ADE_AdjustWeightIndivAdd", - "ADE_AdjustWeightIndivAttnAdd", - "ADE_AdjustWeightIndivAttnMult", - "ADE_AdjustWeightIndivMult", - "ADE_AnimateDiffCombine", - "ADE_AnimateDiffKeyframe", - "ADE_AnimateDiffLoRALoader", - "ADE_AnimateDiffLoaderGen1", - "ADE_AnimateDiffLoaderV1Advanced", - "ADE_AnimateDiffLoaderWithContext", - "ADE_AnimateDiffModelSettings", - "ADE_AnimateDiffModelSettingsAdvancedAttnStrengths", - "ADE_AnimateDiffModelSettingsSimple", - "ADE_AnimateDiffModelSettings_Release", - "ADE_AnimateDiffSamplingSettings", - "ADE_AnimateDiffSettings", - "ADE_AnimateDiffUniformContextOptions", - "ADE_AnimateDiffUnload", - "ADE_ApplyAnimateDiffModel", - "ADE_ApplyAnimateDiffModelSimple", - "ADE_ApplyAnimateDiffModelWithCameraCtrl", - "ADE_ApplyAnimateDiffModelWithPIA", - "ADE_ApplyAnimateLCMI2VModel", - "ADE_AttachLoraHookToCLIP", - "ADE_AttachLoraHookToConditioning", - "ADE_BatchedContextOptions", - "ADE_CFGExtrasPAG", - "ADE_CFGExtrasPAGSimple", - "ADE_CFGExtrasRescaleCFG", - "ADE_CFGExtrasRescaleCFGSimple", - "ADE_CameraCtrlAnimateDiffKeyframe", - "ADE_CameraManualPoseAppend", - "ADE_CameraPoseAdvanced", - "ADE_CameraPoseBasic", - "ADE_CameraPoseCombo", - "ADE_CombineLoraHooks", - "ADE_CombineLoraHooksEight", - "ADE_CombineLoraHooksFour", - "ADE_ConditioningCombine", - "ADE_ConditioningSetMask", - "ADE_ConditioningSetMaskAndCombine", - "ADE_ConditioningSetUnmaskedAndCombine", - "ADE_ContextExtras_ContextRef", - "ADE_ContextExtras_ContextRef_Keyframe", - "ADE_ContextExtras_ContextRef_KeyframeFromList", - "ADE_ContextExtras_ContextRef_KeyframeInterpolation", - "ADE_ContextExtras_ContextRef_ModeFirst", - "ADE_ContextExtras_ContextRef_ModeIndexes", - "ADE_ContextExtras_ContextRef_ModeSliding", - "ADE_ContextExtras_ContextRef_TuneAttn", - "ADE_ContextExtras_ContextRef_TuneAttnAdain", - "ADE_ContextExtras_NaiveReuse", - "ADE_ContextExtras_NaiveReuse_Keyframe", - "ADE_ContextExtras_NaiveReuse_KeyframeFromList", - "ADE_ContextExtras_NaiveReuse_KeyframeInterpolation", - "ADE_ContextExtras_Set", - "ADE_CustomCFG", - "ADE_CustomCFGKeyframe", - "ADE_CustomCFGKeyframeFromList", - "ADE_CustomCFGKeyframeInterpolation", - "ADE_CustomCFGKeyframeSimple", - "ADE_CustomCFGSimple", - "ADE_EmptyLatentImageLarge", - "ADE_InjectI2VIntoAnimateDiffModel", - "ADE_InjectPIAIntoAnimateDiffModel", - "ADE_InputPIA_Multival", - "ADE_InputPIA_PaperPresets", - "ADE_IterationOptsDefault", - "ADE_IterationOptsFreeInit", - "ADE_LoadAnimateDiffModel", - "ADE_LoadAnimateDiffModelWithCameraCtrl", - "ADE_LoadAnimateLCMI2VModel", - "ADE_LoadCameraPoses", - "ADE_LoadCameraPosesFromPath", - "ADE_LoopedUniformContextOptions", - "ADE_LoopedUniformViewOptions", - "ADE_LoraHookKeyframe", - "ADE_LoraHookKeyframeFromStrengthList", - "ADE_LoraHookKeyframeInterpolation", - "ADE_MultivalConvertToMask", - "ADE_MultivalDynamic", - "ADE_MultivalDynamicFloatInput", - "ADE_MultivalDynamicFloats", - "ADE_MultivalScaledMask", - "ADE_NoiseCalibration", - "ADE_NoiseLayerAdd", - "ADE_NoiseLayerAddWeighted", - "ADE_NoiseLayerNormalizedSum", - "ADE_NoiseLayerReplace", - "ADE_NoisedImageInjectOptions", - "ADE_NoisedImageInjection", - "ADE_PIA_AnimateDiffKeyframe", - "ADE_PairedConditioningCombine", - "ADE_PairedConditioningSetMask", - "ADE_PairedConditioningSetMaskAndCombine", - "ADE_PairedConditioningSetUnmaskedAndCombine", - "ADE_PerturbedAttentionGuidanceMultival", - "ADE_RawSigmaSchedule", - "ADE_RegisterLoraHook", - "ADE_RegisterLoraHookModelOnly", - "ADE_RegisterModelAsLoraHook", - "ADE_RegisterModelAsLoraHookModelOnly", - "ADE_ReplaceCameraParameters", - "ADE_ReplaceOriginalPoseAspectRatio", - "ADE_RescaleCFGMultival", - "ADE_SetLoraHookKeyframe", - "ADE_SigmaSchedule", - "ADE_SigmaScheduleSplitAndCombine", - "ADE_SigmaScheduleToSigmas", - "ADE_SigmaScheduleWeightedAverage", - "ADE_SigmaScheduleWeightedAverageInterp", - "ADE_StandardStaticContextOptions", - "ADE_StandardStaticViewOptions", - "ADE_StandardUniformContextOptions", - "ADE_StandardUniformViewOptions", - "ADE_TimestepsConditioning", - "ADE_UpscaleAndVAEEncode", - "ADE_UseEvolvedSampling", - "ADE_ViewsOnlyContextOptions", - "ADE_VisualizeContextOptionsK", - "ADE_VisualizeContextOptionsKAdv", - "ADE_VisualizeContextOptionsSCustom", - "AnimateDiffLoaderV1", - "CheckpointLoaderSimpleWithNoiseSelect" - ], - { - "title_aux": "AnimateDiff Evolved" - } - ], - "https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite": [ - [ - "VHS_AudioToVHSAudio", - "VHS_BatchManager", - "VHS_DuplicateImages", - "VHS_DuplicateLatents", - "VHS_DuplicateMasks", - "VHS_GetImageCount", - "VHS_GetLatentCount", - "VHS_GetMaskCount", - "VHS_LoadAudio", - "VHS_LoadAudioUpload", - "VHS_LoadImagePath", - "VHS_LoadImages", - "VHS_LoadImagesPath", - "VHS_LoadVideo", - "VHS_LoadVideoFFmpeg", - "VHS_LoadVideoFFmpegPath", - "VHS_LoadVideoPath", - "VHS_MergeImages", - "VHS_MergeLatents", - "VHS_MergeMasks", - "VHS_PruneOutputs", - "VHS_SelectEveryNthImage", - "VHS_SelectEveryNthLatent", - "VHS_SelectEveryNthMask", - "VHS_SelectFilename", - "VHS_SelectImages", - "VHS_SelectLatents", - "VHS_SelectMasks", - "VHS_SplitImages", - "VHS_SplitLatents", - "VHS_SplitMasks", - "VHS_Unbatch", - "VHS_VAEDecodeBatched", - "VHS_VAEEncodeBatched", - "VHS_VHSAudioToAudio", - "VHS_VideoCombine", - "VHS_VideoInfo", - "VHS_VideoInfoLoaded", - "VHS_VideoInfoSource" - ], - { - "title_aux": "ComfyUI-VideoHelperSuite" - } - ], - "https://github.com/Koushakur/ComfyUI-DenoiseChooser": [ - [ - "DenoiseChooser|Koushakur" - ], - { - "title_aux": "ComfyUI-DenoiseChooser" - } - ], - "https://github.com/KunmyonChoi/ComfyUI_S3_direct": [ - [ - "Direct Load Image From S3", - "Direct Save Image To S3", - "Save VHS Video to S3" - ], - { - "title_aux": "ComfyUI_S3_direct" - } - ], - "https://github.com/Kurdknight/Kurdknight_comfycheck": [ - [ - "SystemCheck", - "SystemViz" - ], - { - "title_aux": "KurdKnight ComfyUI System Check Node" - } - ], - "https://github.com/KwaiVGI/ComfyUI-KLingAI-API": [ - [ - "Client", - "Image Generator", - "Image2Video", - "KLingAI Preview Video", - "Lip Sync", - "Lip Sync Audio Input", - "Lip Sync Text Input", - "Text2Video", - "Video Extend", - "Virtual Try On" - ], - { - "title_aux": "ComfyUI-KLingAI-API" - } - ], - "https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP": [ - [ - "SendToDiscordWebhook" - ], - { - "title_aux": "ComfyUI_KytraWebhookHTTP" - } - ], - "https://github.com/LAOGOU-666/ComfyUI_LG_FFT": [ - [ - "LG_FFTNode", - "LG_IFFTNode" - ], - { - "title_aux": "ComfyUI_LG_FFT" - } - ], - "https://github.com/LAOGOU-666/Comfyui-LG_Relight": [ - [ - "LG_Relight", - "LG_Relight_Basic", - "LG_Relight_V2" - ], - { - "title_aux": "Comfyui-LG_Relight" - } - ], - "https://github.com/LEv145/images-grid-comfy-plugin": [ - [ - "GridAnnotation", - "ImageCombine", - "ImagesGridByColumns", - "ImagesGridByRows", - "LatentCombine" - ], - { - "title_aux": "ImagesGrid" - } - ], - "https://github.com/LarryJane491/Image-Captioning-in-ComfyUI": [ - [ - "LoRA Caption Load", - "LoRA Caption Save" - ], - { - "title_aux": "Image-Captioning-in-ComfyUI" - } - ], - "https://github.com/LarryJane491/Lora-Training-in-Comfy": [ - [ - "Lora Training in Comfy (Advanced)", - "Lora Training in ComfyUI", - "Tensorboard Access" - ], - { - "title_aux": "Lora-Training-in-Comfy" - } - ], - "https://github.com/LatentSpaceDirective/ComfyUI-Texturaizer": [ - [ - "Texturaizer_ApplyControlNets", - "Texturaizer_ApplyStyleToPrompt", - "Texturaizer_CachedCNLoader", - "Texturaizer_CachedCheckpointLoader", - "Texturaizer_ClipEncodeSwitchVersion", - "Texturaizer_CombinedConditioningFromColors", - "Texturaizer_ExtractCNData", - "Texturaizer_GenerateNoise", - "Texturaizer_GetCNData", - "Texturaizer_GetClipModelName", - "Texturaizer_GetFluxGuidance", - "Texturaizer_GetIPAdapterData", - "Texturaizer_GetImageData", - "Texturaizer_GetJsonData", - "Texturaizer_GetLoraData", - "Texturaizer_GetMaterialTileData", - "Texturaizer_GetModelName", - "Texturaizer_GetPromptData", - "Texturaizer_GetRenderData", - "Texturaizer_GetSamplerData", - "Texturaizer_GetSegData", - "Texturaizer_GetStyleData", - "Texturaizer_GetVAEName", - "Texturaizer_IPAdapterEmbeds", - "Texturaizer_KSamplerAdvanced", - "Texturaizer_Placeholder", - "Texturaizer_PowerLoraLoader", - "Texturaizer_SendImage", - "Texturaizer_SetGlobalDir", - "Texturaizer_SigmasSelector", - "Texturaizer_SwitchAny", - "Texturaizer_SwitchLazy", - "Texturaizer_UseSDXL" - ], - { - "title_aux": "ComfyUI-Texturaizer" - } - ], - "https://github.com/Layer-norm/comfyui-lama-remover": [ - [ - "LamaRemover", - "LamaRemoverIMG" - ], - { - "title_aux": "Comfyui lama remover" - } - ], - "https://github.com/Lerc/canvas_tab": [ - [ - "Canvas_Tab", - "Send_To_Editor" - ], - { - "author": "Lerc", - "description": "This extension provides a full page image editor with mask support. There are two nodes, one to receive images from the editor and one to send images to the editor.", - "nickname": "Canvas Tab", - "title": "Canvas Tab", - "title_aux": "Canvas Tab" - } - ], - "https://github.com/LevelPixel/ComfyUI-LevelPixel": [ - [ - "Autotagger|LP", - "BoolToInt|LP", - "BoolToString|LP", - "CLIPTextEncodeTranslate|LP", - "FastCheckerPattern|LP", - "FileCounter|LP", - "FloatToInt|LP", - "FloatToString|LP", - "HardModelUnloader|LP", - "HundredthsSimpleFloatSlider|LP", - "ImageLoaderFromPath|LP", - "ImageOverlay|LP", - "ImageRemoveBackground|LP", - "IntToBool|LP", - "IntToFloat|LP", - "IntToString|LP", - "LLMAdvanced|LP", - "LLMLoader|LP", - "LLMSampler|LP", - "LLavaAdvanced|LP", - "LLavaClipLoader|LP", - "LLavaLoader|LP", - "LLavaSamplerAdvanced|LP", - "LLavaSamplerSimple|LP", - "LLavaSimple|LP", - "LoadImage|LP", - "LoraTagLoader|LP", - "ModelUnloader|LP", - "PreviewImageForConditions|LP", - "ShowTextBridge|LP", - "ShowText|LP", - "SimpleFloatSlider|LP", - "SoftModelUnloader|LP", - "StringToBool|LP", - "StringToCombo|LP", - "StringToFloat|LP", - "StringToInt|LP", - "StringToNumber|LP", - "String|LP", - "TagCategoryFilter|LP", - "TagCategoryKeeper|LP", - "TagCategoryRemover|LP", - "TagCategory|LP", - "TagMerger|LP", - "TagRemover|LP", - "TagReplace|LP", - "TagSwitcher|LP", - "TenthsSimpleFloatSlider|LP", - "TextChoiceParser|LP", - "TextTranslate|LP", - "Text|LP" - ], - { - "title_aux": "ComfyUI_LevelPixel" - } - ], - "https://github.com/Lhyejin/ComfyUI-Fill-Image-for-Outpainting": [ - [ - "FillImageForOutpainting" - ], - { - "title_aux": "ComfyUI-Fill-Image-for-Outpainting" - } - ], - "https://github.com/LiJT/ComfyUI-Gemini-Prompt-Generator-JT": [ - [ - "GeminiPromptGeneratorJT" - ], - { - "title_aux": "Gemini prompt generator JT version" - } - ], - "https://github.com/Light-x02/ComfyUI-FluxSettingsNode": [ - [ - "DisableNoise", - "FluxSettingsNode" - ], - { - "title_aux": "Flux Settings Node" - } - ], - "https://github.com/Light-x02/ComfyUI-Image-Metadata-Nodes": [ - [ - "ImageMetadataLoader", - "ImageMetadataSaver" - ], - { - "title_aux": "Image Metadata Nodes" - } - ], - "https://github.com/LightSketch-ai/ComfyUI-LivePortraitNode": [ - [ - "LightSketch Live Portrait", - "Preview Video" - ], - { - "title_aux": "ComfyUI-LivePortraitNode (Replicate API)" - } - ], - "https://github.com/Limitex/ComfyUI-Calculation": [ - [ - "CenterCalculation", - "CreateQRCode" - ], - { - "title_aux": "ComfyUI-Calculation" - } - ], - "https://github.com/Limitex/ComfyUI-Diffusers": [ - [ - "CreateIntListNode", - "DiffusersClipTextEncode", - "DiffusersModelMakeup", - "DiffusersPipelineLoader", - "DiffusersSampler", - "DiffusersSchedulerLoader", - "DiffusersVaeLoader", - "LcmLoraLoader", - "StreamDiffusionCreateStream", - "StreamDiffusionFastSampler", - "StreamDiffusionSampler", - "StreamDiffusionWarmup" - ], - { - "title_aux": "ComfyUI-Diffusers" - } - ], - "https://github.com/Ling-APE/ComfyUI-PixelResolutionCalculator": [ - [ - "LatentSizeToPixelSize", - "PixelResolutionCalculator" - ], - { - "title_aux": "ComfyUI-PixelResolutionCalculator" - } - ], - "https://github.com/Loewen-Hob/rembg-comfyui-node-better": [ - [ - "Image Remove Background (rembg)" - ], - { - "title_aux": "Rembg Background Removal Node for ComfyUI (Better)" - } - ], - "https://github.com/LonicaMewinsky/ComfyUI-MakeFrame": [ - [ - "BreakFrames", - "BreakGrid", - "GetKeyFrames", - "MakeGrid", - "RandomImageFromDir" - ], - { - "title_aux": "ComfyBreakAnim" - } - ], - "https://github.com/LonicaMewinsky/ComfyUI-RawSaver": [ - [ - "SaveTifImage" - ], - { - "title_aux": "ComfyUI-RawSaver" - } - ], - "https://github.com/LucipherDev/ComfyUI-AniDoc": [ - [ - "AniDocLoader", - "AniDocSampler", - "GetAniDocControlnetImages", - "LoadCoTracker" - ], - { - "title_aux": "ComfyUI-AniDoc" - } - ], - "https://github.com/LucipherDev/ComfyUI-Golden-Noise": [ - [ - "GoldenNoise" - ], - { - "title_aux": "ComfyUI-Golden-Noise" - } - ], - "https://github.com/LucipherDev/ComfyUI-TangoFlux": [ - [ - "TangoFluxLoader", - "TangoFluxSampler", - "TangoFluxVAEDecodeAndPlay" - ], - { - "title_aux": "ComfyUI-TangoFlux" - } - ], - "https://github.com/Ludobico/ComfyUI-ScenarioPrompt": [ - [ - "ScenarioPrompt" - ], - { - "title_aux": "ComfyUI-ScenarioPrompt" - } - ], - "https://github.com/LyazS/comfyui-anime-seg": [ - [ - "Anime Character Seg" - ], - { - "title_aux": "Anime Character Segmentation node for comfyui" - } - ], - "https://github.com/LyazS/comfyui-nettools": [ - [ - "NTL_LoadImagesBase64", - "NTL_SendImagesWebSocket" - ], - { - "title_aux": "net tool node for comfyui" - } - ], - "https://github.com/M1kep/ComfyLiterals": [ - [ - "Checkpoint", - "Float", - "Int", - "KepStringLiteral", - "Lora", - "Operation", - "String" - ], - { - "title_aux": "ComfyLiterals" - } - ], - "https://github.com/M1kep/ComfyUI-KepOpenAI": [ - [ - "KepOpenAI_ImageWithPrompt" - ], - { - "title_aux": "ComfyUI-KepOpenAI" - } - ], - "https://github.com/M1kep/ComfyUI-OtherVAEs": [ - [ - "OtherVAE_Taesd" - ], - { - "title_aux": "ComfyUI-OtherVAEs" - } - ], - "https://github.com/M1kep/Comfy_KepKitchenSink": [ - [ - "KepRotateImage" - ], - { - "title_aux": "Comfy_KepKitchenSink" - } - ], - "https://github.com/M1kep/Comfy_KepListStuff": [ - [ - "Empty Images", - "Image Overlay", - "ImageListLoader", - "Join Float Lists", - "Join Image Lists", - "KepStringList", - "KepStringListFromNewline", - "Kep_JoinListAny", - "Kep_RepeatList", - "Kep_ReverseList", - "Kep_VariableImageBuilder", - "List Length", - "Range(Num Steps) - Float", - "Range(Num Steps) - Int", - "Range(Step) - Float", - "Range(Step) - Int", - "Stack Images", - "XYAny", - "XYImage" - ], - { - "title_aux": "Comfy_KepListStuff" - } - ], - "https://github.com/M1kep/Comfy_KepMatteAnything": [ - [ - "MatteAnything_DinoBoxes", - "MatteAnything_GenerateVITMatte", - "MatteAnything_InitSamPredictor", - "MatteAnything_LoadDINO", - "MatteAnything_LoadVITMatteModel", - "MatteAnything_SAMLoader", - "MatteAnything_SAMMaskFromBoxes", - "MatteAnything_ToTrimap" - ], - { - "title_aux": "Comfy_KepMatteAnything" - } - ], - "https://github.com/M1kep/KepPromptLang": [ - [ - "Build Gif", - "Special CLIP Loader" - ], - { - "title_aux": "KepPromptLang" - } - ], - "https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes": [ - [ - "StringCleaning", - "TiktokenTokenizer", - "\u26d4 Generate Negative Prompt", - "\u2728\ud83c\udf10 Groq ALM API - Translate [EN only]", - "\u2728\ud83d\udcac Groq LLM API", - "\u2728\ud83d\udcdd Groq ALM API - Transcribe", - "\u2728\ud83d\udcf7 Groq VLM API", - "\ud83d\udcbe Save Text File With Path", - "\ud83d\udcc1 Get File Path", - "\ud83d\udd20 Tiktoken Tokenizer Info", - "\ud83d\uddbc\ufe0f Download Image from URL", - "\ud83e\uddf9 String Cleaning" - ], - { - "title_aux": "ComfyUI-mnemic-nodes" - } - ], - "https://github.com/Makeezi/ComfyUI-promptLAB": [ - [ - "PromptLAB" - ], - { - "title_aux": "ComfyUI-promptLAB" - } - ], - "https://github.com/MakkiShizu/ComfyUI-Prompt-Wildcards": [ - [ - "makiwildcards", - "textconcatenate" - ], - { - "title_aux": "ComfyUI-Prompt-Wildcards" - } - ], - "https://github.com/MakkiShizu/ComfyUI-SaveAnimatedGIF": [ - [ - "SaveAnimatedGIF", - "SaveAnimatedWEBPRevise" - ], - { - "title_aux": "ComfyUI-SaveAnimatedGIF" - } - ], - "https://github.com/MakkiShizu/comfyui_reimgsize": [ - [ - "Cropimg", - "Reimgsize", - "Resizebyratio" - ], - { - "title_aux": "comfyui_reimgsize" - } - ], - "https://github.com/Mamaaaamooooo/batchImg-rembg-ComfyUI-nodes": [ - [ - "Image Remove Background (rembg)" - ], - { - "title_aux": "Batch Rembg for ComfyUI" - } - ], - "https://github.com/ManglerFTW/ComfyI2I": [ - [ - "Color Transfer", - "Combine and Paste", - "Inpaint Segments", - "Mask Ops" - ], - { - "author": "ManglerFTW", - "title": "ComfyI2I", - "title_aux": "ComfyI2I" - } - ], - "https://github.com/MarcusNyne/m9-prompts-comfyui": [ - [ - "ScramblePrompts_m9", - "TweakWeights_m9" - ], - { - "title_aux": "m9-prompts-comfyui" - } - ], - "https://github.com/MariusKM/ComfyUI-BadmanNodes": [ - [ - "BadmanBrightness", - "BadmanCLIPTextEncodeSDXLRegion", - "BadmanDesaturate", - "BadmanDilateErodeMask", - "BadmanIO", - "BadmanIntUtil", - "BadmanMaskBlur", - "BadmanStringSelect", - "BadmanStringToInteger", - "BadmanWildCardProcessor", - "Badman_Blend", - "Badman_ColorTransferLab", - "Badman_Concat_String", - "Badman_HexGenerator", - "Badman_PalletteGenerator", - "Badman_Print", - "Badman_String" - ], - { - "title_aux": "ComfyUI-BadmanNodes" - } - ], - "https://github.com/MarkoCa1/ComfyUI-Text": [ - [ - "CombinationText", - "PlaceholderText", - "ReplaceText", - "ShowText" - ], - { - "title_aux": "ComfyUI-Text" - } - ], - "https://github.com/MarkoCa1/ComfyUI_Segment_Mask": [ - [ - "AutomaticMask(segment anything)" - ], - { - "title_aux": "ComfyUI_Segment_Mask" - } - ], - "https://github.com/Marksusu/ComfyUI_MTCLIPEncode": [ - [ - "MTCLIPEncode" - ], - { - "title_aux": "ComfyUI_MTCLIPEncode" - } - ], - "https://github.com/Mason-McGough/ComfyUI-Mosaica": [ - [ - "ApplyLUTToLabelImage", - "KMeans", - "LoadLUTFromMatplotlib", - "MeanShift", - "RandomLUT", - "Watershed" - ], - { - "title_aux": "Mosaica" - } - ], - "https://github.com/Mcmillian/ComfyUI-SimpleToolsNodes": [ - [ - "GetModelStep", - "GlmPromptNode" - ], - { - "title_aux": "SimpleToolsNodes" - } - ], - "https://github.com/Meettya/ComfyUI-OneForOne": [ - [ - "OFO Image Fit" - ], - { - "title_aux": "ComfyUI-OneForOne" - } - ], - "https://github.com/MetaGLM/ComfyUI-ZhipuAI-Platform": [ - [ - "VideoReportData", - "VideoReportGenerate", - "VideoReportPull" - ], - { - "title_aux": "ComfyUI ZhipuAI Platform" - } - ], - "https://github.com/MiddleKD/ComfyUI-denoise-mask-scheduler": [ - [ - "ApplyDenoiseMaskSchedulerWithSigma", - "ApplyDenoiseMaskSchedulerWithStep", - "DynamicImageResize" - ], - { - "title_aux": "ComfyUI-denoise-mask-scheduler" - } - ], - "https://github.com/MiddleKD/ComfyUI-mem-safe-wrapper": [ - [ - "MakeModelMemorySafe-safewrapper", - "ResetModelPatcher-safewrapper", - "SimpleDummyModel-safewrapper", - "SimpleDummyRun-safewrapper" - ], - { - "title_aux": "ComfyUI-mem-safe-wrapper" - } - ], - "https://github.com/MiddleKD/ComfyUI-productfix": [ - [ - "ApplyLatentInjection", - "DetailTransferAdd", - "DetailTransferLatentAdd", - "DynamicImageResize", - "GetTextMask", - "ResetModelPatcherCalculateWeight", - "VQDecoder", - "VQEncoder", - "VQLoader" - ], - { - "title_aux": "ComfyUI-productfix" - } - ], - "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack": [ - [ - "FluxModelSave_v2", - "IntegratedRandomPromptGenerator", - "ModelAnalyserNode", - "TextAppender_v2" - ], - { - "author": "Militant Hitchhiker", - "description": "Militant Hitchhiker's multi-function nodes.", - "nickname": "Switchblade", - "title": "Switchblade Pack", - "title_aux": "MilitantHitchhiker-SwitchbladePack" - } - ], - "https://github.com/Mintbeer96/ComfyUI-KerasOCR": [ - [ - "KerasOCR" - ], - { - "title_aux": "ComfyUI-KerasOCR" - } - ], - "https://github.com/Miosp/ComfyUI-FBCNN": [ - [ - "JPEG artifacts removal FBCNN" - ], - { - "title_aux": "ComfyUI-FBCNN" - } - ], - "https://github.com/MitoshiroPJ/comfyui_slothful_attention": [ - [ - "NearSightedAttention", - "NearSightedAttentionSimple", - "NearSightedTile", - "SlothfulAttention" - ], - { - "title_aux": "ComfyUI Slothful Attention" - } - ], - "https://github.com/Miyuutsu/comfyui-save-vpred": [ - [ - "CheckpointSaveVpred" - ], - { - "author": "miyuu", - "description": "Used to save SDXL V-Prediction models directly with correct tensors.", - "nickname": "vpred-save", - "title": "vpred-save", - "title_aux": "comfyui-save-vpred" - } - ], - "https://github.com/MohammadAboulEla/ComfyUI-iTools": [ - [ - "iToolsAddOverlay", - "iToolsCheckerBoard", - "iToolsGridFiller", - "iToolsKSampler", - "iToolsLineLoader", - "iToolsLoadImagePlus", - "iToolsLoadImages", - "iToolsPromptLoader", - "iToolsPromptSaver", - "iToolsPromptStyler", - "iToolsPromptStylerExtra", - "iToolsTextReplacer", - "iToolsVaePreview" - ], - { - "title_aux": "ComfyUI-iTools" - } - ], - "https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1": [ - [ - "AnimeCosplayDir", - "AspectRatioCondition", - "ChooseImage", - "Colors", - "CombinedCrop", - "ConnectFloat", - "ConnectImage", - "ConnectInteger", - "ConnectInteger2", - "ConnectLatent", - "ConnectString", - "CycleInteger", - "DirSelector", - "DoubleClipTextEncode", - "DoubleConditioningMixer", - "EmbeddingLoader", - "FilmCharDir", - "FlexEmptyLatent", - "FloatEvaluate", - "FuseImages", - "FuseImages2", - "HashText", - "HueSatLum", - "HueShift", - "ImageDimensions", - "ImageDimensionsBatch", - "ImageOverlayResized", - "ImageResizeLong", - "ImageZigzag", - "IndoorBackgrounds", - "IndoorDir", - "IntEvaluate", - "IntFloatDict", - "IntStringDict", - "JsonSearch", - "KillWorkflow", - "LandscapeBackgrounds", - "LandscapeDir", - "LinEqEval", - "MakeupStylesDir", - "Mbsampler", - "OptimalCrop", - "Overlay", - "PhotomontageA", - "PhotomontageB", - "PhotomontageC", - "PostSamplerCrop", - "PresetLoad", - "PresetRemove", - "PresetSave", - "PromptSwitcher", - "QuadClipTextEncode", - "RandomString", - "SDXLEmptyLatent", - "SavePrompt", - "SaveWithMetaData", - "SaveWithMetaData2", - "SearchReplace", - "SimplePrompts", - "SpecificStylesDir", - "SplitImages", - "StringJoin", - "TimeStamp", - "TintnShift", - "TricolorComposition", - "WorkflowSettings", - "WrapText", - "X_In_a_Dress", - "X_In_a_Suit", - "X_In_a_Suit)", - "ZoomCrop", - "imageborder" - ], - { - "title_aux": "Node Pack mostly for manipulating strings and integers" - } - ], - "https://github.com/MontagenAI/ComfyUI-Montagen": [ - [ - "MontagenDefaultLoadVideo", - "MontagenImagesPreview" - ], - { - "title_aux": "ComfyUI-Montagen" - } - ], - "https://github.com/MoonHugo/ComfyUI-BiRefNet-Hugo": [ - [ - "BiRefNet_Hugo" - ], - { - "title_aux": "ComfyUI-BiRefNet-Hugo" - } - ], - "https://github.com/MoonHugo/ComfyUI-FFmpeg": [ - [ - "AddAudio", - "AddImgWatermark", - "AddTextWatermark", - "ExtractAudio", - "Frames2Video", - "ImageCopy", - "ImagePath2Tensor", - "ImagesSave", - "LoadImageFromDir", - "MergingVideoByPlenty", - "MergingVideoByTwo", - "MultiCuttingVideo", - "SingleCuttingVideo", - "StitchingVideo", - "Video2Frames", - "VideoFlip" - ], - { - "title_aux": "ComfyUI-FFmpeg" - } - ], - "https://github.com/MoonHugo/ComfyUI-StableAudioOpen": [ - [ - "Text2Audio" - ], - { - "title_aux": "ComfyUI-StableAudioOpen" - } - ], - "https://github.com/Moooonet/ComfyUI-ArteMoon": [ - [ - "LoadPrompts" - ], - { - "title_aux": "ComfyUI-ArteMoon" - } - ], - "https://github.com/MrForExample/ComfyUI-3D-Pack": [ - [], - { - "nodename_pattern": "^\\[Comfy3D\\]", - "title_aux": "ComfyUI-3D-Pack" - } - ], - "https://github.com/MrForExample/ComfyUI-AnimateAnyone-Evolved": [ - [], - { - "nodename_pattern": "^\\[AnimateAnyone\\]", - "title_aux": "ComfyUI-AnimateAnyone-Evolved" - } - ], - "https://github.com/MrSamSeen/ComfyUI_SSStereoscope": [ - [ - "SBS_by_SamSeen" - ], - { - "title_aux": "ComfyUI_SSStereoscope" - } - ], - "https://github.com/Munkyfoot/ComfyUI-TextOverlay": [ - [ - "Text Overlay" - ], - { - "title_aux": "ComfyUI-TextOverlay" - } - ], - "https://github.com/MushroomFleet/DJZ-Nodes": [ - [ - "AnamorphicEffect", - "AspectSize", - "AspectSizeV2", - "BatchOffset", - "BatchRangeInsert", - "BatchRangeSwap", - "BatchThief", - "BlackBarsV1", - "BlackBarsV2", - "BlackBarsV3", - "CRT_Effect_v1", - "CathodeRayEffect", - "ClassicFilmEffect", - "CombineAudio", - "DJZ-LoadLatent", - "DJZ-LoadLatentV2", - "DJZDatamosh", - "DJZDatamoshV2", - "DatasetWordcloud", - "DinskyPlus", - "DinskyPlusV2", - "DjzDatabendingV1", - "DjzDatamoshV3", - "DjzDatamoshV4", - "DjzDatamoshV5", - "DjzDatamoshV6", - "DjzDatamoshV7", - "DjzDatamoshV8", - "FilmGateWeave", - "FilmGrainEffect", - "FilmGrainEffect_v2", - "FishEyeEffect", - "FishEyeV2", - "FractalGenerator", - "FractalGeneratorV2", - "FractalGeneratorV3", - "HalationBloom", - "ImageInterleavedUpscaler", - "ImageInterleavedUpscalerV2", - "ImageSizeAdjuster", - "ImageSizeAdjusterV2", - "ImageSizeAdjusterV3", - "JitterEffect", - "KeyframeBasedUpscalerV1", - "KinescopeEffectV1", - "LensLeaks", - "LoadTextDirectory", - "LoadVideoDirectory", - "LoadVideoDirectoryV2", - "MotionBlending", - "NoiseFactory", - "NoiseFactoryV2", - "NoiseFactoryV3", - "NonSquarePixelsV1", - "PanavisionLensV2", - "ParametricMeshGen", - "ParametricMeshGenV2", - "ProjectFilePathNode", - "PromptCleaner", - "PromptDupeRemover", - "PromptDupeRemoverV2", - "PromptInject", - "PromptSwap", - "RetroVideoText", - "ScreensaverGenerator", - "ScreensaverGeneratorV2", - "SequentialNumberGenerator", - "StringChaos", - "StringWeights", - "Technicolor3Strip_v1", - "Technicolor3Strip_v2", - "ThreeToneStyler", - "TrianglesPlus", - "TrianglesPlusV2", - "UncleanSpeech", - "VGA_Effect_v1", - "VHS_Effect_V3", - "VHS_Effect_v1", - "VHS_Effect_v2", - "VideoBitClamp", - "VideoChromaticAberration", - "VideoCorridorV1", - "VideoCubeV1", - "VideoFilmDamage", - "VideoInterlaceFastV4", - "VideoInterlaceGANV3", - "VideoInterlaced", - "VideoInterlacedV2", - "VideoMazeV1", - "VideoMazeV2", - "VideoNoiseFactory", - "VideoRingPainter", - "VideoTemperatureV1", - "VideoTimecode", - "VideoTrails", - "VideoTrailsV2", - "VideoVignettingV1", - "WaveletCompose", - "WaveletDecompose", - "WinampViz", - "WinampVizV2", - "ZenkaiPrompt", - "ZenkaiPromptV2", - "ZenkaiPromptV3", - "ZenkaiPromptV4", - "ZenkaiWildcard", - "ZenkaiWildcardV2" - ], - { - "author": "DJZ-Nodes", - "title_aux": "DJZ-Nodes" - } - ], - "https://github.com/MuziekMagie/ComfyUI-Matchering": [ - [ - "Matchering", - "MatcheringAdvanced", - "MatcheringLimiterConfig" - ], - { - "title_aux": "ComfyUI-Matchering" - } - ], - "https://github.com/MzMaXaM/ComfyUi-MzMaXaM": [ - [ - "SelectLatentSize", - "TextEncode3in1" - ], - { - "title_aux": "ComfyUi-MzMaXaM" - } - ], - "https://github.com/N3rd00d/ComfyUI-Paint3D-Nodes": [ - [ - "3D_GenerateDepthImage", - "3D_GenerateInpaintMask", - "3D_GenerateInpaintUVMapMask", - "3D_GeneratePreviewVideo", - "3D_LoadMeshModel", - "3D_Projection", - "3D_SaveUVMapImage", - "3D_TrainConfig", - "3D_TrainConfigPipe" - ], - { - "title_aux": "ComfyUI-Paint3D-Nodes" - } - ], - "https://github.com/NMWave/ComfyUI-Nader-Tagging": [ - [ - "Load Text List", - "Split Sentences", - "Split Tags", - "Tag Alternating Combiner", - "Tag Duplicate Remover", - "Token Counter" - ], - { - "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/NakamuraShippo/ComfyUI-NS-ManySliders": [ - [ - "NS_ManySliders" - ], - { - "title_aux": "ComfyUI-NS-ManySliders" - } - ], - "https://github.com/NakamuraShippo/ComfyUI-PromptList": [ - [ - "ComfyUI-PromptList" - ], - { - "author": "NakamuraShippo", - "description": "Custom node to manage prompts in YAML format.", - "title": "ComfyUI-PromptList", - "title_aux": "ComfyUI-PromptList" - } - ], - "https://github.com/NeoGriever/ComfyUI-NeoGriever": [ - [ - "NGs_BetterCLIPTextEncode", - "NGs_Checkerboard_Generator", - "NGs_Create_Solid_Color", - "NGs_Discord_Webhook", - "NGs_Fill_with_Color", - "NGs_Image_Progress_Bar", - "NGs_Multimask_Read", - "NGs_Multimask_Write", - "NGs_ResolutionProvider", - "NGs_Sliders_FLOAT", - "NGs_Sliders_INT", - "NGs_Sliders_PERCENTAGECUT", - "NGs_String_Operator", - "NGs_String_Squisher", - "NGs_Tag_Source", - "NGs_TextBox_JOIN", - "NGs_TextBox_SIMPLE", - "NGs_TextBox_x2", - "NGs_TextBox_x3", - "NGs_Text_Cut_String" - ], - { - "title_aux": "ComfyUI - NeoGriever" - } - ], - "https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin": [ - [ - "NoisyLatentPerlinD" - ], - { - "title_aux": "Dimensional Latent Perlin for ComfyUI" - } - ], - "https://github.com/NeuralSamurAI/ComfyUI-FluxPseudoNegativePrompt": [ - [ - "FluxPseudoNegativeNode" - ], - { - "title_aux": "FluxPseudoNegative" - } - ], - "https://github.com/NeuralSamurAI/ComfyUI-PromptJSON": [ - [ - "PromptJSON" - ], - { - "title_aux": "PromptJSON Node for ComfyUI" - } - ], - "https://github.com/NeuralSamurAI/Comfyui-Superprompt-Unofficial": [ - [ - "SuperPrompterNode" - ], - { - "title_aux": "SuperPrompter Node for ComfyUI" - } - ], - "https://github.com/NguynHungNguyen/Segment-Bedroom-Interior": [ - [ - "BedroomFurnitureMask" - ], - { - "title_aux": "Segment Any Bedroom Interior" - } - ], - "https://github.com/NicholasMcCarthy/ComfyUI_TravelSuite": [ - [ - "LatentTravel" - ], - { - "title_aux": "ComfyUI_TravelSuite" - } - ], - "https://github.com/NimaNzrii/comfyui-photoshop": [ - [ - "\ud83d\udd39 Photoshop RemoteConnection", - "\ud83d\udd39ClipPass", - "\ud83d\udd39Photoshop ComfyUI Plugin", - "\ud83d\udd39SendTo Photoshop Plugin", - "\ud83d\udd39modelPass" - ], - { - "title_aux": "comfyui-photoshop" - } - ], - "https://github.com/NimaNzrii/comfyui-popup_preview": [ - [ - "PreviewPopup" - ], - { - "title_aux": "comfyui-popup_preview" - } - ], - "https://github.com/Niutonian/ComfyUi-NoodleWebcam": [ - [ - "WebcamNode" - ], - { - "title_aux": "ComfyUi-NoodleWebcam" - } - ], - "https://github.com/Nlar/ComfyUI_CartoonSegmentation": [ - [ - "AnimeSegmentation", - "KenBurnsConfigLoader", - "KenBurns_Processor", - "LoadImageFilename" - ], - { - "author": "Nels Larsen", - "description": "This extension offers a front end to the Cartoon Segmentation Project (https://github.com/CartoonSegmentation/CartoonSegmentation)", - "nickname": "CfyCS", - "title": "ComfyUI_CartoonSegmentation", - "title_aux": "ComfyUI_CartoonSegmentation" - } - ], - "https://github.com/Nojahhh/ComfyUI_GLM4_Wrapper": [ - [ - "GLM-4 Inferencing", - "GLM-4 Model Loader", - "GLM-4 Prompt Enhancer" - ], - { - "title_aux": "ComfyUI GLM-4 Wrapper" - } - ], - "https://github.com/NotHarroweD/Harronode": [ - [ - "Harronode" - ], - { - "author": "HarroweD and quadmoon (https://github.com/traugdor)", - "description": "This extension to ComfyUI will build a prompt for the Harrlogos LoRA for SDXL.", - "nickname": "Harronode", - "nodename_pattern": "Harronode", - "title": "Harrlogos Prompt Builder Node", - "title_aux": "Harrlogos Prompt Builder Node" - } - ], - "https://github.com/Nourepide/ComfyUI-Allor": [ - [ - "AlphaChanelAdd", - "AlphaChanelAddByMask", - "AlphaChanelAsMask", - "AlphaChanelRemove", - "AlphaChanelRestore", - "ClipClamp", - "ClipVisionClamp", - "ClipVisionOutputClamp", - "ConditioningClamp", - "ControlNetClamp", - "GligenClamp", - "ImageBatchCopy", - "ImageBatchFork", - "ImageBatchGet", - "ImageBatchJoin", - "ImageBatchPermute", - "ImageBatchRemove", - "ImageClamp", - "ImageCompositeAbsolute", - "ImageCompositeAbsoluteByContainer", - "ImageCompositeRelative", - "ImageCompositeRelativeByContainer", - "ImageContainer", - "ImageContainerInheritanceAdd", - "ImageContainerInheritanceMax", - "ImageContainerInheritanceScale", - "ImageContainerInheritanceSum", - "ImageDrawArc", - "ImageDrawArcByContainer", - "ImageDrawChord", - "ImageDrawChordByContainer", - "ImageDrawEllipse", - "ImageDrawEllipseByContainer", - "ImageDrawLine", - "ImageDrawLineByContainer", - "ImageDrawPieslice", - "ImageDrawPiesliceByContainer", - "ImageDrawPolygon", - "ImageDrawRectangle", - "ImageDrawRectangleByContainer", - "ImageDrawRectangleRounded", - "ImageDrawRectangleRoundedByContainer", - "ImageEffectsAdjustment", - "ImageEffectsGrayscale", - "ImageEffectsLensBokeh", - "ImageEffectsLensChromaticAberration", - "ImageEffectsLensOpticAxis", - "ImageEffectsLensVignette", - "ImageEffectsLensZoomBurst", - "ImageEffectsNegative", - "ImageEffectsSepia", - "ImageFilterBilateralBlur", - "ImageFilterBlur", - "ImageFilterBoxBlur", - "ImageFilterContour", - "ImageFilterDetail", - "ImageFilterEdgeEnhance", - "ImageFilterEdgeEnhanceMore", - "ImageFilterEmboss", - "ImageFilterFindEdges", - "ImageFilterGaussianBlur", - "ImageFilterGaussianBlurAdvanced", - "ImageFilterMax", - "ImageFilterMedianBlur", - "ImageFilterMin", - "ImageFilterMode", - "ImageFilterRank", - "ImageFilterSharpen", - "ImageFilterSmooth", - "ImageFilterSmoothMore", - "ImageFilterStackBlur", - "ImageNoiseBeta", - "ImageNoiseBinomial", - "ImageNoiseBytes", - "ImageNoiseGaussian", - "ImageSegmentation", - "ImageSegmentationCustom", - "ImageSegmentationCustomAdvanced", - "ImageText", - "ImageTextMultiline", - "ImageTextMultilineOutlined", - "ImageTextOutlined", - "ImageTransformCropAbsolute", - "ImageTransformCropCorners", - "ImageTransformCropRelative", - "ImageTransformPaddingAbsolute", - "ImageTransformPaddingRelative", - "ImageTransformResizeAbsolute", - "ImageTransformResizeClip", - "ImageTransformResizeRelative", - "ImageTransformRotate", - "ImageTransformTranspose", - "LatentClamp", - "MaskClamp", - "ModelClamp", - "StyleModelClamp", - "UpscaleModelClamp", - "VaeClamp" - ], - { - "title_aux": "Allor Plugin" - } - ], - "https://github.com/Nuked88/ComfyUI-N-Nodes": [ - [ - "CLIPTextEncodeAdvancedNSuite [n-suite]", - "DynamicPrompt [n-suite]", - "Float Variable [n-suite]", - "FrameInterpolator [n-suite]", - "GPT Loader Simple [n-suite]", - "GPT Sampler [n-suite]", - "ImagePadForOutpaintAdvanced [n-suite]", - "Integer Variable [n-suite]", - "Llava Clip Loader [n-suite]", - "LoadFramesFromFolder [n-suite]", - "LoadImageFromFolder [n-suite]", - "LoadVideo [n-suite]", - "SaveVideo [n-suite]", - "SetMetadataForSaveVideo [n-suite]", - "String Variable [n-suite]" - ], - { - "title_aux": "ComfyUI-N-Nodes" - } - ], - "https://github.com/NyaamZ/ComfyUI-GetBooruTag-ED": [ - [ - "Get Booru Tag \ud83d\udcacED" - ], - { - "author": "NyaamZ", - "description": "Get tag from Booru site.", - "nickname": "Get Booru Tag ED", - "title": "Get Booru Tag ExtendeD", - "title_aux": "Get Booru Tag ExtendeD" - } - ], - "https://github.com/NyaamZ/efficiency-nodes-ED": [ - [ - "Context To BasicPipe", - "Context To DetailerPipe", - "Control Net Script \ud83d\udcacED", - "Detailer (SEGS) \ud83d\udcacED", - "Efficient Loader \ud83d\udcacED", - "Embedding Stacker \ud83d\udcacED", - "FaceDetailer \ud83d\udcacED", - "Get Booru Tag \ud83d\udcacED", - "Int Holder \ud83d\udcacED", - "KSampler (Efficient) \ud83d\udcacED", - "KSampler Text \ud83d\udcacED", - "LoRA Stacker \ud83d\udcacED", - "Load Image \ud83d\udcacED", - "MaskDetailer \ud83d\udcacED", - "Refiner Script \ud83d\udcacED", - "Regional Processor \ud83d\udcacED", - "Regional Script \ud83d\udcacED", - "Regional Stacker \ud83d\udcacED", - "SUPIR Sampler \ud83d\udcacED", - "SUPIR model loader \ud83d\udcacED", - "Save Image \ud83d\udd14ED", - "Ultimate SD Upscale \ud83d\udcacED", - "Wildcard Encode \ud83d\udcacED" - ], - { - "author": "NyaamZ", - "description": "Expansion of Efficiency Nodes for ComfyUI. Significant UX improvements.", - "nickname": "Efficiency Nodes ED", - "title": "Efficiency Nodes ExtendeD", - "title_aux": "Efficiency Nodes ExtendeD" - } - ], - "https://github.com/Off-Live/ComfyUI-off-suite": [ - [ - "Apply CLAHE", - "Cached Image Load From URL", - "CalcMaskBound", - "Crop Center wigh SEGS", - "Crop Center with SEGS", - "Dilate Mask for Each Face", - "GW Number Formatting", - "Grid Image from batch (OFF)", - "Image Crop Fit", - "Image Resize Fit", - "OFF SEGS to Image", - "Paste Face Segment to Image", - "Query Gender and Age", - "RandomSeedfromList", - "SEGS to Face Crop Data", - "Safe Mask to Image", - "VAE Encode For Inpaint V2", - "Watermarking" - ], - { - "title_aux": "ComfyUI-off-suite" - } - ], - "https://github.com/OpalSky-AI/OpalSky_Nodes": [ - [ - "PromptAssistantOpalSky", - "StringSwitchOpalSky", - "string_switch_opalsky" - ], - { - "title_aux": "OpalSky Nodes" - } - ], - "https://github.com/OuticNZ/ComfyUI-Simple-Of-Complex": [ - [ - "Pipe From Parameters", - "Pipe To Parameters", - "Prompt Tidy", - "Text Switch 2 Way", - "Text With Context" - ], - { - "title_aux": "ComfyUI-Simple-Of-Complex" - } - ], - "https://github.com/PCMonsterx/ComfyUI-CSV-Loader": [ - [ - "Load Artists CSV", - "Load Artmovements CSV", - "Load Characters CSV", - "Load Colors CSV", - "Load Composition CSV", - "Load Lighting CSV", - "Load Negative CSV", - "Load Positive CSV", - "Load Settings CSV", - "Load Styles CSV" - ], - { - "title_aux": "ComfyUI-CSV-Loader" - } - ], - "https://github.com/Parameshvadivel/ComfyUI-SVGview": [ - [ - "SVGPreview" - ], - { - "title_aux": "ComfyUI-SVGview" - } - ], - "https://github.com/ParisNeo/lollms_nodes_suite": [ - [ - "Artbot", - "Lollms_Text_Gen", - "Lollms_Text_Saver", - "RandomizeVideo" - ], - { - "title_aux": "lollms_nodes_suite" - } - ], - "https://github.com/ParmanBabra/ComfyUI-Malefish-Custom-Scripts": [ - [ - "CSVPromptsLoader", - "CombinePrompt", - "MultiLoraLoader", - "RandomPrompt" - ], - { - "title_aux": "ComfyUI-Malefish-Custom-Scripts" - } - ], - "https://github.com/PauldeLavallaz/comfyui_claude_prompt_generator": [ - [ - "ClaudeCustomPrompt" - ], - { - "title_aux": "Claude Prompt Generator" - } - ], - "https://github.com/Pfaeff/pfaeff-comfyui": [ - [ - "AstropulsePixelDetector", - "BackgroundRemover", - "ImagePadForBetterOutpaint", - "Inpainting", - "InpaintingPipelineLoader" - ], - { - "title_aux": "pfaeff-comfyui" - } - ], - "https://github.com/Phando/ComfyUI-PhandoNodes": [ - [ - "SearchBySubstring", - "TextConcatenateDynamic" - ], - { - "title_aux": "ComfyUI-PhandoNodes" - } - ], - "https://github.com/Pheat-AI/Remade_nodes": [ - [ - "Batch Enlarged Overlay", - "Batch Image Blend by Mask", - "Batch Image Overlay", - "CannyImageCropper", - "MaskBoundingBox", - "Place Canny On Canvas", - "REMADE Batch Color Blend", - "REMADE Batch Image Blend", - "REMADE Batch Image Composite Masked", - "REMADE Batch Image Select Channel", - "Remove Black To Transparent", - "Shrink Canny Image" - ], - { - "title_aux": "Remade_nodes" - } - ], - "https://github.com/PixelFunAI/ComfyUI_PixelFun": [ - [ - "HunyuanLoadAndEditLoraBlocks", - "HunyuanLoadFromBlockCache", - "HunyuanLoraFromJson", - "HunyuanLoraFromPrompt" - ], - { - "title_aux": "Hunyuan LoRA Loader Nodes" - } - ], - "https://github.com/PixelML/ComfyUI-PixelML-CustomNodes": [ - [ - "AgenticflowAIVariable", - "BooleanInput_PixelML", - "FloatInput_PixelML", - "IntegerInput_PixelML", - "LoadImageFromURL_PixelML", - "SaveImage_PixelML", - "StringInput_PixelML" - ], - { - "title_aux": "PixelML ComfyUI Nodes" - } - ], - "https://github.com/PnthrLeo/comfyUI-PL-data-tools": [ - [ - "AreasGenerator", - "BatchImageGetter", - "CloseImagesSearcher" - ], - { - "title_aux": "comfyUI-PL-data-tools" - } - ], - "https://github.com/Poseidon-fan/ComfyUI-RabbitMQ-Publisher": [ - [ - "Publish Image To RabbitMQ" - ], - { - "title_aux": "ComfyUI-RabbitMQ-Publisher" - } - ], - "https://github.com/Positliver/comfyui-zegr": [ - [ - "ZEGR_ALI_UF", - "ZEGR_LF" - ], - { - "title_aux": "comfyui-zegr" - } - ], - "https://github.com/PowerHouseMan/ComfyUI-AdvancedLivePortrait": [ - [ - "AdvancedLivePortrait", - "ExpData", - "ExpressionEditor", - "LoadExpData", - "PrintExpData:", - "SaveExpData" - ], - { - "title_aux": "ComfyUI-AdvancedLivePortrait" - } - ], - "https://github.com/PressWagon/ComfyUI-StringsAndThings": [ - [ - "DebugString", - "FormatConcatStrings", - "FormattingSingle", - "FourierAnalysisNode", - "MosaicEffectNode", - "PWLoraNameCollector", - "PWLoraSelector", - "TextEmbeddingsInterrogator" - ], - { - "title_aux": "ComfyUI-StringsAndThings" - } - ], - "https://github.com/Pseudotools/Pseudocomfy": [ - [ - "Combiner", - "LoadJSONAuto", - "LoadJSONFromFolder", - "MakeMaskBatch", - "MixedBuiltinCombinerIPAdaper", - "ProcessJSON" - ], - { - "title_aux": "Pseudocomfy" - } - ], - "https://github.com/Q-Bug4/Comfyui-Qb-DateNodes": [ - [ - "DateTimeFormatterNode" - ], - { - "title_aux": "Comfyui-Qb-Date-Nodes" - } - ], - "https://github.com/Q-Bug4/Comfyui-Simple-Json-Node": [ - [ - "JSONArrayIteratorNode", - "JSONGeneratorNode", - "JSONKeyCheckerNode", - "JSONLengthNode", - "JSONMergeNode", - "JSONModifierNode", - "JSONObjectIteratorNode", - "JSONParserNode", - "JSONStringifierNode", - "RandomJSONValueNode" - ], - { - "title_aux": "Simple JSON Parser Node for ComfyUI" - } - ], - "https://github.com/QaisMalkawi/ComfyUI-QaisHelper": [ - [ - "Bool Binary Operation", - "Bool Unary Operation", - "Item Debugger", - "Item Switch", - "Nearest SDXL Resolution", - "SDXL Resolution", - "Size Swapper" - ], - { - "title_aux": "ComfyUI-Qais-Helper" - } - ], - "https://github.com/Raapys/ComfyUI-LatentGC_Aggressive": [ - [ - "LatentGC" - ], - { - "title_aux": "LatentGC Aggressive" - } - ], - "https://github.com/Ravenmelt/ComfyUI-Rodin": [ - [ - "LoadRodinAPIKEY", - "Preview_3DMesh", - "PromptForRodin", - "RodinImage3D", - "RodinMultipleImage3D", - "RodinText3D" - ], - { - "title_aux": "ComfyUI-Rodin" - } - ], - "https://github.com/RenderRift/ComfyUI-RenderRiftNodes": [ - [ - "AnalyseMetadata", - "DateIntegerNode", - "DisplayMetaOptions", - "LoadImageWithMeta", - "MetadataOverlayNode", - "VideoPathMetaExtraction" - ], - { - "title_aux": "ComfyUI-RenderRiftNodes" - } - ], - "https://github.com/RhizoNymph/ComfyUI-CLIPSlider": [ - [ - "CLIPSlider" - ], - { - "title_aux": "ComfyUI-CLIPSlider" - } - ], - "https://github.com/RhizoNymph/ComfyUI-ColorWheel": [ - [ - "AccurateColorWheelNode" - ], - { - "title_aux": "ComfyUI-ColorWheel" - } - ], - "https://github.com/RhizoNymph/ComfyUI-Latte": [ - [ - "LatteVideoGenerator" - ], - { - "title_aux": "ComfyUI-Latte" - } - ], - "https://github.com/RiceRound/ComfyUI_CryptoCat": [ - [ - "CryptoCatImage", - "DecodeCryptoNode", - "ExcuteCryptoNode", - "RandomSeedNode", - "SaveCryptoBridgeNode", - "SaveCryptoNode" - ], - { - "title_aux": "ComfyUI Compression and Encryption Node" - } - ], - "https://github.com/Rinsanga1/comfyui-florence2xy": [ - [ - "Florence2toCoordinatesButxy", - "LoadImageWithName", - "LoadPhi35VisionModel", - "Phi35VisionRun" - ], - { - "title_aux": "comfyui-florence2xy" - } - ], - "https://github.com/RodrigoSKohl/ComfyUI-Panoramic-ImgStitcher": [ - [ - "Image Stitching Node" - ], - { - "title_aux": "Panoramic Image Stitcher" - } - ], - "https://github.com/RomanKuschanow/ComfyUI-Advanced-Latent-Control": [ - [ - "LatentAddTransform", - "LatentInterpolateTransform", - "LatentMirror", - "LatentNormalize", - "LatentShift", - "MirrorTransform", - "MultiplyTransform", - "OffsetCombine", - "OneTimeLatentAddTransform", - "OneTimeLatentInterpolateTransform", - "OneTimeMirrorTransform", - "OneTimeMultiplyTransform", - "OneTimeShiftTransform", - "ShiftTransform", - "TransformHijack", - "TransformOffset", - "TransformSampler", - "TransformSamplerAdvanced", - "TransformsCombine" - ], - { - "title_aux": "Advanced Latent Control" - } - ], - "https://github.com/Ron-Digital/ComfyUI-SceneGenerator": [ - [ - "Scene Generator" - ], - { - "title_aux": "ComfyUI-SceneGenerator" - } - ], - "https://github.com/Runware/ComfyUI-Runware": [ - [ - "Runware API Manager", - "Runware Background Removal", - "Runware ControlNet", - "Runware ControlNet Combine", - "Runware ControlNet PreProcessor", - "Runware Embedding Search", - "Runware Embeddings Combine", - "Runware Image Caption", - "Runware Image Inference", - "Runware Image Masking", - "Runware Image Upscaler", - "Runware Lora Combine", - "Runware Lora Search", - "Runware Model Search", - "Runware PhotoMaker V2", - "Runware Refiner", - "Runware VAE Search" - ], - { - "title_aux": "Runware.ai ComfyUI Inference API Integration" - } - ], - "https://github.com/Ryuukeisyou/comfyui_face_parsing": [ - [ - "BBoxDecompose(FaceParsing)", - "BBoxDetect(FaceParsing)", - "BBoxDetectorLoader(FaceParsing)", - "BBoxListItemSelect(FaceParsing)", - "BBoxResize(FaceParsing)", - "ColorAdjust(FaceParsing)", - "FaceParse(FaceParsing)", - "FaceParsingModelLoader(FaceParsing)", - "FaceParsingProcessorLoader(FaceParsing)", - "FaceParsingResultsParser(FaceParsing)", - "GuidedFilter(FaceParsing)", - "ImageCropWithBBox(FaceParsing)", - "ImageCropWithBBoxList(FaceParsing)", - "ImageInsertWithBBox(FaceParsing)", - "ImageListSelect(FaceParsing)", - "ImagePadWithBBox(FaceParsing)", - "ImageResizeCalculator(FaceParsing)", - "ImageResizeWithBBox(FaceParsing)", - "ImageSize(FaceParsing)", - "LatentCropWithBBox(FaceParsing)", - "LatentInsertWithBBox(FaceParsing)", - "LatentSize(FaceParsing)", - "MaskBatchComposite(FaceParsing)", - "MaskBlackOut(FaceParsing)", - "MaskBorderDissolve(FaceParsing)", - "MaskComposite(FaceParsing)", - "MaskCropWithBBox(FaceParsing)", - "MaskInsertWithBBox(FaceParsing)", - "MaskListSelect(FaceParsing)", - "MaskToBBoxList(FaceParsing)", - "SkinDetectTraditional(FaceParsing)" - ], - { - "title_aux": "comfyui_face_parsing" - } - ], - "https://github.com/Ryuukeisyou/comfyui_io_helpers": [ - [ - "ImageLoadAsMaskByPath(IOHelpers)", - "ImageLoadByPath(IOHelpers)", - "ImageLoadFromBase64(IOHelpers)", - "ImageSaveAsBase64(IOHelpers)", - "ImageSaveToPath(IOHelpers)", - "TypeConversion(IOHelpers)", - "VHSFileNamesToStrings(IOHelpers)" - ], - { - "title_aux": "comfyui_io_helpers" - } - ], - "https://github.com/SEkINVR/ComfyUI-SaveAs": [ - [ - "ComfyUISaveAs" - ], - { - "title_aux": "ComfyUI SaveAS" - } - ], - "https://github.com/SKBv0/ComfyUI_SKBundle": [ - [ - "AspectRatioAdvanced", - "DisplayEverything", - "ImageComparer", - "MultiFloat", - "MultiTextNode", - "SKB_AnySwitch", - "SeamlessTexture", - "TextBox", - "TitlePlus" - ], - { - "title_aux": "ComfyUI SKBundle" - } - ], - "https://github.com/SLAPaper/ComfyUI-Image-Selector": [ - [ - "ImageDuplicator", - "ImageSelector", - "LatentDuplicator", - "LatentSelector" - ], - { - "title_aux": "ComfyUI-Image-Selector" - } - ], - "https://github.com/SOELexicon/ComfyUI-LexMSDBNodes": [ - [ - "MSSqlSelectNode", - "MSSqlTableNode" - ], - { - "title_aux": "LexMSDBNodes" - } - ], - "https://github.com/SOELexicon/ComfyUI-LexTools": [ - [ - "AesthetlcScoreSorter", - "AgeClassifierNode", - "ArtOrHumanClassifierNode", - "CalculateAestheticScore", - "DocumentClassificationNode", - "FoodCategoryClassifierNode", - "ImageAspectPadNode", - "ImageCaptioning", - "ImageFilterByFloatScoreNode", - "ImageFilterByIntScoreNode", - "ImageQualityScoreNode", - "ImageRankingNode", - "ImageScaleToMin", - "LoadAesteticModel", - "MD5ImageHashNode", - "SamplerPropertiesNode", - "ScoreConverterNode", - "SeedIncrementerNode", - "SegformerNode", - "SegformerNodeMasks", - "SegformerNodeMergeSegments", - "StepCfgIncrementNode" - ], - { - "title_aux": "ComfyUI-LexTools" - } - ], - "https://github.com/SS-snap/ComfyUI-Snap_Processing": [ - [ - "AreaCalculator", - "PyQtCanvasNode", - "Snapload" - ], - { - "title_aux": "Snap Processing for Comfyui" - } - ], - "https://github.com/SamKhoze/ComfyUI-DeepFuze": [ - [ - "DeepFuze Save", - "DeepFuzeAdavance", - "DeepFuzeFaceSwap", - "DeepfuzePreview", - "LLM_node", - "PlayBackAudio", - "TTS_generation" - ], - { - "title_aux": "DeepFuze" - } - ], - "https://github.com/SayanoAI/Comfy-RVC": [ - [ - "Any2ListNode", - "AudioBatchValueNode", - "AudioInfoNode", - "AudioTranscriptionNode", - "BatchedTranscriptionEncoderNode", - "DownloadAudio", - "ImageRepeatInterleavedNode", - "LatentRepeatInterleavedNode", - "List2AnyNode", - "LoadHubertModel", - "LoadPitchExtractionParams", - "LoadRVCModelNode", - "LoadWhisperModelNode", - "MergeAudioNode", - "MergeImageBatches", - "MergeLatentBatches", - "MuseAudioFeatureExtractionNode", - "MuseImageFeatureExtractionNode", - "MuseTalkNode", - "ProcessAudioNode", - "RVC-Studio.LoadAudio", - "RVC-Studio.PreviewAudio", - "RVCNode", - "RVCProcessDatasetNode", - "RVCTrainModelNode", - "RVCTrainParamsNode", - "SimpleMathNode", - "SliceNode", - "SortImagesNode", - "UVR5Node", - "ZipNode" - ], - { - "title_aux": "Comfy-RVC" - } - ], - "https://github.com/Scholar01/ComfyUI-Keyframe": [ - [ - "KeyframeApply", - "KeyframeInterpolationPart", - "KeyframePart" - ], - { - "title_aux": "SComfyUI-Keyframe" - } - ], - "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader": [ - [ - "CombinedDiffusersLoader", - "DiffusersClipLoader", - "DiffusersUNETLoader", - "DiffusersVAELoader" - ], - { - "title_aux": "ComfyUI-DiffusersLoader" - } - ], - "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode": [ - [ - "OllamaCLIPTextEncode", - "OllamaPromptGenerator" - ], - { - "author": "Michael Standen", - "description": "Use AI to generate prompts and perform CLIP text encoding", - "nickname": "Ollama Prompt Encode", - "title": "Ollama Prompt Encode", - "title_aux": "Ollama Prompt Encode" - } - ], - "https://github.com/SeaArtLab/ComfyUI-Long-CLIP": [ - [ - "LongCLIPTextEncodeFlux", - "SeaArtLongClip", - "SeaArtLongXLClipMerge" - ], - { - "title_aux": "ComfyUI-Long-CLIP" - } - ], - "https://github.com/SeanScripts/ComfyUI-PixtralLlamaMolmoVision": [ - [ - "AutoVisionModelLoader", - "JoinString", - "LlamaVisionGenerateText", - "LlamaVisionModelLoader", - "MolmoGenerateText", - "MolmoModelLoader", - "ParseBoundingBoxes", - "ParsePoints", - "PixtralGenerateText", - "PixtralImageEncode", - "PixtralModelLoader", - "PixtralTextEncode", - "PlotPoints", - "RegexFindAll", - "RegexSearch", - "RegexSplitString", - "RegexSubstitution", - "SelectIndex", - "SliceList" - ], - { - "title_aux": "ComfyUI-PixtralLlamaMolmoVision" - } - ], - "https://github.com/SeanScripts/ComfyUI-Unload-Model": [ - [ - "UnloadAllModels", - "UnloadModel" - ], - { - "title_aux": "ComfyUI-Unload-Model" - } - ], - "https://github.com/SeargeDP/ComfyUI_Searge_LLM": [ - [ - "Searge_AdvOptionsNode", - "Searge_LLM_Node", - "Searge_Output_Node" - ], - { - "title_aux": "Searge-LLM for ComfyUI v1.0" - } - ], - "https://github.com/SeargeDP/SeargeSDXL": [ - [ - "SeargeAdvancedParameters", - "SeargeCheckpointLoader", - "SeargeConditionMixing", - "SeargeConditioningMuxer2", - "SeargeConditioningMuxer5", - "SeargeConditioningParameters", - "SeargeControlnetAdapterV2", - "SeargeControlnetModels", - "SeargeCustomAfterUpscaling", - "SeargeCustomAfterVaeDecode", - "SeargeCustomPromptMode", - "SeargeDebugPrinter", - "SeargeEnablerInputs", - "SeargeFloatConstant", - "SeargeFloatMath", - "SeargeFloatPair", - "SeargeFreeU", - "SeargeGenerated1", - "SeargeGenerationParameters", - "SeargeHighResolution", - "SeargeImage2ImageAndInpainting", - "SeargeImageAdapterV2", - "SeargeImageSave", - "SeargeImageSaving", - "SeargeInput1", - "SeargeInput2", - "SeargeInput3", - "SeargeInput4", - "SeargeInput5", - "SeargeInput6", - "SeargeInput7", - "SeargeIntegerConstant", - "SeargeIntegerMath", - "SeargeIntegerPair", - "SeargeIntegerScaler", - "SeargeLatentMuxer3", - "SeargeLoraLoader", - "SeargeLoras", - "SeargeMagicBox", - "SeargeModelSelector", - "SeargeOperatingMode", - "SeargeOutput1", - "SeargeOutput2", - "SeargeOutput3", - "SeargeOutput4", - "SeargeOutput5", - "SeargeOutput6", - "SeargeOutput7", - "SeargeParameterProcessor", - "SeargePipelineStart", - "SeargePipelineTerminator", - "SeargePreviewImage", - "SeargePromptAdapterV2", - "SeargePromptCombiner", - "SeargePromptStyles", - "SeargePromptText", - "SeargeSDXLBasePromptEncoder", - "SeargeSDXLImage2ImageSampler", - "SeargeSDXLImage2ImageSampler2", - "SeargeSDXLPromptEncoder", - "SeargeSDXLRefinerPromptEncoder", - "SeargeSDXLSampler", - "SeargeSDXLSampler2", - "SeargeSDXLSamplerV3", - "SeargeSamplerAdvanced", - "SeargeSamplerInputs", - "SeargeSaveFolderInputs", - "SeargeSeparator", - "SeargeStylePreprocessor", - "SeargeTextInputV2", - "SeargeUpscaleModelLoader", - "SeargeUpscaleModels", - "SeargeVAELoader" - ], - { - "title_aux": "SeargeSDXL" - } - ], - "https://github.com/Seedsa/Fooocus_Nodes": [ - [ - "BasicScheduler", - "CLIPLoader", - "CLIPMergeSimple", - "CLIPSave", - "CLIPSetLastLayer", - "CLIPTextEncode", - "CLIPTextEncodeSDXL", - "CLIPTextEncodeSDXLRefiner", - "CLIPVisionEncode", - "CLIPVisionLoader", - "Canny", - "CheckpointLoader", - "CheckpointLoaderSimple", - "CheckpointSave", - "ConditioningAverage", - "ConditioningCombine", - "ConditioningConcat", - "ConditioningSetArea", - "ConditioningSetAreaPercentage", - "ConditioningSetMask", - "ConditioningSetTimestepRange", - "ConditioningZeroOut", - "ControlNetApply", - "ControlNetApplyAdvanced", - "ControlNetLoader", - "CropMask", - "DiffControlNetLoader", - "DiffusersLoader", - "DualCLIPLoader", - "EmptyImage", - "EmptyLatentImage", - "ExponentialScheduler", - "FeatherMask", - "FlipSigmas", - "Fooocus ApplyImagePrompt", - "Fooocus Controlnet", - "Fooocus Describe", - "Fooocus Expansion", - "Fooocus ImagePrompt", - "Fooocus Inpaint", - "Fooocus KSampler", - "Fooocus Loader", - "Fooocus LoraStack", - "Fooocus PipeOut", - "Fooocus PreKSampler", - "Fooocus Styles", - "Fooocus Upscale", - "Fooocus detailerFix", - "Fooocus negative", - "Fooocus positive", - "Fooocus preDetailerFix", - "Fooocus samLoaderPipe", - "Fooocus ultralyticsDetectorPipe", - "FreeU", - "FreeU_V2", - "GLIGENLoader", - "GLIGENTextBoxApply", - "GrowMask", - "HyperTile", - "HypernetworkLoader", - "ImageBatch", - "ImageBlend", - "ImageBlur", - "ImageColorToMask", - "ImageCompositeMasked", - "ImageCrop", - "ImageInvert", - "ImageOnlyCheckpointLoader", - "ImageOnlyCheckpointSave", - "ImagePadForOutpaint", - "ImageQuantize", - "ImageScale", - "ImageScaleBy", - "ImageScaleToTotalPixels", - "ImageSharpen", - "ImageToMask", - "ImageUpscaleWithModel", - "InpaintModelConditioning", - "InvertMask", - "JoinImageWithAlpha", - "KSampler", - "KSamplerAdvanced", - "KSamplerSelect", - "KarrasScheduler", - "LatentAdd", - "LatentBatch", - "LatentBatchSeedBehavior", - "LatentBlend", - "LatentComposite", - "LatentCompositeMasked", - "LatentCrop", - "LatentFlip", - "LatentFromBatch", - "LatentInterpolate", - "LatentMultiply", - "LatentRotate", - "LatentSubtract", - "LatentUpscale", - "LatentUpscaleBy", - "LoadImage", - "LoadImageMask", - "LoadLatent", - "LoraLoader", - "LoraLoaderModelOnly", - "MaskComposite", - "MaskToImage", - "ModelMergeAdd", - "ModelMergeBlocks", - "ModelMergeSimple", - "ModelMergeSubtract", - "ModelSamplingContinuousEDM", - "ModelSamplingDiscrete", - "PatchModelAddDownscale", - "PerpNeg", - "PhotoMakerEncode", - "PhotoMakerLoader", - "PolyexponentialScheduler", - "PorterDuffImageComposite", - "PreviewImage", - "RebatchImages", - "RebatchLatents", - "RepeatImageBatch", - "RepeatLatentBatch", - "RescaleCFG", - "SDTurboScheduler", - "SD_4XUpscale_Conditioning", - "SVD_img2vid_Conditioning", - "SamplerCustom", - "SamplerDPMPP_2M_SDE", - "SamplerDPMPP_SDE", - "SaveAnimatedPNG", - "SaveAnimatedWEBP", - "SaveImage", - "SaveLatent", - "SelfAttentionGuidance", - "SetLatentNoiseMask", - "SolidMask", - "SplitImageWithAlpha", - "SplitSigmas", - "StableZero123_Conditioning", - "StableZero123_Conditioning_Batched", - "StyleModelApply", - "StyleModelLoader", - "TomePatchModel", - "UNETLoader", - "UpscaleModelLoader", - "VAEDecode", - "VAEDecodeTiled", - "VAEEncode", - "VAEEncodeForInpaint", - "VAEEncodeTiled", - "VAELoader", - "VAESave", - "VPScheduler", - "VideoLinearCFGGuidance", - "unCLIPCheckpointLoader", - "unCLIPConditioning" - ], - { - "title_aux": "ComfyUI Fooocus Nodes" - } - ], - "https://github.com/Shadetail/ComfyUI_Eagleshadow": [ - [ - "Batch 12 Images", - "Detect Transparency", - "Fix Checkpoint Name", - "ImageLinearGammaCompositeMasked", - "KSampler Same Noise", - "MaskGlow", - "OffsetImage", - "Round Float to String", - "SaveImageToFolder", - "Select ControlNet", - "Select Model 20", - "Simple Load Image Batch" - ], - { - "title_aux": "Eagleshadow Custom Nodes" - } - ], - "https://github.com/Shakker-Labs/ComfyUI-IPAdapter-Flux": [ - [ - "ApplyIPAdapterFlux", - "ApplyIPAdapterFluxAdvanced", - "IPAdapterFluxLoader", - "IPAdapterFluxLoaderAdvanced" - ], - { - "title_aux": "ComfyUI-IPAdapter-Flux" - } - ], - "https://github.com/Shannooty/ComfyUI-Timer-Nodes": [ - [ - "TimerStart", - "TimerStringConcat" - ], - { - "title_aux": "ComfyUI Timer Nodes" - } - ], - "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting": [ - [ - "CropImageByRect", - "INPAINT_ColorCorrection", - "INPAINT_CropImage", - "INPAINT_InpaintingWithModel", - "INPAINT_LoadModel", - "INPAINT_PasteBackCropImage", - "INPAINT_VAEDecode", - "INPAINT_VAEEncode", - "ImagePostprocess", - "ImagePreprocess" - ], - { - "title_aux": "ComfyUI-Image-Inpainting" - } - ], - "https://github.com/Shiba-2-shiba/ComfyUI_DiffusionModel_fp8_converter": [ - [ - "ClipFP8ConverterNode", - "ModelFP8ConverterNode" - ], - { - "title_aux": "ComfyUI_DiffusionModel_fp8_converter" - } - ], - "https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node": [ - [ - "ASCIIArtNode", - "ASCIIArtNodev2", - "ASCIIArtSinglefontNode" - ], - { - "author": "Shiba-2-shiba", - "description": "This node generates colorful ASCII art using custom character sets and fonts.", - "nickname": "ColorASCII", - "title": "Colorful ASCII Art Node", - "title_aux": "ComfyUI-color-ascii-art-node" - } - ], - "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools": [ - [ - "Cascade", - "Luts", - "Waifu2x" - ], - { - "title_aux": "Shibiko AI ComfyUI Tools" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust": [ - [ - "ApplyStyleModelAdjust" - ], - { - "title_aux": "Apply Style Model Adjust for ComfyUI" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-AstralAnimator": [ - [ - "AstralAnimator" - ], - { - "title_aux": "ComfyUI-AstralAnimator" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-CohernetVideoSampler": [ - [ - "CohernetVideoSampler" - ], - { - "title_aux": "ComfyUI Coherent Video Sampler Node" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-EmptyHunyuanLatent": [ - [ - "EmptyHunyuanLatentForImage", - "EmptyHunyuanLatentForVideo" - ], - { - "title_aux": "ComfyUI-EmptyHunyuanLatent" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-FreeMemory": [ - [ - "FreeMemoryCLIP", - "FreeMemoryImage", - "FreeMemoryLatent", - "FreeMemoryModel" - ], - { - "title_aux": "ComfyUI-FreeMemory" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-Gemini_Flash_2.0_Exp": [ - [ - "AudioRecorder", - "Gemini_Flash_200_Exp" - ], - { - "title_aux": "ComfyUI-Gemini_Flash_2.0_Exp" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave": [ - [ - "EmptyVideoLatentForHunyuan", - "HunyuanVideoSamplerSave", - "ImageMotionInfluance", - "ResizeImageForHunyuan" - ], - { - "title_aux": "ComfyUI-HunyuanVideoSamplerSave" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoStyler": [ - [ - "HunyuanVideoStyler" - ], - { - "title_aux": "ComfyUI-HunyuanVideoStyler" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-ImageMotionGuider": [ - [ - "ImageMotionGuider" - ], - { - "title_aux": "ComfyUI-ImageMotionGuider" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-LatentSyncWrapper": [ - [ - "D_LatentSyncNode", - "D_VideoLengthAdjuster" - ], - { - "title_aux": "ComfyUI-LatentSyncWrapper" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-SVDResizer": [ - [ - "SVDRsizer" - ], - { - "title_aux": "ComfyUI-SVDResizer" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_Flux_1.1_RAW_API": [ - [ - "FluxPro11WithFinetune" - ], - { - "title_aux": "ComfyUI Flux 1.1 Ultra & Raw Node" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_Gemini_Flash": [ - [ - "Gemini_Flash_002" - ], - { - "title_aux": "ComfyUI_Gemini_Flash" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_pixtral_large": [ - [ - "ComfyUIPixtralLarge", - "MultiImagesInput", - "preview_text" - ], - { - "title_aux": "ComfyUI Pixtral Large Extension" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_pixtral_vision": [ - [ - "ComfyUIPixtralVision", - "MultiImagesInput", - "preview_text" - ], - { - "title_aux": "ComfyUI_pixtral_vision" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_wav2lip": [ - [ - "LoadAudio", - "Wav2Lip" - ], - { - "title_aux": "Wav2Lip Node for ComfyUI" - } - ], - "https://github.com/Shraknard/ComfyUI-Remover": [ - [ - "Remover" - ], - { - "title_aux": "ComfyUI-Remover" - } - ], - "https://github.com/Siberpone/lazy-pony-prompter": [ - [ - "LPP_Danbooru", - "LPP_Deleter", - "LPP_Derpibooru", - "LPP_E621", - "LPP_Loader_Danbooru", - "LPP_Loader_Derpibooru", - "LPP_Loader_E621", - "LPP_Saver" - ], - { - "title_aux": "Lazy Pony Prompter" - } - ], - "https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders": [ - [ - "CheckPointLoader_Text", - "EmptyLatentImage_Text", - "LoRALoader_Text", - "LoadImage_Text" - ], - { - "title_aux": "ComfyUI_Textarea_Loaders" - } - ], - "https://github.com/SimonHeese/ComfyUI_AnimationNodes/raw/refs/heads/main/animated_offset_pad.py": [ - [ - "AnimatedOffsetPadding" - ], - { - "title_aux": "ComfyUI_AnimationNodes" - } - ], - "https://github.com/SlackinJack/asyncdiff_comfyui": [ - [ - "ADADIPASampler", - "ADADSampler", - "ADIPAdapterSelector", - "ADLoraSelector", - "ADModelSelector", - "ADMultiLoraSelector", - "ADPipelineConfig", - "ADSD1Sampler", - "ADSD2Sampler", - "ADSD3Sampler", - "ADSDUpscaleSampler", - "ADSDXLSampler", - "ADSVDSampler" - ], - { - "title_aux": "asyncdiff_comfyui" - } - ], - "https://github.com/SlackinJack/distrifuser_comfyui": [ - [ - "DFPipelineConfig", - "DFSampler" - ], - { - "title_aux": "distrifuser_comfyui" - } - ], - "https://github.com/SleeeepyZhou/ComfyUI-CNtranslator": [ - [ - "CNtranslator", - "TextShow" - ], - { - "title_aux": "CNtranslator" - } - ], - "https://github.com/Slickytail/ComfyUI-InstantX-IPAdapter-SD3": [ - [ - "ApplyIPAdapterSD3", - "IPAdapterSD3Loader" - ], - { - "title_aux": "ComfyUI-InstantX-IPAdapter-SD3" - } - ], - "https://github.com/Smirnov75/ComfyUI-mxToolkit": [ - [ - "mxSeed", - "mxSlider", - "mxSlider2D", - "mxStop" - ], - { - "title_aux": "ComfyUI-mxToolkit" - } - ], - "https://github.com/Smuzzies/comfyui_meme_maker": [ - [ - "MemeMaker" - ], - { - "title_aux": "comfyui_meme_maker" - } - ], - "https://github.com/SoftMeng/ComfyUI-DeepCache-Fix": [ - [ - "DeepCache_Fix" - ], - { - "title_aux": "ComfyUI-DeepCache-Fix" - } - ], - "https://github.com/SoftMeng/ComfyUI-PIL": [ - [ - "PIL Effects (Mexx)", - "PIL Merge Image (Mexx)", - "PIL Remove Black Dots (Mexx)", - "PIL TITLE (Mexx)" - ], - { - "title_aux": "ComfyUI-PIL" - } - ], - "https://github.com/SoftMeng/ComfyUI_ImageToText": [ - [ - "ComfyUI_ImageToText" - ], - { - "title_aux": "ComfyUI_ImageToText" - } - ], - "https://github.com/SoftMeng/ComfyUI_Mexx_Poster": [ - [ - "ComfyUI_Mexx_Poster" - ], - { - "title_aux": "ComfyUI_Mexx_Poster" - } - ], - "https://github.com/SoftMeng/ComfyUI_Mexx_Styler": [ - [ - "MexxSDXLPromptStyler", - "MexxSDXLPromptStylerAdvanced" - ], - { - "title_aux": "ComfyUI_Mexx_Styler" - } - ], - "https://github.com/SongGuo11/ComfyUI-SaveAnything-SG11": [ - [ - "SG11_SaveAnything" - ], - { - "title_aux": "ComfyUI SaveAnything Node (SG11)" - } - ], - "https://github.com/Sorcerio/MBM-Music-Visualizer": [ - [ - "id", - "mbmAudioFeatureCalculator", - "mbmAudioLoader", - "mbmImageConcat", - "mbmPromptSequenceBuilder", - "mbmPromptSequenceBuilderAdv", - "mbmPromptSequenceInterpolator", - "mbmPromptSequenceLoader", - "mbmPromptSequenceRenderer" - ], - { - "title_aux": "MBM's Music Visualizer" - } - ], - "https://github.com/SozeInc/ComfyUI-Mobile": [ - [ - "Mobile_Settings_Launcher_Data", - "Send Notification (Mobile)", - "Settings Launcher (Mobile)", - "Ultimate Concat (Mobile)" - ], - { - "title_aux": "ComfyUI-Mobile" - } - ], - "https://github.com/SozeInc/ComfyUI_Soze": [ - [ - "CSV Reader", - "CSV Writer", - "Empty Images", - "Get Most Common Image Colors", - "Image Batch Process Switch", - "Image List Loader", - "Image Overlay", - "Is Input In List", - "Load Image", - "Load Image From URL", - "Load Images From Folder", - "Multiline Concatenate Strings", - "Output Filename", - "Prompt Cache", - "Prompt X Lora", - "Range(Num Steps) - Float", - "Range(Num Steps) - Int", - "Range(Step) - Float", - "Range(Step) - Int", - "String Replacer", - "Text Contains (Return Bool)", - "Text Contains (Return String)", - "Variable Image Builder", - "XY Any", - "XY Image" - ], - { - "title_aux": "Quality of Life Nodes for ComfyUI" - } - ], - "https://github.com/SpaceKendo/ComfyUI-svd_txt2vid": [ - [ - "SVD_txt2vid_ConditioningwithLatent" - ], - { - "title_aux": "Text to video for Stable Video Diffusion in ComfyUI" - } - ], - "https://github.com/SparknightLLC/ComfyUI-ConditionalInterrupt": [ - [ - "Conditional Interrupt" - ], - { - "title_aux": "ComfyUI-ConditionalInterrupt" - } - ], - "https://github.com/SparknightLLC/ComfyUI-LatentClamp": [ - [ - "LatentClamp" - ], - { - "title_aux": "ComfyUI-LatentClamp" - } - ], - "https://github.com/SparknightLLC/ComfyUI-MaskArbiter": [ - [ - "GroundingDinoSAM2SegmentList", - "MaskArbiter" - ], - { - "title_aux": "ComfyUI-MaskArbiter" - } - ], - "https://github.com/SpenserCai/ComfyUI-FunAudioLLM": [ - [ - "CosyVoiceCrossLingualNode", - "CosyVoiceInstructNode", - "CosyVoiceLoadSpeakerModelFromUrlNode", - "CosyVoiceLoadSpeakerModelNode", - "CosyVoiceSFTNode", - "CosyVoiceSaveSpeakerModelNode", - "CosyVoiceZeroShotNode", - "SenseVoiceNode" - ], - { - "title_aux": "ComfyUI-FunAudioLLM" - } - ], - "https://github.com/Stability-AI/ComfyUI-SAI_API": [ - [ - "Stability Conservative Upscale", - "Stability Control Skech", - "Stability Control Structure", - "Stability Creative Upscale", - "Stability Erase", - "Stability Image Core", - "Stability Image Ultra", - "Stability Inpainting", - "Stability Outpainting", - "Stability Remove Background", - "Stability SD3", - "Stability Search and Replace" - ], - { - "title_aux": "Stability API nodes for ComfyUI" - } - ], - "https://github.com/Stability-AI/stability-ComfyUI-nodes": [ - [ - "ColorBlend", - "ControlLoraSave", - "GetImageSize" - ], - { - "title_aux": "stability-ComfyUI-nodes" - } - ], - "https://github.com/StableDiffusionVN/SDVN_Comfy_node": [ - [ - "SDVM Image List Repeat", - "SDVN API chatbot", - "SDVN Any From List", - "SDVN Any Input Type", - "SDVN Any List", - "SDVN Any Repeat", - "SDVN Any Show", - "SDVN Apply Style Model", - "SDVN Auto Generate", - "SDVN Boolean", - "SDVN CLIP Download", - "SDVN CLIP Text Encode", - "SDVN CLIPVision Download", - "SDVN Checkpoint Download", - "SDVN ControlNet Download", - "SDVN Controlnet Apply", - "SDVN DALL-E Generate Image", - "SDVN Dic Convert", - "SDVN Easy IPAdapter weight", - "SDVN Exif check", - "SDVN Filter List", - "SDVN IC-Light v2", - "SDVN Image Adjust", - "SDVN Image Film Grain", - "SDVN Image HSL", - "SDVN Image Info", - "SDVN Image Layout", - "SDVN Image Repeat", - "SDVN Image Scraper", - "SDVN Image Size", - "SDVN Image White Balance", - "SDVN Inpaint", - "SDVN Join Parameter", - "SDVN Joy Caption", - "SDVN KSampler", - "SDVN Load Checkpoint", - "SDVN Load Image", - "SDVN Load Image Folder", - "SDVN Load Image From List", - "SDVN Load Image Url", - "SDVN Load Lora", - "SDVN Load Model", - "SDVN Load Text", - "SDVN Logic", - "SDVN Lora Download", - "SDVN Lora info", - "SDVN Menu Option", - "SDVN Merge Flux", - "SDVN Merge SD1", - "SDVN Merge SDXL", - "SDVN Metadata Check", - "SDVN Model Merge", - "SDVN Model info editor", - "SDVN Pipe In", - "SDVN Pipe Out", - "SDVN Pipe Out All", - "SDVN Quick Menu", - "SDVN Run Python Code", - "SDVN Run Test", - "SDVN Save Text", - "SDVN Seed", - "SDVN Simple Any Input", - "SDVN StyleModel Download", - "SDVN Styles", - "SDVN Switch", - "SDVN Translate", - "SDVN UNET Download", - "SDVN UPscale Latent", - "SDVN Upscale Image", - "SDVN UpscaleModel Download", - "SDVN VAE Download" - ], - { - "title_aux": "SDVN Comfy node" - } - ], - "https://github.com/StarMagicAI/comfyui_tagger": [ - [ - "DownloadAndLoadFlorence2Lora_jsonL", - "DownloadAndLoadFlorence2Model_jsonL", - "Florence2ModelLoader_jsonL", - "Florence2Run_jsonL", - "batch_text_save_jsonL" - ], - { - "title_aux": "ComfyUI-tagger" - } - ], - "https://github.com/Starnodes2024/ComfyUI_StarNodes": [ - [ - "DetailStarDaemon", - "FluxStartSettings", - "Fluxstarsampler", - "OllamaModelChooser", - "SD35StartSettings", - "SDXLStartSettings", - "SDstarsampler", - "StarFiveWildcards", - "StarImageSwitch", - "StarTextFilter", - "Starupscale" - ], - { - "title_aux": "ComfyUI_StarNodes" - } - ], - "https://github.com/StartHua/ComfyUI_OOTDiffusion_CXH": [ - [ - "Ood_CXH" - ], - { - "title_aux": "ComfyUI_OOTDiffusion_CXH" - } - ], - "https://github.com/StartHua/ComfyUI_PCDMs": [ - [ - "PCDMS_CXH" - ], - { - "title_aux": "ComfyUI_PCDMs" - } - ], - "https://github.com/StartHua/ComfyUI_Seg_VITON": [ - [ - "segformer_agnostic", - "segformer_clothes", - "segformer_remove_bg", - "stabel_vition" - ], - { - "title_aux": "ComfyUI_Seg_VITON" - } - ], - "https://github.com/StartHua/Comfyui_CXH_DeepLX": [ - [ - "CXH_DeepLX_Free", - "CXH_DeepLX_translate" - ], - { - "title_aux": "Comfyui_CXH_DeepLX" - } - ], - "https://github.com/StartHua/Comfyui_CXH_FluxLoraMerge": [ - [ - "CXH_Lora_Merge" - ], - { - "title_aux": "Comfyui_CXH_FluxLoraMerge" - } - ], - "https://github.com/StartHua/Comfyui_CXH_Phi_3.5": [ - [ - "CXH_Phi_Run", - "CXH_Phi_chat_load", - "CXH_Phi_chat_min", - "CXH_Phi_load" - ], - { - "title_aux": "Comfyui_CXH_Phi_3.5" - } - ], - "https://github.com/StartHua/Comfyui_CXH_joy_caption": [ - [ - "CXH_DownloadAndLoadFlorence2Model", - "CXH_Florence2Run", - "CXH_HG_Model_Load", - "CXH_IC_Lora_Florence2Run", - "CXH_IC_lora_reversal", - "CXH_Ic_lora_Joy_batch", - "CXH_Min2_6_classifiy", - "CXH_Min2_6_prompt_Run", - "CXH_MinCP3_4B_Chat", - "CXH_MinCP3_4B_Load", - "CXH_SmolVlm_Load", - "CXH_SmolVlm_Run", - "Joy_caption", - "Joy_caption_alpha_batch", - "Joy_caption_alpha_batch_Dirs", - "Joy_caption_alpha_load", - "Joy_caption_alpha_prompt", - "Joy_caption_alpha_run", - "Joy_caption_load" - ], - { - "title_aux": "Comfyui_CXH_joy_caption" - } - ], - "https://github.com/StartHua/Comfyui_Gemini2": [ - [ - "CXH_Gemini2_TX", - "CXH_Gemini2_Vision", - "CXH_Local_Prompt" - ], - { - "title_aux": "Comfyui_Gemini2" - } - ], - "https://github.com/StartHua/Comfyui_joytag": [ - [ - "CXH_JoyTag" - ], - { - "title_aux": "Comfyui_joytag" - } - ], - "https://github.com/StartHua/Comfyui_segformer_b2_clothes": [ - [ - "segformer_b2_clothes", - "segformer_b3_fashion" - ], - { - "title_aux": "comfyui_segformer_b2_clothes" - } - ], - "https://github.com/Steudio/ComfyUI_Steudio": [ - [ - "Combine Tiles", - "Divide Image", - "Divide Image and Select Tile", - "Divide and Conquer Algorithm", - "Divide and Conquer Algorithm (No Upscale)", - "Load Images into List", - "Make Size", - "Seed Shifter", - "Sequence Generator" - ], - { - "title_aux": "ComfyUI Steudio" - } - ], - "https://github.com/SuperBeastsAI/ComfyUI-SuperBeasts": [ - [ - "Deflicker - Experimental (SuperBeasts.AI)", - "HDR Effects (SuperBeasts.AI)", - "Image Batch Manager (SuperBeasts.AI)", - "Make Resized Mask Batch (SuperBeasts.AI)", - "Mask Batch Manager (SuperBeasts.AI)", - "Pixel Deflicker - Experimental (SuperBeasts.AI)", - "String List Manager (SuperBeasts.AI)" - ], - { - "title_aux": "ComfyUI-SuperBeasts" - } - ], - "https://github.com/SuperMasterBlasterLaser/ComfyUI_YOLO_Classifiers": [ - [ - "YOLO Classifier Model Loader", - "YOLO Classify" - ], - { - "title_aux": "ComfyUI_YOLO_Classifiers" - } - ], - "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes": [ - [ - "CR 8 Channel In", - "CR 8 Channel Out", - "CR Apply ControlNet", - "CR Apply LoRA Stack", - "CR Apply Model Merge", - "CR Apply Multi Upscale", - "CR Apply Multi-ControlNet", - "CR Arabic Text RTL", - "CR Aspect Ratio", - "CR Aspect Ratio Banners", - "CR Aspect Ratio SDXL", - "CR Aspect Ratio Social Media", - "CR Batch Images From List", - "CR Batch Process Switch", - "CR Binary Pattern", - "CR Binary To Bit List", - "CR Bit Schedule", - "CR Central Schedule", - "CR Checker Pattern", - "CR Clamp Value", - "CR Clip Input Switch", - "CR Color Bars", - "CR Color Gradient", - "CR Color Panel", - "CR Color Tint", - "CR Combine Prompt", - "CR Combine Schedules", - "CR Comic Panel Templates", - "CR Composite Text", - "CR Conditioning Input Switch", - "CR Conditioning Mixer", - "CR ControlNet Input Switch", - "CR Current Frame", - "CR Cycle Images", - "CR Cycle Images Simple", - "CR Cycle LoRAs", - "CR Cycle Models", - "CR Cycle Text", - "CR Cycle Text Simple", - "CR Data Bus In", - "CR Data Bus Out", - "CR Debatch Frames", - "CR Diamond Panel", - "CR Draw Perspective Text", - "CR Draw Pie", - "CR Draw Shape", - "CR Draw Text", - "CR Encode Scheduled Prompts", - "CR Feathered Border", - "CR Float Range List", - "CR Float To Integer", - "CR Float To String", - "CR Font File List", - "CR Get Parameter From Prompt", - "CR Gradient Float", - "CR Gradient Integer", - "CR Half Drop Panel", - "CR Halftone Filter", - "CR Halftone Grid", - "CR Hires Fix Process Switch", - "CR Image Border", - "CR Image Grid Panel", - "CR Image Input Switch", - "CR Image Input Switch (4 way)", - "CR Image List", - "CR Image List Simple", - "CR Image Output", - "CR Image Panel", - "CR Image Pipe Edit", - "CR Image Pipe In", - "CR Image Pipe Out", - "CR Image Size", - "CR Img2Img Process Switch", - "CR Increment Float", - "CR Increment Integer", - "CR Index", - "CR Index Increment", - "CR Index Multiply", - "CR Index Reset", - "CR Input Text List", - "CR Integer Multiple", - "CR Integer Range List", - "CR Integer To String", - "CR Interpolate Latents", - "CR Intertwine Lists", - "CR Keyframe List", - "CR Latent Batch Size", - "CR Latent Input Switch", - "CR LoRA List", - "CR LoRA Stack", - "CR Load Animation Frames", - "CR Load Flow Frames", - "CR Load GIF As List", - "CR Load Image List", - "CR Load Image List Plus", - "CR Load LoRA", - "CR Load Prompt Style", - "CR Load Schedule From File", - "CR Load Scheduled ControlNets", - "CR Load Scheduled LoRAs", - "CR Load Scheduled Models", - "CR Load Text List", - "CR Mask Text", - "CR Math Operation", - "CR Model Input Switch", - "CR Model List", - "CR Model Merge Stack", - "CR Module Input", - "CR Module Output", - "CR Module Pipe Loader", - "CR Multi Upscale Stack", - "CR Multi-ControlNet Stack", - "CR Multiline Text", - "CR Output Flow Frames", - "CR Output Schedule To File", - "CR Overlay Text", - "CR Overlay Transparent Image", - "CR Page Layout", - "CR Pipe Switch", - "CR Polygons", - "CR Prompt List", - "CR Prompt List Keyframes", - "CR Prompt Scheduler", - "CR Prompt Text", - "CR Radial Gradient", - "CR Random Hex Color", - "CR Random LoRA Stack", - "CR Random Multiline Colors", - "CR Random Multiline Values", - "CR Random Panel Codes", - "CR Random RGB", - "CR Random RGB Gradient", - "CR Random Shape Pattern", - "CR Random Weight LoRA", - "CR Repeater", - "CR SD1.5 Aspect Ratio", - "CR SDXL Aspect Ratio", - "CR SDXL Base Prompt Encoder", - "CR SDXL Prompt Mix Presets", - "CR SDXL Prompt Mixer", - "CR SDXL Style Text", - "CR Save Text To File", - "CR Schedule Input Switch", - "CR Schedule To ScheduleList", - "CR Seamless Checker", - "CR Seed", - "CR Seed to Int", - "CR Select Font", - "CR Select ISO Size", - "CR Select Model", - "CR Select Resize Method", - "CR Set Switch From String", - "CR Set Value On Binary", - "CR Set Value On Boolean", - "CR Set Value on String", - "CR Simple Banner", - "CR Simple Binary Pattern", - "CR Simple Binary Pattern Simple", - "CR Simple Image Compare", - "CR Simple List", - "CR Simple Meme Template", - "CR Simple Prompt List", - "CR Simple Prompt List Keyframes", - "CR Simple Prompt Scheduler", - "CR Simple Schedule", - "CR Simple Text Panel", - "CR Simple Text Scheduler", - "CR Simple Text Watermark", - "CR Simple Titles", - "CR Simple Value Scheduler", - "CR Split String", - "CR Starburst Colors", - "CR Starburst Lines", - "CR String To Boolean", - "CR String To Combo", - "CR String To Number", - "CR Style Bars", - "CR Switch Model and CLIP", - "CR Text", - "CR Text Blacklist", - "CR Text Concatenate", - "CR Text Cycler", - "CR Text Input Switch", - "CR Text Input Switch (4 way)", - "CR Text Length", - "CR Text List", - "CR Text List Simple", - "CR Text List To String", - "CR Text Operation", - "CR Text Replace", - "CR Text Scheduler", - "CR Thumbnail Preview", - "CR Trigger", - "CR Upscale Image", - "CR VAE Decode", - "CR VAE Input Switch", - "CR Value", - "CR Value Cycler", - "CR Value Scheduler", - "CR Vignette Filter", - "CR XY From Folder", - "CR XY Index", - "CR XY Interpolate", - "CR XY List", - "CR XY Product", - "CR XY Save Grid Image", - "CR XYZ Index", - "CR_Aspect Ratio For Print" - ], - { - "author": "Suzie1", - "description": "175 custom nodes for artists, designers and animators.", - "nickname": "Comfyroll Studio", - "title": "Comfyroll Studio", - "title_aux": "Comfyroll Studio" - } - ], - "https://github.com/Sxela/ComfyWarp": [ - [ - "ExtractOpticalFlow", - "FixedQueue", - "LoadFrame", - "LoadFrameFromDataset", - "LoadFrameFromFolder", - "LoadFramePairFromDataset", - "LoadFrameSequence", - "MakeFrameDataset", - "MixConsistencyMaps", - "OffsetNumber", - "RenderVideo", - "ResizeToFit", - "SaveFrame", - "SchedulerFloat", - "SchedulerInt", - "SchedulerString", - "WarpFrame" - ], - { - "title_aux": "ComfyWarp" - } - ], - "https://github.com/TGu-97/ComfyUI-TGu-utils": [ - [ - "MPNReroute", - "MPNSwitch", - "PNSwitch" - ], - { - "title_aux": "TGu Utilities" - } - ], - "https://github.com/THtianhao/ComfyUI-FaceChain": [ - [ - "FC CropAndPaste", - "FC CropBottom", - "FC CropToOrigin", - "FC FaceDetectCrop", - "FC FaceFusion", - "FC FaceSegAndReplace", - "FC FaceSegment", - "FC MaskOP", - "FC RemoveCannyFace", - "FC ReplaceByMask", - "FC StyleLoraLoad" - ], - { - "title_aux": "ComfyUI-FaceChain" - } - ], - "https://github.com/THtianhao/ComfyUI-Portrait-Maker": [ - [ - "PM_BoxCropImage", - "PM_ColorTransfer", - "PM_ExpandMaskBox", - "PM_FaceFusion", - "PM_FaceShapMatch", - "PM_FaceSkin", - "PM_GetImageInfo", - "PM_ImageResizeTarget", - "PM_ImageScaleShort", - "PM_MakeUpTransfer", - "PM_MaskDilateErode", - "PM_MaskMerge2Image", - "PM_PortraitEnhancement", - "PM_RatioMerge2Image", - "PM_ReplaceBoxImg", - "PM_RetinaFace", - "PM_Similarity", - "PM_SkinRetouching", - "PM_SuperColorTransfer", - "PM_SuperMakeUpTransfer" - ], - { - "title_aux": "ComfyUI-Portrait-Maker" - } - ], - "https://github.com/TJ16th/comfyUI_TJ_NormalLighting": [ - [ - "EulerLightingNode" - ], - { - "title_aux": "comfyUI_TJ_NormalLighting" - } - ], - "https://github.com/TKRLAB/ComfyUI_Prompt_List_JSON": [ - [ - "ComfyUI_Prompt_JSON" - ], - { - "author": "TKRLAB", - "description": "ComfyUI JSON-based prompt management tool.", - "title": "ComfyUI_Prompt_List_JSON", - "title_aux": "Prompt List JSON" - } - ], - "https://github.com/TMElyralab/Comfyui-MusePose": [ - [ - "filenamestring", - "musepose", - "museposealign" - ], - { - "title_aux": "Comfyui-MusePose" - } - ], - "https://github.com/TRI3D-LC/ComfyUI-MiroBoard": [ - [ - "add-image-miro-board" - ], - { - "title_aux": "ComfyUI-MiroBoard" - } - ], - "https://github.com/TRI3D-LC/tri3d-comfyui-nodes": [ - [ - "get_histogram_limits", - "main_light_layer", - "main_scaled_paste", - "simple_rescale_histogram", - "tri3d-HistogramEqualization", - "tri3d-LAB_2_RGB", - "tri3d-RGB_2_LAB", - "tri3d-adjust-neck", - "tri3d-atr-parse", - "tri3d-atr-parse-batch", - "tri3d-bgremove-mega", - "tri3d-clean_mask", - "tri3d-clear-memory", - "tri3d-clipdrop-bgremove-api", - "tri3d-clipdrop-bgreplace-api", - "tri3d-composite-image-splitter", - "tri3d-dwpose", - "tri3d-extract-hand", - "tri3d-extract-masks-batch", - "tri3d-extract-parts-batch", - "tri3d-extract-parts-batch2", - "tri3d-extract-parts-mask-batch", - "tri3d-extract-pascal-parts-batch", - "tri3d-extract_pose_part", - "tri3d-face-recognise", - "tri3d-flexible_color_extract", - "tri3d-float-to-image", - "tri3d-fuzzification", - "tri3d-get_histogram_limits", - "tri3d-get_mean_and_standard_deviation", - "tri3d-get_threshold_for_bg_swap", - "tri3d-image-mask-2-box", - "tri3d-image-mask-box-2-image", - "tri3d-interaction-canny", - "tri3d-levindabhi-cloth-seg", - "tri3d-load-pose-json", - "tri3d-load_AEMatter_Model", - "tri3d-luminosity-match", - "tri3d-main_transparent_background", - "tri3d-photoroom-bgremove-api", - "tri3d-pose-adaption", - "tri3d-pose-to-image", - "tri3d-position-hands", - "tri3d-position-parts-batch", - "tri3d-position-pascal-parts-batch", - "tri3d-recolor-mask", - "tri3d-recolor-mask-LAB_space", - "tri3d-recolor-mask-LAB_space_manual", - "tri3d-recolor-mask-RGB_space", - "tri3d-renormalize_array", - "tri3d-run_AEMatter_inference", - "tri3d-scaled-paste", - "tri3d-scaled-paste_unsafe", - "tri3d-simple_bg_swap", - "tri3d-simple_rescale_histogram", - "tri3d-skin-feathered-padded-mask", - "tri3d-swap-pixels", - "tri3d_H_Stack_Images", - "tri3d_NSFWFilter", - "tri3d_SaveImage_absolute", - "tri3d_SaveText_absolute", - "tri3d_Skip_HeadMask", - "tri3d_Skip_HeadMask_AddNeck", - "tri3d_SmartBox", - "tri3d_Wait_And_Read_File", - "tri3d_extract_facer_mask", - "tri3d_fill_mask", - "tri3d_is_only_trouser", - "tri3d_position_pose_part" - ], - { - "title_aux": "tri3d-comfyui-nodes" - } - ], - "https://github.com/TTPlanetPig/Comfyui_Hunyuan3D": [ - [ - "GifImageViewerNode", - "Hunyuan3DNode", - "SquareImage" - ], - { - "title_aux": "Comfyui_Hunyuan3D" - } - ], - "https://github.com/TTPlanetPig/Comfyui_JC2": [ - [ - "ExtraOptionsNode", - "JoyCaption2", - "JoyCaption2_simple" - ], - { - "title_aux": "Comfyui_JC2" - } - ], - "https://github.com/TTPlanetPig/Comfyui_Object_Migration": [ - [ - "TTP_Expand_And_Mask", - "TTP_text_mix" - ], - { - "title_aux": "Clothing Migration Kit" - } - ], - "https://github.com/TTPlanetPig/Comfyui_TTP_CN_Preprocessor": [ - [ - "TTPlanet_Tile_Preprocessor_GF", - "TTPlanet_Tile_Preprocessor_Simple", - "TTPlanet_Tile_Preprocessor_cufoff", - "TTPlanet_inpainting_Preprecessor" - ], - { - "title_aux": "for comfyui image proprocessor" - } - ], - "https://github.com/TTPlanetPig/Comfyui_TTP_Toolset": [ - [ - "TTP_CoordinateSplitter", - "TTP_Expand_And_Mask", - "TTP_Image_Assy", - "TTP_Image_Tile_Batch", - "TTP_Tile_image_size", - "TTP_condsetarea_merge", - "TTP_condsetarea_merge_test", - "TTP_condtobatch", - "TTP_text_mix", - "TTPlanet_Tile_Preprocessor_Simple", - "TeaCacheHunyuanVideoSampler" - ], - { - "title_aux": "Comfyui_TTP_Toolset" - } - ], - "https://github.com/TW-CUI/TW-CUI-Util": [ - [ - "TWCUI_Util_CommonSDXLResolutions", - "TWCUI_Util_FloatLiteral", - "TWCUI_Util_GenerationParameters", - "TWCUI_Util_GenerationPrompts", - "TWCUI_Util_IntLiteral", - "TWCUI_Util_ModelVAELORALoader", - "TWCUI_Util_ModelVAELoader", - "TWCUI_Util_MultilineStringLiteral", - "TWCUI_Util_SaveImage", - "TWCUI_Util_SaveImageAdvanced", - "TWCUI_Util_StringLiteral" - ], - { - "title_aux": "TW-CUI-Util" - } - ], - "https://github.com/TZOOTZ/ComfyUI-TZOOTZ_VHS": [ - [ - "TZOOTZ_VHSNode" - ], - { - "title_aux": "TZOOTZ VHS Effect Node" - } - ], - "https://github.com/TaiTair/comfyui-simswap": [ - [ - "Simswap", - "SimswapBuildFaceModel", - "SimswapFaceSwapOpt", - "SimswapImageDublicator", - "SimswapLoadFaceModel", - "SimswapMaskHelper", - "SimswapOptions", - "SimswapRestoreFace", - "SimswapSaveFaceModel" - ], - { - "title_aux": "Simswap Node for ComfyUI" - } - ], - "https://github.com/Taremin/comfyui-prompt-extranetworks": [ - [ - "PromptExtraNetworks" - ], - { - "title_aux": "ComfyUI Prompt ExtraNetworks" - } - ], - "https://github.com/Taremin/comfyui-string-tools": [ - [ - "StringToolsBalancedChoice", - "StringToolsConcat", - "StringToolsRandomChoice", - "StringToolsString", - "StringToolsText" - ], - { - "title_aux": "ComfyUI String Tools" - } - ], - "https://github.com/Taremin/webui-monaco-prompt": [ - [ - "WebuiMonacoPromptFind", - "WebuiMonacoPromptReplace" - ], - { - "title_aux": "WebUI Monaco Prompt" - } - ], - "https://github.com/TeaCrab/ComfyUI-TeaNodes": [ - [ - "TC_ColorFill", - "TC_CropTo", - "TC_EqualizeCLAHE", - "TC_ImageResize", - "TC_ImageScale", - "TC_KorniaGamma", - "TC_RandomColorFill", - "TC_SizeApproximation" - ], - { - "title_aux": "ComfyUI-TeaNodes" - } - ], - "https://github.com/TechnoByteJS/ComfyUI-TechNodes": [ - [ - "ClipQuant", - "MBW Layers String", - "ModelQuant", - "SD1 MBW Layers", - "SD1 MBW Layers Binary", - "SDNext Merge", - "SDXL MBW Layers", - "SDXL MBW Layers Binary", - "VAE Merge", - "VAEQuant", - "VAERepeat" - ], - { - "title_aux": "TechNodes" - } - ], - "https://github.com/TemryL/ComfyS3": [ - [ - "DownloadFileS3", - "LoadImageS3", - "SaveImageS3", - "SaveVideoFilesS3", - "UploadFileS3" - ], - { - "title_aux": "ComfyS3" - } - ], - "https://github.com/TemryL/ComfyUI-IDM-VTON": [ - [ - "IDM-VTON", - "PipelineLoader" - ], - { - "title_aux": "ComfyUI-IDM-VTON [WIP]" - } - ], - "https://github.com/TencentQQGYLab/ComfyUI-ELLA": [ - [ - "CombineClipEllaEmbeds", - "ConcatConditionEllaEmbeds", - "ConditionToEllaEmbeds", - "ELLALoader", - "EllaApply", - "EllaCombineEmbeds", - "EllaEncode", - "EllaTextEncode", - "SetEllaTimesteps", - "T5TextEncode #ELLA", - "T5TextEncoderLoader #ELLA" - ], - { - "title_aux": "ComfyUI-ELLA" - } - ], - "https://github.com/TheBarret/ZSuite": [ - [ - "ZSuite: Prompter", - "ZSuite: RF Noise", - "ZSuite: SeedMod" - ], - { - "title_aux": "ZSuite" - } - ], - "https://github.com/TheBill2001/comfyui-upscale-by-model": [ - [ - "UpscaleImageByUsingModel" - ], - { - "author": "Tr\u1ea7n Nam Tu\u1ea5n", - "description": "This custom node allow upscaling an image by a factor using a model.", - "nickname": "Upscale Image By (Using Model)", - "title": "Upscale Image By (Using Model)", - "title_aux": "comfyui-upscale-by-model" - } - ], - "https://github.com/TheMistoAI/ComfyUI-Anyline": [ - [ - "AnyLinePreprocessor" - ], - { - "title_aux": "Anyline" - } - ], - "https://github.com/ThepExcel/aiangelgallery-comfyui": [ - [ - "ThepExcel_AiAngel_MultilineTextChoiceNode" - ], - { - "title_aux": "Multiline Text Choice Node for ComfyUI" - } - ], - "https://github.com/ThereforeGames/ComfyUI-Unprompted": [ - [ - "Unprompted", - "UnpromptedSetRack" - ], - { - "title_aux": "ComfyUI-Unprompted" - } - ], - "https://github.com/TinyTerra/ComfyUI_tinyterraNodes": [ - [ - "ttN KSampler_v2", - "ttN advPlot combo", - "ttN advPlot images", - "ttN advPlot range", - "ttN advPlot string", - "ttN advanced xyPlot", - "ttN compareInput", - "ttN concat", - "ttN conditioning", - "ttN debugInput", - "ttN float", - "ttN hiresfixScale", - "ttN imageOutput", - "ttN imageREMBG", - "ttN int", - "ttN multiModelMerge", - "ttN pipe2BASIC", - "ttN pipe2DETAILER", - "ttN pipeEDIT", - "ttN pipeEncodeConcat", - "ttN pipeIN", - "ttN pipeKSampler", - "ttN pipeKSamplerAdvanced", - "ttN pipeKSamplerAdvanced_v2", - "ttN pipeKSamplerSDXL", - "ttN pipeKSamplerSDXL_v2", - "ttN pipeKSampler_v2", - "ttN pipeLoader", - "ttN pipeLoaderSDXL", - "ttN pipeLoaderSDXL_v2", - "ttN pipeLoader_v2", - "ttN pipeLoraStack", - "ttN pipeOUT", - "ttN seed", - "ttN text", - "ttN text3BOX_3WAYconcat", - "ttN text7BOX_concat", - "ttN textCycleLine", - "ttN textDebug", - "ttN textOutput", - "ttN tinyLoader", - "ttN xyPlot" - ], - { - "author": "tinyterra", - "description": "This extension offers extensive xyPlot, various pipe nodes, fullscreen image viewer based on node history, dynamic widgets, interface customization, and more.", - "nickname": "\ud83c\udf0f", - "nodename_pattern": "^ttN ", - "title": "tinyterraNodes", - "title_aux": "ComfyUI_tinyterraNodes" - } - ], - "https://github.com/Tlant/ComfyUI-OllamaPromptsGeneratorTlant": [ - [ - "LoadRandomTxtFileTlant", - "OllamaPromptsGeneratorTlant" - ], - { - "title_aux": "ComfyUI-OllamaPromptsGeneratorTlant" - } - ], - "https://github.com/Trgtuan10/ComfyUI_YoloSegment_Mask": [ - [ - "Object Mask" - ], - { - "title_aux": "ComfyUI_YoloSegment_Mask" - } - ], - "https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler": [ - [ - "menus" - ], - { - "title_aux": "ComfyUI_MileHighStyler" - } - ], - "https://github.com/Tropfchen/ComfyUI-Embedding_Picker": [ - [ - "EmbeddingPicker" - ], - { - "title_aux": "Embedding Picker" - } - ], - "https://github.com/Tropfchen/ComfyUI-yaResolutionSelector": [ - [ - "YARS", - "YARSAdv" - ], - { - "title_aux": "YARS: Yet Another Resolution Selector" - } - ], - "https://github.com/Trung0246/ComfyUI-0246": [ - [ - "0246.Beautify", - "0246.BoxRange", - "0246.CastReroute", - "0246.Cloud", - "0246.Count", - "0246.Highway", - "0246.HighwayBatch", - "0246.Hold", - "0246.Hub", - "0246.Junction", - "0246.JunctionBatch", - "0246.Loop", - "0246.Merge", - "0246.Meta", - "0246.RandomInt", - "0246.Script", - "0246.ScriptNode", - "0246.ScriptPile", - "0246.ScriptRule", - "0246.Stringify", - "0246.Switch", - "0246.Tag" - ], - { - "author": "Trung0246", - "description": "Random nodes for ComfyUI I made to solve my struggle with ComfyUI (ex: pipe, process). Have varying quality.", - "nickname": "ComfyUI-0246", - "title": "ComfyUI-0246", - "title_aux": "ComfyUI-0246" - } - ], - "https://github.com/Ttl/ComfyUi_NNLatentUpscale": [ - [ - "NNLatentUpscale" - ], - { - "preemptions": [ - "NNLatentUpscale" - ], - "title_aux": "ComfyUI Neural Network Latent Upscale" - } - ], - "https://github.com/TylerZoro/SD3-Scaling": [ - [ - "SD3ImageScaleToTotalPixels" - ], - { - "title_aux": "SD3-Scaling" - } - ], - "https://github.com/Umikaze-job/select_folder_path_easy": [ - [ - "SelectFolderPathEasy" - ], - { - "title_aux": "select_folder_path_easy" - } - ], - "https://github.com/VAST-AI-Research/ComfyUI-Tripo": [ - [ - "TripoAPIDraft", - "TripoAnimateRetargetNode", - "TripoAnimateRigNode", - "TripoConvertNode", - "TripoGLBViewer", - "TripoRefineModel", - "TripoTextureModel" - ], - { - "title_aux": "Tripo for ComfyUI" - } - ], - "https://github.com/Vaibhavs10/ComfyUI-DDUF": [ - [ - "DDUFLoader", - "DiffusersModelMakeup", - "DiffusersPipelineLoader", - "DiffusersSchedulerLoader", - "DiffusersSimpleSampler" - ], - { - "title_aux": "ComfyUI-DDUF" - } - ], - "https://github.com/VangengLab/ComfyUI-LivePortrait_v2": [ - [ - "LivePortraitProcess_animal" - ], - { - "title_aux": "ComfyUI-LivePortrait_v2" - } - ], - "https://github.com/VangengLab/ComfyUI-LivePortrait_v3": [ - [ - "LivePortraitp2p" - ], - { - "title_aux": "ComfyUI-LivePortrait_v3" - } - ], - "https://github.com/VertexStudio/roblox-comfyui-nodes": [ - [ - "FirstLetterNode", - "FlowNodes", - "MirrorEffectNode", - "SaveImageNode", - "ScaleImageNode", - "SwitchImageNode", - "SwitchTextNode", - "TextToImageNode" - ], - { - "title_aux": "roblox-comfyui-nodes" - } - ], - "https://github.com/VikramxD/VEnhancer-ComfyUI-Wrapper": [ - [ - "MultiGPUInference", - "MultiGPUVEnhancerLoader", - "SingleGPUInference", - "SingleGPUVEnhancerLoader", - "VideoLoader", - "VideoSaver" - ], - { - "title_aux": "VEnhancer ComfyUI Extension" - } - ], - "https://github.com/Visionatrix/ComfyUI-Visionatrix": [ - [ - "VixDynamicLoraDefinition", - "VixUiCheckbox", - "VixUiCheckboxLogic", - "VixUiList", - "VixUiListLogic", - "VixUiPrompt", - "VixUiRangeFloat", - "VixUiRangeInt", - "VixUiRangeScaleFloat", - "VixUiWorkflowMetadata" - ], - { - "title_aux": "ComfyUI-Visionatrix" - } - ], - "https://github.com/VrchStudio/comfyui-web-viewer": [ - [ - "VrchAnyOSCControlNode", - "VrchAudioGenresNode", - "VrchAudioRecorderNode", - "VrchAudioSaverNode", - "VrchBooleanKeyControlNode", - "VrchChannelOSCControlNode", - "VrchChannelX4OSCControlNode", - "VrchDelayOSCControlNode", - "VrchFloatKeyControlNode", - "VrchFloatOSCControlNode", - "VrchImageFlipBookWebViewerNode", - "VrchImageSaverNode", - "VrchImageSwitchOSCControlNode", - "VrchImageWebViewerNode", - "VrchInstantQueueKeyControlNode", - "VrchIntKeyControlNode", - "VrchIntOSCControlNode", - "VrchJsonUrlLoaderNode", - "VrchOSCControlSettingsNode", - "VrchSwitchOSCControlNode", - "VrchTextConcatOSCControlNode", - "VrchTextKeyControlNode", - "VrchTextSwitchOSCControlNode", - "VrchVideoWebViewerNode", - "VrchWebViewerNode", - "VrchXYOSCControlNode", - "VrchXYZOSCControlNode" - ], - { - "title_aux": "ComfyUI Web Viewer" - } - ], - "https://github.com/VykosX/ControlFlowUtils": [ - [ - "Cycle", - "CycleContinue", - "CycleEnd", - "DataMonitor", - "FallbackAnyBatch", - "FallbackImagePreviewer", - "FolderSearch", - "GarbageCollector", - "HaltExecution", - "IfConditionSelector", - "ImageResolutionAdjust", - "InvertCondition", - "LoopClose", - "LoopOpen", - "LoraSelector", - "MemoryStorage", - "ModelSelector", - "NullInput", - "NullOutput", - "ReadTextFile", - "SaveTextFile", - "SimpleToggle", - "StringOperation", - "UniversalSwitch", - "UnloadModels", - "VAESelector", - "Wait" - ], - { - "title_aux": "ControlFlowUtils" - } - ], - "https://github.com/WASasquatch/ComfyUI_Preset_Merger": [ - [ - "Preset_Model_Merge" - ], - { - "title_aux": "ComfyUI Preset Merger" - } - ], - "https://github.com/WASasquatch/FreeU_Advanced": [ - [ - "FreeU (Advanced)", - "FreeU_V2 (Advanced)" - ], - { - "title_aux": "FreeU_Advanced" - } - ], - "https://github.com/WASasquatch/PPF_Noise_ComfyUI": [ - [ - "Blend Latents (PPF Noise)", - "Cross-Hatch Power Fractal (PPF Noise)", - "Images as Latents (PPF Noise)", - "Perlin Power Fractal Latent (PPF Noise)" - ], - { - "title_aux": "PPF_Noise_ComfyUI" - } - ], - "https://github.com/WASasquatch/PowerNoiseSuite": [ - [ - "Blend Latents (PPF Noise)", - "Cross-Hatch Power Fractal (PPF Noise)", - "Cross-Hatch Power Fractal Settings (PPF Noise)", - "Images as Latents (PPF Noise)", - "Latent Adjustment (PPF Noise)", - "Latents to CPU (PPF Noise)", - "Linear Cross-Hatch Power Fractal (PPF Noise)", - "Perlin Power Fractal Latent (PPF Noise)", - "Perlin Power Fractal Settings (PPF Noise)", - "Power KSampler Advanced (PPF Noise)", - "Power-Law Noise (PPF Noise)" - ], - { - "title_aux": "Power Noise Suite for ComfyUI" - } - ], - "https://github.com/WASasquatch/WAS_Extras": [ - [ - "BLVAEEncode", - "CLIPTextEncodeList", - "CLIPTextEncodeSequence2", - "ConditioningBlend", - "DebugInput", - "KSamplerSeq", - "KSamplerSeq2", - "VAEEncodeForInpaint (WAS)", - "VividSharpen" - ], - { - "title_aux": "WAS_Extras" - } - ], - "https://github.com/WASasquatch/was-node-suite-comfyui": [ - [ - "BLIP Analyze Image", - "BLIP Model Loader", - "Blend Latents", - "Boolean To Text", - "Bounded Image Blend", - "Bounded Image Blend with Mask", - "Bounded Image Crop", - "Bounded Image Crop with Mask", - "Bus Node", - "CLIP Input Switch", - "CLIP Vision Input Switch", - "CLIPSEG2", - "CLIPSeg Batch Masking", - "CLIPSeg Masking", - "CLIPSeg Model Loader", - "CLIPTextEncode (BlenderNeko Advanced + NSP)", - "CLIPTextEncode (NSP)", - "Cache Node", - "Checkpoint Loader", - "Checkpoint Loader (Simple)", - "Conditioning Input Switch", - "Constant Number", - "Control Net Model Input Switch", - "Convert Masks to Images", - "Create Grid Image", - "Create Grid Image from Batch", - "Create Morph Image", - "Create Morph Image from Path", - "Create Video from Path", - "Debug Number to Console", - "Dictionary to Console", - "Diffusers Hub Model Down-Loader", - "Diffusers Model Loader", - "Export API", - "HSL to Hex", - "Hex to HSL", - "Image Analyze", - "Image Aspect Ratio", - "Image Batch", - "Image Blank", - "Image Blend", - "Image Blend by Mask", - "Image Blending Mode", - "Image Bloom Filter", - "Image Bounds", - "Image Bounds to Console", - "Image Canny Filter", - "Image Chromatic Aberration", - "Image Color Palette", - "Image Crop Face", - "Image Crop Location", - "Image Crop Square Location", - "Image Displacement Warp", - "Image Dragan Photography Filter", - "Image Edge Detection Filter", - "Image Film Grain", - "Image Filter Adjustments", - "Image Flip", - "Image Generate Gradient", - "Image Gradient Map", - "Image High Pass Filter", - "Image History Loader", - "Image Input Switch", - "Image Levels Adjustment", - "Image Load", - "Image Lucy Sharpen", - "Image Median Filter", - "Image Mix RGB Channels", - "Image Monitor Effects Filter", - "Image Nova Filter", - "Image Padding", - "Image Paste Crop", - "Image Paste Crop by Location", - "Image Paste Face", - "Image Perlin Noise", - "Image Perlin Power Fractal", - "Image Pixelate", - "Image Power Noise", - "Image Rembg (Remove Background)", - "Image Remove Background (Alpha)", - "Image Remove Color", - "Image Resize", - "Image Rotate", - "Image Rotate Hue", - "Image SSAO (Ambient Occlusion)", - "Image SSDO (Direct Occlusion)", - "Image Save", - "Image Seamless Texture", - "Image Select Channel", - "Image Select Color", - "Image Send HTTP", - "Image Shadows and Highlights", - "Image Size to Number", - "Image Stitch", - "Image Style Filter", - "Image Threshold", - "Image Tiled", - "Image Transpose", - "Image Voronoi Noise Filter", - "Image fDOF Filter", - "Image to Latent Mask", - "Image to Noise", - "Image to Seed", - "Images to Linear", - "Images to RGB", - "Inset Image Bounds", - "Integer place counter", - "KSampler (WAS)", - "KSampler Cycle", - "Latent Batch", - "Latent Input Switch", - "Latent Noise Injection", - "Latent Size to Number", - "Latent Upscale by Factor (WAS)", - "Load Cache", - "Load Image Batch", - "Load Lora", - "Load Text File", - "Logic Boolean", - "Logic Boolean Primitive", - "Logic Comparison AND", - "Logic Comparison OR", - "Logic Comparison XOR", - "Logic NOT", - "Lora Input Switch", - "Lora Loader", - "Mask Arbitrary Region", - "Mask Batch", - "Mask Batch to Mask", - "Mask Ceiling Region", - "Mask Crop Dominant Region", - "Mask Crop Minority Region", - "Mask Crop Region", - "Mask Dilate Region", - "Mask Dominant Region", - "Mask Erode Region", - "Mask Fill Holes", - "Mask Floor Region", - "Mask Gaussian Region", - "Mask Invert", - "Mask Minority Region", - "Mask Paste Region", - "Mask Rect Area", - "Mask Rect Area (Advanced)", - "Mask Smooth Region", - "Mask Threshold Region", - "Masks Add", - "Masks Combine Batch", - "Masks Combine Regions", - "Masks Subtract", - "MiDaS Depth Approximation", - "MiDaS Mask Image", - "MiDaS Model Loader", - "Model Input Switch", - "Number Counter", - "Number Input Condition", - "Number Input Switch", - "Number Multiple Of", - "Number Operation", - "Number PI", - "Number to Float", - "Number to Int", - "Number to Seed", - "Number to String", - "Number to Text", - "Prompt Multiple Styles Selector", - "Prompt Styles Selector", - "Random Number", - "SAM Image Mask", - "SAM Model Loader", - "SAM Parameters", - "SAM Parameters Combine", - "Samples Passthrough (Stat System)", - "Save Text File", - "Seed", - "String to Text", - "Tensor Batch to Image", - "Text Add Token by Input", - "Text Add Tokens", - "Text Compare", - "Text Concatenate", - "Text Contains", - "Text Dictionary Convert", - "Text Dictionary Get", - "Text Dictionary Keys", - "Text Dictionary New", - "Text Dictionary To Text", - "Text Dictionary Update", - "Text File History Loader", - "Text Find", - "Text Find and Replace", - "Text Find and Replace Input", - "Text Find and Replace by Dictionary", - "Text Input Switch", - "Text List", - "Text List Concatenate", - "Text List to Text", - "Text Load Line From File", - "Text Multiline", - "Text Multiline (Code Compatible)", - "Text Parse A1111 Embeddings", - "Text Parse Noodle Soup Prompts", - "Text Parse Tokens", - "Text Random Line", - "Text Random Prompt", - "Text Shuffle", - "Text Sort", - "Text String", - "Text String Truncate", - "Text to Conditioning", - "Text to Console", - "Text to Number", - "Text to String", - "True Random.org Number Generator", - "Upscale Model Loader", - "Upscale Model Switch", - "VAE Input Switch", - "Video Dump Frames", - "Write to GIF", - "Write to Video", - "unCLIP Checkpoint Loader" - ], - { - "title_aux": "WAS Node Suite" - } - ], - "https://github.com/WUYUDING2583/ComfyUI-Save-Image-Callback": [ - [ - "Save Image With Callback" - ], - { - "title_aux": "Save Image With Callback" - } - ], - "https://github.com/WX-NPS1598/ComfyUI-Auto_Crop_By_NPS": [ - [ - "AutoCropByNPS" - ], - { - "title_aux": "Auto Crop By NPS" - } - ], - "https://github.com/WaddingtonHoldings/ComfyUI-InstaSD": [ - [ - "InstaCBoolean", - "InstaCFloat", - "InstaCInteger", - "InstaCLoadImageFromS3", - "InstaCLoraLoader", - "InstaCSaveImageToS3", - "InstaCSeed", - "InstaCText", - "InstaCTextML", - "InstaLoadImageLocal", - "InstaPromptMultipleStyleSelector", - "InstaPromptStyleSelector", - "LoadVideo", - "PreViewVideo" - ], - { - "title_aux": "InstaSD nodes for ComfyUI" - } - ], - "https://github.com/WainWong/ComfyUI-Loop-image": [ - [ - "CyberEve_BatchImageLoopClose", - "CyberEve_BatchImageLoopOpen", - "CyberEve_LoopIndexSwitch", - "CyberEve_MaskMerge", - "CyberEve_MaskSegmentation", - "CyberEve_SingleImageLoopClose", - "CyberEve_SingleImageLoopOpen" - ], - { - "title_aux": "ComfyUI-Loop-image" - } - ], - "https://github.com/Wakfull33/ComfyUI-SaveImageCivitAI": [ - [ - "SaveCivitai" - ], - { - "title_aux": "ComfyUI-SaveImageCivitAI" - } - ], - "https://github.com/WangPengxing/ComfyUI_WPX_Node": [ - [ - "AnimalContour", - "AnimalContourSilhouette", - "CircleContour", - "DetermineRowsAndCols", - "PenetrateStyle", - "RectangleContour", - "SplitMaskElements", - "SplitStickers" - ], - { - "title_aux": "ComfyUI WPX Nodes" - } - ], - "https://github.com/WebDev9000/WebDev9000-Nodes": [ - [ - "IgnoreBraces", - "SettingsSwitch" - ], - { - "title_aux": "WebDev9000-Nodes" - } - ], - "https://github.com/Wenaka2004/ComfyUI-TagClassifier": [ - [ - "LLMProcessingNode" - ], - { - "title_aux": "ComfyUI-TagClassifier" - } - ], - "https://github.com/Wicloz/ComfyUI-Simply-Nodes": [ - [ - "WF_ConditionalLoraLoader", - "WF_FixupPixelArt", - "WF_MultilineText", - "WF_RandomStyle", - "WF_ResolutionSDXL", - "WF_TextFlow" - ], - { - "title_aux": "ComfyUI Simply Nodes" - } - ], - "https://github.com/X-T-E-R/ComfyUI-EasyCivitai-XTNodes": [ - [ - "CheckpointLoaderSimpleWithPreviews", - "CivitaiCheckpointLoaderSimple", - "CivitaiLoraLoader", - "CivitaiLoraLoaderStacked", - "CivitaiLoraLoaderStackedAdvanced", - "LoraLoaderStackedAdvancedWithPreviews", - "LoraLoaderStackedWithPreviews", - "LoraLoaderWithPreviews", - "XTNodesCleanPrompt", - "XTNodesPromptConcatenate" - ], - { - "title_aux": "ComfyUI Easy Civitai (XTNodes)" - } - ], - "https://github.com/XLabs-AI/x-flux-comfyui": [ - [ - "ApplyAdvancedFluxControlNet", - "ApplyAdvancedFluxIPAdapter", - "ApplyFluxControlNet", - "ApplyFluxIPAdapter", - "FluxLoraLoader", - "LoadFluxControlNet", - "LoadFluxIPAdapter", - "XlabsSampler" - ], - { - "title_aux": "x-flux-comfyui" - } - ], - "https://github.com/Xclbr7/ComfyUI-Merlin": [ - [ - "GeminiPromptExpander", - "Magic Photo Prompter \ud83e\ude84" - ], - { - "title_aux": "ComfyUI-Merlin: Magic Photo Prompter" - } - ], - "https://github.com/Xiangyu-CAS/HandFixer": [ - [ - "MediapipeHandNode" - ], - { - "title_aux": "HandFixer" - } - ], - "https://github.com/XieChengYuan/comfyui_kj": [ - [ - "cpm_textInput", - "sdCpm" - ], - { - "title_aux": "comfyui_kj" - } - ], - "https://github.com/XmYx/deforum-comfy-nodes": [ - [ - "DeforumAddNoiseNode", - "DeforumAnimParamsNode", - "DeforumAreaPromptNode", - "DeforumBaseParamsNode", - "DeforumCacheLatentNode", - "DeforumCadenceNode", - "DeforumCadenceParamsNode", - "DeforumColorMatchNode", - "DeforumColorParamsNode", - "DeforumConditioningBlendNode", - "DeforumDepthParamsNode", - "DeforumDiffusionParamsNode", - "DeforumFILMInterpolationNode", - "DeforumFrameWarpNode", - "DeforumGetCachedLatentNode", - "DeforumHybridMotionNode", - "DeforumHybridParamsNode", - "DeforumHybridScheduleNode", - "DeforumIteratorNode", - "DeforumKSampler", - "DeforumLoadVideo", - "DeforumNoiseParamsNode", - "DeforumPromptNode", - "DeforumSeedNode", - "DeforumSetVAEDownscaleRatioNode", - "DeforumSimpleInterpolationNode", - "DeforumSingleSampleNode", - "DeforumTranslationParamsNode", - "DeforumVideoSaveNode" - ], - { - "title_aux": "Deforum Nodes" - } - ], - "https://github.com/Xyem/Xycuno-Oobabooga": [ - [ - "Oobabooga" - ], - { - "title_aux": "Xycuno Oobabooga" - } - ], - "https://github.com/YMC-GitHub/ymc-node-suite-comfyui": [ - [ - "canvas-util-cal-size", - "conditioning-util-input-switch", - "cutoff-region-util", - "hks-util-cal-denoise-step", - "img-util-get-image-size", - "img-util-switch-input-image", - "io-image-save", - "io-text-save", - "io-util-file-list-get", - "io-util-file-list-get-text", - "number-util-random-num", - "pipe-util-to-basic-pipe", - "region-util-get-by-center-and-size", - "region-util-get-by-lt", - "region-util-get-crop-location-from-center-size-text", - "region-util-get-pad-out-location-by-size", - "text-preset-colors", - "text-util-join-text", - "text-util-loop-text", - "text-util-path-list", - "text-util-prompt-add-prompt", - "text-util-prompt-adv-dup", - "text-util-prompt-adv-search", - "text-util-prompt-del", - "text-util-prompt-dup", - "text-util-prompt-join", - "text-util-prompt-search", - "text-util-prompt-shuffle", - "text-util-prompt-std", - "text-util-prompt-unweight", - "text-util-random-text", - "text-util-search-text", - "text-util-show-text", - "text-util-switch-text", - "xyz-util-txt-to-int" - ], - { - "title_aux": "ymc-node-suite-comfyui" - } - ], - "https://github.com/YOUR-WORST-TACO/ComfyUI-TacoNodes": [ - [ - "Example", - "TacoAnimatedLoader", - "TacoGifMaker", - "TacoImg2ImgAnimatedLoader", - "TacoImg2ImgAnimatedProcessor", - "TacoLatent" - ], - { - "title_aux": "ComfyUI-TacoNodes" - } - ], - "https://github.com/Yanick112/ComfyUI-ToSVG": [ - [ - "ConvertRasterToVectorBW", - "ConvertRasterToVectorColor", - "ConvertVectorToRaster", - "SaveSVG" - ], - { - "title_aux": "ComfyUI-ToSVG" - } - ], - "https://github.com/YarvixPA/ComfyUI-NeuralMedia": [ - [ - "ApplyControlNet", - "InpaintConditioningNode", - "LoadImagesFromFolderNode", - "MultiControlnet", - "MultiControlnetApply", - "MultiControlnetUnion", - "RemoveBackgroundNode", - "SDXLTextEncoderSimpleNode", - "SaveCaptionsImages", - "SaveImageNode", - "StyleModelApplyAdvanced", - "StyleModelApplySimple", - "TextFieldNode", - "TileCheckpointPatchNode", - "UpscaleImageWithModel", - "VTracerImageVectorizerNode" - ], - { - "title_aux": "ComfyUI-NeuralMedia" - } - ], - "https://github.com/YinBailiang/MergeBlockWeighted_fo_ComfyUI": [ - [ - "MergeBlockWeighted" - ], - { - "title_aux": "MergeBlockWeighted_fo_ComfyUI" - } - ], - "https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh": [ - [ - "Apply Gradient Color", - "Chat LLaMa Mesh", - "Visualize Mesh" - ], - { - "title_aux": "ComfyUI-LLaMA-Mesh" - } - ], - "https://github.com/Yuan-ManX/ComfyUI-SoundHub": [ - [ - "Load Audio", - "Preview Audio", - "Save Audio" - ], - { - "title_aux": "ComfyUI-SoundHub" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR": [ - [ - "APISR_Lterative_Zho", - "APISR_ModelLoader_Zho", - "APISR_Zho" - ], - { - "title_aux": "APISR IN COMFYUI" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Animated-optical-illusions": [ - [ - "AOI_Processing_Zho" - ], - { - "title_aux": "ComfyUI-Animated-optical-illusions" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-ArtGallery": [ - [ - "ArtGallery_Zho", - "ArtistsImage_Zho", - "CamerasImage_Zho", - "FilmsImage_Zho", - "MovementsImage_Zho", - "StylesImage_Zho" - ], - { - "title_aux": "ComfyUI-ArtGallery" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BRIA_AI-RMBG": [ - [ - "BRIA_RMBG_ModelLoader_Zho", - "BRIA_RMBG_Zho" - ], - { - "title_aux": "ComfyUI-BRIA_AI-RMBG" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-DepthFM": [ - [ - "DepthFM_Literative_Zho", - "DepthFM_ModelLoader_Zho", - "DepthFM_Zho" - ], - { - "title_aux": "DepthFM IN COMFYUI" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Gemini": [ - [ - "ConcatText_Zho", - "DisplayText_Zho", - "Gemini_15P_API_S_Advance_Zho", - "Gemini_15P_API_S_Chat_Advance_Zho", - "Gemini_API_Chat_Zho", - "Gemini_API_S_Chat_Zho", - "Gemini_API_S_Vsion_ImgURL_Zho", - "Gemini_API_S_Zho", - "Gemini_API_Vsion_ImgURL_Zho", - "Gemini_API_Zho", - "Gemini_FileUpload_API_S_Zho", - "Gemini_File_API_S_Zho" - ], - { - "title_aux": "ComfyUI-Gemini" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-InstantID": [ - [ - "IDBaseModelLoader_fromhub", - "IDBaseModelLoader_local", - "IDControlNetLoader", - "IDGenerationNode", - "ID_Prompt_Styler", - "InsightFaceLoader_Zho", - "Ipadapter_instantidLoader" - ], - { - "title_aux": "ComfyUI-InstantID" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Phi-3-mini": [ - [ - "Phi3mini_4k_Chat_Zho", - "Phi3mini_4k_ModelLoader_Zho", - "Phi3mini_4k_Zho" - ], - { - "title_aux": "Phi-3-mini in ComfyUI" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker-ZHO": [ - [ - "BaseModel_Loader_fromhub", - "BaseModel_Loader_local", - "LoRALoader", - "NEW_PhotoMaker_Generation", - "PhotoMakerAdapter_Loader_fromhub", - "PhotoMakerAdapter_Loader_local", - "PhotoMaker_Generation", - "Prompt_Styler", - "Ref_Image_Preprocessing" - ], - { - "title_aux": "ComfyUI PhotoMaker (ZHO)" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PixArt-alpha-Diffusers": [ - [ - "PA_BaseModelLoader_fromhub_Zho", - "PA_Generation_Zho", - "PA_Styler_Zho" - ], - { - "title_aux": "ComfyUI-PixArt-alpha-Diffusers" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Q-Align": [ - [ - "QAlign_Zho" - ], - { - "title_aux": "ComfyUI-Q-Align" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen": [ - [ - "Qwen2_Chat_Zho", - "Qwen2_ModelLoader_Zho", - "Qwen2_Zho" - ], - { - "title_aux": "Qwen-2.5 in ComfyUI" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen-VL-API": [ - [ - "QWenVL_API_S_Multi_Zho", - "QWenVL_API_S_Zho" - ], - { - "title_aux": "ComfyUI-Qwen-VL-API" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO": [ - [ - "SVD_Aspect_Ratio_Zho", - "SVD_Steps_MotionStrength_Seed_Zho", - "SVD_Styler_Zho" - ], - { - "title_aux": "ComfyUI-SVD-ZHO (WIP)" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SegMoE": [ - [ - "SMoE_Generation_Zho", - "SMoE_ModelLoader_Zho" - ], - { - "title_aux": "ComfyUI SegMoE" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Text_Image-Composite": [ - [ - "AlphaChanelAddByMask", - "ImageCompositeBy_BG_Zho", - "ImageCompositeBy_Zho", - "ImageComposite_BG_Zho", - "ImageComposite_Zho", - "RGB_Image_Zho", - "Text_Image_Frame_Zho", - "Text_Image_Multiline_Zho", - "Text_Image_Zho" - ], - { - "title_aux": "ComfyUI-Text_Image-Composite [WIP]" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-UltraEdit-ZHO": [ - [ - "UltraEdit_Generation_Zho", - "UltraEdit_ModelLoader_Zho", - "UltraEdit_ModelLoader_local_Zho" - ], - { - "title_aux": "ComfyUI-UltraEdit-ZHO" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-YoloWorld-EfficientSAM": [ - [ - "ESAM_ModelLoader_Zho", - "Yoloworld_ESAM_DetectorProvider_Zho", - "Yoloworld_ESAM_Zho", - "Yoloworld_ModelLoader_Zho" - ], - { - "title_aux": "ComfyUI YoloWorld-EfficientSAM" - } - ], - "https://github.com/ZHO-ZHO-ZHO/comfyui-portrait-master-zh-cn": [ - [ - "PortraitMaster_\u4e2d\u6587\u7248" - ], - { - "title_aux": "comfyui-portrait-master-zh-cn" - } - ], - "https://github.com/ZZXYWQ/ComfyUI-ZZXYWQ": [ - [ - "StreamRecorder", - "VideoFormatConverter", - "ZZX_PaintsUndo" - ], - { - "title_aux": "ZZX Nodes" - } - ], - "https://github.com/ZaneA/ComfyUI-ImageReward": [ - [ - "ImageRewardLoader", - "ImageRewardScore" - ], - { - "title_aux": "ImageReward" - } - ], - "https://github.com/ZeDarkAdam/ComfyUI-Embeddings-Tools": [ - [ - "EmbeddingsNameLoader", - "EmbendingList" - ], - { - "title_aux": "ComfyUI-Embeddings-Tools" - } - ], - "https://github.com/Zeks/comfyui-rapidfire": [ - [ - "CachedCheckpoint", - "CsvWriterNode", - "ImmatureImageCounter", - "ImmatureImageDataLoader" - ], - { - "title_aux": "comfyui-rapidfire" - } - ], - "https://github.com/a-und-b/ComfyUI_Delay": [ - [ - "Add Delay" - ], - { - "title_aux": "ComfyUI_Delay" - } - ], - "https://github.com/a-und-b/ComfyUI_JSON_Helper": [ - [ - "JSONStringToObjectNode" - ], - { - "title_aux": "ComfyUI_JSON_Helper" - } - ], - "https://github.com/a-und-b/ComfyUI_LoRA_from_URL": [ - [ - "Load LoRA From URL" - ], - { - "title_aux": "ComfyUI_LoRA_from_URL" - } - ], - "https://github.com/a1lazydog/ComfyUI-AudioScheduler": [ - [ - "AmplitudeToGraph", - "AmplitudeToNumber", - "AudioToAmplitudeGraph", - "AudioToAudioData", - "AudioToFFTs", - "BatchAmplitudeSchedule", - "ClipAmplitude", - "FloatArrayToGraph", - "GateNormalizedAmplitude", - "NormalizeAmplitude", - "NormalizedAmplitudeDrivenString", - "NormalizedAmplitudeToGraph", - "NormalizedAmplitudeToNumber", - "TransientAmplitudeBasic" - ], - { - "title_aux": "ComfyUI-AudioScheduler" - } - ], - "https://github.com/abdozmantar/ComfyUI-DeepExtract": [ - [ - "VocalAndSoundRemoverNode" - ], - { - "title_aux": "DeepExtract" - } - ], - "https://github.com/aburahamu/ComfyUI-IsNiceParts": [ - [ - "NiceHand" - ], - { - "title_aux": "ComfyUI-IsNiceParts" - } - ], - "https://github.com/aburahamu/ComfyUI-RequestsPoster": [ - [ - "GetImageFromSD3byI2I", - "GetImageFromSD3byT2I", - "PostImage2Discord", - "PostImage2X", - "PostText" - ], - { - "title_aux": "ComfyUI-RequestPoster" - } - ], - "https://github.com/abyz22/image_control": [ - [ - "abyz22_AddPrompt", - "abyz22_Convertpipe", - "abyz22_Editpipe", - "abyz22_FirstNonNull", - "abyz22_FromBasicPipe_v2", - "abyz22_Frompipe", - "abyz22_ImpactWildcardEncode", - "abyz22_ImpactWildcardEncode_GetPrompt", - "abyz22_Ksampler", - "abyz22_Padding Image", - "abyz22_RandomMask", - "abyz22_RemoveControlnet", - "abyz22_ResizeOpenpose", - "abyz22_SaveImage", - "abyz22_SetQueue", - "abyz22_ToBasicPipe", - "abyz22_Topipe", - "abyz22_blend_onecolor", - "abyz22_blendimages", - "abyz22_bypass", - "abyz22_censoring", - "abyz22_drawmask", - "abyz22_lamaInpaint", - "abyz22_lamaPreprocessor", - "abyz22_makecircles", - "abyz22_path_generator", - "abyz22_setimageinfo", - "abyz22_smallhead" - ], - { - "title_aux": "image_control" - } - ], - "https://github.com/acorderob/sd-webui-prompt-postprocessor": [ - [ - "ACBPromptPostProcessor" - ], - { - "author": "ACB", - "description": "Node for processing prompts. Includes the following options: send to negative prompt, set variables, if/elif/else command for conditional content, wildcards and choices.", - "nickname": "ACB PPP", - "title": "Prompt Post Processor", - "title_aux": "Prompt PostProcessor" - } - ], - "https://github.com/adbrasi/ComfyUI-TrashNodes-DownloadHuggingface": [ - [ - "DownloadLinkChecker", - "ShowFileNames" - ], - { - "title_aux": "ComfyUI-TrashNodes-DownloadHuggingface" - } - ], - "https://github.com/adieyal/comfyui-dynamicprompts": [ - [ - "DPCombinatorialGenerator", - "DPFeelingLucky", - "DPJinja", - "DPMagicPrompt", - "DPOutput", - "DPRandomGenerator" - ], - { - "title_aux": "DynamicPrompts Custom Nodes" - } - ], - "https://github.com/adigayung/ComfyUI-Translator": [ - [ - "CLIP Text Encode (Auto Translate)", - "Prompt Text (Auto Translate)" - ], - { - "title_aux": "ComfyUI-Translator" - } - ], - "https://github.com/adriflex/ComfyUI_Blender_Texdiff": [ - [ - "ViewportColor", - "ViewportDepth" - ], - { - "title_aux": "ComfyUI_Blender_Texdiff" - } - ], - "https://github.com/aegis72/aegisflow_utility_nodes": [ - [ - "Add Text To Image", - "Aegisflow CLIP Pass", - "Aegisflow Conditioning Pass", - "Aegisflow Image Pass", - "Aegisflow Latent Pass", - "Aegisflow Mask Pass", - "Aegisflow Model Pass", - "Aegisflow Pos/Neg Pass", - "Aegisflow SDXL Tuple Pass", - "Aegisflow VAE Pass", - "Aegisflow controlnet preprocessor bus", - "Apply Instagram Filter", - "Binary INT Switch", - "Brightness_Contrast_Ally", - "Flatten Colors", - "Gaussian Blur_Ally", - "GlitchThis Effect", - "Hue Rotation", - "Image Flip_ally", - "Placeholder Tuple", - "Swap Color Mode", - "aegisflow Multi_Pass", - "aegisflow Multi_Pass XL", - "af_pipe_in_15", - "af_pipe_in_xl", - "af_pipe_out_15", - "af_pipe_out_xl" - ], - { - "title_aux": "AegisFlow Utility Nodes" - } - ], - "https://github.com/aegis72/comfyui-styles-all": [ - [ - "menus" - ], - { - "title_aux": "ComfyUI-styles-all" - } - ], - "https://github.com/ahernandezmiro/ComfyUI-GCP_Storage_tools": [ - [ - "GCPReadImageNode", - "GCPWriteImageNode" - ], - { - "title_aux": "ComfyUI-GCP_Storage_tools" - } - ], - "https://github.com/ai-liam/comfyui-liam": [ - [ - "AiStoreAzureGPTLiam", - "GetBetterDepthImage", - "LiamLibDisplayText", - "LiamLibFillImage", - "LiamLibImageToGray", - "LiamLibLoadImage", - "LiamLibMergeText", - "LiamLibSaveImg", - "LiamLibSaveText", - "OllamaApiTNodeLiam", - "PreviewReliefImage", - "SpeechRecognitionLiam", - "SpeechSynthesisLiam" - ], - { - "title_aux": "LiamUtil" - } - ], - "https://github.com/ai-liam/comfyui_liam_util": [ - [ - "LiamLoadImage" - ], - { - "title_aux": "LiamUtil (single node)" - } - ], - "https://github.com/ai-shizuka/ComfyUI-tbox": [ - [ - "AnimalPosePreprocessor", - "BatchManager", - "CannyPreprocessor", - "ConstrainImageNode", - "DWPosePreprocessor", - "DWPreprocessor", - "DensePosePreprocessor", - "GFPGANNode", - "ImageLoader", - "ImageResize", - "ImageSaver", - "ImageSize", - "ImagesSaver", - "LineArtPreprocessor", - "LineartStandardPreprocessor", - "MaskAddNode", - "MiDaSDepthPreprocessor", - "PurgeVRAMNode", - "VideoInfo", - "VideoLoader", - "VideoSaver", - "WatermarkNode" - ], - { - "author": "tstandley", - "title_aux": "ComfyUI-tbox" - } - ], - "https://github.com/aianimation55/ComfyUI-FatLabels": [ - [ - "FatLabels" - ], - { - "title_aux": "Comfy UI FatLabels" - } - ], - "https://github.com/aidec/Comfyui_TextBatch_aidec": [ - [ - "TextBatch", - "TextQueueProcessor", - "TextSplitCounter" - ], - { - "title_aux": "Comfyui_TextBatch_aidec" - } - ], - "https://github.com/aidenli/ComfyUI_NYJY": [ - [ - "CivitaiPrompt", - "ConverAnyToString", - "CustomLatentImage-NYJY", - "CustomLatentImageSimple", - "FloatSlider-NYJY", - "GetItemFromList", - "JoyCaption", - "JoyCaptionAlpha1Online", - "JoyCaptionAlpha2Online", - "JoyTag", - "JsonDumps", - "JsonLoads", - "SplitString", - "Translate" - ], - { - "title_aux": "ComfyUI_NYJY" - } - ], - "https://github.com/aigc-apps/EasyAnimate": [ - [ - "CameraBasicFromChaoJie", - "CameraCombineFromChaoJie", - "CameraJoinFromChaoJie", - "CameraTrajectoryFromChaoJie", - "CreateTrajectoryBasedOnKJNodes", - "EasyAnimateI2VSampler", - "EasyAnimateT2VSampler", - "EasyAnimateV2VSampler", - "EasyAnimateV5_I2VSampler", - "EasyAnimateV5_T2VSampler", - "EasyAnimateV5_V2VSampler", - "EasyAnimate_TextBox", - "ImageMaximumNode", - "LoadEasyAnimateLora", - "LoadEasyAnimateModel", - "TextBox" - ], - { - "title_aux": "Video Generation Nodes for EasyAnimate" - } - ], - "https://github.com/aimerib/ComfyUI_HigherBitDepthSaveImage": [ - [ - "SaveImageHigherBitDepth" - ], - { - "title_aux": "ComfyUI-HigherBitDepthSaveImage" - } - ], - "https://github.com/ainewsto/comfyui-labs-google": [ - [ - "ComfyUI-ImageFx", - "ComfyUI-Whisk", - "ComfyUI-Whisk-Prompts" - ], - { - "title_aux": "comfyui-labs-google" - } - ], - "https://github.com/aisabervisionlab/ComfyUI_merge_ASVL": [ - [ - "ASVL" - ], - { - "title_aux": "ComfyUI_merge_ASVL" - } - ], - "https://github.com/akatz-ai/ComfyUI-AKatz-Nodes": [ - [ - "AK_AdjustDepthmapBrightness", - "AK_AdjustListSize", - "AK_AnimatedDilationMaskLinear", - "AK_AudioFramesyncSchedule", - "AK_AudioreactiveDilateMaskInfinite", - "AK_AudioreactiveDilationMask", - "AK_AudioreactiveDynamicDilationMask", - "AK_BinaryAmplitudeGate", - "AK_BlobTrack", - "AK_BrightnessToFloatList", - "AK_ConvertAudioToSaltAudio", - "AK_ConvertListToFloatList", - "AK_ConvertSaltAudioToAudio", - "AK_DilateMaskLinearInfinite", - "AK_FadeBetweenBatches", - "AK_FlexFeatureToFloatList", - "AK_FloatListToDilateMaskSchedule", - "AK_FloatListToFlexFeature", - "AK_IPAdapterCustomWeights", - "AK_KeyframeScheduler", - "AK_LagChop", - "AK_ListToNumpyFloatArray", - "AK_MakeDepthmapSeamless", - "AK_NormalizeMaskImage", - "AK_RescaleFloatList", - "AK_ScaleMask", - "AK_ScheduledBinaryComparison", - "AK_ShrinkNumSequence", - "AK_SplitImageBatch", - "AK_VideoSpeedAdjust", - "Scale Mask Node" - ], - { - "author": "akatz", - "description": "Custom node pack for nodes I use in my workflows.", - "nickname": "Akatz Custom Nodes", - "title": "Akatz Custom Nodes", - "title_aux": "Akatz Custom Nodes" - } - ], - "https://github.com/akatz-ai/ComfyUI-DepthCrafter-Nodes": [ - [ - "DepthCrafter", - "DownloadAndLoadDepthCrafterModel" - ], - { - "author": "akatz", - "description": "Custom nodes for use with DepthCrafter. Create consistent depth maps for your videos.", - "nickname": "DepthCrafter Nodes", - "title": "DepthCrafter Nodes", - "title_aux": "DepthCrafter Nodes" - } - ], - "https://github.com/akatz-ai/ComfyUI-Depthflow-Nodes": [ - [ - "Depthflow", - "DepthflowEffectDOF", - "DepthflowEffectVignette", - "DepthflowMotionArc", - "DepthflowMotionCosine", - "DepthflowMotionExponential", - "DepthflowMotionLinear", - "DepthflowMotionPresetCircle", - "DepthflowMotionPresetDolly", - "DepthflowMotionPresetHorizontal", - "DepthflowMotionPresetOrbital", - "DepthflowMotionPresetVertical", - "DepthflowMotionPresetZoom", - "DepthflowMotionSetTarget", - "DepthflowMotionSine" - ], - { - "author": "akatz", - "description": "Custom nodes for use with Tremeschin's Depthflow library.", - "nickname": "Depthflow Nodes", - "title": "Depthflow Nodes", - "title_aux": "\ud83c\udf0a Depthflow Nodes" - } - ], - "https://github.com/akatz-ai/ComfyUI-X-Portrait-Nodes": [ - [ - "DownloadXPortraitModel", - "XPortrait" - ], - { - "author": "akatz", - "description": "Custom nodes for use with X-Portrait. Animate portraits with an input video and a reference image.", - "nickname": "X-Portrait Nodes", - "title": "X-Portrait Nodes", - "title_aux": "ComfyUI-X-Portrait-Nodes" - } - ], - "https://github.com/akierson/ComfyUI-textnodes": [ - [ - "Prompt Truncate", - "Tidy Tags" - ], - { - "title_aux": "ComfyUI-textnodes" - } - ], - "https://github.com/akierson/comfyui-colornodes": [ - [ - "Color Picker", - "Color to Hex", - "Color to RGB", - "Image Replace Color", - "Invert Color" - ], - { - "title_aux": "comfyui-colornodes" - } - ], - "https://github.com/akspa0/ComfyUI-FapMixPlus": [ - [ - "fapMix", - "preFapMix" - ], - { - "title_aux": "ComfyUI-FapMixPlus" - } - ], - "https://github.com/al-swaiti/All-IN-ONE-style": [ - [ - "ComfyUIStyler", - "menus" - ], - { - "title_aux": "All-IN-ONE-style" - } - ], - "https://github.com/al-swaiti/ComfyUI-CascadeResolutions": [ - [ - "CascadeResolutions" - ], - { - "title_aux": "ComfyUI-CascadeResolutions" - } - ], - "https://github.com/al-swaiti/ComfyUI-OllamaGemini": [ - [ - "BRIA_RMBG", - "BRIA_RMBG_ModelLoader", - "ComfyUIStyler", - "ConvertRasterToVector", - "FLUXResolutions", - "GeminiAPI", - "OllamaAPI", - "Save text", - "SaveSVG", - "TextSplitByDelimiter", - "menus" - ], - { - "title_aux": "GeminiOllama ComfyUI Extension" - } - ], - "https://github.com/alanhuang67/ComfyUI-FAI-Node": [ - [ - "FAIDynamicMask", - "FAIScaleScheduler", - "FAI_Voronoi_Generator" - ], - { - "title_aux": "FAI-Node" - } - ], - "https://github.com/alessandrozonta/ComfyUI-CenterNode": [ - [ - "BBoxCrop" - ], - { - "title_aux": "ComfyUI-CenterNode" - } - ], - "https://github.com/alessandrozonta/ComfyUI-Layers": [ - [ - "LayersSaver - Save Layer", - "LayersSaver - Save Layer From Images" - ], - { - "title_aux": "Save Layers Node for ComfyUI" - } - ], - "https://github.com/alessandrozonta/ComfyUI-OpenPose": [ - [ - "OpenPose - Get poses" - ], - { - "author": "joe", - "title_aux": "OpenPose Node" - } - ], - "https://github.com/alexcong/ComfyUI_QwenVL": [ - [ - "Qwen2.5", - "Qwen2VL" - ], - { - "title_aux": "Qwen2-VL wrapper for ComfyUI" - } - ], - "https://github.com/alexgenovese/ComfyUI_HF_Servelress_Inference": [ - [ - "HF_QuestionAnswer", - "Job_Caption", - "Joy_caption", - "Joy_caption_load" - ], - { - "author": "Alex Genovese", - "description": "Huggingface Api Serverless request", - "nickname": "alexgenovese", - "title": "Huggingface Api Serverless", - "title_aux": "Huggingface Api Serverless" - } - ], - "https://github.com/alexisrolland/ComfyUI-Phi": [ - [ - "LoadPhi", - "LoadPhiVision", - "RunPhi", - "RunPhiVision" - ], - { - "title_aux": "ComfyUI-Phi" - } - ], - "https://github.com/alexopus/ComfyUI-Image-Saver": [ - [ - "Cfg Literal (Image Saver)", - "Checkpoint Loader with Name (Image Saver)", - "Float Literal (Image Saver)", - "Image Saver", - "Int Literal (Image Saver)", - "Sampler Selector (Image Saver)", - "SamplerToString (Image Saver)", - "Scheduler Selector (Comfy) (Image Saver)", - "Scheduler Selector (Image Saver)", - "SchedulerComfyToString (Image Saver)", - "SchedulerToString (Image Saver)", - "Seed Generator (Image Saver)", - "String Literal (Image Saver)", - "UNet loader with Name (Image Saver)", - "Width/Height Literal (Image Saver)" - ], - { - "title_aux": "ComfyUI Image Saver" - } - ], - "https://github.com/alisson-anjos/ComfyUI-Ollama-Describer": [ - [ - "InputText", - "OllamaCaptionerExtraOptions", - "OllamaImageCaptioner", - "OllamaImageDescriber", - "OllamaTextDescriber", - "ShowText", - "TextTransformer" - ], - { - "title_aux": "ComfyUI-Ollama-Describer" - } - ], - "https://github.com/alpertunga-bile/image-caption-comfyui": [ - [ - "Image Caption Node", - "Insert Prompt Node" - ], - { - "title_aux": "image-caption-comfyui" - } - ], - "https://github.com/alpertunga-bile/prompt-generator-comfyui": [ - [ - "Prompt Generator" - ], - { - "title_aux": "prompt-generator" - } - ], - "https://github.com/alsritter/asymmetric-tiling-comfyui": [ - [ - "Asymmetric_Tiling_KSampler" - ], - { - "title_aux": "asymmetric-tiling-comfyui" - } - ], - "https://github.com/alt-key-project/comfyui-dream-project": [ - [ - "Analyze Palette [Dream]", - "Beat Curve [Dream]", - "Big Float Switch [Dream]", - "Big Image Switch [Dream]", - "Big Int Switch [Dream]", - "Big Latent Switch [Dream]", - "Big Palette Switch [Dream]", - "Big Text Switch [Dream]", - "Boolean To Float [Dream]", - "Boolean To Int [Dream]", - "Build Prompt [Dream]", - "CSV Curve [Dream]", - "CSV Generator [Dream]", - "Calculation [Dream]", - "Common Frame Dimensions [Dream]", - "Compare Palettes [Dream]", - "FFMPEG Video Encoder [Dream]", - "File Count [Dream]", - "Finalize Prompt [Dream]", - "Float Input [Dream]", - "Float to Log Entry [Dream]", - "Frame Count Calculator [Dream]", - "Frame Counter (Directory) [Dream]", - "Frame Counter (Simple) [Dream]", - "Frame Counter Info [Dream]", - "Frame Counter Offset [Dream]", - "Frame Counter Time Offset [Dream]", - "Image Brightness Adjustment [Dream]", - "Image Color Shift [Dream]", - "Image Contrast Adjustment [Dream]", - "Image Motion [Dream]", - "Image Sequence Blend [Dream]", - "Image Sequence Loader [Dream]", - "Image Sequence Saver [Dream]", - "Image Sequence Tweening [Dream]", - "Int Input [Dream]", - "Int to Log Entry [Dream]", - "Laboratory [Dream]", - "Linear Curve [Dream]", - "Log Entry Joiner [Dream]", - "Log File [Dream]", - "Noise from Area Palettes [Dream]", - "Noise from Palette [Dream]", - "Palette Color Align [Dream]", - "Palette Color Shift [Dream]", - "Sample Image Area as Palette [Dream]", - "Sample Image as Palette [Dream]", - "Saw Curve [Dream]", - "Sine Curve [Dream]", - "Smooth Event Curve [Dream]", - "String Input [Dream]", - "String Tokenizer [Dream]", - "String to Log Entry [Dream]", - "Text Input [Dream]", - "Triangle Curve [Dream]", - "Triangle Event Curve [Dream]", - "WAV Curve [Dream]" - ], - { - "title_aux": "Dream Project Animation Nodes" - } - ], - "https://github.com/alt-key-project/comfyui-dream-video-batches": [ - [ - "Blended Transition [DVB]", - "Calculation [DVB]", - "Create Frame Set [DVB]", - "Divide [DVB]", - "Fade From Black [DVB]", - "Fade To Black [DVB]", - "Float Input [DVB]", - "For Each Done [DVB]", - "For Each Filename [DVB]", - "Frame Set Append [DVB]", - "Frame Set Frame Dimensions Scaled [DVB]", - "Frame Set Index Offset [DVB]", - "Frame Set Merger [DVB]", - "Frame Set Reindex [DVB]", - "Frame Set Repeat [DVB]", - "Frame Set Reverse [DVB]", - "Frame Set Split Beginning [DVB]", - "Frame Set Split End [DVB]", - "Frame Set Splitter [DVB]", - "Generate Inbetween Frames [DVB]", - "Int Input [DVB]", - "Linear Camera Pan [DVB]", - "Linear Camera Roll [DVB]", - "Linear Camera Zoom [DVB]", - "Load Image From Path [DVB]", - "Multiply [DVB]", - "Sine Camera Pan [DVB]", - "Sine Camera Roll [DVB]", - "Sine Camera Zoom [DVB]", - "String Input [DVB]", - "Text Input [DVB]", - "Trace Memory Allocation [DVB]", - "Unwrap Frame Set [DVB]" - ], - { - "title_aux": "Dream Video Batches" - } - ], - "https://github.com/an90ray/ComfyUI_RErouter_CustomNodes": [ - [ - "CLIPTextEncode (RE)", - "CLIPTextEncodeSDXL (RE)", - "CLIPTextEncodeSDXLRefiner (RE)", - "Int (RE)", - "RErouter <=", - "RErouter =>", - "String (RE)" - ], - { - "title_aux": "ComfyUI_RErouter_CustomNodes" - } - ], - "https://github.com/andersxa/comfyui-PromptAttention": [ - [ - "CLIPAttentionMaskEncode" - ], - { - "title_aux": "CLIP Directional Prompt Attention" - } - ], - "https://github.com/andygill/comfyui-sunflower-nodes": [ - [ - "DepthViewToIsometric", - "DisparityToDepthView", - "EquirectangularToRectilinear", - "ImageChannelSelect", - "MaskChannelSelect", - "ResizeDown" - ], - { - "title_aux": "comfyui-sunflower-nodes" - } - ], - "https://github.com/angeloshredder/StableCascadeResizer": [ - [ - "CascadeResize" - ], - { - "title_aux": "StableCascadeResizer" - } - ], - "https://github.com/anhkhoatranle30/Handy-Nodes-ComfyUI": [ - [ - "Custom Save Image //Handy" - ], - { - "author": "Khoa Tran", - "description": "This extension offers various handy nodes.", - "nickname": "Handy-Nodes-ComfyUI", - "title": "Handy-Nodes-ComfyUI", - "title_aux": "Handy Node ComfyUI" - } - ], - "https://github.com/arcum42/ComfyUI_SageUtils": [ - [ - "Sage_AdvSamplerInfo", - "Sage_CacheMaintenance", - "Sage_CheckpointLoaderRecent", - "Sage_CheckpointLoaderSimple", - "Sage_CleanText", - "Sage_CollectKeywordsFromLoraStack", - "Sage_ConditioningOneOut", - "Sage_ConditioningRngOut", - "Sage_ConditioningZeroOut", - "Sage_ConstructMetadata", - "Sage_ConstructMetadataLite", - "Sage_DualCLIPTextEncode", - "Sage_EmptyLatentImagePassthrough", - "Sage_GetFileHash", - "Sage_JoinText", - "Sage_KSampler", - "Sage_LastLoraInfo", - "Sage_LoadImage", - "Sage_LogicalSwitch", - "Sage_LoraStack", - "Sage_LoraStackLoader", - "Sage_LoraStackRecent", - "Sage_ModelInfo", - "Sage_ModelReport", - "Sage_PonyPrefix", - "Sage_SamplerInfo", - "Sage_SaveImageWithMetadata", - "Sage_SetBool", - "Sage_SetFloat", - "Sage_SetInteger", - "Sage_SetText", - "Sage_TripleJoinText", - "Sage_UNETLoader", - "Sage_ViewText" - ], - { - "title_aux": "Sage Utils" - } - ], - "https://github.com/asaddi/ComfyUI-YALLM-node": [ - [ - "LLMChat", - "LLMMinP", - "LLMModel", - "LLMPrependAppend", - "LLMProvider", - "LLMTemperature", - "LLMTextLatch", - "LLMTopK", - "LLMTopP" - ], - { - "title_aux": "ComfyUI-YALLM-node" - } - ], - "https://github.com/asagi4/ComfyUI-Adaptive-Guidance": [ - [ - "AdaptiveGuidance", - "AdaptiveProjectedGuidance", - "PerpNegAdaptiveGuidanceGuider" - ], - { - "title_aux": "Adaptive Guidance for ComfyUI" - } - ], - "https://github.com/asagi4/ComfyUI-CADS": [ - [ - "CADS" - ], - { - "title_aux": "ComfyUI-CADS" - } - ], - "https://github.com/asagi4/ComfyUI-NPNet": [ - [ - "NPNetGoldenNoise" - ], - { - "title_aux": "ComfyUI NPNet (Golden Noise)" - } - ], - "https://github.com/asagi4/comfyui-prompt-control": [ - [ - "AttentionMaskHookExperimental", - "PCAddMaskToCLIP", - "PCAddMaskToCLIPMany", - "PCLazyLoraLoader", - "PCLazyLoraLoaderAdvanced", - "PCLazyTextEncode", - "PCLazyTextEncodeAdvanced", - "PCLoraHooksFromText", - "PCSetLogLevel", - "PCSetPCTextEncodeSettings", - "PCTextEncode", - "PCTextEncodeWithRange" - ], - { - "author": "asagi4", - "description": "Control LoRA and prompt scheduling, advanced text encoding, regional prompting, and much more, through your text prompt. Generates dynamic graphs that are literally identical to handcrafted noodle soup.", - "nickname": "ComfyUI Prompt Control", - "title": "ComfyUI Prompt Control", - "title_aux": "ComfyUI Prompt Control" - } - ], - "https://github.com/asagi4/comfyui-utility-nodes": [ - [ - "MUForceCacheClear", - "MUJinjaRender", - "MUReplaceModelWeights", - "MUSimpleWildcard" - ], - { - "title_aux": "asagi4/comfyui-utility-nodes" - } - ], - "https://github.com/asutermo/ComfyUI-Flux-TryOff": [ - [ - "TryOffFluxFillModelNode", - "TryOffModelNode", - "TryOffRunNode" - ], - { - "title_aux": "Try Off w/ Flux and CatVTON" - } - ], - "https://github.com/aszc-dev/ComfyUI-CoreMLSuite": [ - [ - "Core ML Converter", - "Core ML LCM Converter", - "Core ML LoRA Loader", - "CoreMLModelAdapter", - "CoreMLSampler", - "CoreMLSamplerAdvanced", - "CoreMLUNetLoader" - ], - { - "title_aux": "Core ML Suite for ComfyUI" - } - ], - "https://github.com/audioscavenger/ComfyUI-Thumbnails": [ - [ - "LoadImage" - ], - { - "author": "AudioscavengeR", - "description": "Load Image thumbnails and show input subfolders.", - "nickname": "LoadImageThumbnails", - "title": "LoadImageThumbnails", - "title_aux": "ComfyUI-Thumbnails" - } - ], - "https://github.com/audioscavenger/save-image-extended-comfyui": [ - [ - "SaveImageExtended" - ], - { - "author": "AudioscavengeR", - "description": "1 custom node to save your pictures in various folders and formats.", - "nickname": "Save Image Extended", - "title": "Save Image Extended", - "title_aux": "Save Image Extended for ComfyUI" - } - ], - "https://github.com/avatechai/avatar-graph-comfyui": [ - [ - "ApplyMeshTransformAsShapeKey", - "B_ENUM", - "B_VECTOR3", - "B_VECTOR4", - "Combine Points", - "CreateShapeFlow", - "ExportBlendshapes", - "ExportGLTF", - "Extract Boundary Points", - "Image Alpha Mask Merge", - "ImageBridge", - "LoadImageFromRequest", - "LoadImageWithAlpha", - "LoadValueFromRequest", - "SAM MultiLayer", - "Save Image With Workflow" - ], - { - "author": "Avatech Limited", - "description": "Include nodes for sam + bpy operation, that allows workflow creations for generative 2d character rig.", - "nickname": "Avatar Graph", - "title": "Avatar Graph", - "title_aux": "Avatar Graph" - } - ], - "https://github.com/aws-samples/comfyui-llm-node-for-amazon-bedrock": [ - [ - "Bedrock - Amazon Nova Canvas Text to Image", - "Bedrock - Claude", - "Bedrock - Claude Multimodal", - "Bedrock - Nova", - "Bedrock - Nova Background Prompt Replace", - "Bedrock - Nova IpAdapter", - "Bedrock - Nova Text to Image", - "Bedrock - Nova Video", - "Bedrock - Ray2 Video", - "Bedrock - SDXL", - "Bedrock - Titan Inpainting", - "Bedrock - Titan Outpainting", - "Bedrock - Titan Text to Image", - "Bedrock - Titan Variation", - "Image From S3", - "Image From URL", - "Image OCR By Textract", - "Image OCR By Textract V2", - "Image OCR By Textract V3", - "Image OCR by PaddleOCR", - "Image To S3", - "JSON Text Extraction", - "Prompt Regex Remove", - "Prompt Template", - "Prompt Template with Two Inputs" - ], - { - "title_aux": "Amazon Bedrock nodes for ComfyUI" - } - ], - "https://github.com/azure-dragon-ai/ComfyUI-ClipScore-Nodes": [ - [ - "HaojihuiClipScoreFakeImageProcessor", - "HaojihuiClipScoreImageProcessor", - "HaojihuiClipScoreImageScore", - "HaojihuiClipScoreLoader", - "HaojihuiClipScoreRealImageProcessor", - "HaojihuiClipScoreTextProcessor" - ], - { - "title_aux": "ComfyUI-ClipScore-Nodes" - } - ], - "https://github.com/badayvedat/ComfyUI-fal-Connector": [ - [ - "RemoteCheckpointLoader_fal", - "RemoteLoraLoader_fal" - ], - { - "title_aux": "ComfyUI-fal-Connector" - } - ], - "https://github.com/badjeff/comfyui_lora_tag_loader": [ - [ - "LoraTagLoader" - ], - { - "title_aux": "LoRA Tag Loader for ComfyUI" - } - ], - "https://github.com/baicai99/ComfyUI-FrameSkipping": [ - [ - "FrameSelector", - "FrameSkipping", - "FrameTruncating", - "IntOperationsNode", - "MaskFrameSkipping", - "MaskGenerator", - "MaskSelector" - ], - { - "title_aux": "ComfyUI-FrameSkipping" - } - ], - "https://github.com/bananasss00/ComfyUI-SP-Nodes": [ - [ - "BoolSwitchOutStr", - "CivitaiPrompts", - "ComfyuiRuntimeArgs", - "FaceScatter", - "FaceScatter2", - "FluxInspireLbw_Batch", - "FluxInspireLbw_BlockVectorPreset", - "GodnessMerger_Apply", - "GodnessMerger_InputBlocks", - "GodnessMerger_InputBlocksExperimental", - "GodnessMerger_LabelEmb", - "GodnessMerger_MiddleBlock", - "GodnessMerger_MiddleBlockExperimental", - "GodnessMerger_NoiseInjection", - "GodnessMerger_Out", - "GodnessMerger_OutputBlocks", - "GodnessMerger_OutputBlocksExperimental", - "GodnessMerger_RAW_Apply", - "GodnessMerger_TimeEmbed", - "ImageMonitor", - "ImgMetaValueExtractor", - "LoraLoaderByPath", - "LoraLoaderFromFolder", - "LoraLoaderOnlyModelByPath", - "NoiseInjectionEssentialsHookProvider", - "PreviewImageWEBP", - "PromptChecker", - "RandomPromptFromBook", - "Random_Model_Merge", - "SD3BlocksMultiply", - "SD3Multiply", - "SP-CheckpointSave", - "SP-UnetSave", - "SP_DDInpaint_Pipe", - "SP_DictValue", - "SP_DynamicCombo", - "SP_FlorenceCaption", - "SP_FluxFastMergePatchFP8 [Experimental]", - "SP_FluxLoader", - "SP_FluxUnsampler", - "SP_FluxUnsampler_ForwardODESampler", - "SP_FluxUnsampler_InverseSampler", - "SP_HiresGen", - "SP_HiresGen_Dynamic", - "SP_HiresGen_HiresCfg", - "SP_HiresGen_Sharpen", - "SP_HunyuanLoader", - "SP_KSampler", - "SP_KSamplerSelect", - "SP_KoboldCpp", - "SP_KoboldCppWithContext", - "SP_KoboldCpp_BannedTokens", - "SP_KoboldCpp_OverrideCfg", - "SP_ListAny", - "SP_Pass", - "SP_Pipe", - "SP_Pipe_ToBasicPipe", - "SP_SD3Loader", - "SP_SDLoader", - "SP_Supir", - "SP_SupirSampler", - "SP_SupirSampler_DPMPP2M", - "SP_SupirSampler_EDM", - "SP_UnlistValues", - "SP_WebsocketSendImage", - "SP_XYGrid", - "SP_XYValues", - "ScatterParams", - "ScatterParamsBatch", - "SendTelegramChatBot", - "StrToCombo", - "TextSplitJoinByDelimiter" - ], - { - "author": "SeniorPioner", - "description": "Node Pack: PromptChecker for token toggling, KoboldCPP API, ModelMerging, Telegram-Bot-API, and more", - "nickname": "SP-Nodes", - "title": "SP-Nodes", - "title_aux": "SP-Nodes" - } - ], - "https://github.com/bananasss00/ComfyUI-flux_fill_patcher": [ - [ - "ApplyFluxFillPatch" - ], - { - "title_aux": "ComfyUI-flux_fill_patcher" - } - ], - "https://github.com/banodoco/steerable-motion": [ - [ - "BatchCreativeInterpolation", - "IpaConfiguration", - "RemoveAndInterpolateFrames" - ], - { - "title_aux": "Steerable Motion" - } - ], - "https://github.com/banqingyuan/ComfyUI-text-replace": [ - [ - "ChatOverlayNode", - "ExtractJsonNode", - "ImageEraseNode", - "OCRLocNode" - ], - { - "title_aux": "ComfyUI-text-replace" - } - ], - "https://github.com/bartly/Comfyui_babel_removebg_api": [ - [ - "BabelRemovebg" - ], - { - "title_aux": "Babel Removebg Api Node for ComfyUI" - } - ], - "https://github.com/bash-j/mikey_nodes": [ - [ - "AddMetaData", - "Batch Crop Image", - "Batch Crop Resize Inplace", - "Batch Load Images", - "Batch Resize Image for SDXL", - "Checkpoint Loader Simple Mikey", - "CheckpointHash", - "CheckpointSaveModelOnly", - "CinematicLook", - "Empty Latent Ratio Custom SDXL", - "Empty Latent Ratio Select SDXL", - "EvalFloats", - "FaceFixerOpenCV", - "FileNamePrefix", - "FileNamePrefixDateDirFirst", - "Float to String", - "GetSubdirectories", - "HaldCLUT", - "Image Caption", - "ImageBorder", - "ImageOverlay", - "ImagePaste", - "Int to String", - "LMStudioPrompt", - "Load Image Based on Number", - "LoraSyntaxProcessor", - "Mikey Sampler", - "Mikey Sampler Base Only", - "Mikey Sampler Base Only Advanced", - "Mikey Sampler Tiled", - "Mikey Sampler Tiled Base Only", - "MikeyLatentTileSampler", - "MikeyLatentTileSamplerCustom", - "MikeySamplerTiledAdvanced", - "MikeySamplerTiledAdvancedBaseOnly", - "ModelMergePixArtSigmaXL2_1024MS", - "ModelMergeTrainDiff", - "ModelMergeTrainDiffPixartSigmaXL2_1024MS", - "MosaicExpandImage", - "OobaPrompt", - "PresetRatioSelector", - "Prompt With SDXL", - "Prompt With Style", - "Prompt With Style V2", - "Prompt With Style V3", - "Range Float", - "Range Integer", - "Ratio Advanced", - "Resize Image for SDXL", - "SD3TextConditioningWithOptionsOnePrompt", - "SRFloatPromptInput", - "SRIntPromptInput", - "SRStringPromptInput", - "Save Image If True", - "Save Image With Prompt Data", - "Save Images Mikey", - "Save Images No Display", - "SaveMetaData", - "SearchAndReplace", - "Seed String", - "Style Conditioner", - "Style Conditioner Base Only", - "Text2InputOr3rdOption", - "TextCombinations", - "TextCombinations3", - "TextConcat", - "TextPadderMikey", - "TextPreserve", - "Upscale Tile Calculator", - "Wildcard Processor", - "WildcardAndLoraSyntaxProcessor", - "WildcardOobaPrompt" - ], - { - "title_aux": "Mikey Nodes" - } - ], - "https://github.com/bear2b/comfyui-argo-nodes": [ - [ - "ColorMatrixGPU", - "LoadGridFromURL", - "SaveGridToS3" - ], - { - "title_aux": "ColorMatrixGPU Node for ComfyUI" - } - ], - "https://github.com/bedovyy/ComfyUI_NAIDGenerator": [ - [ - "ColorizeNAID", - "DeclutterNAID", - "EmotionNAID", - "GenerateNAID", - "Img2ImgOptionNAID", - "InpaintingOptionNAID", - "LineArtNAID", - "MaskImageToNAID", - "ModelOptionNAID", - "NetworkOptionNAID", - "PromptToNAID", - "RemoveBGNAID", - "SketchNAID", - "V4BasePrompt", - "V4NegativePrompt", - "VibeTransferOptionNAID" - ], - { - "title_aux": "ComfyUI_NAIDGenerator" - } - ], - "https://github.com/benjiyaya/ComfyUI-HunyuanVideoImagesGuider": [ - [ - "Hunyuan Video Image To Guider" - ], - { - "title_aux": "ComfyUI-HunyuanVideoImagesGuider" - } - ], - "https://github.com/benjiyaya/ComfyUI-KokoroTTS": [ - [ - "Kokoro TextToSpeech" - ], - { - "title_aux": "ComfyUI-KokoroTTS" - } - ], - "https://github.com/bentoml/comfy-pack": [ - [ - "CPackInputAny", - "CPackInputFile", - "CPackInputImage", - "CPackInputInt", - "CPackInputString", - "CPackOutputFile", - "CPackOutputImage" - ], - { - "title_aux": "Comfy-Pack" - } - ], - "https://github.com/bilal-arikan/ComfyUI_TextAssets": [ - [ - "LoadTextAsset" - ], - { - "title_aux": "ComfyUI_TextAssets" - } - ], - "https://github.com/billwuhao/ComfyUI_OneButtonPrompt_Flux": [ - [ - "OneButtonPromptFlux" - ], - { - "title_aux": "ComfyUI_OneButtonPrompt_Flux" - } - ], - "https://github.com/bitaffinity/ComfyUI_HF_Inference": [ - [ - "Classification", - "FeatureExtraction", - "Generation", - "ObjectDetection", - "QuestionAnswering", - "Segmentation", - "TextToImage", - "Translation" - ], - { - "title_aux": "ComfyUI_HF_Inference" - } - ], - "https://github.com/black-forest-labs/bfl-comfy-nodes": [ - [ - "FLUX 1.0 [canny]", - "FLUX 1.0 [canny] Finetuned", - "FLUX 1.0 [depth]", - "FLUX 1.0 [depth] Finetuned", - "FLUX 1.0 [dev]", - "FLUX 1.0 [fill]", - "FLUX 1.0 [fill] Finetuned", - "FLUX 1.0 [pro]", - "FLUX 1.0 [pro] Finetuned", - "FLUX 1.1 [pro]", - "FLUX 1.1 [ultra]", - "FLUX 1.1 [ultra] Finetuned" - ], - { - "title_aux": "Black Forest Labs API Nodes" - } - ], - "https://github.com/blackcodetavern/ComfyUI-Benripack": [ - [ - "AnimationExtractor", - "CharacterPipe", - "Load3DModel" - ], - { - "title_aux": "ComfyUI-Benripack" - } - ], - "https://github.com/blepping/ComfyUI-bleh": [ - [ - "BlehBlockCFG", - "BlehBlockOps", - "BlehCast", - "BlehDeepShrink", - "BlehDisableNoise", - "BlehDiscardPenultimateSigma", - "BlehForceSeedSampler", - "BlehGlobalSageAttention", - "BlehHyperTile", - "BlehInsaneChainSampler", - "BlehLatentBlend", - "BlehLatentOps", - "BlehLatentScaleBy", - "BlehModelPatchConditional", - "BlehPlug", - "BlehRefinerAfter", - "BlehSageAttentionSampler", - "BlehSetSamplerPreset", - "BlehSetSigmas" - ], - { - "title_aux": "ComfyUI-bleh" - } - ], - "https://github.com/blepping/ComfyUI-sonar": [ - [ - "NoisyLatentLike", - "SONAR_CUSTOM_NOISE to NOISE", - "SamplerConfigOverride", - "SamplerSonarDPMPPSDE", - "SamplerSonarEuler", - "SamplerSonarEulerA", - "SonarAdvanced1fNoise", - "SonarAdvancedPowerLawNoise", - "SonarAdvancedPyramidNoise", - "SonarBlendedNoise", - "SonarChannelNoise", - "SonarCompositeNoise", - "SonarCustomNoise", - "SonarGuidanceConfig", - "SonarGuidedNoise", - "SonarModulatedNoise", - "SonarRandomNoise", - "SonarRepeatedNoise", - "SonarScheduledNoise" - ], - { - "title_aux": "ComfyUI-sonar" - } - ], - "https://github.com/blepping/comfyui_jankdiffusehigh": [ - [ - "DiffuseHighParam", - "DiffuseHighSampler" - ], - { - "title_aux": "comfyui_jankdiffusehigh" - } - ], - "https://github.com/blepping/comfyui_jankhidiffusion": [ - [ - "ApplyMSWMSAAttention", - "ApplyMSWMSAAttentionSimple", - "ApplyRAUNet", - "ApplyRAUNetSimple" - ], - { - "title_aux": "comfyui_jankhidiffusion" - } - ], - "https://github.com/blepping/comfyui_overly_complicated_sampling": [ - [ - "OCS Group", - "OCS ModelSetMaxSigma", - "OCS MultiParam", - "OCS Param", - "OCS Sampler", - "OCS SimpleRestartSchedule", - "OCS Substeps", - "OCSNoise PerlinAdvanced", - "OCSNoise PerlinSimple", - "OCSNoise to SONAR_CUSTOM_NOISE" - ], - { - "title_aux": "comfyui_overly_complicated_sampling" - } - ], - "https://github.com/blob8/ComfyUI_sloppy-comic": [ - [ - "Generate Comic", - "LLM API Request" - ], - { - "title_aux": "ComfyUI_sloppy-comic" - } - ], - "https://github.com/blueraincoatli/comfyUI_SillyNodes": [ - [ - "BooleanJumper|SillyNode", - "CloseErrorWindowNode|SillyNode", - "QueueSequence|SillyNode", - "Screenshots|SillyNode", - "dummyInput|SillyNode", - "dummyInput|blueraincoat" - ], - { - "title_aux": "comfyUI_SillyNodes" - } - ], - "https://github.com/bluevisor/ComfyUI_PS_Blend_Node": [ - [ - "PSBlendNode" - ], - { - "title_aux": "ComfyUI_PS_Blend_Node" - } - ], - "https://github.com/bmad4ever/comfyui_ab_samplercustom": [ - [ - "AB SamplerCustom (experimental)" - ], - { - "title_aux": "comfyui_ab_sampler" - } - ], - "https://github.com/bmad4ever/comfyui_lists_cartesian_product": [ - [ - "AnyListCartesianProduct" - ], - { - "title_aux": "Lists Cartesian Product" - } - ], - "https://github.com/bmad4ever/comfyui_quilting": [ - [ - "GuessQuiltingBlockSize_Bmad", - "ImageQuiltingSeamlessMB_Bmad", - "ImageQuiltingSeamlessSB_Bmad", - "ImageQuilting_Bmad", - "LatentQuiltingSeamlessMB_Bmad", - "LatentQuiltingSeamlessSB_Bmad", - "LatentQuilting_Bmad" - ], - { - "title_aux": "comfyui_quilting" - } - ], - "https://github.com/bmad4ever/comfyui_wfc_like": [ - [ - "WFC_CustomTemperature_Bmad", - "WFC_CustomValueWeights_Bmad", - "WFC_Decode_BMad", - "WFC_EmptyState_Bmad", - "WFC_Encode_BMad", - "WFC_Filter_Bmad", - "WFC_GenParallel_Bmad", - "WFC_Generate_BMad", - "WFC_SampleNode_BMad" - ], - { - "title_aux": "comfyui_wfc_like" - } - ], - "https://github.com/bobmagicii/comfykit-custom-nodes": [ - [ - "LoraStackFiveSimple", - "LoraThree", - "LoraWithMeta", - "TypecasterClip", - "TypecasterCond", - "TypecasterImage", - "TypecasterLatent", - "TypecasterModel", - "TypecasterVae" - ], - { - "title_aux": "ComfyKit Custom Nodes" - } - ], - "https://github.com/bombax-xiaoice/ComfyUI-Allegro": [ - [ - "AllegroDecoder", - "AllegroEncoder", - "AllegroSampler", - "AllegroTI2VEncoder", - "AllegroTI2VSampler", - "AllegroTextEncoder", - "LoadAllegroModel", - "LoadAllegroTI2VModel" - ], - { - "title_aux": "ComfyUI-Allegro" - } - ], - "https://github.com/bombax-xiaoice/ComfyUI-MagicDance": [ - [ - "LoadMagicDanceModel", - "MagicDanceDecoder", - "MagicDanceEncoder", - "MagicDanceSampler" - ], - { - "title_aux": "ComfyUI-MagicDance" - } - ], - "https://github.com/bombax-xiaoice/ComfyUI-Open-Sora-I2V": [ - [ - "OpenSoraDecoder", - "OpenSoraEncoder", - "OpenSoraLoader", - "OpenSoraSampler", - "OpenSoraTextEncoder" - ], - { - "title_aux": "ComfyUI-Open-Sora-I2V" - } - ], - "https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan": [ - [ - "OpenSoraPlan0LoaderT2V", - "OpenSoraPlan1LoaderT2V", - "OpenSoraPlan2LoaderI2V", - "OpenSoraPlan2LoaderT2V", - "OpenSoraPlan2SamplerI2V", - "OpenSoraPlan3LoaderI2V", - "OpenSoraPlan3LoaderT2V", - "OpenSoraPlan3SamplerI2V", - "OpenSoraPlanDecoder", - "OpenSoraPlanPromptRefiner", - "OpenSoraPlanSamplerT2V" - ], - { - "title_aux": "ComfyUI-OpenSoraPlan" - } - ], - "https://github.com/bombless/comfyUI-RememberingUtils": [ - [ - "RememberLastSeed", - "ShowLastSeed", - "ShowLastText" - ], - { - "title_aux": "Remembering utils" - } - ], - "https://github.com/bongsang/ComfyUI-Bongsang": [ - [ - "AnyInfo", - "RgbChannel" - ], - { - "title_aux": "ComfyUI-Bongsang" - } - ], - "https://github.com/boredofnames/ComfyUI-ntfy": [ - [ - "Ntfy", - "SaveImageAndNtfy" - ], - { - "title_aux": "ComfyUI-ntfy" - } - ], - "https://github.com/bradsec/ComfyUI_ResolutionSelector": [ - [ - "ResolutionSelector" - ], - { - "title_aux": "ResolutionSelector for ComfyUI" - } - ], - "https://github.com/bradsec/ComfyUI_StringEssentials": [ - [ - "StringPreview", - "StringReplace", - "StringStrip", - "StringTextbox" - ], - { - "title_aux": "ComfyUI_StringEssentials" - } - ], - "https://github.com/braintacles/braintacles-comfyui-nodes": [ - [ - "CLIPTextEncodeSDXL-Multi-IO", - "CLIPTextEncodeSDXL-Pipe", - "Empty Latent Image from Aspect-Ratio", - "Interval Sampler", - "Random Find and Replace" - ], - { - "title_aux": "braintacles-nodes" - } - ], - "https://github.com/brayevalerien/ComfyUI-resynthesizer": [ - [ - "Resynthesize" - ], - { - "title_aux": "ComfyUI Resynthesizer" - } - ], - "https://github.com/brianfitzgerald/style_aligned_comfy": [ - [ - "StyleAlignedBatchAlign", - "StyleAlignedReferenceSampler", - "StyleAlignedSampleReferenceLatents" - ], - { - "title_aux": "StyleAligned for ComfyUI" - } - ], - "https://github.com/bronkula/comfyui-fitsize": [ - [ - "FS: Crop Image Into Even Pieces", - "FS: Fit Image And Resize", - "FS: Fit Size From Image", - "FS: Fit Size From Int", - "FS: Image Region To Mask", - "FS: Load Image And Resize To Fit", - "FS: Pick Image From Batch", - "FS: Pick Image From Batches", - "FS: Pick Image From List" - ], - { - "title_aux": "comfyui-fitsize" - } - ], - "https://github.com/bruefire/ComfyUI-SeqImageLoader": [ - [ - "VFrame Loader With Mask Editor", - "Video Loader With Mask Editor" - ], - { - "title_aux": "ComfyUI Sequential Image Loader" - } - ], - "https://github.com/budihartono/comfyui_otonx_nodes": [ - [ - "OTX Integer Multiple Inputs 4", - "OTX Integer Multiple Inputs 5", - "OTX Integer Multiple Inputs 6", - "OTX KSampler Feeder", - "OTX Versatile Multiple Inputs 4", - "OTX Versatile Multiple Inputs 5", - "OTX Versatile Multiple Inputs 6" - ], - { - "title_aux": "Otonx's Custom Nodes" - } - ], - "https://github.com/bugltd/ComfyLab-Pack": [ - [ - "Convert to Any (lab)", - "File Queue (lab)", - "Format: Multiline (lab)", - "Format: String (lab)", - "Generic Queue (lab)", - "Image Queue (lab)", - "Input: Boolean (lab)", - "Input: Float (lab)", - "Input: Folder (lab)", - "Input: Integer (lab)", - "Input: Multiline (lab)", - "Input: String (lab)", - "List: Limit (lab)", - "List: Merge (lab)", - "List: from Elements (lab)", - "List: from File (backend) (lab)", - "List: from Multiline (lab)", - "List: from String (lab)", - "Load Image (RGBA) (lab)", - "Output Config: Load (lab)", - "Output Config: Retrieve (backend) (lab)", - "Plot Config: Grid (lab)", - "Plot Config: Header/Footer (lab)", - "Resolution to Dimensions (lab)", - "Save Text File (lab)", - "Sleep (lab)", - "XY Plot: Queue (lab)", - "XY Plot: Render (lab)", - "XY Plot: Split Data (lab)" - ], - { - "nodename_pattern": " \\(lab\\)$", - "title_aux": "ComfyLab Pack" - } - ], - "https://github.com/bvhari/ComfyUI_ImageProcessing": [ - [ - "BilateralFilter", - "Brightness", - "Gamma", - "Hue", - "Saturation", - "SigmoidCorrection", - "UnsharpMask" - ], - { - "title_aux": "ImageProcessing" - } - ], - "https://github.com/bvhari/ComfyUI_PerpCFG": [ - [ - "PerpCFG" - ], - { - "title_aux": "ComfyUI_PerpCFG" - } - ], - "https://github.com/bvhari/ComfyUI_PerpWeight": [ - [ - "CLIPTextEncodePerpWeight" - ], - { - "title_aux": "ComfyUI_PerpWeight" - } - ], - "https://github.com/bvhari/ComfyUI_SUNoise": [ - [ - "SUNoiseLatent", - "SamplersSUNoise", - "SamplersSUNoiseAdvanced" - ], - { - "title_aux": "ComfyUI_SUNoise" - } - ], - "https://github.com/c0ffymachyne/ComfyUI_BeatByte": [ - [ - "BytebeatSynth" - ], - { - "title_aux": "Bytebeat Synthesizer: Composing with Operators" - } - ], - "https://github.com/c0ffymachyne/ComfyUI_SignalProcessing": [ - [ - "SignalProcessingBaxandall3BandEQ", - "SignalProcessingBaxandallEQ", - "SignalProcessingCompressor", - "SignalProcessingConvolutionReverb", - "SignalProcessingFilter", - "SignalProcessingHarmonicsEnhancer", - "SignalProcessingLimiter", - "SignalProcessingLoadAudio", - "SignalProcessingLoudness", - "SignalProcessingMixdown", - "SignalProcessingNormalizer", - "SignalProcessingPadSynth", - "SignalProcessingPadSynthChoir", - "SignalProcessingPaulStretch", - "SignalProcessingPitchShifter", - "SignalProcessingSaturation", - "SignalProcessingSpectrogram", - "SignalProcessingStereoWidening", - "SignalProcessingWaveform" - ], - { - "title_aux": "ComfyUI Signal Processing" - } - ], - "https://github.com/cake-ml/tiny-sana-preview": [ - [ - "TinySanaPreview" - ], - { - "title_aux": "TinySanaPreview" - } - ], - "https://github.com/calcuis/gguf": [ - [ - "ClipLoaderGGUF", - "DualClipLoaderGGUF", - "GGUFSave", - "GGUFUndo", - "LoaderGGUF", - "LoaderGGUFAdvanced", - "TENSORCut", - "TripleClipLoaderGGUF" - ], - { - "preemptions": [ - "LoaderGGUF", - "ClipLoaderGGUF", - "DualClipLoaderGGUF", - "TripleClipLoaderGGUF", - "LoaderGGUFAdvanced", - "GGUFSave" - ], - "title_aux": "gguf" - } - ], - "https://github.com/caleboleary/ComfyUI-Arc2Face": [ - [ - "Arc2FaceEncoderLoader", - "Arc2FaceFaceExtractor", - "Arc2FaceGenerator", - "Arc2FaceImageGridGenerator", - "Arc2FaceImg2ImgGenerator", - "Arc2FaceUNetLoader" - ], - { - "title_aux": "Arc2Face ComfyUI Node Library" - } - ], - "https://github.com/camenduru/ComfyUI-TostAI": [ - [ - "SendToTostAI" - ], - { - "title_aux": "ComfyUI-TostAI" - } - ], - "https://github.com/catboxanon/comfyui_stealth_pnginfo": [ - [ - "CatboxAnonSaveImageStealth" - ], - { - "title_aux": "comfyui_stealth_pnginfo" - } - ], - "https://github.com/cdb-boop/ComfyUI-Bringing-Old-Photos-Back-to-Life": [ - [ - "BOPBTL_BlendFaces", - "BOPBTL_DetectEnhanceBlendFaces", - "BOPBTL_DetectFaces", - "BOPBTL_EnhanceFaces", - "BOPBTL_EnhanceFacesAdvanced", - "BOPBTL_LoadFaceDetectorModel", - "BOPBTL_LoadFaceEnhancerModel", - "BOPBTL_LoadRestoreOldPhotosModel", - "BOPBTL_LoadScratchMaskModel", - "BOPBTL_RestoreOldPhotos", - "BOPBTL_ScratchMask" - ], - { - "title_aux": "ComfyUI Bringing Old Photos Back to Life" - } - ], - "https://github.com/cdb-boop/comfyui-image-round": [ - [ - "ComfyUI_Image_Round__ImageCropAdvanced", - "ComfyUI_Image_Round__ImageRound", - "ComfyUI_Image_Round__ImageRoundAdvanced" - ], - { - "title_aux": "comfyui-image-round" - } - ], - "https://github.com/cdxOo/comfyui-text-node-with-comments": [ - [ - "text-node-with-comments" - ], - { - "title_aux": "Text Node With Comments (@cdxoo)" - } - ], - "https://github.com/celoron/ComfyUI-VisualQueryTemplate": [ - [ - "VisualQueryTemplateNode" - ], - { - "title_aux": "ComfyUI-VisualQueryTemplate" - } - ], - "https://github.com/celsojr2013/comfyui_jamworks_client": [ - [ - "Jamworks_Download", - "Jamworks_Login", - "Shell_Command" - ], - { - "title_aux": "comfyui_jamworks_client" - } - ], - "https://github.com/celsojr2013/comfyui_simpletools": [ - [ - "GoogleTranslator", - "Parameters", - "ResolutionSolver" - ], - { - "title_aux": "ComfyUI SimpleTools Suit" - } - ], - "https://github.com/cenzijing/ComfyUI-Markmap": [ - [ - "MarkmapNode", - "ReadHtmlNode" - ], - { - "title_aux": "ComfyUI-Markmap" - } - ], - "https://github.com/cerspense/ComfyUI_cspnodes": [ - [ - "DepthToNormalMap", - "GetMP4Prompt", - "ImageDirIterator", - "IncrementEveryN", - "Modelscopet2v", - "Modelscopev2v", - "RemapRange", - "ResizeByImage", - "SplitImageChannels", - "VidDirIterator" - ], - { - "title_aux": "cspnodes" - } - ], - "https://github.com/ceruleandeep/ComfyUI-LLaVA-Captioner": [ - [ - "LlavaCaptioner" - ], - { - "title_aux": "ComfyUI LLaVA Captioner" - } - ], - "https://github.com/chakib-belgaid/ComfyUI-autosize": [ - [ - "CustomAutoSize", - "SDXLAutoSize" - ], - { - "title_aux": "ComfyUI-autosize" - } - ], - "https://github.com/chakib-belgaid/Comfyui_Prompt_styler": [ - [ - "Prompt_Styler" - ], - { - "title_aux": "ComfyUI Style Plugin" - } - ], - "https://github.com/chandlergis/ComfyUI-IMG_Query": [ - [ - "ImageRequestNode" - ], - { - "title_aux": "ComfyUI-IMG_Query" - } - ], - "https://github.com/chandlergis/ComfyUI_EmojiOverlay": [ - [ - "Image Emoji Overlay" - ], - { - "title_aux": "ComfyUI_EmojiOverlay" - } - ], - "https://github.com/changwook987/ComfyUI-Small-Utility": [ - [ - "Eval", - "RandomEmptyLatent" - ], - { - "title_aux": "ComfyUI-Small-Utility" - } - ], - "https://github.com/chaojie/ComfyUI-AniPortrait": [ - [ - "AniPortraitLoader", - "AniPortraitRun", - "Box2Video", - "CoverVideo", - "MaskList2Video" - ], - { - "title_aux": "ComfyUI-AniPortrait" - } - ], - "https://github.com/chaojie/ComfyUI-CameraCtrl-Wrapper": [ - [ - "CameraBasic", - "CameraCombine", - "CameraCtrlLoader", - "CameraCtrlRun", - "CameraJoin", - "CameraTrajectory" - ], - { - "title_aux": "ComfyUI-CameraCtrl-Wrapper" - } - ], - "https://github.com/chaojie/ComfyUI-Champ": [ - [ - "ChampLoader", - "ChampRun", - "ImageCombineOneColumn", - "ImageCombineOneRow" - ], - { - "title_aux": "ComfyUI-Champ" - } - ], - "https://github.com/chaojie/ComfyUI-DragAnything": [ - [ - "DragAnythingLoader", - "DragAnythingPipelineRun", - "DragAnythingPipelineRunRandom", - "DragAnythingRun", - "DragAnythingRunRandom", - "LoadText", - "SaveText", - "VHS_FILENAMES_STRING" - ], - { - "title_aux": "ComfyUI-DragAnything" - } - ], - "https://github.com/chaojie/ComfyUI-DragNUWA": [ - [ - "BrushMotion", - "CompositeMotionBrush", - "CompositeMotionBrushWithoutModel", - "DragNUWA Run", - "DragNUWA Run MotionBrush", - "Get First Image", - "Get Last Image", - "InstantCameraMotionBrush", - "InstantObjectMotionBrush", - "Load CheckPoint DragNUWA", - "Load MotionBrush From Optical Flow", - "Load MotionBrush From Optical Flow Directory", - "Load MotionBrush From Optical Flow Without Model", - "Load MotionBrush From Tracking Points", - "Load MotionBrush From Tracking Points Without Model", - "Load Pose KeyPoints", - "Loop", - "LoopEnd_IMAGE", - "LoopStart_IMAGE", - "Split Tracking Points" - ], - { - "title_aux": "ComfyUI-DragNUWA" - } - ], - "https://github.com/chaojie/ComfyUI-DynamiCrafter": [ - [ - "DynamiCrafter Simple", - "DynamiCrafterInterp Simple", - "DynamiCrafterInterpLoader", - "DynamiCrafterLoader" - ], - { - "title_aux": "ComfyUI-DynamiCrafter" - } - ], - "https://github.com/chaojie/ComfyUI-EasyAnimate": [ - [ - "EasyAnimateLoader", - "EasyAnimateRun" - ], - { - "title_aux": "ComfyUI-EasyAnimate" - } - ], - "https://github.com/chaojie/ComfyUI-Gemma": [ - [ - "GemmaLoader", - "GemmaRun" - ], - { - "title_aux": "ComfyUI-Gemma" - } - ], - "https://github.com/chaojie/ComfyUI-I2VGEN-XL": [ - [ - "I2VGEN-XL Simple", - "Modelscope Pipeline Loader" - ], - { - "title_aux": "ComfyUI-I2VGEN-XL" - } - ], - "https://github.com/chaojie/ComfyUI-Img2Img-Turbo": [ - [ - "Img2ImgTurboEdgeLoader", - "Img2ImgTurboEdgeRun", - "Img2ImgTurboSketchLoader", - "Img2ImgTurboSketchRun" - ], - { - "title_aux": "ComfyUI-Img2Img-Turbo" - } - ], - "https://github.com/chaojie/ComfyUI-LaVIT": [ - [ - "VHS_FILENAMES_STRING_LaVIT", - "VideoLaVITI2I", - "VideoLaVITI2V", - "VideoLaVITI2VLong", - "VideoLaVITLoader", - "VideoLaVITT2V", - "VideoLaVITT2VLong", - "VideoLaVITUnderstandingImage", - "VideoLaVITUnderstandingLoader", - "VideoLaVITUnderstandingVideo", - "VideoLaVITVideoDetokenizerLoader", - "VideoLaVITVideoReconstruction" - ], - { - "title_aux": "ComfyUI-LaVIT" - } - ], - "https://github.com/chaojie/ComfyUI-LightGlue": [ - [ - "LightGlue Loader", - "LightGlue Simple", - "LightGlue Simple Multi" - ], - { - "title_aux": "ComfyUI-LightGlue" - } - ], - "https://github.com/chaojie/ComfyUI-Moore-AnimateAnyone": [ - [ - "Moore-AnimateAnyone Denoising Unet", - "Moore-AnimateAnyone Image Encoder", - "Moore-AnimateAnyone Pipeline Loader", - "Moore-AnimateAnyone Pose Guider", - "Moore-AnimateAnyone Reference Unet", - "Moore-AnimateAnyone Simple", - "Moore-AnimateAnyone VAE" - ], - { - "title_aux": "ComfyUI-Moore-AnimateAnyone" - } - ], - "https://github.com/chaojie/ComfyUI-Motion-Vector-Extractor": [ - [ - "Motion Vector Extractor", - "VideoCombineThenPath" - ], - { - "title_aux": "ComfyUI-Motion-Vector-Extractor" - } - ], - "https://github.com/chaojie/ComfyUI-MotionCtrl": [ - [ - "Load Motion Camera Preset", - "Load Motion Traj Preset", - "Load Motionctrl Checkpoint", - "Motionctrl Cond", - "Motionctrl Sample", - "Motionctrl Sample Simple", - "Select Image Indices" - ], - { - "title_aux": "ComfyUI-MotionCtrl" - } - ], - "https://github.com/chaojie/ComfyUI-MotionCtrl-SVD": [ - [ - "Load Motionctrl-SVD Camera Preset", - "Load Motionctrl-SVD Checkpoint", - "Motionctrl-SVD Sample Simple" - ], - { - "title_aux": "ComfyUI-MotionCtrl-SVD" - } - ], - "https://github.com/chaojie/ComfyUI-MuseTalk": [ - [ - "MuseTalkCupAudio", - "MuseTalkRun", - "VHS_FILENAMES_STRING_MuseTalk" - ], - { - "title_aux": "ComfyUI-MuseTalk" - } - ], - "https://github.com/chaojie/ComfyUI-MuseV": [ - [ - "MuseVRun", - "MuseVRunVid2Vid", - "VHS_FILENAMES_STRING_MuseV" - ], - { - "author": "infguo", - "title_aux": "ComfyUI-MuseV" - } - ], - "https://github.com/chaojie/ComfyUI-Open-Sora": [ - [ - "OpenSoraLoader", - "OpenSoraRun", - "OpenSoraSampler" - ], - { - "title_aux": "ComfyUI-Open-Sora" - } - ], - "https://github.com/chaojie/ComfyUI-Open-Sora-Plan": [ - [ - "OpenSoraPlanDecode", - "OpenSoraPlanLoader", - "OpenSoraPlanRun", - "OpenSoraPlanSample" - ], - { - "title_aux": "ComfyUI-Open-Sora-Plan" - } - ], - "https://github.com/chaojie/ComfyUI-Panda3d": [ - [ - "Panda3dAmbientLight", - "Panda3dAttachNewNode", - "Panda3dBase", - "Panda3dDirectionalLight", - "Panda3dLoadDepthModel", - "Panda3dLoadModel", - "Panda3dLoadTexture", - "Panda3dModelMerge", - "Panda3dTest", - "Panda3dTextureMerge" - ], - { - "title_aux": "ComfyUI-Panda3d" - } - ], - "https://github.com/chaojie/ComfyUI-Pymunk": [ - [ - "PygameRun", - "PygameSurface", - "PymunkDynamicBox", - "PymunkDynamicCircle", - "PymunkRun", - "PymunkShapeMerge", - "PymunkSpace", - "PymunkStaticLine" - ], - { - "title_aux": "ComfyUI-Pymunk" - } - ], - "https://github.com/chaojie/ComfyUI-RAFT": [ - [ - "Load MotionBrush", - "RAFT Run", - "Save MotionBrush", - "VizMotionBrush" - ], - { - "title_aux": "ComfyUI-RAFT" - } - ], - "https://github.com/chaojie/ComfyUI-SimDA": [ - [ - "SimDALoader", - "SimDARun", - "SimDATrain", - "VHS_FILENAMES_STRING_SimDA" - ], - { - "title_aux": "ComfyUI-SimDA" - } - ], - "https://github.com/chaojie/ComfyUI-Trajectory": [ - [ - "Trajectory_Canvas_Tab" - ], - { - "author": "Lerc", - "description": "This extension provides a full page image editor with mask support. There are two nodes, one to receive images from the editor and one to send images to the editor.", - "nickname": "Canvas Tab", - "title": "Canvas Tab", - "title_aux": "ComfyUI-Trajectory" - } - ], - "https://github.com/chaojie/ComfyUI-Video-Editing-X-Attention": [ - [ - "StringList", - "VEXAGuidance", - "VEXALoader", - "VEXARun" - ], - { - "title_aux": "ComfyUI-Video-Editing-X-Attention" - } - ], - "https://github.com/chaojie/ComfyUI-dust3r": [ - [ - "CameraPoseVideo", - "Dust3rLoader", - "Dust3rRun" - ], - { - "title_aux": "ComfyUI-dust3r" - } - ], - "https://github.com/chaojie/ComfyUI_StreamingT2V": [ - [ - "LoadText_StreamingT2V", - "PromptTravelIndex", - "SaveText_StreamingT2V", - "StreamingT2VLoaderAnimateDiff", - "StreamingT2VLoaderAnimateDiffModel", - "StreamingT2VLoaderEnhanceModel", - "StreamingT2VLoaderModelscopeModel", - "StreamingT2VLoaderModelscopeT2V", - "StreamingT2VLoaderSVD", - "StreamingT2VLoaderSVDModel", - "StreamingT2VLoaderStreamModel", - "StreamingT2VLoaderVidXTendModel", - "StreamingT2VRunEnhanceStep", - "StreamingT2VRunI2V", - "StreamingT2VRunLongStep", - "StreamingT2VRunLongStepVidXTendPipeline", - "StreamingT2VRunLongStepVidXTendPipelineCustomRef", - "StreamingT2VRunLongStepVidXTendPipelineCustomRefOutExtendOnly", - "StreamingT2VRunLongStepVidXTendPipelinePromptTravel", - "StreamingT2VRunShortStepAnimateDiff", - "StreamingT2VRunShortStepModelscopeT2V", - "StreamingT2VRunShortStepSVD", - "StreamingT2VRunT2V", - "VHS_FILENAMES_STRING_StreamingT2V" - ], - { - "title_aux": "ComfyUI_StreamingT2V" - } - ], - "https://github.com/chaosaiart/Chaosaiart-Nodes": [ - [ - "chaosaiart_Any_Switch", - "chaosaiart_Any_Switch_Big_Number", - "chaosaiart_Any_Switch_small", - "chaosaiart_AutoNone_Switch_small", - "chaosaiart_CheckpointLoader", - "chaosaiart_CheckpointPrompt", - "chaosaiart_CheckpointPrompt2", - "chaosaiart_CheckpointPrompt_Frame", - "chaosaiart_CheckpointPrompt_FrameMixer", - "chaosaiart_ControlNetApply", - "chaosaiart_ControlNetApply2", - "chaosaiart_ControlNetApply3", - "chaosaiart_Denoising_Switch", - "chaosaiart_EmptyLatentImage", - "chaosaiart_FramePromptCLIPEncode", - "chaosaiart_Frame_Switch", - "chaosaiart_KSampler1", - "chaosaiart_KSampler2", - "chaosaiart_KSampler3", - "chaosaiart_KSampler4", - "chaosaiart_KSampler5", - "chaosaiart_KSampler7", - "chaosaiart_KSampler_a1", - "chaosaiart_KSampler_a1a", - "chaosaiart_KSampler_a2", - "chaosaiart_KSampler_expert_0", - "chaosaiart_KSampler_expert_1", - "chaosaiart_Ksampler_attribut", - "chaosaiart_Load_Image_Batch", - "chaosaiart_Load_Image_Batch_2img", - "chaosaiart_MainPromptCLIPEncode", - "chaosaiart_Number", - "chaosaiart_Number2", - "chaosaiart_Number_Counter", - "chaosaiart_Number_Switch", - "chaosaiart_Prompt", - "chaosaiart_Prompt_Frame", - "chaosaiart_Prompt_mixer_byFrame", - "chaosaiart_SaveImage", - "chaosaiart_Show_Info", - "chaosaiart_Simple_Prompt", - "chaosaiart_Style_Node", - "chaosaiart_TextCLIPEncode", - "chaosaiart_TextCLIPEncode_lora", - "chaosaiart_adjust_color", - "chaosaiart_any_array2input_1Input", - "chaosaiart_any_array2input_all_big", - "chaosaiart_any_array2input_all_small", - "chaosaiart_any_input2array_big", - "chaosaiart_any_input2array_small", - "chaosaiart_controlnet_weidgth", - "chaosaiart_convert", - "chaosaiart_convert_Prompt", - "chaosaiart_forPreview", - "chaosaiart_image_loop", - "chaosaiart_img2gif", - "chaosaiart_img2video", - "chaosaiart_lora", - "chaosaiart_lora_advanced", - "chaosaiart_merge_Folders", - "chaosaiart_oneNode", - "chaosaiart_reloadAny_Load", - "chaosaiart_reloadAny_Save", - "chaosaiart_reloadIMG_Load", - "chaosaiart_reloadIMG_Save", - "chaosaiart_reloadLatent_Load", - "chaosaiart_reloadLatent_Save", - "chaosaiart_restarter", - "chaosaiart_restarter_advanced", - "chaosaiart_video2img1", - "chaosaiart_zoom_frame" - ], - { - "title_aux": "Chaosaiart-Nodes" - } - ], - "https://github.com/chenbaiyujason/ComfyUI_StepFun": [ - [ - "CombineStrings", - "JSONParser", - "StepFunClient", - "TextImageChat", - "VideoChat", - "VideoFileUploader" - ], - { - "title_aux": "ComfyUI-SCStepFun" - } - ], - "https://github.com/cherninlab/logo-generator-comfyui": [ - [ - "GoogleFontsLogo" - ], - { - "title_aux": "Logo Generator Node for ComfyUI" - } - ], - "https://github.com/chesnokovivan/ComfyUI-Novakid": [ - [ - "Novakid Styler" - ], - { - "title_aux": "ComfyUI-Novakid" - } - ], - "https://github.com/chflame163/ComfyUI_CatVTON_Wrapper": [ - [ - "CatVTONWrapper" - ], - { - "author": "chflame", - "description": "CatVTON warpper for ComfyUI", - "nickname": "CatVTON_Wrapper", - "title": "CatVTON_Wrapper", - "title_aux": "ComfyUI_CatVTON_Wrapper" - } - ], - "https://github.com/chflame163/ComfyUI_FaceSimilarity": [ - [ - "Face Similarity" - ], - { - "title_aux": "ComfyUI Face Similarity" - } - ], - "https://github.com/chflame163/ComfyUI_LayerStyle": [ - [ - "LayerColor: AutoAdjust", - "LayerColor: AutoAdjustV2", - "LayerColor: AutoBrightness", - "LayerColor: Brightness & Contrast", - "LayerColor: BrightnessContrastV2", - "LayerColor: Color of Shadow & Highlight", - "LayerColor: ColorAdapter", - "LayerColor: ColorBalance", - "LayerColor: ColorTemperature", - "LayerColor: ColorofShadowHighlightV2", - "LayerColor: Exposure", - "LayerColor: Gamma", - "LayerColor: HSV", - "LayerColor: LAB", - "LayerColor: LUT Apply", - "LayerColor: Levels", - "LayerColor: RGB", - "LayerColor: YUV", - "LayerFilter: AddGrain", - "LayerFilter: ChannelShake", - "LayerFilter: ColorMap", - "LayerFilter: Film", - "LayerFilter: FilmV2", - "LayerFilter: GaussianBlur", - "LayerFilter: GaussianBlurV2", - "LayerFilter: HDREffects", - "LayerFilter: LightLeak", - "LayerFilter: MotionBlur", - "LayerFilter: Sharp & Soft", - "LayerFilter: SkinBeauty", - "LayerFilter: SoftLight", - "LayerFilter: WaterColor", - "LayerMask: BlendIf Mask", - "LayerMask: CreateGradientMask", - "LayerMask: ImageToMask", - "LayerMask: MaskBoxDetect", - "LayerMask: MaskByColor", - "LayerMask: MaskEdgeShrink", - "LayerMask: MaskEdgeUltraDetail", - "LayerMask: MaskEdgeUltraDetail V2", - "LayerMask: MaskGradient", - "LayerMask: MaskGrain", - "LayerMask: MaskGrow", - "LayerMask: MaskInvert", - "LayerMask: MaskMotionBlur", - "LayerMask: MaskPreview", - "LayerMask: MaskStroke", - "LayerMask: PixelSpread", - "LayerMask: RemBgUltra", - "LayerMask: RmBgUltra V2", - "LayerMask: SegformerB2ClothesUltra", - "LayerMask: SegformerClothesPipelineLoader", - "LayerMask: SegformerFashionPipelineLoader", - "LayerMask: SegformerUltraV2", - "LayerMask: Shadow & Highlight Mask", - "LayerMask: ShadowHighlightMaskV2", - "LayerStyle: ColorOverlay", - "LayerStyle: ColorOverlay V2", - "LayerStyle: DropShadow", - "LayerStyle: DropShadow V2", - "LayerStyle: DropShadow V3", - "LayerStyle: Gradient Map", - "LayerStyle: GradientOverlay", - "LayerStyle: GradientOverlay V2", - "LayerStyle: InnerGlow", - "LayerStyle: InnerGlow V2", - "LayerStyle: InnerShadow", - "LayerStyle: InnerShadow V2", - "LayerStyle: OuterGlow", - "LayerStyle: OuterGlow V2", - "LayerStyle: Stroke", - "LayerStyle: Stroke V2", - "LayerUtility: AnyRerouter", - "LayerUtility: BatchSelector", - "LayerUtility: Boolean", - "LayerUtility: BooleanOperator", - "LayerUtility: BooleanOperatorV2", - "LayerUtility: CheckMask", - "LayerUtility: CheckMaskV2", - "LayerUtility: ChoiceTextPreset", - "LayerUtility: ColorImage", - "LayerUtility: ColorImage V2", - "LayerUtility: ColorName", - "LayerUtility: ColorPicker", - "LayerUtility: CropBoxResolve", - "LayerUtility: CropByMask", - "LayerUtility: CropByMask V2", - "LayerUtility: CropByMask V3", - "LayerUtility: ExtendCanvas", - "LayerUtility: ExtendCanvasV2", - "LayerUtility: Float", - "LayerUtility: GetImageSize", - "LayerUtility: GetMainColors", - "LayerUtility: GetMainColorsV2", - "LayerUtility: GradientImage", - "LayerUtility: GradientImage V2", - "LayerUtility: GrayValue", - "LayerUtility: HLFrequencyDetailRestore", - "LayerUtility: HSV Value", - "LayerUtility: ICMask", - "LayerUtility: ICMaskCropBack", - "LayerUtility: If", - "LayerUtility: ImageBlend", - "LayerUtility: ImageBlend V2", - "LayerUtility: ImageBlendAdvance", - "LayerUtility: ImageBlendAdvance V2", - "LayerUtility: ImageBlendAdvance V3", - "LayerUtility: ImageChannelMerge", - "LayerUtility: ImageChannelSplit", - "LayerUtility: ImageCombineAlpha", - "LayerUtility: ImageHub", - "LayerUtility: ImageMaskScaleAs", - "LayerUtility: ImageMaskScaleAsV2", - "LayerUtility: ImageOpacity", - "LayerUtility: ImageReel", - "LayerUtility: ImageReelComposit", - "LayerUtility: ImageRemoveAlpha", - "LayerUtility: ImageScaleByAspectRatio", - "LayerUtility: ImageScaleByAspectRatio V2", - "LayerUtility: ImageScaleRestore", - "LayerUtility: ImageScaleRestore V2", - "LayerUtility: ImageShift", - "LayerUtility: ImageTaggerSave", - "LayerUtility: Integer", - "LayerUtility: LayerImageTransform", - "LayerUtility: LayerMaskTransform", - "LayerUtility: LoadVQAModel", - "LayerUtility: NameToColor", - "LayerUtility: NumberCalculator", - "LayerUtility: NumberCalculatorV2", - "LayerUtility: PrintInfo", - "LayerUtility: PurgeVRAM", - "LayerUtility: QueueStop", - "LayerUtility: RGB Value", - "LayerUtility: RandomGenerator", - "LayerUtility: RandomGeneratorV2", - "LayerUtility: RestoreCropBox", - "LayerUtility: RoundedRectangle", - "LayerUtility: Seed", - "LayerUtility: SimpleTextImage", - "LayerUtility: String", - "LayerUtility: StringCondition", - "LayerUtility: SwitchCase", - "LayerUtility: TextBox", - "LayerUtility: TextImage", - "LayerUtility: TextImage V2", - "LayerUtility: TextJoin", - "LayerUtility: TextJoinV2", - "LayerUtility: TextPreseter", - "LayerUtility: VQAPrompt", - "LayerUtility: XY to Percent" - ], - { - "author": "chflame", - "description": "A set of nodes for ComfyUI that can composite layer and mask to achieve Photoshop like functionality.", - "nickname": "LayerStyle", - "title": "LayerStyle", - "title_aux": "ComfyUI Layer Style" - } - ], - "https://github.com/chflame163/ComfyUI_LayerStyle_Advance": [ - [ - "LayerMask: BBoxJoin", - "LayerMask: BenUltra", - "LayerMask: BiRefNetUltra", - "LayerMask: BiRefNetUltraV2", - "LayerMask: DrawBBoxMask", - "LayerMask: DrawBBoxMaskV2", - "LayerMask: EVFSAMUltra", - "LayerMask: Florence2Ultra", - "LayerMask: HumanPartsUltra", - "LayerMask: LoadBenModel", - "LayerMask: LoadBiRefNetModel", - "LayerMask: LoadBiRefNetModelV2", - "LayerMask: LoadFlorence2Model", - "LayerMask: LoadSegmentAnythingModels", - "LayerMask: MaskByDifferent", - "LayerMask: MediapipeFacialSegment", - "LayerMask: ObjectDetectorFL2", - "LayerMask: ObjectDetectorGemini", - "LayerMask: ObjectDetectorMask", - "LayerMask: ObjectDetectorYOLO8", - "LayerMask: ObjectDetectorYOLOWorld", - "LayerMask: PersonMaskUltra", - "LayerMask: PersonMaskUltra V2", - "LayerMask: SAM2Ultra", - "LayerMask: SAM2VideoUltra", - "LayerMask: SegmentAnythingUltra", - "LayerMask: SegmentAnythingUltra V2", - "LayerMask: SegmentAnythingUltra V3", - "LayerMask: TransparentBackgroundUltra", - "LayerMask: YoloV8Detect", - "LayerUtility: AddBlindWaterMark", - "LayerUtility: CreateQRCode", - "LayerUtility: DecodeQRCode", - "LayerUtility: DeepSeekAPI", - "LayerUtility: Florence2Image2Prompt", - "LayerUtility: Gemini", - "LayerUtility: GetColorTone", - "LayerUtility: GetColorToneV2", - "LayerUtility: ImageAutoCrop", - "LayerUtility: ImageAutoCrop V2", - "LayerUtility: ImageAutoCrop V3", - "LayerUtility: ImageRewardFilter", - "LayerUtility: JoyCaption2", - "LayerUtility: JoyCaption2ExtraOptions", - "LayerUtility: JoyCaption2Split", - "LayerUtility: LaMa", - "LayerUtility: LlamaVision", - "LayerUtility: LoadJoyCaption2Model", - "LayerUtility: LoadPSD", - "LayerUtility: LoadSmolLM2Model", - "LayerUtility: LoadSmolVLMModel", - "LayerUtility: PhiPrompt", - "LayerUtility: PromptEmbellish", - "LayerUtility: PromptTagger", - "LayerUtility: QWenImage2Prompt", - "LayerUtility: SD3NegativeConditioning", - "LayerUtility: SaveImagePlus", - "LayerUtility: ShowBlindWaterMark", - "LayerUtility: SmolLM2", - "LayerUtility: SmolVLM", - "LayerUtility: UserPromptGeneratorReplaceWord", - "LayerUtility: UserPromptGeneratorTxt2ImgPrompt", - "LayerUtility: UserPromptGeneratorTxt2ImgPromptWithReference", - "LayerUtility: ZhipuGLM4", - "LayerUtility: ZhipuGLM4V" - ], - { - "author": "chflame", - "description": "A set of nodes for ComfyUI that can composite layer and mask to achieve Photoshop like functionality.", - "nickname": "LayerStyle", - "title": "LayerStyle", - "title_aux": "ComfyUI_LayerStyle_Advance" - } - ], - "https://github.com/chflame163/ComfyUI_MSSpeech_TTS": [ - [ - "Input Trigger", - "MicrosoftSpeech_TTS", - "Play Sound", - "Play Sound (loop)" - ], - { - "title_aux": "ComfyUI_MSSpeech_TTS" - } - ], - "https://github.com/chflame163/ComfyUI_OmniGen_Wrapper": [ - [ - "dzOmniGenWrapper" - ], - { - "title_aux": "ComfyUI_OmniGen_Wrapper" - } - ], - "https://github.com/chflame163/ComfyUI_WordCloud": [ - [ - "ComfyWordCloud", - "LoadTextFile", - "RGB_Picker" - ], - { - "title_aux": "ComfyUI_WordCloud" - } - ], - "https://github.com/chibiace/ComfyUI-Chibi-Nodes": [ - [ - "ConditionText", - "ConditionTextMulti", - "ConditionTextPrompts", - "ImageAddText", - "ImageSimpleResize", - "ImageSizeInfo", - "ImageTool", - "Int2String", - "LoadEmbedding", - "LoadImageExtended", - "Loader", - "Prompts", - "RandomResolutionLatent", - "SaveImages", - "SeedGenerator", - "SimpleSampler", - "TextSplit", - "Textbox", - "Wildcards" - ], - { - "title_aux": "ComfyUI-Chibi-Nodes" - } - ], - "https://github.com/choey/Comfy-Topaz": [ - [ - "TopazPhotoAI", - "TopazSharpenSettings", - "TopazUpscaleSettings" - ], - { - "title_aux": "Comfy-Topaz" - } - ], - "https://github.com/chris-arsenault/ComfyUI-AharaNodes": [ - [ - "FrameSegmenter", - "FrameSegmenterIndexer", - "RepeatSampler", - "RepeatSamplerConfigNode", - "RepeatSamplerConfigPatchLatent", - "RepeatSamplerConfigPatchModel" - ], - { - "title_aux": "ComfyUI-AharaNodes" - } - ], - "https://github.com/chris-the-wiz/EmbeddingsCurveEditor_ComfyUI": [ - [ - "Embeddings Curve Editor" - ], - { - "title_aux": "EmbeddingsCurveEditor_ComfyUI" - } - ], - "https://github.com/chrisfreilich/virtuoso-nodes": [ - [ - "BlackAndWhite", - "BlendIf", - "BlendModes", - "ColorBalance", - "ColorBalanceAdvanced", - "GaussianBlur", - "GaussianBlurDepth", - "HueSat", - "HueSatAdvanced", - "LensBlur", - "LensBlurDepth", - "Levels", - "MergeRGB", - "MotionBlur", - "MotionBlurDepth", - "SelectiveColor", - "SolidColor", - "SolidColorHSV", - "SolidColorRGB", - "SplitRGB" - ], - { - "author": "Chris Freilich", - "description": "This extension provides a \"Levels\" node.", - "nickname": "Virtuoso Pack - Contrast", - "title": "Virtuoso Pack - Contrast", - "title_aux": "Virtuoso Nodes for ComfyUI" - } - ], - "https://github.com/chrisgoringe/cg-image-picker": [ - [ - "Preview Chooser", - "Preview Chooser Fabric", - "Simple Chooser" - ], - { - "author": "chrisgoringe", - "description": "Custom nodes that preview images and pause the workflow to allow the user to select one or more to progress", - "nickname": "Image Chooser", - "title": "Image Chooser", - "title_aux": "Image chooser" - } - ], - "https://github.com/chrisgoringe/cg-noisetools": [ - [ - "Batch Noise Simulate", - "Mix Noise", - "Seperable Batch Noise", - "Shape Noise", - "Split Sigmas with Rewind" - ], - { - "title_aux": "Noise variation and batch noise tools" - } - ], - "https://github.com/chrisgoringe/cg-use-everywhere": [ - [ - "Seed Everywhere" - ], - { - "nodename_pattern": "(^(Prompts|Anything) Everywhere|Simple String)", - "title_aux": "Use Everywhere (UE Nodes)" - } - ], - "https://github.com/chrissy0/chris-comfyui-nodes": [ - [ - "PadImageSquare" - ], - { - "title_aux": "chris-comfyui-nodes" - } - ], - "https://github.com/christian-byrne/audio-separation-nodes-comfyui": [ - [ - "AudioCombine", - "AudioCrop", - "AudioGetTempo", - "AudioSeparation", - "AudioSpeedShift", - "AudioTempoMatch", - "AudioVideoCombine" - ], - { - "title_aux": "audio-separation-nodes-comfyui" - } - ], - "https://github.com/christian-byrne/img2colors-comfyui-node": [ - [ - "bmy_Img2ColorNode" - ], - { - "author": "christian-byrne", - "description": "", - "nickname": "img2color", - "title": "Img2Color Node - Detect and describe color palettes in images", - "title_aux": "Img2color - Extract Colors from Image" - } - ], - "https://github.com/christian-byrne/img2txt-comfyui-nodes": [ - [ - "img2txt BLIP/Llava Multimodel Tagger" - ], - { - "author": "christian-byrne", - "title": "Img2Txt auto captioning", - "title_aux": "img2txt-comfyui-nodes" - } - ], - "https://github.com/christian-byrne/size-match-compositing-nodes": [ - [ - "Composite Alpha Layer", - "Size Match Images/Masks" - ], - { - "title_aux": "Node - Size Matcher" - } - ], - "https://github.com/christian-byrne/youtube-dl-comfyui": [ - [ - "YoutubeDL" - ], - { - "title_aux": "youtube-dl-comfyui" - } - ], - "https://github.com/ciga2011/ComfyUI-MarkItDown": [ - [ - "WIZ_AUDIO2MARKDOWN", - "WIZ_EXCEL2MARKDOWN", - "WIZ_HTML2MARKDOWN", - "WIZ_IMAGE2MARKDOWN", - "WIZ_IPYNB2MARKDOWN", - "WIZ_LLM_CLIENT", - "WIZ_MARKITDOWN", - "WIZ_PDF2MARKDOWN", - "WIZ_POWERPOINT2MARKDOWN", - "WIZ_WORD2MARKDOWN" - ], - { - "title_aux": "ComfyUI MarkItDown" - } - ], - "https://github.com/ciga2011/ComfyUI-Pollinations": [ - [ - "PollinationsNode" - ], - { - "title_aux": "ComfyUI Pollinations" - } - ], - "https://github.com/ciga2011/ComfyUI-PromptOptimizer": [ - [ - "PromptOptimizer" - ], - { - "title_aux": "ComfyUI Prompt Optimizer" - } - ], - "https://github.com/ciri/comfyui-model-downloader": [ - [ - "Auto Model Downloader", - "CivitAI Downloader", - "HF Downloader" - ], - { - "title_aux": "ComfyUI Model Downloader" - } - ], - "https://github.com/city96/ComfyUI-GGUF": [ - [ - "CLIPLoaderGGUF", - "DualCLIPLoaderGGUF", - "TripleCLIPLoaderGGUF", - "UnetLoaderGGUF", - "UnetLoaderGGUFAdvanced" - ], - { - "preemptions": [ - "CLIPLoaderGGUF", - "DualCLIPLoaderGGUF", - "TripleCLIPLoaderGGUF", - "UnetLoaderGGUF", - "UnetLoaderGGUFAdvanced" - ], - "title_aux": "ComfyUI-GGUF" - } - ], - "https://github.com/city96/ComfyUI_ColorMod": [ - [ - "CV2Tonemap", - "CV2TonemapDrago", - "CV2TonemapDurand", - "CV2TonemapMantiuk", - "CV2TonemapReinhard", - "ColorModCompress", - "ColorModEdges", - "ColorModMove", - "ColorModPivot", - "ColorspaceConvert", - "HDRCreate", - "HDRExposureFusion", - "LoadImageHDR", - "LoadImageHighPrec", - "PreviewImageHighPrec", - "SaveImageHDR", - "SaveImageHighPrec" - ], - { - "title_aux": "ComfyUI_ColorMod" - } - ], - "https://github.com/city96/ComfyUI_DiT": [ - [ - "DiTCheckpointLoader", - "DiTCheckpointLoaderSimple", - "DiTLabelCombine", - "DiTLabelSelect", - "DiTSampler" - ], - { - "title_aux": "ComfyUI_DiT [WIP]" - } - ], - "https://github.com/city96/ComfyUI_ExtraModels": [ - [ - "DiTCondLabelEmpty", - "DiTCondLabelSelect", - "DitCheckpointLoader", - "EmptyDCAELatentImage", - "EmptySanaLatentImage", - "ExtraVAELoader", - "GemmaLoader", - "GemmaTextEncode", - "HYDiTCheckpointLoader", - "HYDiTSrcSizeCond", - "HYDiTTextEncode", - "HYDiTTextEncodeSimple", - "HYDiTTextEncoderLoader", - "MiaoBiCLIPLoader", - "MiaoBiDiffusersLoader", - "OverrideCLIPDevice", - "OverrideVAEDevice", - "PixArtCheckpointLoader", - "PixArtCheckpointLoaderSimple", - "PixArtControlNetCond", - "PixArtLoraLoader", - "PixArtResolutionCond", - "PixArtResolutionSelect", - "PixArtT5FromSD3CLIP", - "PixArtT5TextEncode", - "SanaCheckpointLoader", - "SanaResolutionCond", - "SanaResolutionSelect", - "SanaTextEncode", - "T5TextEncode", - "T5v11Loader" - ], - { - "title_aux": "Extra Models for ComfyUI" - } - ], - "https://github.com/city96/ComfyUI_NetDist": [ - [ - "CombineImageBatch", - "FetchRemote", - "LoadCurrentWorkflowJSON", - "LoadDiskWorkflowJSON", - "LoadImageUrl", - "LoadLatentNumpy", - "LoadLatentUrl", - "RemoteChainEnd", - "RemoteChainStart", - "RemoteQueueSimple", - "RemoteQueueWorker", - "SaveDiskWorkflowJSON", - "SaveImageUrl", - "SaveLatentNumpy" - ], - { - "title_aux": "ComfyUI_NetDist" - } - ], - "https://github.com/city96/SD-Latent-Interposer": [ - [ - "LatentInterposer" - ], - { - "title_aux": "Latent-Interposer" - } - ], - "https://github.com/city96/SD-Latent-Upscaler": [ - [ - "LatentUpscaler" - ], - { - "title_aux": "SD-Latent-Upscaler" - } - ], - "https://github.com/civen-cn/ComfyUI-PaddleOcr": [ - [ - "OcrBlur", - "OcrBoxMask", - "OcrImageText" - ], - { - "title_aux": "ComfyUI-PaddleOcr" - } - ], - "https://github.com/civen-cn/ComfyUI-Whisper-Translator": [ - [ - "Add Subtitles To FramesX", - "Apply WhisperX" - ], - { - "title_aux": "ComfyUI Whisper Translator" - } - ], - "https://github.com/civitai/civitai_comfy_nodes": [ - [ - "CivitAI_Checkpoint_Loader", - "CivitAI_Lora_Loader" - ], - { - "title_aux": "Civitai Comfy Nodes" - } - ], - "https://github.com/claussteinmassl/ComfyUI-CS-CustomNodes": [ - [ - "CS Transform" - ], - { - "title_aux": "CS Transform Node for ComfyUI" - } - ], - "https://github.com/clhui/ComfyUi-clh-Tool": [ - [ - "EchartGraph_clh", - "EchartOptionByPath_clh", - "EchartOption_clh", - "INTConstant_clh", - "JavaScript_clh", - "JoinStringMulti_clh", - "MathExpression_clh", - "SetRedis|clh", - "ShowText_clh", - "SomethingToString_clh", - "String2FatLabels_clh", - "String2Image_clh", - "StringConstant_clh" - ], - { - "author": "Dr.Lt.Data", - "description": "This extension offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler.", - "nickname": "CLH Simple Tool", - "title": "CLH simple Tool", - "title_aux": "Clh Tool for ComfyUI" - } - ], - "https://github.com/codeprimate/ComfyUI-MaskContourProcessor": [ - [ - "MaskContourProcessor" - ], - { - "title_aux": "ComfyUI Mask Contour Processor" - } - ], - "https://github.com/comfyanonymous/ComfyUI": [ - [ - "AddNoise", - "AlignYourStepsScheduler", - "BasicGuider", - "BasicScheduler", - "BetaSamplingScheduler", - "CFGGuider", - "CLIPAttentionMultiply", - "CLIPLoader", - "CLIPMergeAdd", - "CLIPMergeSimple", - "CLIPMergeSubtract", - "CLIPSave", - "CLIPSetLastLayer", - "CLIPTextEncode", - "CLIPTextEncodeControlnet", - "CLIPTextEncodeFlux", - "CLIPTextEncodeHunyuanDiT", - "CLIPTextEncodePixArtAlpha", - "CLIPTextEncodeSD3", - "CLIPTextEncodeSDXL", - "CLIPTextEncodeSDXLRefiner", - "CLIPVisionEncode", - "CLIPVisionLoader", - "Canny", - "CheckpointLoader", - "CheckpointLoaderSimple", - "CheckpointSave", - "ConditioningAverage", - "ConditioningCombine", - "ConditioningConcat", - "ConditioningSetArea", - "ConditioningSetAreaPercentage", - "ConditioningSetAreaStrength", - "ConditioningSetMask", - "ConditioningSetTimestepRange", - "ConditioningStableAudio", - "ConditioningZeroOut", - "ControlNetApply", - "ControlNetApplyAdvanced", - "ControlNetApplySD3", - "ControlNetInpaintingAliMamaApply", - "ControlNetLoader", - "CosmosImageToVideoLatent", - "CropMask", - "DiffControlNetLoader", - "DifferentialDiffusion", - "DiffusersLoader", - "DisableNoise", - "DualCFGGuider", - "DualCLIPLoader", - "EmptyCosmosLatentVideo", - "EmptyHunyuanLatentVideo", - "EmptyImage", - "EmptyLTXVLatentVideo", - "EmptyLatentAudio", - "EmptyLatentImage", - "EmptyMochiLatentVideo", - "EmptySD3LatentImage", - "ExponentialScheduler", - "FeatherMask", - "FlipSigmas", - "FluxDisableGuidance", - "FluxGuidance", - "FreeU", - "FreeU_V2", - "GITSScheduler", - "GLIGENLoader", - "GLIGENTextBoxApply", - "GrowMask", - "HyperTile", - "HypernetworkLoader", - "ImageBatch", - "ImageBlend", - "ImageBlur", - "ImageColorToMask", - "ImageCompositeMasked", - "ImageCrop", - "ImageFromBatch", - "ImageInvert", - "ImageOnlyCheckpointLoader", - "ImageOnlyCheckpointSave", - "ImagePadForOutpaint", - "ImageQuantize", - "ImageScale", - "ImageScaleBy", - "ImageScaleToTotalPixels", - "ImageSharpen", - "ImageToMask", - "ImageUpscaleWithModel", - "InpaintModelConditioning", - "InstructPixToPixConditioning", - "InvertMask", - "JoinImageWithAlpha", - "KSampler", - "KSamplerAdvanced", - "KSamplerSelect", - "KarrasScheduler", - "LTXVConditioning", - "LTXVImgToVideo", - "LTXVScheduler", - "LaplaceScheduler", - "LatentAdd", - "LatentApplyOperation", - "LatentApplyOperationCFG", - "LatentBatch", - "LatentBatchSeedBehavior", - "LatentBlend", - "LatentComposite", - "LatentCompositeMasked", - "LatentCrop", - "LatentFlip", - "LatentFromBatch", - "LatentInterpolate", - "LatentMultiply", - "LatentOperationSharpen", - "LatentOperationTonemapReinhard", - "LatentRotate", - "LatentSubtract", - "LatentUpscale", - "LatentUpscaleBy", - "Load3D", - "Load3DAnimation", - "LoadAudio", - "LoadImage", - "LoadImageMask", - "LoadLatent", - "LoraLoader", - "LoraLoaderModelOnly", - "LoraSave", - "Mahiro", - "MaskComposite", - "MaskToImage", - "ModelMergeAdd", - "ModelMergeAuraflow", - "ModelMergeBlocks", - "ModelMergeFlux1", - "ModelMergeLTXV", - "ModelMergeMochiPreview", - "ModelMergeSD1", - "ModelMergeSD2", - "ModelMergeSD35_Large", - "ModelMergeSD3_2B", - "ModelMergeSDXL", - "ModelMergeSimple", - "ModelMergeSubtract", - "ModelSamplingAuraFlow", - "ModelSamplingContinuousEDM", - "ModelSamplingContinuousV", - "ModelSamplingDiscrete", - "ModelSamplingFlux", - "ModelSamplingLTXV", - "ModelSamplingSD3", - "ModelSamplingStableCascade", - "ModelSave", - "Morphology", - "PatchModelAddDownscale", - "PerpNeg", - "PerpNegGuider", - "PerturbedAttentionGuidance", - "PhotoMakerEncode", - "PhotoMakerLoader", - "PolyexponentialScheduler", - "PorterDuffImageComposite", - "Preview3D", - "PreviewAudio", - "PreviewImage", - "RandomNoise", - "RebatchImages", - "RebatchLatents", - "RepeatImageBatch", - "RepeatLatentBatch", - "RescaleCFG", - "SDTurboScheduler", - "SD_4XUpscale_Conditioning", - "SV3D_Conditioning", - "SVD_img2vid_Conditioning", - "SamplerCustom", - "SamplerCustomAdvanced", - "SamplerDPMAdaptative", - "SamplerDPMPP_2M_SDE", - "SamplerDPMPP_2S_Ancestral", - "SamplerDPMPP_3M_SDE", - "SamplerDPMPP_SDE", - "SamplerEulerAncestral", - "SamplerEulerAncestralCFGPP", - "SamplerEulerCFGpp", - "SamplerLCMUpscale", - "SamplerLMS", - "SaveAnimatedPNG", - "SaveAnimatedWEBP", - "SaveAudio", - "SaveImage", - "SaveImageWebsocket", - "SaveLatent", - "SelfAttentionGuidance", - "SetFirstSigma", - "SetLatentNoiseMask", - "SetUnionControlNetType", - "SkipLayerGuidanceDiT", - "SkipLayerGuidanceSD3", - "SolidMask", - "SplitImageWithAlpha", - "SplitSigmas", - "SplitSigmasDenoise", - "StableCascade_EmptyLatentImage", - "StableCascade_StageB_Conditioning", - "StableCascade_StageC_VAEEncode", - "StableCascade_SuperResolutionControlnet", - "StableZero123_Conditioning", - "StableZero123_Conditioning_Batched", - "StubConstantImage", - "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", - "TestIsChangedWithConstants", - "TestLazyMixImages", - "TestListToAccumulationNode", - "TestMakeListNode", - "TestMixedExpansionReturns", - "TestStringConditions", - "TestToBoolNode", - "TestVariadicAverage", - "TestWhileLoopClose", - "TestWhileLoopOpen", - "ThresholdMask", - "TomePatchModel", - "TorchCompileModel", - "TripleCLIPLoader", - "UNETLoader", - "UNetCrossAttentionMultiply", - "UNetSelfAttentionMultiply", - "UNetTemporalAttentionMultiply", - "UpscaleModelLoader", - "VAEDecode", - "VAEDecodeAudio", - "VAEDecodeTiled", - "VAEEncode", - "VAEEncodeAudio", - "VAEEncodeForInpaint", - "VAEEncodeTiled", - "VAELoader", - "VAESave", - "VPScheduler", - "VideoLinearCFGGuidance", - "VideoTriangleCFGGuidance", - "WebcamCapture", - "unCLIPCheckpointLoader", - "unCLIPConditioning" - ], - { - "title_aux": "ComfyUI" - } - ], - "https://github.com/comfyanonymous/ComfyUI_TensorRT": [ - [ - "DYNAMIC_TRT_MODEL_CONVERSION", - "STATIC_TRT_MODEL_CONVERSION", - "TensorRTLoader" - ], - { - "title_aux": "TensorRT Node for ComfyUI" - } - ], - "https://github.com/comfyanonymous/ComfyUI_experiments": [ - [ - "ModelMergeBlockNumber", - "ModelMergeSDXL", - "ModelMergeSDXLDetailedTransformers", - "ModelMergeSDXLTransformers", - "ModelSamplerTonemapNoiseTest", - "ReferenceOnlySimple", - "RescaleClassifierFreeGuidanceTest", - "TonemapNoiseWithRescaleCFG" - ], - { - "title_aux": "ComfyUI_experiments" - } - ], - "https://github.com/concarne000/ConCarneNode": [ - [ - "BingImageGrabber", - "Hermes", - "Zephyr" - ], - { - "title_aux": "ConCarneNode" - } - ], - "https://github.com/conquestace/ComfyUI-ImageUploader": [ - [ - "ImageUploader" - ], - { - "author": "ConquestAce", - "description": "Upload to temporary websites with API.", - "nickname": "Image Uploader", - "title": "Image Uploader", - "title_aux": "Image Uploader" - } - ], - "https://github.com/coreyryanhanson/ComfyQR": [ - [ - "comfy-qr-by-image-size", - "comfy-qr-by-module-size", - "comfy-qr-by-module-split", - "comfy-qr-mask_errors" - ], - { - "title_aux": "ComfyQR" - } - ], - "https://github.com/coreyryanhanson/ComfyQR-scanning-nodes": [ - [ - "comfy-qr-read", - "comfy-qr-validate" - ], - { - "title_aux": "ComfyQR-scanning-nodes" - } - ], - "https://github.com/cozy-comfyui/cozy_comm": [ - [ - "CozyDiscordPost" - ], - { - "nodename_pattern": " \\(cozy\\)", - "title_aux": "Cozy Communication" - } - ], - "https://github.com/cozymantis/cozy-utils-comfyui-nodes": [ - [ - "Cozy Sampler Options" - ], - { - "title_aux": "Cozy Utils" - } - ], - "https://github.com/cozymantis/human-parser-comfyui-node": [ - [ - "Cozy Human Parser ATR", - "Cozy Human Parser LIP", - "Cozy Human Parser Pascal" - ], - { - "title_aux": "Cozy Human Parser" - } - ], - "https://github.com/cozymantis/pose-generator-comfyui-node": [ - [ - "Cozy Pose Body Reference", - "Cozy Pose Face Reference" - ], - { - "title_aux": "Cozy Reference Pose Generator" - } - ], - "https://github.com/cr7Por/ComfyUI_DepthFlow": [ - [ - "DepthFlowSimple" - ], - { - "title_aux": "ComfyUI_DepthFlow" - } - ], - "https://github.com/crystian/ComfyUI-Crystools": [ - [], - { - "author": "Crystian", - "description": "Plugins for multiples uses, mainly for debugging, you need them! IG: https://www.instagram.com/crystian.ia", - "nickname": "Crystools", - "nodename_pattern": " \\[Crystools\\]$", - "title": "Crystools", - "title_aux": "Crystools" - } - ], - "https://github.com/cubiq/Block_Patcher_ComfyUI": [ - [ - "FluxBlockPatcherSampler", - "FluxBlockShareKV", - "PlotBlockParams" - ], - { - "title_aux": "Flux blocks patcher sampler" - } - ], - "https://github.com/cubiq/ComfyUI_FaceAnalysis": [ - [ - "FaceAlign", - "FaceAnalysisModels", - "FaceBoundingBox", - "FaceEmbedDistance", - "FaceSegmentation", - "FaceWarp" - ], - { - "title_aux": "Face Analysis for ComfyUI" - } - ], - "https://github.com/cubiq/ComfyUI_IPAdapter_plus": [ - [ - "IPAAdapterFaceIDBatch", - "IPAdapter", - "IPAdapterAdvanced", - "IPAdapterBatch", - "IPAdapterClipVisionEnhancer", - "IPAdapterClipVisionEnhancerBatch", - "IPAdapterCombineEmbeds", - "IPAdapterCombineParams", - "IPAdapterCombineWeights", - "IPAdapterEmbeds", - "IPAdapterEmbedsBatch", - "IPAdapterEncoder", - "IPAdapterFaceID", - "IPAdapterFaceIDKolors", - "IPAdapterFromParams", - "IPAdapterInsightFaceLoader", - "IPAdapterLoadEmbeds", - "IPAdapterMS", - "IPAdapterModelLoader", - "IPAdapterNoise", - "IPAdapterPreciseComposition", - "IPAdapterPreciseCompositionBatch", - "IPAdapterPreciseStyleTransfer", - "IPAdapterPreciseStyleTransferBatch", - "IPAdapterPromptScheduleFromWeightsStrategy", - "IPAdapterRegionalConditioning", - "IPAdapterSaveEmbeds", - "IPAdapterStyleComposition", - "IPAdapterStyleCompositionBatch", - "IPAdapterTiled", - "IPAdapterTiledBatch", - "IPAdapterUnifiedLoader", - "IPAdapterUnifiedLoaderCommunity", - "IPAdapterUnifiedLoaderFaceID", - "IPAdapterWeights", - "IPAdapterWeightsFromStrategy", - "PrepImageForClipVision" - ], - { - "preemptions": [ - "IPAAdapterFaceIDBatch", - "IPAdapter", - "IPAdapterAdvanced", - "IPAdapterBatch", - "IPAdapterClipVisionEnhancer", - "IPAdapterClipVisionEnhancerBatch", - "IPAdapterCombineEmbeds", - "IPAdapterCombineParams", - "IPAdapterCombineWeights", - "IPAdapterEmbeds", - "IPAdapterEmbedsBatch", - "IPAdapterEncoder", - "IPAdapterFaceID", - "IPAdapterFromParams", - "IPAdapterInsightFaceLoader", - "IPAdapterLoadEmbeds", - "IPAdapterMS", - "IPAdapterModelLoader", - "IPAdapterNoise", - "IPAdapterPreciseComposition", - "IPAdapterPreciseCompositionBatch", - "IPAdapterPreciseStyleTransfer", - "IPAdapterPreciseStyleTransferBatch", - "IPAdapterPromptScheduleFromWeightsStrategy", - "IPAdapterRegionalConditioning", - "IPAdapterSaveEmbeds", - "IPAdapterStyleComposition", - "IPAdapterStyleCompositionBatch", - "IPAdapterTiled", - "IPAdapterTiledBatch", - "IPAdapterUnifiedLoader", - "IPAdapterUnifiedLoaderCommunity", - "IPAdapterUnifiedLoaderFaceID", - "IPAdapterWeights", - "IPAdapterWeightsFromStrategy", - "PrepImageForClipVision" - ], - "title_aux": "ComfyUI_IPAdapter_plus" - } - ], - "https://github.com/cubiq/ComfyUI_InstantID": [ - [ - "ApplyInstantID", - "ApplyInstantIDAdvanced", - "ApplyInstantIDControlNet", - "FaceKeypointsPreprocessor", - "InstantIDAttentionPatch", - "InstantIDFaceAnalysis", - "InstantIDModelLoader" - ], - { - "title_aux": "ComfyUI InstantID (Native Support)" - } - ], - "https://github.com/cubiq/ComfyUI_SimpleMath": [ - [ - "SimpleMath", - "SimpleMathDebug" - ], - { - "title_aux": "Simple Math" - } - ], - "https://github.com/cubiq/ComfyUI_essentials": [ - [ - "ApplyCLIPSeg+", - "BatchCount+", - "CLIPTextEncodeSDXL+", - "ConditioningCombineMultiple+", - "ConsoleDebug+", - "DebugTensorShape+", - "DisplayAny", - "DrawText+", - "ExtractKeyframes+", - "FluxAttentionSeeker+", - "FluxBlocksBuster+", - "FluxSamplerParams+", - "GetImageSize+", - "GuidanceTimestepping+", - "ImageApplyLUT+", - "ImageBatchMultiple+", - "ImageBatchToList+", - "ImageCASharpening+", - "ImageColorMatch+", - "ImageColorMatchAdobe+", - "ImageComposite+", - "ImageCompositeFromMaskBatch+", - "ImageCrop+", - "ImageDesaturate+", - "ImageEnhanceDifference+", - "ImageExpandBatch+", - "ImageFlip+", - "ImageFromBatch+", - "ImageHistogramMatch+", - "ImageListToBatch+", - "ImagePosterize+", - "ImagePreviewFromLatent+", - "ImageRandomTransform+", - "ImageRemoveAlpha+", - "ImageRemoveBackground+", - "ImageResize+", - "ImageSeamCarving+", - "ImageSmartSharpen+", - "ImageTile+", - "ImageToDevice+", - "ImageUntile+", - "InjectLatentNoise+", - "KSamplerVariationsStochastic+", - "KSamplerVariationsWithNoise+", - "LoadCLIPSegModels+", - "LorasForFluxParams+", - "MaskBatch+", - "MaskBlur+", - "MaskBoundingBox+", - "MaskExpandBatch+", - "MaskFix+", - "MaskFlip+", - "MaskFromBatch+", - "MaskFromColor+", - "MaskFromList+", - "MaskFromRGBCMYBW+", - "MaskFromSegmentation+", - "MaskPreview+", - "MaskSmooth+", - "ModelCompile+", - "ModelSamplingSD3Advanced+", - "NoiseFromImage+", - "PixelOEPixelize+", - "PlotParameters+", - "RemBGSession+", - "RemoveLatentMask+", - "SD3AttentionSeekerLG+", - "SD3AttentionSeekerT5+", - "SD3NegativeConditioning+", - "SDXLEmptyLatentSizePicker+", - "SamplerSelectHelper+", - "SchedulerSelectHelper+", - "SimpleComparison+", - "SimpleCondition+", - "SimpleMath+", - "SimpleMathBoolean+", - "SimpleMathCondition+", - "SimpleMathDual+", - "SimpleMathFloat+", - "SimpleMathInt+", - "SimpleMathPercent+", - "SimpleMathSlider+", - "SimpleMathSliderLowRes+", - "TextEncodeForSamplerParams+", - "TransitionMask+", - "TransparentBGSession+" - ], - { - "title_aux": "ComfyUI Essentials" - } - ], - "https://github.com/cubiq/PuLID_ComfyUI": [ - [ - "ApplyPulid", - "ApplyPulidAdvanced", - "PulidEvaClipLoader", - "PulidInsightFaceLoader", - "PulidModelLoader" - ], - { - "title_aux": "PuLID_ComfyUI" - } - ], - "https://github.com/cuongloveit/comfy_http_request": [ - [ - "Send Http Request", - "Send Http request" - ], - { - "title_aux": "comfy_http_request" - } - ], - "https://github.com/curiousjp/ComfyUI-MaskBatchPermutations": [ - [ - "CombinatorialDetailer", - "FlattenAgainstOriginal", - "PermuteMaskBatch" - ], - { - "title_aux": "ComfyUI-MaskBatchPermutations" - } - ], - "https://github.com/czcz1024/Comfyui-FaceCompare": [ - [ - "FaceCompare" - ], - { - "author": "czcz1024", - "description": "Face Compare", - "nickname": "Face Compare", - "title": "Face Compare", - "title_aux": "Face Compare" - } - ], - "https://github.com/da2el-ai/ComfyUI-d2-send-eagle": [ - [ - "D2 Send Eagle" - ], - { - "author": "da2el", - "description": "Send images to Eagle, an image management application", - "title": "D2 Send Eagle", - "title_aux": "D2 Send Eagle" - } - ], - "https://github.com/da2el-ai/ComfyUI-d2-size-selector": [ - [ - "D2_SizeSelector" - ], - { - "author": "da2el", - "description": "Easy select image size", - "title": "D2 Size Selector", - "title_aux": "D2 Size Selector" - } - ], - "https://github.com/da2el-ai/ComfyUI-d2-steps": [ - [ - "D2 Refiner Steps", - "D2 Refiner Steps A1111", - "D2 Refiner Steps Tester" - ], - { - "author": "da2el", - "description": "Calculate the steps for the refiner", - "title": "D2 Steps", - "title_aux": "D2 Steps" - } - ], - "https://github.com/da2el-ai/ComfyUI-d2-xyplot-utils": [ - [ - "D2 Checkpoint List", - "D2 Checkpoint Loader", - "D2 Multi Output", - "D2 Prompt SR", - "D2 Regex Switcher" - ], - { - "author": "da2el", - "description": "A parameter output node compatible with qq-nodes-comfyui. It outputs parameters such as Prompt S/R and seed.", - "title": "D2 XYPlot Utils", - "title_aux": "D2 XYPlot Utils" - } - ], - "https://github.com/da2el-ai/D2-nodes-ComfyUI": [ - [ - "D2 Checkpoint Loader", - "D2 Controlnet Loader", - "D2 EmptyImage Alpha", - "D2 Filename Template", - "D2 Folder Image Queue", - "D2 Get Image Size", - "D2 Grid Image", - "D2 Image Resize", - "D2 Image Stack", - "D2 KSampler", - "D2 KSampler(Advanced)", - "D2 List To String", - "D2 Load Folder Images", - "D2 Load Image", - "D2 Multi Output", - "D2 Pipe", - "D2 Preview Image", - "D2 Refiner Steps", - "D2 Refiner Steps A1111", - "D2 Refiner Steps Tester", - "D2 Regex Replace", - "D2 Regex Switcher", - "D2 Resize Calculator", - "D2 Size Slector", - "D2 XY Annotation", - "D2 XY Checkpoint List", - "D2 XY Folder Images", - "D2 XY Grid Image", - "D2 XY List To Plot", - "D2 XY Lora List", - "D2 XY Model List", - "D2 XY Plot", - "D2 XY Plot Easy", - "D2 XY Prompt SR", - "D2 XY Prompt SR2", - "D2 XY Seed", - "D2 XY Seed2", - "D2 XY String To Plot" - ], - { - "author": "da2el", - "description": "A Collection of Handy Custom Nodes for ComfyUI", - "title": "D2 Nodes", - "title_aux": "D2 Nodes ComfyUI" - } - ], - "https://github.com/dadoirie/ComfyUI_Dados_Nodes": [ - [ - "PinterestImageNode" - ], - { - "title_aux": "ComfyUI_Dados_Nodes" - } - ], - "https://github.com/dafeng012/comfyui-imgmake": [ - [ - "LoadImageListPlus", - "LoadImagesFromPath_lp", - "SaveImage_lp", - "SelectImageName", - "VideoKeyFramesExtractor", - "ebsynth_hecheng", - "ebsynth_main", - "ebsynth_process", - "image2mask", - "video2image" - ], - { - "title_aux": "comfyui-imgmake" - } - ], - "https://github.com/dagthomas/comfyui_dagthomas": [ - [ - "APNLatent", - "CustomPromptLoader", - "DynamicStringCombinerNode", - "FileReaderNode", - "FlexibleStringMergerNode", - "GPT4MiniNode", - "GPT4VisionNode", - "GeminiCustomVision", - "GeminiTextOnly", - "Gpt4CustomVision", - "Gpt4VisionCloner", - "OllamaNode", - "OllamaVisionNode", - "PGSD3LatentGenerator", - "PhiCustomModelInference", - "PhiModelInference", - "PhiModelLoader", - "PromptGenerator", - "RandomIntegerNode", - "SentenceMixerNode", - "StringMergerNode" - ], - { - "title_aux": "SDXL Auto Prompter" - } - ], - "https://github.com/daniabib/ComfyUI_ProPainter_Nodes": [ - [ - "ProPainterInpaint", - "ProPainterOutpaint" - ], - { - "title_aux": "ComfyUI ProPainter Nodes" - } - ], - "https://github.com/daniel-lewis-ab/ComfyUI-Llama": [ - [ - "Call LLM Advanced", - "Call LLM Basic", - "LLM_Create_Completion Advanced", - "LLM_Detokenize", - "LLM_Embed", - "LLM_Eval", - "LLM_Load_State", - "LLM_Reset", - "LLM_Sample", - "LLM_Save_State", - "LLM_Token_BOS", - "LLM_Token_EOS", - "LLM_Tokenize", - "Load LLM Model Advanced", - "Load LLM Model Basic" - ], - { - "title_aux": "ComfyUI-Llama" - } - ], - "https://github.com/daniel-lewis-ab/ComfyUI-TTS": [ - [ - "Load_Piper_Model", - "Piper_Speak_Text" - ], - { - "title_aux": "ComfyUI-TTS" - } - ], - "https://github.com/darkpixel/darkprompts": [ - [ - "DarkAnyToString", - "DarkCheckpointRandomizer", - "DarkCheckpointSwitcher", - "DarkCombine", - "DarkFaceIndexGenerator", - "DarkFaceIndexShuffle", - "DarkFolders", - "DarkLoRALoader", - "DarkLoraStackFromString", - "DarkPopLoraFromStack", - "DarkPrompt" - ], - { - "title_aux": "DarkPrompts" - } - ], - "https://github.com/darth-veitcher/comfydv": [ - [ - "CircuitBreaker", - "FormatString", - "ModelUnloader", - "RandomChoice" - ], - { - "author": "Darth Veitcher", - "description": "This collection of nodes provides string formatting, random choices, model memory management, and other quality of life improvements.", - "nickname": "DV Nodes", - "title": "Comfy DV Nodes", - "title_aux": "Comfy DV" - } - ], - "https://github.com/daryltucker/ComfyUI-LoadFiles": [ - [ - "CountLines", - "ListFilenames", - "LoadImages" - ], - { - "title_aux": "ComfyUI-LoadFiles" - } - ], - "https://github.com/dave-palt/comfyui_DSP_imagehelpers": [ - [ - "dsp-imagehelpers-concat" - ], - { - "title_aux": "comfyui_DSP_imagehelpers" - } - ], - "https://github.com/davidgressett/comfyui-systemlevel": [ - [ - "CartesianCSVNode" - ], - { - "title_aux": "CartesianCSVNode for ComfyUI" - } - ], - "https://github.com/daxcay/ComfyUI-DataSet": [ - [ - "DataSet_ClaudeAIChat", - "DataSet_ClaudeAIChatImage", - "DataSet_ConceptManager", - "DataSet_CopyFiles", - "DataSet_FindAndReplace", - "DataSet_GroqChat", - "DataSet_GroqChatImage", - "DataSet_LoadImage", - "DataSet_OpenAIChat", - "DataSet_OpenAIChatImage", - "DataSet_OpenAIChatImageBatch", - "DataSet_PathSelector", - "DataSet_SaveImage", - "DataSet_SaveImagePro", - "DataSet_TextFilesLoad", - "DataSet_TextFilesLoadFromList", - "DataSet_TextFilesSave", - "DataSet_TriggerWords", - "DataSet_Visualizer" - ], - { - "author": "Daxton Caylor", - "description": "Data Research, Preparation, and Manipulation Nodes for Model Trainers, Artists, Designers, and Animators.", - "nickname": "ComfyUI-DataSet", - "title": "ComfyUI-DataSet", - "title_aux": "ComfyUI-DataSet" - } - ], - "https://github.com/daxcay/ComfyUI-JDCN": [ - [ - "JDCN_AnyCheckpointLoader", - "JDCN_AnyFileList", - "JDCN_AnyFileListHelper", - "JDCN_AnyFileListRandom", - "JDCN_AnyFileSelector", - "JDCN_BatchCounter", - "JDCN_BatchCounterAdvance", - "JDCN_BatchImageLoadFromDir", - "JDCN_BatchImageLoadFromList", - "JDCN_BatchLatentLoadFromDir", - "JDCN_BatchLatentLoadFromList", - "JDCN_BatchSaveLatent", - "JDCN_BoolInt", - "JDCN_EnableDisable", - "JDCN_FileMover", - "JDCN_ImageSaver", - "JDCN_ListToString", - "JDCN_LoadImage", - "JDCN_ReBatch", - "JDCN_SeamlessExperience", - "JDCN_ShowAny", - "JDCN_SplitString", - "JDCN_StringManipulator", - "JDCN_StringToList", - "JDCN_SwapInputs", - "JDCN_TXTFileSaver", - "JDCN_VHSFileMover" - ], - { - "author": "Daxton Caylor & Jerry Davos", - "description": "Custom Utility Nodes for Artists, Designers and Animators.", - "nickname": "ComfyUI-JDCN", - "title": "ComfyUI-JDCN", - "title_aux": "ComfyUI-JDCN" - } - ], - "https://github.com/daxcay/ComfyUI-TG": [ - [ - "TG_ImageSaver" - ], - { - "author": "Daxton Caylor", - "description": "This node enables someone to run comfyui in telegram.", - "nickname": "ComfyUI-TG", - "title": "ComfyUI-TG", - "title_aux": "ComfyUI-TG" - } - ], - "https://github.com/daxcay/ComfyUI-WA": [ - [ - "WA_ImageSaver" - ], - { - "author": "Daxton Caylor", - "description": "This node enables someone to run comfyui in whatsapp.", - "nickname": "ComfyUI-WA", - "title": "ComfyUI-WA", - "title_aux": "ComfyUI-WA" - } - ], - "https://github.com/daxcay/ComfyUI-YouTubeVideoPlayer": [ - [ - "YouTubeVideoPlayer" - ], - { - "author": "Daxton Caylor & Jerry Davos", - "description": "YouTube Video Player in Comfy.", - "nickname": "ComfyUI-YouTubeVideoPlayer", - "title": "ComfyUI-YouTubeVideoPlayer", - "title_aux": "ComfyUI-YouTubeVideoPlayer" - } - ], - "https://github.com/dchatel/comfyui_davcha": [ - [ - "ApplyMask", - "ConditioningCompress", - "DStack", - "DavchaCLIPMergeSimple", - "DavchaCLIPTextEncode", - "DavchaConditioningConcat", - "DavchaEmptyLatentImage", - "DavchaLoadVideo", - "DavchaMaskImage", - "DavchaModelMergeSD1", - "DavchaModelMergeSDXL", - "DavchaModelMergeSimple", - "DavchaPop", - "PercentPadding", - "ResizeCropFit", - "SmartMask", - "SoftErosion", - "StringScheduleHelper" - ], - { - "title_aux": "comfyui_davcha" - } - ], - "https://github.com/dchatel/comfyui_facetools": [ - [ - "BiSeNetMask", - "CropFaces", - "DetectFaces", - "GenderFaceFilter", - "JonathandinuMask", - "MergeWarps", - "OrderedFaceFilter", - "WarpFacesBack" - ], - { - "title_aux": "comfyui_facetools" - } - ], - "https://github.com/denfrost/Den_ComfyUI_Workflow": [ - [ - "Den_BatchIndex_AS", - "Den_CropImage_AS", - "Den_Eval_AS", - "Den_FaceRestoreCFWithModel", - "Den_GPTLoaderSimple_llama", - "Den_GPTSampler_llama", - "Den_ImageMixMasked_As", - "Den_ImageToLatentSpace", - "Den_ImageToMask_AS", - "Den_Int2Any_AS", - "Den_LatentAdd_AS", - "Den_LatentMixMasked_As", - "Den_LatentMix_AS", - "Den_LatentToImages_AS", - "Den_LoadLatent_AS", - "Den_MapRange_AS", - "Den_MaskToImage_AS", - "Den_Math_AS", - "Den_NoiseImage_AS", - "Den_Number2Float_AS", - "Den_Number2Int_AS", - "Den_Number_AS", - "Den_SVD_img2vid", - "Den_SaveLatent_AS", - "Den_TextToImage_AS", - "Den_TextWildcardList_AS", - "Increment_AS" - ], - { - "title_aux": "Den_ComfyUI_Workflows" - } - ], - "https://github.com/deroberon/StableZero123-comfyui": [ - [ - "SDZero ImageSplit", - "Stablezero123", - "Stablezero123WithDepth" - ], - { - "title_aux": "StableZero123-comfyui" - } - ], - "https://github.com/deroberon/demofusion-comfyui": [ - [ - "Batch Unsampler", - "Demofusion", - "Demofusion From Single File", - "Iterative Mixing KSampler" - ], - { - "title_aux": "demofusion-comfyui" - } - ], - "https://github.com/dfghsdh/ComfyUI_FluxPromptGen": [ - [ - "FluxImageCaptionNode", - "FluxPromptGeneratorNode" - ], - { - "title_aux": "ComfyUI_FluxPromptGen" - } - ], - "https://github.com/dfl/comfyui-clip-with-break": [ - [ - "AdvancedCLIPTextEncodeWithBreak", - "CLIPTextEncodeWithBreak" - ], - { - "author": "dfl", - "description": "CLIP text encoder that does BREAK prompting like A1111", - "nickname": "CLIP with BREAK", - "title": "CLIP with BREAK syntax", - "title_aux": "CLIP with BREAK syntax" - } - ], - "https://github.com/dfl/comfyui-tcd-scheduler": [ - [ - "SamplerTCD", - "SamplerTCD EulerA", - "TCDScheduler" - ], - { - "title_aux": "ComfyUI-TCD-scheduler" - } - ], - "https://github.com/diStyApps/ComfyUI-disty-Flow": [ - [ - "Flow" - ], - { - "title_aux": "Flow - Streamlined Way to ComfyUI" - } - ], - "https://github.com/diStyApps/ComfyUI_FrameMaker": [ - [ - "FrameMaker", - "FrameMakerBatch" - ], - { - "title_aux": "ComfyUI Frame Maker" - } - ], - "https://github.com/dicksondickson/ComfyUI-Dickson-Nodes": [ - [ - "DicksonColorMatch", - "DicksonLoadImage", - "Dickson_TTP_Preprocessor_Simple", - "Dickson_TTP_Preprocessor_cufoff", - "Dickson_TTP_Tile_Preprocessor_GF" - ], - { - "description": "This is a set of custom nodes that I've either written myself or adapted from other authors for my own convenience. Currently includes color matching node forked from StableSR and TTPlanet's controlnet preprocessor. https://github.com/dicksondickson", - "nickname": "Dickson Nodes", - "title": "Dickson Nodes", - "title_aux": "ComfyUI-Dickson-Nodes" - } - ], - "https://github.com/digitaljohn/comfyui-propost": [ - [ - "ProPostApplyLUT", - "ProPostDepthMapBlur", - "ProPostFilmGrain", - "ProPostRadialBlur", - "ProPostVignette" - ], - { - "title_aux": "ComfyUI-ProPost" - } - ], - "https://github.com/dimtoneff/ComfyUI-PixelArt-Detector": [ - [ - "PixelArtAddDitherPattern", - "PixelArtDetectorConverter", - "PixelArtDetectorSave", - "PixelArtDetectorToImage", - "PixelArtLoadPalettes" - ], - { - "title_aux": "ComfyUI PixelArt Detector" - } - ], - "https://github.com/diontimmer/ComfyUI-Vextra-Nodes": [ - [ - "Add Text To Image", - "Apply Instagram Filter", - "Create Solid Color", - "Flatten Colors", - "Generate Noise Image", - "GlitchThis Effect", - "Hue Rotation", - "Load Picture Index", - "Pixel Sort", - "Play Sound At Execution", - "Prettify Prompt Using distilgpt2", - "Swap Color Mode" - ], - { - "title_aux": "ComfyUI-Vextra-Nodes" - } - ], - "https://github.com/discopixel-studio/comfyui-discopixel": [ - [ - "PhotoroomRemoveBG" - ], - { - "author": "Anson Kao", - "description": "A small collection of custom nodes for use with ComfyUI, by Discopixel", - "nickname": "ComfyUI Discopixel", - "title": "ComfyUI Discopixel", - "title_aux": "PhotoRoom Nodes by Discopixel" - } - ], - "https://github.com/discus0434/comfyui-caching-embeddings": [ - [ - "CachingCLIPTextEncode" - ], - { - "title_aux": "ComfyUI Caching Embeddings" - } - ], - "https://github.com/discus0434/comfyui-flux-accelerator": [ - [ - "\ud83c\udf6dFluxAccelerator" - ], - { - "title_aux": "ComfyUI Flux Accelerator" - } - ], - "https://github.com/djbielejeski/a-person-mask-generator": [ - [ - "APersonFaceLandmarkMaskGenerator", - "APersonMaskGenerator" - ], - { - "title_aux": "a-person-mask-generator" - } - ], - "https://github.com/dmMaze/sketch2manga": [ - [ - "BlendScreentone", - "EmptyLatentImageAdvanced" - ], - { - "title_aux": "Sketch2Manga" - } - ], - "https://github.com/dmarx/ComfyUI-AudioReactive": [ - [ - "OpAbs", - "OpBandpass", - "OpClamp", - "OpHarmonic", - "OpModulo", - "OpNormalize", - "OpNovelty", - "OpPercussive", - "OpPow", - "OpPow2", - "OpPredominant_pulse", - "OpQuantize", - "OpRms", - "OpSmoosh", - "OpSmooth", - "OpSqrt", - "OpStretch", - "OpSustain", - "OpThreshold" - ], - { - "title_aux": "ComfyUI-AudioReactive" - } - ], - "https://github.com/dmarx/ComfyUI-Keyframed": [ - [ - "Example", - "KfAddCurveToPGroup", - "KfAddCurveToPGroupx10", - "KfApplyCurveToCond", - "KfConditioningAdd", - "KfConditioningAddx10", - "KfCurveConstant", - "KfCurveDraw", - "KfCurveFromString", - "KfCurveFromYAML", - "KfCurveInverse", - "KfCurveToAcnLatentKeyframe", - "KfCurvesAdd", - "KfCurvesAddx10", - "KfCurvesDivide", - "KfCurvesMultiply", - "KfCurvesMultiplyx10", - "KfCurvesSubtract", - "KfDebug_Clip", - "KfDebug_Cond", - "KfDebug_Curve", - "KfDebug_Float", - "KfDebug_Image", - "KfDebug_Int", - "KfDebug_Latent", - "KfDebug_Model", - "KfDebug_Passthrough", - "KfDebug_Segs", - "KfDebug_String", - "KfDebug_Vae", - "KfDrawSchedule", - "KfEvaluateCurveAtT", - "KfGetCurveFromPGroup", - "KfGetScheduleConditionAtTime", - "KfGetScheduleConditionSlice", - "KfKeyframedCondition", - "KfKeyframedConditionWithText", - "KfPGroupCurveAdd", - "KfPGroupCurveMultiply", - "KfPGroupDraw", - "KfPGroupProd", - "KfPGroupSum", - "KfSetCurveLabel", - "KfSetKeyframe", - "KfSinusoidalAdjustAmplitude", - "KfSinusoidalAdjustFrequency", - "KfSinusoidalAdjustPhase", - "KfSinusoidalAdjustWavelength", - "KfSinusoidalEntangledZeroOneFromFrequencyx2", - "KfSinusoidalEntangledZeroOneFromFrequencyx3", - "KfSinusoidalEntangledZeroOneFromFrequencyx4", - "KfSinusoidalEntangledZeroOneFromFrequencyx5", - "KfSinusoidalEntangledZeroOneFromFrequencyx6", - "KfSinusoidalEntangledZeroOneFromFrequencyx7", - "KfSinusoidalEntangledZeroOneFromFrequencyx8", - "KfSinusoidalEntangledZeroOneFromFrequencyx9", - "KfSinusoidalEntangledZeroOneFromWavelengthx2", - "KfSinusoidalEntangledZeroOneFromWavelengthx3", - "KfSinusoidalEntangledZeroOneFromWavelengthx4", - "KfSinusoidalEntangledZeroOneFromWavelengthx5", - "KfSinusoidalEntangledZeroOneFromWavelengthx6", - "KfSinusoidalEntangledZeroOneFromWavelengthx7", - "KfSinusoidalEntangledZeroOneFromWavelengthx8", - "KfSinusoidalEntangledZeroOneFromWavelengthx9", - "KfSinusoidalGetAmplitude", - "KfSinusoidalGetFrequency", - "KfSinusoidalGetPhase", - "KfSinusoidalGetWavelength", - "KfSinusoidalWithFrequency", - "KfSinusoidalWithWavelength" - ], - { - "title_aux": "ComfyUI-Keyframed" - } - ], - "https://github.com/drago87/ComfyUI_Dragos_Nodes": [ - [ - "file_padding", - "image_info", - "lora_loader", - "vae_loader" - ], - { - "title_aux": "ComfyUI_Dragos_Nodes" - } - ], - "https://github.com/dreamhartley/ComfyUI_show_seed": [ - [ - "Show Seed" - ], - { - "title_aux": "ComfyUI_show_seed" - } - ], - "https://github.com/drmbt/comfyui-dreambait-nodes": [ - [ - "AudioInfoPlus", - "BoolPlusPlus", - "DRMBT_AspectPadImageForOutpainting", - "DRMBT_LoadMedia", - "DRMBT_MultiMinMax", - "DRMBT_String_Item_Menu", - "DictToOutputs", - "DownloadAndLoadMiniCPMV", - "DreambaitFolderOpener", - "DynamicDictionary", - "ImageFrameBlend", - "ImageResizeFaceAware", - "ListItemExtract", - "ListItemSelector", - "LoadAudioPlus", - "MiniCPMVNode", - "MusicGen", - "NormalizeAudio", - "NumberPlusPlus", - "NumberRemap", - "Qwen2AudioInstruct", - "StringToDict", - "SwitchDuo", - "TextLineSelect", - "TextLinesToList", - "TextPlusPlus" - ], - { - "title_aux": "comfyui-dreambait-nodes" - } - ], - "https://github.com/drustan-hawk/primitive-types": [ - [ - "float", - "int", - "string", - "string_multiline" - ], - { - "title_aux": "primitive-types" - } - ], - "https://github.com/duchamps0305/comfyui-white-extractor": [ - [ - "WhitePercentage" - ], - { - "title_aux": "comfyui-white-extractor" - } - ], - "https://github.com/ducido/ObjectFusion_ComfyUI_nodes": [ - [ - "Custom ESAM_ModelLoader_Zho", - "Custom Generate Stable Diffsution Prompt With LLM", - "Custom Yoloworld_ESAM_Zho", - "Custom Yoloworld_ModelLoader_Zho", - "ObjectCrop" - ], - { - "title_aux": "ObjectFusion_ComfyUI_nodes" - } - ], - "https://github.com/duskfallcrew/Comfyui_EmbeddingMerge_Node/raw/refs/heads/main/merge_embed.py": [ - [ - "EmbeddingMerger" - ], - { - "title_aux": "Embedding Merge for ComfyUI" - } - ], - "https://github.com/dymokomi/comfyui_dygen": [ - [ - "AdaptiveColorCircles", - "AdaptiveColorLines", - "AdaptiveColorRectangles", - "BinaryPatternStamper", - "DYImageCluster", - "DYImageMasks", - "DYImagePalette", - "DYImageQuantize", - "ImageListToGrid", - "ImageScaler", - "RandomLines" - ], - { - "title_aux": "comfyui_dygen" - } - ], - "https://github.com/e7mac/ComfyUI-ShadertoyGL": [ - [ - "ColorChannelOffset", - "Shader", - "Shadertoy" - ], - { - "title_aux": "ComfyUI-ShadertoyGL" - } - ], - "https://github.com/ealkanat/comfyui-easy-padding": [ - [ - "comfyui-easy-padding" - ], - { - "title_aux": "ComfyUI Easy Padding" - } - ], - "https://github.com/eastoc/ComfyUI_SemanticSAM": [ - [ - "PointPrompt", - "SemanticSAMLoader", - "SemanticSAMSegment" - ], - { - "title_aux": "Semantic-SAM" - } - ], - "https://github.com/edelvarden/ComfyUI-ImageMetadataExtension": [ - [ - "CreateExtraMetaData", - "SaveImageWithMetaData" - ], - { - "title_aux": "ComfyUI-ImageMetadataExtension" - } - ], - "https://github.com/edenartlab/eden_comfy_pipelines": [ - [ - "Animation_RGB_Mask", - "AspectPadImageForOutpainting", - "CLIP_Interrogator", - "ConvertToGrayscale", - "DepthSlicer", - "Eden_Bool", - "Eden_BoolBinaryOperation", - "Eden_Compare", - "Eden_DebugPrint", - "Eden_DepthSlice_MaskVideo", - "Eden_DetermineFrameCount", - "Eden_Float", - "Eden_FloatToInt", - "Eden_GPTPromptEnhancer", - "Eden_IMG_padder", - "Eden_IMG_unpadder", - "Eden_Image_Math", - "Eden_Int", - "Eden_IntToFloat", - "Eden_MaskBoundingBox", - "Eden_MaskCombiner", - "Eden_Math", - "Eden_RandomPromptFromFile", - "Eden_RepeatLatentBatch", - "Eden_Seed", - "Eden_String", - "Eden_StringHash", - "Eden_StringReplace", - "Eden_gpt4_node", - "Extend_Sequence", - "FolderScanner", - "GetRandomFile", - "Get_Prefixed_Imgs", - "HistogramMatching", - "IMG_blender", - "IMG_resolution_multiple_of", - "IMG_scaler", - "IP_Adapter_Settings_Distribution", - "If ANY execute A else B", - "ImageDescriptionNode", - "ImageFolderIterator", - "KeyframeBlender", - "LatentTypeConversion", - "Linear_Combine_IP_Embeds", - "LoadImagesByFilename", - "LoadRandomImage", - "Load_Embeddings_From_Folder", - "MaskFromRGB_KMeans", - "ParallaxZoom", - "Random_Style_Mixture", - "SaveImageAdvanced", - "SavePosEmbeds", - "VAEDecode_to_folder", - "VideoFrameSelector", - "WidthHeightPicker" - ], - { - "title_aux": "Eden.art nodesuite" - } - ], - "https://github.com/edenartlab/sd-lora-trainer": [ - [ - "Eden_LoRa_trainer" - ], - { - "title_aux": "Eden.art LoRa Trainer" - } - ], - "https://github.com/educator-art/ComfyUI-Load-DirectoryFiles": [ - [ - "Load Images and Prompts from Directory", - "Load Images and Prompts from Directory(Advanced)" - ], - { - "title_aux": "ComfyUI-Load-DirectoryFiles" - } - ], - "https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes": [ - [ - "BatchImageProcessor", - "Caption", - "CaptionDownload", - "KolorsMultiTextEncode", - "MultiTextEncode" - ], - { - "title_aux": "ComfyUI_Emojiiii_Custom_Nodes" - } - ], - "https://github.com/envy-ai/ComfyUI-ConDelta": [ - [ - "ApplyConDelta", - "ApplyConDeltaAutoScale", - "ClampConDelta", - "ConditioningAddConDelta", - "ConditioningAddConDeltaAutoScale", - "ConditioningAverageMultiple", - "ConditioningGetNoise", - "ConditioningScale", - "ConditioningSubtract", - "ExtendedConditioningAverage", - "HardClampConDelta", - "LoadConditioningDelta", - "MaskConDelta", - "SaveConditioningDelta", - "ThresholdConditioning" - ], - { - "title_aux": "ComfyUI-ConDelta" - } - ], - "https://github.com/erosDiffusion/ComfyUI-enricos-nodes": [ - [ - "Compositor3", - "CompositorConfig3", - "CompositorTools3", - "CompositorTransformsOutV3" - ], - { - "title_aux": "Compositor Node" - } - ], - "https://github.com/evanspearman/ComfyMath": [ - [ - "CM_BoolBinaryOperation", - "CM_BoolToInt", - "CM_BoolUnaryOperation", - "CM_BreakoutVec2", - "CM_BreakoutVec3", - "CM_BreakoutVec4", - "CM_ComposeVec2", - "CM_ComposeVec3", - "CM_ComposeVec4", - "CM_FloatBinaryCondition", - "CM_FloatBinaryOperation", - "CM_FloatToInt", - "CM_FloatToNumber", - "CM_FloatUnaryCondition", - "CM_FloatUnaryOperation", - "CM_IntBinaryCondition", - "CM_IntBinaryOperation", - "CM_IntToBool", - "CM_IntToFloat", - "CM_IntToNumber", - "CM_IntUnaryCondition", - "CM_IntUnaryOperation", - "CM_NearestSDXLExtendedResolution", - "CM_NearestSDXLResolution", - "CM_NumberBinaryCondition", - "CM_NumberBinaryOperation", - "CM_NumberToFloat", - "CM_NumberToInt", - "CM_NumberUnaryCondition", - "CM_NumberUnaryOperation", - "CM_SDXLExtendedResolution", - "CM_SDXLResolution", - "CM_Vec2BinaryCondition", - "CM_Vec2BinaryOperation", - "CM_Vec2ScalarOperation", - "CM_Vec2ToScalarBinaryOperation", - "CM_Vec2ToScalarUnaryOperation", - "CM_Vec2UnaryCondition", - "CM_Vec2UnaryOperation", - "CM_Vec3BinaryCondition", - "CM_Vec3BinaryOperation", - "CM_Vec3ScalarOperation", - "CM_Vec3ToScalarBinaryOperation", - "CM_Vec3ToScalarUnaryOperation", - "CM_Vec3UnaryCondition", - "CM_Vec3UnaryOperation", - "CM_Vec4BinaryCondition", - "CM_Vec4BinaryOperation", - "CM_Vec4ScalarOperation", - "CM_Vec4ToScalarBinaryOperation", - "CM_Vec4ToScalarUnaryOperation", - "CM_Vec4UnaryCondition", - "CM_Vec4UnaryOperation" - ], - { - "title_aux": "ComfyMath" - } - ], - "https://github.com/exdysa/comfyui-selector": [ - [ - "RecourseAny", - "RecourseCkpt", - "RecourseImage", - "RecoursePolar", - "RecourseStrings", - "SelInClip", - "SelInGuider", - "SelInLatent", - "SelInModel", - "SelInPolar", - "SelInVae", - "SelOutCLIP", - "SelOutModel", - "SelOutPolar", - "Selector" - ], - { - "author": "\"\u02f6\ud835\udfa2\u292c\u2ad2\u2d56s\u143c\u02f6\"", - "description": "\"EXDYSA. Selector and Recourse. Presets & failsafes. Work flow.\"", - "nickname": "\"Selector\"", - "title": "\"Selector\"", - "title_aux": "comfyui-selector" - } - ], - "https://github.com/exectails/comfyui-et_dynamicprompts": [ - [ - "ETDynamicPrompt" - ], - { - "title_aux": "Dynamic Prompts" - } - ], - "https://github.com/exectails/comfyui-et_infoutils": [ - [ - "ETInspectTextNode", - "ETIntBoxNode", - "ETPresentImageNode", - "ETShowDataNode", - "ETStringBoxNode", - "ETTextBoxNode", - "ETTokenCountNode" - ], - { - "title_aux": "Info Utils" - } - ], - "https://github.com/exectails/comfyui-et_stringutils": [ - [ - "ETATOI", - "ETITOA", - "ETJoinTextNode", - "ETReplaceTextNode", - "ETSplitTextNode", - "ETSwitchTextNode", - "ETTextFormatter10Node", - "ETTextFormatter2Node", - "ETTextFormatter5Node" - ], - { - "title_aux": "String Utils" - } - ], - "https://github.com/ez-af/ComfyUI-EZ-AF-Nodes": [ - [ - "EZ Concatenate Text", - "EZ Load from CSV", - "EZ String" - ], - { - "title_aux": "ComfyUI-EZ-AF-Nodes" - } - ], - "https://github.com/fablestudio/ComfyUI-Showrunner-Utils": [ - [ - "AlignFace", - "GenerateTimestamp", - "GetMostCommonColors", - "ReadImage", - "RenderOpenStreetMapTile" - ], - { - "title_aux": "ComfyUI-Showrunner-Utils" - } - ], - "https://github.com/facok/ComfyUI-HunyuanVideoMultiLora": [ - [ - "HunyuanVideoLoraLoader" - ], - { - "title_aux": "ComfyUI-HunyuanVideoMultiLora" - } - ], - "https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo": [ - [ - "TeaCacheHunyuanVideoSampler_FOK" - ], - { - "title_aux": "ComfyUI-TeaCacheHunyuanVideo" - } - ], - "https://github.com/fairy-root/ComfyUI-GLHF": [ - [ - "glhf_chat" - ], - { - "title_aux": "ComfyUI-GLHF" - } - ], - "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/fallingmeteorite/nsfw-image-check-comfyui": [ - [ - "NsfwCheckNode" - ], - { - "title_aux": "nsfw-image-check-comfyui" - } - ], - "https://github.com/fashn-AI/ComfyUI-FASHN": [ - [ - "FASHN" - ], - { - "title_aux": "FASHN Virtual Try-On" - } - ], - "https://github.com/fblissjr/ComfyUI-EmbeddingPipelineAnalytics": [ - [ - "EmbeddingAnalyzer", - "EmbeddingPipelineCapture" - ], - { - "title_aux": "ComfyUI-EmbeddingPipelineAnalytics" - } - ], - "https://github.com/fearnworks/ComfyUI_FearnworksNodes": [ - [ - "Count Files in Directory (FW)", - "Count Tokens (FW)", - "CountTokens", - "FileCountInDirectory", - "Token Count Ranker(FW)", - "TokenCountRanker", - "Trim To Tokens (FW)", - "TrimToTokens" - ], - { - "title_aux": "Fearnworks Nodes" - } - ], - "https://github.com/feixuetuba/Spleeter": [ - [ - "Spleeter" - ], - { - "title_aux": "Spleeter" - } - ], - "https://github.com/fexli/fexli-util-node-comfyui": [ - [ - "FEBCPrompt", - "FEBatchGenStringBCDocker", - "FEColor2Image", - "FEColorOut", - "FEDataInsertor", - "FEDataPacker", - "FEDataUnpacker", - "FEDeepClone", - "FEDictPacker", - "FEDictUnpacker", - "FEEncLoraLoader", - "FEExtraInfoAdd", - "FEGenStringBCDocker", - "FEGenStringGPT", - "FEImageNoiseGenerate", - "FEImagePadForOutpaint", - "FEImagePadForOutpaintByImage", - "FEOperatorIf", - "FEPythonStrOp", - "FERandomBool", - "FERandomLoraSelect", - "FERandomPrompt", - "FERandomizedColor2Image", - "FERandomizedColorOut", - "FERerouteWithName", - "FESaveEncryptImage", - "FETextCombine", - "FETextCombine2Any", - "FETextInput" - ], - { - "title_aux": "fexli-util-node-comfyui" - } - ], - "https://github.com/fexploit/ComfyUI-AutoLabel": [ - [ - "AutoLabel" - ], - { - "title_aux": "ComfyUI-AutoLabel" - } - ], - "https://github.com/fexploit/ComfyUI-AutoTrimBG": [ - [ - "RonLayers/TrimBg: RonLayersTrimBgUltraV2" - ], - { - "title_aux": "ComfyUI-AutoTrimBG" - } - ], - "https://github.com/fexploit/ComfyUI-Classifier": [ - [ - "ClassifierNode" - ], - { - "title_aux": "ComfyUI-Classifier" - } - ], - "https://github.com/filipemeneses/comfy_pixelization": [ - [ - "Pixelization" - ], - { - "title_aux": "Pixelization" - } - ], - "https://github.com/filliptm/ComfyUI_FL-Trainer": [ - [ - "FL_ImageCaptionSaver", - "FL_KohyaSSAdvConfig", - "FL_KohyaSSDatasetConfig", - "FL_KohyaSSInitWorkspace", - "FL_KohyaSSTrain", - "FL_Kohya_EasyTrain", - "FL_LoadImagesFromDirectoryPath", - "FL_SliderLoraAdvConfig", - "FL_SliderLoraDatasetConfig", - "FL_SliderLoraInitWorkspace", - "FL_SliderLoraTrain" - ], - { - "title_aux": "ComfyUI_FL-Trainer" - } - ], - "https://github.com/filliptm/ComfyUI_Fill-Nodes": [ - [ - "FL_API_ImageSaver", - "FL_ApplyMask", - "FL_Ascii", - "FL_Base64ImageLoader", - "FL_BatchAlign", - "FL_BulkPDFLoader", - "FL_BulletHellGame", - "FL_CaptionSaver_V2", - "FL_CaptionToCSV", - "FL_CodeNode", - "FL_ColorPicker", - "FL_Dalle3", - "FL_DirectoryCrawl", - "FL_Dither", - "FL_FractalKSampler", - "FL_GPT_Vision", - "FL_Glitch", - "FL_GoogleDriveDownloader", - "FL_GradGenerator", - "FL_HFHubModelUploader", - "FL_HF_Character", - "FL_HF_UploaderAbsolute", - "FL_HalftonePattern", - "FL_HexagonalPattern", - "FL_ImageAdjuster", - "FL_ImageBatchToGrid", - "FL_ImageBatchToImageList", - "FL_ImageCaptionLayout", - "FL_ImageCaptionLayoutPDF", - "FL_ImageCaptionSaver", - "FL_ImageCollage", - "FL_ImageDimensionDisplay", - "FL_ImageListToImageBatch", - "FL_ImageNotes", - "FL_ImagePixelator", - "FL_ImageRandomizer", - "FL_ImageSlicer", - "FL_ImagesToPDF", - "FL_InfiniteZoom", - "FL_InpaintCrop", - "FL_Inpaint_Stitch", - "FL_KSamplerXYZPlot", - "FL_KsamplerBasic", - "FL_KsamplerPlus", - "FL_KsamplerSettings", - "FL_LoadImage", - "FL_MadLibGenerator", - "FL_Math", - "FL_MirrorAndAppendCaptions", - "FL_NFTGenerator", - "FL_NodeLoader", - "FL_NodePackLoader", - "FL_OllamaCaptioner", - "FL_PDFImageExtractor", - "FL_PDFLoader", - "FL_PDFMerger", - "FL_PDFSaver", - "FL_PDFTextExtractor", - "FL_PDFToImages", - "FL_Padding", - "FL_PaperDrawn", - "FL_PasteOnCanvas", - "FL_PathTypeChecker", - "FL_PixelArtShader", - "FL_PixelSort", - "FL_ProResVideo", - "FL_PromptSelector", - "FL_RandomNumber", - "FL_RetroEffect", - "FL_Ripple", - "FL_SDUltimate_Slices", - "FL_SamplerStrings", - "FL_SaveAndDisplayImage", - "FL_SaveCSV", - "FL_SaveImages", - "FL_SaveWebPImage(SaveImage)", - "FL_SchedulerStrings", - "FL_SendToDiscordWebhook", - "FL_SeparateMaskComponents", - "FL_Shadertoy", - "FL_SimpleGPTVision", - "FL_SystemCheck", - "FL_TetrisGame", - "FL_TimeLine", - "FL_UpscaleModel", - "FL_VideoCropMask", - "FL_VideoRecompose", - "FL_ZipDirectory", - "FL_ZipSave", - "GradientImageGenerator", - "SaveWebPImage" - ], - { - "title_aux": "ComfyUI_Fill-Nodes" - } - ], - "https://github.com/florestefano1975/ComfyUI-Advanced-Sequence-Seed": [ - [ - "AdvancedSequenceSeedNode" - ], - { - "title_aux": "Advanced Sequence Seed Generator" - } - ], - "https://github.com/florestefano1975/ComfyUI-CogVideoX": [ - [ - "CogVideoX Image-2-Video Extended", - "CogVideoX Save Video" - ], - { - "title_aux": "ComfyUI-CogVideoX" - } - ], - "https://github.com/florestefano1975/ComfyUI-HiDiffusion": [ - [ - "HiDiffusionSD15", - "HiDiffusionSD21", - "HiDiffusionSDXL", - "HiDiffusionSDXLTurbo" - ], - { - "title_aux": "ComfyUI HiDiffusion" - } - ], - "https://github.com/florestefano1975/ComfyUI-StabilityAI-Suite": [ - [ - "StabilityAI Suite - Creative Upscale", - "StabilityAI Suite - Creative Upscale Recover File", - "StabilityAI Suite - Image Core + Style Preset", - "StabilityAI Suite - Inpainting", - "StabilityAI Suite - Outpainting", - "StabilityAI Suite - Remove Background", - "StabilityAI Suite - SD3", - "StabilityAI Suite - Search and Replace" - ], - { - "title_aux": "ComfyUI StabilityAI Suite" - } - ], - "https://github.com/florestefano1975/comfyui-portrait-master": [ - [ - "PortraitMaster", - "PortraitMasterBaseCharacter", - "PortraitMasterMakeup", - "PortraitMasterSkinDetails", - "PortraitMasterStylePose" - ], - { - "title_aux": "comfyui-portrait-master" - } - ], - "https://github.com/florestefano1975/comfyui-prompt-composer": [ - [ - "PromptComposerCustomLists", - "PromptComposerEffect", - "PromptComposerGrouping", - "PromptComposerMerge", - "PromptComposerStyler", - "PromptComposerTextSingle", - "promptComposerTextMultiple" - ], - { - "title_aux": "comfyui-prompt-composer" - } - ], - "https://github.com/flowtyone/ComfyUI-Flowty-CRM": [ - [ - "CCMSampler", - "CRMModelLoader", - "CRMModeler", - "CRMModelerCuda", - "CRMPoseSampler", - "CRMPoserConfig", - "CRMPreprocessForPoser", - "CRMViewer" - ], - { - "title_aux": "ComfyUI-Flowty-CRM" - } - ], - "https://github.com/flowtyone/ComfyUI-Flowty-LDSR": [ - [ - "LDSRModelLoader", - "LDSRUpscale", - "LDSRUpscaler" - ], - { - "title_aux": "ComfyUI-Flowty-LDSR" - } - ], - "https://github.com/flowtyone/ComfyUI-Flowty-TripoSR": [ - [ - "TripoSRModelLoader", - "TripoSRSampler", - "TripoSRViewer" - ], - { - "title_aux": "ComfyUI-Flowty-TripoSR" - } - ], - "https://github.com/flycarl/ComfyUI-Pixelate": [ - [ - "ComfyUIPixelate" - ], - { - "title_aux": "ComfyUI-Pixelate" - } - ], - "https://github.com/flyingshutter/As_ComfyUI_CustomNodes": [ - [ - "BatchIndex_AS", - "CropImage_AS", - "Eval_AS", - "ImageMixMasked_As", - "ImageToMask_AS", - "Increment_AS", - "Int2Any_AS", - "LatentAdd_AS", - "LatentMixMasked_As", - "LatentMix_AS", - "LatentToImages_AS", - "LoadLatent_AS", - "MapRange_AS", - "MaskToImage_AS", - "Math_AS", - "NoiseImage_AS", - "Number2Float_AS", - "Number2Int_AS", - "Number_AS", - "SaveLatent_AS", - "TextToImage_AS", - "TextWildcardList_AS" - ], - { - "title_aux": "As_ComfyUI_CustomNodes" - } - ], - "https://github.com/fmatray/ComfyUI_BattlemapGrid": [ - [ - "Battlemap Grid", - "Compass", - "Map Generator", - "Map Generator(Outdoors)" - ], - { - "title_aux": "ComfyUI_BattlemapGrid" - } - ], - "https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler": [ - [ - "HyperSDXL1StepUnetScheduler" - ], - { - "title_aux": "ComfyUI-HyperSDXL1StepUnetScheduler (ByteDance)" - } - ], - "https://github.com/fofr/ComfyUI-Prompter-fofrAI": [ - [ - "List sampler \ud83e\udeb4", - "Prompt from template \ud83e\udeb4" - ], - { - "title_aux": "ComfyUI-Prompter-fofrAI" - } - ], - "https://github.com/fofr/comfyui-fofr-toolkit": [ - [ - "Incrementer \ud83e\udeb4", - "Width and height for scaling image to ideal resolution \ud83e\udeb4", - "Width and height from aspect ratio \ud83e\udeb4" - ], - { - "title_aux": "comfyui-fofr-toolkit" - } - ], - "https://github.com/forever22777/comfyui-self-guidance": [ - [ - "CLIPConditioning", - "CheckpointLoaderMixWithDiffusers", - "SelfGuidanceSampler" - ], - { - "title_aux": "Self-Guidance nodes" - } - ], - "https://github.com/foxtrot-roger/comfyui-rf-nodes": [ - [ - "LogBool", - "LogFloat", - "LogInt", - "LogNumber", - "LogString", - "LogVec2", - "LogVec3", - "RF_AtIndexString", - "RF_BoolToString", - "RF_FloatToString", - "RF_IntToString", - "RF_JsonStyleLoader", - "RF_MergeLines", - "RF_NumberToString", - "RF_OptionsString", - "RF_RangeFloat", - "RF_RangeInt", - "RF_RangeNumber", - "RF_SavePromptInfo", - "RF_SplitLines", - "RF_TextConcatenate", - "RF_TextInput", - "RF_TextReplace", - "RF_Timestamp", - "RF_ToString", - "RF_Vec2ToString", - "RF_Vec3ToString", - "TextLine" - ], - { - "title_aux": "RF Nodes" - } - ], - "https://github.com/frankchieng/ComfyUI_Aniportrait": [ - [ - "AniPortrait_Audio2Video", - "AniPortrait_Audio_Path", - "AniPortrait_LoadVideoPath", - "AniPortrait_Pose_Gen_Video", - "AniPortrait_Ref_Image_Path", - "AniPortrait_Video_Gen_Pose" - ], - { - "title_aux": "ComfyUI_Aniportrait" - } - ], - "https://github.com/frankchieng/ComfyUI_MagicClothing": [ - [ - "MagicClothing_Animatediff", - "MagicClothing_Generate", - "MagicClothing_Inpainting" - ], - { - "title_aux": "ComfyUI_MagicClothing" - } - ], - "https://github.com/frankchieng/ComfyUI_llm_easyanimiate": [ - [], - { - "nodename_pattern": "^FrankChiengEasyAnimate", - "title_aux": "ComfyUI_llm_easyanimiate" - } - ], - "https://github.com/freelifehacker/ComfyUI-ImgMask2PNG": [ - [ - "ImageMask2PNG" - ], - { - "title_aux": "ComfyUI-ImgMask2PNG" - } - ], - "https://github.com/fsdymy1024/ComfyUI_fsdymy": [ - [ - "IPAdapterLayerWeight", - "Preview Image Without Metadata", - "PreviewImageWithoutMetadata", - "Save Image Without Metadata", - "SaveImageWithoutMetadata", - "ShowText", - "ZhiPuAiNode" - ], - { - "title_aux": "ComfyUI_fsdymy" - } - ], - "https://github.com/fssorc/ComfyUI_FFT": [ - [ - "FFTNode", - "FindFFTSpot", - "InvertFFTNode", - "InvertFFTWithMask" - ], - { - "title_aux": "ComfyUI_FFT" - } - ], - "https://github.com/fssorc/ComfyUI_FaceShaper": [ - [ - "FaceAlignmentCropper", - "FaceShaper", - "FaceShaperComposite", - "FaceShaperCropper", - "FaceShaperFaceMask", - "FaceShaperLoadInsightFaceCropper", - "FaceShaperLoadMediaPipeCropper", - "FaceShaperMatchV2", - "FaceShaperModels", - "FaceShaperShowLandMarks" - ], - { - "title_aux": "ComfyUI_FaceShaper" - } - ], - "https://github.com/fssorc/ComfyUI_RopeWrapper": [ - [ - "RopeVideoCombine", - "RopeWrapper_DetectNode", - "RopeWrapper_FaceRestore", - "RopeWrapper_LoadModels", - "RopeWrapper_LoadSwapInfo", - "RopeWrapper_OptionNode", - "RopeWrapper_SaveSwapInfo", - "RopeWrapper_SwapNode", - "RopeWrapper_SwapNodeTEST" - ], - { - "title_aux": "ComfyUI_RopeWrapper" - } - ], - "https://github.com/fssorc/ComfyUI_pose_inter": [ - [ - "Pose_Inter" - ], - { - "title_aux": "ComfyUI_pose_inter" - } - ], - "https://github.com/fuselayer/comfyui-mosaic-blur": [ - [ - "ImageMosaic" - ], - { - "title_aux": "comfyui-mosaic-blur" - } - ], - "https://github.com/gelasdev/ComfyUI-FLUX-BFL-API": [ - [ - "FluxDevRedux_BFL", - "FluxDev_BFL", - "FluxPro11Redux_BFL", - "FluxPro11UltraRedux_BFL", - "FluxPro11Ultra_BFL", - "FluxPro11_BFL", - "FluxProCanny_BFL", - "FluxProDepth_BFL", - "FluxProFill_BFL", - "FluxPro_BFL" - ], - { - "title_aux": "ComfyUI-FLUX-BFL-API" - } - ], - "https://github.com/gemell1/ComfyUI_GMIC": [ - [ - "GmicCliWrapper", - "GmicQtWrapper" - ], - { - "title_aux": "ComfyUI_GMIC" - } - ], - "https://github.com/geocine/geocine-comfyui": [ - [ - "Image Scale", - "Image Selector", - "LoRA Name List", - "Seed to Noise" - ], - { - "title_aux": "geocine-comfyui" - } - ], - "https://github.com/ggarra13/ComfyUI-mrv2": [ - [ - "mrv2AnnotationsImageNode", - "mrv2SaveEXRImage" - ], - { - "title_aux": "ComfyUI-mrv2" - } - ], - "https://github.com/giriss/comfy-image-saver": [ - [ - "Cfg Literal", - "Checkpoint Selector", - "Int Literal", - "Sampler Selector", - "Save Image w/Metadata", - "Scheduler Selector", - "Seed Generator", - "String Literal", - "Width/Height Literal" - ], - { - "title_aux": "Save Image with Generation Metadata" - } - ], - "https://github.com/gisu/comfyui-foxpack": [ - [ - "Add_To_List", - "BaseSamplerSetup", - "Big_Prompter", - "Change_Entries_In_A_List", - "Change_Entry_From_List", - "CheckpointMetaExtractor", - "CheckpointSelector", - "Complete_Setup", - "Convert_Into", - "Negate_Boolean", - "Optional_Value_Override", - "OverrideSamplerSetup", - "Override_Value_If_Unset", - "Pick_Value_From_Dict", - "Pick_Values_From_List", - "Refine_Prompt", - "Refine_Setup", - "Remap_Values", - "Remove_Values_From_List", - "Select_By_Index", - "Select_Line_By_Index", - "Select_String_By_Index", - "SetupSelector", - "Show_Type", - "Split_Entry_In_2Chunks", - "Split_Entry_In_4Chunks", - "Split_Entry_In_6Chunks", - "Split_Entry_In_8Chunks", - "Step_Denoise", - "UniversalLatentHelper", - "Universal_VAE_Loader" - ], - { - "title_aux": "foxpack" - } - ], - "https://github.com/githubYiheng/ComfyUI_Change_IMAGE_BOREDER": [ - [ - "ChangeImageBorder" - ], - { - "title_aux": "ComfyUI_Change_IMAGE_BOREDER" - } - ], - "https://github.com/githubYiheng/ComfyUI_GetFileNameFromURL": [ - [ - "GetFileNameFromURL" - ], - { - "title_aux": "ComfyUI_GetFileNameFromURL" - } - ], - "https://github.com/githubYiheng/comfyui_kmeans_filter": [ - [ - "ImageKmeansFilter" - ], - { - "title_aux": "comfyui_kmeans_filter" - } - ], - "https://github.com/githubYiheng/comfyui_meanshift_filter": [ - [ - "ImageMeanshiftFilter" - ], - { - "title_aux": "comfyui_meanshift_filter" - } - ], - "https://github.com/githubYiheng/comfyui_private_postprocessor": [ - [ - "ImageCPostprocessor", - "PrivateImageMask" - ], - { - "title_aux": "comfyui_private_postprocessor" - } - ], - "https://github.com/glibsonoran/Plush-for-ComfyUI": [ - [ - "AI Chooser", - "Add Parameters", - "AdvPromptEnhancer", - "Custom API Key", - "DalleImage", - "Enhancer", - "Image Mixer", - "ImgTextSwitch", - "Load Remote Models", - "LoadText|plush", - "ParseJSON", - "Plush-Exif Wrangler", - "Random Image Output", - "Random Mixer", - "Random Output", - "SaveText|plush", - "Tagger", - "Text (Any)", - "Type Converter", - "mulTextSwitch" - ], - { - "title_aux": "Plush-for-ComfyUI" - } - ], - "https://github.com/glifxyz/ComfyUI-GlifNodes": [ - [ - "FilmGrain", - "FluxReduxFloatRamp", - "GlifConsistencyDecoder", - "GlifPatchConsistencyDecoderTiled", - "GlifVariable", - "HFHubEmbeddingLoader", - "HFHubLoraLoader", - "ImagePaddingAdvanced", - "ImageToMultipleOf", - "LoraLoaderFromURL", - "SDXLAspectRatio" - ], - { - "title_aux": "ComfyUI-GlifNodes" - } - ], - "https://github.com/glowcone/comfyui-base64-to-image": [ - [ - "LoadImageFromBase64" - ], - { - "title_aux": "Load Image From Base64 URI" - } - ], - "https://github.com/glowcone/comfyui-string-converter": [ - [ - "StringToFloat", - "StringToInt" - ], - { - "title_aux": "String Converter" - } - ], - "https://github.com/goburiin/nsfwrecog-comfyui": [ - [ - "NSFWDetectorNode" - ], - { - "title_aux": "nsfwrecog-comfyui" - } - ], - "https://github.com/godmt/ComfyUI-List-Utils": [ - [ - "GODMT_AnyCast", - "GODMT_AnyToDict", - "GODMT_BatchGetByIndex", - "GODMT_BatchItemCast", - "GODMT_BatchSlice", - "GODMT_BatchToList", - "GODMT_CreateArange", - "GODMT_CreateBatch", - "GODMT_CreateLinspace", - "GODMT_CreateList", - "GODMT_CreateRange", - "GODMT_Exec", - "GODMT_GetLength", - "GODMT_GetShape", - "GODMT_GetWidgetsValues", - "GODMT_ListDir", - "GODMT_ListGetByIndex", - "GODMT_ListSlice", - "GODMT_ListToBatch", - "GODMT_MergeBatch", - "GODMT_MergeList", - "GODMT_Pack", - "GODMT_SplitString", - "GODMT_Unpack" - ], - { - "title_aux": "ComfyUI-List-Utils" - } - ], - "https://github.com/godspede/ComfyUI_Substring": [ - [ - "SubstringTheory" - ], - { - "title_aux": "ComfyUI Substring" - } - ], - "https://github.com/gokayfem/ComfyUI-Depth-Visualization": [ - [ - "DepthViewer" - ], - { - "title_aux": "ComfyUI-Depth-Visualization" - } - ], - "https://github.com/gokayfem/ComfyUI-Dream-Interpreter": [ - [ - "DreamViewer" - ], - { - "title_aux": "ComfyUI-Dream-Interpreter" - } - ], - "https://github.com/gokayfem/ComfyUI-Texture-Simple": [ - [ - "TextureViewer" - ], - { - "title_aux": "ComfyUI-Texture-Simple" - } - ], - "https://github.com/gokayfem/ComfyUI_VLM_nodes": [ - [ - "AudioLDM2Node", - "ChatMusician", - "CreativeArtPromptGenerator", - "Joytag", - "JsonToText", - "KeywordExtraction", - "Kosmos2model", - "LLMLoader", - "LLMOptionalMemoryFreeAdvanced", - "LLMOptionalMemoryFreeSimple", - "LLMPromptGenerator", - "LLMSampler", - "LLava Loader Simple", - "LLavaOptionalMemoryFreeAdvanced", - "LLavaOptionalMemoryFreeSimple", - "LLavaPromptGenerator", - "LLavaSamplerAdvanced", - "LLavaSamplerSimple", - "LlavaClipLoader", - "MCLLaVAModel", - "MiniCPMNode", - "MolmoNode", - "MoonDream", - "Moondream2model", - "Paligemma", - "PlayMusic", - "PromptGenerateAPI", - "Qwen2VLNode", - "SaveAudioNode", - "SimpleText", - "StructuredOutput", - "Suggester", - "UformGen2QwenNode", - "ViewText" - ], - { - "title_aux": "VLM_nodes" - } - ], - "https://github.com/gonzalu/ComfyUI_YFG_Comical": [ - [ - "Image10Switcher_node", - "Image15Switcher_node", - "Image20Switcher_node", - "Image3Switcher_node", - "Image5Switcher_node", - "MonoClip_node", - "PixelArt_node", - "VAEDecodePreview_node", - "image2contrastMask_node", - "image2imbgg_node", - "image_halftone", - "image_histograms_node", - "image_histograms_node_compact", - "images_side_by_side", - "imgbbLoader_node", - "smartCheckpointLoader_node", - "storeURL_node", - "textMaskOverlay_node" - ], - { - "author": "Manny Gonzalez", - "description": "Utility custom nodes for special effects, image manipulation and quality of life tools.", - "nickname": "\ud83d\udc2f YFG Comical Nodes", - "title": "\ud83d\udc2f YFG Comical Nodes", - "title_aux": "\ud83d\ude38 YFG Comical Nodes" - } - ], - "https://github.com/gorillaframeai/GF_nodes": [ - [ - "GFrbmg2" - ], - { - "title_aux": "GFrbmg2" - } - ], - "https://github.com/gremlation/ComfyUI-ImageLabel": [ - [ - "gremlation:ComfyUI-ImageLabel:ImageLabel" - ], - { - "title_aux": "ComfyUI-ImageLabel" - } - ], - "https://github.com/gremlation/ComfyUI-JMESPath": [ - [ - "gremlation:ComfyUI-JMESPath" - ], - { - "title_aux": "ComfyUI-JMESPath" - } - ], - "https://github.com/gremlation/ComfyUI-ViewData": [ - [ - "gremlation:ComfyUI-ViewData:ViewData" - ], - { - "title_aux": "ComfyUI-ViewData" - } - ], - "https://github.com/gremlation/ComfyUI-jq": [ - [ - "gremlation:ComfyUI-jq" - ], - { - "title_aux": "ComfyUI-jq" - } - ], - "https://github.com/griptape-ai/ComfyUI-Griptape": [ - [ - "Griptape Agent Config: Amazon Bedrock Drivers", - "Griptape Agent Config: Amazon Bedrock [DEPRECATED]", - "Griptape Agent Config: Anthropic Drivers", - "Griptape Agent Config: Anthropic [DEPRECATED]", - "Griptape Agent Config: Azure OpenAI Drivers", - "Griptape Agent Config: Azure OpenAI [DEPRECATED]", - "Griptape Agent Config: Cohere Drivers", - "Griptape Agent Config: Custom Structure", - "Griptape Agent Config: Environment Variables", - "Griptape Agent Config: Expand", - "Griptape Agent Config: Google Drivers", - "Griptape Agent Config: Google [DEPRECATED]", - "Griptape Agent Config: Groq Drivers", - "Griptape Agent Config: HuggingFace Drivers", - "Griptape Agent Config: HuggingFace [DEPRECATED]", - "Griptape Agent Config: LM Studio Drivers", - "Griptape Agent Config: LM Studio [DEPRECATED]", - "Griptape Agent Config: Ollama Drivers", - "Griptape Agent Config: Ollama [DEPRECATED]", - "Griptape Agent Config: OpenAI Compatible Drivers", - "Griptape Agent Config: OpenAI Compatible [DEPRECATED]", - "Griptape Agent Config: OpenAI Drivers", - "Griptape Agent Config: OpenAI [DEPRECATED]", - "Griptape Audio Transcription Driver: Groq", - "Griptape Audio Transcription Driver: OpenAI", - "Griptape Code: Run Griptape Cloud Structure", - "Griptape Code: Run Python", - "Griptape Combine: Merge Inputs", - "Griptape Combine: Merge Texts", - "Griptape Combine: RAG Module List", - "Griptape Combine: Rules List", - "Griptape Combine: Tool List", - "Griptape Config: Environment Variables", - "Griptape Convert: Agent to Tool", - "Griptape Convert: Text to CLIP Encode", - "Griptape Convert: Text to Combo", - "Griptape Create: Agent", - "Griptape Create: Agent from Config", - "Griptape Create: CLIP Text Encode", - "Griptape Create: Image Inpainting Variation", - "Griptape Create: Image Variation", - "Griptape Create: Image from Text", - "Griptape Create: Rules", - "Griptape Create: Text", - "Griptape Display: Artifact", - "Griptape Display: Data as Text", - "Griptape Display: Image", - "Griptape Display: Text", - "Griptape Driver: Amazon Bedrock Stable Diffusion", - "Griptape Driver: Amazon Bedrock Titan", - "Griptape Driver: Azure OpenAI Image Generation", - "Griptape Driver: Black Forest Labs Image Generation", - "Griptape Driver: Leonardo.AI", - "Griptape Driver: OpenAI Compatible Image Generation", - "Griptape Driver: OpenAI Image Generation", - "Griptape Embedding Driver: Amazon Bedrock Titan", - "Griptape Embedding Driver: Amazon SageMaker Jumpstart", - "Griptape Embedding Driver: Azure OpenAI", - "Griptape Embedding Driver: Cohere", - "Griptape Embedding Driver: Google", - "Griptape Embedding Driver: HuggingFace", - "Griptape Embedding Driver: LM Studio", - "Griptape Embedding Driver: Ollama", - "Griptape Embedding Driver: OpenAI", - "Griptape Embedding Driver: OpenAI Compatible", - "Griptape Embedding Driver: Voyage AI", - "Griptape Expand: Agent Nodes", - "Griptape Load: Audio", - "Griptape Load: Image From URL", - "Griptape Load: Text", - "Griptape Prompt Driver: Amazon Bedrock", - "Griptape Prompt Driver: Amazon SageMaker Jumpstart", - "Griptape Prompt Driver: Anthropic", - "Griptape Prompt Driver: Azure OpenAI", - "Griptape Prompt Driver: Cohere", - "Griptape Prompt Driver: Google", - "Griptape Prompt Driver: Groq", - "Griptape Prompt Driver: HuggingFace", - "Griptape Prompt Driver: LM Studio", - "Griptape Prompt Driver: Ollama", - "Griptape Prompt Driver: OpenAI", - "Griptape Prompt Driver: OpenAI Compatible", - "Griptape RAG Query: Translate Module", - "Griptape RAG Rerank: Text Chunks Module", - "Griptape RAG Response: Footnote Prompt Module", - "Griptape RAG Response: Prompt Module", - "Griptape RAG Response: Text Chunks Module", - "Griptape RAG Retrieve: Text Loader Module", - "Griptape RAG Retrieve: Vector Store Module", - "Griptape RAG: Engine", - "Griptape Replace: Rulesets on Agent", - "Griptape Replace: Tools on Agent", - "Griptape Rerank Driver: Cohere", - "Griptape Run: Agent", - "Griptape Run: Audio Transcription", - "Griptape Run: Image Description", - "Griptape Run: Parallel Image Description", - "Griptape Run: Prompt Task", - "Griptape Run: Task", - "Griptape Run: Text Extraction", - "Griptape Run: Text Summary", - "Griptape Run: Text to Speech", - "Griptape Run: Tool Task", - "Griptape Run: Toolkit Task", - "Griptape Save: Text", - "Griptape Set: Default Agent", - "Griptape Text To Speech Driver: ElevenLabs", - "Griptape Text To Speech Driver: OpenAI", - "Griptape Tool: Audio Transcription", - "Griptape Tool: Calculator", - "Griptape Tool: DateTime", - "Griptape Tool: Extraction", - "Griptape Tool: FileManager", - "Griptape Tool: Griptape Cloud KnowledgeBase", - "Griptape Tool: Prompt Summary", - "Griptape Tool: Query", - "Griptape Tool: RAG", - "Griptape Tool: Text to Speech", - "Griptape Tool: VectorStore", - "Griptape Tool: WebScraper", - "Griptape Tool: WebSearch", - "Griptape Util: Create Agent Modelfile", - "Griptape Util: Create Model from Modelfile", - "Griptape Util: Remove Ollama Model", - "Griptape Util: Switch Node", - "Griptape Vector Store Driver: Amazon OpenSearch", - "Griptape Vector Store Driver: Azure MongoDB", - "Griptape Vector Store Driver: Griptape Cloud", - "Griptape Vector Store Driver: Local", - "Griptape Vector Store Driver: Marqo", - "Griptape Vector Store Driver: MongoDB Atlas", - "Griptape Vector Store Driver: PGVector", - "Griptape Vector Store Driver: Pinecone", - "Griptape Vector Store Driver: Qdrant", - "Griptape Vector Store Driver: Redis", - "Griptape Vector Store: Add Text", - "Griptape Vector Store: Query", - "Griptape WebSearch Driver: DuckDuckGo", - "Griptape WebSearch Driver: Exa", - "Griptape WebSearch Driver: Google", - "Griptape WebSearch Driver: Serper", - "Griptape WebSearch Driver: Tavily" - ], - { - "author": "Jason Schleifer", - "description": "This extension offers various nodes that allow you to work with LLMs using the Griptape Python Framework (https://griptape.ai)", - "nickname": "ComfyUI-Griptape", - "title": "ComfyUI Griptape Nodes", - "title_aux": "ComfyUI Griptape Nodes" - } - ], - "https://github.com/gseth/ControlAltAI-Nodes": [ - [ - "BooleanBasic", - "BooleanReverse", - "ChooseUpscaleModel", - "FluxAttentionCleanup", - "FluxAttentionControl", - "FluxControlNetApply", - "FluxResolutionNode", - "FluxSampler", - "FluxUnionControlNetApply", - "GetImageSizeRatio", - "IntegerSettings", - "NoisePlusBlend", - "RegionMaskConditioning", - "RegionMaskGenerator", - "RegionMaskProcessor", - "RegionMaskValidator", - "RegionOverlayVisualizer" - ], - { - "title_aux": "ControlAltAI Nodes" - } - ], - "https://github.com/gt732/ComfyUI-DreamWaltz-G": [ - [ - "DreamWaltzGStageOneTrainer", - "DreamWaltzGStageTwoTrainer" - ], - { - "title_aux": "ComfyUI-DreamWaltz-G" - } - ], - "https://github.com/guill/abracadabra-comfyui": [ - [ - "AbracadabraNode", - "AbracadabraNodeDefSummary" - ], - { - "title_aux": "abracadabra-comfyui" - } - ], - "https://github.com/guyaton/guy-nodes-comfyui": [ - [ - "GuyRecommendedLatentResCalc" - ], - { - "title_aux": "guy-nodes-comfyui" - } - ], - "https://github.com/hackkhai/ComfyUI-Image-Matting": [ - [ - "ApplyMatting", - "CreateTrimap", - "MattingModelLoader" - ], - { - "title_aux": "ComfyUI-Image-Matting" - } - ], - "https://github.com/hanoixan/ComfyUI-DataBeast": [ - [ - "DBConvertToBoolean //DataBeast", - "DBConvertToFloat //DataBeast", - "DBConvertToInt //DataBeast", - "DBConvertToString //DataBeast", - "DBFloatExpression //DataBeast", - "DBGetBatchList //DataBeast", - "DBGetItem //DataBeast", - "DBLoadData //DataBeast", - "DBStringExpression //DataBeast" - ], - { - "author": "hanoixan", - "description": "This extension provides nodes for controlling data-driven processing in Comfy-UI", - "nickname": "DataBeast", - "title": "DataBeast", - "title_aux": "ComfyUI DataBeast" - } - ], - "https://github.com/haohaocreates/ComfyUI-HH-Image-Selector": [ - [ - "Image Selector" - ], - { - "title_aux": "ComfyUI-HH-Image-Selector" - } - ], - "https://github.com/hay86/ComfyUI_DDColor": [ - [ - "D_DDColor" - ], - { - "title_aux": "ComfyUI DDColor" - } - ], - "https://github.com/hay86/ComfyUI_Dreamtalk": [ - [ - "D_DreamTalk" - ], - { - "title_aux": "ComfyUI Dreamtalk" - } - ], - "https://github.com/hay86/ComfyUI_Hallo": [ - [ - "D_HalloNode" - ], - { - "title_aux": "ComfyUI Hallo" - } - ], - "https://github.com/hay86/ComfyUI_LatentSync": [ - [ - "D_LatentSyncNode" - ], - { - "title_aux": "ComfyUI LatentSync" - } - ], - "https://github.com/hay86/ComfyUI_MiniCPM-V": [ - [ - "D_MiniCPM_VQA" - ], - { - "title_aux": "ComfyUI MiniCPM-V" - } - ], - "https://github.com/hay86/ComfyUI_OpenVoice": [ - [ - "D_OpenVoice_STS", - "D_OpenVoice_TTS", - "D_OpenVoice_TTS_V2" - ], - { - "title_aux": "ComfyUI OpenVoice" - } - ], - "https://github.com/hben35096/ComfyUI-ReplenishNodes": [ - [ - "Batch Image Blend", - "FLOAT Output", - "Fill Alpha", - "Get Batch Count", - "Image Blend BG", - "Integer Output", - "Load CLIP Name", - "Load Ckpt Name", - "Load Lora Name", - "Load Sampler Name", - "Load Scheduler Name", - "Load UNET Name", - "Mask Levels Adjust", - "Multi Line Text", - "Multiple Image Blend", - "RN_MultipleImageBlend_2", - "Seed Output" - ], - { - "title_aux": "ComfyUI-ReplenishNodes" - } - ], - "https://github.com/hben35096/ComfyUI-ToolBox": [ - [ - "AutoDLDownload", - "CreatePaths", - "FolderDeleter", - "FolderViewe", - "PathOutput" - ], - { - "title_aux": "ComfyUI-ToolBox" - } - ], - "https://github.com/heshengtao/comfyui_LLM_party": [ - [ - "About_us", - "AmapRegeoTool", - "AmapWeatherTool", - "Browser_display", - "CLIPTextEncode_party", - "Combine_Videos_party", - "Dingding", - "Dingding_tool", - "EasyOCR_advance", - "EasyOCR_choose", - "FeishuDownloadAudio", - "FeishuDownloadImage", - "FeishuGetHistory", - "FeishuSendMsg", - "FileOnlineDelete_gitee", - "FileOnlineStorage_gitee", - "FilePathExists", - "FolderCleaner", - "GGUFLoader", - "GeocodeTool", - "Image2Video_party", - "Images2Image", - "KG_csv_toolkit_developer", - "KG_csv_toolkit_user", - "KG_json_toolkit_developer", - "KG_json_toolkit_user", - "KG_neo_toolkit_developer", - "KG_neo_toolkit_user", - "KSampler_party", - "LLM", - "LLM_api_loader", - "LLM_local", - "LLM_local_loader", - "LLavaLoader", - "LorapathLoader", - "Lorebook", - "Mcp_tool", - "RSS_loader", - "RSS_tool", - "SpeedChange", - "URL2IMG", - "VAEDecode_party", - "accuweather_tool", - "advance_ebd_tool", - "aisuite_loader", - "any2str", - "any_switcher", - "api_function", - "api_tool", - "arxiv_tool", - "bing_loader", - "bing_tool", - "bool_logic", - "browser_use_tool", - "check_text", - "check_web_tool", - "classify_function", - "classify_function_plus", - "classify_persona", - "classify_persona_plus", - "clear_file", - "clear_model", - "custom_persona", - "custom_string_format", - "dall_e_tool", - "discord_bot", - "discord_file_monitor", - "discord_send", - "duckduckgo_loader", - "duckduckgo_tool", - "easy_GGUFLoader", - "easy_LLM_api_loader", - "easy_LLM_local_loader", - "easy_LLavaLoader", - "easy_load_llm_lora", - "easy_vlmLoader", - "ebd_tool", - "embeddings_function", - "end_anything", - "end_dialog", - "end_workflow", - "extra_parameters", - "feishu", - "feishu_tool", - "file_combine", - "file_combine_plus", - "file_path_iterator", - "files_read_tool", - "fish_tts", - "fish_whisper", - "flux_persona", - "genai_api_loader", - "get_string", - "github_tool", - "google_loader", - "google_tool", - "got_ocr", - "gpt_sovits", - "graph_md_to_html", - "html2img_function", - "ic_lora_persona", - "image_iterator", - "img2path", - "img_hosting", - "interpreter_function", - "interpreter_tool", - "interrupt_loop", - "json2text", - "json_extractor", - "json_get_value", - "json_iterator", - "json_parser", - "json_writing", - "keyword_tool", - "list_append", - "list_append_plus", - "list_extend", - "list_extend_plus", - "listen_audio", - "load_SQL_memo", - "load_bool", - "load_ebd", - "load_excel", - "load_file", - "load_file_folder", - "load_float", - "load_img_path", - "load_int", - "load_keyword", - "load_llm_lora", - "load_memo", - "load_name", - "load_openai_ebd", - "load_persona", - "load_redis_memo", - "load_url", - "load_wikipedia", - "md_to_excel", - "md_to_html", - "mini_error_correction", - "mini_flux_prompt", - "mini_flux_tag", - "mini_intent_recognition", - "mini_ocr", - "mini_party", - "mini_sd_prompt", - "mini_sd_tag", - "mini_story", - "mini_summary", - "mini_translate", - "none2false", - "omost_decode", - "omost_json2py", - "omost_setting", - "open_url_function", - "open_url_tool", - "openai_dall_e", - "openai_ebd_tool", - "openai_tts", - "openai_whisper", - "parameter_combine", - "parameter_combine_plus", - "parameter_function", - "path2img_tool", - "red_book_text_persona", - "replace_string", - "save_SQL_memo", - "save_ebd_database", - "save_memo", - "save_openai_ebd", - "save_redis_memo", - "savepersona", - "searxng_tool", - "send_to_wechat_official", - "show_text_party", - "sql_tool", - "srt2txt", - "start_anything", - "start_dialog", - "start_workflow", - "story_json_tool", - "str2float", - "str2int", - "string_combine", - "string_combine_plus", - "string_logic", - "substring", - "svg2html", - "svg2img_function", - "text2json", - "text2parameters", - "text_iterator", - "text_writing", - "time_sleep", - "time_tool", - "tool_combine", - "tool_combine_plus", - "translate_persona", - "txt2srt", - "url2img_tool", - "vlmLoader", - "weekday_tool", - "whisper_local", - "wikipedia_tool", - "work_wechat", - "work_wechat_tool", - "workflow_tool", - "workflow_transfer", - "workflow_transfer_v2" - ], - { - "title_aux": "comfyui_LLM_party" - } - ], - "https://github.com/heshengtao/comfyui_LLM_schools": [ - [ - "CausalLM_trainer", - "IA3_Arguments", - "LLM_Arguments", - "Lora_or_adapter_Arguments", - "P_or_Prompt_Arguments", - "Prefix_Arguments", - "download_dataset", - "get_dataset_name", - "split_dataset" - ], - { - "title_aux": "comfyui_LLM_schools" - } - ], - "https://github.com/hhhzzyang/Comfyui_Lama": [ - [ - "LamaApply", - "LamaModelLoader", - "YamlConfigLoader" - ], - { - "title_aux": "Comfyui-Lama" - } - ], - "https://github.com/hieuck/ComfyUI-BiRefNet": [ - [ - "BiRefNet" - ], - { - "title_aux": "ComfyUI-BiRefNet-Fix utils" - } - ], - "https://github.com/hiforce/comfyui-hiforce-plugin": [ - [ - "HfBoolSwitchKSampleStatus", - "HfImageAutoExpansionSquare", - "HfImageToRGB", - "HfImageToRGBA", - "HfInitImageWithMaxSize", - "HfIterativeLatentUpscale", - "HfLoadImageWithCropper", - "HfLookbackSamplerLoader", - "HfLoopback", - "HfResizeImage", - "HfSampler", - "HfSamplerLoader", - "HfSamplerLoopback", - "HfSaveImage", - "HfSwitchKSampleStatus", - "HfTwoSamplersForMask", - "HfTwoStepSamplers", - "LoadImageFromURL" - ], - { - "title_aux": "Comfyui HiFORCE Plugin" - } - ], - "https://github.com/hinablue/ComfyUI_3dPoseEditor": [ - [ - "Hina.PoseEditor3D" - ], - { - "title_aux": "ComfyUI 3D Pose Editor" - } - ], - "https://github.com/hmwl/ComfyUI_zip": [ - [ - "CleanFolders", - "CompressImages", - "UnzipToInput" - ], - { - "title_aux": "ComfyUI_zip" - } - ], - "https://github.com/hodanajan/optimal-crop-resolution": [ - [ - "AspectRatioCalculator", - "ResolutionMatcher" - ], - { - "title_aux": "optimal-crop-resolution" - } - ], - "https://github.com/holchan/ComfyUI-ModelDownloader": [ - [ - "LoRADownloader", - "ModelDownloader" - ], - { - "title_aux": "ComfyUI-ModelDownloader" - } - ], - "https://github.com/hoveychen/ComfyUI-MusePose-Remaster": [ - [ - "musepose_getposes", - "musepose_inference" - ], - { - "title_aux": "ComfyUI-MusePose-Remaster" - } - ], - "https://github.com/huagetai/ComfyUI-Gaffer": [ - [ - "ApplyICLight", - "CalculateNormalMap", - "GrayScaler", - "ICLightModelLoader", - "LightSource" - ], - { - "title_aux": "comfyui's gaffer(ComfyUI native implementation of IC-Light. )" - } - ], - "https://github.com/huagetai/ComfyUI_LightGradient": [ - [ - "ImageGradient", - "MaskGradient" - ], - { - "title_aux": "Light Gradient for ComfyUI" - } - ], - "https://github.com/huanngzh/ComfyUI-MVAdapter": [ - [ - "BiRefNet", - "ControlImagePreprocessor", - "ControlNetModelLoader", - "DiffusersMVSampler", - "DiffusersModelMakeup", - "DiffusersPipelineLoader", - "DiffusersSampler", - "DiffusersSchedulerLoader", - "DiffusersVaeLoader", - "ImagePreprocessor", - "LdmPipelineLoader", - "LdmVaeLoader", - "LoraModelLoader", - "ViewSelector" - ], - { - "title_aux": "ComfyUI-MVAdapter" - } - ], - "https://github.com/huchenlei/ComfyUI-IC-Light-Native": [ - [ - "ICLightApplyMaskGrey", - "ICLightAppply", - "VAEEncodeArgMax" - ], - { - "title_aux": "ComfyUI-IC-Light-Native" - } - ], - "https://github.com/huchenlei/ComfyUI-layerdiffuse": [ - [ - "LayeredDiffusionApply", - "LayeredDiffusionCondApply", - "LayeredDiffusionCondJointApply", - "LayeredDiffusionDecode", - "LayeredDiffusionDecodeRGBA", - "LayeredDiffusionDecodeSplit", - "LayeredDiffusionDiffApply", - "LayeredDiffusionJointApply" - ], - { - "title_aux": "ComfyUI-layerdiffuse (layerdiffusion)" - } - ], - "https://github.com/huchenlei/ComfyUI-openpose-editor": [ - [ - "huchenlei.LoadOpenposeJSON" - ], - { - "title_aux": "ComfyUI-openpose-editor" - } - ], - "https://github.com/huchenlei/ComfyUI_DanTagGen": [ - [ - "PromptDanTagGen" - ], - { - "title_aux": "ComfyUI_DanTagGen" - } - ], - "https://github.com/huchenlei/ComfyUI_densediffusion": [ - [ - "DenseDiffusionAddCondNode", - "DenseDiffusionApplyNode" - ], - { - "title_aux": "ComfyUI DenseDiffusion" - } - ], - "https://github.com/huchenlei/ComfyUI_omost": [ - [ - "OmostDenseDiffusionLayoutNode", - "OmostGreedyBagsTextEmbeddingNode", - "OmostLLMChatNode", - "OmostLLMHTTPServerNode", - "OmostLLMLoaderNode", - "OmostLayoutCondNode", - "OmostLoadCanvasConditioningNode", - "OmostLoadCanvasPythonCodeNode", - "OmostRenderCanvasConditioningNode" - ], - { - "title_aux": "ComfyUI_omost" - } - ], - "https://github.com/hughescr/ComfyUI-OpenPose-Keypoint-Extractor": [ - [ - "Openpose Keypoint Extractor" - ], - { - "title_aux": "OpenPose Keypoint Extractor" - } - ], - "https://github.com/huixingyun/ComfyUI-HX-Captioner": [ - [ - "HXOllamaCaptioner" - ], - { - "title_aux": "ComfyUI-HX-Captioner" - } - ], - "https://github.com/hustille/ComfyUI_Fooocus_KSampler": [ - [ - "KSampler With Refiner (Fooocus)" - ], - { - "title_aux": "ComfyUI_Fooocus_KSampler" - } - ], - "https://github.com/hustille/ComfyUI_hus_utils": [ - [ - "3way Prompt Styler", - "Batch State", - "Date Time Format", - "Debug Extra", - "Fetch widget value", - "Text Hash" - ], - { - "title_aux": "hus' utils for ComfyUI" - } - ], - "https://github.com/hwhaocool/ComfyUI-Select-Any": [ - [ - "SelectAnyValues" - ], - { - "title_aux": "ComfyUI-Select-Any" - } - ], - "https://github.com/hylarucoder/comfyui-copilot": [ - [ - "EagleImageNode", - "SDXLPromptStyler", - "SDXLPromptStylerAdvanced", - "SDXLResolutionPresets" - ], - { - "title_aux": "comfyui-copilot" - } - ], - "https://github.com/hyunamy/comfy-ui-on-complete-email-me": [ - [ - "OnCompleteEmailMe", - "OnCompletePlaySound", - "OnCompleteWebhook" - ], - { - "title_aux": "Comfy-UI on-complete-email-me" - } - ], - "https://github.com/iFREEGROUP/comfyui-undistort": [ - [ - "IG_LoadCheckerboardImageForCalibrateCamera", - "IG_MatrixAndDistCoefToText", - "IG_Undistort" - ], - { - "title_aux": "comfyui-undistort" - } - ], - "https://github.com/iamandeepsandhu/ComfyUI-NSFW-Check": [ - [ - "NSFWScore" - ], - { - "title_aux": "NSFW Check for ComfyUI" - } - ], - "https://github.com/icesun963/ComfyUI_HFDownLoad": [ - [ - "Apply EasyOCR V2", - "HFDownLoad_Tool", - "LayerMask: SegmentAnythingUltra V2.1", - "LayerUtility: LaMa V2" - ], - { - "author": "chflame", - "description": "A set of nodes for ComfyUI that can composite layer and mask to achieve Photoshop like functionality.", - "nickname": "LayerStyle", - "title": "LayerStyle", - "title_aux": "HFDownLoad Node for ComfyUI" - } - ], - "https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words": [ - [ - "FusionText", - "LoraListNames", - "LoraLoaderAdvanced", - "LoraLoaderStackedAdvanced", - "LoraLoaderStackedVanilla", - "LoraLoaderVanilla", - "LoraTagsOnly", - "Randomizer", - "TagsFormater", - "TagsSelector", - "TextInputBasic" - ], - { - "title_aux": "ComfyUI-Lora-Auto-Trigger-Words" - } - ], - "https://github.com/iemesowum/ComfyUI_IsaacNodes": [ - [ - "I_AmplitudeToWeights", - "I_BinaryAmplitudeGate", - "I_UnmixAudio", - "I_WeightsListToWeights" - ], - { - "author": "Isaac Emesowum", - "description": "This extension offers automatic drums extraction from audio files, as well as a few helper nodes to support my audio synchronization AnimateDiff workflows.", - "nickname": "Isaac's Nodes", - "title": "Isaac's Nodes", - "title_aux": "Isaac's Nodes" - } - ], - "https://github.com/if-ai/ComfyUI-IF_AI_HFDownloaderNode": [ - [ - "IF_HFDownload", - "IF_HFDownloadNode" - ], - { - "title_aux": "ComfyUI-IF_AI_HFDownloaderNode" - } - ], - "https://github.com/if-ai/ComfyUI-IF_AI_WishperSpeechNode": [ - [ - "IF_WhisperSpeech" - ], - { - "title_aux": "ComfyUI-IF_AI_WishperSpeechNode" - } - ], - "https://github.com/if-ai/ComfyUI-IF_AI_tools": [ - [ - "IF_ChatPrompt", - "IF_DisplayOmni", - "IF_DisplayText", - "IF_DisplayTextWildcard", - "IF_ImagePrompt", - "IF_JoinText", - "IF_LoadImagesS", - "IF_PromptMkr", - "IF_SaveText", - "IF_StepCounter", - "IF_TextTyper", - "IF_VisualizeGraph", - "IF_tools_LoadImagesS" - ], - { - "title_aux": "ComfyUI-IF_AI_tools" - } - ], - "https://github.com/if-ai/ComfyUI-IF_MemoAvatar": [ - [ - "IF_MemoAvatar", - "IF_MemoCheckpointLoader" - ], - { - "title_aux": "ComfyUI-IF_MemoAvatar" - } - ], - "https://github.com/if-ai/ComfyUI-IF_Trellis": [ - [ - "IF_TrellisCheckpointLoader", - "IF_TrellisImageTo3D" - ], - { - "title_aux": "ComfyUI-IF_Trellis" - } - ], - "https://github.com/ihmily/ComfyUI-Light-Tool": [ - [ - "Light-Tool: AddBackground", - "Light-Tool: AddBackgroundV2", - "Light-Tool: BoundingBoxCropping", - "Light-Tool: GetImageSize", - "Light-Tool: ImageConcat", - "Light-Tool: ImageMaskApply", - "Light-Tool: ImageOverlay", - "Light-Tool: ImageToMask", - "Light-Tool: InputText", - "Light-Tool: InputTextList", - "Light-Tool: InvertMask", - "Light-Tool: IsTransparent", - "Light-Tool: LoadImage", - "Light-Tool: LoadImageFromURL", - "Light-Tool: LoadImagesFromDir", - "Light-Tool: MaskBoundingBoxCropping", - "Light-Tool: MaskContourExtractor", - "Light-Tool: MaskImageToTransparent", - "Light-Tool: MaskToImage", - "Light-Tool: PhantomTankEffect", - "Light-Tool: PreviewVideo", - "Light-Tool: RGB2RGBA", - "Light-Tool: RGBA2RGB", - "Light-Tool: ResizeImage", - "Light-Tool: SaveToAliyunOSS", - "Light-Tool: SaveVideo", - "Light-Tool: ShowText", - "Light-Tool: SimpleImageOverlay", - "Light-Tool: SolidColorBackground", - "Light-Tool: TextConnect" - ], - { - "author": "Hmily", - "description": "An awesome light image processing tool nodes for ComfyUI.", - "nickname": "ComfyUI-Light-Tool", - "title": "ComfyUI-Light-Tool", - "title_aux": "ComfyUI-Light-Tool" - } - ], - "https://github.com/imb101/ComfyUI-FaceSwap": [ - [ - "FaceSwapNode" - ], - { - "title_aux": "FaceSwap" - } - ], - "https://github.com/inflamously/comfyui-prompt-enhancer": [ - [ - "PROMPT_ENHANCER", - "PROMPT_ENHANCER_CHAIN_CONTROL", - "PROMPT_ENHANCER_CHAIN_RANDOM" - ], - { - "title_aux": "comfyui-prompt-enhancer" - } - ], - "https://github.com/injet-zhou/comfyui_extra_api": [ - [ - "SimpleGenImageInterface" - ], - { - "title_aux": "comfyui_extra_api" - } - ], - "https://github.com/inventorado/ComfyUI_NNT": [ - [ - "NntAnalyzeInferenceMetrics", - "NntAnalyzeModel", - "NntCompileModel", - "NntDatasetToImageTensor", - "NntDatasetToTargetTensor", - "NntDatasetToTensor", - "NntDatasetToTextTensor", - "NntDefineActivationLayer", - "NntDefineAlibiPositionalBias", - "NntDefineConvLayer", - "NntDefineDenseLayer", - "NntDefineFlattenLayer", - "NntDefineGRULayer", - "NntDefineLSTMLayer", - "NntDefineLinearAttention", - "NntDefineLocalAttention", - "NntDefineMultiheadAttention", - "NntDefineNormLayer", - "NntDefinePoolingLayer", - "NntDefinePositionalEncoding", - "NntDefineRNNLayer", - "NntDefineReformerAttention", - "NntDefineRelativePositionBias", - "NntDefineReshapeLayer", - "NntDefineRotaryPositionalEmbedding", - "NntDefineTransformerEncoderLayer", - "NntDefineTransformerXLAttention", - "NntDefineVanillaAttention", - "NntEditModelLayers", - "NntEvaluatePredictions", - "NntFileLoader", - "NntFineTuneModel", - "NntHuggingFaceDataLoader", - "NntImageToTensor", - "NntInference", - "NntInputLayer", - "NntLoadModel", - "NntMergeExtendModel", - "NntPlotTensors", - "NntRandomTensorGenerator", - "NntSHAPSummaryNode", - "NntSaveModel", - "NntShowLayerStack", - "NntShowModelInfo", - "NntTensorElementToImage", - "NntTensorOperations", - "NntTensorSlice", - "NntTensorToText", - "NntTextBatchProcessor", - "NntTextToTensor", - "NntTimeSeriesDataLoader", - "NntTorchvisionDataLoader", - "NntTorchvisionDatasets", - "NntTrainModel", - "NntTrainingHyperparameters", - "NntVisualizeConfidenceScores", - "NntVisualizeGraph", - "NntVisualizePredictionMetrics", - "NntVisualizeTrainingMetrics" - ], - { - "title_aux": "ComfyUI Neural Network Toolkit NNT " - } - ], - "https://github.com/iwanders/ComfyUI_nodes": [ - [ - "IW_JsonPickItem", - "IW_ModelHook", - "IW_StringConcat", - "IW_StringFromInt", - "IW_StringNode", - "IW_StringPrint", - "IW_StringReplace", - "IW_StringSave", - "IW_TokenizerVocab" - ], - { - "title_aux": "iwanders/ComfyUI_nodes" - } - ], - "https://github.com/jacklukai/ComfyUI_DeployCash": [ - [ - "DeployCash", - "DeployCash_saveImage", - "DeployCash_textInput" - ], - { - "title_aux": "ComfyUI_DeployCash" - } - ], - "https://github.com/jags111/ComfyUI_Jags_Audiotools": [ - [ - "BatchJoinAudio", - "BatchToList", - "BitCrushAudioFX", - "BulkVariation", - "ChorusAudioFX", - "ClippingAudioFX", - "CompressorAudioFX", - "ConcatAudioList", - "ConvolutionAudioFX", - "CutAudio", - "DelayAudioFX", - "DistortionAudioFX", - "DuplicateAudio", - "GainAudioFX", - "GenerateAudioSample", - "GenerateAudioWave", - "GetAudioFromFolderIndex", - "GetSingle", - "GetStringByIndex", - "HighShelfFilter", - "HighpassFilter", - "ImageToSpectral", - "InvertAudioFX", - "JoinAudio", - "LadderFilter", - "LimiterAudioFX", - "ListToBatch", - "LoadAudioDir", - "LoadAudioFile", - "LoadAudioModel (DD)", - "LoadVST3", - "LowShelfFilter", - "LowpassFilter", - "MP3CompressorAudioFX", - "MixAudioTensors", - "NoiseGateAudioFX", - "OTTAudioFX", - "PeakFilter", - "PhaserEffectAudioFX", - "PitchShiftAudioFX", - "PlotSpectrogram", - "PreviewAudioFile", - "PreviewAudioTensor", - "ResampleAudio", - "ReverbAudioFX", - "ReverseAudio", - "SaveAudioTensor", - "SequenceVariation", - "SliceAudio", - "SoundPlayer", - "StretchAudio", - "samplerate" - ], - { - "author": "jags111", - "description": "This extension offers various audio generation tools", - "nickname": "Audiotools", - "title": "Jags_Audiotools", - "title_aux": "Jags_Audiotools" - } - ], - "https://github.com/jags111/ComfyUI_Jags_VectorMagic": [ - [ - "CircularVAEDecode", - "JagsCLIPSeg", - "JagsClipseg", - "JagsCombineMasks", - "SVG", - "YoloSEGdetectionNode", - "YoloSegNode", - "color_drop", - "xy_Tiling_KSampler" - ], - { - "author": "jags111", - "description": "This extension offers various vector manipulation and generation tools", - "nickname": "Jags_VectorMagic", - "title": "Jags_VectorMagic", - "title_aux": "Jags_VectorMagic" - } - ], - "https://github.com/jags111/efficiency-nodes-comfyui": [ - [ - "AnimateDiff Script", - "Apply ControlNet Stack", - "Control Net Stacker", - "Eff. Loader SDXL", - "Efficient Loader", - "HighRes-Fix Script", - "Image Overlay", - "Join XY Inputs of Same Type", - "KSampler (Efficient)", - "KSampler Adv. (Efficient)", - "KSampler SDXL (Eff.)", - "LatentUpscaler", - "LoRA Stack to String converter", - "LoRA Stacker", - "Manual XY Entry Info", - "NNLatentUpscale", - "Noise Control Script", - "Pack SDXL Tuple", - "Tiled Upscaler Script", - "Unpack SDXL Tuple", - "XY Input: Add/Return Noise", - "XY Input: Aesthetic Score", - "XY Input: CFG Scale", - "XY Input: Checkpoint", - "XY Input: Clip Skip", - "XY Input: Control Net", - "XY Input: Control Net Plot", - "XY Input: Denoise", - "XY Input: LoRA", - "XY Input: LoRA Plot", - "XY Input: LoRA Stacks", - "XY Input: Manual XY Entry", - "XY Input: Prompt S/R", - "XY Input: Refiner On/Off", - "XY Input: Sampler/Scheduler", - "XY Input: Seeds++ Batch", - "XY Input: Steps", - "XY Input: VAE", - "XY Plot" - ], - { - "title_aux": "Efficiency Nodes for ComfyUI Version 2.0+" - } - ], - "https://github.com/jakechai/ComfyUI-JakeUpgrade": [ - [ - "Animation Prompt JK", - "Animation Value JK", - "Base Image Parameters Extract JK", - "Base Model Parameters Extract JK", - "Base Model Parameters JK", - "Base Model Parameters SD3API JK", - "Base Model Pipe Extract JK", - "Base Model Pipe JK", - "Bool Binary And JK", - "Bool Binary OR JK", - "CM_BoolBinaryOperation JK", - "CM_BoolToInt JK", - "CM_BoolUnaryOperation JK", - "CM_BreakoutVec2 JK", - "CM_BreakoutVec3 JK", - "CM_BreakoutVec4 JK", - "CM_ComposeVec2 JK", - "CM_ComposeVec3 JK", - "CM_ComposeVec4 JK", - "CM_FloatBinaryCondition JK", - "CM_FloatBinaryOperation JK", - "CM_FloatToInt JK", - "CM_FloatToNumber JK", - "CM_FloatUnaryCondition JK", - "CM_FloatUnaryOperation JK", - "CM_IntBinaryCondition JK", - "CM_IntBinaryOperation JK", - "CM_IntToBool JK", - "CM_IntToFloat JK", - "CM_IntToNumber JK", - "CM_IntUnaryCondition JK", - "CM_IntUnaryOperation JK", - "CM_NumberBinaryCondition JK", - "CM_NumberBinaryOperation JK", - "CM_NumberToFloat JK", - "CM_NumberToInt JK", - "CM_NumberUnaryCondition JK", - "CM_NumberUnaryOperation JK", - "CM_PromptCombine_JK", - "CM_StringBinaryCondition_JK", - "CM_Vec2BinaryCondition JK", - "CM_Vec2BinaryOperation JK", - "CM_Vec2FloatOperation_JK", - "CM_Vec2ToFloatBinaryOperation JK", - "CM_Vec2ToFloatUnaryOperation JK", - "CM_Vec2UnaryCondition JK", - "CM_Vec2UnaryOperation JK", - "CM_Vec3BinaryCondition JK", - "CM_Vec3BinaryOperation JK", - "CM_Vec3FloatOperation_JK", - "CM_Vec3ToFloatBinaryOperation JK", - "CM_Vec3ToFloatUnaryOperation JK", - "CM_Vec3UnaryCondition JK", - "CM_Vec3UnaryOperation JK", - "CM_Vec4BinaryCondition JK", - "CM_Vec4BinaryOperation JK", - "CM_Vec4FloatOperation_JK", - "CM_Vec4ToFloatBinaryOperation JK", - "CM_Vec4ToFloatUnaryOperation JK", - "CM_Vec4UnaryCondition JK", - "CM_Vec4UnaryOperation JK", - "CR Apply ControlNet JK", - "CR Apply LoRA Stack JK", - "CR Apply Multi-ControlNet Adv JK", - "CR Apply Multi-ControlNet JK", - "CR Aspect Ratio JK", - "CR Boolean JK", - "CR Clip Input Switch JK", - "CR Conditioning Input Switch JK", - "CR ControlNet Input Switch JK", - "CR ControlNet Loader JK", - "CR ControlNet Stack Input Switch JK", - "CR Float Input Switch JK", - "CR Guider Input Switch JK", - "CR Image Input Switch JK", - "CR Impact Pipe Input Switch JK", - "CR Int Input Switch JK", - "CR Latent Input Switch JK", - "CR LoRA Stack JK", - "CR Load LoRA JK", - "CR Mask Input Switch JK", - "CR Mesh Input Switch JK", - "CR Model Input Switch JK", - "CR Multi-ControlNet Param Stack JK", - "CR Multi-ControlNet Stack JK", - "CR Noise Input Switch JK", - "CR Obit Pose Input Switch JK", - "CR Orbit Pose Input Switch JK", - "CR Pipe Input Switch JK", - "CR Ply Input Switch JK", - "CR SD1.5 Aspect Ratio JK", - "CR SD3 Aspect Ratio JK", - "CR SDXL Aspect Ratio JK", - "CR Sampler Input Switch JK", - "CR Sigmas Input Switch JK", - "CR Text Input Switch JK", - "CR VAE Input Switch JK", - "Ckpt Loader JK", - "Color Grading JK", - "Detailer Parameters JK", - "Embedding Picker JK", - "Embedding Picker Multi JK", - "Empty Latent Color JK", - "Evaluate Examples JK", - "Evaluate Floats JK", - "Evaluate Ints JK", - "Evaluate Strings JK", - "Get Size JK", - "Guidance Default JK", - "HintImageEnchance JK", - "IPAAdapterFaceIDBatch", - "IPAdapter", - "IPAdapterAdvanced", - "IPAdapterBatch", - "IPAdapterClipVisionEnhancer", - "IPAdapterClipVisionEnhancerBatch", - "IPAdapterCombineEmbeds", - "IPAdapterCombineParams", - "IPAdapterCombineWeights", - "IPAdapterEmbeds", - "IPAdapterEmbedsBatch", - "IPAdapterEncoder", - "IPAdapterFaceID", - "IPAdapterFaceIDKolors", - "IPAdapterFromParams", - "IPAdapterInsightFaceLoader", - "IPAdapterLoadEmbeds", - "IPAdapterMS", - "IPAdapterModelLoader", - "IPAdapterNoise", - "IPAdapterPreciseComposition", - "IPAdapterPreciseCompositionBatch", - "IPAdapterPreciseStyleTransfer", - "IPAdapterPreciseStyleTransferBatch", - "IPAdapterPromptScheduleFromWeightsStrategy", - "IPAdapterRegionalConditioning", - "IPAdapterSaveEmbeds", - "IPAdapterStyleComposition", - "IPAdapterStyleCompositionBatch", - "IPAdapterTiled", - "IPAdapterTiledBatch", - "IPAdapterUnifiedLoader", - "IPAdapterUnifiedLoaderCommunity", - "IPAdapterUnifiedLoaderFaceID", - "IPAdapterWeights", - "IPAdapterWeightsFromStrategy", - "Image Crop by Mask Params JK", - "Image Crop by Mask Resolution JK", - "Image Remove Alpha JK", - "Image Resize Mode JK", - "Image Upscale Parameters Extract JK", - "Is Mask Empty JK", - "Ksampler Parameters Default JK", - "Ksampler Parameters JK", - "Latent Crop Offset JK", - "Latent Upscale Parameters Extract JK", - "Load Image With Alpha JK", - "Load Image With Metadata JK", - "Make Image Grid JK", - "Metadata Pipe Extract JK", - "Metadata Pipe JK", - "NodesState JK", - "Noise Injection Parameters JK", - "Noise Injection Pipe Extract JK", - "Orbit Poses JK", - "OrbitLists to OrbitPoses JK", - "OrbitPoses to OrbitLists JK", - "Pipe End JK", - "PrepImageForClipVision", - "Project Setting JK", - "Random Beats JK", - "Refine 1 Parameters Extract JK", - "Refine 2 Parameters Extract JK", - "Refine Model Parameters JK", - "Refine Pipe Extract JK", - "Refine Pipe JK", - "Reroute Ckpt JK", - "Reroute List JK", - "Reroute Resize JK", - "Reroute Sampler JK", - "Reroute String JK", - "Reroute Upscale JK", - "Reroute Vae JK", - "SDXL Target Res JK", - "SDXLPromptStylerAll", - "SDXLPromptStylerHorror", - "SDXLPromptStylerMisc", - "SDXLPromptStylerbyArtist", - "SDXLPromptStylerbyCamera", - "SDXLPromptStylerbyComposition", - "SDXLPromptStylerbyCyberpunkSurrealism", - "SDXLPromptStylerbyDepth", - "SDXLPromptStylerbyDiva", - "SDXLPromptStylerbyEnvironment", - "SDXLPromptStylerbyFantasySetting", - "SDXLPromptStylerbyFilter", - "SDXLPromptStylerbyFocus", - "SDXLPromptStylerbyFooocus", - "SDXLPromptStylerbyImpressionism", - "SDXLPromptStylerbyLighting", - "SDXLPromptStylerbyMarc", - "SDXLPromptStylerbyMileHigh", - "SDXLPromptStylerbyMood", - "SDXLPromptStylerbyMre", - "SDXLPromptStylerbyMythicalCreature", - "SDXLPromptStylerbyOriginal", - "SDXLPromptStylerbyQuantumRealism", - "SDXLPromptStylerbySai", - "SDXLPromptStylerbySteamPunkRealism", - "SDXLPromptStylerbySubject", - "SDXLPromptStylerbySurrealism", - "SDXLPromptStylerbyTheme", - "SDXLPromptStylerbyTimeofDay", - "SDXLPromptStylerbyTwri", - "SDXLPromptStylerbyWyvern", - "SDXLPromptbyCelticArt", - "SDXLPromptbyContemporaryNordicArt", - "SDXLPromptbyFashionArt", - "SDXLPromptbyGothicRevival", - "SDXLPromptbyIrishFolkArt", - "SDXLPromptbyRomanticNationalismArt", - "SDXLPromptbySportsArt", - "SDXLPromptbyStreetArt", - "SDXLPromptbyVikingArt", - "SDXLPromptbyWildlifeArt", - "Sampler Loader JK", - "Save Image with Metadata Flow JK", - "Save Image with Metadata JK", - "Scale To Resolution JK", - "Split Image Grid JK", - "Stability Conservative Upscale", - "Stability Control Sketch", - "Stability Control Structure", - "Stability Control Style", - "Stability Creative Upscale", - "Stability Erase", - "Stability Fast Upscale", - "Stability Image Core", - "Stability Image Ultra", - "Stability Inpainting", - "Stability Outpainting", - "Stability Remove Background", - "Stability Replace Background and Relight", - "Stability SD3", - "Stability Search And Recolor", - "Stability Search and Replace", - "String To Combo JK", - "Tiling Mode JK", - "Upscale Method JK", - "Upscale Model Loader JK", - "Upscale Model Parameters Extract JK", - "Upscale Model Parameters JK", - "Vae Loader JK" - ], - { - "title_aux": "ComfyUI-JakeUpgrade" - } - ], - "https://github.com/jamal-alkharrat/ComfyUI_rotate_image": [ - [ - "RotateImage" - ], - { - "title_aux": "ComfyUI_rotate_image" - } - ], - "https://github.com/jamesWalker55/comfyui-p2ldgan": [ - [ - "P2LDGAN" - ], - { - "title_aux": "ComfyUI - P2LDGAN Node" - } - ], - "https://github.com/jamesWalker55/comfyui-various": [ - [ - "BatchLoadImage", - "BatchSaveImage", - "GroupInfoExtractFloat", - "GroupInfoExtractInt", - "GroupLoadBatchImages", - "GroupLoadImage", - "JWDatetimeString", - "JWImageBatchCount", - "JWImageContrast", - "JWImageExtractFromBatch", - "JWImageFlip", - "JWImageLevels", - "JWImageLoadRGB", - "JWImageLoadRGBA", - "JWImageLoadRGBA From Clipboard", - "JWImageLoadRGBFromClipboard", - "JWImageLoadRGBIfExists", - "JWImageMix", - "JWImageResize", - "JWImageResizeByFactor", - "JWImageResizeByLongerSide", - "JWImageResizeByShorterSide", - "JWImageResizeToSquare", - "JWImageSaturation", - "JWImageSaveToPath", - "JWImageSequenceExtractFromBatch", - "JWImageStackChannels", - "JWInfoHashExtractFloat", - "JWInfoHashExtractInteger", - "JWInfoHashExtractString", - "JWInfoHashFromInfoHashList", - "JWInfoHashFromRangedInfo", - "JWInfoHashListExtractStringList", - "JWInfoHashListFromRangedInfo", - "JWInfoHashPrint", - "JWLoadImageSequence", - "JWLoadImagesFromString", - "JWLoopImageSequence", - "JWMaskLikeImageSize", - "JWMaskResize", - "JWMaskSequenceApplyToLatent", - "JWMaskSequenceFromMask", - "JWMaskSequenceJoin", - "JWPrintFloat", - "JWPrintImage", - "JWPrintInteger", - "JWPrintLatent", - "JWPrintMask", - "JWPrintString", - "JWRangedInfoCalculateSubBatch", - "JWReferenceOnly", - "JWSaveImageSequence", - "JWStringListCLIPEncode", - "JWStringListFromString", - "JWStringListFromStrings", - "JWStringListJoin", - "JWStringListRepeat", - "JWStringListToFormatedString", - "JWStringListToString", - "JWUncropCrop", - "JWUncropNewRect", - "JWUncropUncrop", - "JamesLoadImageGroup", - "RAFTEstimate", - "RAFTFlowToImage", - "RAFTLoadFlowFromEXRChannels", - "RCReceiveFloat", - "RCReceiveFloatList", - "RCReceiveInt", - "RCReceiveIntList", - "RCReceiveLatent", - "RCSendLatent" - ], - { - "nodename_pattern": "^JW", - "title_aux": "Various ComfyUI Nodes by Type" - } - ], - "https://github.com/jammyfu/ComfyUI_PaintingCoderUtils": [ - [ - "ClickPopup", - "ColorPicker", - "PaintingCoder::DynamicImageCombiner", - "PaintingCoder::DynamicMaskCombiner", - "PaintingCoder::ImageLatentCreator", - "PaintingCoder::ImageLatentCreatorPlus", - "PaintingCoder::ImageResolutionAdjuster", - "PaintingCoder::ImageSizeCreator", - "PaintingCoder::ImageSizeCreatorPlus", - "PaintingCoder::ImageSwitch", - "PaintingCoder::ImageToBase64", - "PaintingCoder::LatentSwitch", - "PaintingCoder::MaskPreview", - "PaintingCoder::MaskSwitch", - "PaintingCoder::MultilineTextInput", - "PaintingCoder::RemoveEmptyLinesAndLeadingSpaces", - "PaintingCoder::ShowTextPlus", - "PaintingCoder::SimpleTextInput", - "PaintingCoder::TextCombiner", - "PaintingCoder::TextSwitch", - "PaintingCoder::WebImageLoader", - "RemoveEmptyLinesAndLeadingSpacesAdvance" - ], - { - "title_aux": "Painting Coder Utils" - } - ], - "https://github.com/jax-explorer/comfyui-model-dynamic-loader": [ - [ - "ComfyOnlineSaveFile", - "ComfyOnlineUploadAnything", - "EmbeddingLoader", - "LoadCheckpointFromCivitAI", - "LoadHunyuanLoraFromCivitAI", - "LoadHunyuanLoraFromComfyOnline", - "LoadHunyuanLoraFromHF", - "LoadLoraFromCivitAI", - "LoadLoraFromComfyOnline", - "LoadLoraFromHF", - "SaveAudioAsWav", - "SaveText" - ], - { - "title_aux": "comfyui-model-dynamic-loader" - } - ], - "https://github.com/jax-explorer/fast_video_comfyui": [ - [ - "FastImageListToImageBatch" - ], - { - "title_aux": "fast_video_comfyui" - } - ], - "https://github.com/jeffrey2212/ComfyUI-PonyCharacterPrompt": [ - [ - "Pony Character Prompt Picker" - ], - { - "title_aux": "Pony Character Prompt Picker for ComfyUI" - } - ], - "https://github.com/jeffy5/comfyui-faceless-node": [ - [ - "FacelessFaceRestore", - "FacelessFaceSwap", - "FacelessLoadImageUrl", - "FacelessLoadVideo", - "FacelessLoadVideoImages", - "FacelessLoadVideoUrl", - "FacelessMergeVideos", - "FacelessRemoveBackground", - "FacelessSaveVideo", - "FacelessUploadVideo", - "FacelessVideoFaceRestore", - "FacelessVideoFaceSwap", - "FacelessVideoRemoveBackground" - ], - { - "title_aux": "Faceless Node for ComfyUI" - } - ], - "https://github.com/jerrylongyan/ComfyUI-My-Mask": [ - [ - "MaskToBottonHalfConvexMask", - "MaskToConvexMask" - ], - { - "title_aux": "ComfyUI-My-Mask" - } - ], - "https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [ - [ - "StreamDiffusion_Loader", - "StreamDiffusion_Sampler" - ], - { - "title_aux": "ComfyUI_StreamDiffusion" - } - ], - "https://github.com/jhj0517/ComfyUI-Moondream-Gaze-Detection": [ - [ - "(Down)Load Moondream Model", - "Gaze Detection", - "Gaze Detection Video" - ], - { - "title_aux": "ComfyUI-Moondream-Gaze-Detection" - } - ], - "https://github.com/jhj0517/ComfyUI-jhj-Kokoro-Onnx": [ - [ - "(Down)Load Kokoro Model", - "Kokoro Audio Generator" - ], - { - "title_aux": "ComfyUI jhj Kokoro Onnx" - } - ], - "https://github.com/jiaqianjing/ComfyUI-MidjourneyHub": [ - [ - "MidjourneyActionNode", - "MidjourneyBatchActionNode", - "MidjourneyImagineNode" - ], - { - "title_aux": "ComfyUI-MidjourneyHub" - } - ], - "https://github.com/jiaxiangc/ComfyUI-ResAdapter": [ - [ - "ResAdapterLoader" - ], - { - "title_aux": "ResAdapter for ComfyUI" - } - ], - "https://github.com/jitcoder/lora-info": [ - [ - "ImageFromURL", - "LoraInfo" - ], - { - "title_aux": "LoraInfo" - } - ], - "https://github.com/jjkramhoeft/ComfyUI-Jjk-Nodes": [ - [ - "JjkConcat", - "JjkShowText", - "JjkText", - "SDXLRecommendedImageSize" - ], - { - "title_aux": "ComfyUI-Jjk-Nodes" - } - ], - "https://github.com/jkrauss82/ultools-comfyui": [ - [ - "CLIPTextEncodeWithStats", - "OpenPoseEditorAdv", - "SaveImgAdv", - "SolidMaskAdv" - ], - { - "title_aux": "ULTools for ComfyUI" - } - ], - "https://github.com/jn-jairo/jn_comfyui": [ - [ - "JN_AreaAround", - "JN_AreaInfo", - "JN_AreaNormalize", - "JN_AreaToMask", - "JN_AreaWidthHeight", - "JN_AreaXY", - "JN_AudioArrayToBatch", - "JN_AudioAutoTune", - "JN_AudioBatchToArray", - "JN_AudioCompare", - "JN_AudioConcatenation", - "JN_AudioGetChannels", - "JN_AudioInfo", - "JN_AudioNoiseReduction", - "JN_AudioNormalize", - "JN_AudioPitch", - "JN_AudioPlot", - "JN_AudioReverberation", - "JN_AudioSampleRate", - "JN_AudioSetChannels", - "JN_AudioSlice", - "JN_AudioSpeed", - "JN_AudioSplitChannels", - "JN_AudioStackChannels", - "JN_AudioTempo", - "JN_AudioTrimSilence", - "JN_AudioVolume", - "JN_Blip", - "JN_BlipLoader", - "JN_BooleanOperation", - "JN_Condition", - "JN_CoolDown", - "JN_CoolDownOutput", - "JN_DatetimeFormat", - "JN_DatetimeInfo", - "JN_DatetimeNow", - "JN_Dump", - "JN_DumpOutput", - "JN_Exec", - "JN_ExecOutput", - "JN_FaceCrop", - "JN_FaceRestoreModelLoader", - "JN_FaceRestoreWithModel", - "JN_FirstActive", - "JN_Flow", - "JN_FlowOutput", - "JN_ImageAddBackground", - "JN_ImageAddMask", - "JN_ImageBatch", - "JN_ImageCenterArea", - "JN_ImageCrop", - "JN_ImageGrid", - "JN_ImageInfo", - "JN_ImageRemoveBackground", - "JN_ImageSharpness", - "JN_ImageSquare", - "JN_ImageToMask", - "JN_ImageUncrop", - "JN_KSampler", - "JN_KSamplerAdvancedParams", - "JN_KSamplerFaceRestoreParams", - "JN_KSamplerResizeInputParams", - "JN_KSamplerResizeMaskAreaParams", - "JN_KSamplerResizeOutputParams", - "JN_KSamplerSeamlessParams", - "JN_KSamplerTileParams", - "JN_KeyValue", - "JN_LoadAudioDirectory", - "JN_LoadImageDirectory", - "JN_LogicOperation", - "JN_MaskBatch", - "JN_MaskInfo", - "JN_MaskToArea", - "JN_MaskToImage", - "JN_MathOperation", - "JN_MathOperationArray", - "JN_MeowHrtfAudio3d", - "JN_MeowHrtfModel", - "JN_MeowHrtfPosition", - "JN_MeowLoadVoice", - "JN_MeowSaveVoice", - "JN_MeowSentenceSplit", - "JN_MeowTts", - "JN_MeowTtsAudioToContext", - "JN_MeowTtsCoarse", - "JN_MeowTtsDecode", - "JN_MeowTtsFine", - "JN_MeowTtsLoadContext", - "JN_MeowTtsModel", - "JN_MeowTtsModelCoarse", - "JN_MeowTtsModelEncodec", - "JN_MeowTtsModelFine", - "JN_MeowTtsModelHubert", - "JN_MeowTtsModelSemantic", - "JN_MeowTtsSaveContext", - "JN_MeowTtsSemantic", - "JN_MeowTtsTokenizerHubert", - "JN_MeowVc", - "JN_MeowVcConvertVoice", - "JN_MeowVcEncodeSource", - "JN_MeowVcEncodeTarget", - "JN_MeowVcLoadSpeaker", - "JN_MeowVcModelFreeVC", - "JN_MeowVcModelWavLM", - "JN_MeowVcSaveSpeaker", - "JN_PreviewAudio", - "JN_PreviewImage", - "JN_PreviewMask", - "JN_PrimitiveArrayInfo", - "JN_PrimitiveBatchToArray", - "JN_PrimitiveBoolean", - "JN_PrimitiveFloat", - "JN_PrimitiveInt", - "JN_PrimitivePrompt", - "JN_PrimitiveString", - "JN_PrimitiveStringMultiline", - "JN_PrimitiveStringToArray", - "JN_PrimitiveToArray", - "JN_PrimitiveToBoolean", - "JN_PrimitiveToFloat", - "JN_PrimitiveToInt", - "JN_PrimitiveToString", - "JN_RemBGSession", - "JN_SaveAudio", - "JN_SaveImage", - "JN_Seamless", - "JN_SeamlessBorder", - "JN_SeamlessBorderCrop", - "JN_SelectItem", - "JN_Sleep", - "JN_SleepOutput", - "JN_SliceOperation", - "JN_StopIf", - "JN_StopIfOutput", - "JN_TensorInfo", - "JN_TextConcatenation", - "JN_TextReplace", - "JN_TimedeltaFormat", - "JN_TimedeltaInfo" - ], - { - "title_aux": "JNComfy" - } - ], - "https://github.com/jnxmx/ComfyUI_HuggingFace_Downloader": [ - [ - "HuggingFace Downloader" - ], - { - "title_aux": "ComfyUI_HuggingFace_Downloader" - } - ], - "https://github.com/john-mnz/ComfyUI-Inspyrenet-Rembg": [ - [ - "InspyrenetRembg", - "InspyrenetRembgAdvanced" - ], - { - "title_aux": "ComfyUI-Inspyrenet-Rembg" - } - ], - "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative": [ - [ - "LCMScheduler", - "SamplerLCMAlternative", - "SamplerLCMCycle", - "SamplerLCMDualNoise", - "SamplerLCMDuoFusion", - "SamplerLCMParallel" - ], - { - "title_aux": "ComfyUI-sampler-lcm-alternative" - } - ], - "https://github.com/jordoh/ComfyUI-Deepface": [ - [ - "DeepfaceExtractFaces", - "DeepfaceVerify" - ], - { - "title_aux": "ComfyUI Deepface" - } - ], - "https://github.com/jroc22/ComfyUI-CSV-prompt-builder": [ - [ - "BuildPromptFromCSV" - ], - { - "title_aux": "ComfyUI-CSV-prompt-builder" - } - ], - "https://github.com/jstit/comfyui_custom_node_image": [ - [ - "ImageCropCircle" - ], - { - "title_aux": "comfyui_custom_node_image" - } - ], - "https://github.com/jtrue/ComfyUI-JaRue": [ - [ - "Text2Image_jru", - "YouTube2Prompt_jru" - ], - { - "nodename_pattern": "_jru$", - "title_aux": "ComfyUI-JaRue" - } - ], - "https://github.com/jtydhr88/ComfyUI-Hunyuan3D-1-wrapper": [ - [ - "Hunyuan3D V1 - Image Loader", - "Hunyuan3D V1 - Image2Views", - "Hunyuan3D V1 - Image2Views Pipeline Load", - "Hunyuan3D V1 - Text2Image", - "Hunyuan3D V1 - Text2Image Pipeline Load", - "Hunyuan3D V1 - Views2Mesh", - "Hunyuan3D V1 - Views2Mesh Pipeline Load" - ], - { - "title_aux": "ComfyUI-Hunyuan3D-1-wrapper" - } - ], - "https://github.com/jtydhr88/ComfyUI-LayerDivider": [ - [ - "LayerDivider - Color Base", - "LayerDivider - Divide Layer", - "LayerDivider - Load SAM Mask Generator", - "LayerDivider - Segment Mask" - ], - { - "title_aux": "ComfyUI LayerDivider" - } - ], - "https://github.com/jurdnisglobby/ComfyUI-Jurdns-Groq-Node": [ - [ - "JurdnsGroqAPIPromptEnhancer" - ], - { - "title_aux": "Jurdns Groq API Node" - } - ], - "https://github.com/justUmen/Bjornulf_custom_nodes": [ - [ - "Bjornulf_APIGenerateCivitAI", - "Bjornulf_APIGenerateCivitAIAddLORA", - "Bjornulf_APIGenerateFalAI", - "Bjornulf_APIGenerateFlux", - "Bjornulf_APIGenerateStability", - "Bjornulf_AddLineNumbers", - "Bjornulf_AnythingToFloat", - "Bjornulf_AnythingToInt", - "Bjornulf_AnythingToText", - "Bjornulf_AudioVideoSync", - "Bjornulf_CharacterDescriptionGenerator", - "Bjornulf_CivitAILoraSelector", - "Bjornulf_CivitAILoraSelectorHunyuan", - "Bjornulf_CivitAILoraSelectorPONY", - "Bjornulf_CivitAILoraSelectorSD15", - "Bjornulf_CivitAILoraSelectorSDXL", - "Bjornulf_CivitAIModelSelectorFLUX_D", - "Bjornulf_CivitAIModelSelectorFLUX_S", - "Bjornulf_CivitAIModelSelectorPony", - "Bjornulf_CivitAIModelSelectorSD15", - "Bjornulf_CivitAIModelSelectorSDXL", - "Bjornulf_CombineBackgroundOverlay", - "Bjornulf_CombineImages", - "Bjornulf_CombineTexts", - "Bjornulf_CombineTextsByLines", - "Bjornulf_CombineVideoAudio", - "Bjornulf_ConcatVideos", - "Bjornulf_ConcatVideosFromList", - "Bjornulf_ConvertVideo", - "Bjornulf_EmptyVideoLatentWithSingle", - "Bjornulf_FFmpegConfig", - "Bjornulf_FreeVRAM", - "Bjornulf_GrayscaleTransform", - "Bjornulf_GreenScreenToTransparency", - "Bjornulf_HiResFix", - "Bjornulf_IfElse", - "Bjornulf_ImageBlend", - "Bjornulf_ImageDetails", - "Bjornulf_ImageMaskCutter", - "Bjornulf_ImagesListToVideo", - "Bjornulf_KokoroTTS", - "Bjornulf_LatentResolutionSelector", - "Bjornulf_LineSelector", - "Bjornulf_ListLooper", - "Bjornulf_ListLooperCharacter", - "Bjornulf_ListLooperOutfitFemale", - "Bjornulf_ListLooperOutfitMale", - "Bjornulf_ListLooperScene", - "Bjornulf_ListLooperStyle", - "Bjornulf_LoadImageWithTransparency", - "Bjornulf_LoadImagesFromSelectedFolder", - "Bjornulf_LoadTextFromFolder", - "Bjornulf_LoadTextFromPath", - "Bjornulf_LoaderLoraWithPath", - "Bjornulf_LoopAllLines", - "Bjornulf_LoopBasicBatch", - "Bjornulf_LoopCombosSamplersSchedulers", - "Bjornulf_LoopFloat", - "Bjornulf_LoopImages", - "Bjornulf_LoopInteger", - "Bjornulf_LoopIntegerSequential", - "Bjornulf_LoopLinesSequential", - "Bjornulf_LoopLoraSelector", - "Bjornulf_LoopModelClipVae", - "Bjornulf_LoopModelSelector", - "Bjornulf_LoopSamplers", - "Bjornulf_LoopSchedulers", - "Bjornulf_LoopTexts", - "Bjornulf_LoopWriteText", - "Bjornulf_MergeImagesHorizontally", - "Bjornulf_MergeImagesVertically", - "Bjornulf_OllamaConfig", - "Bjornulf_OllamaImageVision", - "Bjornulf_OllamaSystemJobSelector", - "Bjornulf_OllamaSystemPersonaSelector", - "Bjornulf_OllamaTalk", - "Bjornulf_PassPreviewImage", - "Bjornulf_PauseResume", - "Bjornulf_PickInput", - "Bjornulf_RandomImage", - "Bjornulf_RandomLineFromInput", - "Bjornulf_RandomLoraSelector", - "Bjornulf_RandomModelClipVae", - "Bjornulf_RandomModelSelector", - "Bjornulf_RandomTexts", - "Bjornulf_RemoveTransparency", - "Bjornulf_ResizeImage", - "Bjornulf_ResizeImagePercentage", - "Bjornulf_SaveBjornulfLobeChat", - "Bjornulf_SaveImagePath", - "Bjornulf_SaveImageToFolder", - "Bjornulf_SaveText", - "Bjornulf_SaveTmpImage", - "Bjornulf_ScramblerCharacter", - "Bjornulf_SelectImageFromList", - "Bjornulf_ShowFloat", - "Bjornulf_ShowInt", - "Bjornulf_ShowJson", - "Bjornulf_ShowStringText", - "Bjornulf_ShowText", - "Bjornulf_SpeechToText", - "Bjornulf_TextGenerator", - "Bjornulf_TextGeneratorCharacterCreature", - "Bjornulf_TextGeneratorCharacterFemale", - "Bjornulf_TextGeneratorCharacterMale", - "Bjornulf_TextGeneratorCharacterObject", - "Bjornulf_TextGeneratorCharacterPose", - "Bjornulf_TextGeneratorOutfitFemale", - "Bjornulf_TextGeneratorOutfitMale", - "Bjornulf_TextGeneratorScene", - "Bjornulf_TextGeneratorStyle", - "Bjornulf_TextGeneratorText2Video", - "Bjornulf_TextReplace", - "Bjornulf_TextSplitin5", - "Bjornulf_TextToAnything", - "Bjornulf_TextToSpeech", - "Bjornulf_TextToStringAndSeed", - "Bjornulf_VideoDetails", - "Bjornulf_VideoPingPong", - "Bjornulf_VideoPreview", - "Bjornulf_VideoToImagesList", - "Bjornulf_WriteText", - "Bjornulf_WriteTextAdvanced", - "Bjornulf_XTTSConfig", - "Bjornulf_imagesToVideo", - "Bjornulf_ollamaLoader" - ], - { - "title_aux": "Bjornulf_custom_nodes" - } - ], - "https://github.com/k-komarov/comfyui-bunny-cdn-storage": [ - [ - "Save Image to BunnyStorage" - ], - { - "title_aux": "comfyui-bunny-cdn-storage" - } - ], - "https://github.com/ka-puna/comfyui-yanc": [ - [ - "YANC.ConcatStrings", - "YANC.FormatDatetimeString", - "YANC.GetWidgetValueString", - "YANC.IntegerCaster", - "YANC.MultilineString", - "YANC.SaveImageWEBP", - "YANC.TruncateString" - ], - { - "title_aux": "comfyui-yanc" - } - ], - "https://github.com/kaanyalova/ComfyUI_ExtendedImageFormats": [ - [ - "DDSSaveImage", - "ExtendedSaveImage" - ], - { - "title_aux": "Extended Image Formats for ComfyUI" - } - ], - "https://github.com/kadirnar/ComfyUI-Transformers": [ - [ - "DepthEstimationInference", - "ImageClassificationPipeline", - "ImageSegmentationPipeline", - "LoadDepthModel", - "ObjectDetectionPipeline" - ], - { - "title_aux": "ComfyUI-Transformers" - } - ], - "https://github.com/kadirnar/ComfyUI-YOLO": [ - [ - "BBoxToCoco", - "BBoxToXYWH", - "BBoxVisNode", - "CocoToNumber", - "ConvertToDict", - "CustomUltralyticsModelLoader", - "GetImageSize", - "ImageResizeAdvanced", - "UltralyticsInference", - "UltralyticsModelLoader", - "UltralyticsVisualization", - "ViewText" - ], - { - "title_aux": "ComfyUI-YOLO" - } - ], - "https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl": [ - [ - "ReduxAdvanced", - "StyleModelApplySimple" - ], - { - "title_aux": "Advanced Reflux control" - } - ], - "https://github.com/kale4eat/ComfyUI-path-util": [ - [ - "path_util_PathAbspath", - "path_util_PathBasename", - "path_util_PathDirname", - "path_util_PathExists", - "path_util_PathIsdir", - "path_util_PathIsfile", - "path_util_PathJoin", - "path_util_PathRelpath", - "path_util_PathSplitext" - ], - { - "title_aux": "ComfyUI_demucus" - } - ], - "https://github.com/kale4eat/ComfyUI-speech-dataset-toolkit": [ - [ - "SDT_AudioProperty", - "SDT_BSRoFormerApply", - "SDT_BSRoFormerLoader", - "SDT_ConcatAudio", - "SDT_CutAudio", - "SDT_DemucsApply", - "SDT_DemucsLoader", - "SDT_FasterWhisperListSegments", - "SDT_FasterWhisperLoader", - "SDT_FasterWhisperSegmentProperty", - "SDT_FasterWhisperTextFromSegments", - "SDT_FasterWhisperTranscribe", - "SDT_GriffinLim", - "SDT_JoinAudio", - "SDT_KotobaWhisperListSegments", - "SDT_KotobaWhisperLoaderLong", - "SDT_KotobaWhisperLoaderShort", - "SDT_KotobaWhisperSegmentProperty", - "SDT_KotobaWhisperTranscribeLong", - "SDT_KotobaWhisperTranscribeShort", - "SDT_LFCC", - "SDT_LoadAudio", - "SDT_LoadAudios", - "SDT_MFCC", - "SDT_MakeSilenceAudio", - "SDT_MelBandRoformerLoader", - "SDT_MelSpectrogram", - "SDT_NemoAsrListSegments", - "SDT_NemoAsrListSubwords", - "SDT_NemoAsrLoader", - "SDT_NemoAsrSegmentProperty", - "SDT_NemoAsrSubwordProperty", - "SDT_NemoAsrTranscribe", - "SDT_NueAsrLoader", - "SDT_NueAsrTranscribe", - "SDT_PlayAudio", - "SDT_PlotMelFilterBank", - "SDT_PlotPitch", - "SDT_PlotSpecgram", - "SDT_PlotSpectrogram", - "SDT_PlotWaveForm", - "SDT_ResampleAudio", - "SDT_SaveAudio", - "SDT_SaveAudioWithSequentialNumbering", - "SDT_SilenceAudio", - "SDT_SileroVADApply", - "SDT_SileroVADCollectChunks", - "SDT_SileroVADListTimestamps", - "SDT_SileroVADLoader", - "SDT_SileroVADTimestampProperty", - "SDT_Spectrogram", - "SDT_SpeechMOSLoader", - "SDT_SpeechMOSScore", - "SDT_SplitAudio", - "SDT_TrimAudio", - "SDT_TrimAudioBySample" - ], - { - "title_aux": "ComfyUI-speech-dataset-toolkit" - } - ], - "https://github.com/kale4eat/ComfyUI-string-util": [ - [ - "string_util_Str", - "string_util_StrConcat", - "string_util_StrCount", - "string_util_StrEndsWith", - "string_util_StrEqual", - "string_util_StrFind", - "string_util_StrFormat", - "string_util_StrJoin", - "string_util_StrLen", - "string_util_StrLower", - "string_util_StrLstrip", - "string_util_StrNotEqual", - "string_util_StrReplace", - "string_util_StrRstrip", - "string_util_StrSlice", - "string_util_StrSplit", - "string_util_StrStartsWith", - "string_util_StrStrip", - "string_util_StrUpper" - ], - { - "title_aux": "ComfyUI-string-util" - } - ], - "https://github.com/kale4eat/ComfyUI-text-file-util": [ - [ - "text_file_util_ReadAllLines", - "text_file_util_ReadAllText", - "text_file_util_WriteText", - "text_file_util_WriteTextLines", - "text_file_util_WriteTextWithSequentialNumbering" - ], - { - "title_aux": "ComfyUI-text-file-util" - } - ], - "https://github.com/kappa54m/ComfyUI_Usability": [ - [ - "KLoadImageByPath", - "KLoadImageByPathAdvanced", - "KLoadImageDedup" - ], - { - "title_aux": "ComfyUI Usability" - } - ], - "https://github.com/kasukanra/ComfyUI_StringToHex": [ - [ - "ColorNameToHex" - ], - { - "title_aux": "ComfyUI_StringToHex" - } - ], - "https://github.com/katalist-ai/comfyUI-nsfw-detection": [ - [ - "NudenetDetector" - ], - { - "title_aux": "comfyUI-nsfw-detection" - } - ], - "https://github.com/kazeyori/ComfyUI-QuickImageSequenceProcess": [ - [ - "QuickImageSequenceProcess" - ], - { - "author": "kazeyori", - "description": "A ComfyUI plugin for efficient image sequence processing. Features frame insertion, duplication, and removal with intuitive controls.", - "nickname": "QuickSeq", - "title": "Quick Image Sequence Process", - "title_aux": "Quick Image Sequence Process" - } - ], - "https://github.com/kealiu/ComfyUI-S3-Tools": [ - [ - "Load Image From S3", - "Save Image To S3" - ], - { - "title_aux": "ComfyUI Load and Save file to S3" - } - ], - "https://github.com/kealiu/ComfyUI-Zero123-Porting": [ - [ - "Zero123: Image Preprocess", - "Zero123: Image Rotate in 3D" - ], - { - "title_aux": "ComfyUI-Zero123-Porting" - } - ], - "https://github.com/kealiu/ComfyUI-ZeroShot-MTrans": [ - [ - "ZeST: Grayout Subject" - ], - { - "title_aux": "ComfyUI-ZeroShot-MTrans" - } - ], - "https://github.com/kenjiqq/qq-nodes-comfyui": [ - [ - "Any List", - "Any List Iterator", - "Any To Any", - "Axis Pack", - "Axis To Any", - "Axis Unpack", - "Load Lines From Text File", - "Slice List", - "Text Splitter", - "XY Grid Accumulator", - "XY Grid Helper" - ], - { - "title_aux": "qq-nodes-comfyui" - } - ], - "https://github.com/kevinmcmahondev/comfyui-skin-tone-detector": [ - [ - "SkinToneDetector" - ], - { - "title_aux": "Skin Tone Detector for ComfyUI" - } - ], - "https://github.com/kft334/Knodes": [ - [ - "Image(s) To Websocket (Base64)", - "ImageOutput", - "Load Image (Base64)", - "Load Images (Base64)" - ], - { - "title_aux": "Knodes" - } - ], - "https://github.com/kijai/ComfyUI-ADMotionDirector": [ - [ - "ADMD_AdditionalModelSelect", - "ADMD_CheckpointLoader", - "ADMD_ComfyModelLoader", - "ADMD_DiffusersLoader", - "ADMD_InitializeTraining", - "ADMD_LoadLora", - "ADMD_MakeBatchList", - "ADMD_SaveLora", - "ADMD_TrainLora", - "ADMD_ValidationSampler", - "ADMD_ValidationSettings" - ], - { - "title_aux": "Animatediff MotionLoRA Trainer" - } - ], - "https://github.com/kijai/ComfyUI-APISR-KJ": [ - [ - "APISR_upscale" - ], - { - "title_aux": "ComfyUI-APISR" - } - ], - "https://github.com/kijai/ComfyUI-BrushNet-Wrapper": [ - [ - "brushnet_ella_loader", - "brushnet_ipadapter_matteo", - "brushnet_model_loader", - "brushnet_sampler", - "brushnet_sampler_ella", - "powerpaint_brushnet_sampler" - ], - { - "title_aux": "ComfyUI-BrushNet-Wrapper" - } - ], - "https://github.com/kijai/ComfyUI-CCSR": [ - [ - "CCSR_Model_Select", - "CCSR_Upscale", - "DownloadAndLoadCCSRModel" - ], - { - "title_aux": "ComfyUI-CCSR" - } - ], - "https://github.com/kijai/ComfyUI-CogVideoXWrapper": [ - [ - "CogVideoContextOptions", - "CogVideoControlNet", - "CogVideoDecode", - "CogVideoEnhanceAVideo", - "CogVideoImageEncode", - "CogVideoImageEncodeFunInP", - "CogVideoLatentPreview", - "CogVideoLoraSelect", - "CogVideoLoraSelectComfy", - "CogVideoSampler", - "CogVideoTextEncode", - "CogVideoTextEncodeCombine", - "CogVideoTransformerEdit", - "CogVideoXFasterCache", - "CogVideoXFunResizeToClosestBucket", - "CogVideoXModelLoader", - "CogVideoXTeaCache", - "CogVideoXTorchCompileSettings", - "CogVideoXVAELoader", - "DownloadAndLoadCogVideoControlNet", - "DownloadAndLoadCogVideoGGUFModel", - "DownloadAndLoadCogVideoModel", - "DownloadAndLoadToraModel", - "ToraEncodeOpticalFlow", - "ToraEncodeTrajectory" - ], - { - "title_aux": "ComfyUI CogVideoX Wrapper" - } - ], - "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" - ], - { - "title_aux": "ComfyUI-DDColor" - } - ], - "https://github.com/kijai/ComfyUI-DepthAnythingV2": [ - [ - "DepthAnything_V2", - "DownloadAndLoadDepthAnythingV2Model" - ], - { - "title_aux": "ComfyUI-DepthAnythingV2" - } - ], - "https://github.com/kijai/ComfyUI-DiffusionLight": [ - [ - "chrome_ball_to_envmap", - "exposure_to_hdr" - ], - { - "title_aux": "DiffusionLight implementation for ComfyUI" - } - ], - "https://github.com/kijai/ComfyUI-DynamiCrafterWrapper": [ - [ - "DownloadAndLoadCLIPModel", - "DownloadAndLoadCLIPVisionModel", - "DownloadAndLoadDynamiCrafterCNModel", - "DownloadAndLoadDynamiCrafterModel", - "DynamiCrafterBatchInterpolation", - "DynamiCrafterCNLoader", - "DynamiCrafterControlnetApply", - "DynamiCrafterI2V", - "DynamiCrafterLoadInitNoise", - "DynamiCrafterModelLoader", - "ToonCrafterDecode", - "ToonCrafterInterpolation" - ], - { - "title_aux": "ComfyUI-DynamiCrafterWrapper" - } - ], - "https://github.com/kijai/ComfyUI-ELLA-wrapper": [ - [ - "diffusers_model_loader", - "diffusers_sampler", - "ella_model_loader", - "ella_sampler", - "ella_t5_embeds" - ], - { - "title_aux": "ComfyUI-ELLA-wrapper" - } - ], - "https://github.com/kijai/ComfyUI-Florence2": [ - [ - "DownloadAndLoadFlorence2Lora", - "DownloadAndLoadFlorence2Model", - "Florence2ModelLoader", - "Florence2Run" - ], - { - "preemptions": [ - "DownloadAndLoadFlorence2Lora", - "DownloadAndLoadFlorence2Model", - "Florence2ModelLoader", - "Florence2Run" - ], - "title_aux": "ComfyUI-Florence2" - } - ], - "https://github.com/kijai/ComfyUI-FluxTrainer": [ - [ - "ExtractFluxLoRA", - "FluxKohyaInferenceSampler", - "FluxTrainAndValidateLoop", - "FluxTrainBlockSelect", - "FluxTrainEnd", - "FluxTrainLoop", - "FluxTrainModelSelect", - "FluxTrainResume", - "FluxTrainSave", - "FluxTrainSaveModel", - "FluxTrainValidate", - "FluxTrainValidationSettings", - "FluxTrainerLossConfig", - "InitFluxLoRATraining", - "InitFluxTraining", - "InitSD3LoRATraining", - "InitSDXLLoRATraining", - "OptimizerConfig", - "OptimizerConfigAdafactor", - "OptimizerConfigProdigy", - "OptimizerConfigProdigyPlusScheduleFree", - "SD3ModelSelect", - "SD3TrainValidationSettings", - "SDXLModelSelect", - "SDXLTrainValidate", - "SDXLTrainValidationSettings", - "TrainDatasetAdd", - "TrainDatasetGeneralConfig", - "TrainDatasetRegularization", - "TrainNetworkConfig", - "UploadToHuggingFace", - "VisualizeLoss" - ], - { - "title_aux": "ComfyUI Flux Trainer" - } - ], - "https://github.com/kijai/ComfyUI-GIMM-VFI": [ - [ - "DownloadAndLoadGIMMVFIModel", - "GIMMVFI_interpolate" - ], - { - "title_aux": "ComfyUI-GIMM-VFI" - } - ], - "https://github.com/kijai/ComfyUI-Geowizard": [ - [ - "geowizard_model_loader", - "geowizard_sampler" - ], - { - "title_aux": "Geowizard depth and normal estimation in ComfyUI" - } - ], - "https://github.com/kijai/ComfyUI-HunyuanVideoWrapper": [ - [ - "DownloadAndLoadHyVideoTextEncoder", - "HyVideoBlockSwap", - "HyVideoCFG", - "HyVideoContextOptions", - "HyVideoCustomPromptTemplate", - "HyVideoDecode", - "HyVideoEmptyTextEmbeds", - "HyVideoEncode", - "HyVideoEnhanceAVideo", - "HyVideoInverseSampler", - "HyVideoLatentPreview", - "HyVideoLoraBlockEdit", - "HyVideoLoraSelect", - "HyVideoModelLoader", - "HyVideoPromptMixSampler", - "HyVideoReSampler", - "HyVideoSTG", - "HyVideoSampler", - "HyVideoTeaCache", - "HyVideoTextEmbedsLoad", - "HyVideoTextEmbedsSave", - "HyVideoTextEncode", - "HyVideoTextImageEncode", - "HyVideoTorchCompileSettings", - "HyVideoVAELoader" - ], - { - "title_aux": "ComfyUI-HunyuanVideoWrapper" - } - ], - "https://github.com/kijai/ComfyUI-IC-Light": [ - [ - "BackgroundScaler", - "CalculateNormalsFromImages", - "DetailTransfer", - "ICLightConditioning", - "LightSource", - "LoadAndApplyICLightUnet", - "LoadHDRImage" - ], - { - "title_aux": "ComfyUI-IC-Light" - } - ], - "https://github.com/kijai/ComfyUI-KJNodes": [ - [ - "AddLabel", - "AppendInstanceDiffusionTracking", - "AppendStringsToList", - "AudioConcatenate", - "BOOLConstant", - "BatchCLIPSeg", - "BatchCropFromMask", - "BatchCropFromMaskAdvanced", - "BatchUncrop", - "BatchUncropAdvanced", - "BboxToInt", - "BboxVisualize", - "CameraPoseVisualizer", - "CheckpointLoaderKJ", - "CheckpointPerturbWeights", - "ColorMatch", - "ColorToMask", - "CondPassThrough", - "ConditioningMultiCombine", - "ConditioningSetMaskAndCombine", - "ConditioningSetMaskAndCombine3", - "ConditioningSetMaskAndCombine4", - "ConditioningSetMaskAndCombine5", - "CreateAudioMask", - "CreateFadeMask", - "CreateFadeMaskAdvanced", - "CreateFluidMask", - "CreateGradientFromCoords", - "CreateGradientMask", - "CreateInstanceDiffusionTracking", - "CreateMagicMask", - "CreateShapeImageOnPath", - "CreateShapeMask", - "CreateShapeMaskOnPath", - "CreateTextMask", - "CreateTextOnPath", - "CreateVoronoiMask", - "CrossFadeImages", - "CrossFadeImagesMulti", - "CustomControlNetWeightsFluxFromList", - "CustomSigmas", - "CutAndDragOnPath", - "DifferentialDiffusionAdvanced", - "DiffusionModelLoaderKJ", - "DownloadAndLoadCLIPSeg", - "DrawInstanceDiffusionTracking", - "DummyOut", - "EmptyLatentImageCustomPresets", - "EmptyLatentImagePresets", - "FastPreview", - "FilterZeroMasksAndCorrespondingImages", - "FlipSigmasAdjusted", - "FloatConstant", - "FloatToMask", - "FloatToSigmas", - "FluxBlockLoraLoader", - "FluxBlockLoraSelect", - "GLIGENTextBoxApplyBatchCoords", - "GenerateNoise", - "GetImageRangeFromBatch", - "GetImageSizeAndCount", - "GetImagesFromBatchIndexed", - "GetLatentsFromBatchIndexed", - "GetMaskSizeAndCount", - "GradientToFloat", - "GrowMaskWithBlur", - "INTConstant", - "ImageAddMulti", - "ImageAndMaskPreview", - "ImageBatchMulti", - "ImageBatchRepeatInterleaving", - "ImageBatchTestPattern", - "ImageConcanate", - "ImageConcatFromBatch", - "ImageConcatMulti", - "ImageCropByMaskAndResize", - "ImageGrabPIL", - "ImageGridComposite2x2", - "ImageGridComposite3x3", - "ImageGridtoBatch", - "ImageNormalize_Neg1_To_1", - "ImagePadForOutpaintMasked", - "ImagePadForOutpaintTargetSize", - "ImagePass", - "ImageResizeKJ", - "ImageTransformByNormalizedAmplitude", - "ImageUncropByMask", - "ImageUpscaleWithModelBatched", - "InjectNoiseToLatent", - "InsertImageBatchByIndexes", - "InsertImagesToBatchIndexed", - "InterpolateCoords", - "Intrinsic_lora_sampling", - "JoinStringMulti", - "JoinStrings", - "LoadAndResizeImage", - "LoadImagesFromFolderKJ", - "LoadResAdapterNormalization", - "MaskBatchMulti", - "MaskOrImageToWeight", - "MergeImageChannels", - "ModelPassThrough", - "ModelSaveKJ", - "NormalizedAmplitudeToFloatList", - "NormalizedAmplitudeToMask", - "OffsetMask", - "OffsetMaskByNormalizedAmplitude", - "PatchModelPatcherOrder", - "PathchSageAttentionKJ", - "PlotCoordinates", - "PointsEditor", - "PreviewAnimation", - "RemapImageRange", - "RemapMaskRange", - "ReplaceImagesInBatch", - "ResizeMask", - "ReverseImageBatch", - "RoundMask", - "SV3D_BatchSchedule", - "SaveImageKJ", - "SaveImageWithAlpha", - "ScaleBatchPromptSchedule", - "Screencap_mss", - "SetShakkerLabsUnionControlNetType", - "ShuffleImageBatch", - "SigmasToFloat", - "Sleep", - "SomethingToString", - "SoundReactive", - "SplineEditor", - "SplitBboxes", - "SplitImageChannels", - "StabilityAPI_SD3", - "StableZero123_BatchSchedule", - "StringConstant", - "StringConstantMultiline", - "StyleModelApplyAdvanced", - "Superprompt", - "TorchCompileControlNet", - "TorchCompileCosmosModel", - "TorchCompileLTXModel", - "TorchCompileModelFluxAdvanced", - "TorchCompileVAE", - "TransitionImagesInBatch", - "TransitionImagesMulti", - "VRAM_Debug", - "WebcamCaptureCV2", - "WeightScheduleConvert", - "WeightScheduleExtend", - "WidgetToString" - ], - { - "title_aux": "KJNodes for ComfyUI" - } - ], - "https://github.com/kijai/ComfyUI-KwaiKolorsWrapper": [ - [ - "DownloadAndLoadChatGLM3", - "DownloadAndLoadKolorsModel", - "KolorsSampler", - "KolorsTextEncode", - "LoadChatGLM3" - ], - { - "title_aux": "ComfyUI-KwaiKolorsWrapper" - } - ], - "https://github.com/kijai/ComfyUI-LLaVA-OneVision": [ - [ - "DownloadAndLoadLLaVAOneVisionModel", - "LLaVA_OneVision_Run", - "OneVisionCaptionFolder", - "SaveCaptionToTextFile" - ], - { - "title_aux": "ComfyUI Llava-OneVision" - } - ], - "https://github.com/kijai/ComfyUI-LVCDWrapper": [ - [ - "LVCDDecoder", - "LVCDSampler", - "LoadLVCDModel" - ], - { - "title_aux": "ComfyUI wrapper nodes for LVCD" - } - ], - "https://github.com/kijai/ComfyUI-LaVi-Bridge-Wrapper": [ - [ - "lavi_bridge_llama_encoder", - "lavi_bridge_t5_encoder", - "lavibridge_model_loader", - "lavibridge_sampler" - ], - { - "title_aux": "ComfyUI-LaVi-Bridge-Wrapper" - } - ], - "https://github.com/kijai/ComfyUI-LivePortraitKJ": [ - [ - "DownloadAndLoadLivePortraitModels", - "KeypointScaler", - "KeypointsToImage", - "LivePortraitComposite", - "LivePortraitCropper", - "LivePortraitLoadCropper", - "LivePortraitLoadFaceAlignmentCropper", - "LivePortraitLoadMediaPipeCropper", - "LivePortraitProcess", - "LivePortraitRetargeting" - ], - { - "title_aux": "ComfyUI-LivePortraitKJ" - } - ], - "https://github.com/kijai/ComfyUI-Lotus": [ - [ - "LoadLotusModel", - "LotusSampler" - ], - { - "title_aux": "ComfyUI-Lotus" - } - ], - "https://github.com/kijai/ComfyUI-LuminaWrapper": [ - [ - "DownloadAndLoadGemmaModel", - "DownloadAndLoadLuminaModel", - "GemmaSampler", - "LuminaGemmaTextEncode", - "LuminaGemmaTextEncodeArea", - "LuminaT2ISampler", - "LuminaTextAreaAppend" - ], - { - "title_aux": "ComfyUI-LuminaWrapper" - } - ], - "https://github.com/kijai/ComfyUI-Marigold": [ - [ - "ColorizeDepthmap", - "MarigoldDepthEstimation", - "MarigoldDepthEstimationVideo", - "MarigoldDepthEstimation_v2", - "MarigoldDepthEstimation_v2_video", - "MarigoldModelLoader", - "RemapDepth", - "SaveImageOpenEXR" - ], - { - "title_aux": "Marigold depth estimation in ComfyUI" - } - ], - "https://github.com/kijai/ComfyUI-MimicMotionWrapper": [ - [ - "DiffusersScheduler", - "DownloadAndLoadMimicMotionModel", - "MimicMotionDecode", - "MimicMotionGetPoses", - "MimicMotionSampler" - ], - { - "title_aux": "ComfyUI-MimicMotionWrapper" - } - ], - "https://github.com/kijai/ComfyUI-MoGe": [ - [ - "DownloadAndLoadMoGeModel", - "MoGeProcess" - ], - { - "title_aux": "ComfyUI-MoGe" - } - ], - "https://github.com/kijai/ComfyUI-OpenDiTWrapper": [ - [ - "DownloadAndLoadOpenDiTT5Model", - "DownloadAndLoadOpenSoraModel", - "DownloadAndLoadOpenSoraVAE", - "OpenDiTConditioning", - "OpenDiTSampler", - "OpenSoraDecode", - "OpenSoraEncodeReference" - ], - { - "title_aux": "ComfyUI-OpenDiTWrapper" - } - ], - "https://github.com/kijai/ComfyUI-PyramidFlowWrapper": [ - [ - "PyramidFlowLatentPreview", - "PyramidFlowSampler", - "PyramidFlowTextEncode", - "PyramidFlowTorchCompileSettings", - "PyramidFlowTransformerLoader", - "PyramidFlowVAEDecode", - "PyramidFlowVAEEncode", - "PyramidFlowVAELoader" - ], - { - "title_aux": "ComfyUI PyramidFlow Wrapper" - } - ], - "https://github.com/kijai/ComfyUI-SUPIR": [ - [ - "SUPIR_Upscale", - "SUPIR_conditioner", - "SUPIR_decode", - "SUPIR_encode", - "SUPIR_first_stage", - "SUPIR_model_loader", - "SUPIR_model_loader_v2", - "SUPIR_model_loader_v2_clip", - "SUPIR_sample", - "SUPIR_tiles" - ], - { - "title_aux": "ComfyUI-SUPIR" - } - ], - "https://github.com/kijai/ComfyUI-depth-fm": [ - [ - "Depth_fm" - ], - { - "title_aux": "ComfyUI-depth-fm" - } - ], - "https://github.com/kijai/ComfyUI-moondream": [ - [ - "MoondreamQuery", - "MoondreamQueryCaptions" - ], - { - "title_aux": "ComfyUI-moondream" - } - ], - "https://github.com/kijai/ComfyUI-segment-anything-2": [ - [ - "DownloadAndLoadSAM2Model", - "Florence2toCoordinates", - "Sam2AutoSegmentation", - "Sam2Segmentation", - "Sam2VideoSegmentation", - "Sam2VideoSegmentationAddPoints" - ], - { - "preemptions": [ - "DownloadAndLoadSAM2Model", - "Florence2toCoordinates", - "Sam2AutoSegmentation", - "Sam2Segmentation", - "Sam2VideoSegmentation", - "Sam2VideoSegmentationAddPoints" - ], - "title_aux": "ComfyUI-segment-anything-2" - } - ], - "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": [ - [ - "KimaraAIBatchImages", - "KimaraAIWatermarker" - ], - { - "title_aux": "Kimara.ai's Advanced Watermarking Tools" - } - ], - "https://github.com/kinfolk0117/ComfyUI_GradientDeepShrink": [ - [ - "GradientPatchModelAddDownscale", - "GradientPatchModelAddDownscaleAdvanced" - ], - { - "title_aux": "ComfyUI_GradientDeepShrink" - } - ], - "https://github.com/kinfolk0117/ComfyUI_GridSwapper": [ - [ - "GridSwapper" - ], - { - "title_aux": "Gridswapper" - } - ], - "https://github.com/kinfolk0117/ComfyUI_Pilgram": [ - [ - "Pilgram" - ], - { - "title_aux": "ComfyUI_Pilgram" - } - ], - "https://github.com/kinfolk0117/ComfyUI_SimpleTiles": [ - [ - "DynamicTileMerge", - "DynamicTileSplit", - "TileCalc", - "TileMerge", - "TileSplit" - ], - { - "title_aux": "SimpleTiles" - } - ], - "https://github.com/kk8bit/KayTool": [ - [ - "Abc_Math", - "Baidu_Translater", - "Color_Adjustment", - "Custom_Save_Image", - "Display_Any", - "Image_Size_Extractor", - "Strong_Prompt" - ], - { - "title_aux": "KayTool" - } - ], - "https://github.com/klinter007/klinter_nodes": [ - [ - "AspectSelector", - "FolderLoader", - "Json Extractor - klinter", - "LoadImagePlus", - "LoadVideoForExtendingKlinter", - "OutpaintPadding", - "PrepVideoForExtendKlinter", - "SizeSelector", - "SpeedRamp", - "YellowBus", - "ZoomOutComposer", - "concat", - "filter", - "nodevalue2stringmulti", - "string_contact_multi" - ], - { - "title_aux": "Klinter_nodes" - } - ], - "https://github.com/knuknX/ComfyUI-Image-Tools": [ - [ - "BatchImagePathLoader", - "ImageBgRemoveProcessor", - "ImageCheveretoUploader", - "ImageStandardResizeProcessor", - "JSONMessageNotifyTool", - "PreviewJSONNode", - "SingleImagePathLoader", - "SingleImageUrlLoader" - ], - { - "title_aux": "ComfyUI-Image-Tools" - } - ], - "https://github.com/kohya-ss/ControlNet-LLLite-ComfyUI": [ - [ - "LLLiteLoader" - ], - { - "title_aux": "ControlNet-LLLite-ComfyUI" - } - ], - "https://github.com/komojini/ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes": [ - [ - "S3 Bucket LoRA", - "S3Bucket_Load_LoRA", - "XL DreamBooth LoRA", - "XLDB_LoRA" - ], - { - "title_aux": "ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes" - } - ], - "https://github.com/komojini/komojini-comfyui-nodes": [ - [ - "BatchCreativeInterpolationNodeDynamicSettings", - "CachedGetter", - "DragNUWAImageCanvas", - "FlowBuilder", - "FlowBuilder (adv)", - "FlowBuilder (advanced)", - "FlowBuilder (advanced) Setter", - "FlowBuilderSetter", - "FlowBuilderSetter (adv)", - "Getter", - "ImageCropByRatio", - "ImageCropByRatioAndResize", - "ImageGetter", - "ImageMerger", - "ImagesCropByRatioAndResizeBatch", - "KSamplerAdvancedCacheable", - "KSamplerCacheable", - "Setter", - "UltimateVideoLoader", - "UltimateVideoLoader (simple)", - "YouTubeVideoLoader" - ], - { - "title_aux": "komojini-comfyui-nodes" - } - ], - "https://github.com/kostenickj/jk-comfyui-helpers": [ - [ - "EasyHRFix", - "EasyHRFix_Context", - "JKAnythingToString", - "JKBigContext", - "JKDynamicThresholdingMultiModel", - "JKEasyCheckpointLoader", - "JKEasyDetailer", - "JKEasyDetailer_Context", - "JKEasyKSampler_Context", - "JKEasyUpscaleImage", - "JKEasyWatermark", - "JKInspireSchedulerAdapter", - "JKLilContext", - "JKMultiModelSamplerUnpatch", - "JKStringEmpty", - "JKStringEquals", - "JKStringNotEmpty", - "JKStringNotEquals", - "JKStringToSamplerAdapter" - ], - { - "title_aux": "comfyui-jk-easy-nodes" - } - ], - "https://github.com/kunieone/ComfyUI_alkaid": [ - [ - "A_EmptyLatentImageLongside", - "A_Face3DSwapper", - "A_FaceCrop", - "A_FacePaste", - "A_GetImageSize", - "A_OpenPosePreprocessor", - "AdapterFace", - "AdapterFaceLoader", - "AdapterStyle", - "AdapterStyleLoader", - "AlkaidLoader", - "ApplyAdapter", - "ApplyControlNet_KPS", - "CombineAdapterPatch", - "KSamplerHires" - ], - { - "title_aux": "ComfyUI_alkaid" - } - ], - "https://github.com/kwaroran/abg-comfyui": [ - [ - "Remove Image Background (abg)" - ], - { - "title_aux": "abg-comfyui" - } - ], - "https://github.com/kycg/comfyui-Lora-auto-downloader": [ - [ - "Kw_JsonLoraLoader", - "Kw_Json_Lora_CivitAIDownloader" - ], - { - "title_aux": "Kw_Json_Lora_CivitAIDownloader" - } - ], - "https://github.com/l-comm/WatermarkRemoval": [ - [ - "FindWatermarkNode", - "RemoveWatermarkNode" - ], - { - "author": "l-comm", - "description": "Remove watermark", - "nickname": "Watermark Removal", - "title": "Watermark Removal", - "title_aux": "WatermarkRemoval" - } - ], - "https://github.com/l1yongch1/ComfyUI_PhiCaption": [ - [ - "PhiInfer", - "PhiModelLoder" - ], - { - "title_aux": "ComfyUI_PhiCaption" - } - ], - "https://github.com/l20richo/ComfyUI-Azure-Blob-Storage": [ - [ - "DownloadFileBLOB", - "LoadImageBLOB", - "SaveImageBLOB", - "SaveVideoFilesBLOB", - "UploadFileBLOB" - ], - { - "title_aux": "ComfyUI-Azure-Blob-Storage" - } - ], - "https://github.com/laksjdjf/Batch-Condition-ComfyUI": [ - [ - "Batch String", - "CLIP Text Encode (Batch)", - "String Input" - ], - { - "title_aux": "Batch-Condition-ComfyUI" - } - ], - "https://github.com/laksjdjf/LCMSampler-ComfyUI": [ - [ - "SamplerLCM", - "TAESDLoader" - ], - { - "title_aux": "LCMSampler-ComfyUI" - } - ], - "https://github.com/laksjdjf/LoRTnoC-ComfyUI": [ - [ - "LortnocLoader" - ], - { - "title_aux": "LoRTnoC-ComfyUI" - } - ], - "https://github.com/laksjdjf/cd-tuner_negpip-ComfyUI": [ - [ - "CDTuner", - "Negapip", - "Negpip" - ], - { - "title_aux": "cd-tuner_negpip-ComfyUI" - } - ], - "https://github.com/laksjdjf/cgem156-ComfyUI": [ - [ - "GradualLatentSampler", - "LCMSamplerRCFG", - "LoadAestheticShadow", - "PredictAesthetic", - "TCDSampler", - "TextScheduler" - ], - { - "title_aux": "cgem156-ComfyUI\ud83c\udf4c" - } - ], - "https://github.com/laksjdjf/pfg-ComfyUI": [ - [ - "PFG" - ], - { - "title_aux": "pfg-ComfyUI" - } - ], - "https://github.com/larsupb/LoRA-Merger-ComfyUI": [ - [ - "PM LoRA Apply", - "PM LoRA Loader", - "PM LoRA Merger", - "PM LoRA Resizer", - "PM LoRA SVD Merger", - "PM LoRA Save", - "XY: PM LoRA Modes", - "XY: PM LoRA SVD Rank", - "XY: PM LoRA Strengths" - ], - { - "title_aux": "LoRA Power-Merger ComfyUI" - } - ], - "https://github.com/latenightlabs/ComfyUI-LNL": [ - [ - "LNL_FrameSelectorV3", - "LNL_FrameSelectorV4" - ], - { - "title_aux": "LNL Frame Selector" - } - ], - "https://github.com/lazniak/Head-Orientation-Node-for-ComfyUI---by-PabloGFX": [ - [ - "HeadOrientationNode" - ], - { - "title_aux": "Head-Orientation-Node - by PabloGFX" - } - ], - "https://github.com/lazniak/LiquidTime-Interpolation": [ - [ - "LiquidTime" - ], - { - "title_aux": "LiquidTime - by PabloGFX" - } - ], - "https://github.com/lazniak/comfyui-google-photos-loader": [ - [ - "ContentFilter", - "DatePicker", - "Google Photos Album Lister", - "Google Photos Album Loader", - "Google Photos Album Selector", - "Google Photos Cache Manager", - "Google Photos Clear Cache", - "Google Photos Images Loader", - "Google Photos Login/Logout" - ], - { - "title_aux": "Google Photos Loader - by PabloGFX" - } - ], - "https://github.com/leeguandong/ComfyUI_CompareModelWeights": [ - [ - "CheckPointLoader_Compare", - "CompareModelWeightsDiff", - "CompareModelWeightsDiffNormalized", - "PreviewImageCompareModelWeights" - ], - { - "title_aux": "ComfyUI_CompareModelWeights" - } - ], - "https://github.com/leeguandong/ComfyUI_CrossImageAttention": [ - [ - "AppearanceTransferInference", - "AppearanceTransferModelModelLoader", - "CIAConfig", - "LoadImagePath", - "LoadLatents" - ], - { - "title_aux": "ComfyUI nodes to use CrossImageAttention" - } - ], - "https://github.com/leeguandong/ComfyUI_FluxCustomId": [ - [ - "ApplyCustomIDFlux", - "CustomIDModelLoader" - ], - { - "title_aux": "ComfyUI_FluxCustomId" - } - ], - "https://github.com/leeguandong/ComfyUI_InternVL2": [ - [ - "DynamicPreprocess", - "InternVLHFInference", - "InternVLLMDEPLOYInference", - "InternVLModelLoader" - ], - { - "title_aux": "ComfyUI_InternVL2" - } - ], - "https://github.com/leeguandong/ComfyUI_LLaSM": [ - [ - "LLaSM2Interface", - "LLaSM2ModelLoader", - "LLaSMLoadAudio" - ], - { - "title_aux": "ComfyUI_LLaSM" - } - ], - "https://github.com/leeguandong/ComfyUI_M3Net": [ - [ - "M3Net_Interface", - "M3Net_ModelLoader" - ], - { - "title_aux": "ComfyUI_M3Net" - } - ], - "https://github.com/leeguandong/ComfyUI_MasaCtrl": [ - [ - "DirectSampler", - "MasaCtrlConcatImage", - "MasaCtrlInversion", - "MasaCtrlLoadImage", - "MasaCtrlModelLoader", - "MutualSelfAttentionControlMaskAutoSampler", - "MutualSelfAttentionControlSampler" - ], - { - "title_aux": "ComfyUI nodes to use MasaCtrl" - } - ], - "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/leeguandong/ComfyUI_VisualAttentionMap": [ - [ - "DecodeLatent", - "HFModelLoader", - "ShowCrossAttn", - "ShowImages", - "ShowSelfAttn", - "Text2ImageInference" - ], - { - "title_aux": "ComfyUI_VisualAttentionMap" - } - ], - "https://github.com/leestuartx/ComfyUI-GG": [ - [ - "AddPaddingToImage", - "ForLoopNode", - "ImageMetadataExtractor", - "InputNode", - "MetadataExtractBySeed", - "MetadataExtractorBySeed", - "OutputNode", - "ResizeImageProportionally", - "WorkspaceNode" - ], - { - "title_aux": "ComfyUI-GG" - } - ], - "https://github.com/lenskikh/ComfyUI-Prompt-Worker": [ - [ - "Prompt Worker" - ], - { - "title_aux": "Propmt Worker" - } - ], - "https://github.com/leoleelxh/ComfyUI-LLMs": [ - [ - "LLMs Chat", - "LLMs Vision Unified", - "LLMs_Vision_Unified" - ], - { - "title_aux": "ComfyUI-LLMs" - } - ], - "https://github.com/lgldlk/ComfyUI-PC-ding-dong": [ - [ - "pc ding dong", - "pc ding dong text", - "pc time sleep" - ], - { - "title_aux": "ComfyUI-PC-ding-dong" - } - ], - "https://github.com/liangt/comfyui-loadimagewithsubfolder": [ - [ - "LoadImageWithSubfolder" - ], - { - "title_aux": "comfyui-loadimagewithsubfolder" - } - ], - "https://github.com/licyk/ComfyUI-HakuImg": [ - [ - "BlendImage", - "Blur", - "Chromatic", - "Color", - "Curve", - "CustomExif", - "Flip", - "Glow", - "InOutPaint", - "LenDistortion", - "PixelOE", - "Pixelize", - "SaveImageWithCustomExif", - "Sketch", - "TiltShift" - ], - { - "title_aux": "ComfyUI-HakuImg" - } - ], - "https://github.com/licyk/ComfyUI-TCD-Sampler": [ - [ - "TCDScheduler" - ], - { - "title_aux": "ComfyUI-TCD-Sampler" - } - ], - "https://github.com/linshier/comfyui-remote-tools": [ - [ - "LoadBase64(js)", - "LoadBase64FromRemote", - "SendBase64ToRemote" - ], - { - "title_aux": "comfyui-remote-tools" - } - ], - "https://github.com/liuqianhonga/ComfyUI-Html2Image": [ - [ - "CameraWatermark", - "TemplateToImage", - "WebpageScreenshot" - ], - { - "title_aux": "ComfyUI-Html2Image" - } - ], - "https://github.com/liuqianhonga/ComfyUI-Image-Compressor": [ - [ - "BatchImageCompressor", - "ImageCompressor" - ], - { - "title_aux": "ComfyUI-Image-Compressor" - } - ], - "https://github.com/liuqianhonga/ComfyUI-QHNodes": [ - [ - "BatchImageCompressor", - "CameraWatermark", - "DownloadCheckpoint", - "DownloadControlNet", - "DownloadLora", - "DownloadUNET", - "DownloadVAE", - "DynamicExpression", - "FileSave", - "Gemini", - "ImageCompressor", - "ImageCountFromFolder", - "JsonToCSV", - "JsonUnpack", - "LoadImageFromFolder", - "LoadLoraFromFolder", - "PresetSizeLatent", - "SamplerSettings", - "ShowTranslateString", - "StringConverter", - "StringFormatter", - "StringList", - "StringListFromCSV", - "StringListToCSV", - "StringMatcher", - "StringTranslate", - "TemplateToImage", - "TimeFormatter", - "UnifiedPromptGenerator", - "WebpageScreenshot" - ], - { - "title_aux": "ComfyUI-QHNodes" - } - ], - "https://github.com/liuqianhonga/ComfyUI-String-Helper": [ - [ - "JsonToCSV", - "ShowTranslateString", - "StringConverter", - "StringFormatter", - "StringList", - "StringListFromCSV", - "StringListToCSV", - "StringMatcher", - "StringTranslate", - "TimeFormatter" - ], - { - "title_aux": "ComfyUI-String-Helper" - } - ], - "https://github.com/liushuchun/ComfyUI_Lora_List_With_Url_Loader": [ - [ - "LoraListUrlLoader" - ], - { - "title_aux": "ComfyUI_Lora_List_With_Url_Loader" - } - ], - "https://github.com/liusida/ComfyUI-AutoCropFaces": [ - [ - "AutoCropFaces" - ], - { - "title_aux": "ComfyUI-AutoCropFaces" - } - ], - "https://github.com/liusida/ComfyUI-B-LoRA": [ - [ - "LoadBLoRA" - ], - { - "title_aux": "ComfyUI-B-LoRA" - } - ], - "https://github.com/liusida/ComfyUI-Debug": [ - [ - "DebugInspectorNode", - "DebugModelInspectorNode", - "DebugModelPrintOutNode" - ], - { - "title_aux": "ComfyUI-Debug" - } - ], - "https://github.com/liusida/ComfyUI-Login": [ - [ - "LoadImageIncognito" - ], - { - "title_aux": "ComfyUI-Login" - } - ], - "https://github.com/liusida/ComfyUI-SD3-nodes": [ - [ - "SD3EmptyLatent", - "SD3LoadCLIPs", - "SD3LoadCheckpoint" - ], - { - "title_aux": "ComfyUI-SD3-nodes" - } - ], - "https://github.com/ljleb/comfy-mecha": [ - [ - "Blocks Mecha Hyper", - "Float Mecha Hyper", - "Lora Mecha Recipe", - "Mecha Deserializer", - "Mecha Merger", - "Mecha Recipe List", - "Mecha Serializer", - "Model Mecha Recipe" - ], - { - "title_aux": "Mecha Merge Node Pack" - } - ], - "https://github.com/lks-ai/ComfyUI-StableAudioSampler": [ - [ - "StableAudioConditioning", - "StableAudioLoadModel", - "StableAudioPrompt", - "StableAudioSampler" - ], - { - "author": "lks-ai", - "description": "A Simple integration of Stable Audio Diffusion with knobs and stuff!", - "nickname": "stableaudio", - "title": "StableAudioSampler", - "title_aux": "ComfyUI Stable Audio Open 1.0 Sampler" - } - ], - "https://github.com/lks-ai/anynode": [ - [ - "AnyNode", - "AnyNodeAnthropic", - "AnyNodeCodeViewer", - "AnyNodeExport", - "AnyNodeGemini", - "AnyNodeLocal" - ], - { - "author": "newsbubbles", - "description": "This single node uses an LLM to generate a functionality based on your request. You can make the node do anything.", - "nickname": "AnyNode", - "title": "AnyNode v0.1.1", - "title_aux": "ComfyUI AnyNode: Any Node you ask for" - } - ], - "https://github.com/lldacing/ComfyUI_BiRefNet_ll": [ - [ - "AutoDownloadBiRefNetModel", - "BlurFusionForegroundEstimation", - "GetMaskByBiRefNet", - "LoadRembgByBiRefNetModel", - "RembgByBiRefNet", - "RembgByBiRefNetAdvanced" - ], - { - "title_aux": "ComfyUI_BiRefNet_ll" - } - ], - "https://github.com/lldacing/ComfyUI_Patches_ll": [ - [ - "ApplyFirstBlockCachePatch", - "ApplyFirstBlockCachePatchAdvanced", - "ApplyTeaCachePatch", - "ApplyTeaCachePatchAdvanced", - "DitForwardOverrider", - "FluxForwardOverrider", - "VideoForwardOverrider" - ], - { - "title_aux": "ComfyUI_Patches_ll" - } - ], - "https://github.com/lldacing/ComfyUI_PuLID_Flux_ll": [ - [ - "ApplyPulidFlux", - "FixPulidFluxPatch", - "PulidFluxEvaClipLoader", - "PulidFluxInsightFaceLoader", - "PulidFluxModelLoader" - ], - { - "title_aux": "ComfyUI_PuLID_Flux_ll" - } - ], - "https://github.com/lldacing/ComfyUI_StableDelight_ll": [ - [ - "ApplyStableDelight", - "LoadStableDelightModel" - ], - { - "title_aux": "ComfyUI_StableDelight_ll" - } - ], - "https://github.com/lldacing/ComfyUI_StableHair_ll": [ - [ - "ApplyHairRemover", - "ApplyHairTransfer", - "LoadStableHairRemoverModel", - "LoadStableHairTransferModel" - ], - { - "title_aux": "ComfyUI_StableHair_ll" - } - ], - "https://github.com/lldacing/comfyui-easyapi-nodes": [ - [ - "Base64ToImage", - "Base64ToMask", - "BboxToBbox", - "BboxToCropData", - "BboxesToBboxes", - "ColorPicker", - "ConvertToJsonStr", - "ConvertTypeToAny", - "CopyAndRenameFiles", - "CropImageByBbox", - "CropTargetSizeImageByBbox", - "EmptyOutputNode", - "FilterValueForList", - "ForEachClose", - "ForEachOpen", - "GetImageBatchSize", - "GetValueFromJsonObj", - "ImageEqual", - "ImageToBase64", - "ImageToBase64Advanced", - "IndexOfList", - "IndexesOfList", - "InnerIntCompare", - "InnerIntMathOperation", - "InnerLoopClose", - "InsightFaceBBOXDetect", - "IntToList", - "IntToNumber", - "IsNoneOrEmpty", - "IsNoneOrEmptyOptional", - "JoinList", - "ListMerge", - "ListUnWrapper", - "ListWrapper", - "LoadImageFromLocalPath", - "LoadImageFromURL", - "LoadImageToBase64", - "LoadJsonStrToList", - "LoadLocalFilePath", - "LoadMaskFromLocalPath", - "LoadMaskFromURL", - "MaskByBboxes", - "MaskImageToBase64", - "MaskToBase64", - "MaskToBase64Image", - "MaskToRle", - "ReadTextFromLocalFile", - "RleToMask", - "SDBaseVerNumber", - "SamAutoMaskSEGS", - "SamAutoMaskSEGSAdvanced", - "SaveImagesWithoutOutput", - "SaveSingleImageWithoutOutput", - "SaveTextToFileByImagePath", - "SaveTextToLocalFile", - "SelectBbox", - "SelectBboxes", - "ShowBoolean", - "ShowFloat", - "ShowInt", - "ShowNumber", - "ShowString", - "SliceList", - "SplitStringToList", - "StringArea", - "StringToList", - "TryFreeMemory" - ], - { - "title_aux": "comfyui-easyapi-nodes" - } - ], - "https://github.com/lo-th/Comfyui_three_js": [ - [ - "ThreeView" - ], - { - "title_aux": "Comfyui_three_js" - } - ], - "https://github.com/logtd/ComfyUI-4DHumans": [ - [ - "LoadDetectron", - "LoadHMR", - "ProcessHumans", - "SelectHuman" - ], - { - "title_aux": "ComfyUI-4DHumans" - } - ], - "https://github.com/logtd/ComfyUI-APGScaling": [ - [ - "APGFunction" - ], - { - "title_aux": "ComfyUI-APGScaling" - } - ], - "https://github.com/logtd/ComfyUI-DiLightNet": [ - [ - "LoadDiLightControlNet", - "PrepareDiLightCond" - ], - { - "title_aux": "ComfyUI-DiLightNet" - } - ], - "https://github.com/logtd/ComfyUI-FLATTEN": [ - [ - "ApplyFlattenAttentionNode", - "CreateFlowNoiseNode", - "FlattenCheckpointLoaderNode", - "KSamplerFlattenNode", - "TrajectoryNode", - "UnsamplerFlattenNode" - ], - { - "title_aux": "ComfyUI-FLATTEN" - } - ], - "https://github.com/logtd/ComfyUI-Fluxtapoz": [ - [ - "AddFluxFlow", - "ApplyFluxRaveAttention", - "ApplyRefFlux", - "ApplyRegionalConds", - "ConfigureModifiedFlux", - "CreateRegionalCond", - "FlowEditForwardSampler", - "FlowEditGuider", - "FlowEditReverseSampler", - "FlowEditSampler", - "FluxAttnOverride", - "FluxDeGuidance", - "FluxForwardODESampler", - "FluxInverseSampler", - "FluxNoiseMixer", - "FluxReverseODESampler", - "InFluxFlipSigmas", - "InFluxModelSamplingPred", - "OutFluxModelSamplingPred", - "PAGAttention", - "PrepareAttnBank", - "RFDoubleBlocksOverride", - "RFSingleBlocksOverride", - "RegionalStyleModelApply", - "SEGAttention" - ], - { - "title_aux": "ComfyUI-Fluxtapoz" - } - ], - "https://github.com/logtd/ComfyUI-InstanceDiffusion": [ - [ - "ApplyScaleUModelNode", - "DownloadInstanceDiffusionModels", - "InstanceDiffusionTrackingPrompt", - "LoadInstanceFusersNode", - "LoadInstancePositionNetModel", - "LoadInstanceScaleUNode" - ], - { - "title_aux": "InstanceDiffusion Nodes" - } - ], - "https://github.com/logtd/ComfyUI-InversedNoise": [ - [ - "CombineNoiseLatentNode", - "MixNoiseNode", - "SamplerInversedEulerNode" - ], - { - "title_aux": "ComfyUI-InversedNoise" - } - ], - "https://github.com/logtd/ComfyUI-LTXTricks": [ - [ - "AddLatentGuide", - "LTXAttentioOverride", - "LTXAttentionBank", - "LTXAttnOverride", - "LTXFetaEnhance", - "LTXFlowEditCFGGuider", - "LTXFlowEditSampler", - "LTXForwardModelSamplingPred", - "LTXPerturbedAttention", - "LTXPrepareAttnInjections", - "LTXRFForwardODESampler", - "LTXRFReverseODESampler", - "LTXReverseModelSamplingPred", - "ModifyLTXModel" - ], - { - "title_aux": "ComfyUI-LTXTricks" - } - ], - "https://github.com/logtd/ComfyUI-MochiEdit": [ - [ - "MochiPrepareSigmas", - "MochiResampler", - "MochiUnsampler", - "MochiWrapperResampler", - "MochiWrapperSamplerCustom", - "MochiWrapperUnsampler" - ], - { - "title_aux": "ComfyUI-MochiEdit" - } - ], - "https://github.com/logtd/ComfyUI-MotionThiefExperiment": [ - [ - "ApplyRefMotionNode", - "MotionRefSettingsCustomNode", - "MotionRefSettingsDefaultNode" - ], - { - "title_aux": "ComfyUI-MotionThiefExperiment" - } - ], - "https://github.com/logtd/ComfyUI-RAVE_ATTN": [ - [ - "ApplyRaveAttentionNode", - "AttentionOverrideSD15Node", - "AttentionOverrideSDXLNode" - ], - { - "title_aux": "ComfyUI-RAVE Attention" - } - ], - "https://github.com/logtd/ComfyUI-ReNoise": [ - [ - "ReNoiseModelSamplingPred", - "ReNoiseSampler" - ], - { - "title_aux": "ComfyUI-ReNoise" - } - ], - "https://github.com/logtd/ComfyUI-RefSampling": [ - [ - "ApplyRefContentNode", - "ApplyRefStyleNode", - "ApplyRefUNetNode" - ], - { - "title_aux": "ComfyUI-RefSampling" - } - ], - "https://github.com/logtd/ComfyUI-RefUNet": [ - [ - "ConfigRefMapAdv", - "ConfigureRefNet", - "CreateRefBank", - "CustomRefMapSD1", - "PrepareRefLatents", - "ReadSampler", - "RefModelSamplingPred", - "VisionClipEncode", - "WriteSampler" - ], - { - "title_aux": "ComfyUI-RefUNet" - } - ], - "https://github.com/logtd/ComfyUI-SEGAttention": [ - [ - "SEGAttention" - ], - { - "title_aux": "ComfyUI-SEGAttention" - } - ], - "https://github.com/logtd/ComfyUI-SSREncoder": [ - [ - "ApplySSR", - "EncodeSSRQuery", - "LoadSSRAligner", - "LoadSSRAttention" - ], - { - "title_aux": "ComfyUI-SSREncoder" - } - ], - "https://github.com/logtd/ComfyUI-SeeCoder": [ - [ - "LoadSeeCoder", - "LoadSeeCoderUncond", - "SeecoderEncode" - ], - { - "title_aux": "ComfyUI-SeeCoder" - } - ], - "https://github.com/logtd/ComfyUI-TrackingNodes": [ - [ - "OpenPoseTrackerNode", - "YOLOTrackerNode" - ], - { - "title_aux": "Tracking Nodes for Videos" - } - ], - "https://github.com/logtd/ComfyUI-ViewCrafter": [ - [ - "ApplyViewCrafter", - "LoadViewCrafter", - "ScaleImages" - ], - { - "title_aux": "ComfyUI-ViewCrafter" - } - ], - "https://github.com/longgui0318/comfyui-common-util": [ - [ - "Added Layer Info To Array", - "Enhanced Random Light Source", - "Float Relay", - "HLFrequencyDetailRestore", - "Image Add Alpha", - "Image Frequency Analyzer", - "Image Relay", - "Image Remove Alpha", - "Image Resize With Padding", - "Init Layer Info Array", - "Int Relay", - "Layer Image Seleted", - "Layer Images IPAdapter Advanced", - "Layer Info Array Fuse", - "Mask Relay", - "String Relay" - ], - { - "title_aux": "comfyui-common-util" - } - ], - "https://github.com/longgui0318/comfyui-llm-assistant": [ - [ - "Chat With LLM", - "Generate Stable Diffsution Prompt With LLM", - "Translate Text With LLM" - ], - { - "title_aux": "comfyui-llm-assistant" - } - ], - "https://github.com/longgui0318/comfyui-magic-clothing": [ - [ - "Add Magic Clothing Attention", - "Change Pipeline Dtype And Device", - "Change Pixel Value Normalization", - "Diffusers Model Makeup &MC", - "Diffusers Scheduler Loader &MC", - "Load Magic Clothing Adapter", - "Load Magic Clothing Model", - "Load Magic Clothing Pipeline", - "Load Magic Clothing Pipeline With Path", - "RUN Magic Clothing Diffusers Model" - ], - { - "title_aux": "comfyui-magic-clothing" - } - ], - "https://github.com/longgui0318/comfyui-mask-util": [ - [ - "Image Adaptive Crop M&R", - "Image Adaptive Crop With Mask", - "Image Change DType", - "Image Change Device", - "Image Resolution Adaptive With X", - "Image Resolution Limit With 8K", - "Load Image With Name", - "Mask Change DType", - "Mask Change Device", - "Mask Selection Of Masks", - "Model Change Device", - "Model Change Device Repeaters", - "Output Image To Input", - "Split Masks" - ], - { - "title_aux": "comfyui-mask-util" - } - ], - "https://github.com/lordgasmic/comfyui_save_image_with_options": [ - [ - "SaveImageWithOptions" - ], - { - "title_aux": "comfyui_save_image_with_options" - } - ], - "https://github.com/lordgasmic/comfyui_wildcards": [ - [ - "CLIPTextEncodeWithWildcards" - ], - { - "title_aux": "comfyui_wildcards" - } - ], - "https://github.com/lquesada/ComfyUI-Inpaint-CropAndStitch": [ - [ - "InpaintCrop", - "InpaintExtendOutpaint", - "InpaintResize", - "InpaintStitch" - ], - { - "title_aux": "ComfyUI-Inpaint-CropAndStitch" - } - ], - "https://github.com/lquesada/ComfyUI-Interactive": [ - [ - "InteractiveFloat", - "InteractiveInteger", - "InteractiveReset", - "InteractiveSave", - "InteractiveSeed", - "InteractiveSelector", - "InteractiveSelectorWithParameters", - "InteractiveString", - "InteractiveStringAppend", - "InteractiveStringMultiline", - "InteractiveSwitch", - "InteractiveSwitchWithParameters" - ], - { - "title_aux": "ComfyUI-Interactive" - } - ], - "https://github.com/lquesada/ComfyUI-Prompt-Combinator": [ - [ - "PromptCombinator", - "PromptCombinatorExportGallery", - "PromptCombinatorMerger", - "PromptCombinatorRandomPrompt" - ], - { - "title_aux": "ComfyUI-Prompt-Combinator" - } - ], - "https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils": [ - [ - "AddMaskForICLora", - "AutoPatch", - "ConcatContextWindow", - "CreateContextWindow" - ], - { - "title_aux": "Comfyui-In-Context-Lora-Utils" - } - ], - "https://github.com/lrzjason/Comfyui-Kolors-Utils": [ - [ - "SaveKolors", - "SaveWeightAsKolorsUnet" - ], - { - "title_aux": "Comfyui Kolors Utils" - } - ], - "https://github.com/ltdrdata/ComfyUI-Impact-Pack": [ - [ - "AddMask", - "AnyPipeToBasic", - "BasicPipeToDetailerPipe", - "BasicPipeToDetailerPipeSDXL", - "BboxDetectorCombined", - "BboxDetectorCombined_v2", - "BboxDetectorForEach", - "BboxDetectorSEGS", - "BitwiseAndMask", - "BitwiseAndMaskForEach", - "CLIPSegDetectorProvider", - "CfgScheduleHookProvider", - "CombineRegionalPrompts", - "CoreMLDetailerHookProvider", - "CustomNoiseDetailerHookProvider", - "DenoiseScheduleHookProvider", - "DenoiseSchedulerDetailerHookProvider", - "DetailerForEach", - "DetailerForEachDebug", - "DetailerForEachDebugPipe", - "DetailerForEachPipe", - "DetailerForEachPipeForAnimateDiff", - "DetailerHookCombine", - "DetailerPipeToBasicPipe", - "EditBasicPipe", - "EditDetailerPipe", - "EditDetailerPipeSDXL", - "EmptySegs", - "FaceDetailer", - "FaceDetailerPipe", - "FromBasicPipe", - "FromBasicPipe_v2", - "FromDetailerPipe", - "FromDetailerPipeSDXL", - "FromDetailerPipe_v2", - "GITSSchedulerFuncProvider", - "ImageListToImageBatch", - "ImageMaskSwitch", - "ImageReceiver", - "ImageSender", - "ImpactAssembleSEGS", - "ImpactBoolean", - "ImpactCombineConditionings", - "ImpactCompare", - "ImpactConcatConditionings", - "ImpactConditionalBranch", - "ImpactConditionalBranchSelMode", - "ImpactConditionalStopIteration", - "ImpactControlBridge", - "ImpactControlNetApplyAdvancedSEGS", - "ImpactControlNetApplySEGS", - "ImpactControlNetClearSEGS", - "ImpactConvertDataType", - "ImpactCount_Elts_in_SEGS", - "ImpactDecomposeSEGS", - "ImpactDilateMask", - "ImpactDilateMaskInSEGS", - "ImpactDilate_Mask_SEG_ELT", - "ImpactDummyInput", - "ImpactEdit_SEG_ELT", - "ImpactExecutionOrderController", - "ImpactFlattenMask", - "ImpactFloat", - "ImpactFrom_SEG_ELT", - "ImpactFrom_SEG_ELT_bbox", - "ImpactFrom_SEG_ELT_crop_region", - "ImpactGaussianBlurMask", - "ImpactGaussianBlurMaskInSEGS", - "ImpactHFTransformersClassifierProvider", - "ImpactIPAdapterApplySEGS", - "ImpactIfNone", - "ImpactImageBatchToImageList", - "ImpactImageInfo", - "ImpactInt", - "ImpactInversedSwitch", - "ImpactIsNotEmptySEGS", - "ImpactKSamplerAdvancedBasicPipe", - "ImpactKSamplerBasicPipe", - "ImpactLatentInfo", - "ImpactListBridge", - "ImpactLogger", - "ImpactLogicalOperators", - "ImpactMakeAnyList", - "ImpactMakeImageBatch", - "ImpactMakeImageList", - "ImpactMakeMaskBatch", - "ImpactMakeMaskList", - "ImpactMakeTileSEGS", - "ImpactMinMax", - "ImpactNeg", - "ImpactNegativeConditioningPlaceholder", - "ImpactNodeSetMuteState", - "ImpactQueueTrigger", - "ImpactQueueTriggerCountdown", - "ImpactRemoteBoolean", - "ImpactRemoteInt", - "ImpactSEGSClassify", - "ImpactSEGSConcat", - "ImpactSEGSLabelAssign", - "ImpactSEGSLabelFilter", - "ImpactSEGSMerge", - "ImpactSEGSOrderedFilter", - "ImpactSEGSPicker", - "ImpactSEGSRangeFilter", - "ImpactSEGSToMaskBatch", - "ImpactSEGSToMaskList", - "ImpactScaleBy_BBOX_SEG_ELT", - "ImpactSchedulerAdapter", - "ImpactSegsAndMask", - "ImpactSegsAndMaskForEach", - "ImpactSetWidgetValue", - "ImpactSimpleDetectorSEGS", - "ImpactSimpleDetectorSEGSPipe", - "ImpactSimpleDetectorSEGS_for_AD", - "ImpactSleep", - "ImpactStringSelector", - "ImpactSwitch", - "ImpactValueReceiver", - "ImpactValueSender", - "ImpactWildcardEncode", - "ImpactWildcardProcessor", - "IterativeImageUpscale", - "IterativeLatentUpscale", - "KSamplerAdvancedProvider", - "KSamplerProvider", - "LatentPixelScale", - "LatentReceiver", - "LatentSender", - "LatentSwitch", - "MMDetDetectorProvider", - "MMDetLoader", - "MaskDetailerPipe", - "MaskListToMaskBatch", - "MaskPainter", - "MaskRectArea", - "MaskRectAreaAdvanced", - "MaskToSEGS", - "MaskToSEGS_for_AnimateDiff", - "MasksToMaskList", - "MediaPipeFaceMeshToSEGS", - "NoiseInjectionDetailerHookProvider", - "NoiseInjectionHookProvider", - "ONNXDetectorProvider", - "ONNXDetectorSEGS", - "PixelKSampleHookCombine", - "PixelKSampleUpscalerProvider", - "PixelKSampleUpscalerProviderPipe", - "PixelTiledKSampleUpscalerProvider", - "PixelTiledKSampleUpscalerProviderPipe", - "PreviewBridge", - "PreviewBridgeLatent", - "PreviewDetailerHookProvider", - "ReencodeLatent", - "ReencodeLatentPipe", - "RegionalPrompt", - "RegionalSampler", - "RegionalSamplerAdvanced", - "RemoveImageFromSEGS", - "RemoveNoiseMask", - "SAMDetectorCombined", - "SAMDetectorSegmented", - "SAMLoader", - "SEGSDetailer", - "SEGSDetailerForAnimateDiff", - "SEGSLabelFilterDetailerHookProvider", - "SEGSOrderedFilterDetailerHookProvider", - "SEGSPaste", - "SEGSPreview", - "SEGSPreviewCNet", - "SEGSRangeFilterDetailerHookProvider", - "SEGSSwitch", - "SEGSToImageList", - "SEGSUpscaler", - "SEGSUpscalerPipe", - "SegmDetectorCombined", - "SegmDetectorCombined_v2", - "SegmDetectorForEach", - "SegmDetectorSEGS", - "Segs Mask", - "Segs Mask ForEach", - "SegsMaskCombine", - "SegsToCombinedMask", - "SetDefaultImageForSEGS", - "StepsScheduleHookProvider", - "StringListToString", - "SubtractMask", - "SubtractMaskForEach", - "TiledKSamplerProvider", - "ToBasicPipe", - "ToBinaryMask", - "ToDetailerPipe", - "ToDetailerPipeSDXL", - "TwoAdvancedSamplersForMask", - "TwoSamplersForMask", - "TwoSamplersForMaskUpscalerProvider", - "TwoSamplersForMaskUpscalerProviderPipe", - "UnsamplerDetailerHookProvider", - "UnsamplerHookProvider", - "VariationNoiseDetailerHookProvider", - "WildcardPromptFromString" - ], - { - "author": "Dr.Lt.Data", - "description": "This extension offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler.", - "nickname": "Impact Pack", - "preemptions": [ - "SAMLoader" - ], - "title": "Impact Pack", - "title_aux": "ComfyUI Impact Pack" - } - ], - "https://github.com/ltdrdata/ComfyUI-Impact-Subpack": [ - [ - "UltralyticsDetectorProvider" - ], - { - "author": "Dr.Lt.Data", - "description": "This extension provides UltralyticsDetectorProvider node", - "nickname": "Impact Subpack", - "title": "Impact Subpack", - "title_aux": "ComfyUI Impact Subpack" - } - ], - "https://github.com/ltdrdata/ComfyUI-Inspire-Pack": [ - [ - "AnimeLineArt_Preprocessor_Provider_for_SEGS //Inspire", - "ApplyLBW //Inspire", - "ApplyRegionalIPAdapters //Inspire", - "BindImageListPromptList //Inspire", - "CLIPTextEncodeWithWeight //Inspire", - "CacheBackendData //Inspire", - "CacheBackendDataList //Inspire", - "CacheBackendDataNumberKey //Inspire", - "CacheBackendDataNumberKeyList //Inspire", - "CacheBridge //Inspire", - "Canny_Preprocessor_Provider_for_SEGS //Inspire", - "ChangeImageBatchSize //Inspire", - "ChangeLatentBatchSize //Inspire", - "CheckpointLoaderSimpleShared //Inspire", - "ColorMapToMasks //Inspire", - "ColorMaskToDepthMask //Inspire", - "Color_Preprocessor_Provider_for_SEGS //Inspire", - "CompositeNoise //Inspire", - "ConcatConditioningsWithMultiplier //Inspire", - "ConditioningStretch //Inspire", - "ConditioningUpscale //Inspire", - "DWPreprocessor_Provider_for_SEGS //Inspire", - "FakeScribblePreprocessor_Provider_for_SEGS //Inspire", - "FloatRange //Inspire", - "ForeachListBegin //Inspire", - "ForeachListEnd //Inspire", - "FromIPAdapterPipe //Inspire", - "GlobalSampler //Inspire", - "GlobalSeed //Inspire", - "HEDPreprocessor_Provider_for_SEGS //Inspire", - "HyperTile //Inspire", - "IPAdapterModelHelper //Inspire", - "ImageBatchSplitter //Inspire", - "InpaintPreprocessor_Provider_for_SEGS //Inspire", - "IsCached //Inspire", - "KSampler //Inspire", - "KSamplerAdvanced //Inspire", - "KSamplerAdvancedPipe //Inspire", - "KSamplerAdvancedProgress //Inspire", - "KSamplerPipe //Inspire", - "KSamplerProgress //Inspire", - "LatentBatchSplitter //Inspire", - "LeRes_DepthMap_Preprocessor_Provider_for_SEGS //Inspire", - "LineArt_Preprocessor_Provider_for_SEGS //Inspire", - "ListCounter //Inspire", - "LoadDiffusionModelShared //Inspire", - "LoadImage //Inspire", - "LoadImageListFromDir //Inspire", - "LoadImagesFromDir //Inspire", - "LoadLBW //Inspire", - "LoadPromptsFromDir //Inspire", - "LoadPromptsFromFile //Inspire", - "LoadSinglePromptFromFile //Inspire", - "LoadTextEncoderShared //Inspire", - "LoraBlockInfo //Inspire", - "LoraLoaderBlockWeight //Inspire", - "MakeBasicPipe //Inspire", - "MakeLBW //Inspire", - "Manga2Anime_LineArt_Preprocessor_Provider_for_SEGS //Inspire", - "MediaPipeFaceMeshDetectorProvider //Inspire", - "MediaPipe_FaceMesh_Preprocessor_Provider_for_SEGS //Inspire", - "MeshGraphormerDepthMapPreprocessorProvider_for_SEGS //Inspire", - "MiDaS_DepthMap_Preprocessor_Provider_for_SEGS //Inspire", - "OpenPose_Preprocessor_Provider_for_SEGS //Inspire", - "PromptBuilder //Inspire", - "PromptExtractor //Inspire", - "RGB_HexToHSV //Inspire", - "RandomGeneratorForList //Inspire", - "RandomNoise //Inspire", - "RegionalCFG //Inspire", - "RegionalConditioningColorMask //Inspire", - "RegionalConditioningSimple //Inspire", - "RegionalIPAdapterColorMask //Inspire", - "RegionalIPAdapterEncodedColorMask //Inspire", - "RegionalIPAdapterEncodedMask //Inspire", - "RegionalIPAdapterMask //Inspire", - "RegionalPromptColorMask //Inspire", - "RegionalPromptSimple //Inspire", - "RegionalSeedExplorerColorMask //Inspire", - "RegionalSeedExplorerMask //Inspire", - "RemoveBackendData //Inspire", - "RemoveBackendDataNumberKey //Inspire", - "RemoveControlNet //Inspire", - "RemoveControlNetFromRegionalPrompts //Inspire", - "RetrieveBackendData //Inspire", - "RetrieveBackendDataNumberKey //Inspire", - "SaveLBW //Inspire", - "ScheduledCFGGuider //Inspire", - "ScheduledPerpNegCFGGuider //Inspire", - "SeedExplorer //Inspire", - "SelectNthMask //Inspire", - "ShowCachedInfo //Inspire", - "StableCascade_CheckpointLoader //Inspire", - "TilePreprocessor_Provider_for_SEGS //Inspire", - "ToIPAdapterPipe //Inspire", - "UnzipPrompt //Inspire", - "WildcardEncode //Inspire", - "WorklistToItemList //Inspire", - "XY Input: Lora Block Weight //Inspire", - "ZipPrompt //Inspire", - "Zoe_DepthMap_Preprocessor_Provider_for_SEGS //Inspire" - ], - { - "author": "Dr.Lt.Data", - "description": "This extension provides various nodes to support Lora Block Weight, Regional Nodes, Backend Cache, Prompt Utils, List Utils and the Impact Pack.", - "nickname": "Inspire Pack", - "nodename_pattern": "Inspire$", - "title": "Inspire Pack", - "title_aux": "ComfyUI Inspire Pack" - } - ], - "https://github.com/luandev/ComfyUI-CrewAI": [ - [ - "DisplayText", - "\ud83d\udcceCrewAI Agent", - "\ud83d\udcceCrewAI Agent List", - "\ud83d\udcceCrewAI Crew", - "\ud83d\udcceCrewAI LLM Chat GPT", - "\ud83d\udcceCrewAI LLM Hugging Face", - "\ud83d\udcceCrewAI LLM Ollama", - "\ud83d\udcceCrewAI LLM OpenAI", - "\ud83d\udcceCrewAI Task", - "\ud83d\udcceCrewAI Task List", - "\ud83d\udcceCrewAI Text" - ], - { - "title_aux": "ComfyUI CrewAI" - } - ], - "https://github.com/lucafoscili/comfyui-lf": [ - [ - "LF_Blend", - "LF_BlurImages", - "LF_Boolean", - "LF_Brightness", - "LF_CharacterImpersonator", - "LF_CheckpointSelector", - "LF_CivitAIMetadataSetup", - "LF_Clarity", - "LF_ColorAnalysis", - "LF_CompareImages", - "LF_Contrast", - "LF_ControlPanel", - "LF_Desaturation", - "LF_DisplayBoolean", - "LF_DisplayFloat", - "LF_DisplayInteger", - "LF_DisplayJSON", - "LF_DisplayPrimitiveAsJSON", - "LF_DisplayString", - "LF_EmbeddingSelector", - "LF_ExtractPromptFromLoraTag", - "LF_ExtractString", - "LF_FilmGrain", - "LF_Float", - "LF_GaussianBlur", - "LF_GetRandomKeyFromJSON", - "LF_GetValueFromJSON", - "LF_ImageClassifier", - "LF_ImageHistogram", - "LF_ImageListFromJSON", - "LF_ImagesEditingBreakpoint", - "LF_ImagesSlideshow", - "LF_Integer", - "LF_IsLandscape", - "LF_KeywordCounter", - "LF_KeywordToggleFromJSON", - "LF_LLMChat", - "LF_LLMMessenger", - "LF_LUTApplication", - "LF_LUTGeneration", - "LF_Line", - "LF_LoadAndEditImages", - "LF_LoadFileOnce", - "LF_LoadImages", - "LF_LoadLocalJSON", - "LF_LoadLoraTags", - "LF_LoadMetadata", - "LF_LoraAndEmbeddingSelector", - "LF_LoraSelector", - "LF_MarkdownDocGenerator", - "LF_MathOperation", - "LF_MultipleImageResizeForWeb", - "LF_Notify", - "LF_ParsePromptWithLoraTags", - "LF_RandomBoolean", - "LF_RegexReplace", - "LF_RegionExtractor", - "LF_ResizeImageByEdge", - "LF_ResizeImageToDimension", - "LF_ResizeImageToSquare", - "LF_ResolutionSwitcher", - "LF_SamplerSelector", - "LF_SaveImageForCivitAI", - "LF_SaveJSON", - "LF_SaveMarkdown", - "LF_SchedulerSelector", - "LF_Sepia", - "LF_SequentialSeedsGenerator", - "LF_SetValueInJSON", - "LF_ShuffleJSONKeys", - "LF_Something2Number", - "LF_Something2String", - "LF_SortJSONKeys", - "LF_String", - "LF_StringReplace", - "LF_StringTemplate", - "LF_StringToJSON", - "LF_SwitchFloat", - "LF_SwitchImage", - "LF_SwitchInteger", - "LF_SwitchJSON", - "LF_SwitchString", - "LF_UpdateUsageStatistics", - "LF_UpscaleModelSelector", - "LF_UrandomSeedGenerator", - "LF_UsageStatistics", - "LF_VAESelector", - "LF_ViewImages", - "LF_Vignette", - "LF_WallOfText", - "LF_WriteJSON" - ], - { - "title_aux": "LF Nodes" - } - ], - "https://github.com/lujiazho/ComfyUI-CatvtonFluxWrapper": [ - [ - "CatvtonFluxSampler", - "LoadCatvtonFlux", - "LoadCatvtonFluxLoRA", - "ModelPrinter" - ], - { - "title_aux": "ComfyUI-CatvtonFluxWrapper" - } - ], - "https://github.com/lumalabs/ComfyUI-LumaAI-API": [ - [ - "CharacterReference", - "ConcatReferences", - "ImgBBUpload", - "LumaAIClient", - "LumaExtendGeneration", - "LumaImage2Video", - "LumaImageGeneration", - "LumaInterpolateGenerations", - "LumaModifyImage", - "LumaPreviewVideo", - "LumaText2Video", - "Reference" - ], - { - "title_aux": "ComfyUI-LumaAI-API" - } - ], - "https://github.com/m-sokes/ComfyUI-Sokes-Nodes": [ - [ - "Custom Date Format | sokes \ud83e\uddac", - "Latent Switch x9 | sokes \ud83e\uddac" - ], - { - "title_aux": "ComfyUI Sokes Nodes" - } - ], - "https://github.com/maepopi/Diffusers-in-ComfyUI": [ - [ - "BLoRALoader", - "GenerateImg2Image", - "GenerateInpaintImage", - "GenerateTxt2Image", - "Img2ImgStableDiffusionPipeline", - "InpaintingStableDiffusionPipeline", - "LoRALoader", - "MakeCanny", - "Text2ImgStableDiffusionPipeline" - ], - { - "title_aux": "Diffusers-in-ComfyUI" - } - ], - "https://github.com/magic-quill/ComfyUI_MagicQuill": [ - [ - "MagicQuill" - ], - { - "author": "Zichen LIU (https://zliucz.github.io/) and Yue YU (https://bruceyyu.github.io/)", - "description": "Official ComfyUI Implementations for Paper - MagicQuill: An Intelligent Interactive Image Editing System", - "nickname": "MagicQuill nodes", - "title": "MagicQuill", - "title_aux": "ComfyUI_MagicQuill" - } - ], - "https://github.com/mango-rgb/ComfyUI-Mango-Random-node": [ - [ - "RandomFilePathNode", - "RandomImageNode", - "RandomImagePathNode", - "RandomTextNode", - "RandomVideoPathNode" - ], - { - "title_aux": "ComfyUI-Mango-Random" - } - ], - "https://github.com/mape/ComfyUI-mape-Helpers": [ - [ - "mape Variable" - ], - { - "author": "mape", - "description": "Various QoL improvements like prompt tweaking, variable assignment, image preview, fuzzy search, error reporting, organizing and node navigation.", - "nickname": "\ud83d\udfe1 mape's helpers", - "title": "mape's helpers", - "title_aux": "mape's helpers" - } - ], - "https://github.com/maracman/ComfyUI-SubjectStyle-CSV": [ - [ - "CSVPromptProcessor" - ], - { - "title_aux": "ComfyUI-SubjectStyle-CSV" - } - ], - "https://github.com/marcoc2/ComfyUI-AnotherUtils": [ - [ - "CustomCrop", - "LoadImagesOriginal", - "NearestUpscale", - "PixelArtNormalizer", - "SmartResize" - ], - { - "title_aux": "Image Processing Suite for ComfyUI" - } - ], - "https://github.com/marduk191/ComfyUI-Fluxpromptenhancer": [ - [ - "FluxPromptEnhance" - ], - { - "title_aux": "Flux Prompt Enhance Node for ComfyUI" - } - ], - "https://github.com/marduk191/comfyui-marnodes": [ - [ - "ImageToDevice", - "marduk191_5_text_string", - "marduk191_5way_text_switch", - "marduk191_s_random_latent", - "marduk191_workflow_settings" - ], - { - "author": "\u02f6marduk191", - "description": "marduk191s nodes.", - "nickname": "marduk191 workflow settings", - "title": "marduk191 workflow settings", - "title_aux": "marduk191 workflow settings" - } - ], - "https://github.com/marhensa/sdxl-recommended-res-calc": [ - [ - "RecommendedResCalc" - ], - { - "title_aux": "Recommended Resolution Calculator" - } - ], - "https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver": [ - [ - "FluxPromptSaver", - "FluxTextSampler", - "ModelName" - ], - { - "title_aux": "ComfyUI Flux Prompt Saver" - } - ], - "https://github.com/martijnat/comfyui-previewlatent": [ - [ - "PreviewLatent", - "PreviewLatentAdvanced", - "PreviewLatentXL" - ], - { - "title_aux": "comfyui-previewlatent" - } - ], - "https://github.com/massao000/ComfyUI_aspect_ratios": [ - [ - "Aspect Ratios Node" - ], - { - "title_aux": "ComfyUI_aspect_ratios" - } - ], - "https://github.com/matan1905/ComfyUI-Serving-Toolkit": [ - [ - "AlwaysExecute", - "CommandPickerServing", - "DiscordServing", - "ServingInputImage", - "ServingInputImageAsLatent", - "ServingInputNumber", - "ServingInputText", - "ServingInputTextImage", - "ServingMultiImageOutput", - "ServingOutput", - "ServingTextOutput", - "TelegramServing", - "WebSocketServing" - ], - { - "title_aux": "ComfyUI Serving toolkit" - } - ], - "https://github.com/mattjohnpowell/comfyui-lmstudio-image-to-text-node": [ - [ - "LM Studio Image To Text", - "LM Studio Text Generation" - ], - { - "author": "Matt John Powell", - "description": "This extension provides two custom nodes for ComfyUI that integrate LM Studio's capabilities:", - "nickname": "LM Studio Nodes", - "title": "LM Studio Nodes for ComfyUI", - "title_aux": "LM Studio Image to Text Node for ComfyUI" - } - ], - "https://github.com/mav-rik/facerestore_cf": [ - [ - "CropFace", - "FaceRestoreCFWithModel", - "FaceRestoreModelLoader" - ], - { - "title_aux": "Facerestore CF (Code Former)" - } - ], - "https://github.com/mbrostami/ComfyUI-HF": [ - [ - "GPT2Node" - ], - { - "title_aux": "ComfyUI-HF" - } - ], - "https://github.com/mbrostami/ComfyUI-TITrain": [ - [ - "TextualInversionTraining", - "TextualInversionTrainingSDXL" - ], - { - "title_aux": "ComfyUI-TITrain" - } - ], - "https://github.com/mcmonkeyprojects/sd-dynamic-thresholding": [ - [ - "DynamicThresholdingFull", - "DynamicThresholdingSimple" - ], - { - "title_aux": "Dynamic Thresholding" - } - ], - "https://github.com/meanin2/comfyui-MGnodes": [ - [ - "ImageWatermarkNode", - "TextExtractorNode" - ], - { - "title_aux": "ComfyUI Image Watermarking Node" - } - ], - "https://github.com/meanin2/comfyui-watermarking": [ - [ - "ImageWatermarkNode", - "TextExtractorNode" - ], - { - "title_aux": "ComfyUI Watermark Image Node" - } - ], - "https://github.com/meap158/ComfyUI-Background-Replacement": [ - [ - "BackgroundReplacement", - "ImageComposite" - ], - { - "title_aux": "ComfyUI-Background-Replacement" - } - ], - "https://github.com/meap158/ComfyUI-GPU-temperature-protection": [ - [ - "GPUTemperatureProtection" - ], - { - "title_aux": "GPU temperature protection" - } - ], - "https://github.com/meap158/ComfyUI-Prompt-Expansion": [ - [ - "PromptExpansion" - ], - { - "title_aux": "ComfyUI-Prompt-Expansion" - } - ], - "https://github.com/mech-tools/comfyui-checkpoint-automatic-config": [ - [ - "CheckpointAutomaticConfig", - "ConfigPipe" - ], - { - "title_aux": "ComfyUI Checkpoint Automatic Config" - } - ], - "https://github.com/melMass/comfy_mtb": [ - [ - "Animation Builder (mtb)", - "Any To String (mtb)", - "Batch Float (mtb)", - "Batch Float Assemble (mtb)", - "Batch Float Fill (mtb)", - "Batch Make (mtb)", - "Batch Merge (mtb)", - "Batch Shake (mtb)", - "Batch Shape (mtb)", - "Batch Transform (mtb)", - "Bbox (mtb)", - "Bbox From Mask (mtb)", - "Blur (mtb)", - "Color Correct (mtb)", - "Colored Image (mtb)", - "Concat Images (mtb)", - "Crop (mtb)", - "Debug (mtb)", - "Deep Bump (mtb)", - "Export With Ffmpeg (mtb)", - "Face Swap (mtb)", - "Film Interpolation (mtb)", - "Fit Number (mtb)", - "Float To Number (mtb)", - "Get Batch From History (mtb)", - "Image Compare (mtb)", - "Image Premultiply (mtb)", - "Image Remove Background Rembg (mtb)", - "Image Resize Factor (mtb)", - "Image Tile Offset (mtb)", - "Int To Bool (mtb)", - "Int To Number (mtb)", - "Interpolate Clip Sequential (mtb)", - "Latent Lerp (mtb)", - "Load Face Analysis Model (mtb)", - "Load Face Enhance Model (mtb)", - "Load Face Swap Model (mtb)", - "Load Film Model (mtb)", - "Load Image From Url (mtb)", - "Load Image Sequence (mtb)", - "Mask To Image (mtb)", - "Math Expression (mtb)", - "Model Patch Seamless (mtb)", - "Pick From Batch (mtb)", - "Qr Code (mtb)", - "Restore Face (mtb)", - "Save Gif (mtb)", - "Save Image Grid (mtb)", - "Save Image Sequence (mtb)", - "Save Tensors (mtb)", - "Sharpen (mtb)", - "Smart Step (mtb)", - "Stack Images (mtb)", - "String Replace (mtb)", - "Styles Loader (mtb)", - "Text To Image (mtb)", - "Transform Image (mtb)", - "Uncrop (mtb)", - "Unsplash Image (mtb)", - "Vae Decode (mtb)" - ], - { - "nodename_pattern": "\\(mtb\\)$", - "title_aux": "MTB Nodes" - } - ], - "https://github.com/mephisto83/petty-paint-comfyui-node": [ - [ - "ConvertWhiteToAlpha", - "PPGenerateRandomFloat", - "PPGenerateRandomNumber", - "PPKSamplerAdvanced", - "PPSelectRandomValue", - "PettyImageImageColorToMask", - "PettyPaintAppend", - "PettyPaintApplyLoRAStack", - "PettyPaintArguments", - "PettyPaintBlurs", - "PettyPaintCheckpointLoaderSimple", - "PettyPaintComponent", - "PettyPaintConditioningSetMaskAndCombine", - "PettyPaintControlNetToMasking", - "PettyPaintConvert", - "PettyPaintCountFiles", - "PettyPaintEnsureDirectory", - "PettyPaintExec", - "PettyPaintFakeConvert", - "PettyPaintFileExists", - "PettyPaintImageColorsToMasks", - "PettyPaintImageCompositeMasked", - "PettyPaintImageDims", - "PettyPaintImageMaskCropper", - "PettyPaintImagePlacement", - "PettyPaintImageSave", - "PettyPaintImageStore", - "PettyPaintImageToMask", - "PettyPaintImagesToMasks", - "PettyPaintJsonMap", - "PettyPaintJsonRead", - "PettyPaintJsonReadArray", - "PettyPaintKSampler", - "PettyPaintKSamplerAdvanced", - "PettyPaintLoRAStack", - "PettyPaintLoadImage", - "PettyPaintLoadImageMasks", - "PettyPaintLoadImages", - "PettyPaintMap", - "PettyPaintMasksToImages", - "PettyPaintNot", - "PettyPaintPassThroughNode", - "PettyPaintProcessor", - "PettyPaintRemoveAddText", - "PettyPaintSDTurboScheduler", - "PettyPaintStoryImage", - "PettyPaintText", - "PettyPaintTexts_to_Conditioning", - "PettyPaintToJson", - "PettyPaintVAEDecode", - "SkippableVAEEncode" - ], - { - "title_aux": "petty-paint-comfyui-node" - } - ], - "https://github.com/meshmesh-io/ComfyUI-MeshMesh": [ - [ - "ColorPicker", - "MasksToColoredMasks" - ], - { - "title_aux": "ComfyUI-MeshMesh" - } - ], - "https://github.com/meshmesh-io/mm-comfyui-loopback": [ - [ - "Loop", - "LoopEnd", - "LoopEnd_SEGIMAGE", - "LoopStart", - "LoopStart_SEGIMAGE" - ], - { - "title_aux": "mm-comfyui-loopback" - } - ], - "https://github.com/meshmesh-io/mm-comfyui-megamask": [ - [ - "ColorListMaskToImage", - "FlattenAndCombineMaskImages" - ], - { - "title_aux": "mm-comfyui-megamask" - } - ], - "https://github.com/metal3d/ComfyUI_Human_Parts": [ - [ - "HumanParts" - ], - { - "title_aux": "Human Parts Detector" - } - ], - "https://github.com/metncelik/comfyui_met_suite": [ - [ - "BBOXPadding", - "BBOXResize", - "ImageResizeKeepRatio", - "PrimitiveBBOX", - "RaiseError" - ], - { - "title_aux": "comfyui_met_suite" - } - ], - "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext": [ - [ - "Add zSNR Sigma max", - "ConcatSigmas", - "CosineScheduler", - "GaussianScheduler", - "InvertSigmas", - "LogNormal Scheduler", - "OffsetSigmas", - "PerpNegScheduledCFGGuider", - "ScheduledCFGGuider" - ], - { - "title_aux": "ComfyUI-ScheduledGuider-Ext" - } - ], - "https://github.com/mgfxer/ComfyUI-FrameFX": [ - [ - "DynamicAnimatedWeightsHelper", - "EdgeFXSourceImages", - "FlorencePromptTravelHelper", - "LivePromptInterpolation", - "MaskSequenceHelper", - "PromptStackManager", - "PromptTravelHelper" - ], - { - "author": "mgfxer", - "description": "This extension provides various frame and mask sequence manipulation tools for animation workflows.", - "nickname": "FrameFX \ud83d\udcab", - "title": "FrameFX", - "title_aux": "ComfyUI-FrameFX" - } - ], - "https://github.com/miaoshouai/ComfyUI-Miaoshouai-Tagger": [ - [ - "Miaoshouai_Caption_Analyzer", - "Miaoshouai_Flux_CLIPTextEncode", - "Miaoshouai_SaveTags", - "Miaoshouai_Tagger" - ], - { - "title_aux": "ComfyUI-Miaoshouai-Tagger" - } - ], - "https://github.com/microbote/ComfyUI-StyledCLIPTextEncode": [ - [ - "StyledCLIPTextEncode" - ], - { - "title_aux": "StyledCLIPTextEncode" - } - ], - "https://github.com/mihaiiancu/ComfyUI_Inpaint": [ - [ - "InpaintMediapipe" - ], - { - "title_aux": "mihaiiancu/Inpaint" - } - ], - "https://github.com/mikebilly/Transparent-background-comfyUI": [ - [ - "Transparentbackground RemBg" - ], - { - "title_aux": "Transparent-background-comfyUI" - } - ], - "https://github.com/mikkel/ComfyUI-text-overlay": [ - [ - "Image Text Overlay" - ], - { - "title_aux": "ComfyUI - Text Overlay Plugin" - } - ], - "https://github.com/mikkel/comfyui-mask-boundingbox": [ - [ - "Mask Bounding Box" - ], - { - "title_aux": "ComfyUI - Mask Bounding Box" - } - ], - "https://github.com/mingsky-ai/ComfyUI-MingNodes": [ - [ - "AddWaterMarkNode", - "AdjustBrightnessContrastSaturationNode", - "BaiduTranslateNode", - "ColorBalanceNode", - "ConvertGrayChannelNode", - "HSLColorNode", - "HighlightShadowBrightnessNode", - "ImitationHueNode", - "LightShapeNode", - "RemoveWatermarkNode" - ], - { - "title_aux": "ComfyUI-MingNodes" - } - ], - "https://github.com/mira-6/comfyui-sasolver": [ - [ - "SamplerSASolver", - "SamplerSASolverExperimental" - ], - { - "title_aux": "comfyui-sasolver" - } - ], - "https://github.com/mirabarukaso/ComfyUI_Mira": [ - [ - "BooleanListInterpreter1", - "BooleanListInterpreter4", - "BooleanListInterpreter8", - "CanvasCreatorAdvanced", - "CanvasCreatorBasic", - "CanvasCreatorSimple", - "CreateMaskWithCanvas", - "CreateNestedPNGMask", - "CreateSimpleMask", - "CreateTillingPNGMask", - "CreateWatermarkRemovalMask", - "EightBooleanTrigger", - "EightFloats", - "EvenOrOdd", - "EvenOrOddList", - "FloatListInterpreter1", - "FloatListInterpreter4", - "FloatListInterpreter8", - "FloatMultiplication", - "FourBooleanTrigger", - "FourFloats", - "FunctionSelectAuto", - "FunctionSwap", - "ImageBrightness", - "ImageColorTransferMira", - "ImageContrast", - "ImageGamma", - "ImageGrayscale", - "ImageHUE", - "ImageRGBChannel", - "ImageSaturation", - "ImageSharpness", - "ImageToneCurve", - "IntMultiplication", - "IntSubtraction", - "IntToFloatMultiplication", - "LoRALoaderWithNameStacker", - "LogicNot", - "NoneToZero", - "NumeralToString", - "OneFloat", - "PngColorMasksToMaskList", - "PngColorMasksToRGB", - "PngColorMasksToString", - "PngColorMasksToStringList", - "PngRectanglesToMask", - "PngRectanglesToMaskList", - "RandomNestedLayouts", - "RandomTillingLayouts", - "SN74HC1G86", - "SN74HC86", - "SN74LVC1G125", - "SeedGeneratorMira", - "SingleBooleanTrigger", - "SixBooleanTrigger", - "StepsAndCfg", - "TextBox", - "TextCombinerSix", - "TextCombinerTwo", - "TextLoopCombiner", - "TextSwitcherThreeWays", - "TextSwitcherTwoWays", - "TextWildcardSeprator", - "TextWithBooleanSwitchAndCommonTextInput", - "TwoBooleanTrigger", - "TwoFloats", - "UpscaleImageByModelThenResize" - ], - { - "title_aux": "ComfyUI_Mira" - } - ], - "https://github.com/misterjoessef/MLTask_ComfyUI": [ - [ - "FacebookPosterData", - "InstagramPosterData", - "LinkedinPosterData", - "MLTaskUtilsTextImageGenerator", - "PinterestPosterData", - "SocialManMediaToPoster", - "SocialManPostData", - "SocialManPoster", - "TiktokPosterData", - "TwitterPosterData", - "YoutubePosterData" - ], - { - "title_aux": "MLTask_ComfyUI" - } - ], - "https://github.com/mittimi/ComfyUI_mittimiLoadPreset2": [ - [ - "CombineParamDataMittimi", - "LoadSetParamMittimi", - "SaveImageParamMittimi", - "SaveParamToPresetMittimi" - ], - { - "author": "mittimi", - "description": "This node can easily switch between models and prompts by saving presets.", - "nickname": "mittimiLoadPreset2", - "title": "mittimiLoadPreset2", - "title_aux": "ComfyUI_mittimiLoadPreset2" - } - ], - "https://github.com/mittimi/ComfyUI_mittimiRecalculateSize": [ - [ - "RecalculateSizeMittimi01" - ], - { - "author": "mittimi", - "description": "Switch between vertical and horizontal values with a single button.", - "nickname": "mittimiWidthHeight", - "title": "mittimiWidthHeight", - "title_aux": "ComfyUI_mittimiRecalculateSize" - } - ], - "https://github.com/mittimi/ComfyUI_mittimiWidthHeight": [ - [ - "WidthHeightMittimi01" - ], - { - "author": "mittimi", - "description": "Switch between vertical and horizontal values with a single button.", - "nickname": "mittimiWidthHeight", - "title": "mittimiWidthHeight", - "title_aux": "ComfyUI_mittimiWidthHeight" - } - ], - "https://github.com/modelscope/comfyscope": [ - [ - "DashScopeFLUXAPI" - ], - { - "title_aux": "Dashscope FLUX API for ComfyUI" - } - ], - "https://github.com/modusCell/ComfyUI-dimension-node-modusCell": [ - [ - "DimensionProviderFree modusCell", - "DimensionProviderRatio modusCell", - "String Concat modusCell" - ], - { - "title_aux": "Preset Dimensions" - } - ], - "https://github.com/morino-kumasan/comfyui-toml-prompt": [ - [ - "IntSelector", - "LatentSelector", - "MultipartCLIPTextEncode", - "MultipleLoraTagLoader", - "PromptLoader", - "StringConcat", - "StringSelector", - "StringSub", - "StringViewer", - "SummaryReader", - "TomlPromptDecode" - ], - { - "title_aux": "comfyui-toml-prompt" - } - ], - "https://github.com/moustafa-nasr/ComfyUI-SimpleLogger": [ - [ - "Log Image" - ], - { - "title_aux": "ComfyUI-SimpleLogger" - } - ], - "https://github.com/moyi7712/ComfyUI_Seamless_Patten": [ - [ - "SeamlessApply", - "SeamlessKSampler", - "SeamlessKSamplerAdvanced", - "SeamlessVae" - ], - { - "title_aux": "ComfyUI_Seamless_Patten" - } - ], - "https://github.com/mrchipset/ComfyUI-SaveImageS3": [ - [ - "SaveImageS3" - ], - { - "author": "Mr.Chip", - "description": "This extension offers a custom node to save image to S3-compatible oss.", - "nickname": "SaveImageS3", - "title": "SaveImageS3", - "title_aux": "ComfyUI-SaveImageS3" - } - ], - "https://github.com/mrhan1993/ComfyUI-Fooocus": [ - [ - "AlignYourStepsScheduler", - "BasicScheduler", - "CLIPLoader", - "CLIPMergeSimple", - "CLIPSave", - "CLIPSetLastLayer", - "CLIPTextEncode", - "CLIPTextEncodeSDXL", - "CLIPTextEncodeSDXLRefiner", - "CLIPVisionEncode", - "CLIPVisionLoader", - "Canny", - "CheckpointLoader", - "CheckpointLoaderSimple", - "CheckpointSave", - "ClearVram", - "ConditioningAverage", - "ConditioningCombine", - "ConditioningConcat", - "ConditioningSetArea", - "ConditioningSetAreaPercentage", - "ConditioningSetMask", - "ConditioningSetTimestepRange", - "ConditioningZeroOut", - "ControlNetApply", - "ControlNetApplyAdvanced", - "ControlNetLoader", - "CropMask", - "DiffControlNetLoader", - "DiffusersLoader", - "DualCLIPLoader", - "EmptyImage", - "EmptyLatentImage", - "EnhanceControl", - "EnhanceControls", - "ExponentialScheduler", - "FeatherMask", - "FlipSigmas", - "FooocusSampler", - "FooocusSettings", - "FreeU", - "FreeU_V2", - "GLIGENLoader", - "GLIGENTextBoxApply", - "GrowMask", - "HyperTile", - "HypernetworkLoader", - "ImageBatch", - "ImageBlend", - "ImageBlur", - "ImageColorToMask", - "ImageCompositeMasked", - "ImageCrop", - "ImageInvert", - "ImageOnlyCheckpointLoader", - "ImageOnlyCheckpointSave", - "ImagePadForOutpaint", - "ImagePrompts", - "ImageQuantize", - "ImageScale", - "ImageScaleBy", - "ImageScaleToTotalPixels", - "ImageSharpen", - "ImageToMask", - "ImageUpscaleWithModel", - "InpaintModelConditioning", - "InpaintOutpaint", - "InvertMask", - "JoinImageWithAlpha", - "KSampler", - "KSamplerAdvanced", - "KSamplerSelect", - "KarrasScheduler", - "LatentAdd", - "LatentBatch", - "LatentBatchSeedBehavior", - "LatentBlend", - "LatentComposite", - "LatentCompositeMasked", - "LatentCrop", - "LatentFlip", - "LatentFromBatch", - "LatentInterpolate", - "LatentMultiply", - "LatentRotate", - "LatentSubtract", - "LatentUpscale", - "LatentUpscaleBy", - "LoadImage", - "LoadImageMask", - "LoadLatent", - "LoraLoader", - "LoraLoaderModelOnly", - "LoraStacks", - "MaskComposite", - "MaskToImage", - "ModelMergeAdd", - "ModelMergeBlocks", - "ModelMergeSimple", - "ModelMergeSubtract", - "ModelSamplingContinuousEDM", - "ModelSamplingDiscrete", - "PatchModelAddDownscale", - "PerpNeg", - "PhotoMakerEncode", - "PhotoMakerLoader", - "PolyexponentialScheduler", - "PorterDuffImageComposite", - "PreviewImage", - "RebatchImages", - "RebatchLatents", - "RepeatImageBatch", - "RepeatLatentBatch", - "RescaleCFG", - "SDTurboScheduler", - "SD_4XUpscale_Conditioning", - "SVD_img2vid_Conditioning", - "SamplerCustom", - "SamplerDPMPP_2M_SDE", - "SamplerDPMPP_SDE", - "SamplerTCD", - "SaveAnimatedPNG", - "SaveAnimatedWEBP", - "SaveImage", - "SaveLatent", - "SelfAttentionGuidance", - "SetLatentNoiseMask", - "SolidMask", - "SplitImageWithAlpha", - "SplitSigmas", - "StableZero123_Conditioning", - "StableZero123_Conditioning_Batched", - "StyleModelApply", - "StyleModelLoader", - "TomePatchModel", - "UNETLoader", - "UpscaleModelLoader", - "UpscaleVary", - "VAEDecode", - "VAEDecodeTiled", - "VAEEncode", - "VAEEncodeForInpaint", - "VAEEncodeTiled", - "VAELoader", - "VAESave", - "VPScheduler", - "VideoLinearCFGGuidance", - "unCLIPCheckpointLoader", - "unCLIPConditioning" - ], - { - "author": "Konie", - "title_aux": "ComfyUI-Fooocus" - } - ], - "https://github.com/muhammederem/blip-comfyui": [ - [ - "Blip Processor Node", - "List to Text Node" - ], - { - "title_aux": "BLIP Vision-Language Model Integration" - } - ], - "https://github.com/mullakhmetov/comfyui_dynamic_util_nodes": [ - [ - "ConcatStrings", - "FormatString", - "GetFiles", - "LoadImageByPath", - "StringOutput" - ], - { - "title_aux": "comfyui_dynamic_util_nodes" - } - ], - "https://github.com/muxueChen/ComfyUI_NTCosyVoice": [ - [ - "NTCosyVoiceCrossLingualSampler", - "NTCosyVoiceInstruct2Sampler", - "NTCosyVoiceZeroShotSampler" - ], - { - "title_aux": "CosyVoice2 for ComfyUI" - } - ], - "https://github.com/muzi12888/ComfyUI-PoseKeypoint-Mask": [ - [ - "Image Brightness", - "Openpose Keypoint Mask" - ], - { - "title_aux": "PoseKeypoint Mask" - } - ], - "https://github.com/my-opencode/ComfyUI_IndustrialMagick": [ - [ - "IndustrialMagick", - "IndustrialMagickImageIngest" - ], - { - "title_aux": "ComfyUI_IndustrialMagick" - } - ], - "https://github.com/my-opencode/ComfyUI_KSamplerTimer": [ - [ - "KSamplerTimer" - ], - { - "author": "Ludovic Anterieur", - "description": "This extension provides a wrapper of the native KSampler which outputs generation time.", - "nickname": "\u23f1", - "title": "KSampler (timer)", - "title_aux": "ComfyUI_KSamplerTimer" - } - ], - "https://github.com/myshell-ai/ComfyUI-ShellAgent-Plugin": [ - [ - "ShellAgentPluginInputAudio", - "ShellAgentPluginInputBoolean", - "ShellAgentPluginInputFloat", - "ShellAgentPluginInputImage", - "ShellAgentPluginInputInteger", - "ShellAgentPluginInputText", - "ShellAgentPluginInputVideo", - "ShellAgentPluginOutputBoolean", - "ShellAgentPluginOutputFloat", - "ShellAgentPluginOutputInteger", - "ShellAgentPluginOutputText", - "ShellAgentPluginSaveAudio", - "ShellAgentPluginSaveAudios", - "ShellAgentPluginSaveImage", - "ShellAgentPluginSaveImages", - "ShellAgentPluginSaveVideoVHS" - ], - { - "author": "MyShell", - "description": "", - "title": "comfyui-shellagent-plugin", - "title_aux": "ComfyUI-ShellAgent-Plugin" - } - ], - "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL": [ - [ - "FastLatentToImage" - ], - { - "title_aux": "ComfyUI_FastVAEDecorder_SDXL" - } - ], - "https://github.com/nagolinc/comfyui_openai_node": [ - [ - "OpenAINode" - ], - { - "title_aux": "comfyui_openai_node" - } - ], - "https://github.com/natto-maki/ComfyUI-NegiTools": [ - [ - "NegiTools_CompositeImages", - "NegiTools_DepthEstimationByMarigold", - "NegiTools_DetectFaceRotationForInpainting", - "NegiTools_ImageProperties", - "NegiTools_LatentProperties", - "NegiTools_NoiseImageGenerator", - "NegiTools_OpenAiDalle3", - "NegiTools_OpenAiGpt", - "NegiTools_OpenAiGpt4v", - "NegiTools_OpenAiTranslate", - "NegiTools_OpenPoseToPointList", - "NegiTools_PointListToMask", - "NegiTools_RandomImageLoader", - "NegiTools_SaveImageToDirectory", - "NegiTools_SeedGenerator", - "NegiTools_StereoImageGenerator", - "NegiTools_StringFunction" - ], - { - "title_aux": "ComfyUI-NegiTools" - } - ], - "https://github.com/nchenevey1/comfyui-gimp-nodes": [ - [ - "NC_LoadImageGIMP", - "NC_LoadMaskGIMP", - "NC_SendImageDimsWebSocketGIMP", - "NC_SendImageWebSocketGIMP" - ], - { - "title_aux": "comfyui-gimp-nodes" - } - ], - "https://github.com/neph1/comfyui-smooth-step-lora-loader": [ - [ - "Smooth_Step_Lora_Loader" - ], - { - "title_aux": "comfyui-smooth-step-lora-loader" - } - ], - "https://github.com/neverbiasu/ComfyUI-Dashscope": [ - [ - "DashscopeEmoCaller", - "DashscopeLLMLoader", - "DashscopeModelCaller", - "DashscopeOCRCaller", - "DashscopeVLMLoader" - ], - { - "title_aux": "ComfyUI-Dashscope" - } - ], - "https://github.com/neverbiasu/ComfyUI-Image-Captioner": [ - [ - "ImageCaptioner" - ], - { - "title_aux": "ComfyUI-Image-Captioner" - } - ], - "https://github.com/neverbiasu/ComfyUI-SAM2": [ - [ - "GroundingDinoModelLoader (segment anything2)", - "GroundingDinoSAM2Segment (segment anything2)", - "InvertMask (segment anything)", - "IsMaskEmpty", - "SAM2ModelLoader (segment anything2)" - ], - { - "title_aux": "ComfyUI SAM2(Segment Anything 2)" - } - ], - "https://github.com/neverbiasu/ComfyUI-StyleShot": [ - [ - "StyleShotApply" - ], - { - "title_aux": "ComfyUI-StyleShot" - } - ], - "https://github.com/ngosset/ComfyUI-ImageSimilarity": [ - [ - "Image Similarity" - ], - { - "title_aux": "ImageSimilarity" - } - ], - "https://github.com/nicehero/comfyui-SegGPT": [ - [ - "SegGPT" - ], - { - "title_aux": "comfyui-SegGPT" - } - ], - "https://github.com/nickve28/ComfyUI-Nich-Utils": [ - [ - "Image from Dir Selector (Nich)", - "Select Text with Regular Expression (Nich)" - ], - { - "title_aux": "ComfyUI Nich Utils" - } - ], - "https://github.com/nicofdga/DZ-FaceDetailer": [ - [ - "DZ_Face_Detailer" - ], - { - "title_aux": "DZ-FaceDetailer" - } - ], - "https://github.com/niknah/ComfyUI-F5-TTS": [ - [ - "F5TTSAudio", - "F5TTSAudioInputs" - ], - { - "title_aux": "ComfyUI-F5-TTS" - } - ], - "https://github.com/niknah/ComfyUI-Hunyuan-3D-2": [ - [ - "Hunyuan3D2ImageTo3D" - ], - { - "title_aux": "ComfyUI Hunyuan-3D-2" - } - ], - "https://github.com/nilor-corp/nilor-nodes": [ - [ - "Nilor Count Images In Directory", - "Nilor Int To List Of Bools", - "Nilor Interpolated Float List", - "Nilor Inverse Map Float List", - "Nilor List of Ints", - "Nilor One Minus Float List", - "Nilor Output Filename String", - "Nilor Remap Float List", - "Nilor Repeat & Trim Image Batch", - "Nilor Repeat, Shuffle, & Trim Image Batch", - "Nilor Save EXR Arbitrary", - "Nilor Save Image To HF Dataset", - "Nilor Save Video To HF Dataset", - "Nilor Select Index From List", - "Nilor Shuffle Image Batch", - "Nilor n Fractions of Int" - ], - { - "title_aux": "Nilor Nodes by Nilor Corp" - } - ], - "https://github.com/ningxiaoxiao/comfyui-NDI": [ - [ - "NDI_LoadImage", - "NDI_SendImage" - ], - { - "title_aux": "comfyui-NDI" - } - ], - "https://github.com/nirbhay-faaya/ImgProcessing_ComfyUI": [ - [ - "ImageConcat", - "ImageCropMultEight", - "ImageCut", - "LightingPreprocessor" - ], - { - "title_aux": "ImgProcessing_ComfyUI" - } - ], - "https://github.com/nirex0/ComfyUI_pytorch_openpose": [ - [ - "pytorch_openpose" - ], - { - "title_aux": "ComfyUI_pytorch_openpose" - } - ], - "https://github.com/nisimjoseph/ComfyUI_OpenAI-Prompter": [ - [ - "OpenAI Prompt Generator" - ], - { - "title_aux": "ComfyUI OpenAI Prompter" - } - ], - "https://github.com/nkchocoai/ComfyUI-Dart": [ - [ - "DanbooruTagsTransformerBanTagsFromRegex", - "DanbooruTagsTransformerComposePrompt", - "DanbooruTagsTransformerComposePromptV2", - "DanbooruTagsTransformerDecode", - "DanbooruTagsTransformerDecodeBySplitedParts", - "DanbooruTagsTransformerGenerate", - "DanbooruTagsTransformerGenerateAdvanced", - "DanbooruTagsTransformerGenerationConfig", - "DanbooruTagsTransformerGetAspectRatio", - "DanbooruTagsTransformerLoader", - "DanbooruTagsTransformerRearrangedByAnimagine", - "DanbooruTagsTransformerRemoveTagToken" - ], - { - "title_aux": "ComfyUI-Dart" - } - ], - "https://github.com/nkchocoai/ComfyUI-PromptUtilities": [ - [ - "PromptUtilitiesConstString", - "PromptUtilitiesConstStringMultiLine", - "PromptUtilitiesFormatString", - "PromptUtilitiesJoinStringList", - "PromptUtilitiesLoadPreset", - "PromptUtilitiesLoadPresetAdvanced", - "PromptUtilitiesPromptWeight", - "PromptUtilitiesRandomPreset", - "PromptUtilitiesRandomPresetAdvanced", - "PromptUtilitiesReplaceOrInsertTag", - "PromptUtilitiesRoundPromptWeight", - "PromptUtilitiesSampleTags", - "PromptUtilitiesSampleTagsWithWeight" - ], - { - "title_aux": "ComfyUI-PromptUtilities" - } - ], - "https://github.com/nkchocoai/ComfyUI-SaveImageWithMetaData": [ - [ - "CreateExtraMetaData", - "SaveImageWithMetaData" - ], - { - "title_aux": "ComfyUI-SaveImageWithMetaData" - } - ], - "https://github.com/nkchocoai/ComfyUI-SizeFromPresets": [ - [ - "EmptyLatentImageFromPresetsSD15", - "EmptyLatentImageFromPresetsSDXL", - "GetSimilarResolution", - "GetSimilarResolutionEmptyLatent", - "RandomEmptyLatentImageFromPresetsSD15", - "RandomEmptyLatentImageFromPresetsSDXL", - "RandomSizeFromPresetsSD15", - "RandomSizeFromPresetsSDXL", - "SizeFromPresetsSD15", - "SizeFromPresetsSDXL" - ], - { - "title_aux": "ComfyUI-SizeFromPresets" - } - ], - "https://github.com/nkchocoai/ComfyUI-TextOnSegs": [ - [ - "CalcMaxFontSize", - "ExtractDominantColor", - "GetComplementaryColor", - "SegsToRegion", - "TextOnSegsFloodFill" - ], - { - "title_aux": "ComfyUI-TextOnSegs" - } - ], - "https://github.com/noarche/sd-webui-color-enhance": [ - [ - "MMakerColorBlend", - "MMakerColorEnhance" - ], - { - "title_aux": "noarche/Color Enhance" - } - ], - "https://github.com/noembryo/ComfyUI-noEmbryo": [ - [ - "PromptTermList1", - "PromptTermList2", - "PromptTermList3", - "PromptTermList4", - "PromptTermList5", - "PromptTermList6" - ], - { - "author": "noEmbryo", - "description": "Some useful nodes for ComfyUI", - "nickname": "noEmbryo", - "title": "noEmbryo nodes", - "title_aux": "noEmbryo nodes" - } - ], - "https://github.com/nofunstudio/Node_Fun_ComfyUI": [ - [ - "LayeredInfiniteZoom", - "Replicate flux 1.1 pro ultra", - "ReplicateAPI_flux_1_1_pro_ultra", - "ReplicateAPI_flux_fill_pro" - ], - { - "title_aux": "Node_Fun_ComfyUI" - } - ], - "https://github.com/nosiu/comfyui-instantId-faceswap": [ - [ - "AngleFromFace", - "ComposeRotated", - "ControlNetInstantIdApply", - "FaceEmbed", - "FaceEmbedCombine", - "InstantIdAdapterApply", - "InstantIdAndControlnetApply", - "KpsMaker", - "LoadInsightface", - "LoadInstantIdAdapter", - "PreprocessImage", - "PreprocessImageAdvanced", - "RotateImage" - ], - { - "title_aux": "ComfyUI InstantID Faceswapper" - } - ], - "https://github.com/noxinias/ComfyUI_NoxinNodes": [ - [ - "NoxinChime", - "NoxinPromptLoad", - "NoxinPromptSave", - "NoxinScaledResolution", - "NoxinSimpleMath", - "NoxinSplitPrompt" - ], - { - "title_aux": "ComfyUI_NoxinNodes" - } - ], - "https://github.com/nsdtcloud3d/ComfyUI-3D-Convert": [ - [ - "ConvertTo3DFormat", - "Load3DConvertAPIKEY", - "Load3DFile" - ], - { - "title_aux": "ComfyUI-3D-Convert" - } - ], - "https://github.com/ntc-ai/ComfyUI-DARE-LoRA-Merge": [ - [ - "Apply LoRA", - "DARE Merge LoRA Stack", - "Save LoRA" - ], - { - "title_aux": "ComfyUI - Apply LoRA Stacker with DARE" - } - ], - "https://github.com/nuanarchy/ComfyUI-NuA-BIRD": [ - [ - "Bird_Deblurring_NuA", - "Bird_Denoising_NuA", - "Bird_Inpainting_NuA", - "Bird_Loader_NuA", - "Bird_Non_Uniform_Deblurring_NuA", - "Bird_Super_Resolution_NuA" - ], - { - "title_aux": "ComfyUI-NuA-BIRD" - } - ], - "https://github.com/nuanarchy/ComfyUI-NuA-FlashFace": [ - [ - "FlashFace_Loader_NuA", - "FlashFace_Sampler_NuA" - ], - { - "title_aux": "ComfyUI-NuA-FlashFace" - } - ], - "https://github.com/nullquant/ComfyUI-BrushNet": [ - [ - "BlendInpaint", - "BrushNet", - "BrushNetLoader", - "CutForInpaint", - "PowerPaint", - "PowerPaintCLIPLoader", - "RAUNet", - "Terminal" - ], - { - "author": "nullquant", - "description": "These are custom nodes for ComfyUI native implementation of BrushNet, PowerPaint and RAUNet models", - "nickname": "BrushName nodes", - "title": "BrushNet", - "title_aux": "BrushNet" - } - ], - "https://github.com/numz/ComfyUI-FlowChain": [ - [ - "WorkflowLipSync" - ], - { - "title_aux": "ComfyUI-FlowChain" - } - ], - "https://github.com/nux1111/ComfyUI_NetDist_Plus": [ - [ - "CombineImageBatch", - "ConditioningFromBase64(Nux)", - "ConditioningToBase64(Nux)", - "ExtractBase64FromImage(Nux)", - "ExtractBase64FromImageUpload(Nux)", - "FetchRemote", - "FetchRemoteWithExtras(Nux)", - "LatentToBase64(Nux)", - "LoadCurrentWorkflowJSON", - "LoadDiskWorkflowJSON", - "LoadImageUrl", - "LoadLatentFromBase64(Nux)", - "LoadLatentNumpy", - "LoadLatentUrl", - "LoadWorkflowJSON", - "RemoteApplyValues(Nux)", - "RemoteApplyValuesMulti(Nux)", - "RemoteChainEnd", - "RemoteChainStart", - "RemoteChainStart(Nux)", - "RemoteQueueSimple", - "RemoteQueueSimple(Nux)", - "RemoteQueueWorker", - "SaveDiskWorkflowJSON", - "SaveImageUrl", - "SaveImageWithBase64(Nux)", - "SaveLatentNumpy" - ], - { - "title_aux": "ComfyUI_NetDist_Plus" - } - ], - "https://github.com/okgo4/ComfyUI-Mosaic-Mask": [ - [ - "MosaicMask" - ], - { - "title_aux": "ComfyUI-Mosaic-Mask" - } - ], - "https://github.com/olduvai-jp/ComfyUI-HfLoader": [ - [ - "Lora Loader From HF" - ], - { - "title_aux": "ComfyUI-HfLoader" - } - ], - "https://github.com/oleksandr612/ComfyUI-Counter": [ - [ - "Simple Counter" - ], - { - "title_aux": "ComfyUI-Counter" - } - ], - "https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92": [ - [ - "CLIPStringEncode _O", - "Chat completion _O", - "ChatGPT Simple _O", - "ChatGPT _O", - "ChatGPT compact _O", - "Chat_Completion _O", - "Chat_Message _O", - "Chat_Message_fromString _O", - "Concat Text _O", - "ConcatRandomNSP_O", - "Debug String _O", - "Debug Text _O", - "Debug Text route _O", - "Edit_image _O", - "Equation1param _O", - "Equation2params _O", - "GetImage_(Width&Height) _O", - "GetLatent_(Width&Height) _O", - "ImageScaleFactor _O", - "ImageScaleFactorSimple _O", - "LatentUpscaleFactor _O", - "LatentUpscaleFactorSimple _O", - "LatentUpscaleMultiply", - "Note _O", - "QOL Split String", - "RandomNSP _O", - "Replace Text _O", - "String _O", - "Text _O", - "Text2Image _O", - "Trim Text _O", - "VAEDecodeParallel _O", - "combine_chat_messages _O", - "compine_chat_messages _O", - "concat Strings _O", - "create image _O", - "create_image _O", - "debug Completeion _O", - "debug messages_O", - "float _O", - "floatToInt _O", - "floatToText _O", - "int _O", - "intToFloat _O", - "load_openAI _O", - "replace String _O", - "replace String advanced _O", - "saveTextToFile _O", - "seed _O", - "selectLatentFromBatch _O", - "string2Image _O", - "trim String _O", - "variation_image _O" - ], - { - "title_aux": "Quality of life Suit:V2" - } - ], - "https://github.com/opvelll/ComfyUI_TextListProduct": [ - [ - "ProductedString", - "PromptPairConcat", - "TextListProduct", - "TextListProductWithSingleA", - "TextListProductWithSingleB", - "TextListProductWithSingleBoth" - ], - { - "title_aux": "Comfy UI Text List Product" - } - ], - "https://github.com/osi1880vr/prompt_quill_comfyui": [ - [ - "PromptQuillGenerate", - "PromptQuillGenerateConditioning", - "PromptQuillSail", - "PromptQuillSailConditioning" - ], - { - "title_aux": "ComfyUI_Prompt-Quill" - } - ], - "https://github.com/ostris/ostris_nodes_comfyui": [ - [ - "LLM Pipe Loader - Ostris", - "LLM Prompt Upsampling - Ostris", - "One Seed - Ostris", - "Text Box - Ostris" - ], - { - "nodename_pattern": "- Ostris$", - "title_aux": "Ostris Nodes ComfyUI" - } - ], - "https://github.com/ownimage/ComfyUI-ownimage": [ - [ - "Caching Image Loader" - ], - { - "title_aux": "ComfyUI-ownimage" - } - ], - "https://github.com/oyvindg/ComfyUI-TrollSuite": [ - [ - "BinaryImageMask", - "ImagePadding", - "LoadLastImage", - "RandomMask", - "TransparentImage" - ], - { - "title_aux": "ComfyUI-TrollSuite" - } - ], - "https://github.com/oztrkoguz/ComfyUI_StoryCreator": [ - [ - "Kosmos2SamplerSimple2", - "KosmosLoader2", - "StoryLoader", - "StorySamplerSimple", - "Write2" - ], - { - "title_aux": "ComfyUI StoryCreater" - } - ], - "https://github.com/palant/image-resize-comfyui": [ - [ - "ImageResize" - ], - { - "title_aux": "Image Resize for ComfyUI" - } - ], - "https://github.com/pamparamm/ComfyUI-ppm": [ - [ - "AttentionCouplePPM", - "CFGLimiterGuider", - "CFGPPSamplerSelect", - "CLIPMicroConditioning", - "CLIPNegPip", - "CLIPTextEncodeBREAK", - "CLIPTokenCounter", - "ConditioningZeroOutCombine", - "ConvertTimestepToSigma", - "DynSamplerSelect", - "DynamicThresholdingSimplePost", - "EmptyLatentImageAR", - "FreeU2PPM", - "Guidance Limiter", - "LatentOperationTonemapLuminance", - "LatentToMaskBB", - "LatentToWidthHeight", - "PPMSamplerSelect", - "RescaleCFGPost" - ], - { - "title_aux": "ComfyUI-ppm" - } - ], - "https://github.com/pamparamm/ComfyUI-vectorscope-cc": [ - [ - "DiffusionCG", - "NormalizeLatent", - "VectorscopeCC" - ], - { - "title_aux": "ComfyUI Vectorscope CC" - } - ], - "https://github.com/pamparamm/sd-perturbed-attention": [ - [ - "PerturbedAttention", - "SlidingWindowGuidanceAdvanced", - "SmoothedEnergyGuidanceAdvanced", - "TRTAttachPag", - "TRTPerturbedAttention" - ], - { - "title_aux": "sd-perturbed-attention" - } - ], - "https://github.com/pandaer119/ComfyUI_pandai": [ - [ - "pandai_dsk_node" - ], - { - "title_aux": "ComfyUI_pandai" - } - ], - "https://github.com/pants007/comfy-pants": [ - [ - "CLIPTextEncodeAIO", - "Image Make Square" - ], - { - "title_aux": "pants" - } - ], - "https://github.com/patriciogonzalezvivo/comfyui_glslnodes": [ - [ - "float", - "glslBuffers", - "glslEditor", - "glslEditorPro", - "glslUniforms", - "glslViewer", - "int", - "vec2", - "vec2 (pos)", - "vec3", - "vec3 (pos)", - "vec4", - "vec4 (color)" - ], - { - "author": "Patricio Gonzalez Vivo", - "description": "A set of nodes to work with GLSL shaders", - "nickname": "GLSL Nodes", - "title": "GLSL Nodes", - "title_aux": "GLSL Nodes" - } - ], - "https://github.com/paulo-coronado/comfy_clip_blip_node": [ - [ - "CLIPTextEncodeBLIP", - "CLIPTextEncodeBLIP-2", - "Example" - ], - { - "title_aux": "comfy_clip_blip_node" - } - ], - "https://github.com/pbpbpb2705/ComfyUI-LyraVSIH": [ - [ - "MultiObjectMask" - ], - { - "title_aux": "ComfyUI-LyraVSIH" - } - ], - "https://github.com/pharmapsychotic/comfy-cliption": [ - [ - "CLIPtionBeamSearch", - "CLIPtionGenerate", - "CLIPtionLoader" - ], - { - "title_aux": "comfy-cliption" - } - ], - "https://github.com/phazei/ConfyUI-node-prompt-stash-saver": [ - [ - "PromptStashManager", - "PromptStashSaver" - ], - { - "title_aux": "Prompt Stash Saver Node for ComfyUI" - } - ], - "https://github.com/philiprodriguez/ComfyUI-HunyuanImageLatentToVideoLatent": [ - [ - "HunyuanImageLatentToVideoLatent" - ], - { - "title_aux": "ComfyUI-HunyuanImageLatentToVideoLatent" - } - ], - "https://github.com/philz1337x/ComfyUI-ClarityAI": [ - [ - "Clarity AI Upscaler" - ], - { - "title_aux": "\u2728 Clarity AI - Creative Image Upscaler and Enhancer for ComfyUI" - } - ], - "https://github.com/phuvinh010701/ComfyUI-Nudenet": [ - [ - "ApplyNudenet", - "FilterdLabel", - "NudenetModelLoader" - ], - { - "title_aux": "ComfyUI-Nudenet" - } - ], - "https://github.com/phyblas/paint-by-example_comfyui": [ - [ - "PaintbyExampleAdvanced", - "PaintbyExampleGen", - "PaintbyExampleSimple", - "PaintbyIchimatsu", - "PaintbySingleColor" - ], - { - "title_aux": "paint-by-example @ ComfyUI" - } - ], - "https://github.com/picturesonpictures/comfy_PoP": [ - [ - "AdaptiveCannyDetector_PoP", - "AnyAspectRatio", - "ConditioningMultiplier_PoP", - "ConditioningNormalizer_PoP", - "DallE3_PoP", - "EfficientAttention", - "LoadImageResizer_PoP", - "LoraStackLoader10_PoP", - "LoraStackLoader_PoP", - "VAEDecoderPoP", - "VAEEncoderPoP" - ], - { - "title_aux": "comfy_PoP" - } - ], - "https://github.com/pikenrover/ComfyUI_PRNodes": [ - [ - "CheckpointLoaderSimpleExtended", - "EmptyLatentImageScaleBy", - "ImageScaleTo", - "LoadRandomImage", - "LoraLoaderExtended", - "RandomPrompt", - "RandomPromptMixed", - "Save Image w/Metadata" - ], - { - "title_aux": "ComfyUI_PRNodes" - } - ], - "https://github.com/pkpkTech/ComfyUI-SaveAVIF": [ - [ - "SaveAvif" - ], - { - "title_aux": "ComfyUI-SaveAVIF" - } - ], - "https://github.com/pkpkTech/ComfyUI-TemporaryLoader": [ - [ - "LoadTempCheckpoint", - "LoadTempLoRA", - "LoadTempMultiLoRA" - ], - { - "title_aux": "ComfyUI-TemporaryLoader" - } - ], - "https://github.com/playbook3d/playbook3d-comfyui-nodes": [ - [ - "Beauty Pass Sequence", - "Depth Pass Sequence", - "Mask Pass Sequence", - "Outline Pass Sequence", - "Playbook Aspect Ratio Select", - "Playbook Beauty", - "Playbook Beauty Sequence", - "Playbook Boolean", - "Playbook Depth", - "Playbook Depth Sequence", - "Playbook Float", - "Playbook Image", - "Playbook LoRA Select", - "Playbook LoRA Selection", - "Playbook Mask", - "Playbook Mask Sequence", - "Playbook Number", - "Playbook Outline", - "Playbook Outline Sequence", - "Playbook Render Result", - "Playbook Seed", - "Playbook Text", - "Playbook Video" - ], - { - "title_aux": "Playbook Nodes" - } - ], - "https://github.com/plugcrypt/CRT-Nodes": [ - [ - "Boolean Transform", - "Lora Loader Str", - "Remove Trailing Comma", - "Toggle Lora Unet Blocks L1", - "Toggle Lora Unet Blocks L2" - ], - { - "author": "CRT", - "description": "Single Blocks Arguments for LoRA Training", - "title": "CRT-Nodes", - "title_aux": "CRT-Nodes" - } - ], - "https://github.com/pollockjj/ComfyUI-MultiGPU": [ - [ - "DeviceSelectorMultiGPU" - ], - { - "title_aux": "ComfyUI-MultiGPU" - } - ], - "https://github.com/portu-sim/comfyui_bmab": [ - [ - "BMAB Alpha Composit", - "BMAB Basic", - "BMAB Black And White", - "BMAB Blend", - "BMAB Clip Text Encoder SDXL", - "BMAB Conditioning To Bind", - "BMAB Context", - "BMAB ControlNet", - "BMAB ControlNet IPAdapter", - "BMAB ControlNet Openpose", - "BMAB Crop", - "BMAB Detail Anything", - "BMAB Detect And Mask", - "BMAB Detect And Paste", - "BMAB Detection Crop", - "BMAB Detector", - "BMAB Edge", - "BMAB Extractor", - "BMAB Face Detailer", - "BMAB Flux ControlNet", - "BMAB Flux Integrator", - "BMAB Google Gemini Prompt", - "BMAB Import Integrator", - "BMAB Inpaint", - "BMAB Integrator", - "BMAB KSampler", - "BMAB KSamplerHiresFix", - "BMAB KSamplerHiresFixWithUpscaler", - "BMAB KSamplerKohyaDeepShrink", - "BMAB Lama Inpaint", - "BMAB LoRA Loader", - "BMAB Load Image", - "BMAB Load Output Image", - "BMAB Masks To Images", - "BMAB Model To Bind", - "BMAB Noise Generator", - "BMAB Openpose Hand Detailer", - "BMAB Outpaint By Ratio", - "BMAB Person Detailer", - "BMAB Preview Text", - "BMAB Prompt", - "BMAB Reframe", - "BMAB Remote Access And Save", - "BMAB Remove Background", - "BMAB Resize By Person", - "BMAB Resize By Ratio", - "BMAB Resize and Fill", - "BMAB SD-WebUI API BMAB Extension", - "BMAB SD-WebUI API ControlNet", - "BMAB SD-WebUI API I2I", - "BMAB SD-WebUI API Server", - "BMAB SD-WebUI API T2I", - "BMAB SD-WebUI API T2I Hires.Fix", - "BMAB Save Image", - "BMAB SeedGenerator", - "BMAB Segment Anything", - "BMAB Simple Hand Detailer", - "BMAB Square", - "BMAB Subframe Hand Detailer", - "BMAB Text", - "BMAB ToBind", - "BMAB Upscale With Model", - "BMAB Upscaler", - "BMAB Watermark", - "BMAB Zoom Out" - ], - { - "title_aux": "comfyui_bmab" - } - ], - "https://github.com/prodogape/ComfyUI-EasyOCR": [ - [ - "Apply EasyOCR" - ], - { - "title_aux": "ComfyUI-EasyOCR" - } - ], - "https://github.com/prodogape/ComfyUI-Minio": [ - [ - "Load Image From Minio", - "Save Image To Minio", - "Set Minio Config" - ], - { - "title_aux": "Comfyui-Minio" - } - ], - "https://github.com/prodogape/ComfyUI-OmDet": [ - [ - "Apply OmDet" - ], - { - "title_aux": "ComfyUI-OmDet" - } - ], - "https://github.com/prodogape/Comfyui-Yolov8-JSON": [ - [ - "Apply Yolov8 Model", - "Apply Yolov8 Model Seg", - "Draw Labelme Json", - "Load Yolov8 Model", - "Load Yolov8 Model From Path", - "Save Labelme Json" - ], - { - "title_aux": "Comfyui-Yolov8-JSON" - } - ], - "https://github.com/pschroedl/ComfyUI-SAM2-Realtime": [ - [ - "DownloadAndLoadSAM2RealtimeModel", - "Sam2RealtimeSegmentation" - ], - { - "title_aux": "ComfyUI-SAM2-Realtime" - } - ], - "https://github.com/ptmaster/ComfyUI-Load-Diffusion-Model-to-Muti-GPUs/raw/refs/heads/main/Load%20Diffusion%20Model%20into%20Muti%20GPUs.py": [ - [ - "OverrideLoadedDiffusionDevice" - ], - { - "title_aux": "ComfyUI-Load-Diffusion-Model-to-Muti-GPUs" - } - ], - "https://github.com/purpen/ComfyUI-AIRedoon": [ - [ - "AIRedoonApplyLoRAStack", - "AIRedoonCheckLoraFile", - "AIRedoonCheckModelFile", - "AIRedoonConcatText", - "AIRedoonImageCaptioning", - "AIRedoonImageRGBA2RGB", - "AIRedoonLoRAStack", - "AIRedoonPreviewText", - "AIRedoonQwenModelLoader", - "AIRedoonSaveText", - "AIRedoonTranslator" - ], - { - "title_aux": "AIRedoon" - } - ], - "https://github.com/purpen/ComfyUI-ImageTagger": [ - [ - "AIRedoonImageCaptioning" - ], - { - "title_aux": "ComfyUI-ImageTagger" - } - ], - "https://github.com/pythongosssss/ComfyUI-Custom-Scripts": [ - [ - "CheckpointLoader|pysssss", - "ConstrainImageforVideo|pysssss", - "ConstrainImage|pysssss", - "LoadText|pysssss", - "LoraLoader|pysssss", - "MathExpression|pysssss", - "MultiPrimitive|pysssss", - "PlaySound|pysssss", - "Repeater|pysssss", - "ReroutePrimitive|pysssss", - "SaveText|pysssss", - "ShowText|pysssss", - "StringFunction|pysssss", - "SystemNotification|pysssss" - ], - { - "title_aux": "pythongosssss/ComfyUI-Custom-Scripts" - } - ], - "https://github.com/pythongosssss/ComfyUI-WD14-Tagger": [ - [ - "WD14Tagger|pysssss" - ], - { - "title_aux": "ComfyUI WD 1.4 Tagger" - } - ], - "https://github.com/pzc163/Comfyui_MiniCPMv2_6-prompt-generator": [ - [ - "Prompt_Generator", - "Save_Prompts" - ], - { - "title_aux": "Comfyui_MiniCPMv2_6-prompt-generator" - } - ], - "https://github.com/qwixiwp/queuetools": [ - [ - "load images (queue tools)" - ], - { - "title_aux": "queuetools" - } - ], - "https://github.com/r3dial/redial-discomphy": [ - [ - "DiscordMessage" - ], - { - "title_aux": "Redial Discomphy - Discord Integration for ComfyUI" - } - ], - "https://github.com/r3dsd/comfyui-template-loader": [ - [ - "TemplateLoader" - ], - { - "title_aux": "Comfyui-Template-Loader" - } - ], - "https://github.com/ramesh-x90/ComfyUI_pyannote": [ - [ - "Speaker Diarization", - "Whisper Segments to Speaker" - ], - { - "title_aux": "ComfyUI_pyannote" - } - ], - "https://github.com/ramyma/A8R8_ComfyUI_nodes": [ - [ - "AttentionCouple", - "AttentionCoupleRegion", - "AttentionCoupleRegions", - "Base64ImageInput", - "Base64ImageOutput" - ], - { - "title_aux": "A8R8 ComfyUI Nodes" - } - ], - "https://github.com/randjtw/advance-aesthetic-score": [ - [ - "Adv_Scoring" - ], - { - "title_aux": "advance-aesthetic-score" - } - ], - "https://github.com/randomnoner11/ComfyUI-MistralAI-API": [ - [ - "InvokeMistralEndpoint", - "LoadFewShotPrompt" - ], - { - "title_aux": "ComfyUI-MistralAI-API" - } - ], - "https://github.com/raspie10032/ComfyUI_RS_NAI_Local_Prompt_converter": [ - [ - "ComfyToNovelAIPrompt", - "NAIPromptExtractor", - "NovelAIToComfyPrompt" - ], - { - "title_aux": "ComfyUI NAI Prompt Converter" - } - ], - "https://github.com/ratulrafsan/Comfyui-SAL-VTON": [ - [ - "SALVTON_Apply", - "SV_random" - ], - { - "title_aux": "Comfyui-SAL-VTON" - } - ], - "https://github.com/raysers/Mflux-ComfyUI": [ - [ - "MfluxControlNetLoader", - "MfluxCustomModels", - "MfluxImg2Img", - "MfluxLorasLoader", - "MfluxModelsDownloader", - "MfluxModelsLoader", - "QuickMfluxNode" - ], - { - "title_aux": "Mflux-ComfyUI" - } - ], - "https://github.com/rcfcu2000/zhihuige-nodes-comfyui": [ - [ - "Combine ZHGMasks", - "Cover ZHGMasks", - "From ZHG pip", - "GroundingDinoModelLoader (zhihuige)", - "GroundingDinoPIPESegment (zhihuige)", - "GroundingDinoSAMSegment (zhihuige)", - "InvertMask (zhihuige)", - "SAMModelLoader (zhihuige)", - "To ZHG pip", - "ZHG FaceIndex", - "ZHG GetMaskArea", - "ZHG Image Levels", - "ZHG SaveImage", - "ZHG SmoothEdge", - "ZHG UltimateSDUpscale" - ], - { - "title_aux": "zhihuige-nodes-comfyui" - } - ], - "https://github.com/rcsaquino/comfyui-custom-nodes": [ - [ - "BackgroundRemover | rcsaquino", - "VAELoader | rcsaquino", - "VAEProcessor | rcsaquino" - ], - { - "title_aux": "rcsaquino/comfyui-custom-nodes" - } - ], - "https://github.com/rdancer/ComfyUI_Florence2SAM2": [ - [ - "RdancerFlorence2SAM2GenerateMask" - ], - { - "title_aux": "ComfyUI_Florence2SAM2" - } - ], - "https://github.com/receyuki/comfyui-prompt-reader-node": [ - [ - "SDAnyConverter", - "SDBatchLoader", - "SDLoraLoader", - "SDLoraSelector", - "SDParameterExtractor", - "SDParameterGenerator", - "SDPromptMerger", - "SDPromptReader", - "SDPromptSaver", - "SDTypeConverter" - ], - { - "author": "receyuki", - "description": "The ultimate solution for managing image metadata and multi-tool compatibility. ComfyUI node version of the SD Prompt Reader", - "nickname": "SD Prompt Reader", - "title": "SD Prompt Reader", - "title_aux": "SD Prompt Reader" - } - ], - "https://github.com/recraft-ai/ComfyUI-RecraftAI": [ - [ - "RecraftBackgroundRemover", - "RecraftClarityUpscaler", - "RecraftClient", - "RecraftGenerativeUpscaler", - "RecraftImageGenerator" - ], - { - "title_aux": "ComfyUI-RecraftAI" - } - ], - "https://github.com/redhottensors/ComfyUI-Prediction": [ - [ - "AvoidErasePrediction", - "CFGPrediction", - "CharacteristicGuidancePrediction", - "CombinePredictions", - "ConditionedPrediction", - "EarlyMiddleLatePrediction", - "InterpolatePredictions", - "LogSigmas", - "PerpNegPrediction", - "SamplerCustomPrediction", - "ScalePrediction", - "ScaledGuidancePrediction", - "SelectSigmas", - "SplitAtSigma", - "SwitchPredictions" - ], - { - "author": "RedHotTensors", - "description": "Fully customizable Classifer Free Guidance for ComfyUI", - "nickname": "ComfyUI-Prediction", - "title": "ComfyUI-Prediction", - "title_aux": "ComfyUI-Prediction" - } - ], - "https://github.com/regiellis/ComfyUI-EasyNoobai": [ - [ - "EasyNoobai", - "NoobaiArtists", - "NoobaiCharacters", - "NoobaiE621Artists", - "NoobaiE621Characters" - ], - { - "title_aux": "ComfyUI-EasyNoobai" - } - ], - "https://github.com/regiellis/ComfyUI-EasyPony": [ - [ - "EasyPony" - ], - { - "title_aux": "ComfyUI-EasyPony" - } - ], - "https://github.com/revirevy/Comfyui_saveimage_imgbb": [ - [ - "ImgBBUploader", - "LLM_prompt_generator" - ], - { - "author": "N.RHEVI", - "description": "This custom node allow save image to imgbb.", - "nickname": "save image to imgbb", - "title": "save image to imgbb", - "title_aux": "Comfyui_saveimage_imgbb" - } - ], - "https://github.com/rgthree/rgthree-comfy": [ - [], - { - "author": "rgthree", - "description": "A bunch of nodes I created that I also find useful.", - "nickname": "rgthree", - "nodename_pattern": " \\(rgthree\\)$", - "title": "Comfy Nodes", - "title_aux": "rgthree's ComfyUI Nodes" - } - ], - "https://github.com/rhdunn/comfyui-audio-processing": [ - [ - "ComfyAudio.ApplyFilterBank", - "ComfyAudio.GriffinLim", - "ComfyAudio.InverseSpectrogram", - "ComfyAudio.LinearFilterBank", - "ComfyAudio.LoadAudio", - "ComfyAudio.MelScaleFilterBank", - "ComfyAudio.PlotFilterBank", - "ComfyAudio.PlotSpectrogram", - "ComfyAudio.PlotWaveform", - "ComfyAudio.Spectrogram" - ], - { - "title_aux": "comfyui-audio-processing" - } - ], - "https://github.com/rhdunn/comfyui-bus-plugin": [ - [ - "ComfyBus.CLIPConditioningBusNode", - "ComfyBus.CLIPEncodedPromptBusNode", - "ComfyBus.CheckpointBusNode", - "ComfyBus.ImageBusNode", - "ComfyBus.ImageParameterBusNode", - "ComfyBus.ImageScaleToSideParameterBusNode", - "ComfyBus.ImageSizeBusNode", - "ComfyBus.LatentImageBusNode", - "ComfyBus.LatentImageParameterBusNode", - "ComfyBus.PromptBusNode", - "ComfyBus.PromptSDXLBusNode" - ], - { - "title_aux": "comfyui-bus-plugin" - } - ], - "https://github.com/richinsley/Comfy-LFO": [ - [ - "LFO_Pulse", - "LFO_Sawtooth", - "LFO_Sine", - "LFO_Square", - "LFO_Triangle" - ], - { - "title_aux": "Comfy-LFO" - } - ], - "https://github.com/ricklove/comfyui-ricklove": [ - [ - "RL_BBox", - "RL_CacheImageSequence", - "RL_CacheMaskSequence", - "RL_CivitaiTopImagePrompts", - "RL_Crop_Resize", - "RL_Crop_Resize_Batch", - "RL_Finetune_Analyze", - "RL_Finetune_Analyze_Batch", - "RL_Finetune_Variable", - "RL_ForceDependencyOrder", - "RL_ForceDependencyOrder_ImageString", - "RL_ForceDependencyOrder_Images", - "RL_ForceDependencyOrder_Latents", - "RL_ForceDependencyOrder_String", - "RL_ForceDependencyOrder_Strings", - "RL_IfFileExists", - "RL_Image_Shadow", - "RL_Image_Threshold_Channels", - "RL_Internet_Search", - "RL_LoadImageSequence", - "RL_Load_Flow", - "RL_LoraTextExtractTags", - "RL_Optical_Flow_Dip", - "RL_RebootComfyIfLeaky", - "RL_SaveImageSequence", - "RL_Save_Flow", - "RL_SequenceContext", - "RL_Sequence_ToFilePathList", - "RL_StopIfBlack", - "RL_Uncrop", - "RL_Warp_Image", - "RL_Zoe_Depth_Map_Preprocessor", - "RL_Zoe_Depth_Map_Preprocessor_Raw_Infer", - "RL_Zoe_Depth_Map_Preprocessor_Raw_Process" - ], - { - "title_aux": "comfyui-ricklove" - } - ], - "https://github.com/risunobushi/ComfyUI-Similarity-Score": [ - [ - "ImageSimilarityScores" - ], - { - "title_aux": "ComfyUI-Similarity-Score" - } - ], - "https://github.com/risunobushi/comfyUI_FrequencySeparation_RGB-HSV": [ - [ - "FrequencyCombination", - "FrequencyCombinationHSV", - "FrequencySeparation", - "FrequencySeparationHSV" - ], - { - "title_aux": "comfyUI_FrequencySeparation_RGB-HSV" - } - ], - "https://github.com/robertvoy/ComfyUI-Flux-Continuum": [ - [ - "BatchSlider", - "BooleanToEnabled", - "ConfigurableDrawText", - "ControlNetSlider", - "DenoiseSlider", - "DrawTextConfig", - "FluxContinuumModelRouter", - "GPUSlider", - "GuidanceSlider", - "IPAdapterSlider", - "ImageBatchBoolean", - "ImpactControlBridgeFix", - "LatentPass", - "MaxShiftSlider", - "OutputGetString", - "PipePass", - "ResolutionPicker", - "SEGSPass", - "SamplerParameterPacker", - "SamplerParameterUnpacker", - "SelectFromBatch", - "SimpleTextTruncate", - "SplitVec3", - "StepSlider", - "TextVersions" - ], - { - "title_aux": "ComfyUI Flux Continuum: Modular Interface" - } - ], - "https://github.com/robtl2/ComfyUI-ComfyBridge": [ - [ - "CB_ImageReceiver", - "CB_ImageSender" - ], - { - "title_aux": "ComfyUI-ComfyBridge" - } - ], - "https://github.com/rohitsainier/ComfyUI-InstagramDownloader": [ - [ - "InstagramDownloader", - "MediaOrganizer" - ], - { - "title_aux": "ComfyUI-InstagramDownloader" - } - ], - "https://github.com/romeobuilderotti/ComfyUI-PNG-Metadata": [ - [ - "SetMetadataAll", - "SetMetadataString" - ], - { - "title_aux": "ComfyUI PNG Metadata" - } - ], - "https://github.com/ronaldzgithub/ComfyUI_Appstore": [ - [ - "ComfyUIAppstoreHost", - "ComfyUIAppstoreParam", - "sdAppstore_saveImage" - ], - { - "title_aux": "ComfyUI_Appstore" - } - ], - "https://github.com/ronniebasak/ComfyUI-Tara-LLM-Integration": [ - [ - "TaraAdvancedComposition", - "TaraApiKeyLoader", - "TaraApiKeySaver", - "TaraDaisyChainNode", - "TaraLLMConfig", - "TaraPresetLLMConfig", - "TaraPrompter", - "TaraPrompterAdvanced" - ], - { - "title_aux": "ComfyUI-Tara-LLM-Integration" - } - ], - "https://github.com/ronsantash/Comfyui-flexi-lora-loader": [ - [ - "ComfyUIFlexiLoRALoader" - ], - { - "title_aux": "ComfyUIFlexiLoRALoader" - } - ], - "https://github.com/royceschultz/ComfyUI-Notifications": [ - [ - "Notif-PlaySound", - "Notif-SystemNotification", - "Notif-UnifiedNotification", - "Notif-Webhook" - ], - { - "title_aux": "ComfyUI-Notifications" - } - ], - "https://github.com/royceschultz/ComfyUI-TranscriptionTools": [ - [ - "TT-AudioSink", - "TT-ConvertVhsAudioToAudio", - "TT-LoadAudio", - "TT-LoadBatch", - "TT-LoadVideoAudio", - "TT-LoadWhisperModel", - "TT-WhisperTranscription", - "TT-WhisperTranscriptionBatch" - ], - { - "title_aux": "ComfyUI-TranscriptionTools" - } - ], - "https://github.com/rubi-du/ComfyUI-BiRefNet-Super": [ - [ - "BiRefNet_Lite", - "BiRefNet_Super", - "BiRefNet_onnx" - ], - { - "title_aux": "ComfyUI-BiRefNet-lite" - } - ], - "https://github.com/rubi-du/ComfyUI-Flux-Inpainting": [ - [ - "Flux Inpainting", - "FluxGuffInpainting", - "FluxInpainting", - "FluxSimpleInpainting", - "FluxTransformerInpainting", - "FluxVAELoader" - ], - { - "title_aux": "ComfyUI-Flux-Inpainting" - } - ], - "https://github.com/rubi-du/ComfyUI-ICC-nodes": [ - [ - "LoadImageICC", - "PreviewImageICC", - "SaveImageICC" - ], - { - "title_aux": "ComfyUI-ICC-nodes" - } - ], - "https://github.com/rui40000/RUI-Nodes": [ - [ - "ABCondition", - "CharacterCount" - ], - { - "title_aux": "RUI-Nodes" - } - ], - "https://github.com/ruiqutech/ComfyUI-RuiquNodes": [ - [ - "EvaluateListMultiple1", - "EvaluateListMultiple3", - "EvaluateListMultiple6", - "EvaluateListMultiple9", - "EvaluateMultiple1", - "EvaluateMultiple3", - "EvaluateMultiple6", - "EvaluateMultiple9", - "ImageDilate", - "ImageErode", - "ListPath", - "MaskDilate", - "MaskErode", - "PreviewMask", - "RangeSplit", - "SaveMask", - "StringAsAny", - "StringConcat1", - "StringConcat3", - "StringConcat6", - "StringConcat9", - "StringPathStem", - "TermsToList", - "VAEDecodeSave" - ], - { - "title_aux": "RuiquNodes for ComfyUI" - } - ], - "https://github.com/runtime44/comfyui_r44_nodes": [ - [ - "Runtime44ColorMatch", - "Runtime44DynamicKSampler", - "Runtime44FilmGrain", - "Runtime44ImageEnhance", - "Runtime44ImageOverlay", - "Runtime44ImageResizer", - "Runtime44ImageToNoise", - "Runtime44IterativeUpscaleFactor", - "Runtime44MaskSampler", - "Runtime44TiledMaskSampler", - "Runtime44Upscaler" - ], - { - "title_aux": "Runtime44 ComfyUI Nodes" - } - ], - "https://github.com/ruucm/ruucm-comfy": [ - [ - "BatchAverageImage", - "LoadExternalLoraModelOnly" - ], - { - "nodename_pattern": " \\(ruucm\\)$", - "title_aux": "Ruucm's ComfyUI Nodes" - } - ], - "https://github.com/ryanontheinside/ComfyUI_Doom": [ - [ - "Doom" - ], - { - "title_aux": "Doom" - } - ], - "https://github.com/ryanontheinside/ComfyUI_EfficientTAM": [ - [ - "EfficientTAMLoader", - "EfficientTAMPredictor" - ], - { - "title_aux": "ComfyUI-EfficientTAM" - } - ], - "https://github.com/ryanontheinside/ComfyUI_ProfilerX": [ - [ - "CATEGORY", - "FUNCTION", - "INPUT_TYPES", - "OUTPUT_NODE", - "ProfilerX", - "RETURN_TYPES" - ], - { - "title_aux": "ComfyUI_ProfilerX" - } - ], - "https://github.com/ryanontheinside/ComfyUI_RealTimeNodes": [ - [ - "DTypeConverter", - "DeltaControl", - "FPSMonitor", - "FastWebcamCapture", - "FloatControl", - "FloatSequence", - "IntControl", - "IntSequence", - "IntegerMotionController", - "IntervalControl", - "MotionController", - "QuickShapeMask", - "ROINode", - "StringControl", - "StringSequence", - "TAESDVaeDecode", - "TAESDVaeEncode" - ], - { - "title_aux": "Nodes for use with real-time applications of ComfyUI" - } - ], - "https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside": [ - [ - "AdvancedLuminanceMask", - "AreaFeatureNode", - "AudioChannelMerge", - "AudioChannelSplit", - "AudioDither", - "AudioFade", - "AudioFeatureExtractor", - "AudioFeatureVisualizer", - "AudioFilter", - "AudioGain", - "AudioInfo", - "AudioPad", - "AudioPitchShift", - "AudioResample", - "AudioSeparatorSimple", - "AudioSubtract", - "AudioTimeStretch", - "AudioVolumeNormalization", - "Audio_Combine", - "Audio_Concatenate", - "BrightnessFeatureNode", - "ColorFeatureNode", - "Color_Picker", - "ContextModifier", - "DepthBlender", - "DepthFeatureNode", - "DepthInjection", - "DepthMapProtrusion", - "DepthRippleEffect", - "DepthShapeModifier", - "DepthShapeModifierPrecise", - "Doom_", - "DownloadCREPEModel", - "DownloadOpenUnmixModel", - "DrawableFeatureNode", - "DyeImage", - "EffectVisualizer", - "EmbeddingGuidedLatentInterpolate", - "EmitterEmissionRateModulation", - "EmitterMovement", - "EmptyImageAndMaskFromAudio", - "EmptyImageFromAudio", - "EmptyMaskFromAudio", - "FeatureAccumulate", - "FeatureCombine", - "FeatureContiguousInterpolate", - "FeatureFade", - "FeatureInfoNode", - "FeatureInterpolator", - "FeatureMath", - "FeatureMixer", - "FeatureOscillator", - "FeaturePeakDetector", - "FeatureRebase", - "FeatureRenormalize", - "FeatureScaler", - "FeatureSmoothing", - "FeatureToFlexFloatParam", - "FeatureToFlexIntParam", - "FeatureToFloat", - "FeatureToLatentKeyframe", - "FeatureToMask", - "FeatureToSplineData", - "FeatureToTimestepKeyframe", - "FeatureToWeightsStrategy", - "FeatureTruncateOrExtend", - "FlexAudioPitchShift", - "FlexAudioTimeStretch", - "FlexAudioVisualizerCircular", - "FlexAudioVisualizerContour", - "FlexAudioVisualizerLine", - "FlexFeatureAttentionControl", - "FlexImageBloom", - "FlexImageChromaticAberration", - "FlexImageColorGrade", - "FlexImageContrast", - "FlexImageDepthWarp", - "FlexImageEdgeDetect", - "FlexImageGlitch", - "FlexImageHorizontalToVertical", - "FlexImageHueShift", - "FlexImageKaleidoscope", - "FlexImageParallax", - "FlexImagePixelate", - "FlexImagePosterize", - "FlexImageTiltShift", - "FlexImageTransform", - "FlexImageVignette", - "FlexImageWarp", - "FlexLatentBlend", - "FlexLatentInterpolate", - "FlexLatentNoise", - "FlexMaskBinary", - "FlexMaskDepthChamber", - "FlexMaskEmanatingRings", - "FlexMaskInterpolate", - "FlexMaskMath", - "FlexMaskMorph", - "FlexMaskOpacity", - "FlexMaskRandomShapes", - "FlexMaskTransform", - "FlexMaskVoronoiScheduled", - "FlexMaskWarp", - "FlexMaskWavePropagation", - "FlexVideoDirection", - "FlexVideoFrameBlend", - "FlexVideoSeek", - "FlexVideoSpeed", - "FloatFeatureNode", - "FrequencyFilterCustom", - "FrequencyFilterPreset", - "FrequencyRange", - "GravityWell", - "ImageCASBatch", - "ImageChunk", - "ImageDifference", - "ImageInterval", - "ImageIntervalSelectPercentage", - "ImageScaleToTarget", - "Image_Shuffle", - "LatentFrequencyBlender", - "LocationFromMask", - "LocationFromPoint", - "LocationTransform", - "MIDILoadAndExtract", - "ManualFeatureFromPipe", - "ManualFeatureNode", - "ManualFeaturePipe", - "ManualWhisperAlignmentData", - "MaskCompositePlus", - "MaskMath", - "MaskMorph", - "MaskRings", - "MaskTransform", - "MaskWarp", - "MotionFeatureNode", - "MovingShape", - "OpticalFlowDirectionMask", - "OpticalFlowMaskModulation", - "OpticalFlowParticleSystem", - "ParticleColorModulation", - "ParticleEmissionMask", - "ParticleEmitter", - "ParticleSizeModulation", - "ParticleSpeedModulation", - "PitchFeatureExtractor", - "PitchRange", - "PitchRangeByNoteNode", - "PitchRangePreset", - "PitchVisualizer", - "PoseInterpolator", - "PreviewFeature", - "ProximityFeatureNode", - "ProximityVisualizer", - "RhythmFeatureExtractor", - "SplineFeatureModulator", - "SplineRhythmModulator", - "SpringJointSetting", - "StaticBody", - "SwapDevice", - "TextMaskNode", - "TimeFeatureNode", - "TranslucentComposite", - "TriggerBuilder", - "VideoChunk", - "Vortex", - "WhisperAutoAdjust", - "WhisperFeature", - "WhisperTextRenderer", - "WhisperTimeAdjuster", - "WhisperToPromptTravel", - "_mfc" - ], - { - "title_aux": "RyanOnTheInside" - } - ], - "https://github.com/saftle/uber_comfy_nodes": [ - [ - "ControlNet Selector", - "ControlNetOptionalLoader", - "DiffusersSelector", - "MultiInputVariableRewrite", - "SaveImageJPGNoMeta" - ], - { - "title_aux": "Suplex Misc ComfyUI Nodes" - } - ], - "https://github.com/sakura1bgx/ComfyUI_FlipStreamViewer": [ - [ - "FlipStreamLoader", - "FlipStreamOption", - "FlipStreamPrompt", - "FlipStreamSource", - "FlipStreamSwitchVFI", - "FlipStreamUpdate", - "FlipStreamViewer" - ], - { - "title_aux": "ComfyUI_FlipStreamViewer" - } - ], - "https://github.com/sanbuphy/ComfyUI-AudioLDM": [ - [ - "AudioLDM", - "PreviewAudioLDM", - "SaveAudioLDM" - ], - { - "title_aux": "ComfyUI-AudioLDM" - } - ], - "https://github.com/sdfxai/SDFXBridgeForComfyUI": [ - [ - "SDFXClipTextEncode" - ], - { - "title_aux": "SDFXBridgeForComfyUI - ComfyUI Custom Node for SDFX Integration" - } - ], - "https://github.com/seanlynch/comfyui-optical-flow": [ - [ - "Apply optical flow", - "Compute optical flow", - "Visualize optical flow" - ], - { - "title_aux": "ComfyUI Optical Flow" - } - ], - "https://github.com/seanlynch/srl-nodes": [ - [ - "SRL Conditional Interrrupt", - "SRL Eval", - "SRL Filter Image List", - "SRL Format String" - ], - { - "title_aux": "SRL's nodes" - } - ], - "https://github.com/sebord/ComfyUI-LMCQ": [ - [ - "LmcqAuthLoraDecryption", - "LmcqAuthLoraEncryption", - "LmcqAuthModelDecryption", - "LmcqAuthModelEncryption", - "LmcqAuthWorkflowDecryption", - "LmcqAuthWorkflowEncryption", - "LmcqGetMachineCode", - "LmcqImageSaver", - "LmcqImageSaverTransit", - "LmcqImageSaverWeb", - "LmcqInputValidator", - "LmcqLoadFluxNF4Checkpoint", - "LmcqNumberSliders5", - "LmcqRuntimeLoraDecryption", - "LmcqRuntimeLoraEncryption", - "LmcqRuntimeModelDecryption", - "LmcqRuntimeModelEncryption", - "LmcqRuntimeWorkflowDecryption", - "LmcqRuntimeWorkflowEncryption" - ], - { - "title_aux": "ComfyUI-LMCQ" - } - ], - "https://github.com/sergekatzmann/ComfyUI_Nimbus-Pack": [ - [ - "AdjustAndRoundDimensions", - "AspectRatioMobileDevices", - "ImageResizeAndCropNode", - "ImageSquareAdapterNode", - "PopularScreenResolutions" - ], - { - "title_aux": "ComfyUI_Nimbus-Pack" - } - ], - "https://github.com/sh570655308/ComfyUI-GigapixelAI": [ - [ - "GigapixelAI", - "GigapixelModelSettings", - "GigapixelUpscaleSettings" - ], - { - "title_aux": "ComfyUI-GigapixelAI" - } - ], - "https://github.com/sh570655308/ComfyUI-TopazVideoAI": [ - [ - "TopazUpscaleParams", - "TopazVideoAI" - ], - { - "title_aux": "ComfyUI-TopazVideoAI" - } - ], - "https://github.com/shabri-arrahim/ComfyUI-Safety-Checker": [ - [ - "CompVisSafetyChecker", - "FalconsAISafetyChecker", - "loadImageBase64" - ], - { - "title_aux": "ComfyUI Safety Checker" - } - ], - "https://github.com/shadowcz007/comfyui-Image-reward": [ - [ - "ImageBatchToList_", - "ImageRewardScore_" - ], - { - "title_aux": "comfyui-Image-reward" - } - ], - "https://github.com/shadowcz007/comfyui-consistency-decoder": [ - [ - "VAEDecodeConsistencyDecoder", - "VAELoaderConsistencyDecoder" - ], - { - "title_aux": "Consistency Decoder" - } - ], - "https://github.com/shadowcz007/comfyui-edit-mask": [ - [ - "EditMask" - ], - { - "title_aux": "comfyui-edit-mask" - } - ], - "https://github.com/shadowcz007/comfyui-liveportrait": [ - [ - "ExpressionEditor_", - "ExpressionVideo2VideoNode", - "ExpressionVideoNode", - "FaceCropInfo", - "LivePortraitNode", - "LivePortraitVideoNode", - "Retargeting" - ], - { - "title_aux": "comfyui-liveportrait" - } - ], - "https://github.com/shadowcz007/comfyui-mixlab-nodes": [ - [ - "3DImage", - "AnalyzeAudio", - "AppInfo", - "ApplyVisualStylePrompting_", - "AreaToMask", - "AudioPlay", - "CenterImage", - "CkptNames_", - "Color", - "ComparingTwoFrames_", - "CompositeImages_", - "CreateJsonNode", - "DepthViewer", - "DynamicDelayProcessor", - "EmbeddingPrompt", - "EnhanceImage", - "FaceToMask", - "FeatheredMask", - "FloatSlider", - "FloatingVideo", - "Font", - "GLIGENTextBoxApply_Advanced", - "GetImageSize_", - "GradientImage", - "GridDisplayAndSave", - "GridInput", - "GridOutput", - "ImageBatchToList_", - "ImageColorTransfer", - "ImageCropByAlpha", - "ImageListToBatch_", - "ImagesPrompt_", - "IncrementingListNode_", - "IntNumber", - "JoinWithDelimiter", - "KeyInput", - "LimitNumber", - "ListSplit_", - "LoadImagesFromPath", - "LoadImagesFromURL", - "LoadImagesToBatch", - "LoraNames_", - "LoraPrompt", - "MaskListMerge_", - "MaskListReplace_", - "MergeLayers", - "MirroredImage", - "MultiplicationNode", - "NewLayer", - "NoiseImage", - "OutlineMask", - "P5Input", - "PreviewMask_", - "PromptImage", - "PromptSimplification", - "PromptSlide", - "RandomPrompt", - "ResizeImageMixlab", - "SamplerNames_", - "SaveImageAndMetadata_", - "SaveImageToLocal", - "ScreenShare", - "Seed_", - "ShowLayer", - "SmoothMask", - "SpeechRecognition", - "SpeechSynthesis", - "SplitImage", - "SplitLongMask", - "StyleAlignedBatchAlign_", - "StyleAlignedReferenceSampler_", - "StyleAlignedSampleReferenceLatents_", - "SvgImage", - "SwitchByIndex", - "TESTNODE_", - "TESTNODE_TOKEN", - "TextImage", - "TextInput_", - "TextToNumber", - "TransparentImage", - "VAEDecodeConsistencyDecoder", - "VAELoaderConsistencyDecoder" - ], - { - "title_aux": "comfyui-mixlab-nodes" - } - ], - "https://github.com/shadowcz007/comfyui-sound-lab": [ - [ - "AudioPlay", - "Musicgen_", - "StableAudio_" - ], - { - "title_aux": "comfyui-sound-lab" - } - ], - "https://github.com/shadowcz007/comfyui-try-on": [ - [ - "CatVTONNode", - "FashionClothMask", - "FashionClothMask2" - ], - { - "author": "chflame", - "description": "CatVTON warpper for ComfyUI", - "nickname": "CatVTON_Wrapper", - "title": "CatVTON_Wrapper", - "title_aux": "comfyui-try-on" - } - ], - "https://github.com/shadowcz007/comfyui-ultralytics-yolo": [ - [ - "DetectByLabel" - ], - { - "title_aux": "comfyui-ultralytics-yolo" - } - ], - "https://github.com/shahkoorosh/ComfyUI-KGnodes": [ - [ - "CustomResolutionLatentNode", - "StyleSelector" - ], - { - "author": "ShahKoorosh", - "description": "This Custom node offers various experimental nodes to make it easier to use ComfyUI.", - "nickname": "KGnodes", - "title": "ComfyUI-KGnodes", - "title_aux": "ComfyUI-KGnodes" - } - ], - "https://github.com/shahkoorosh/ComfyUI-PersianText": [ - [ - "PersianText" - ], - { - "author": "ShahKoorosh", - "description": "A powerful ComfyUI node for rendering text with advanced styling options, including full support for Persian/Farsi and Arabic scripts.", - "nickname": "PersianText", - "title": "ComfyUI-PersianText", - "title_aux": "ComfyUI-PersianText" - } - ], - "https://github.com/shenduldh/ComfyUI-Lightning": [ - [ - "ApplyFBCacheAndSkipBlocks", - "ApplyMBCacheAndSkipBlocks", - "ApplyMBCacheAndSkipBlocksForSana", - "ApplySageAttention", - "ApplyTeaCacheAndSkipBlocks", - "CompileAndQuantizeModel", - "SanaCLIPLoader", - "SanaDiffusionLoader", - "SanaEmptyLatentImage", - "SanaTextEncode", - "SanaVAELoader" - ], - { - "title_aux": "ComfyUI-Lightning" - } - ], - "https://github.com/shi3z/ComfyUI_Memeplex_DALLE": [ - [ - "DallERender", - "GPT", - "MemeplexCustomSDXLRender", - "MemeplexRender", - "TextInput", - "TextSend" - ], - { - "title_aux": "ComfyUI_Memeplex_DALLE" - } - ], - "https://github.com/shiimizu/ComfyUI-PhotoMaker-Plus": [ - [ - "PhotoMakerEncodePlus", - "PhotoMakerInsightFaceLoader", - "PhotoMakerLoaderPlus", - "PhotoMakerLoraLoaderPlus", - "PhotoMakerStyles", - "PrepImagesForClipVisionFromPath" - ], - { - "title_aux": "ComfyUI PhotoMaker Plus" - } - ], - "https://github.com/shiimizu/ComfyUI-TiledDiffusion": [ - [ - "NoiseInversion", - "SpotDiffusionParams_TiledDiffusion", - "TiledDiffusion", - "VAEDecodeTiled_TiledDiffusion", - "VAEEncodeTiled_TiledDiffusion" - ], - { - "title_aux": "Tiled Diffusion & VAE for ComfyUI" - } - ], - "https://github.com/shiimizu/ComfyUI-semantic-aware-guidance": [ - [ - "SemanticAwareGuidance" - ], - { - "title_aux": "Semantic-aware Guidance (S-CFG)" - } - ], - "https://github.com/shiimizu/ComfyUI_smZNodes": [ - [ - "smZ CLIPTextEncode", - "smZ Settings" - ], - { - "title_aux": "smZNodes" - } - ], - "https://github.com/shingo1228/ComfyUI-SDXL-EmptyLatentImage": [ - [ - "SDXL Empty Latent Image" - ], - { - "title_aux": "ComfyUI-SDXL-EmptyLatentImage" - } - ], - "https://github.com/shingo1228/ComfyUI-send-eagle-slim": [ - [ - "Send Eagle with text", - "Send Webp Image to Eagle" - ], - { - "title_aux": "ComfyUI-send-Eagle(slim)" - } - ], - "https://github.com/shinich39/comfyui-parse-image": [ - [ - "LoadBooleanFromImage", - "LoadComboFromImage", - "LoadFloatFromImage", - "LoadIntFromImage", - "LoadStringFromImage" - ], - { - "author": "shinich39", - "description": "Extract metadata from image.", - "nickname": "parse-image", - "title": "parse-image", - "title_aux": "comfyui-parse-image" - } - ], - "https://github.com/shinich39/comfyui-put-image": [ - [ - "PutImage" - ], - { - "author": "shinich39", - "description": "Load image from directory.", - "nickname": "put-image", - "title": "put-image", - "title_aux": "comfyui-put-image" - } - ], - "https://github.com/shobhitic/ComfyUI-PlusMinusTextClip": [ - [ - "PlusMinusTextClip" - ], - { - "title_aux": "PlusMinusTextClip - Single node for Positive and Negative Prompts" - } - ], - "https://github.com/shockz0rz/comfy-easy-grids": [ - [ - "FloatToText", - "GridFloatList", - "GridFloats", - "GridIntList", - "GridInts", - "GridLoras", - "GridStringList", - "GridStrings", - "ImageGridCommander", - "IntToText", - "SaveImageGrid", - "TextConcatenator" - ], - { - "title_aux": "comfy-easy-grids" - } - ], - "https://github.com/siliconflow/BizyAir": [ - [ - "BizyAirBAE_NormalMapPreprocessor", - "BizyAirBinaryPreprocessor", - "BizyAirCannyEdgePreprocessor", - "BizyAirColorPreprocessor", - "BizyAirDWPreprocessor", - "BizyAirDepthAnythingV2Preprocessor", - "BizyAirFakeScribblePreprocessor", - "BizyAirGenerateLightningImage", - "BizyAirHEDPreprocessor", - "BizyAirJoyCaption", - "BizyAirJoyCaption2", - "BizyAirLeReS_DepthMapPreprocessor", - "BizyAirLineArtPreprocessor", - "BizyAirM_LSDPreprocessor", - "BizyAirMetric3D_DepthMapPreprocessor", - "BizyAirMetric3D_NormalMapPreprocessor", - "BizyAirMiDaS_DepthMapPreprocessor", - "BizyAirMiDaS_NormalMapPreprocessor", - "BizyAirOneFormer_ADE20K_SemSegPreprocessor", - "BizyAirOneFormer_COCO_SemSegPreprocessor", - "BizyAirOpenposePreprocessor", - "BizyAirPiDiNetPreprocessor", - "BizyAirRemoveBackground", - "BizyAirSAMPreprocessor", - "BizyAirScribblePreprocessor", - "BizyAirSegmentAnythingPointBox", - "BizyAirSegmentAnythingText", - "BizyAirSiliconCloudLLMAPI", - "BizyAirSiliconCloudVLMAPI", - "BizyAirTilePreprocessor", - "BizyAirToggleServerEndpoint", - "BizyAirUniFormer_SemSegPreprocessor", - "BizyAirZoe_DepthMapPreprocessor", - "BizyAir_MinusZoneChatGLM3TextEncode", - "LayerMask: SegmentAnythingUltra V2", - "StableDiffusionXLControlNetUnionPipeline" - ], - { - "title_aux": "\u2601\ufe0fBizyAir Nodes" - } - ], - "https://github.com/sipherxyz/comfyui-art-venture": [ - [ - "AV_AwsBedrockClaudeApi", - "AV_AwsBedrockMistralApi", - "AV_CheckpointMerge", - "AV_CheckpointModelsToParametersPipe", - "AV_CheckpointSave", - "AV_ClaudeApi", - "AV_ControlNetEfficientLoader", - "AV_ControlNetEfficientLoaderAdvanced", - "AV_ControlNetEfficientStacker", - "AV_ControlNetEfficientStackerSimple", - "AV_ControlNetLoader", - "AV_ControlNetPreprocessor", - "AV_LLMApiConfig", - "AV_LLMChat", - "AV_LLMCompletion", - "AV_LLMMessage", - "AV_LoraListLoader", - "AV_LoraListStacker", - "AV_LoraLoader", - "AV_OpenAIApi", - "AV_ParametersPipeToCheckpointModels", - "AV_ParametersPipeToPrompts", - "AV_PromptsToParametersPipe", - "AV_SAMLoader", - "AV_VAELoader", - "AspectRatioSelector", - "BLIPCaption", - "BLIPLoader", - "BooleanPrimitive", - "CheckpointNameSelector", - "ColorBlend", - "ColorCorrect", - "DeepDanbooruCaption", - "DependenciesEdit", - "DownloadAndLoadBlip", - "DownloadISNetModel", - "Fooocus_KSampler", - "Fooocus_KSamplerAdvanced", - "GetBoolFromJson", - "GetFloatFromJson", - "GetIntFromJson", - "GetObjectFromJson", - "GetSAMEmbedding", - "GetTextFromJson", - "ISNetLoader", - "ISNetSegment", - "ImageAlphaComposite", - "ImageApplyChannel", - "ImageExtractChannel", - "ImageGaussianBlur", - "ImageMuxer", - "ImageRepeat", - "ImageScaleDown", - "ImageScaleDownBy", - "ImageScaleDownToSize", - "ImageScaleToMegapixels", - "LaMaInpaint", - "LoadImageAsMaskFromUrl", - "LoadImageFromUrl", - "LoadJsonFromText", - "LoadJsonFromUrl", - "MergeModels", - "NumberScaler", - "OverlayInpaintedImage", - "OverlayInpaintedLatent", - "PrepareImageAndMaskForInpaint", - "QRCodeGenerator", - "RandomFloat", - "RandomInt", - "SAMEmbeddingToImage", - "SDXLAspectRatioSelector", - "SDXLPromptStyler", - "SeedSelector", - "StringToInt", - "StringToNumber", - "TextRandomMultiline", - "TextSwitchCase" - ], - { - "title_aux": "comfyui-art-venture" - } - ], - "https://github.com/sipie800/ComfyUI-PuLID-Flux-Enhanced": [ - [ - "ApplyPulidFlux", - "PulidFluxEvaClipLoader", - "PulidFluxInsightFaceLoader", - "PulidFluxModelLoader" - ], - { - "title_aux": "ComfyUI-PuLID-Flux-Enhanced" - } - ], - "https://github.com/skfoo/ComfyUI-Coziness": [ - [ - "LoraTextExtractor-b1f83aa2", - "MultiLoraLoader-70bf3d77" - ], - { - "title_aux": "ComfyUI-Coziness" - } - ], - "https://github.com/slyt/comfyui-ollama-nodes": [ - [ - "BooleanToString", - "DownloadHuggingfaceModel", - "FloatToString", - "GenerateOllama", - "IntToString", - "ListModels", - "ListToString", - "PullModel" - ], - { - "title_aux": "comfyui-ollama-nodes" - } - ], - "https://github.com/smagnetize/kb-comfyui-nodes": [ - [ - "SingleImageDataUrlLoader" - ], - { - "title_aux": "kb-comfyui-nodes" - } - ], - "https://github.com/smlbiobot/ComfyUI-Flux-Replicate-API": [ - [ - "SML_FluxProUltra_Replicate_Standalone", - "SML_FluxPro_Replicate_Standalone" - ], - { - "title_aux": "ComfyUI-Flux-Replicate-API" - } - ], - "https://github.com/smlbiobot/sml-comfyui-prompt-expansion": [ - [ - "SML_Prompt_Generator" - ], - { - "title_aux": "sml-comfyui-prompt-expansion" - } - ], - "https://github.com/smthemex/ComfyUI_AnyDoor": [ - [ - "AnyDoor_LoadModel", - "AnyDoor_img2img" - ], - { - "title_aux": "ComfyUI_AnyDoor" - } - ], - "https://github.com/smthemex/ComfyUI_CSGO_Wrapper": [ - [ - "Blip_Loader", - "CSGO_Loader", - "CSGO_Sampler" - ], - { - "title_aux": "ComfyUI_CSGO_Wrapper" - } - ], - "https://github.com/smthemex/ComfyUI_ChatGLM_API": [ - [ - "Glm_4_9b_Chat", - "Glm_4v_9b", - "Glm_Lcoal_Or_Repo", - "ZhipuaiApi_Character", - "ZhipuaiApi_Txt", - "ZhipuaiApi_img" - ], - { - "title_aux": "ComfyUI_ChatGLM_API" - } - ], - "https://github.com/smthemex/ComfyUI_CustomNet": [ - [ - "CustomNet_LoadModel", - "CustomNet_Sampler" - ], - { - "title_aux": "ComfyUI_CustomNet" - } - ], - "https://github.com/smthemex/ComfyUI_DeepFakeDefenders": [ - [ - "DeepFakeDefender_Loader", - "DeepFakeDefender_Sampler" - ], - { - "title_aux": "ComfyUI_DeepFakeDefenders" - } - ], - "https://github.com/smthemex/ComfyUI_Demucs": [ - [ - "Demucs_Loader", - "Demucs_Sampler" - ], - { - "title_aux": "ComfyUI_Demucs" - } - ], - "https://github.com/smthemex/ComfyUI_Diffree": [ - [ - "Diffree_Model_Loader", - "Diffree_Sampler" - ], - { - "title_aux": "ComfyUI_Diffree" - } - ], - "https://github.com/smthemex/ComfyUI_EchoMimic": [ - [ - "Echo_LoadModel", - "Echo_Sampler" - ], - { - "title_aux": "ComfyUI_EchoMimic" - } - ], - "https://github.com/smthemex/ComfyUI_Face_Anon_Simple": [ - [ - "Face_Anon_Simple_Align", - "Face_Anon_Simple_LoadModel", - "Face_Anon_Simple_Sampler" - ], - { - "title_aux": "ComfyUI_Face_Anon_Simple" - } - ], - "https://github.com/smthemex/ComfyUI_FoleyCrafter": [ - [ - "FoleyCrafter_LoadModel", - "FoleyCrafter_Sampler" - ], - { - "title_aux": "ComfyUI_FoleyCrafter" - } - ], - "https://github.com/smthemex/ComfyUI_FollowYourEmoji": [ - [ - "Emoji_Make_Temple", - "FollowYouEmoji_LoadModel", - "FollowYouEmoji_Sampler" - ], - { - "title_aux": "ComfyUI_FollowYourEmoji" - } - ], - "https://github.com/smthemex/ComfyUI_Hallo2": [ - [ - "HalloLoader", - "HalloPreImgAndAudio", - "HallosSampler", - "HallosUpscaleloader", - "HallosVideoUpscale" - ], - { - "title_aux": "ComfyUI_Hallo2" - } - ], - "https://github.com/smthemex/ComfyUI_HiDiffusion_Pro": [ - [ - "HI_Diffusers_Model_Loader", - "Hi_Sampler" - ], - { - "title_aux": "ComfyUI_HiDiffusion_Pro" - } - ], - "https://github.com/smthemex/ComfyUI_ID_Animator": [ - [ - "ID_Animator", - "ID_Repo_Choice" - ], - { - "title_aux": "ComfyUI_ID_Animator" - } - ], - "https://github.com/smthemex/ComfyUI_InstantIR_Wrapper": [ - [ - "InstantIR_Loader", - "InstantIR_Sampler" - ], - { - "author": "zhaoyafei", - "title_aux": "ComfyUI_InstantIR_Wrapper" - } - ], - "https://github.com/smthemex/ComfyUI_Llama3_8B": [ - [ - "ChatQA_1p5_8b", - "Local_Or_Repo_Choice", - "Meta_Llama3_8B", - "MiniCPM_Llama3_V25" - ], - { - "title_aux": "ComfyUI_Llama3_8B" - } - ], - "https://github.com/smthemex/ComfyUI_MS_Diffusion": [ - [ - "MS_Object_img_Batch", - "MSdiffusion_Model_Loader", - "MSdiffusion_Sampler" - ], - { - "title_aux": "ComfyUI_MS_Diffusion" - } - ], - "https://github.com/smthemex/ComfyUI_MangaNinjia": [ - [ - "MangaNinjiaLoader", - "MangaNinjiaSampler" - ], - { - "title_aux": "ComfyUI_MangaNinjia" - } - ], - "https://github.com/smthemex/ComfyUI_MooER": [ - [ - "MooER_LoadModel", - "MooER_Sampler" - ], - { - "title_aux": "ComfyUI_MooER" - } - ], - "https://github.com/smthemex/ComfyUI_OmniParser": [ - [ - "OmniParser_Loader", - "OmniParser_Sampler" - ], - { - "title_aux": "ComfyUI_OmniParser" - } - ], - "https://github.com/smthemex/ComfyUI_PBR_Maker": [ - [ - "Load_MatForger", - "MatForger_Sampler" - ], - { - "title_aux": "ComfyUI_PBR_Maker" - } - ], - "https://github.com/smthemex/ComfyUI_ParlerTTS": [ - [ - "ParlerTTS_LoadModel", - "ParlerTTS_Sampler" - ], - { - "title_aux": "ComfyUI_ParlerTTS" - } - ], - "https://github.com/smthemex/ComfyUI_Pic2Story": [ - [ - "Pic2Story_Loader", - "Pic2Story_Sampler" - ], - { - "title_aux": "ComfyUI_Pic2Story" - } - ], - "https://github.com/smthemex/ComfyUI_Pipeline_Tool": [ - [ - "Pipeline_Tool" - ], - { - "title_aux": "ComfyUI_Pipeline_Tool" - } - ], - "https://github.com/smthemex/ComfyUI_Pops": [ - [ - "Pops_Decoder", - "Pops_Repo_Loader", - "Pops_Sampler" - ], - { - "title_aux": "ComfyUI_Pops" - } - ], - "https://github.com/smthemex/ComfyUI_SVFR": [ - [ - "SVFR_LoadModel", - "SVFR_Sampler", - "SVFR_img2mask" - ], - { - "title_aux": "ComfyUI_SVFR" - } - ], - "https://github.com/smthemex/ComfyUI_Sapiens": [ - [ - "SapiensLoader", - "SapiensSampler" - ], - { - "title_aux": "ComfyUI_Sapiens" - } - ], - "https://github.com/smthemex/ComfyUI_StableAudio_Open": [ - [ - "StableAudio_ModelLoader", - "StableAudio_Sampler" - ], - { - "title_aux": "ComfyUI_StableAudio_Open" - } - ], - "https://github.com/smthemex/ComfyUI_Stable_Makeup": [ - [ - "StableMakeup_LoadModel", - "StableMakeup_Sampler" - ], - { - "author": "Sajjad Ayobbi", - "title_aux": "ComfyUI_Stable_Makeup" - } - ], - "https://github.com/smthemex/ComfyUI_StoryDiffusion": [ - [ - "Comic_Type", - "EasyFunction_Lite", - "Pre_Translate_prompt", - "Storydiffusion_Model_Loader", - "Storydiffusion_Sampler" - ], - { - "title_aux": "ComfyUI_StoryDiffusion" - } - ], - "https://github.com/smthemex/ComfyUI_Streamv2v_Plus": [ - [ - "Stream_Lora_Loader", - "Stream_Model_Loader", - "Stream_Sampler" - ], - { - "title_aux": "ComfyUI_Streamv2v_Plus" - } - ], - "https://github.com/smthemex/ComfyUI_TRELLIS": [ - [ - "Trellis_LoadModel", - "Trellis_Sampler", - "Trellis_multiimage_loader" - ], - { - "title_aux": "ComfyUI_TRELLIS" - } - ], - "https://github.com/sn0w12/ComfyUI-Sn0w-Scripts": [ - [ - "Character Selector", - "Copy/Paste Textbox", - "Filter Tags", - "Generate All Characters", - "Get Font Size", - "Load Lora Folder", - "Load Lora Sn0w", - "Lora Selector", - "Lora Tester", - "Prompt Combine", - "Prompt Selector", - "Sn0w KSampler", - "Sn0w Lora Stacker", - "Upscale Image With Model By" - ], - { - "title_aux": "ComfyUI-Sn0w-Scripts" - } - ], - "https://github.com/sneccc/comfyui-snek-nodes": [ - [ - "Aesthetics", - "Aesthetics V2", - "Load AI Toolkit Latent Flux", - "Send_to_Eagle" - ], - { - "title_aux": "comfyui-snek-nodes" - } - ], - "https://github.com/solution9th/Comfyui_mobilesam": [ - [ - "MobileSamDetector", - "MobileSamModelLoader", - "MobileSamPredictor" - ], - { - "title_aux": "Comfyui_mobilesam" - } - ], - "https://github.com/souki202/ComfyUI-LoadImage-Advanced": [ - [ - "ColorAdjustment", - "LoadImageUpscale", - "LoadImageUpscaleBy" - ], - { - "title_aux": "ComfyUI-LoadImage-Advanced" - } - ], - "https://github.com/sourceful-official/LoadLoraModelOnlyWithUrl": [ - [ - "LoadLoraModelOnlyWithUrl" - ], - { - "title_aux": "LoadLoraModelOnlyWithUrl" - } - ], - "https://github.com/sousakujikken/ComfyUI-PixydustQuantizer": [ - [ - "CRTLikeEffectNode", - "Quantizer", - "XYBlurNode" - ], - { - "title_aux": "ComfyUI-PixydustQuantizer" - } - ], - "https://github.com/space-nuko/ComfyUI-Disco-Diffusion": [ - [ - "DiscoDiffusion_DiscoDiffusion", - "DiscoDiffusion_DiscoDiffusionExtraSettings", - "DiscoDiffusion_GuidedDiffusionLoader", - "DiscoDiffusion_OpenAICLIPLoader" - ], - { - "title_aux": "Disco Diffusion" - } - ], - "https://github.com/space-nuko/ComfyUI-OpenPose-Editor": [ - [ - "Nui.OpenPoseEditor" - ], - { - "title_aux": "OpenPose Editor" - } - ], - "https://github.com/space-nuko/nui-suite": [ - [ - "Nui.DynamicPromptsTextGen", - "Nui.FeelingLuckyTextGen", - "Nui.OutputString" - ], - { - "title_aux": "nui suite" - } - ], - "https://github.com/spacepxl/ComfyUI-Depth-Pro": [ - [ - "DepthPro", - "FocalFromList", - "FocalMMtoPX", - "FocalPXtoMM", - "LoadDepthPro", - "MetricDepthToInverse", - "MetricDepthToRelative" - ], - { - "title_aux": "ComfyUI-Depth-Pro" - } - ], - "https://github.com/spacepxl/ComfyUI-Florence-2": [ - [ - "Florence2", - "Florence2Postprocess", - "Florence2PostprocessAll", - "LoadFlorence2Model" - ], - { - "title_aux": "ComfyUI-Florence-2" - } - ], - "https://github.com/spacepxl/ComfyUI-HQ-Image-Save": [ - [ - "LoadEXR", - "LoadEXRFrames", - "LoadLatentEXR", - "SaveEXR", - "SaveEXRFrames", - "SaveLatentEXR", - "SaveTiff" - ], - { - "title_aux": "ComfyUI-HQ-Image-Save" - } - ], - "https://github.com/spacepxl/ComfyUI-Image-Filters": [ - [ - "AdainFilterLatent", - "AdainImage", - "AdainLatent", - "AlphaClean", - "AlphaMatte", - "BatchAlign", - "BatchAverageImage", - "BatchAverageUnJittered", - "BatchNormalizeImage", - "BatchNormalizeLatent", - "BetterFilmGrain", - "BilateralFilterImage", - "BlurImageFast", - "BlurMaskFast", - "ClampImage", - "ClampOutliers", - "ColorMatchImage", - "ConditioningSubtract", - "ConvertNormals", - "CustomNoise", - "DepthToNormals", - "DifferenceChecker", - "DilateErodeMask", - "EnhanceDetail", - "ExposureAdjust", - "ExtractNFrames", - "FrequencyCombine", - "FrequencySeparate", - "GameOfLife", - "GuidedFilterAlpha", - "GuidedFilterImage", - "ImageConstant", - "ImageConstantHSV", - "InpaintConditionApply", - "InpaintConditionEncode", - "InstructPixToPixConditioningAdvanced", - "JitterImage", - "Keyer", - "LatentNormalizeShuffle", - "LatentStats", - "MedianFilterImage", - "MergeFramesByIndex", - "ModelTest", - "NormalMapSimple", - "OffsetLatentImage", - "PrintSigmas", - "RelightSimple", - "RemapRange", - "RestoreDetail", - "SharpenFilterLatent", - "ShuffleChannels", - "Tonemap", - "UnJitterImage", - "UnTonemap", - "VisualizeLatents" - ], - { - "title_aux": "ComfyUI-Image-Filters" - } - ], - "https://github.com/spacepxl/ComfyUI-LossTesting": [ - [ - "Measure Timestep Loss" - ], - { - "title_aux": "ComfyUI-LossTesting" - } - ], - "https://github.com/spacepxl/ComfyUI-RAVE": [ - [ - "ConditioningDebug", - "ImageGridCompose", - "ImageGridDecompose", - "KSamplerRAVE", - "LatentGridCompose", - "LatentGridDecompose" - ], - { - "title_aux": "ComfyUI-RAVE" - } - ], - "https://github.com/spacepxl/ComfyUI-StyleGan": [ - [ - "BatchAverageStyleGANLatents", - "BlendStyleGANLatents", - "GenerateStyleGANLatent", - "LoadStyleGAN", - "StyleGANInversion", - "StyleGANLatentFromBatch", - "StyleGANSampler" - ], - { - "title_aux": "ComfyUI-StyleGan" - } - ], - "https://github.com/spinagon/ComfyUI-seam-carving": [ - [ - "SeamCarving" - ], - { - "title_aux": "ComfyUI-seam-carving" - } - ], - "https://github.com/spinagon/ComfyUI-seamless-tiling": [ - [ - "CircularVAEDecode", - "MakeCircularVAE", - "OffsetImage", - "SeamlessTile" - ], - { - "title_aux": "Seamless tiling Node for ComfyUI" - } - ], - "https://github.com/spro/comfyui-mirror": [ - [ - "LatentMirror" - ], - { - "title_aux": "Latent Mirror node for ComfyUI" - } - ], - "https://github.com/ssitu/ComfyUI_UltimateSDUpscale": [ - [ - "UltimateSDUpscale", - "UltimateSDUpscaleCustomSample", - "UltimateSDUpscaleNoUpscale" - ], - { - "title_aux": "UltimateSDUpscale" - } - ], - "https://github.com/ssitu/ComfyUI_fabric": [ - [ - "FABRICPatchModel", - "FABRICPatchModelAdv", - "KSamplerAdvFABRICAdv", - "KSamplerFABRIC", - "KSamplerFABRICAdv" - ], - { - "title_aux": "ComfyUI fabric" - } - ], - "https://github.com/ssitu/ComfyUI_restart_sampling": [ - [ - "KRestartSampler", - "KRestartSamplerAdv", - "KRestartSamplerCustom", - "KRestartSamplerSimple", - "RestartSampler", - "RestartScheduler" - ], - { - "title_aux": "Restart Sampling" - } - ], - "https://github.com/ssitu/ComfyUI_roop": [ - [ - "RoopImproved", - "roop" - ], - { - "title_aux": "ComfyUI roop" - } - ], - "https://github.com/stavsap/comfyui-kokoro": [ - [ - "KokoroGenerator", - "KokoroSpeaker", - "KokoroSpeakerCombiner" - ], - { - "title_aux": "comfyui-kokoro" - } - ], - "https://github.com/stavsap/comfyui-ollama": [ - [ - "OllamaConnectivityV2", - "OllamaGenerate", - "OllamaGenerateAdvance", - "OllamaGenerateV2", - "OllamaLoadContext", - "OllamaOptionsV2", - "OllamaSaveContext", - "OllamaVision" - ], - { - "title_aux": "ComfyUI Ollama" - } - ], - "https://github.com/stormcenter/ComfyUI-AutoSplitGridImage": [ - [ - "EvenImageResizer", - "GridImageSplitter" - ], - { - "title_aux": "ComfyUI-AutoSplitGridImage" - } - ], - "https://github.com/stormcenter/ComfyUI-LivePhotoCreator": [ - [ - "ImageCompareTransition", - "LivePhotoCreator", - "LivePhotoPreview" - ], - { - "title_aux": "ComfyUI LivePhoto Creator" - } - ], - "https://github.com/stormcenter/ComfyUI-SVGFullfill": [ - [ - "SVGEditor", - "SVGUploader" - ], - { - "title_aux": "ComfyUI-SVGFullfill" - } - ], - "https://github.com/storyicon/comfyui_musev_evolved": [ - [ - "AnimationZoom (comfyui_musev_evolved)", - "ImageSelector (comfyui_musev_evolved)", - "MuseVImg2Vid V1 (comfyui_musev_evolved)", - "MuseVPredictor V1 (comfyui_musev_evolved)" - ], - { - "author": "infguo", - "title_aux": "ComfyUI MuseV Evolved" - } - ], - "https://github.com/storyicon/comfyui_segment_anything": [ - [ - "GroundingDinoModelLoader (segment anything)", - "GroundingDinoSAMSegment (segment anything)", - "InvertMask (segment anything)", - "IsMaskEmpty", - "SAMModelLoader (segment anything)" - ], - { - "title_aux": "segment anything" - } - ], - "https://github.com/strand1/ComfyUI-Autogen": [ - [ - "AutogenAssistantAgent", - "AutogenCodeExecutor", - "AutogenGroupChat", - "AutogenModel" - ], - { - "title_aux": "ComfyUI-Autogen" - } - ], - "https://github.com/strimmlarn/ComfyUI-Strimmlarns-Aesthetic-Score": [ - [ - "AesthetlcScoreSorter", - "CalculateAestheticScore", - "LoadAesteticModel", - "ScoreToNumber" - ], - { - "title_aux": "ComfyUI_Strimmlarns_aesthetic_score" - } - ], - "https://github.com/styler00dollar/ComfyUI-deepcache": [ - [ - "DeepCache" - ], - { - "title_aux": "ComfyUI-deepcache" - } - ], - "https://github.com/styler00dollar/ComfyUI-sudo-latent-upscale": [ - [ - "SudoLatentUpscale" - ], - { - "title_aux": "ComfyUI-sudo-latent-upscale" - } - ], - "https://github.com/sugarkwork/comfyui_cohere": [ - [ - "SimpleCohereNode" - ], - { - "title_aux": "comfyui_cohere" - } - ], - "https://github.com/sugarkwork/comfyui_tag_fillter": [ - [ - "TagComparator", - "TagFilter", - "TagIf", - "TagMerger", - "TagRemover", - "TagReplace", - "TagSelector", - "TagSwitcher" - ], - { - "title_aux": "comfyui_tag_filter" - } - ], - "https://github.com/superyoman/comfyui_lumaAPI": [ - [ - "LUMA_API_YoC", - "LUMA_API_result_YoC" - ], - { - "title_aux": "comfyui_lumaAPI" - } - ], - "https://github.com/sweetndata/ComfyUI-Image-Harmonizer": [ - [ - "harmonizer" - ], - { - "title_aux": "ComfyUI-Image-Harmonizer" - } - ], - "https://github.com/sweetndata/ComfyUI-googletrans": [ - [ - "googletrans" - ], - { - "title_aux": "ComfyUI-googletrans" - } - ], - "https://github.com/sweetndata/ComfyUI_Sticker_Compositer": [ - [ - "Sticker_Compositer" - ], - { - "title_aux": "ComfyUI_Sticker_Compositer" - } - ], - "https://github.com/syaofox/ComfyUI_fnodes": [ - [ - "AddImageBorder-", - "AlignImageByFace-", - "ColorAdjustment-", - "ColorBlockEffect-", - "ColorTint-", - "ComputeImageScaleRatio-", - "CreateBlurredEdgeMask-", - "Depth2Mask-", - "DisplayAny-", - "ExtractBoundingBox-", - "FaceCutout-", - "FaceMorph-", - "FacePaste-", - "FilePathAnalyzer-", - "FillMaskedImageArea-", - "FlatteningEffect-", - "GeneratePreciseFaceMask-", - "GetImageSize-", - "IPAdapterMSLayerWeights-", - "IPAdapterMSTiled-", - "ImageRotate-", - "ImageScaleBySpecifiedSide-", - "ImageScalerForSDModels-", - "LoadImagesFromFolder-", - "MaskChange-", - "MaskScale-", - "MaskScaleBy-", - "OccluderLoader-", - "OutlineMask-", - "PrimitiveText-", - "ReadImage-", - "RegexExtractor-", - "ScheduleSampler-", - "ScheduleSamplerCustomAYS-", - "ScheduleSamplerCustomTurbo-", - "Seed-", - "SelectFace-", - "TrimImageBorders-" - ], - { - "title_aux": "ComfyUI_fnodes" - } - ], - "https://github.com/syllebra/bilbox-comfyui": [ - [ - "BilboXLut", - "BilboXPhotoPrompt", - "BilboXVignette" - ], - { - "title_aux": "BilboX's ComfyUI Custom Nodes" - } - ], - "https://github.com/sylym/comfy_vid2vid": [ - [ - "CheckpointLoaderSimpleSequence", - "DdimInversionSequence", - "KSamplerSequence", - "LoadImageMaskSequence", - "LoadImageSequence", - "LoraLoaderSequence", - "SetLatentNoiseSequence", - "TrainUnetSequence", - "VAEEncodeForInpaintSequence" - ], - { - "title_aux": "Vid2vid" - } - ], - "https://github.com/szhublox/ambw_comfyui": [ - [ - "Auto Merge Block Weighted", - "CLIPMergeSimple", - "CheckpointSave", - "ModelMergeBlocks", - "ModelMergeSimple" - ], - { - "title_aux": "Auto-MBW" - } - ], - "https://github.com/taabata/LCM_Inpaint_Outpaint_Comfy": [ - [ - "ComfyNodesToSaveCanvas", - "FloatNumber", - "FreeU_LCM", - "ImageDims", - "ImageOutputToComfyNodes", - "ImageResize", - "ImageShuffle", - "ImageSwitch", - "LCMGenerate", - "LCMGenerate_ReferenceOnly", - "LCMGenerate_SDTurbo", - "LCMGenerate_img2img", - "LCMGenerate_img2img_IPAdapter", - "LCMGenerate_img2img_controlnet", - "LCMGenerate_inpaintv2", - "LCMGenerate_inpaintv3", - "LCMLoader", - "LCMLoader_RefInpaint", - "LCMLoader_ReferenceOnly", - "LCMLoader_SDTurbo", - "LCMLoader_controlnet", - "LCMLoader_controlnet_inpaint", - "LCMLoader_img2img", - "LCMLoraLoader_inpaint", - "LCMLoraLoader_ipadapter", - "LCMLora_inpaint", - "LCMLora_inpaintV2", - "LCMLora_ipadapter", - "LCMT2IAdapter", - "LCM_IPAdapter", - "LCM_IPAdapter_inpaint", - "LCM_outpaint_prep", - "LoadImageNode_LCM", - "Loader_SegmindVega", - "OutpaintCanvasTool", - "SaveImage_Canvas", - "SaveImage_LCM", - "SaveImage_Puzzle", - "SaveImage_PuzzleV2", - "SegmindVega", - "SettingsSwitch", - "stitch" - ], - { - "title_aux": "LCM_Inpaint-Outpaint_Comfy" - } - ], - "https://github.com/taabata/SANA_LOWVRAM": [ - [ - "SANADiffuse", - "SANATextEncode" - ], - { - "title_aux": "SANA_LOWVRAM" - } - ], - "https://github.com/taches-ai/comfyui-scene-composer": [ - [ - "Action", - "Character", - "Clothes", - "Composition", - "Environment", - "Scene" - ], - { - "title_aux": "ComfyUI Scene Composer" - } - ], - "https://github.com/takemetosiberia/ComfyUI-SAMURAI--SAM2-": [ - [ - "SAMURAIBoxInputNode", - "SAMURAIPointsInputNode", - "SAMURAIRefineNode" - ], - { - "title_aux": "SAMURAI Nodes for ComfyUI" - } - ], - "https://github.com/talesofai/comfyui-browser": [ - [ - "DifyTextGenerator //Browser", - "LoadImageByUrl //Browser", - "SelectInputs //Browser", - "UploadToRemote //Browser", - "XyzPlot //Browser" - ], - { - "title_aux": "ComfyUI Browser" - } - ], - "https://github.com/tanglaoya321/ComfyUI-StoryMaker": [ - [ - "StoryMakerSinglePortraitNode", - "StoryMakerSwapClothNode", - "StoryMakerTwoPortraitNode" - ], - { - "title_aux": "ComfyUI-StoryMaker" - } - ], - "https://github.com/teward/ComfyUI-Helper-Nodes": [ - [ - "HelperNodes_CfgScale", - "HelperNodes_CheckpointSelector", - "HelperNodes_MultilineStringLiteral", - "HelperNodes_Prompt", - "HelperNodes_SDXLCommonResolutions", - "HelperNodes_SamplerSelector", - "HelperNodes_SaveImage", - "HelperNodes_SchedulerSelector", - "HelperNodes_SeedSelector", - "HelperNodes_Steps", - "HelperNodes_StringLiteral", - "HelperNodes_VAESelector", - "HelperNodes_WidthHeight" - ], - { - "title_aux": "ComfyUI-Helper-Nodes" - } - ], - "https://github.com/theAdamColton/ComfyUI-texflow-extension": [ - [ - "Load Texflow Depth Image", - "Save Texflow Image" - ], - { - "title_aux": "ComfyUI-texflow-extension" - } - ], - "https://github.com/theUpsider/ComfyUI-Logic": [ - [ - "Bool-\ud83d\udd2c", - "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" - ], - { - "title_aux": "ComfyUI-Logic" - } - ], - "https://github.com/theUpsider/ComfyUI-Styles_CSV_Loader": [ - [ - "Load Styles CSV" - ], - { - "title_aux": "Styles CSV Loader Extension for ComfyUI" - } - ], - "https://github.com/thecooltechguy/ComfyUI-MagicAnimate": [ - [ - "MagicAnimate", - "MagicAnimateModelLoader" - ], - { - "title_aux": "ComfyUI-MagicAnimate" - } - ], - "https://github.com/thecooltechguy/ComfyUI-Stable-Video-Diffusion": [ - [ - "SVDDecoder", - "SVDModelLoader", - "SVDSampler", - "SVDSimpleImg2Vid" - ], - { - "title_aux": "ComfyUI Stable Video Diffusion" - } - ], - "https://github.com/theshubzworld/ComfyUI-SD3.5-Latent-Size-Picker": [ - [ - "SD3_5EmptyLatent" - ], - { - "title_aux": "SD3.5 Empty Latent Size Picker" - } - ], - "https://github.com/theshubzworld/ComfyUI-TogetherVision": [ - [ - "Together Image \ud83c\udfa8", - "Together Vision \ud83d\udd0d", - "TogetherVisionNode" - ], - { - "title_aux": "Together Vision Node" - } - ], - "https://github.com/theshubzworld/ComfyUI-ollama_killer": [ - [ - "OllamaKiller" - ], - { - "title_aux": "OllamaKiller Node for ComfyUI" - } - ], - "https://github.com/thoddnn/ComfyUI-MLX": [ - [ - "MLXClipTextEncoder", - "MLXDecoder", - "MLXLoadFlux", - "MLXSampler" - ], - { - "title_aux": "ComfyUI MLX Nodes" - } - ], - "https://github.com/tianguanggliu/Utools": [ - [ - "UTools" - ], - { - "title_aux": "comfyui-utools" - } - ], - "https://github.com/tiankuan93/ComfyUI-V-Express": [ - [ - "Load_Audio_Path", - "Load_Audio_Path_From_Video", - "Load_Image_Path", - "Load_Kps_Path", - "Load_Kps_Path_From_Video", - "Load_Video_Path", - "VEINTConstant", - "VEPreview_Video", - "VEStringConstant", - "V_Express_Loader", - "V_Express_Sampler" - ], - { - "title_aux": "V-Express: Conditional Dropout for Progressive Training of Portrait Video Generation" - } - ], - "https://github.com/tianlang0704/ComfyUI-StableProjectorzBridge": [ - [ - "ProjectorzControlnetInput", - "ProjectorzControlnetParameter", - "ProjectorzInitInput", - "ProjectorzOutput", - "ProjectorzParameter", - "ProjectorzStringToFloat", - "ProjectorzStringToInt" - ], - { - "title_aux": "Stable Projectorz Bridge" - } - ], - "https://github.com/tianyuw/ComfyUI-LLM-API": [ - [ - "PromptWithImage" - ], - { - "title_aux": "Custom nodes for llm chat with optional image input" - } - ], - "https://github.com/tkreuziger/comfyui-claude": [ - [ - "Combine Texts", - "Describe Image", - "Transform Text" - ], - { - "title_aux": "ComfyUI and Claude" - } - ], - "https://github.com/tmagara/ComfyUI-Prediction-Boost": [ - [ - "PredictionBoost" - ], - { - "title_aux": "ComfyUI-Prediction-Boost" - } - ], - "https://github.com/tocubed/ComfyUI-AudioReactor": [ - [ - "AudioFrameTransformBeats", - "AudioFrameTransformShadertoy", - "AudioLoadPath", - "Shadertoy" - ], - { - "title_aux": "ComfyUI-AudioReactor" - } - ], - "https://github.com/tocubed/ComfyUI-EvTexture": [ - [ - "EVTEventsToImage", - "EVTLoadEvTextureModel", - "EVTTextureUpscaleVideo", - "EVTVideoToEvents" - ], - { - "title_aux": "ComfyUI-EvTexture" - } - ], - "https://github.com/tomudo/ComfyUI-ascii-art": [ - [ - "ImageToAscii" - ], - { - "author": "dfl", - "description": "CLIP text encoder that does BREAK prompting like A1111", - "nickname": "CLIP with BREAK", - "title": "CLIP with BREAK syntax", - "title_aux": "ComfyUI-ascii-art" - } - ], - "https://github.com/tooldigital/ComfyUI-Yolo-Cropper": [ - [ - "ToolYoloCropper" - ], - { - "title_aux": "Easy automatic (square) image cropper using Yolo" - } - ], - "https://github.com/toxicwind/ComfyUI-TTools": [ - [ - "TTools Extract JSON", - "TTools SD3 Resolution Solver" - ], - { - "title_aux": "TTools for ComfyUI" - } - ], - "https://github.com/toyxyz/ComfyUI_rgbx_Wrapper": [ - [ - "rgb2x" - ], - { - "title_aux": "ComfyUI_rgbx_Wrapper" - } - ], - "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes": [ - [ - "CaptureWebcam", - "Depth to normal", - "Direct Screen Capture", - "Export glb", - "ImageResize_Padding", - "LatentDelay", - "Load Random Text From File", - "LoadWebcamImage", - "Remove noise", - "SaveImagetoPath" - ], - { - "title_aux": "ComfyUI_toyxyz_test_nodes" - } - ], - "https://github.com/traugdor/ComfyUI-quadMoons-nodes": [ - [ - "quadmoonBatchFromLatent", - "quadmoonCLIPTextEncode", - "quadmoonChangeBackground", - "quadmoonConvertBoolToString", - "quadmoonConvertFloatToString", - "quadmoonConvertIntToString", - "quadmoonConvertNormalizeHW", - "quadmoonConvertNumberToString", - "quadmoonINTConditionalOperation", - "quadmoonKSampler", - "quadmoonKSamplerAdvanced", - "quadmoonKSamplerBatched", - "quadmoonLatentImage", - "quadmoonLoadConfigs", - "quadmoonModelLoader", - "quadmoonRotationalSampler", - "quadmoonSaveNeg", - "quadmoonSavePrompt", - "quadmoonSmartNeg", - "quadmoonSmartPrompt", - "quadmoonThebutton" - ], - { - "author": "quadmoon (https://github.com/traugdor)", - "description": "These are just some nodes I wanted and couldn't find where anyone else had made them yet.", - "nickname": "quadmoon's Nodes", - "title": "quadmoon's ComfyUI nodes", - "title_aux": "quadmoon's ComfyUI nodes" - } - ], - "https://github.com/tritant/ComfyUI_CreaPrompt": [ - [ - "CreaPrompt", - "CreaPrompt List", - "CreaPrompt_1", - "CreaPrompt_2", - "CreaPrompt_3", - "CreaPrompt_4" - ], - { - "title_aux": "ComfyUI-CreaPrompt" - } - ], - "https://github.com/trojblue/trNodes": [ - [ - "trColorCorrection", - "trLayering", - "trRouter", - "trRouterLonger" - ], - { - "title_aux": "trNodes" - } - ], - "https://github.com/troyxmccall/ComfyUI-ScaleToTargetMegapixels": [ - [ - "ScaleToTargetMegapixels" - ], - { - "title_aux": "ComfyUI-ScaleToTargetMegapixels" - } - ], - "https://github.com/trumanwong/ComfyUI-NSFW-Detection": [ - [ - "NSFWDetection" - ], - { - "title_aux": "ComfyUI-NSFW-Detection" - } - ], - "https://github.com/tsogzark/ComfyUI-load-image-from-url": [ - [ - "LoadImageFromUrlOrPath" - ], - { - "title_aux": "ComfyUI-load-image-from-url" - } - ], - "https://github.com/ttulttul/ComfyUI-Iterative-Mixer": [ - [ - "Batch Unsampler", - "Iterative Mixing KSampler", - "Iterative Mixing KSampler Advanced", - "IterativeMixingSampler", - "IterativeMixingScheduler", - "IterativeMixingSchedulerAdvanced", - "Latent Batch Comparison Plot", - "Latent Batch Statistics Plot", - "MixingMaskGenerator" - ], - { - "title_aux": "ComfyUI Iterative Mixing Nodes" - } - ], - "https://github.com/ttulttul/ComfyUI-Tensor-Operations": [ - [ - "Fast Image to Noise", - "Image Match Normalize", - "Latent Match Normalize" - ], - { - "title_aux": "ComfyUI-Tensor-Operations" - } - ], - "https://github.com/tungdop2/Comfyui_face_restorer": [ - [ - "FaceRestorer", - "FaceRestorerLoader" - ], - { - "title_aux": "Face Restorer for ComfyUI" - } - ], - "https://github.com/tungdop2/Comfyui_joy-caption-alpha-two": [ - [ - "JoyCaptioner" - ], - { - "title_aux": "Joy Caption Alpha Two for ComfyUI" - } - ], - "https://github.com/turkyden/ComfyUI-SmartCrop": [ - [ - "ImageSmartCrop" - ], - { - "title_aux": "ComfyUI-SmartCrop" - } - ], - "https://github.com/tusharbhutt/Endless-Nodes": [ - [ - "ESS Aesthetic Scoring", - "ESS Combo Parameterizer", - "ESS Combo Parameterizer & Prompts", - "ESS Eight Input Text Switch", - "ESS Float to Integer", - "ESS Float to Number", - "ESS Float to String", - "ESS Float to X", - "ESS Image Reward", - "ESS Image Saver with JSON", - "ESS Integer to Float", - "ESS Integer to Number", - "ESS Integer to String", - "ESS Integer to X", - "ESS Number to Float", - "ESS Number to Integer", - "ESS Number to String", - "ESS Number to X", - "ESS Parameterizer", - "ESS Parameterizer & Prompts", - "ESS Six Float Output", - "ESS Six Input Text Switch", - "ESS Six Integer IO Switch", - "ESS Six Integer IO Widget", - "ESS String to Float", - "ESS String to Integer", - "ESS String to Num", - "ESS String to X", - "\u267e\ufe0f\ud83c\udf0a\u2728 Image Saver with JSON" - ], - { - "author": "BiffMunky", - "description": "A small set of nodes I created for various numerical and text inputs. Features image saver with ability to have JSON saved to separate folder, parameter collection nodes, two aesthetic scoring models, switches for text and numbers, and conversion of string to numeric and vice versa.", - "nickname": "\u267e\ufe0f\ud83c\udf0a\u2728", - "title": "Endless \ufe0f\ud83c\udf0a\u2728 Nodes", - "title_aux": "Endless \ufe0f\ud83c\udf0a\u2728 Nodes" - } - ], - "https://github.com/twri/sdxl_prompt_styler": [ - [ - "SDXLPromptStyler", - "SDXLPromptStylerAdvanced" - ], - { - "title_aux": "SDXL Prompt Styler" - } - ], - "https://github.com/ty0x2333/ComfyUI-Dev-Utils": [ - [ - "TY_ExecutionTime", - "TY_UploadAnything", - "TY_UrlDownload" - ], - { - "title_aux": "ComfyUI-Dev-Utils" - } - ], - "https://github.com/uarefans/ComfyUI-Fans": [ - [ - "Fans Prompt Styler Negative", - "Fans Prompt Styler Positive", - "Fans Styler", - "Fans Text Concatenate" - ], - { - "title_aux": "ComfyUI-Fans" - } - ], - "https://github.com/uetuluk/comfyui-webcam-node": [ - [ - "webcam_capture_node" - ], - { - "title_aux": "comfyui-webcam-node" - } - ], - "https://github.com/umiyuki/comfyui-pad-to-eight": [ - [ - "Pad To Eight" - ], - { - "title_aux": "ComfyUI Pad To Eight" - } - ], - "https://github.com/un-seen/comfyui-tensorops": [ - [ - "BackgroundSelect", - "ChannelSelector", - "DownloadAndLoadFlorence2Model", - "DownloadAndLoadSAM2Model", - "FaceSwap", - "FalDifferentialDiffusion", - "FalDiffusion", - "FetchFromRedis", - "FetchJsonFromSurreal", - "Florence2Run", - "Florence2toCoordinates", - "ForegroundMask", - "GetLayerMask", - "MaskImage", - "Sam2AutoSegmentation", - "Sam2Segmentation", - "Sam2VideoSegmentation", - "Sam2VideoSegmentationAddPoints", - "SaveImageToS3", - "SaveJsonToSurreal", - "SaveTextToSurreal", - "SaveToRedis", - "SendImageOnWebSocket", - "SendJsonOnWebSocket", - "SeparateMask" - ], - { - "title_aux": "comfyui-tensorop" - } - ], - "https://github.com/un-seen/comfyui_segment_anything_plus": [ - [ - "GroundingDinoModelLoader (segment anything plus)", - "GroundingDinoSAMSegment (segment anything plus)", - "InvertMask (segment anything plus)", - "IsMaskEmpty (segment anything plus)", - "SAMModelLoader (segment anything plus)" - ], - { - "title_aux": "ComfyUI Segment Anything" - } - ], - "https://github.com/unwdef/unwdef-nodes-comfyui": [ - [ - "RandomTextFromMultiline", - "RandomizeLoras", - "RandomizeLorasStack", - "TextMultilineWithVariables" - ], - { - "title_aux": "unwdef-nodes" - } - ], - "https://github.com/valofey/Openrouter-Node": [ - [ - "OpenrouterNode" - ], - { - "title_aux": "OpenRouter Node" - } - ], - "https://github.com/vanche1212/ComfyUI-ZMG-Nodes": [ - [ - "VC_Load_Video_Path_Unified_Output", - "VC_Load_Video_Upload_Unified_Output", - "VC_Video_Combine_Unified_Output", - "Waveform2Audio", - "\ud83d\ude0bAPI Request Node", - "\ud83d\ude0bJSON Parser Node", - "\ud83d\ude0bOld Photo Colorization Node", - "\ud83d\ude0bOllama Request Node", - "\ud83d\ude0bSave Image Unified Output" - ], - { - "title_aux": "ZMG PLUGIN" - } - ], - "https://github.com/vanillacode314/SimpleWildcardsComfyUI": [ - [ - "SimpleConcat", - "SimpleWildcard" - ], - { - "author": "VanillaCode314", - "description": "A simple wildcard node for ComfyUI. Can also be used a style prompt node.", - "nickname": "Simple Wildcard", - "title": "Simple Wildcard", - "title_aux": "Simple Wildcard" - } - ], - "https://github.com/var1ableX/ComfyUI_Accessories": [ - [ - "ACC_AnyCast", - "GetMaskDimensions", - "GetRandomDimensions", - "isImageEmpty", - "isMaskEmpty" - ], - { - "title_aux": "ComfyUI_Accessories" - } - ], - "https://github.com/vault-developer/comfyui-image-blender": [ - [ - "ImageBlender" - ], - { - "title_aux": "ImageBlender" - } - ], - "https://github.com/veighnsche/comfyui_gr85": [ - [ - "GR85_CTGPhrases", - "GR85_CTGPhrasesSimple", - "GR85_ContainsWord", - "GR85_FilterAndCombineMasks", - "GR85_Florence2RunCTPG", - "GR85_Florence2toCoordinatesGR85", - "GR85_FluxAttentionSeeker2", - "GR85_FluxAttentionSeeker3", - "GR85_FluxAttentionSeekerGenerator", - "GR85_FluxModelMergeParameters", - "GR85_ImageDimensionResizer", - "GR85_ImageSizer", - "GR85_ImageSizerAll", - "GR85_IntToString", - "GR85_IntegerSequenceModifier", - "GR85_IslandMaskGenerator", - "GR85_MaskBatchToSEGS", - "GR85_MaskConnectMST", - "GR85_MaskSplitter", - "GR85_NextSeed", - "GR85_PasteByMaskGr85", - "GR85_RandomFloat", - "GR85_RandomInt", - "GR85_RandomRatio", - "GR85_RandomizedMaskTransform", - "GR85_Sam2Segmentation", - "GR85_SaveImageFile", - "GR85_SaveTextFile", - "GR85_SeedBasedOutputSelector", - "GR85_ShowText", - "GR85_SimpleWildcardPicker", - "GR85_StrSafe", - "GR85_TagInjector", - "GR85_TagInjectorDuo", - "GR85_TagInjectorLarge", - "GR85_TagInjectorSingle", - "GR85_VerticalWildcardPicker" - ], - { - "title_aux": "comfyui_gr85" - } - ], - "https://github.com/victorchall/comfyui_webcamcapture": [ - [ - "WebcamCapture" - ], - { - "title_aux": "Comfyui Webcam capture node" - } - ], - "https://github.com/vienteck/ComfyUI-Chat-GPT-Integration": [ - [ - "ChatGptPrompt" - ], - { - "title_aux": "ComfyUI-Chat-GPT-Integration" - } - ], - "https://github.com/violet-chen/comfyui-psd2png": [ - [ - "Psd2Png", - "StringInsert" - ], - { - "title_aux": "comfyui-psd2png" - } - ], - "https://github.com/viperyl/ComfyUI-RGT": [ - [ - "RGT_Upscale" - ], - { - "title_aux": "ComfyUI-RGT" - } - ], - "https://github.com/vivax3794/ComfyUI-Sub-Nodes": [ - [ - "VIV_Default", - "VIV_Subgraph", - "VIV_Subgraph_Inputs", - "VIV_Subgraph_Outputs" - ], - { - "title_aux": "ComfyUI-Sub-Nodes" - } - ], - "https://github.com/vivax3794/ComfyUI-Vivax-Nodes": [ - [ - "Any String", - "Chunk Up", - "Get Chunk", - "Inspect", - "Join Chunks", - "Model From URL" - ], - { - "title_aux": "ComfyUI-Vivax-Nodes" - } - ], - "https://github.com/vkff5833/ComfyUI-PromptConverter": [ - [ - "PromptConverter", - "PromptConverterWithFilter" - ], - { - "title_aux": "ComfyUI-PromptConverter" - } - ], - "https://github.com/vsevolod-oparin/comfyui-kandinsky22": [ - [ - "comfy-kandinsky22-decoder-loader", - "comfy-kandinsky22-hint-combiner", - "comfy-kandinsky22-image-encoder", - "comfy-kandinsky22-img-latents", - "comfy-kandinsky22-latents", - "comfy-kandinsky22-movq-decoder", - "comfy-kandinsky22-positive-text-encoder", - "comfy-kandinsky22-prior-averaging-2", - "comfy-kandinsky22-prior-averaging-3", - "comfy-kandinsky22-prior-averaging-4", - "comfy-kandinsky22-prior-loader", - "comfy-kandinsky22-text-encoder", - "comfy-kandinsky22-unet-decoder" - ], - { - "title_aux": "Kandinsky 2.2 ComfyUI Plugin" - } - ], - "https://github.com/vuongminh1907/ComfyUI_ZenID": [ - [ - "ApplyZenID", - "InstantIDFaceAnalysis", - "InstantIDModelLoader", - "ZenIDCombineFace" - ], - { - "title_aux": "ComfyUI_ZenID" - } - ], - "https://github.com/wTechArtist/ComfyUI-CustomNodes": [ - [ - "GPT4 WWL", - "IPAdapter FaceID With Bool", - "IPAdapter Mad Scientist Weight_Type", - "Image Blending Mode Mask", - "Load Image With Bool", - "Load Lora With Shared" - ], - { - "title_aux": "ComfyUI-CustomNodes" - } - ], - "https://github.com/wTechArtist/ComfyUI-StableDelight-weiweiliang": [ - [ - "StableDelight-weiweiliang" - ], - { - "title_aux": "ComfyUI-StableDelight-weiweiliang" - } - ], - "https://github.com/wallish77/wlsh_nodes": [ - [ - "Alternating KSampler (WLSH)", - "Build Filename String (WLSH)", - "CLIP +/- w/Text Unified (WLSH)", - "CLIP Positive-Negative (WLSH)", - "CLIP Positive-Negative XL (WLSH)", - "CLIP Positive-Negative XL w/Text (WLSH)", - "CLIP Positive-Negative w/Text (WLSH)", - "Checkpoint Loader w/Name (WLSH)", - "Empty Latent by Pixels (WLSH)", - "Empty Latent by Ratio (WLSH)", - "Empty Latent by Size (WLSH)", - "Generate Border Mask (WLSH)", - "Grayscale Image (WLSH)", - "Image Load with Metadata (WLSH)", - "Image Save with Prompt (WLSH)", - "Image Save with Prompt File (WLSH)", - "Image Save with Prompt/Info (WLSH)", - "Image Save with Prompt/Info File (WLSH)", - "Image Scale By Factor (WLSH)", - "Image Scale by Shortside (WLSH)", - "KSamplerAdvanced (WLSH)", - "Multiply Integer (WLSH)", - "Outpaint to Image (WLSH)", - "Prompt Weight (WLSH)", - "Quick Resolution Multiply (WLSH)", - "Resolutions by Ratio (WLSH)", - "SDXL Quick Empty Latent (WLSH)", - "SDXL Quick Image Scale (WLSH)", - "SDXL Resolutions (WLSH)", - "SDXL Steps (WLSH)", - "Save Positive Prompt(WLSH)", - "Save Prompt (WLSH)", - "Save Prompt/Info (WLSH)", - "Seed and Int (WLSH)", - "Seed to Number (WLSH)", - "Simple Pattern Replace (WLSH)", - "Simple String Combine (WLSH)", - "Time String (WLSH)", - "Upscale by Factor with Model (WLSH)", - "VAE Encode for Inpaint w/Padding (WLSH)" - ], - { - "title_aux": "wlsh_nodes" - } - ], - "https://github.com/web3nomad/ComfyUI_Invisible_Watermark": [ - [ - "InvisibleWatermarkEncode" - ], - { - "title_aux": "ComfyUI Invisible Watermark" - } - ], - "https://github.com/webfiltered/DebugNode-ComfyUI": [ - [ - "WTFDebugNode" - ], - { - "title_aux": "WTF? - a debug node for ComfyUI" - } - ], - "https://github.com/weilin9999/WeiLin-ComfyUI-prompt-all-in-one": [ - [ - "WeiLinComfyUIPromptAllInOneGreat", - "WeiLinComfyUIPromptAllInOneNeg", - "WeiLinComfyUIPromptToLoras", - "WeiLinComfyUIPromptToLorasOnly", - "WeiLinPromptToString" - ], - { - "title_aux": "WeiLin-ComfyUI-prompt-all-in-one" - } - ], - "https://github.com/weilin9999/WeiLin-Comfyui-Tools": [ - [ - "WeiLinPromptUI" - ], - { - "title_aux": "WeiLin-Comfyui-Tools" - } - ], - "https://github.com/welltop-cn/ComfyUI-TeaCache": [ - [ - "CompileModel", - "TeaCacheForCogVideoX", - "TeaCacheForImgGen", - "TeaCacheForVidGen" - ], - { - "title_aux": "ComfyUI-TeaCache" - } - ], - "https://github.com/wentao-uw/ComfyUI-template-matching": [ - [ - "IsMaskEmptyNode (template matching)", - "TemplateMatching (template matching)" - ], - { - "title_aux": "ComfyUI template matching" - } - ], - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-editor": [ - [ - "OpenposeEditorNode" - ], - { - "title_aux": "ComfyUI-ultimate-openpose-editor" - } - ], - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-estimator": [ - [ - "OpenposeEstimatorNode" - ], - { - "title_aux": "ComfyUI-ultimate-openpose-estimator" - } - ], - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-render": [ - [ - "OpenposeRenderNode" - ], - { - "title_aux": "ComfyUI-ultimate-openpose-render" - } - ], - "https://github.com/whatbirdisthat/cyberdolphin": [ - [ - "\ud83d\udc2c Gradio ChatInterface", - "\ud83d\udc2c OpenAI Advanced", - "\ud83d\udc2c OpenAI Compatible", - "\ud83d\udc2c OpenAI DALL\u00b7E", - "\ud83d\udc2c OpenAI Simple" - ], - { - "title_aux": "cyberdolphin" - } - ], - "https://github.com/whmc76/ComfyUI-Openpose-Editor-Plus": [ - [ - "CDL.OpenPoseEditorPlus" - ], - { - "title_aux": "ComfyUI-Openpose-Editor-Plus" - } - ], - "https://github.com/willchil/ComfyUI-Environment-Visualizer": [ - [ - "EnvironmentVisualizer", - "InterpolateEdges", - "MapEquirectangular" - ], - { - "title_aux": "ComfyUI-Environment-Visualizer" - } - ], - "https://github.com/windfancy/zsq_prompt": [ - [ - "BatchPromptJson", - "BatchPromptSelector", - "ConnectionString", - "DoubleCLIPEncode", - "FloatMathOperation", - "ImageAddText", - "ImageEmpty", - "IndexString", - "IntMathOperation", - "JoinImageBatch", - "LLMImage", - "LLMText", - "OptionString", - "PortraitStyler", - "SaveJpgImage", - "StringInput", - "ZSQPixelLatent", - "ZSQRatioLatent", - "ZSQShowINT", - "ZSQShowText", - "checkpoint_sampler", - "controlnetStack", - "controlnetStack_2", - "imageConcat", - "imageCount", - "imageCrop", - "imageDetailTransfer", - "imageFilter", - "imageFlip", - "imageGaussianBlur", - "imageHug", - "imageRGB", - "imageRatio", - "imageResize", - "imageRotate", - "imageSaveSimple", - "imageScaleDown", - "imageScaleDownBy", - "imageSharpen", - "imageSize", - "imageTilesFromBatch", - "imagesSplitImage", - "loraStack", - "loraStack_2", - "stylesSelector", - "zsqcheckpoint", - "zsqcontrolnet", - "zsqsampler" - ], - { - "title_aux": "zsq_prompt" - } - ], - "https://github.com/wjl0313/ComfyUI_KimNodes": [ - [ - "Add_ImageMetadata", - "Crop_Paste", - "Distribute_Icons", - "ExtractDifferenceLora", - "IconDistributeByGrid", - "Icon_Position_Cropper", - "ImageResize", - "Image_Classification", - "KimFilter", - "KimHDR", - "LoadImage_Metadata", - "Manual_MetadataInput", - "Prompt_Text", - "Save_Image", - "Seamless_Icon_Generator", - "Text_Match", - "Whitening_Node", - "YOLOWorld_Match", - "YOLO_Crop" - ], - { - "title_aux": "ComfyUI_KimNodes" - } - ], - "https://github.com/wmatson/easy-comfy-nodes": [ - [ - "EZAssocDictNode", - "EZAssocImgNode", - "EZAssocStrNode", - "EZEmptyDictNode", - "EZHttpPostNode", - "EZLoadImgBatchFromUrlsNode", - "EZLoadImgFromUrlNode", - "EZRemoveImgBackground", - "EZS3Uploader" - ], - { - "title_aux": "easy-comfy-nodes" - } - ], - "https://github.com/wmpmiles/comfyui-some-image-processing-stuff": [ - [ - "Blur Mask", - "Color Grading", - "Latent Zero Mask", - "Mask-Crop Inpaint | Post", - "Mask-Crop Inpaint | Pre", - "Mask-Crop | Post", - "Mask-Crop | Pre", - "Resample Image", - "Resample Latent", - "Resample Mask", - "Resampler | Area", - "Resampler | Jinc-Lanczos", - "Resampler | Lanczos", - "Resampler | Mitchell-Netravali", - "Resampler | Nearest-Neighbor", - "Resampler | Triangle", - "Scaler | Area", - "Scaler | Fixed", - "Scaler | Megapixels", - "Scaler | Pixel Deltas", - "Scaler | Side", - "Scaler | Sides Unlinked" - ], - { - "title_aux": "comfyui-some-image-processing-stuff" - } - ], - "https://github.com/wolfden/ComfyUi_PromptStylers": [ - [ - "SDXLPromptStylerAll", - "SDXLPromptStylerHorror", - "SDXLPromptStylerMisc", - "SDXLPromptStylerbyArtist", - "SDXLPromptStylerbyCamera", - "SDXLPromptStylerbyComposition", - "SDXLPromptStylerbyCyberpunkSurrealism", - "SDXLPromptStylerbyDepth", - "SDXLPromptStylerbyEnvironment", - "SDXLPromptStylerbyFantasySetting", - "SDXLPromptStylerbyFilter", - "SDXLPromptStylerbyFocus", - "SDXLPromptStylerbyImpressionism", - "SDXLPromptStylerbyLighting", - "SDXLPromptStylerbyMileHigh", - "SDXLPromptStylerbyMood", - "SDXLPromptStylerbyMythicalCreature", - "SDXLPromptStylerbyOriginal", - "SDXLPromptStylerbyQuantumRealism", - "SDXLPromptStylerbySteamPunkRealism", - "SDXLPromptStylerbySubject", - "SDXLPromptStylerbySurrealism", - "SDXLPromptStylerbyTheme", - "SDXLPromptStylerbyTimeofDay", - "SDXLPromptStylerbyWyvern", - "SDXLPromptbyCelticArt", - "SDXLPromptbyContemporaryNordicArt", - "SDXLPromptbyFashionArt", - "SDXLPromptbyGothicRevival", - "SDXLPromptbyIrishFolkArt", - "SDXLPromptbyRomanticNationalismArt", - "SDXLPromptbySportsArt", - "SDXLPromptbyStreetArt", - "SDXLPromptbyVikingArt", - "SDXLPromptbyWildlifeArt" - ], - { - "title_aux": "SDXL Prompt Styler (customized version by wolfden)" - } - ], - "https://github.com/wolfden/ComfyUi_String_Function_Tree": [ - [ - "StringFunction" - ], - { - "title_aux": "ComfyUi_String_Function_Tree" - } - ], - "https://github.com/wootwootwootwoot/ComfyUI-RK-Sampler": [ - [ - "RungeKuttaSampler" - ], - { - "author": "wootwootwootwoot", - "description": "Batched Runge-Kutta Samplers for ComfyUI", - "nickname": "ComfyUI-RK-Sampler", - "title": "ComfyUI-RK-Sampler", - "title_aux": "ComfyUI-RK-Sampler" - } - ], - "https://github.com/wqjuser/ComfyUI-Chat-Image": [ - [ - "LLMImageDescription" - ], - { - "title_aux": "ComfyUI-Chat-Image" - } - ], - "https://github.com/wu12023/ComfyUI-Image-Evaluation": [ - [ - "Clip_Score-\ud83d\udd2c", - "Dino_Score-\ud83d\udd2c" - ], - { - "title_aux": "ComfyUI-Image-Evaluation" - } - ], - "https://github.com/wujm424606/ComfyUi-Ollama-YN": [ - [ - "MyOllamaDeleteModel", - "MyOllamaGenerate", - "MyOllamaGenerateAdvance", - "MyOllamaLoadContext", - "MyOllamaSaveContext", - "MyOllamaSpecialGenerateAdvance", - "MyOllamaVision" - ], - { - "title_aux": "ComfyUi-Ollama-YN" - } - ], - "https://github.com/wutipong/ComfyUI-TextUtils": [ - [ - "Text Utils - Join N-Elements of String List", - "Text Utils - Join String List", - "Text Utils - Join Strings", - "Text Utils - Split String to List" - ], - { - "title_aux": "ComfyUI-TextUtils" - } - ], - "https://github.com/wwwins/ComfyUI-Simple-Aspect-Ratio": [ - [ - "SimpleAspectRatio" - ], - { - "title_aux": "ComfyUI-Simple-Aspect-Ratio" - } - ], - "https://github.com/xXAdonesXx/NodeGPT": [ - [ - "AppendAgent", - "Assistant", - "Chat", - "ChatGPT", - "CombineInput", - "Conditioning", - "CostumeAgent_1", - "CostumeAgent_2", - "CostumeMaster_1", - "Critic", - "DisplayString", - "DisplayTextAsImage", - "EVAL", - "Engineer", - "Executor", - "GroupChat", - "Image_generation_Conditioning", - "LM_Studio", - "LoadAPIconfig", - "LoadTXT", - "MemGPT", - "Memory_Excel", - "Model_1", - "Ollama", - "Output2String", - "Planner", - "Scientist", - "TextCombine", - "TextGeneration", - "TextGenerator", - "TextInput", - "TextOutput", - "UserProxy", - "llama-cpp", - "llava", - "oobaboogaOpenAI" - ], - { - "title_aux": "NodeGPT" - } - ], - "https://github.com/xfgexo/EXO-Custom-ComfyUI-Nodes": [ - [ - "ComfyUI_EXO_Clip_Text_Encode", - "ComfyUI_EXO_DisplayText", - "ComfyUI_EXO_FluxSampler", - "ComfyUI_EXO_FluxSamplerMini", - "ComfyUI_EXO_ImageRescale", - "ComfyUI_EXO_LatentImageSize", - "ComfyUI_EXO_LatentImageSizeX", - "ComfyUI_EXO_Notes", - "ComfyUI_EXO_NumericValue", - "ComfyUI_EXO_PromptBuilderDeluxe", - "ComfyUI_EXO_SaveText", - "ComfyUI_EXO_TranslateText" - ], - { - "title_aux": "EXO Custom ComfyUI Nodes" - } - ], - "https://github.com/xiaoxiaodesha/hd_node": [ - [ - "Combine HDMasks", - "Cover HDMasks", - "HD FaceIndex", - "HD GetMaskArea", - "HD Image Levels", - "HD SmoothEdge", - "HD UltimateSDUpscale" - ], - { - "title_aux": "hd-nodes-comfyui" - } - ], - "https://github.com/xlinx/ComfyUI-decadetw-auto-messaging-realtime": [ - [ - "Auto-MSG-ALL", - "Auto-MSG-Discord-Bot", - "Auto-MSG-Line-Notify", - "Auto-MSG-Telegram-Bot" - ], - { - "title_aux": "ComfyUI-decadetw-auto-messaging-realtime" - } - ], - "https://github.com/xlinx/ComfyUI-decadetw-auto-prompt-llm": [ - [ - "Auto-LLM-Text", - "Auto-LLM-Text-Vision", - "Auto-LLM-Vision" - ], - { - "title_aux": "ComfyUI-decadetw-auto-prompt-llm" - } - ], - "https://github.com/xlinx/ComfyUI-decadetw-spout-syphon-im-vj": [ - [ - "Im-SD-VJ-SPOUT", - "Im-SD-VJ-SYPHON" - ], - { - "title_aux": "ComfyUI-decadetw-spout-syphon-im-vj" - } - ], - "https://github.com/xliry/ComfyUI_SendDiscord": [ - [ - "SendDiscord" - ], - { - "title_aux": "ComfyUI_SendDiscord" - } - ], - "https://github.com/xobiomesh/ComfyUI_xObiomesh": [ - [ - "OllamaModelSelect", - "OllamaTextGen", - "ShowText_xO", - "xO_ComfyUIPortRunner", - "xO_GetImageFilename", - "xO_LoadRecentFile", - "xO_TestScriptRunner", - "xO_WorkflowRunner" - ], - { - "title_aux": "ComfyUI Neural Nodes" - } - ], - "https://github.com/xs315431/Comfyui_Get_promptId": [ - [ - "GetPromptId", - "SuccessCallback" - ], - { - "title_aux": "Comfyui_Get_promptId" - } - ], - "https://github.com/xuhongming251/ComfyUI-GPEN": [ - [ - "FaceEnhancement" - ], - { - "title_aux": "ComfyUI-GPEN" - } - ], - "https://github.com/xuhongming251/ComfyUI-MuseTalkUtils": [ - [ - "MuseTalkPostprocess", - "MuseTalkPreprocess", - "MuseTalkTrain", - "MuseTalkTrainPreprocess", - "MuseTalkUncropMask" - ], - { - "title_aux": "ComfyUI-MuseTalkUtils" - } - ], - "https://github.com/xuhongming251/ComfyUI_Camera": [ - [ - "Load Image From Local Camera", - "Save Image To Local Camera" - ], - { - "title_aux": "ComfyUI_Camera" - } - ], - "https://github.com/yanlang0123/ComfyUI_Lam": [ - [ - "AspectRatio", - "AutioPath", - "DoWhileEnd", - "DoWhileStart", - "EasyPromptSelecto", - "FaceFusion", - "ForEnd", - "ForInnerEnd", - "ForInnerStart", - "ForStart", - "GLM3Prompt", - "IdentifyingQR", - "IfInnerExecute", - "Image2Video", - "ImageAddMask", - "ImageBlank", - "ImageClone", - "ImageCropFaces", - "ImageLama", - "ImageToMasks", - "LAM.OpenPoseEditorPlus", - "LamCommonNames", - "LamCommonPrint", - "LamCommonPrintNoOutput", - "LamGetPngInfo", - "LamLoadPathImage", - "LamLoadVideo", - "LamSaveOnly", - "LamSwitcherCase", - "LoadDirImgPaths", - "LoadReplaceImage", - "LongTextToList", - "MultiControlNetApply", - "MultiGLIGENTextBoxApply", - "MultiIPAdapterRegional", - "MultiIntFormula", - "MultiParamFormula", - "MultiTextConcatenate", - "MultiTextEncode", - "MultiTextEncodeAdvanced", - "MultiTextSelelct", - "MultiTextSetArea", - "MultiTextSetGligen", - "MultiTextSetMask", - "OutDoWhileEnd", - "OutDoWhileStart", - "PreviewImageLam", - "PromptTranslator", - "QRCode", - "SaveImageLam", - "SectionEnd", - "SectionStart", - "StyleSelecto", - "Text2AutioEdgeTts", - "TextListSelelct", - "VideoAddAudio", - "VideoFaceFusion", - "VideoPath", - "WaitImagSelector", - "ZhPromptTranslator" - ], - { - "title_aux": "ComfyUI_Lam" - } - ], - "https://github.com/ycchanau/ComfyUI_Preview_Magnifier": [ - [ - "YC.ImageComparerMagnifier", - "YC.PreviewImageMagnifier", - "YC.XYPreviewImageMagnifier" - ], - { - "title_aux": "ComfyUI Preview Magnifier" - } - ], - "https://github.com/ycyy/ComfyUI-YCYY-LoraInfo": [ - [ - "LoraInfo" - ], - { - "title_aux": "ComfyUI-YCYY-LoraInfo" - } - ], - "https://github.com/yffyhk/comfyui_auto_danbooru": [ - [ - "GetDanbooru", - "TagEncode" - ], - { - "title_aux": "comfyui_auto_danbooru" - } - ], - "https://github.com/yhayano-ponotech/ComfyUI-Fal-API-Flux": [ - [ - "FalAPIFluxControlNetConfigNode", - "FalAPIFluxControlNetUnionConfigNode", - "FalAPIFluxDevCannyWithLoraNode", - "FalAPIFluxDevImageToImageNode", - "FalAPIFluxDevNode", - "FalAPIFluxDevWithLoraAndControlNetImageToImageNode", - "FalAPIFluxDevWithLoraAndControlNetInpaintNode", - "FalAPIFluxDevWithLoraAndControlNetNode", - "FalAPIFluxDevWithLoraImageToImageNode", - "FalAPIFluxDevWithLoraInpaintNode", - "FalAPIFluxDevWithLoraNode", - "FalAPIFluxLoraConfigNode", - "FalAPIFluxProCannyNode", - "FalAPIFluxProDepthNode", - "FalAPIFluxProFillNode", - "FalAPIFluxProNode", - "FalAPIFluxProReduxNode", - "FalAPIFluxProV11Node", - "FalAPIFluxProV11UltraNode" - ], - { - "title_aux": "ComfyUI-Fal-API-Flux" - } - ], - "https://github.com/yhayano-ponotech/comfyui-save-image-local": [ - [ - "Local Save" - ], - { - "title_aux": "ComfyUI Local Save Node" - } - ], - "https://github.com/yichengup/Comfyui-Deepseek": [ - [ - "DeepseekAdvancedNode", - "DeepseekNode", - "DeepseekReasonerNode" - ], - { - "title_aux": "Comfyui-Deepseek" - } - ], - "https://github.com/yichengup/Comfyui-Ycanvas": [ - [ - "CanvasNode" - ], - { - "title_aux": "Comfyui-Ycanvas" - } - ], - "https://github.com/yichengup/Comfyui_Flux_Style_Adjust": [ - [ - "StyleModelAdvancedApply" - ], - { - "title_aux": "Comfyui_Flux_Style_Adjust (Redux)" - } - ], - "https://github.com/yichengup/Comfyui_Redux_Advanced": [ - [ - "YC_LG_Redux" - ], - { - "title_aux": "Comfyui_Redux_Advanced" - } - ], - "https://github.com/yiwangsimple/ComfyUI_DW_Chat": [ - [ - "DeepSeekChatNode", - "DeepSeekTranslator", - "ErrorLogNode", - "ExecutionTime", - "FileBasedChatNode", - "FluxPromptEngineeringNode", - "Gemini1_5Text", - "Gemini1_5Vision", - "GeminiFluxPrompt", - "Gemma2PromptNode", - "GemmaDialogueNode", - "GithubLinkNode", - "GroqChatNode", - "MoonshotMultiChatNode", - "MoonshotSingleChatNode", - "OllamaImageToText", - "OllamaPromptExtractor", - "OllamaTextToText", - "PaliGemma3bCaptioner", - "PromptEngineeringNode", - "PromptExtractorNode", - "Qwen2VLCaption", - "Qwen2VLLocalCaption", - "SD3LongCaptionerV2", - "SDPromptAgent", - "dwimage2" - ], - { - "title_aux": "ComfyUI_DW_Chat" - } - ], - "https://github.com/yiwangsimple/florence_dw": [ - [ - "Florence2", - "Florence2Postprocess", - "Florence2PostprocessAll", - "LoadFlorence2Model" - ], - { - "title_aux": "florence_dw" - } - ], - "https://github.com/yolain/ComfyUI-Easy-Use": [ - [ - "dynamicThresholdingFull", - "easy LLLiteLoader", - "easy XYInputs: CFG Scale", - "easy XYInputs: Checkpoint", - "easy XYInputs: ControlNet", - "easy XYInputs: Denoise", - "easy XYInputs: FluxGuidance", - "easy XYInputs: Lora", - "easy XYInputs: ModelMergeBlocks", - "easy XYInputs: NegativeCond", - "easy XYInputs: NegativeCondList", - "easy XYInputs: PositiveCond", - "easy XYInputs: PositiveCondList", - "easy XYInputs: PromptSR", - "easy XYInputs: Sampler/Scheduler", - "easy XYInputs: Seeds++ Batch", - "easy XYInputs: Steps", - "easy XYPlot", - "easy XYPlotAdvanced", - "easy a1111Loader", - "easy ab", - "easy anythingIndexSwitch", - "easy anythingInversedSwitch", - "easy applyBrushNet", - "easy applyFooocusInpaint", - "easy applyInpaint", - "easy applyPowerPaint", - "easy batchAnything", - "easy blocker", - "easy boolean", - "easy cascadeKSampler", - "easy cascadeLoader", - "easy ckptNames", - "easy cleanGpuUsed", - "easy clearCacheAll", - "easy clearCacheKey", - "easy comfyLoader", - "easy compare", - "easy conditioningIndexSwitch", - "easy controlnetLoader", - "easy controlnetLoader++", - "easy controlnetLoaderADV", - "easy controlnetNames", - "easy controlnetStack", - "easy controlnetStackApply", - "easy convertAnything", - "easy detailerFix", - "easy float", - "easy fluxLoader", - "easy fluxPromptGenAPI", - "easy forLoopEnd", - "easy forLoopStart", - "easy fullCascadeKSampler", - "easy fullLoader", - "easy fullkSampler", - "easy globalSeed", - "easy hiresFix", - "easy humanSegmentation", - "easy hunyuanDiTLoader", - "easy icLightApply", - "easy if", - "easy ifElse", - "easy imageBatchToImageList", - "easy imageChooser", - "easy imageColorMatch", - "easy imageConcat", - "easy imageCount", - "easy imageCropFromMask", - "easy imageDetailTransfer", - "easy imageIndexSwitch", - "easy imageInsetCrop", - "easy imageInterrogator", - "easy imageListToImageBatch", - "easy imagePixelPerfect", - "easy imageRatio", - "easy imageRemBg", - "easy imageSave", - "easy imageScaleDown", - "easy imageScaleDownBy", - "easy imageScaleDownToSize", - "easy imageScaleToNormPixels", - "easy imageSize", - "easy imageSizeByLongerSide", - "easy imageSizeBySide", - "easy imageSplitGrid", - "easy imageSplitList", - "easy imageSplitTiles", - "easy imageSwitch", - "easy imageTilesFromBatch", - "easy imageToBase64", - "easy imageToMask", - "easy imageUncropFromBBOX", - "easy imagesCountInDirectory", - "easy imagesSplitImage", - "easy indexAnything", - "easy injectNoiseToLatent", - "easy instantIDApply", - "easy instantIDApplyADV", - "easy int", - "easy ipadapterApply", - "easy ipadapterApplyADV", - "easy ipadapterApplyEmbeds", - "easy ipadapterApplyEncoder", - "easy ipadapterApplyFaceIDKolors", - "easy ipadapterApplyFromParams", - "easy ipadapterApplyRegional", - "easy ipadapterStyleComposition", - "easy isFileExist", - "easy isMaskEmpty", - "easy isNone", - "easy isSDXL", - "easy joinImageBatch", - "easy kSampler", - "easy kSamplerCustom", - "easy kSamplerDownscaleUnet", - "easy kSamplerInpainting", - "easy kSamplerLayerDiffusion", - "easy kSamplerSDTurbo", - "easy kSamplerTiled", - "easy kolorsLoader", - "easy latentCompositeMaskedWithCond", - "easy latentNoisy", - "easy lengthAnything", - "easy loadImageBase64", - "easy loadImagesForLoop", - "easy loraStack", - "easy loraStackApply", - "easy makeImageForICLora", - "easy mathFloat", - "easy mathInt", - "easy mathString", - "easy mochiLoader", - "easy negative", - "easy outputToList", - "easy pipeBatchIndex", - "easy pipeEdit", - "easy pipeEditPrompt", - "easy pipeIn", - "easy pipeOut", - "easy pipeToBasicPipe", - "easy pixArtLoader", - "easy pixels", - "easy portraitMaster", - "easy poseEditor", - "easy positive", - "easy preDetailerFix", - "easy preMaskDetailerFix", - "easy preSampling", - "easy preSamplingAdvanced", - "easy preSamplingCascade", - "easy preSamplingCustom", - "easy preSamplingDynamicCFG", - "easy preSamplingLayerDiffusion", - "easy preSamplingLayerDiffusionADDTL", - "easy preSamplingNoiseIn", - "easy preSamplingSdTurbo", - "easy prompt", - "easy promptConcat", - "easy promptLine", - "easy promptList", - "easy promptReplace", - "easy pulIDApply", - "easy pulIDApplyADV", - "easy rangeFloat", - "easy rangeInt", - "easy removeLocalImage", - "easy samLoaderPipe", - "easy saveImageLazy", - "easy saveText", - "easy saveTextLazy", - "easy seed", - "easy showAnything", - "easy showAnythingLazy", - "easy showLoaderSettingsNames", - "easy showSpentTime", - "easy showTensorShape", - "easy sleep", - "easy sliderControl", - "easy stableDiffusion3API", - "easy string", - "easy styleAlignedBatchAlign", - "easy stylesSelector", - "easy sv3dLoader", - "easy svdLoader", - "easy textIndexSwitch", - "easy textSwitch", - "easy ultralyticsDetectorPipe", - "easy unSampler", - "easy whileLoopEnd", - "easy whileLoopStart", - "easy wildcards", - "easy xyAny", - "easy zero123Loader" - ], - { - "title_aux": "ComfyUI Easy Use" - } - ], - "https://github.com/yolanother/ComfyUI-Save16bitPng": [ - [ - "SaveImageARGB16PNG" - ], - { - "title_aux": "Save Uncompressed 16 Bit PNG" - } - ], - "https://github.com/yolanother/DTAIComfyImageSubmit": [ - [ - "DTSimpleSubmitImage", - "DTSubmitImage" - ], - { - "title_aux": "Comfy AI DoubTech.ai Image Sumission Node" - } - ], - "https://github.com/yolanother/DTAIComfyLoaders": [ - [ - "DTCLIPLoader", - "DTCLIPVisionLoader", - "DTCheckpointLoader", - "DTCheckpointLoaderSimple", - "DTControlNetLoader", - "DTDiffControlNetLoader", - "DTDiffusersLoader", - "DTGLIGENLoader", - "DTLoadImage", - "DTLoadImageMask", - "DTLoadLatent", - "DTLoraLoader", - "DTLorasLoader", - "DTStyleModelLoader", - "DTUpscaleModelLoader", - "DTVAELoader", - "DTunCLIPCheckpointLoader" - ], - { - "title_aux": "Comfy UI Online Loaders" - } - ], - "https://github.com/yolanother/DTAIComfyPromptAgent": [ - [ - "DTPromptAgent", - "DTPromptAgentString" - ], - { - "title_aux": "Comfy UI Prompt Agent" - } - ], - "https://github.com/yolanother/DTAIComfyQRCodes": [ - [ - "QRCode" - ], - { - "title_aux": "Comfy UI QR Codes" - } - ], - "https://github.com/yolanother/DTAIComfyVariables": [ - [ - "DTCLIPTextEncode", - "DTSingleLineStringVariable", - "DTSingleLineStringVariableNoClip", - "FloatVariable", - "IntVariable", - "StringFormat", - "StringFormatSingleLine", - "StringVariable" - ], - { - "title_aux": "Variables for Comfy UI" - } - ], - "https://github.com/yolanother/DTAIImageToTextNode": [ - [ - "DTAIImageToTextNode", - "DTAIImageUrlToTextNode" - ], - { - "title_aux": "Image to Text Node" - } - ], - "https://github.com/yondonfu/ComfyUI-Background-Edit": [ - [ - "BackgroundColor", - "Composite", - "GaussianBlur" - ], - { - "title_aux": "ComfyUI-Background-Edit" - } - ], - "https://github.com/yondonfu/ComfyUI-Torch-Compile": [ - [ - "TorchCompileLoadControlNet", - "TorchCompileLoadVAE" - ], - { - "title_aux": "ComfyUI-Torch-Compile" - } - ], - "https://github.com/yorkane/ComfyUI-KYNode": [ - [ - "AdvancedLyingSigmaSampler", - "KY_AnyByIndex", - "KY_AnyToList", - "KY_FilePathAnalyzer-", - "KY_JoinToString", - "KY_LoadImagesFromFolder", - "KY_MathExpression", - "KY_OpenAICaptionImage", - "KY_OpenAIChat", - "KY_ReadImage", - "KY_RegexExtractor", - "KY_RegexReplace", - "KY_SaveImageToPath" - ], - { - "title_aux": "ComfyUI-KYNode" - } - ], - "https://github.com/youyegit/tdxh_node_comfyui": [ - [ - "TdxhBoolNumber", - "TdxhClipVison", - "TdxhControlNetApply", - "TdxhControlNetProcessor", - "TdxhFloatInput", - "TdxhImageToSize", - "TdxhImageToSizeAdvanced", - "TdxhImg2ImgLatent", - "TdxhIntInput", - "TdxhLoraLoader", - "TdxhOnOrOff", - "TdxhReference", - "TdxhStringInput", - "TdxhStringInputTranslator", - "TdxhToggleGuest", - "TdxhToggleMaster" - ], - { - "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" - ], - { - "title_aux": "ComfyUI Depth Anything TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Dwpose-Tensorrt": [ - [ - "DwposeTensorrt" - ], - { - "title_aux": "ComfyUI Dwpose TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Facerestore-Tensorrt": [ - [ - "FaceRestoreTensorrt" - ], - { - "title_aux": "ComfyUI Facerestore TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-PiperTTS": [ - [ - "PiperTTS" - ], - { - "title_aux": "ComfyUI PiperTTS" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Pronodes": [ - [ - "ImagesSeekerNode", - "ImagesShufflerNode", - "LoadImageFromOutputDirectoryNode", - "LoadYoutubeVideoNode", - "PreviewVHSAudioNode", - "SaveAndOverwriteImageNode", - "VHSFilenamesToPathNode" - ], - { - "title_aux": "ComfyUI-Pronodes" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Rife-Tensorrt": [ - [ - "RifeTensorrt" - ], - { - "title_aux": "ComfyUI Rife TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Upscaler-Tensorrt": [ - [ - "UpscalerTensorrt" - ], - { - "title_aux": "ComfyUI Upscaler TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Video-Depth-Anything": [ - [ - "LoadVideoDepthAnythingModel", - "VideoDepthAnythingProcess" - ], - { - "title_aux": "ComfyUI Video Depth Anything" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Vsgan": [ - [ - "DepthAnythingTrtNode", - "TTSCapcutNode", - "UpscaleVideoTrtNode" - ], - { - "title_aux": "ComfyUI-Vsgan" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Whisper": [ - [ - "Add Subtitles To Background", - "Add Subtitles To Frames", - "Apply Whisper", - "Resize Cropped Subtitles" - ], - { - "title_aux": "ComfyUI Whisper" - } - ], - "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt": [ - [ - "YoloNasPoseTensorrt" - ], - { - "title_aux": "ComfyUI YoloNasPose Tensorrt" - } - ], - "https://github.com/yvann-ba/ComfyUI_Yvann-Nodes": [ - [ - "Audio Analysis", - "Audio IPAdapter Transitions", - "Audio Peaks Detection", - "Audio Prompt Schedule", - "Audio Remixer", - "Edit Audio Weights", - "Float to Int", - "Floats To Weights Strategy", - "Floats Visualizer", - "Invert Floats", - "Load Audio Separation Model", - "Mask To Float", - "Repeat Image To Count" - ], - { - "title_aux": "ComfyUI_Yvann-Nodes" - } - ], - "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes": [ - [ - "ZwngLoadImagePathOrURL", - "ZwngPreviewImageAndMask", - "ZwngSimpleGoogleTranslater", - "ZwngSimplePhotoshopConnector" - ], - { - "title_aux": "ComfyUI_Zwng_Nodes" - } - ], - "https://github.com/zcfrank1st/Comfyui-Toolbox": [ - [ - "PreviewJson", - "PreviewVideo", - "SaveJson", - "TestJsonPreview" - ], - { - "title_aux": "Comfyui-Toolbox" - } - ], - "https://github.com/zcfrank1st/Comfyui-Yolov8": [ - [ - "Yolov8Detection", - "Yolov8Segmentation" - ], - { - "title_aux": "ComfyUI Yolov8" - } - ], - "https://github.com/zcfrank1st/comfyui_visual_anagrams": [ - [ - "VisualAnagramsAnimate", - "VisualAnagramsSample" - ], - { - "title_aux": "comfyui_visual_anagram" - } - ], - "https://github.com/zer0TF/cute-comfy": [ - [ - "Cute.Placeholder" - ], - { - "title_aux": "Cute Comfy" - } - ], - "https://github.com/zer0thgear/zer0-comfy-utils": [ - [ - "List Combine Node (zer0)", - "Multiline String Node (zer0)", - "Prompt Minimizer And Splitter Node (zer0)", - "Tavern Card Creation Node (zer0)", - "Tavern Card Info Node (zer0)" - ], - { - "author": "zer0gear", - "description": "Dubiously useful nodes that I've made for my own use.", - "nickname": "zer0gear Comfy Utils", - "title": "zer0gear's Comfy Utilities", - "title_aux": "zer0 Comfy Utilities" - } - ], - "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer": [ - [ - "FastStyleTransfer", - "NeuralStyleTransfer", - "TrainFastStyleTransfer" - ], - { - "title_aux": "ComfyUI-Fast-Style-Transfer" - } - ], - "https://github.com/zfkun/ComfyUI_zfkun": [ - [ - "ZFLoadImagePath", - "ZFPreviewText", - "ZFPreviewTextMultiline", - "ZFShareScreen", - "ZFTextTranslation" - ], - { - "title_aux": "ComfyUI_zfkun" - } - ], - "https://github.com/zhangp365/ComfyUI-utils-nodes": [ - [ - "BooleanControlOutput", - "CheckpointLoaderSimpleWithSwitch", - "ColorCorrectOfUtils", - "ConcatTextOfUtils", - "DeepfaceAnalyzeFaceAttributes", - "DetectorForNSFW", - "GenderControlOutput", - "ImageAutoSelector", - "ImageBatchOneOrMore", - "ImageCompositeMaskedOneByOne", - "ImageCompositeMaskedWithSwitch", - "ImageCompositeWatermark", - "ImageConcanateOfUtils", - "ImageResizeTo8x", - "ImageTransition", - "IntAndIntAddOffsetLiteral", - "IntMultipleAddLiteral", - "LoadImageMaskWithSwitch", - "LoadImageMaskWithoutListDir", - "LoadImageWithSwitch", - "LoadImageWithoutListDir", - "MaskAutoSelector", - "MaskCoverFourCorners", - "MaskFastGrow", - "MaskFromFaceModel", - "MaskofCenter", - "MatchImageRatioToPreset", - "ModifyTextGender", - "SplitMask", - "TextInputAutoSelector", - "TextPreview", - "TorchCompileModelAdvanced", - "UpscaleImageWithModelIfNeed" - ], - { - "title_aux": "zhangp365/ComfyUI-utils-nodes" - } - ], - "https://github.com/zhangp365/ComfyUI_photomakerV2_native": [ - [ - "PhotoMakerEncodeV2", - "PhotoMakerLoaderV2" - ], - { - "title_aux": "ComfyUI_photomakerV2_native" - } - ], - "https://github.com/zhilemann/ComfyUI-moondream2": [ - [ - "moondream2_Caption", - "moondream2_DownLoad", - "moondream2_Encode", - "moondream2_Query" - ], - { - "title_aux": "ComfyUI-moondream2" - } - ], - "https://github.com/zhiselfly/ComfyUI-Alimama-ControlNet-compatible": [ - [ - "SD3AlimamaInpaintControlNetApplyAdvanced", - "SD3AlimamaInpaintControlNetLoader" - ], - { - "title_aux": "ComfyUI-Alimama-ControlNet-compatible" - } - ], - "https://github.com/zhongpei/ComfyUI-InstructIR": [ - [ - "InstructIRProcess", - "LoadInstructIRModel" - ], - { - "title_aux": "ComfyUI for InstructIR" - } - ], - "https://github.com/zhuanqianfish/ComfyUI-EasyNode": [ - [ - "EasyCaptureNode", - "EasyVideoOutputNode", - "SendImageWebSocket" - ], - { - "title_aux": "EasyCaptureNode for ComfyUI" - } - ], - "https://github.com/zhulu111/ComfyUI_Bxb": [ - [ - "bxbSwitch", - "sdBxb", - "sdBxb_saveImage", - "sdBxb_textInput" - ], - { - "title_aux": "ComfyUI_Bxb" - } - ], - "https://github.com/ziwang-com/comfyui-deepseek-r1": [ - [ - "deep_gen", - "deep_load" - ], - { - "title_aux": "comfyui-deepseek-r1" - } - ], - "https://github.com/zmwv823/ComfyUI_Anytext": [ - [ - "UL_AnyTextEncoder", - "UL_AnyTextFormatter", - "UL_AnyTextLoaderTest", - "UL_AnyText_Composer", - "UL_AnyText_FontImg", - "UL_AnyText_Loader", - "UL_AnyText_Sampler", - "UL_DiffusersCheckpointLoader", - "UL_DiffusersControlNetApplyAdvanced", - "UL_DiffusersControlNetLoader", - "UL_Image_Generation_Diffusers_Sampler", - "UL_Image_Generation_Glyph_ByT5", - "UL_Image_Generation_Glyph_ByT5_Checkponits_Loader", - "UL_Image_Generation_Glyph_ByT5_Font", - "UL_Image_Generation_JoyType_Font_Img", - "UL_Image_Generation_JoyType_Render_List", - "UL_Image_Process_Common_Cv2_Canny", - "UL_Translator", - "UL_TranslatorLoader" - ], - { - "title_aux": "ComfyUI_Anytext" - } - ], - "https://github.com/zohac/ComfyUI_ZC_DrawShape": [ - [ - "ZcDrawShape" - ], - { - "author": "Zohac", - "description": "nodes for artists, designers and animators.", - "nickname": "Zc DrawShape", - "title": "Zc DrawShape", - "title_aux": "ComfyUI_ZC_DrawShape" - } - ], - "https://github.com/zombieyang/sd-ppp": [ - [ - "CLIP Text Encode PS Regional", - "Get Image From Photoshop Layer", - "Send Images To Photoshop" - ], - { - "title_aux": "SD-PPP" - } - ], - "https://github.com/zubenelakrab/ComfyUI-ASV-Nodes": [ - [ - "ASVPromptGenerator" - ], - { - "title_aux": "ComfyUI-ASV-Nodes Node" - } - ], - "https://raw.githubusercontent.com/1shadow1/hayo_comfyui_nodes/main/LZCNodes.py": [ - [ - "LoadPILImages", - "MergeImages", - "make_transparentmask", - "tensor_trans_pil", - "words_generatee" - ], - { - "title_aux": "Hayo comfyui nodes" - } - ], - "https://raw.githubusercontent.com/CaptainGrock/ComfyUIInvisibleWatermark/main/Invisible%20Watermark.py": [ - [ - "Apply Invisible Watermark", - "Extract Watermark" - ], - { - "title_aux": "ComfyUIInvisibleWatermark" - } - ], - "https://raw.githubusercontent.com/Limbicnation/ComfyUIDepthEstimation/main/depth_estimation_node.py": [ - [ - "DepthEstimationNode" - ], - { - "title_aux": "ComfyUIDepthEstimation" - } - ], - "https://raw.githubusercontent.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/main/EXT_AudioManipulation.py": [ - [ - "BatchJoinAudio", - "CutAudio", - "DuplicateAudio", - "JoinAudio", - "ResampleAudio", - "ReverseAudio", - "StretchAudio" - ], - { - "title_aux": "Waveform Extensions" - } - ], - "https://raw.githubusercontent.com/Onierous/QRNG_Node_ComfyUI/main/qrng_node.py": [ - [ - "QRNG_Node_CSV" - ], - { - "title_aux": "QRNG_Node_ComfyUI" - } - ], - "https://raw.githubusercontent.com/SadaleNet/CLIPTextEncodeA1111-ComfyUI/master/custom_nodes/clip_text_encoder_a1111.py": [ - [ - "CLIPTextEncodeA1111", - "RerouteTextForCLIPTextEncodeA1111" - ], - { - "title_aux": "ComfyUI A1111-like Prompt Custom Node Solution" - } - ], - "https://raw.githubusercontent.com/Ser-Hilary/SDXL_sizing/main/conditioning_sizing_for_SDXL.py": [ - [ - "get_aspect_from_image", - "get_aspect_from_ints", - "sizing_node", - "sizing_node_basic", - "sizing_node_unparsed" - ], - { - "title_aux": "SDXL_sizing" - } - ], - "https://raw.githubusercontent.com/Smuzzies/comfyui_chatbox_overlay/main/chatbox_overlay.py": [ - [ - "Chatbox Overlay" - ], - { - "title_aux": "Chatbox Overlay node for ComfyUI" - } - ], - "https://raw.githubusercontent.com/barckley75/comfyUI_DaVinciResolve/main/custom_nodes/node_text_to_speech.py": [ - [ - "TextToSpeech" - ], - { - "title_aux": "comfyUI_DaVinciResolve" - } - ], - "https://raw.githubusercontent.com/bkunbargi/BrevImage/main/BrevLoadImage.py": [ - [ - "BrevImage" - ], - { - "title_aux": "BrevImage" - } - ], - "https://raw.githubusercontent.com/catscandrive/comfyui-imagesubfolders/main/loadImageWithSubfolders.py": [ - [ - "LoadImagewithSubfolders" - ], - { - "title_aux": "Image loader with subfolders" - } - ], - "https://raw.githubusercontent.com/dawangraoming/ComfyUI_ksampler_gpu/main/ksampler_gpu.py": [ - [ - "KSamplerAdvancedGPU", - "KSamplerGPU" - ], - { - "title_aux": "KSampler GPU" - } - ], - "https://raw.githubusercontent.com/fitCorder/fcSuite/main/fcSuite.py": [ - [ - "fcFloat", - "fcFloatMatic", - "fcHex", - "fcInteger" - ], - { - "title_aux": "fcSuite" - } - ], - "https://raw.githubusercontent.com/folkghost/comfyui_search_csv/main/search_csv_node.py": [ - [ - "Search CSV" - ], - { - "title_aux": "CSV Search Node" - } - ], - "https://raw.githubusercontent.com/lordgasmic/comfyui_wildcards/master/wildcards.py": [ - [ - "CLIPTextEncodeWithWildcards" - ], - { - "title_aux": "Wildcards" - } - ], - "https://raw.githubusercontent.com/lrzjason/ComfyUIJasonNode/main/SDXLMixSampler.py": [ - [ - "SDXLMixSampler" - ], - { - "title_aux": "ComfyUIJasonNode" - } - ], - "https://raw.githubusercontent.com/m957ymj75urz/ComfyUI-Custom-Nodes/main/clip-text-encode-split/clip_text_encode_split.py": [ - [ - "RawText", - "RawTextCombine", - "RawTextEncode", - "RawTextReplace" - ], - { - "title_aux": "m957ymj75urz/ComfyUI-Custom-Nodes" - } - ], - "https://raw.githubusercontent.com/nicolai256/comfyUI_Nodes_nicolai256/main/yugioh-presets.py": [ - [ - "yugioh_Presets" - ], - { - "title_aux": "comfyUI_Nodes_nicolai256" - } - ], - "https://raw.githubusercontent.com/ntdviet/comfyui-ext/main/custom_nodes/gcLatentTunnel/gcLatentTunnel.py": [ - [ - "gcLatentTunnel" - ], - { - "title_aux": "ntdviet/comfyui-ext" - } - ], - "https://raw.githubusercontent.com/s1dlx/comfy_meh/main/meh.py": [ - [ - "MergingExecutionHelper" - ], - { - "title_aux": "comfy_meh" - } - ], - "https://raw.githubusercontent.com/seghier/ComfyUI_LibreTranslate/main/translate_node.py": [ - [ - "LibreTranslateLocally", - "LibreTranslateOnline" - ], - { - "title_aux": "ComfyUI_LibreTranslate" - } - ], - "https://raw.githubusercontent.com/taabata/Comfy_Syrian_Falcon_Nodes/main/SyrianFalconNodes.py": [ - [ - "CompositeImage", - "KSamplerAlternate", - "KSamplerPromptEdit", - "KSamplerPromptEditAndAlternate", - "LoopBack", - "QRGenerate", - "WordAsImage" - ], - { - "title_aux": "Syrian Falcon Nodes" - } - ], - "https://raw.githubusercontent.com/throttlekitty/SDXLCustomAspectRatio/main/SDXLAspectRatio.py": [ - [ - "SDXLAspectRatio" - ], - { - "preemptions": [ - "SAMLoader" - ], - "title_aux": "SDXLCustomAspectRatio" - } - ], - "https://raw.githubusercontent.com/time-river/ComfyUI-CLIPSeg/main/custom_nodes/clipseg.py": [ - [ - "CLIPSeg", - "CombineSegMasks" - ], - { - "title_aux": "CLIPSeg" - } - ], - "https://raw.githubusercontent.com/tudal/Hakkun-ComfyUI-nodes/main/hakkun_nodes.py": [ - [ - "Any Converter", - "Calculate Upscale", - "Image Resize To Height", - "Image Resize To Width", - "Image size to string", - "Load Random Image", - "Load Text", - "Multi Text Merge", - "Prompt Parser", - "Random Line", - "Random Line 4" - ], - { - "title_aux": "Hakkun-ComfyUI-nodes" - } - ], - "https://raw.githubusercontent.com/ultimatech-cn/FaceSimilarity/main/faceSimilarity.py": [ - [ - "Face-analyze", - "Face-similarity" - ], - { - "title_aux": "FaceSimilarity" - } - ], - "https://raw.githubusercontent.com/vxinhao/color2rgb/main/color2rgb.py": [ - [ - "color2RGB" - ], - { - "title_aux": "color2rgb" - } - ], - "https://raw.githubusercontent.com/wsippel/comfyui_ws/main/sdxl_utility.py": [ - [ - "SDXLResolutionPresets" - ], - { - "title_aux": "SDXLResolutionPresets" - } - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/extras.json b/custom_nodes/comfyui-manager/extras.json deleted file mode 100644 index 81e03168523ae8f1ff2be93aa98fec9c6b5b838a..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/extras.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "favorites": [ - "comfyui_ipadapter_plus", - "comfyui-animatediff-evolved", - "comfyui_controlnet_aux", - "comfyui-impact-pack", - "comfyui-impact-subpack", - "comfyui-custom-scripts", - "comfyui-layerdiffuse", - "comfyui-liveportraitkj", - "aigodlike-comfyui-translation", - "comfyui-reactor", - "comfyui_instantid", - "sd-dynamic-thresholding", - "pr-was-node-suite-comfyui-47064894", - "comfyui-advancedliveportrait", - "comfyui_layerstyle", - "efficiency-nodes-comfyui", - "comfyui-crystools", - "comfyui-advanced-controlnet", - "comfyui-videohelpersuite", - "comfyui-kjnodes", - "comfy-mtb", - "comfyui_essentials" - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/git_helper.py b/custom_nodes/comfyui-manager/git_helper.py deleted file mode 100644 index bea95def2bdf2e616561f4418b640ae6b9a0cc92..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/git_helper.py +++ /dev/null @@ -1,509 +0,0 @@ -import subprocess -import sys -import os -import traceback - -import git -import json -import yaml -import requests -from tqdm.auto import tqdm -from git.remote import RemoteProgress - - -comfy_path = os.environ.get('COMFYUI_PATH') -git_exe_path = os.environ.get('GIT_EXE_PATH') - -if comfy_path is None: - print("\nWARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path.", file=sys.stderr) - comfy_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) - - -def download_url(url, dest_folder, filename=None): - # Ensure the destination folder exists - if not os.path.exists(dest_folder): - os.makedirs(dest_folder) - - # Extract filename from URL if not provided - if filename is None: - filename = os.path.basename(url) - - # Full path to save the file - dest_path = os.path.join(dest_folder, filename) - - # Download the file - response = requests.get(url, stream=True) - if response.status_code == 200: - with open(dest_path, 'wb') as file: - for chunk in response.iter_content(chunk_size=1024): - if chunk: - file.write(chunk) - else: - print(f"Failed to download file from {url}") - - -nodelist_path = os.path.join(os.path.dirname(__file__), "custom-node-list.json") -working_directory = os.getcwd() - -if os.path.basename(working_directory) != 'custom_nodes': - print("WARN: This script should be executed in custom_nodes dir") - print(f"DBG: INFO {working_directory}") - print(f"DBG: INFO {sys.argv}") - # exit(-1) - - -class GitProgress(RemoteProgress): - def __init__(self): - super().__init__() - self.pbar = tqdm(ascii=True) - - def update(self, op_code, cur_count, max_count=None, message=''): - self.pbar.total = max_count - self.pbar.n = cur_count - self.pbar.pos = 0 - self.pbar.refresh() - - -def gitclone(custom_nodes_path, url, target_hash=None, repo_path=None): - repo_name = os.path.splitext(os.path.basename(url))[0] - - if repo_path is None: - repo_path = os.path.join(custom_nodes_path, repo_name) - - # Clone the repository from the remote URL - repo = git.Repo.clone_from(url, repo_path, recursive=True, progress=GitProgress()) - - if target_hash is not None: - print(f"CHECKOUT: {repo_name} [{target_hash}]") - repo.git.checkout(target_hash) - - repo.git.clear_cache() - repo.close() - - -def gitcheck(path, do_fetch=False): - try: - # Fetch the latest commits from the remote repository - repo = git.Repo(path) - - if repo.head.is_detached: - print("CUSTOM NODE CHECK: True") - return - - current_branch = repo.active_branch - branch_name = current_branch.name - - remote_name = current_branch.tracking_branch().remote_name - remote = repo.remote(name=remote_name) - - if do_fetch: - remote.fetch() - - # Get the current commit hash and the commit hash of the remote branch - commit_hash = repo.head.commit.hexsha - - if f'{remote_name}/{branch_name}' in repo.refs: - remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha - else: - print("CUSTOM NODE CHECK: True") # non default branch is treated as updatable - return - - # Compare the commit hashes to determine if the local repository is behind the remote repository - if commit_hash != remote_commit_hash: - # Get the commit dates - commit_date = repo.head.commit.committed_datetime - remote_commit_date = repo.refs[f'{remote_name}/{branch_name}'].object.committed_datetime - - # Compare the commit dates to determine if the local repository is behind the remote repository - if commit_date < remote_commit_date: - print("CUSTOM NODE CHECK: True") - else: - print("CUSTOM NODE CHECK: False") - except Exception as e: - print(e) - print("CUSTOM NODE CHECK: Error") - - -def get_remote_name(repo): - available_remotes = [remote.name for remote in repo.remotes] - if 'origin' in available_remotes: - return 'origin' - elif 'upstream' in available_remotes: - return 'upstream' - elif len(available_remotes) > 0: - return available_remotes[0] - - if not available_remotes: - print(f"[ComfyUI-Manager] No remotes are configured for this repository: {repo.working_dir}") - else: - print(f"[ComfyUI-Manager] Available remotes in '{repo.working_dir}': ") - for remote in available_remotes: - print(f"- {remote}") - - return None - - -def switch_to_default_branch(repo): - remote_name = get_remote_name(repo) - - try: - if remote_name is None: - return False - - default_branch = repo.git.symbolic_ref(f'refs/remotes/{remote_name}/HEAD').replace(f'refs/remotes/{remote_name}/', '') - repo.git.checkout(default_branch) - return True - except: - try: - repo.git.checkout(repo.heads.master) - except: - try: - if remote_name is not None: - repo.git.checkout('-b', 'master', f'{remote_name}/master') - except: - pass - - print("[ComfyUI Manager] Failed to switch to the default branch") - return False - - -def gitpull(path): - # Check if the path is a git repository - if not os.path.exists(os.path.join(path, '.git')): - raise ValueError('Not a git repository') - - # Pull the latest changes from the remote repository - repo = git.Repo(path) - if repo.is_dirty(): - print(f"STASH: '{path}' is dirty.") - repo.git.stash() - - commit_hash = repo.head.commit.hexsha - try: - if repo.head.is_detached: - switch_to_default_branch(repo) - - current_branch = repo.active_branch - branch_name = current_branch.name - - remote_name = current_branch.tracking_branch().remote_name - remote = repo.remote(name=remote_name) - - if f'{remote_name}/{branch_name}' not in repo.refs: - switch_to_default_branch(repo) - current_branch = repo.active_branch - branch_name = current_branch.name - - remote.fetch() - if f'{remote_name}/{branch_name}' in repo.refs: - remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha - else: - print("CUSTOM NODE PULL: Fail") # update fail - return - - if commit_hash == remote_commit_hash: - print("CUSTOM NODE PULL: None") # there is no update - repo.close() - return - - remote.pull() - - repo.git.submodule('update', '--init', '--recursive') - new_commit_hash = repo.head.commit.hexsha - - if commit_hash != new_commit_hash: - print("CUSTOM NODE PULL: Success") # update success - else: - print("CUSTOM NODE PULL: Fail") # update fail - except Exception as e: - print(e) - print("CUSTOM NODE PULL: Fail") # unknown git error - - repo.close() - - -def checkout_comfyui_hash(target_hash): - repo = git.Repo(comfy_path) - commit_hash = repo.head.commit.hexsha - - if commit_hash != target_hash: - try: - print(f"CHECKOUT: ComfyUI [{target_hash}]") - repo.git.checkout(target_hash) - except git.GitCommandError as e: - print(f"Error checking out the ComfyUI: {str(e)}") - - -def checkout_custom_node_hash(git_custom_node_infos): - repo_name_to_url = {} - - for url in git_custom_node_infos.keys(): - repo_name = url.split('/')[-1] - - if repo_name.endswith('.git'): - repo_name = repo_name[:-4] - - repo_name_to_url[repo_name] = url - - for path in os.listdir(working_directory): - if path.endswith("ComfyUI-Manager"): - continue - - fullpath = os.path.join(working_directory, path) - - if os.path.isdir(fullpath): - is_disabled = path.endswith(".disabled") - - try: - git_dir = os.path.join(fullpath, '.git') - if not os.path.exists(git_dir): - continue - - need_checkout = False - repo_name = os.path.basename(fullpath) - - if repo_name.endswith('.disabled'): - repo_name = repo_name[:-9] - - if repo_name not in repo_name_to_url: - if not is_disabled: - # should be disabled - print(f"DISABLE: {repo_name}") - new_path = fullpath + ".disabled" - os.rename(fullpath, new_path) - need_checkout = False - else: - item = git_custom_node_infos[repo_name_to_url[repo_name]] - if item['disabled'] and is_disabled: - pass - elif item['disabled'] and not is_disabled: - # disable - print(f"DISABLE: {repo_name}") - new_path = fullpath + ".disabled" - os.rename(fullpath, new_path) - - elif not item['disabled'] and is_disabled: - # enable - print(f"ENABLE: {repo_name}") - new_path = fullpath[:-9] - os.rename(fullpath, new_path) - fullpath = new_path - need_checkout = True - else: - need_checkout = True - - if need_checkout: - repo = git.Repo(fullpath) - commit_hash = repo.head.commit.hexsha - - if commit_hash != item['hash']: - print(f"CHECKOUT: {repo_name} [{item['hash']}]") - repo.git.checkout(item['hash']) - - except Exception: - print(f"Failed to restore snapshots for the custom node '{path}'") - - # clone missing - for k, v in git_custom_node_infos.items(): - if 'ComfyUI-Manager' in k: - continue - - if not v['disabled']: - repo_name = k.split('/')[-1] - if repo_name.endswith('.git'): - repo_name = repo_name[:-4] - - path = os.path.join(working_directory, repo_name) - if not os.path.exists(path): - print(f"CLONE: {path}") - gitclone(working_directory, k, target_hash=v['hash']) - - -def invalidate_custom_node_file(file_custom_node_infos): - global nodelist_path - - enabled_set = set() - for item in file_custom_node_infos: - if not item['disabled']: - enabled_set.add(item['filename']) - - for path in os.listdir(working_directory): - fullpath = os.path.join(working_directory, path) - - if not os.path.isdir(fullpath) and fullpath.endswith('.py'): - if path not in enabled_set: - print(f"DISABLE: {path}") - new_path = fullpath+'.disabled' - os.rename(fullpath, new_path) - - elif not os.path.isdir(fullpath) and fullpath.endswith('.py.disabled'): - path = path[:-9] - if path in enabled_set: - print(f"ENABLE: {path}") - new_path = fullpath[:-9] - os.rename(fullpath, new_path) - - # download missing: just support for 'copy' style - py_to_url = {} - - with open(nodelist_path, 'r', encoding="UTF-8") as json_file: - info = json.load(json_file) - for item in info['custom_nodes']: - if item['install_type'] == 'copy': - for url in item['files']: - if url.endswith('.py'): - py = url.split('/')[-1] - py_to_url[py] = url - - for item in file_custom_node_infos: - filename = item['filename'] - if not item['disabled']: - target_path = os.path.join(working_directory, filename) - - if not os.path.exists(target_path) and filename in py_to_url: - url = py_to_url[filename] - print(f"DOWNLOAD: {filename}") - download_url(url, working_directory) - - -def apply_snapshot(path): - try: - if os.path.exists(path): - if not path.endswith('.json') and not path.endswith('.yaml'): - print(f"Snapshot file not found: `{path}`") - print("APPLY SNAPSHOT: False") - return None - - with open(path, 'r', encoding="UTF-8") as snapshot_file: - if path.endswith('.json'): - info = json.load(snapshot_file) - elif path.endswith('.yaml'): - info = yaml.load(snapshot_file, Loader=yaml.SafeLoader) - info = info['custom_nodes'] - else: - # impossible case - print("APPLY SNAPSHOT: False") - return None - - comfyui_hash = info['comfyui'] - git_custom_node_infos = info['git_custom_nodes'] - file_custom_node_infos = info['file_custom_nodes'] - - checkout_comfyui_hash(comfyui_hash) - checkout_custom_node_hash(git_custom_node_infos) - invalidate_custom_node_file(file_custom_node_infos) - - print("APPLY SNAPSHOT: True") - if 'pips' in info: - return info['pips'] - else: - return None - - print(f"Snapshot file not found: `{path}`") - print("APPLY SNAPSHOT: False") - - return None - except Exception as e: - print(e) - traceback.print_exc() - print("APPLY SNAPSHOT: False") - - return None - - -def restore_pip_snapshot(pips, options): - non_url = [] - local_url = [] - non_local_url = [] - for k, v in pips.items(): - if v == "": - non_url.append(k) - else: - if v.startswith('file:'): - local_url.append(v) - else: - non_local_url.append(v) - - failed = [] - if '--pip-non-url' in options: - # try all at once - res = 1 - try: - res = subprocess.check_call([sys.executable, '-m', 'pip', 'install'] + non_url) - except: - pass - - # fallback - if res != 0: - for x in non_url: - res = 1 - try: - res = subprocess.check_call([sys.executable, '-m', 'pip', 'install', x]) - except: - pass - - if res != 0: - failed.append(x) - - if '--pip-non-local-url' in options: - for x in non_local_url: - res = 1 - try: - res = subprocess.check_call([sys.executable, '-m', 'pip', 'install', x]) - except: - pass - - if res != 0: - failed.append(x) - - if '--pip-local-url' in options: - for x in local_url: - res = 1 - try: - res = subprocess.check_call([sys.executable, '-m', 'pip', 'install', x]) - except: - pass - - if res != 0: - failed.append(x) - - print(f"Installation failed for pip packages: {failed}") - - -def setup_environment(): - if git_exe_path is not None: - git.Git().update_environment(GIT_PYTHON_GIT_EXECUTABLE=git_exe_path) - - -setup_environment() - - -try: - if sys.argv[1] == "--clone": - repo_path = None - if len(sys.argv) > 4: - repo_path = sys.argv[4] - - gitclone(sys.argv[2], sys.argv[3], repo_path=repo_path) - elif sys.argv[1] == "--check": - gitcheck(sys.argv[2], False) - elif sys.argv[1] == "--fetch": - gitcheck(sys.argv[2], True) - elif sys.argv[1] == "--pull": - gitpull(sys.argv[2]) - elif sys.argv[1] == "--apply-snapshot": - options = set() - for x in sys.argv: - if x in ['--pip-non-url', '--pip-local-url', '--pip-non-local-url']: - options.add(x) - - pips = apply_snapshot(sys.argv[2]) - - if pips and len(options) > 0: - restore_pip_snapshot(pips, options) - sys.exit(0) -except Exception as e: - print(e) - sys.exit(-1) - - diff --git a/custom_nodes/comfyui-manager/github-stats.json b/custom_nodes/comfyui-manager/github-stats.json deleted file mode 100644 index 5dfa4460ae5dcf734556609f79f104de6b71f702..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/github-stats.json +++ /dev/null @@ -1,9402 +0,0 @@ -{ - "https://github.com/0x-jerry/comfyui-rembg": { - "stars": 1, - "last_update": "2025-01-01 16:03:57", - "author_account_age_days": 3425 - }, - "https://github.com/0xbitches/ComfyUI-LCM": { - "stars": 252, - "last_update": "2023-11-11 21:24:33", - "author_account_age_days": 747 - }, - "https://github.com/1038lab/ComfyUI-EdgeTTS": { - "stars": 12, - "last_update": "2025-01-24 10:39:15", - "author_account_age_days": 668 - }, - "https://github.com/1038lab/ComfyUI-OmniGen": { - "stars": 198, - "last_update": "2025-01-23 00:57:27", - "author_account_age_days": 668 - }, - "https://github.com/1038lab/ComfyUI-RMBG": { - "stars": 223, - "last_update": "2025-01-22 09:24:19", - "author_account_age_days": 668 - }, - "https://github.com/1038lab/ComfyUI-WildPromptor": { - "stars": 14, - "last_update": "2025-01-12 06:38:40", - "author_account_age_days": 668 - }, - "https://github.com/111496583yzy/comfyui-PuzzleCrack-Effect": { - "stars": 4, - "last_update": "2025-01-13 10:15:44", - "author_account_age_days": 2099 - }, - "https://github.com/11cafe/comfyui-workspace-manager": { - "stars": 1189, - "last_update": "2024-10-01 14:40:46", - "author_account_age_days": 420 - }, - "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant": { - "stars": 36, - "last_update": "2024-08-02 05:24:19", - "author_account_age_days": 341 - }, - "https://github.com/11dogzi/Comfyui-ergouzi-Nodes": { - "stars": 71, - "last_update": "2024-08-23 12:04:09", - "author_account_age_days": 341 - }, - "https://github.com/11dogzi/Comfyui-ergouzi-kaiguan": { - "stars": 63, - "last_update": "2024-12-09 02:29:58", - "author_account_age_days": 341 - }, - "https://github.com/11dogzi/Comfyui-ergouzi-samplers": { - "stars": 26, - "last_update": "2024-06-28 05:28:05", - "author_account_age_days": 341 - }, - "https://github.com/1mckw/Comfyui-Gelbooru": { - "stars": 4, - "last_update": "2024-12-08 03:42:25", - "author_account_age_days": 906 - }, - "https://github.com/1zhangyy1/comfyui-vidu-nodes": { - "stars": 4, - "last_update": "2025-01-09 13:24:13", - "author_account_age_days": 675 - }, - "https://github.com/2kpr/ComfyUI-PMRF": { - "stars": 117, - "last_update": "2024-10-11 00:11:40", - "author_account_age_days": 1135 - }, - "https://github.com/2kpr/ComfyUI-UltraPixel": { - "stars": 223, - "last_update": "2024-07-27 14:52:10", - "author_account_age_days": 1135 - }, - "https://github.com/311-code/ComfyUI-MagicClip_Strength": { - "stars": 1, - "last_update": "2024-09-22 12:07:40", - "author_account_age_days": 2988 - }, - "https://github.com/42lux/ComfyUI-42lux": { - "stars": 8, - "last_update": "2024-12-19 10:21:03", - "author_account_age_days": 3914 - }, - "https://github.com/438443467/ComfyUI-GPT4V-Image-Captioner": { - "stars": 26, - "last_update": "2024-06-13 05:51:56", - "author_account_age_days": 630 - }, - "https://github.com/45uee/ComfyUI-Color_Transfer": { - "stars": 19, - "last_update": "2024-09-19 20:16:51", - "author_account_age_days": 2518 - }, - "https://github.com/54rt1n/ComfyUI-DareMerge": { - "stars": 79, - "last_update": "2024-08-01 15:28:19", - "author_account_age_days": 4266 - }, - "https://github.com/5x00/ComfyUI-PiAPI-Faceswap": { - "stars": 2, - "last_update": "2025-01-12 14:49:09", - "author_account_age_days": 1187 - }, - "https://github.com/5x00/ComfyUI-VLM-Captions": { - "stars": 4, - "last_update": "2025-01-04 21:27:47", - "author_account_age_days": 1187 - }, - "https://github.com/6174/comflowy-nodes": { - "stars": 12, - "last_update": "2024-12-03 13:31:04", - "author_account_age_days": 4335 - }, - "https://github.com/807502278/ComfyUI-3D-MeshTool": { - "stars": 20, - "last_update": "2024-10-18 09:59:54", - "author_account_age_days": 2229 - }, - "https://github.com/807502278/ComfyUI-WJNodes": { - "stars": 9, - "last_update": "2025-01-24 07:45:45", - "author_account_age_days": 2229 - }, - "https://github.com/807502278/ComfyUI_MaskGCT": { - "stars": 23, - "last_update": "2024-11-12 08:13:01", - "author_account_age_days": 2229 - }, - "https://github.com/80sVectorz/ComfyUI-Static-Primitives": { - "stars": 11, - "last_update": "2024-08-07 11:21:06", - "author_account_age_days": 1686 - }, - "https://github.com/A4P7J1N7M05OT/ComfyUI-AutoColorGimp": { - "stars": 1, - "last_update": "2024-05-23 00:26:10", - "author_account_age_days": 688 - }, - "https://github.com/A4P7J1N7M05OT/ComfyUI-PixelOE-Wrapper": { - "stars": 11, - "last_update": "2025-01-21 22:26:11", - "author_account_age_days": 688 - }, - "https://github.com/AARG-FAN/Image-Vector-for-ComfyUI": { - "stars": 116, - "last_update": "2024-06-23 14:56:16", - "author_account_age_days": 715 - }, - "https://github.com/AEmotionStudio/ComfyUI-ChristmasTheme": { - "stars": 38, - "last_update": "2024-12-21 23:43:44", - "author_account_age_days": 318 - }, - "https://github.com/AI2lab/comfyUI-DeepSeek-2lab": { - "stars": 6, - "last_update": "2024-10-02 07:21:00", - "author_account_age_days": 408 - }, - "https://github.com/AI2lab/comfyUI-kling-api-2lab": { - "stars": 7, - "last_update": "2024-10-09 14:14:31", - "author_account_age_days": 408 - }, - "https://github.com/AI2lab/comfyUI-siliconflow-api-2lab": { - "stars": 6, - "last_update": "2024-08-01 15:13:33", - "author_account_age_days": 408 - }, - "https://github.com/AI2lab/comfyUI-tool-2lab": { - "stars": 24, - "last_update": "2024-11-15 16:42:51", - "author_account_age_days": 408 - }, - "https://github.com/AIFSH/AniTalker-ComfyUI": { - "stars": 6, - "last_update": "2024-08-06 03:08:44", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-3d-photo-inpainting": { - "stars": 11, - "last_update": "2024-06-19 13:59:49", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-AuraSR": { - "stars": 23, - "last_update": "2024-06-27 14:00:16", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio": { - "stars": 75, - "last_update": "2024-08-05 08:48:03", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-FishSpeech": { - "stars": 30, - "last_update": "2024-05-23 01:18:49", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-GPT_SoVITS": { - "stars": 209, - "last_update": "2024-08-09 22:00:45", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-Hallo": { - "stars": 293, - "last_update": "2024-06-24 06:43:23", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-I2V-Adapter": { - "stars": 21, - "last_update": "2024-07-02 01:59:49", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-IP_LAP": { - "stars": 32, - "last_update": "2024-06-14 07:05:39", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-Live2DViewer": { - "stars": 5, - "last_update": "2024-06-14 07:04:49", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-MARS5-TTS": { - "stars": 27, - "last_update": "2024-07-02 02:00:28", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-MimicBrush": { - "stars": 106, - "last_update": "2024-06-17 22:26:53", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-MimicMotion": { - "stars": 357, - "last_update": "2024-08-06 06:21:16", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-MuseTalk_FSH": { - "stars": 19, - "last_update": "2024-06-14 07:05:19", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-RVC": { - "stars": 17, - "last_update": "2024-06-14 07:05:25", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-UVR5": { - "stars": 88, - "last_update": "2024-06-20 07:31:20", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-UniAnimate": { - "stars": 36, - "last_update": "2024-06-30 09:20:25", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-WhisperX": { - "stars": 38, - "last_update": "2024-10-23 22:19:56", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-XTTS": { - "stars": 48, - "last_update": "2024-06-24 09:45:59", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI_V-Express": { - "stars": 86, - "last_update": "2024-06-23 09:54:57", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/CosyVoice-ComfyUI": { - "stars": 212, - "last_update": "2024-09-10 22:21:37", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/DHLive-ComfyUI": { - "stars": 20, - "last_update": "2024-11-14 01:45:45", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/DiffMorpher-ComfyUI": { - "stars": 16, - "last_update": "2024-07-17 01:24:59", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/DiffSynth-ComfyUI": { - "stars": 1, - "last_update": "2024-09-07 12:23:07", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/EchoMimicV2-ComfyUI": { - "stars": 35, - "last_update": "2024-12-08 08:53:21", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/EzAudio-ComfyUI": { - "stars": 8, - "last_update": "2024-10-08 05:22:46", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/F5-TTS-ComfyUI": { - "stars": 27, - "last_update": "2024-11-14 01:43:03", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/FancyVideo-ComfyUI": { - "stars": 37, - "last_update": "2024-10-12 07:21:51", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/FireRedTTS-ComfyUI": { - "stars": 10, - "last_update": "2024-10-24 01:18:51", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/GSTTS-ComfyUI": { - "stars": 31, - "last_update": "2024-08-25 03:23:24", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/HivisionIDPhotos-ComfyUI": { - "stars": 108, - "last_update": "2024-09-16 14:16:06", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/IMAGDressing-ComfyUI": { - "stars": 59, - "last_update": "2024-11-14 01:44:02", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/JoyHallo-ComfyUI": { - "stars": 8, - "last_update": "2024-11-14 01:44:39", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/MaskGCT-ComfyUI": { - "stars": 42, - "last_update": "2024-11-14 01:40:15", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/MiniMates-ComfyUI": { - "stars": 25, - "last_update": "2024-11-14 01:36:30", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/OmniGen-ComfyUI": { - "stars": 195, - "last_update": "2024-11-14 01:37:33", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/PyramidFlow-ComfyUI": { - "stars": 15, - "last_update": "2024-10-10 13:59:16", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/RealisDance-ComfyUI": { - "stars": 41, - "last_update": "2024-09-13 14:38:59", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/SenseVoice-ComfyUI": { - "stars": 13, - "last_update": "2024-07-16 06:41:25", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/StyleShot-ComfyUI": { - "stars": 5, - "last_update": "2024-08-17 00:25:29", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/VideoSys-ComfyUI": { - "stars": 7, - "last_update": "2024-09-01 09:11:57", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ViewCrafter-ComfyUI": { - "stars": 9, - "last_update": "2024-09-19 11:11:25", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/VocalSeparation-ComfyUI": { - "stars": 13, - "last_update": "2024-10-24 07:16:37", - "author_account_age_days": 447 - }, - "https://github.com/AIGCTeam/ComfyUI_kkTranslator_nodes": { - "stars": 6, - "last_update": "2024-09-13 07:34:18", - "author_account_age_days": 426 - }, - "https://github.com/AIGODLIKE/AIGODLIKE-COMFYUI-TRANSLATION": { - "stars": 1967, - "last_update": "2024-12-19 11:43:49", - "author_account_age_days": 716 - }, - "https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Studio": { - "stars": 301, - "last_update": "2025-01-06 11:31:20", - "author_account_age_days": 716 - }, - "https://github.com/AIGODLIKE/ComfyUI-CUP": { - "stars": 34, - "last_update": "2024-06-21 03:43:20", - "author_account_age_days": 716 - }, - "https://github.com/AIGODLIKE/ComfyUI-ToonCrafter": { - "stars": 340, - "last_update": "2024-07-17 02:28:49", - "author_account_age_days": 716 - }, - "https://github.com/AIPOQUE/ComfyUI-APQNodes": { - "stars": 77, - "last_update": "2024-11-21 08:56:49", - "author_account_age_days": 98 - }, - "https://github.com/AInseven/ComfyUI-fastblend": { - "stars": 197, - "last_update": "2024-11-22 03:32:25", - "author_account_age_days": 1898 - }, - "https://github.com/AIrjen/OneButtonPrompt": { - "stars": 909, - "last_update": "2024-10-26 13:22:39", - "author_account_age_days": 658 - }, - "https://github.com/ALatentPlace/ComfyUI_yanc": { - "stars": 54, - "last_update": "2025-01-22 14:44:17", - "author_account_age_days": 1675 - }, - "https://github.com/APZmedia/APZmedia-comfyui-fast-image-save": { - "stars": 2, - "last_update": "2024-11-08 07:17:20", - "author_account_age_days": 2692 - }, - "https://github.com/APZmedia/ComfyUI-APZmedia-cleanName-from-string": { - "stars": 6, - "last_update": "2024-09-06 09:44:42", - "author_account_age_days": 2692 - }, - "https://github.com/ARZUMATA/ComfyUI-ARZUMATA": { - "stars": 5, - "last_update": "2024-11-01 00:10:58", - "author_account_age_days": 1982 - }, - "https://github.com/ARZUMATA/ComfyUI-ARZUMATA-Qwen2": { - "stars": 1, - "last_update": "2024-11-08 17:29:32", - "author_account_age_days": 1982 - }, - "https://github.com/Aaron-CHM/ComfyUI-z-a1111-sd-webui-DanTagGen": { - "stars": 4, - "last_update": "2024-07-17 03:55:26", - "author_account_age_days": 1742 - }, - "https://github.com/AbdullahAlfaraj/Comfy-Photoshop-SD": { - "stars": 262, - "last_update": "2024-06-14 07:04:37", - "author_account_age_days": 3883 - }, - "https://github.com/AbyssBadger0/ComfyUI_BadgerTools": { - "stars": 9, - "last_update": "2024-11-12 11:10:16", - "author_account_age_days": 705 - }, - "https://github.com/AbyssBadger0/ComfyUI_Kolors_awesome_prompts": { - "stars": 6, - "last_update": "2024-08-29 15:19:06", - "author_account_age_days": 705 - }, - "https://github.com/Acly/comfyui-inpaint-nodes": { - "stars": 797, - "last_update": "2024-11-20 08:54:22", - "author_account_age_days": 4020 - }, - "https://github.com/Acly/comfyui-tooling-nodes": { - "stars": 393, - "last_update": "2025-01-15 08:08:24", - "author_account_age_days": 4020 - }, - "https://github.com/AconexOfficial/ComfyUI_GOAT_Nodes": { - "stars": 4, - "last_update": "2025-01-17 14:45:24", - "author_account_age_days": 1696 - }, - "https://github.com/Aerse/ComfyUI-Seed-Nodes": { - "stars": 3, - "last_update": "2024-12-17 05:40:40", - "author_account_age_days": 3593 - }, - "https://github.com/AhBumm/ComfyUI_BillBum_Nodes": { - "stars": 9, - "last_update": "2025-01-25 18:33:17", - "author_account_age_days": 1025 - }, - "https://github.com/AiMiDi/ComfyUI-Aimidi-nodes": { - "stars": 0, - "last_update": "2024-06-20 17:26:02", - "author_account_age_days": 1491 - }, - "https://github.com/AkashKarnatak/ComfyUI_faishme": { - "stars": 1, - "last_update": "2024-12-09 16:08:07", - "author_account_age_days": 1968 - }, - "https://github.com/Aksaz/comfyui-seamless-clone": { - "stars": 4, - "last_update": "2024-12-22 12:42:36", - "author_account_age_days": 98 - }, - "https://github.com/AlekPet/ComfyUI_Custom_Nodes_AlekPet": { - "stars": 996, - "last_update": "2025-01-24 15:32:57", - "author_account_age_days": 2915 - }, - "https://github.com/Alvaroeai/ComfyUI-Text2Json": { - "stars": 1, - "last_update": "2024-11-26 16:40:31", - "author_account_age_days": 3917 - }, - "https://github.com/Amorano/Jovi_GLSL": { - "stars": 8, - "last_update": "2025-01-09 04:18:55", - "author_account_age_days": 5428 - }, - "https://github.com/Amorano/Jovi_Measure": { - "stars": 2, - "last_update": "2025-01-11 22:33:13", - "author_account_age_days": 5428 - }, - "https://github.com/Amorano/Jovi_Spout": { - "stars": 4, - "last_update": "2025-01-08 22:43:43", - "author_account_age_days": 5428 - }, - "https://github.com/Amorano/Jovimetrix": { - "stars": 302, - "last_update": "2025-01-12 21:18:53", - "author_account_age_days": 5428 - }, - "https://github.com/Anibaaal/ComfyUI-UX-Nodes": { - "stars": 2, - "last_update": "2025-01-23 13:35:49", - "author_account_age_days": 3592 - }, - "https://github.com/AonekoSS/ComfyUI-LoRA-Tuner": { - "stars": 9, - "last_update": "2024-08-12 11:45:52", - "author_account_age_days": 4307 - }, - "https://github.com/AonekoSS/ComfyUI-SimpleCounter": { - "stars": 2, - "last_update": "2024-08-01 15:13:56", - "author_account_age_days": 4307 - }, - "https://github.com/Apache0ne/ComfyUI-EasyUrlLoader": { - "stars": 2, - "last_update": "2024-10-31 10:55:57", - "author_account_age_days": 94 - }, - "https://github.com/Apache0ne/SambaNova": { - "stars": 3, - "last_update": "2024-11-02 07:41:35", - "author_account_age_days": 94 - }, - "https://github.com/ArcherFMY/Diffusion360_ComfyUI": { - "stars": 34, - "last_update": "2024-05-28 03:14:17", - "author_account_age_days": 3605 - }, - "https://github.com/ArdeniusAI/ComfyUI-Ardenius": { - "stars": 5, - "last_update": "2024-11-24 09:57:46", - "author_account_age_days": 342 - }, - "https://github.com/ArtBot2023/CharacterFaceSwap": { - "stars": 77, - "last_update": "2024-05-22 20:53:09", - "author_account_age_days": 509 - }, - "https://github.com/ArtHommage/HommageTools": { - "stars": 2, - "last_update": "2025-01-23 23:52:48", - "author_account_age_days": 749 - }, - "https://github.com/ArtVentureX/comfyui-animatediff": { - "stars": 714, - "last_update": "2024-05-22 18:16:43", - "author_account_age_days": 621 - }, - "https://github.com/AshMartian/ComfyUI-DirGir": { - "stars": 17, - "last_update": "2024-05-29 22:28:55", - "author_account_age_days": 4802 - }, - "https://github.com/AuroBit/ComfyUI-AnimateAnyone-reproduction": { - "stars": 37, - "last_update": "2024-06-14 09:03:24", - "author_account_age_days": 605 - }, - "https://github.com/AuroBit/ComfyUI-OOTDiffusion": { - "stars": 432, - "last_update": "2024-07-12 03:49:27", - "author_account_age_days": 605 - }, - "https://github.com/AustinMroz/ComfyUI-DynamicOversampling": { - "stars": 0, - "last_update": "2024-06-14 07:06:51", - "author_account_age_days": 4290 - }, - "https://github.com/AustinMroz/ComfyUI-MinCache": { - "stars": 2, - "last_update": "2024-12-25 18:52:07", - "author_account_age_days": 4290 - }, - "https://github.com/AustinMroz/ComfyUI-SpliceTools": { - "stars": 6, - "last_update": "2024-06-14 07:07:21", - "author_account_age_days": 4290 - }, - "https://github.com/AustinMroz/ComfyUI-WorkflowCheckpointing": { - "stars": 11, - "last_update": "2024-10-17 19:59:40", - "author_account_age_days": 4290 - }, - "https://github.com/Auttasak-L/ComfyUI-ImageCropper": { - "stars": 1, - "last_update": "2024-05-23 05:04:53", - "author_account_age_days": 2865 - }, - "https://github.com/BAIS1C/ComfyUI_RSS_Feed_Reader": { - "stars": 5, - "last_update": "2024-09-13 22:09:17", - "author_account_age_days": 705 - }, - "https://github.com/BIMer-99/ComfyUI_FishSpeech_EX": { - "stars": 3, - "last_update": "2024-12-21 11:35:08", - "author_account_age_days": 1448 - }, - "https://github.com/BIMer-99/Comfyui_Hunyuan3D_EX": { - "stars": 5, - "last_update": "2024-12-09 17:50:23", - "author_account_age_days": 1448 - }, - "https://github.com/BXYMartin/ComfyUI-InstantIDUtils": { - "stars": 3, - "last_update": "2024-05-23 00:08:50", - "author_account_age_days": 2659 - }, - "https://github.com/BZcreativ/ComfyUI-FLUX-TOGETHER-API": { - "stars": 2, - "last_update": "2024-11-02 14:45:28", - "author_account_age_days": 3452 - }, - "https://github.com/BadCafeCode/masquerade-nodes-comfyui": { - "stars": 386, - "last_update": "2024-06-19 04:16:54", - "author_account_age_days": 646 - }, - "https://github.com/Beinsezii/bsz-cui-extras": { - "stars": 24, - "last_update": "2024-05-22 20:46:45", - "author_account_age_days": 2442 - }, - "https://github.com/Bellzs/ComfyUI-LoRA-Assistant": { - "stars": 7, - "last_update": "2025-01-24 03:29:13", - "author_account_age_days": 3223 - }, - "https://github.com/BenNarum/ComfyUI_CAS": { - "stars": 2, - "last_update": "2024-07-13 12:00:40", - "author_account_age_days": 3288 - }, - "https://github.com/BenNarum/SigmaWaveFormNode": { - "stars": 5, - "last_update": "2024-06-20 15:20:35", - "author_account_age_days": 3288 - }, - "https://github.com/BennyKok/comfyui-deploy": { - "stars": 1190, - "last_update": "2025-01-23 05:44:35", - "author_account_age_days": 3211 - }, - "https://github.com/BetaDoggo/ComfyUI-FastSDCPU": { - "stars": 9, - "last_update": "2024-09-16 05:34:01", - "author_account_age_days": 1013 - }, - "https://github.com/BetaDoggo/ComfyUI-Gatcha-Embedding": { - "stars": 1, - "last_update": "2024-08-28 00:24:01", - "author_account_age_days": 1013 - }, - "https://github.com/BetaDoggo/ComfyUI-VideoPlayer": { - "stars": 16, - "last_update": "2024-08-05 04:45:12", - "author_account_age_days": 1013 - }, - "https://github.com/BetaDoggo/ComfyUI-WDV-Nodes": { - "stars": 2, - "last_update": "2024-08-01 07:59:10", - "author_account_age_days": 1013 - }, - "https://github.com/BetaDoggo/ComfyUI-YetAnotherSafetyChecker": { - "stars": 5, - "last_update": "2024-07-19 18:11:11", - "author_account_age_days": 1013 - }, - "https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools": { - "stars": 23, - "last_update": "2025-01-23 08:28:56", - "author_account_age_days": 1087 - }, - "https://github.com/Big-Idea-Technology/ComfyUI_LLM_Node": { - "stars": 62, - "last_update": "2024-08-01 08:01:48", - "author_account_age_days": 1087 - }, - "https://github.com/Billius-AI/ComfyUI-Path-Helper": { - "stars": 17, - "last_update": "2024-05-22 23:25:08", - "author_account_age_days": 350 - }, - "https://github.com/Bin-sam/DynamicPose-ComfyUI": { - "stars": 4, - "last_update": "2024-09-11 12:09:11", - "author_account_age_days": 150 - }, - "https://github.com/Black-Lioness/ComfyUI-PromptUtils": { - "stars": 3, - "last_update": "2024-11-22 03:05:11", - "author_account_age_days": 1071 - }, - "https://github.com/BlackVortexAI/ComfyUI-BVortexNodes": { - "stars": 3, - "last_update": "2024-10-23 09:19:54", - "author_account_age_days": 171 - }, - "https://github.com/BlakeOne/ComfyUI-CustomScheduler": { - "stars": 14, - "last_update": "2024-05-23 00:23:56", - "author_account_age_days": 2748 - }, - "https://github.com/BlakeOne/ComfyUI-NodePresets": { - "stars": 11, - "last_update": "2024-05-23 00:24:07", - "author_account_age_days": 2748 - }, - "https://github.com/BlakeOne/ComfyUI-NodeReset": { - "stars": 2, - "last_update": "2024-05-23 00:24:18", - "author_account_age_days": 2748 - }, - "https://github.com/BlakeOne/ComfyUI-SchedulerMixer": { - "stars": 10, - "last_update": "2024-05-23 00:23:44", - "author_account_age_days": 2748 - }, - "https://github.com/BlenderNeko/ComfyUI_ADV_CLIP_emb": { - "stars": 345, - "last_update": "2024-08-07 15:13:31", - "author_account_age_days": 693 - }, - "https://github.com/BlenderNeko/ComfyUI_Cutoff": { - "stars": 381, - "last_update": "2024-05-22 15:01:45", - "author_account_age_days": 693 - }, - "https://github.com/BlenderNeko/ComfyUI_Noise": { - "stars": 274, - "last_update": "2024-06-10 16:38:48", - "author_account_age_days": 693 - }, - "https://github.com/BlenderNeko/ComfyUI_SeeCoder": { - "stars": 38, - "last_update": "2024-05-22 14:57:04", - "author_account_age_days": 693 - }, - "https://github.com/BlenderNeko/ComfyUI_TiledKSampler": { - "stars": 343, - "last_update": "2024-05-22 14:56:49", - "author_account_age_days": 693 - }, - "https://github.com/Blonicx/ComfyUI-X-Rework": { - "stars": 2, - "last_update": "2025-01-23 13:24:32", - "author_account_age_days": 938 - }, - "https://github.com/BoyuanJiang/FitDiT-ComfyUI": { - "stars": 53, - "last_update": "2025-01-21 12:09:05", - "author_account_age_days": 3297 - }, - "https://github.com/Bria-AI/ComfyUI-BRIA-API": { - "stars": 9, - "last_update": "2025-01-21 08:22:52", - "author_account_age_days": 1693 - }, - "https://github.com/Burgstall-labs/ComfyUI-BS_Kokoro-onnx": { - "stars": 31, - "last_update": "2025-01-19 19:05:24", - "author_account_age_days": 6 - }, - "https://github.com/CC-BryanOttho/ComfyUI_API_Manager": { - "stars": 16, - "last_update": "2024-06-14 07:13:34", - "author_account_age_days": 700 - }, - "https://github.com/CY-CHENYUE/ComfyUI-InpaintEasy": { - "stars": 50, - "last_update": "2025-01-24 16:09:46", - "author_account_age_days": 413 - }, - "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-Plus": { - "stars": 21, - "last_update": "2024-10-09 06:56:04", - "author_account_age_days": 413 - }, - "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-o": { - "stars": 3, - "last_update": "2025-01-24 14:49:28", - "author_account_age_days": 413 - }, - "https://github.com/CY-CHENYUE/ComfyUI-Molmo": { - "stars": 106, - "last_update": "2024-10-14 15:06:36", - "author_account_age_days": 413 - }, - "https://github.com/CY-CHENYUE/ComfyUI-OmniGenX": { - "stars": 7, - "last_update": "2025-01-24 16:13:13", - "author_account_age_days": 413 - }, - "https://github.com/CY-CHENYUE/ComfyUI-Redux-Prompt": { - "stars": 49, - "last_update": "2025-01-24 15:43:29", - "author_account_age_days": 413 - }, - "https://github.com/CYBERLOOM-INC/ComfyUI-nodes-hnmr": { - "stars": 7, - "last_update": "2024-05-22 17:55:41", - "author_account_age_days": 465 - }, - "https://github.com/CavinHuang/comfyui-nodes-docs": { - "stars": 180, - "last_update": "2024-07-04 11:29:55", - "author_account_age_days": 2942 - }, - "https://github.com/Chan-0312/ComfyUI-EasyDeforum": { - "stars": 10, - "last_update": "2024-05-22 23:22:14", - "author_account_age_days": 2082 - }, - "https://github.com/Chan-0312/ComfyUI-IPAnimate": { - "stars": 73, - "last_update": "2024-05-22 23:22:03", - "author_account_age_days": 2082 - }, - "https://github.com/Chan-0312/ComfyUI-Prompt-Preview": { - "stars": 31, - "last_update": "2024-06-14 09:01:37", - "author_account_age_days": 2082 - }, - "https://github.com/Chaoses-Ib/ComfyUI_Ib_CustomNodes": { - "stars": 29, - "last_update": "2024-12-22 12:10:13", - "author_account_age_days": 2094 - }, - "https://github.com/Charlweed/image_transceiver": { - "stars": 3, - "last_update": "2025-01-06 19:22:50", - "author_account_age_days": 5313 - }, - "https://github.com/ChenDarYen/ComfyUI-TimestepShiftModel": { - "stars": 10, - "last_update": "2025-01-07 18:22:10", - "author_account_age_days": 2117 - }, - "https://github.com/ChrisColeTech/ComfyUI-Elegant-Resource-Monitor": { - "stars": 12, - "last_update": "2024-09-23 21:48:27", - "author_account_age_days": 2628 - }, - "https://github.com/ChrisColeTech/ComfyUI-Line-counter": { - "stars": 3, - "last_update": "2024-09-02 02:30:14", - "author_account_age_days": 2628 - }, - "https://github.com/ClownsharkBatwing/RES4LYF": { - "stars": 73, - "last_update": "2025-01-26 04:06:08", - "author_account_age_days": 245 - }, - "https://github.com/Clybius/ComfyUI-Extra-Samplers": { - "stars": 75, - "last_update": "2024-11-15 17:21:45", - "author_account_age_days": 1949 - }, - "https://github.com/Clybius/ComfyUI-Latent-Modifiers": { - "stars": 79, - "last_update": "2024-06-14 09:02:44", - "author_account_age_days": 1949 - }, - "https://github.com/ComfyUI-JH/ComfyUI-JH-Misc-Nodes": { - "stars": 2, - "last_update": "2024-12-28 19:44:14", - "author_account_age_days": 38 - }, - "https://github.com/ComfyUI-JH/ComfyUI-JH-XMP-Metadata-Nodes": { - "stars": 1, - "last_update": "2024-12-31 21:44:05", - "author_account_age_days": 38 - }, - "https://github.com/CosmicLaca/ComfyUI_Primere_Nodes": { - "stars": 115, - "last_update": "2025-01-07 15:03:52", - "author_account_age_days": 3871 - }, - "https://github.com/CpreForEver/CFE_comfyui": { - "stars": 1, - "last_update": "2024-12-09 01:38:42", - "author_account_age_days": 168 - }, - "https://github.com/Creeper-MZ/comfyui_nai_api": { - "stars": 1, - "last_update": "2024-10-02 21:30:26", - "author_account_age_days": 1219 - }, - "https://github.com/CyanAutumn/ComfyUi_Random_Manage_Cyan": { - "stars": 4, - "last_update": "2024-12-19 10:54:08", - "author_account_age_days": 1318 - }, - "https://github.com/Cyber-BCat/ComfyUI_Auto_Caption": { - "stars": 10, - "last_update": "2025-01-23 06:47:34", - "author_account_age_days": 630 - }, - "https://github.com/Cyber-Blacat/ComfyUI-Yuan": { - "stars": 6, - "last_update": "2025-01-23 06:44:49", - "author_account_age_days": 630 - }, - "https://github.com/Cyberschorsch/ComfyUI-checkpoint-config-loader": { - "stars": 1, - "last_update": "2024-07-31 13:54:16", - "author_account_age_days": 5373 - }, - "https://github.com/DJ-Tribefull/Comfyui_FOCUS_nodes": { - "stars": 2, - "last_update": "2025-01-25 07:36:21", - "author_account_age_days": 4 - }, - "https://github.com/Danand/ComfyUI-ComfyCouple": { - "stars": 33, - "last_update": "2024-08-10 22:24:01", - "author_account_age_days": 4504 - }, - "https://github.com/DanielHabib/ComfyUI-Voxels": { - "stars": 4, - "last_update": "2024-09-16 15:41:02", - "author_account_age_days": 3799 - }, - "https://github.com/DareFail/ComfyUI-Roboflow": { - "stars": 32, - "last_update": "2024-09-25 18:30:43", - "author_account_age_days": 4803 - }, - "https://github.com/DarioFT/ComfyUI-VideoDirCombiner": { - "stars": 4, - "last_update": "2024-12-22 14:37:21", - "author_account_age_days": 3693 - }, - "https://github.com/DataCTE/prompt_injection": { - "stars": 87, - "last_update": "2024-06-21 12:56:43", - "author_account_age_days": 993 - }, - "https://github.com/Dayuppy/ComfyUI-DiscordWebhook": { - "stars": 4, - "last_update": "2024-10-12 05:12:07", - "author_account_age_days": 4431 - }, - "https://github.com/DeJoker/pipeline-parallel-comfy": { - "stars": 3, - "last_update": "2024-07-29 06:59:37", - "author_account_age_days": 3206 - }, - "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": { - "stars": 382, - "last_update": "2024-06-22 02:12:19", - "author_account_age_days": 1990 - }, - "https://github.com/DesertPixelAi/ComfyUI-Desert-Pixel-Nodes": { - "stars": 13, - "last_update": "2025-01-15 09:02:21", - "author_account_age_days": 361 - }, - "https://github.com/DigitalIO/ComfyUI-stable-wildcards": { - "stars": 25, - "last_update": "2024-08-12 19:00:17", - "author_account_age_days": 4254 - }, - "https://github.com/DimaChaichan/LAizypainter-Exporter-ComfyUI": { - "stars": 6, - "last_update": "2024-05-22 23:14:06", - "author_account_age_days": 3288 - }, - "https://github.com/Dobidop/ComfyStereo": { - "stars": 12, - "last_update": "2024-08-06 19:59:34", - "author_account_age_days": 1676 - }, - "https://github.com/DoctorDiffusion/ComfyUI-BEN": { - "stars": 21, - "last_update": "2024-12-15 18:19:01", - "author_account_age_days": 557 - }, - "https://github.com/DoctorDiffusion/ComfyUI-MediaMixer": { - "stars": 9, - "last_update": "2024-12-05 03:05:44", - "author_account_age_days": 557 - }, - "https://github.com/DoctorDiffusion/ComfyUI-Schedulizer": { - "stars": 6, - "last_update": "2024-11-30 03:13:29", - "author_account_age_days": 557 - }, - "https://github.com/DoctorDiffusion/ComfyUI-SnakeOil": { - "stars": 3, - "last_update": "2024-12-31 00:59:19", - "author_account_age_days": 557 - }, - "https://github.com/DoctorDiffusion/ComfyUI-basic-pitch": { - "stars": 2, - "last_update": "2024-12-25 19:07:11", - "author_account_age_days": 557 - }, - "https://github.com/DrJKL/ComfyUI-Anchors": { - "stars": 6, - "last_update": "2024-06-20 18:23:00", - "author_account_age_days": 5210 - }, - "https://github.com/DrMWeigand/ComfyUI-StereoVision": { - "stars": 6, - "last_update": "2025-01-14 09:33:55", - "author_account_age_days": 1247 - }, - "https://github.com/DrMWeigand/ComfyUI_ColorImageDetection": { - "stars": 3, - "last_update": "2024-07-15 13:21:10", - "author_account_age_days": 1247 - }, - "https://github.com/DraconicDragon/ComfyUI-Venice-API": { - "stars": 1, - "last_update": "2025-01-25 07:06:50", - "author_account_age_days": 1589 - }, - "https://github.com/Eagle-CN/ComfyUI-Addoor": { - "stars": 22, - "last_update": "2025-01-24 07:50:20", - "author_account_age_days": 2843 - }, - "https://github.com/EeroHeikkinen/ComfyUI-eesahesNodes": { - "stars": 67, - "last_update": "2024-09-01 11:43:02", - "author_account_age_days": 4933 - }, - "https://github.com/Elaine-chennn/comfyui-overlay-media": { - "stars": 1, - "last_update": "2024-10-09 11:07:46", - "author_account_age_days": 1359 - }, - "https://github.com/Electrofried/ComfyUI-OpenAINode": { - "stars": 25, - "last_update": "2024-06-14 09:01:22", - "author_account_age_days": 2835 - }, - "https://github.com/EllangoK/ComfyUI-post-processing-nodes": { - "stars": 202, - "last_update": "2025-01-20 07:16:46", - "author_account_age_days": 2994 - }, - "https://github.com/EnragedAntelope/ComfyUI-ConstrainResolution": { - "stars": 4, - "last_update": "2025-01-25 04:17:55", - "author_account_age_days": 185 - }, - "https://github.com/EnragedAntelope/ComfyUI-Doubutsu-Describer": { - "stars": 10, - "last_update": "2024-07-29 01:21:20", - "author_account_age_days": 185 - }, - "https://github.com/EnragedAntelope/ComfyUI-EACloudNodes": { - "stars": 1, - "last_update": "2025-01-26 06:37:35", - "author_account_age_days": 185 - }, - "https://github.com/EvilBT/ComfyUI_SLK_joy_caption_two": { - "stars": 306, - "last_update": "2024-10-22 09:13:15", - "author_account_age_days": 3815 - }, - "https://github.com/Excidos/ComfyUI-Documents": { - "stars": 42, - "last_update": "2024-07-11 20:15:21", - "author_account_age_days": 222 - }, - "https://github.com/Excidos/ComfyUI-Lumina-Next-SFT-DiffusersWrapper": { - "stars": 15, - "last_update": "2024-07-30 10:27:07", - "author_account_age_days": 222 - }, - "https://github.com/ExponentialML/ComfyUI_ModelScopeT2V": { - "stars": 27, - "last_update": "2024-05-23 00:12:17", - "author_account_age_days": 1839 - }, - "https://github.com/ExponentialML/ComfyUI_Native_DynamiCrafter": { - "stars": 112, - "last_update": "2024-06-08 02:33:02", - "author_account_age_days": 1839 - }, - "https://github.com/ExponentialML/ComfyUI_VisualStylePrompting": { - "stars": 285, - "last_update": "2024-05-23 00:12:41", - "author_account_age_days": 1839 - }, - "https://github.com/ExterminanzHS/Gecco-Discord-Autosend": { - "stars": 2, - "last_update": "2024-09-05 12:33:30", - "author_account_age_days": 3423 - }, - "https://github.com/Extraltodeus/ComfyUI-AutomaticCFG": { - "stars": 380, - "last_update": "2024-09-10 17:44:50", - "author_account_age_days": 3365 - }, - "https://github.com/Extraltodeus/LoadLoraWithTags": { - "stars": 64, - "last_update": "2024-11-23 12:05:02", - "author_account_age_days": 3365 - }, - "https://github.com/Extraltodeus/Skimmed_CFG": { - "stars": 165, - "last_update": "2024-10-25 20:59:10", - "author_account_age_days": 3365 - }, - "https://github.com/Extraltodeus/Stable-Diffusion-temperature-settings": { - "stars": 41, - "last_update": "2024-07-10 00:27:51", - "author_account_age_days": 3365 - }, - "https://github.com/Extraltodeus/Uncond-Zero-for-ComfyUI": { - "stars": 44, - "last_update": "2024-07-10 00:27:36", - "author_account_age_days": 3365 - }, - "https://github.com/Extraltodeus/Vector_Sculptor_ComfyUI": { - "stars": 113, - "last_update": "2024-08-28 05:29:07", - "author_account_age_days": 3365 - }, - "https://github.com/Extraltodeus/noise_latent_perlinpinpin": { - "stars": 33, - "last_update": "2024-08-13 14:19:11", - "author_account_age_days": 3365 - }, - "https://github.com/Extraltodeus/pre_cfg_comfy_nodes_for_ComfyUI": { - "stars": 39, - "last_update": "2024-09-23 02:53:31", - "author_account_age_days": 3365 - }, - "https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler": { - "stars": 74, - "last_update": "2024-12-13 00:18:40", - "author_account_age_days": 3365 - }, - "https://github.com/Fannovel16/ComfyUI-Frame-Interpolation": { - "stars": 561, - "last_update": "2024-10-11 04:50:47", - "author_account_age_days": 3347 - }, - "https://github.com/Fannovel16/ComfyUI-MagickWand": { - "stars": 99, - "last_update": "2024-08-01 01:00:58", - "author_account_age_days": 3347 - }, - "https://github.com/Fannovel16/ComfyUI-MotionDiff": { - "stars": 183, - "last_update": "2024-08-01 01:01:53", - "author_account_age_days": 3347 - }, - "https://github.com/Fannovel16/ComfyUI-Video-Matting": { - "stars": 197, - "last_update": "2024-08-14 01:28:50", - "author_account_age_days": 3347 - }, - "https://github.com/Fannovel16/comfyui_controlnet_aux": { - "stars": 2555, - "last_update": "2024-10-28 22:08:11", - "author_account_age_days": 3347 - }, - "https://github.com/Fantaxico/ComfyUI-GCP-Storage": { - "stars": 2, - "last_update": "2024-06-14 09:05:52", - "author_account_age_days": 751 - }, - "https://github.com/Feidorian/feidorian-ComfyNodes": { - "stars": 5, - "last_update": "2024-06-20 11:31:37", - "author_account_age_days": 2971 - }, - "https://github.com/Fictiverse/ComfyUI_Fictiverse": { - "stars": 14, - "last_update": "2024-12-02 16:48:03", - "author_account_age_days": 887 - }, - "https://github.com/Fihade/IC-Light-ComfyUI-Node": { - "stars": 6, - "last_update": "2024-07-02 03:47:17", - "author_account_age_days": 2963 - }, - "https://github.com/FinetunersAI/ComfyUI_Finetuners_Suite": { - "stars": 4, - "last_update": "2025-01-16 16:08:24", - "author_account_age_days": 237 - }, - "https://github.com/FizzleDorf/ComfyUI-AIT": { - "stars": 51, - "last_update": "2024-06-22 03:13:05", - "author_account_age_days": 2195 - }, - "https://github.com/FizzleDorf/ComfyUI_FizzNodes": { - "stars": 417, - "last_update": "2024-10-29 01:51:46", - "author_account_age_days": 2195 - }, - "https://github.com/FlyingFireCo/tiled_ksampler": { - "stars": 74, - "last_update": "2024-05-22 23:15:17", - "author_account_age_days": 848 - }, - "https://github.com/ForeignGods/ComfyUI-Mana-Nodes": { - "stars": 221, - "last_update": "2024-05-29 18:29:05", - "author_account_age_days": 1459 - }, - "https://github.com/Franck-Demongin/NX_HuggingFace_Flux": { - "stars": 3, - "last_update": "2024-08-14 02:17:21", - "author_account_age_days": 1987 - }, - "https://github.com/Franck-Demongin/NX_PromptStyler": { - "stars": 8, - "last_update": "2024-05-22 23:25:21", - "author_account_age_days": 1987 - }, - "https://github.com/Franck-Demongin/NX_Translator": { - "stars": 1, - "last_update": "2024-08-14 02:17:01", - "author_account_age_days": 1987 - }, - "https://github.com/FredBill1/comfyui-fb-utils": { - "stars": 1, - "last_update": "2024-05-23 01:41:02", - "author_account_age_days": 2532 - }, - "https://github.com/FuouM/ComfyUI-EbSynth": { - "stars": 84, - "last_update": "2024-08-17 15:44:49", - "author_account_age_days": 1897 - }, - "https://github.com/FuouM/ComfyUI-FirstOrderMM": { - "stars": 6, - "last_update": "2024-08-17 15:26:38", - "author_account_age_days": 1897 - }, - "https://github.com/FuouM/ComfyUI-StyleTransferPlus": { - "stars": 8, - "last_update": "2024-08-14 15:42:37", - "author_account_age_days": 1897 - }, - "https://github.com/FuouM/FM_nodes": { - "stars": 4, - "last_update": "2024-08-12 04:49:06", - "author_account_age_days": 1897 - }, - "https://github.com/Fuwuffyi/ComfyUI-VisualArea-Nodes": { - "stars": 62, - "last_update": "2024-11-05 17:00:49", - "author_account_age_days": 1378 - }, - "https://github.com/G-370/ComfyUI-SD3-Powerlab": { - "stars": 20, - "last_update": "2024-06-22 19:17:18", - "author_account_age_days": 1735 - }, - "https://github.com/GMapeSplat/ComfyUI_ezXY": { - "stars": 26, - "last_update": "2024-09-04 03:00:13", - "author_account_age_days": 1513 - }, - "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes": { - "stars": 8, - "last_update": "2024-05-22 21:31:52", - "author_account_age_days": 2772 - }, - "https://github.com/GadzoinksOfficial/gadzoinks_ComfyUI": { - "stars": 1, - "last_update": "2024-11-11 14:46:34", - "author_account_age_days": 371 - }, - "https://github.com/GavChap/ComfyUI-SD3LatentSelectRes": { - "stars": 12, - "last_update": "2024-10-10 20:39:32", - "author_account_age_days": 4783 - }, - "https://github.com/GeekyGhost/ComfyUI-GeekyRemB": { - "stars": 40, - "last_update": "2024-12-06 15:42:18", - "author_account_age_days": 885 - }, - "https://github.com/GentlemanHu/ComfyUI-SunoAI": { - "stars": 18, - "last_update": "2024-12-17 11:46:33", - "author_account_age_days": 2599 - }, - "https://github.com/GiusTex/ComfyUI-DiffusersImageOutpaint": { - "stars": 68, - "last_update": "2024-12-01 00:43:54", - "author_account_age_days": 881 - }, - "https://github.com/GoingAI1998/Comfyui_imgcanvas": { - "stars": 4, - "last_update": "2025-01-21 05:32:24", - "author_account_age_days": 401 - }, - "https://github.com/Goktug/comfyui-saveimage-plus": { - "stars": 8, - "last_update": "2024-11-13 06:03:10", - "author_account_age_days": 5147 - }, - "https://github.com/Gourieff/ComfyUI-ReActor": { - "stars": 178, - "last_update": "2025-01-22 10:38:34", - "author_account_age_days": 1335 - }, - "https://github.com/GraftingRayman/ComfyUI-PuLID-Flux-GR": { - "stars": 40, - "last_update": "2025-01-26 08:06:57", - "author_account_age_days": 378 - }, - "https://github.com/GraftingRayman/ComfyUI_GraftingRayman": { - "stars": 58, - "last_update": "2024-12-16 10:18:14", - "author_account_age_days": 378 - }, - "https://github.com/GraftingRayman/ComfyUI_QueueTube": { - "stars": 1, - "last_update": "2025-01-08 20:59:13", - "author_account_age_days": 378 - }, - "https://github.com/GreenLandisaLie/AuraSR-ComfyUI": { - "stars": 164, - "last_update": "2024-09-04 10:58:03", - "author_account_age_days": 1413 - }, - "https://github.com/GrenKain/PixelArt-Processing-Nodes-for-ComfyUI": { - "stars": 5, - "last_update": "2024-09-06 11:37:05", - "author_account_age_days": 2626 - }, - "https://github.com/GrvBdgr/comfyui-negativewildcardsprocessor": { - "stars": 2, - "last_update": "2024-11-15 19:46:39", - "author_account_age_days": 88 - }, - "https://github.com/Guillaume-Fgt/ComfyUI_StableCascadeLatentRatio": { - "stars": 3, - "last_update": "2024-06-14 08:59:42", - "author_account_age_days": 1696 - }, - "https://github.com/HAL41/ComfyUI-aichemy-nodes": { - "stars": 4, - "last_update": "2024-05-22 23:10:19", - "author_account_age_days": 3061 - }, - "https://github.com/HECer/ComfyUI-FilePathCreator": { - "stars": 7, - "last_update": "2024-10-20 14:41:48", - "author_account_age_days": 3196 - }, - "https://github.com/HM-RunningHub/ComfyUI_RH_APICall": { - "stars": 14, - "last_update": "2025-01-15 13:49:53", - "author_account_age_days": 44 - }, - "https://github.com/HM-RunningHub/ComfyUI_RH_OminiControl": { - "stars": 112, - "last_update": "2024-12-20 08:41:09", - "author_account_age_days": 44 - }, - "https://github.com/Haiper-ai/ComfyUI-HaiperAI-API": { - "stars": 9, - "last_update": "2024-12-06 18:08:50", - "author_account_age_days": 1215 - }, - "https://github.com/Hangover3832/ComfyUI-Hangover-Moondream": { - "stars": 48, - "last_update": "2025-01-23 16:54:55", - "author_account_age_days": 825 - }, - "https://github.com/Hangover3832/ComfyUI-Hangover-Nodes": { - "stars": 40, - "last_update": "2024-06-14 08:08:28", - "author_account_age_days": 825 - }, - "https://github.com/Hangover3832/ComfyUI-Hangover-Recognize_Anything": { - "stars": 20, - "last_update": "2024-06-14 08:10:52", - "author_account_age_days": 825 - }, - "https://github.com/Haoming02/comfyui-clear-screen": { - "stars": 2, - "last_update": "2024-09-09 09:14:41", - "author_account_age_days": 1547 - }, - "https://github.com/Haoming02/comfyui-diffusion-cg": { - "stars": 90, - "last_update": "2024-10-12 13:39:00", - "author_account_age_days": 1547 - }, - "https://github.com/Haoming02/comfyui-floodgate": { - "stars": 30, - "last_update": "2024-08-02 06:21:25", - "author_account_age_days": 1547 - }, - "https://github.com/Haoming02/comfyui-menu-anchor": { - "stars": 4, - "last_update": "2024-10-19 11:42:51", - "author_account_age_days": 1547 - }, - "https://github.com/Haoming02/comfyui-node-beautify": { - "stars": 8, - "last_update": "2024-09-09 09:04:35", - "author_account_age_days": 1547 - }, - "https://github.com/Haoming02/comfyui-old-photo-restoration": { - "stars": 30, - "last_update": "2024-11-05 02:18:05", - "author_account_age_days": 1547 - }, - "https://github.com/Haoming02/comfyui-prompt-format": { - "stars": 33, - "last_update": "2024-09-20 04:29:03", - "author_account_age_days": 1547 - }, - "https://github.com/Haoming02/comfyui-resharpen": { - "stars": 44, - "last_update": "2024-08-20 05:21:20", - "author_account_age_days": 1547 - }, - "https://github.com/Haoming02/comfyui-tab-handler": { - "stars": 5, - "last_update": "2024-09-09 09:20:58", - "author_account_age_days": 1547 - }, - "https://github.com/HaydenReeve/ComfyUI-Better-Strings": { - "stars": 3, - "last_update": "2024-11-18 11:08:29", - "author_account_age_days": 2457 - }, - "https://github.com/HeadshotPro/ComfyUI-HeadshotPro": { - "stars": 2, - "last_update": "2024-08-14 04:00:34", - "author_account_age_days": 569 - }, - "https://github.com/HebelHuber/comfyui-enhanced-save-node": { - "stars": 2, - "last_update": "2024-06-14 08:59:28", - "author_account_age_days": 2539 - }, - "https://github.com/HellerCommaA/ComfyUI-VideoResolutions": { - "stars": 1, - "last_update": "2025-01-19 14:06:16", - "author_account_age_days": 4543 - }, - "https://github.com/HelloVision/ComfyUI_HelloMeme": { - "stars": 319, - "last_update": "2025-01-16 06:00:39", - "author_account_age_days": 128 - }, - "https://github.com/Hellrunner2k/ComfyUI-HellrunnersMagicalNodes": { - "stars": 2, - "last_update": "2024-09-05 17:29:43", - "author_account_age_days": 3300 - }, - "https://github.com/Hiero207/ComfyUI-Hiero-Nodes": { - "stars": 6, - "last_update": "2024-08-14 01:25:26", - "author_account_age_days": 1914 - }, - "https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": { - "stars": 4, - "last_update": "2025-01-13 15:01:25", - "author_account_age_days": 404 - }, - "https://github.com/Hullabalo/ComfyUI-Loop": { - "stars": 3, - "last_update": "2025-01-08 01:15:33", - "author_account_age_days": 826 - }, - "https://github.com/IDGallagher/ComfyUI-IG-Motion-I2V": { - "stars": 34, - "last_update": "2024-09-30 10:38:22", - "author_account_age_days": 5696 - }, - "https://github.com/IDGallagher/ComfyUI-IG-Nodes": { - "stars": 3, - "last_update": "2024-10-10 10:23:48", - "author_account_age_days": 5696 - }, - "https://github.com/IDGallagher/MotionVideoSearch": { - "stars": 3, - "last_update": "2025-01-13 09:37:08", - "author_account_age_days": 5696 - }, - "https://github.com/ITurchenko/ComfyUI-SizeFromArray": { - "stars": 1, - "last_update": "2024-08-01 08:45:43", - "author_account_age_days": 3924 - }, - "https://github.com/IamCreateAI/Ruyi-Models": { - "stars": 459, - "last_update": "2025-01-20 12:21:40", - "author_account_age_days": 48 - }, - "https://github.com/Iemand005/ComfyUI-Touch-Gestures": { - "stars": 3, - "last_update": "2024-11-13 12:30:01", - "author_account_age_days": 1713 - }, - "https://github.com/Iemand005/ComfyUI-Touchpad-Gestures": { - "stars": 2, - "last_update": "2024-12-08 23:56:49", - "author_account_age_days": 1713 - }, - "https://github.com/IgalOgonov/ComfyUI_Simple_String_Repository": { - "stars": 3, - "last_update": "2024-12-28 20:21:22", - "author_account_age_days": 2445 - }, - "https://github.com/ImmortalPie/ComfyUI-PonySwitch": { - "stars": 10, - "last_update": "2024-08-18 14:05:08", - "author_account_age_days": 4038 - }, - "https://github.com/InstantStudioAI/ComfyUI-InstantStudio": { - "stars": 5, - "last_update": "2025-01-15 10:45:12", - "author_account_age_days": 46 - }, - "https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes": { - "stars": 9, - "last_update": "2024-05-23 01:12:46", - "author_account_age_days": 2846 - }, - "https://github.com/Inzaniak/comfyui-ranbooru": { - "stars": 12, - "last_update": "2024-05-22 23:12:23", - "author_account_age_days": 4125 - }, - "https://github.com/IsItDanOrAi/ComfyUI-Stereopsis": { - "stars": 10, - "last_update": "2024-09-21 21:39:11", - "author_account_age_days": 327 - }, - "https://github.com/Isi-dev/ComfyUI-Animation_Nodes_and_Workflows": { - "stars": 23, - "last_update": "2024-12-21 19:28:35", - "author_account_age_days": 1307 - }, - "https://github.com/Isi-dev/ComfyUI-Img2DrawingAssistants": { - "stars": 16, - "last_update": "2024-12-15 10:03:55", - "author_account_age_days": 1307 - }, - "https://github.com/Isi-dev/ComfyUI-Img2PaintingAssistant": { - "stars": 9, - "last_update": "2024-12-15 11:00:51", - "author_account_age_days": 1307 - }, - "https://github.com/Isi-dev/ComfyUI-UniAnimate-W": { - "stars": 101, - "last_update": "2025-01-18 22:03:22", - "author_account_age_days": 1307 - }, - "https://github.com/Isulion/ComfyUI_Isulion": { - "stars": 31, - "last_update": "2025-01-05 23:34:37", - "author_account_age_days": 573 - }, - "https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4": { - "stars": 161, - "last_update": "2024-09-03 02:02:45", - "author_account_age_days": 627 - }, - "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-Audio-7B-Instruct-Int4": { - "stars": 10, - "last_update": "2024-09-26 08:29:21", - "author_account_age_days": 627 - }, - "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-VL-Instruct": { - "stars": 77, - "last_update": "2024-09-26 08:31:38", - "author_account_age_days": 627 - }, - "https://github.com/JEONG-JIWOO/ComfyUI_Eugene_Nodes": { - "stars": 3, - "last_update": "2024-12-21 11:56:14", - "author_account_age_days": 2782 - }, - "https://github.com/JPS-GER/ComfyUI_JPS-Nodes": { - "stars": 59, - "last_update": "2024-05-22 20:39:14", - "author_account_age_days": 531 - }, - "https://github.com/JPrevots/ComfyUI-PhyCV": { - "stars": 2, - "last_update": "2024-08-19 22:00:21", - "author_account_age_days": 774 - }, - "https://github.com/JTriggerFish/ComfyLatentTools": { - "stars": 0, - "last_update": "2025-01-26 00:42:53", - "author_account_age_days": 4215 - }, - "https://github.com/JackEllie/ComfyUI_AI_Assistant": { - "stars": 25, - "last_update": "2024-09-05 03:42:14", - "author_account_age_days": 787 - }, - "https://github.com/Jaminanim/ComfyUI-Random-Int-Divisor-Node": { - "stars": 1, - "last_update": "2025-01-07 06:50:58", - "author_account_age_days": 1778 - }, - "https://github.com/Jannchie/ComfyUI-J": { - "stars": 86, - "last_update": "2024-09-14 15:22:29", - "author_account_age_days": 2769 - }, - "https://github.com/JaredTherriault/ComfyUI-JNodes": { - "stars": 52, - "last_update": "2025-01-23 01:10:11", - "author_account_age_days": 3787 - }, - "https://github.com/Jash-Vora/ComfyUI-GarmentDiT": { - "stars": 2, - "last_update": "2025-01-04 08:22:14", - "author_account_age_days": 626 - }, - "https://github.com/JcandZero/ComfyUI_GLM4Node": { - "stars": 26, - "last_update": "2024-05-22 23:12:46", - "author_account_age_days": 906 - }, - "https://github.com/Jcd1230/rembg-comfyui-node": { - "stars": 157, - "last_update": "2024-05-22 17:58:34", - "author_account_age_days": 5102 - }, - "https://github.com/JerryOrbachJr/ComfyUI-RandomSize": { - "stars": 4, - "last_update": "2024-08-25 18:35:55", - "author_account_age_days": 371 - }, - "https://github.com/JettHu/ComfyUI-TCD": { - "stars": 120, - "last_update": "2024-07-31 13:50:21", - "author_account_age_days": 2573 - }, - "https://github.com/JettHu/ComfyUI_TGate": { - "stars": 90, - "last_update": "2024-09-24 02:15:59", - "author_account_age_days": 2573 - }, - "https://github.com/JichaoLiang/Immortal_comfyUI": { - "stars": 3, - "last_update": "2025-01-16 17:03:10", - "author_account_age_days": 1239 - }, - "https://github.com/JohnDoeSmithee/ComfyUI-SoX-Mixdown": { - "stars": 1, - "last_update": "2025-01-26 09:26:46", - "author_account_age_days": 0 - }, - "https://github.com/Jonseed/ComfyUI-Detail-Daemon": { - "stars": 521, - "last_update": "2024-11-04 17:57:27", - "author_account_age_days": 2395 - }, - "https://github.com/Jordach/comfy-plasma": { - "stars": 72, - "last_update": "2024-05-22 18:08:28", - "author_account_age_days": 4728 - }, - "https://github.com/JosefKuchar/ComfyUI-AdvancedTiling": { - "stars": 13, - "last_update": "2024-08-02 15:16:12", - "author_account_age_days": 3570 - }, - "https://github.com/JosephThomasParker/ComfyUI-DrawThingsWrapper": { - "stars": 10, - "last_update": "2024-10-21 21:03:30", - "author_account_age_days": 3385 - }, - "https://github.com/Julian-adv/WildDivide": { - "stars": 16, - "last_update": "2024-12-22 02:05:36", - "author_account_age_days": 554 - }, - "https://github.com/JustinMatters/comfyUI-JMNodes": { - "stars": 1, - "last_update": "2025-01-04 14:57:58", - "author_account_age_days": 2986 - }, - "https://github.com/KLL535/ComfyUI_SimpleButcher": { - "stars": 2, - "last_update": "2025-01-23 15:35:39", - "author_account_age_days": 65 - }, - "https://github.com/Kangkang625/ComfyUI-paint-by-example": { - "stars": 16, - "last_update": "2024-05-22 22:20:27", - "author_account_age_days": 1129 - }, - "https://github.com/Kayarte/AudioDriven-Latent-Space-Tools-for-ComfyUI": { - "stars": 2, - "last_update": "2025-01-26 06:06:55", - "author_account_age_days": 269 - }, - "https://github.com/Kesin11/ComfyUI-list-filter": { - "stars": 1, - "last_update": "2024-10-19 06:44:17", - "author_account_age_days": 4762 - }, - "https://github.com/KewkLW/ComfyUI-kewky_tools": { - "stars": 8, - "last_update": "2024-07-10 05:45:11", - "author_account_age_days": 1903 - }, - "https://github.com/Kidev/ComfyUI-Fisheye-effects": { - "stars": 6, - "last_update": "2025-01-23 10:54:49", - "author_account_age_days": 4817 - }, - "https://github.com/Kinglord/ComfyUI_LoRA_Sidebar": { - "stars": 58, - "last_update": "2024-11-23 15:44:26", - "author_account_age_days": 5106 - }, - "https://github.com/Kinglord/ComfyUI_Prompt_Gallery": { - "stars": 42, - "last_update": "2024-09-24 21:58:55", - "author_account_age_days": 5106 - }, - "https://github.com/Kinglord/ComfyUI_Slider_Sidebar": { - "stars": 37, - "last_update": "2024-09-26 02:40:30", - "author_account_age_days": 5106 - }, - "https://github.com/KohakuBlueleaf/z-tipo-extension": { - "stars": 307, - "last_update": "2025-01-22 02:39:21", - "author_account_age_days": 1844 - }, - "https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler": { - "stars": 183, - "last_update": "2024-09-01 03:57:22", - "author_account_age_days": 1701 - }, - "https://github.com/Koishi-Star/Pyramid_Noise_For_Inference": { - "stars": 6, - "last_update": "2024-09-27 17:58:43", - "author_account_age_days": 1701 - }, - "https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack": { - "stars": 4, - "last_update": "2024-11-24 15:55:30", - "author_account_age_days": 3406 - }, - "https://github.com/KoreTeknology/ComfyUI-Universal-Styler": { - "stars": 54, - "last_update": "2024-10-19 19:19:25", - "author_account_age_days": 3406 - }, - "https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet": { - "stars": 685, - "last_update": "2025-01-11 06:20:47", - "author_account_age_days": 3932 - }, - "https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved": { - "stars": 2911, - "last_update": "2025-01-23 02:31:32", - "author_account_age_days": 3932 - }, - "https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite": { - "stars": 732, - "last_update": "2025-01-25 21:36:56", - "author_account_age_days": 3932 - }, - "https://github.com/Koushakur/ComfyUI-DenoiseChooser": { - "stars": 5, - "last_update": "2024-07-31 14:05:13", - "author_account_age_days": 1336 - }, - "https://github.com/KunmyonChoi/ComfyUI_S3_direct": { - "stars": 1, - "last_update": "2025-01-07 01:22:23", - "author_account_age_days": 5784 - }, - "https://github.com/Kurdknight/Kurdknight_comfycheck": { - "stars": 4, - "last_update": "2025-01-15 16:47:23", - "author_account_age_days": 727 - }, - "https://github.com/KwaiVGI/ComfyUI-KLingAI-API": { - "stars": 76, - "last_update": "2025-01-21 03:23:00", - "author_account_age_days": 274 - }, - "https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP": { - "stars": 5, - "last_update": "2024-05-23 00:21:43", - "author_account_age_days": 1995 - }, - "https://github.com/LAOGOU-666/ComfyUI_LG_FFT": { - "stars": 7, - "last_update": "2024-10-10 04:45:57", - "author_account_age_days": 310 - }, - "https://github.com/LAOGOU-666/Comfyui-LG_Relight": { - "stars": 69, - "last_update": "2025-01-09 09:07:22", - "author_account_age_days": 310 - }, - "https://github.com/LEv145/images-grid-comfy-plugin": { - "stars": 170, - "last_update": "2024-05-30 17:54:32", - "author_account_age_days": 2423 - }, - "https://github.com/LarryJane491/Image-Captioning-in-ComfyUI": { - "stars": 53, - "last_update": "2024-06-06 20:45:43", - "author_account_age_days": 379 - }, - "https://github.com/LarryJane491/Lora-Training-in-Comfy": { - "stars": 416, - "last_update": "2024-08-05 11:32:30", - "author_account_age_days": 379 - }, - "https://github.com/LatentRat/comfy_remote_run": { - "stars": 4, - "last_update": "2024-09-08 04:06:09", - "author_account_age_days": 960 - }, - "https://github.com/LatentSpaceDirective/ComfyUI-Texturaizer": { - "stars": 11, - "last_update": "2025-01-19 14:21:04", - "author_account_age_days": 75 - }, - "https://github.com/Layer-norm/comfyui-lama-remover": { - "stars": 108, - "last_update": "2024-08-03 04:18:39", - "author_account_age_days": 548 - }, - "https://github.com/Lerc/canvas_tab": { - "stars": 169, - "last_update": "2024-05-22 20:48:45", - "author_account_age_days": 5583 - }, - "https://github.com/LevelPixel/ComfyUI-LevelPixel": { - "stars": 3, - "last_update": "2024-12-08 23:10:10", - "author_account_age_days": 198 - }, - "https://github.com/Lhyejin/ComfyUI-Fill-Image-for-Outpainting": { - "stars": 9, - "last_update": "2024-08-26 00:40:09", - "author_account_age_days": 2818 - }, - "https://github.com/LiJT/ComfyUI-Gemini-Prompt-Generator-JT": { - "stars": 2, - "last_update": "2024-12-22 15:06:38", - "author_account_age_days": 3617 - }, - "https://github.com/Light-x02/ComfyUI-FluxSettingsNode": { - "stars": 4, - "last_update": "2024-12-25 07:08:32", - "author_account_age_days": 993 - }, - "https://github.com/Light-x02/ComfyUI-Image-Metadata-Nodes": { - "stars": 2, - "last_update": "2024-12-23 01:54:11", - "author_account_age_days": 993 - }, - "https://github.com/LightSketch-ai/ComfyUI-LivePortraitNode": { - "stars": 2, - "last_update": "2024-07-17 01:24:53", - "author_account_age_days": 199 - }, - "https://github.com/Lightricks/ComfyUI-LTXVideo": { - "stars": 665, - "last_update": "2024-12-22 14:57:35", - "author_account_age_days": 4406 - }, - "https://github.com/Limitex/ComfyUI-Calculation": { - "stars": 0, - "last_update": "2024-05-22 22:18:40", - "author_account_age_days": 1490 - }, - "https://github.com/Limitex/ComfyUI-Diffusers": { - "stars": 150, - "last_update": "2025-01-09 05:30:43", - "author_account_age_days": 1490 - }, - "https://github.com/Ling-APE/ComfyUI-PixelResolutionCalculator": { - "stars": 8, - "last_update": "2024-09-23 06:31:38", - "author_account_age_days": 602 - }, - "https://github.com/Loewen-Hob/rembg-comfyui-node-better": { - "stars": 60, - "last_update": "2024-09-12 14:16:23", - "author_account_age_days": 686 - }, - "https://github.com/LonicaMewinsky/ComfyUI-MakeFrame": { - "stars": 28, - "last_update": "2024-05-22 21:29:02", - "author_account_age_days": 1191 - }, - "https://github.com/LonicaMewinsky/ComfyUI-RawSaver": { - "stars": 2, - "last_update": "2024-05-22 21:31:28", - "author_account_age_days": 1191 - }, - "https://github.com/LucipherDev/ComfyUI-AniDoc": { - "stars": 45, - "last_update": "2025-01-25 13:15:11", - "author_account_age_days": 1712 - }, - "https://github.com/LucipherDev/ComfyUI-Golden-Noise": { - "stars": 21, - "last_update": "2024-12-26 17:25:45", - "author_account_age_days": 1712 - }, - "https://github.com/LucipherDev/ComfyUI-TangoFlux": { - "stars": 77, - "last_update": "2025-01-25 13:16:20", - "author_account_age_days": 1712 - }, - "https://github.com/Ludobico/ComfyUI-ScenarioPrompt": { - "stars": 15, - "last_update": "2024-08-01 00:52:11", - "author_account_age_days": 1248 - }, - "https://github.com/LyazS/comfyui-anime-seg": { - "stars": 8, - "last_update": "2024-05-22 23:21:49", - "author_account_age_days": 3073 - }, - "https://github.com/LyazS/comfyui-nettools": { - "stars": 5, - "last_update": "2024-09-23 12:52:44", - "author_account_age_days": 3073 - }, - "https://github.com/M1kep/ComfyLiterals": { - "stars": 35, - "last_update": "2024-05-22 20:31:38", - "author_account_age_days": 4474 - }, - "https://github.com/M1kep/ComfyUI-KepOpenAI": { - "stars": 29, - "last_update": "2024-08-20 16:33:57", - "author_account_age_days": 4474 - }, - "https://github.com/M1kep/ComfyUI-OtherVAEs": { - "stars": 2, - "last_update": "2024-05-22 20:33:41", - "author_account_age_days": 4474 - }, - "https://github.com/M1kep/Comfy_KepKitchenSink": { - "stars": 0, - "last_update": "2024-05-22 20:33:29", - "author_account_age_days": 4474 - }, - "https://github.com/M1kep/Comfy_KepListStuff": { - "stars": 38, - "last_update": "2024-06-22 00:51:28", - "author_account_age_days": 4474 - }, - "https://github.com/M1kep/Comfy_KepMatteAnything": { - "stars": 11, - "last_update": "2024-05-22 20:33:16", - "author_account_age_days": 4474 - }, - "https://github.com/M1kep/KepPromptLang": { - "stars": 6, - "last_update": "2024-05-22 20:32:56", - "author_account_age_days": 4474 - }, - "https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes": { - "stars": 56, - "last_update": "2025-01-19 18:46:30", - "author_account_age_days": 1820 - }, - "https://github.com/Makeezi/ComfyUI-promptLAB": { - "stars": 0, - "last_update": "2024-05-23 01:24:51", - "author_account_age_days": 1997 - }, - "https://github.com/MakkiShizu/ComfyUI-Prompt-Wildcards": { - "stars": 3, - "last_update": "2025-01-08 12:25:10", - "author_account_age_days": 528 - }, - "https://github.com/MakkiShizu/ComfyUI-SaveAnimatedGIF": { - "stars": 3, - "last_update": "2024-11-20 13:18:23", - "author_account_age_days": 528 - }, - "https://github.com/MakkiShizu/comfyui_reimgsize": { - "stars": 6, - "last_update": "2024-12-11 05:56:23", - "author_account_age_days": 528 - }, - "https://github.com/Mamaaaamooooo/batchImg-rembg-ComfyUI-nodes": { - "stars": 23, - "last_update": "2024-06-14 10:24:17", - "author_account_age_days": 598 - }, - "https://github.com/ManglerFTW/ComfyI2I": { - "stars": 165, - "last_update": "2024-06-14 11:01:01", - "author_account_age_days": 871 - }, - "https://github.com/MaraScott/ComfyUI_MaraScott_Nodes": { - "stars": 131, - "last_update": "2025-01-17 14:30:04", - "author_account_age_days": 5185 - }, - "https://github.com/MarcusNyne/m9-prompts-comfyui": { - "stars": 2, - "last_update": "2024-08-24 16:56:53", - "author_account_age_days": 1638 - }, - "https://github.com/MariusKM/ComfyUI-BadmanNodes": { - "stars": 2, - "last_update": "2024-12-30 15:36:09", - "author_account_age_days": 2446 - }, - "https://github.com/MarkoCa1/ComfyUI-Text": { - "stars": 7, - "last_update": "2024-12-16 09:48:49", - "author_account_age_days": 1849 - }, - "https://github.com/MarkoCa1/ComfyUI_Segment_Mask": { - "stars": 21, - "last_update": "2024-05-23 00:15:51", - "author_account_age_days": 1849 - }, - "https://github.com/Marksusu/ComfyUI_MTCLIPEncode": { - "stars": 6, - "last_update": "2024-11-01 07:41:03", - "author_account_age_days": 924 - }, - "https://github.com/Mason-McGough/ComfyUI-Mosaica": { - "stars": 7, - "last_update": "2024-08-26 20:42:35", - "author_account_age_days": 3421 - }, - "https://github.com/Mcmillian/ComfyUI-SimpleToolsNodes": { - "stars": 1, - "last_update": "2024-09-29 14:18:23", - "author_account_age_days": 3112 - }, - "https://github.com/Meettya/ComfyUI-OneForOne": { - "stars": 2, - "last_update": "2025-01-07 22:49:30", - "author_account_age_days": 5547 - }, - "https://github.com/MetaGLM/ComfyUI-ZhipuAI-Platform": { - "stars": 6, - "last_update": "2024-09-16 16:11:59", - "author_account_age_days": 495 - }, - "https://github.com/MiddleKD/ComfyUI-denoise-mask-scheduler": { - "stars": 6, - "last_update": "2024-11-07 12:35:00", - "author_account_age_days": 746 - }, - "https://github.com/MiddleKD/ComfyUI-mem-safe-wrapper": { - "stars": 3, - "last_update": "2024-08-01 06:47:24", - "author_account_age_days": 746 - }, - "https://github.com/MiddleKD/ComfyUI-productfix": { - "stars": 8, - "last_update": "2024-08-13 01:11:21", - "author_account_age_days": 746 - }, - "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack": { - "stars": 5, - "last_update": "2024-10-06 07:46:05", - "author_account_age_days": 276 - }, - "https://github.com/Mintbeer96/ComfyUI-KerasOCR": { - "stars": 3, - "last_update": "2024-07-24 16:39:41", - "author_account_age_days": 3393 - }, - "https://github.com/MinusZoneAI/ComfyUI-CogVideoX-MZ": { - "stars": 101, - "last_update": "2024-10-30 10:52:42", - "author_account_age_days": 281 - }, - "https://github.com/MinusZoneAI/ComfyUI-Flux1Quantize-MZ": { - "stars": 12, - "last_update": "2024-08-14 04:01:10", - "author_account_age_days": 281 - }, - "https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ": { - "stars": 228, - "last_update": "2024-08-16 18:57:07", - "author_account_age_days": 281 - }, - "https://github.com/MinusZoneAI/ComfyUI-Kolors-MZ": { - "stars": 528, - "last_update": "2024-12-20 01:10:37", - "author_account_age_days": 281 - }, - "https://github.com/MinusZoneAI/ComfyUI-Prompt-MZ": { - "stars": 113, - "last_update": "2024-08-24 06:18:57", - "author_account_age_days": 281 - }, - "https://github.com/MinusZoneAI/ComfyUI-StylizePhoto-MZ": { - "stars": 18, - "last_update": "2024-05-23 01:13:32", - "author_account_age_days": 281 - }, - "https://github.com/MinusZoneAI/ComfyUI-TrainTools-MZ": { - "stars": 48, - "last_update": "2024-08-15 19:21:36", - "author_account_age_days": 281 - }, - "https://github.com/Miosp/ComfyUI-FBCNN": { - "stars": 18, - "last_update": "2024-08-02 19:54:17", - "author_account_age_days": 2731 - }, - "https://github.com/MitoshiroPJ/comfyui_slothful_attention": { - "stars": 7, - "last_update": "2024-05-22 22:09:15", - "author_account_age_days": 4183 - }, - "https://github.com/Miyuutsu/comfyui-save-vpred": { - "stars": 4, - "last_update": "2024-12-15 22:29:47", - "author_account_age_days": 3140 - }, - "https://github.com/MohammadAboulEla/ComfyUI-iTools": { - "stars": 36, - "last_update": "2025-01-26 06:07:45", - "author_account_age_days": 1242 - }, - "https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1": { - "stars": 17, - "last_update": "2025-01-07 19:10:27", - "author_account_age_days": 595 - }, - "https://github.com/MontagenAI/ComfyUI-Montagen": { - "stars": 4, - "last_update": "2025-01-25 10:38:15", - "author_account_age_days": 45 - }, - "https://github.com/MoonHugo/ComfyUI-BiRefNet-Hugo": { - "stars": 204, - "last_update": "2024-10-18 04:02:27", - "author_account_age_days": 144 - }, - "https://github.com/MoonHugo/ComfyUI-FFmpeg": { - "stars": 39, - "last_update": "2024-11-13 03:38:07", - "author_account_age_days": 144 - }, - "https://github.com/MoonHugo/ComfyUI-StableAudioOpen": { - "stars": 18, - "last_update": "2024-10-18 04:12:04", - "author_account_age_days": 144 - }, - "https://github.com/Moooonet/ComfyUI-ArteMoon": { - "stars": 2, - "last_update": "2024-09-29 15:04:10", - "author_account_age_days": 203 - }, - "https://github.com/MrForExample/ComfyUI-3D-Pack": { - "stars": 2656, - "last_update": "2025-01-24 18:41:37", - "author_account_age_days": 1777 - }, - "https://github.com/MrForExample/ComfyUI-AnimateAnyone-Evolved": { - "stars": 520, - "last_update": "2024-06-14 12:02:47", - "author_account_age_days": 1777 - }, - "https://github.com/MrSamSeen/ComfyUI_SSStereoscope": { - "stars": 16, - "last_update": "2024-07-08 20:40:49", - "author_account_age_days": 3807 - }, - "https://github.com/Munkyfoot/ComfyUI-TextOverlay": { - "stars": 26, - "last_update": "2024-06-28 05:57:03", - "author_account_age_days": 3261 - }, - "https://github.com/MushroomFleet/DJZ-Nodes": { - "stars": 30, - "last_update": "2025-01-25 22:34:18", - "author_account_age_days": 3937 - }, - "https://github.com/MuziekMagie/ComfyUI-Matchering": { - "stars": 45, - "last_update": "2024-07-23 14:39:52", - "author_account_age_days": 187 - }, - "https://github.com/MzMaXaM/ComfyUi-MzMaXaM": { - "stars": 2, - "last_update": "2024-10-21 22:42:15", - "author_account_age_days": 1954 - }, - "https://github.com/N3rd00d/ComfyUI-Paint3D-Nodes": { - "stars": 59, - "last_update": "2024-08-19 12:52:20", - "author_account_age_days": 293 - }, - "https://github.com/NMWave/ComfyUI-Nader-Tagging": { - "stars": 2, - "last_update": "2024-08-06 11:13:51", - "author_account_age_days": 794 - }, - "https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix": { - "stars": 28, - "last_update": "2024-09-25 01:40:47", - "author_account_age_days": 3896 - }, - "https://github.com/NakamuraShippo/ComfyUI-NS-ManySliders": { - "stars": 2, - "last_update": "2024-11-03 02:48:52", - "author_account_age_days": 578 - }, - "https://github.com/NakamuraShippo/ComfyUI-PromptList": { - "stars": 8, - "last_update": "2024-11-03 02:25:08", - "author_account_age_days": 578 - }, - "https://github.com/NeoGriever/ComfyUI-NeoGriever": { - "stars": 2, - "last_update": "2024-12-12 02:55:40", - "author_account_age_days": 4504 - }, - "https://github.com/Nestorchik/NStor-ComfyUI-Translation": { - "stars": 2, - "last_update": "2024-06-14 10:25:32", - "author_account_age_days": 1540 - }, - "https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin": { - "stars": 35, - "last_update": "2024-08-06 19:59:25", - "author_account_age_days": 309 - }, - "https://github.com/NeuralSamurAI/ComfyUI-FluxPseudoNegativePrompt": { - "stars": 6, - "last_update": "2024-08-14 02:16:43", - "author_account_age_days": 309 - }, - "https://github.com/NeuralSamurAI/ComfyUI-PromptJSON": { - "stars": 3, - "last_update": "2024-08-11 18:10:36", - "author_account_age_days": 309 - }, - "https://github.com/NeuralSamurAI/Comfyui-Superprompt-Unofficial": { - "stars": 68, - "last_update": "2024-05-23 00:22:08", - "author_account_age_days": 309 - }, - "https://github.com/Nevysha/ComfyUI-nevysha-top-menu": { - "stars": 5, - "last_update": "2024-05-23 00:17:31", - "author_account_age_days": 742 - }, - "https://github.com/NguynHungNguyen/Segment-Bedroom-Interior": { - "stars": 5, - "last_update": "2024-10-17 13:22:19", - "author_account_age_days": 873 - }, - "https://github.com/NicholasMcCarthy/ComfyUI_TravelSuite": { - "stars": 14, - "last_update": "2024-05-22 20:34:46", - "author_account_age_days": 5365 - }, - "https://github.com/NimaNzrii/comfyui-photoshop": { - "stars": 818, - "last_update": "2025-01-15 17:26:18", - "author_account_age_days": 460 - }, - "https://github.com/NimaNzrii/comfyui-popup_preview": { - "stars": 35, - "last_update": "2024-05-22 22:12:04", - "author_account_age_days": 460 - }, - "https://github.com/Niutonian/ComfyUi-NoodleWebcam": { - "stars": 32, - "last_update": "2024-05-22 21:30:40", - "author_account_age_days": 1258 - }, - "https://github.com/Nlar/ComfyUI_CartoonSegmentation": { - "stars": 13, - "last_update": "2024-05-22 23:15:37", - "author_account_age_days": 4047 - }, - "https://github.com/Nojahhh/ComfyUI_GLM4_Wrapper": { - "stars": 19, - "last_update": "2024-12-17 20:52:30", - "author_account_age_days": 3035 - }, - "https://github.com/NotHarroweD/Harronode": { - "stars": 5, - "last_update": "2024-05-22 22:18:29", - "author_account_age_days": 2199 - }, - "https://github.com/Nourepide/ComfyUI-Allor": { - "stars": 240, - "last_update": "2024-05-22 18:11:17", - "author_account_age_days": 3061 - }, - "https://github.com/Nuked88/ComfyUI-N-Nodes": { - "stars": 211, - "last_update": "2024-08-15 21:07:32", - "author_account_age_days": 4695 - }, - "https://github.com/Nuked88/ComfyUI-N-Sidebar": { - "stars": 530, - "last_update": "2024-09-12 20:12:08", - "author_account_age_days": 4695 - }, - "https://github.com/NyaamZ/ComfyUI-GetBooruTag-ED": { - "stars": 1, - "last_update": "2025-01-12 09:34:07", - "author_account_age_days": 2332 - }, - "https://github.com/NyaamZ/ComfyUI-ImageGallery-ED": { - "stars": 3, - "last_update": "2025-01-19 01:59:11", - "author_account_age_days": 2332 - }, - "https://github.com/NyaamZ/efficiency-nodes-ED": { - "stars": 14, - "last_update": "2025-01-22 14:05:19", - "author_account_age_days": 2332 - }, - "https://github.com/Off-Live/ComfyUI-off-suite": { - "stars": 0, - "last_update": "2024-06-14 12:02:25", - "author_account_age_days": 1388 - }, - "https://github.com/OgreLemonSoup/ComfyUI-Load-Image-Gallery": { - "stars": 29, - "last_update": "2024-09-17 11:48:44", - "author_account_age_days": 169 - }, - "https://github.com/OliverCrosby/Comfyui-Minimap": { - "stars": 83, - "last_update": "2024-08-24 14:10:43", - "author_account_age_days": 2341 - }, - "https://github.com/OpalSky-AI/OpalSky_Nodes": { - "stars": 3, - "last_update": "2024-10-27 20:13:40", - "author_account_age_days": 1951 - }, - "https://github.com/OpenArt-AI/ComfyUI-Assistant": { - "stars": 18, - "last_update": "2024-05-22 22:16:57", - "author_account_age_days": 991 - }, - "https://github.com/OuticNZ/ComfyUI-Simple-Of-Complex": { - "stars": 1, - "last_update": "2024-08-14 04:00:49", - "author_account_age_days": 2749 - }, - "https://github.com/PCMonsterx/ComfyUI-CSV-Loader": { - "stars": 15, - "last_update": "2024-05-22 21:27:10", - "author_account_age_days": 1881 - }, - "https://github.com/Parameshvadivel/ComfyUI-SVGview": { - "stars": 2, - "last_update": "2024-07-31 13:40:33", - "author_account_age_days": 3043 - }, - "https://github.com/ParisNeo/lollms_nodes_suite": { - "stars": 11, - "last_update": "2024-06-23 21:04:43", - "author_account_age_days": 4985 - }, - "https://github.com/ParmanBabra/ComfyUI-Malefish-Custom-Scripts": { - "stars": 0, - "last_update": "2024-05-22 21:26:35", - "author_account_age_days": 3858 - }, - "https://github.com/PauldeLavallaz/comfyui_claude_prompt_generator": { - "stars": 1, - "last_update": "2024-12-11 17:41:42", - "author_account_age_days": 2059 - }, - "https://github.com/Pfaeff/pfaeff-comfyui": { - "stars": 20, - "last_update": "2024-05-22 18:21:10", - "author_account_age_days": 3423 - }, - "https://github.com/Phando/ComfyUI-PhandoNodes": { - "stars": 1, - "last_update": "2024-09-05 16:12:24", - "author_account_age_days": 5441 - }, - "https://github.com/Pheat-AI/Remade_nodes": { - "stars": 4, - "last_update": "2024-10-18 00:04:58", - "author_account_age_days": 249 - }, - "https://github.com/PixelFunAI/ComfyUI_PixelFun": { - "stars": 3, - "last_update": "2025-01-20 05:44:54", - "author_account_age_days": 6 - }, - "https://github.com/PixelML/ComfyUI-PixelML-CustomNodes": { - "stars": 1, - "last_update": "2025-01-20 06:40:21", - "author_account_age_days": 326 - }, - "https://github.com/PnthrLeo/comfyUI-PL-data-tools": { - "stars": 2, - "last_update": "2024-12-03 13:39:28", - "author_account_age_days": 2767 - }, - "https://github.com/Poseidon-fan/ComfyUI-RabbitMQ-Publisher": { - "stars": 2, - "last_update": "2024-11-07 08:59:23", - "author_account_age_days": 798 - }, - "https://github.com/Positliver/comfyui-zegr": { - "stars": 0, - "last_update": "2025-01-26 08:24:31", - "author_account_age_days": 3607 - }, - "https://github.com/PowerHouseMan/ComfyUI-AdvancedLivePortrait": { - "stars": 2121, - "last_update": "2024-08-21 06:14:24", - "author_account_age_days": 179 - }, - "https://github.com/PressWagon/ComfyUI-StringsAndThings": { - "stars": 2, - "last_update": "2024-12-21 12:05:13", - "author_account_age_days": 41 - }, - "https://github.com/Pseudotools/Pseudocomfy": { - "stars": 0, - "last_update": "2024-09-17 20:46:33", - "author_account_age_days": 486 - }, - "https://github.com/Q-Bug4/Comfyui-Qb-DateNodes": { - "stars": 2, - "last_update": "2024-11-03 01:52:39", - "author_account_age_days": 2150 - }, - "https://github.com/Q-Bug4/Comfyui-Simple-Json-Node": { - "stars": 3, - "last_update": "2024-12-25 16:01:52", - "author_account_age_days": 2150 - }, - "https://github.com/QaisMalkawi/ComfyUI-QaisHelper": { - "stars": 2, - "last_update": "2024-05-23 20:29:30", - "author_account_age_days": 1466 - }, - "https://github.com/Raapys/ComfyUI-LatentGC_Aggressive": { - "stars": 5, - "last_update": "2024-08-12 15:55:42", - "author_account_age_days": 4147 - }, - "https://github.com/Ravenmelt/ComfyUI-Rodin": { - "stars": 6, - "last_update": "2024-10-25 03:30:05", - "author_account_age_days": 2291 - }, - "https://github.com/RenderRift/ComfyUI-RenderRiftNodes": { - "stars": 6, - "last_update": "2024-05-22 22:16:41", - "author_account_age_days": 402 - }, - "https://github.com/RhizoNymph/ComfyUI-CLIPSlider": { - "stars": 8, - "last_update": "2024-09-07 19:47:02", - "author_account_age_days": 1383 - }, - "https://github.com/RhizoNymph/ComfyUI-ColorWheel": { - "stars": 2, - "last_update": "2024-10-13 06:26:51", - "author_account_age_days": 1383 - }, - "https://github.com/RhizoNymph/ComfyUI-Latte": { - "stars": 4, - "last_update": "2024-08-11 07:25:04", - "author_account_age_days": 1383 - }, - "https://github.com/RiceRound/ComfyUI_CryptoCat": { - "stars": 54, - "last_update": "2025-01-25 15:15:01", - "author_account_age_days": 120 - }, - "https://github.com/Rinsanga1/comfyui-florence2xy": { - "stars": 1, - "last_update": "2024-11-25 09:51:35", - "author_account_age_days": 367 - }, - "https://github.com/RodrigoSKohl/ComfyUI-Panoramic-ImgStitcher": { - "stars": 5, - "last_update": "2024-08-27 15:45:35", - "author_account_age_days": 964 - }, - "https://github.com/RomanKuschanow/ComfyUI-Advanced-Latent-Control": { - "stars": 20, - "last_update": "2024-06-21 07:29:14", - "author_account_age_days": 1597 - }, - "https://github.com/Ron-Digital/ComfyUI-SceneGenerator": { - "stars": 2, - "last_update": "2024-06-28 19:36:30", - "author_account_age_days": 1145 - }, - "https://github.com/Runware/ComfyUI-Runware": { - "stars": 24, - "last_update": "2025-01-13 17:00:35", - "author_account_age_days": 415 - }, - "https://github.com/Rvage0815/ComfyUI-RvTools": { - "stars": 15, - "last_update": "2024-11-28 15:10:43", - "author_account_age_days": 389 - }, - "https://github.com/Rvage0815/ComfyUI-RvTools_v2": { - "stars": 5, - "last_update": "2024-12-27 09:42:55", - "author_account_age_days": 389 - }, - "https://github.com/Ryuukeisyou/ComfyUI-SyncTalk": { - "stars": 37, - "last_update": "2024-09-12 11:54:59", - "author_account_age_days": 2628 - }, - "https://github.com/Ryuukeisyou/comfyui_face_parsing": { - "stars": 126, - "last_update": "2024-10-26 06:14:27", - "author_account_age_days": 2628 - }, - "https://github.com/Ryuukeisyou/comfyui_io_helpers": { - "stars": 1, - "last_update": "2024-07-13 13:10:10", - "author_account_age_days": 2628 - }, - "https://github.com/SEkINVR/ComfyUI-SaveAs": { - "stars": 6, - "last_update": "2024-08-19 01:06:16", - "author_account_age_days": 873 - }, - "https://github.com/SKBv0/ComfyUI_SKBundle": { - "stars": 18, - "last_update": "2025-01-02 14:51:01", - "author_account_age_days": 1771 - }, - "https://github.com/SLAPaper/ComfyUI-Image-Selector": { - "stars": 76, - "last_update": "2024-08-03 18:32:58", - "author_account_age_days": 3913 - }, - "https://github.com/SLAPaper/StableDiffusion-dpmpp_2m_alt-Sampler": { - "stars": 12, - "last_update": "2024-11-09 13:59:35", - "author_account_age_days": 3913 - }, - "https://github.com/SOELexicon/ComfyUI-LexMSDBNodes": { - "stars": 4, - "last_update": "2024-07-31 15:02:32", - "author_account_age_days": 4299 - }, - "https://github.com/SOELexicon/ComfyUI-LexTools": { - "stars": 28, - "last_update": "2024-06-28 19:25:13", - "author_account_age_days": 4299 - }, - "https://github.com/SS-snap/ComfyUI-Snap_Processing": { - "stars": 60, - "last_update": "2024-10-22 07:38:50", - "author_account_age_days": 515 - }, - "https://github.com/SamKhoze/ComfyUI-DeepFuze": { - "stars": 350, - "last_update": "2024-11-22 19:28:20", - "author_account_age_days": 1659 - }, - "https://github.com/SayanoAI/Comfy-RVC": { - "stars": 18, - "last_update": "2024-10-09 04:08:31", - "author_account_age_days": 2819 - }, - "https://github.com/Scholar01/ComfyUI-Keyframe": { - "stars": 14, - "last_update": "2025-01-22 04:09:29", - "author_account_age_days": 3412 - }, - "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader": { - "stars": 14, - "last_update": "2024-08-26 14:51:47", - "author_account_age_days": 1326 - }, - "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode": { - "stars": 10, - "last_update": "2024-11-29 21:51:05", - "author_account_age_days": 4722 - }, - "https://github.com/SeaArtLab/ComfyUI-Long-CLIP": { - "stars": 127, - "last_update": "2024-09-04 09:23:38", - "author_account_age_days": 292 - }, - "https://github.com/SeanScripts/ComfyUI-PixtralLlamaMolmoVision": { - "stars": 72, - "last_update": "2024-10-05 04:21:36", - "author_account_age_days": 1736 - }, - "https://github.com/SeanScripts/ComfyUI-Unload-Model": { - "stars": 20, - "last_update": "2024-10-05 04:43:42", - "author_account_age_days": 1736 - }, - "https://github.com/SeargeDP/ComfyUI_Searge_LLM": { - "stars": 71, - "last_update": "2024-09-04 09:04:18", - "author_account_age_days": 4387 - }, - "https://github.com/SeargeDP/SeargeSDXL": { - "stars": 818, - "last_update": "2024-05-22 00:28:26", - "author_account_age_days": 4387 - }, - "https://github.com/Seedsa/Fooocus_Nodes": { - "stars": 84, - "last_update": "2025-01-08 07:57:28", - "author_account_age_days": 2824 - }, - "https://github.com/Shadetail/ComfyUI_Eagleshadow": { - "stars": 3, - "last_update": "2024-06-15 13:04:49", - "author_account_age_days": 3613 - }, - "https://github.com/Shakker-Labs/ComfyUI-IPAdapter-Flux": { - "stars": 253, - "last_update": "2024-12-31 06:28:12", - "author_account_age_days": 65 - }, - "https://github.com/Shannooty/ComfyUI-Timer-Nodes": { - "stars": 4, - "last_update": "2024-12-17 09:20:49", - "author_account_age_days": 1513 - }, - "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting": { - "stars": 4, - "last_update": "2024-07-03 03:39:49", - "author_account_age_days": 331 - }, - "https://github.com/Shiba-2-shiba/ComfyUI_DiffusionModel_fp8_converter": { - "stars": 14, - "last_update": "2024-09-05 00:09:26", - "author_account_age_days": 602 - }, - "https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node": { - "stars": 1, - "last_update": "2024-09-26 04:40:37", - "author_account_age_days": 602 - }, - "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools": { - "stars": 10, - "last_update": "2024-07-04 02:22:10", - "author_account_age_days": 618 - }, - "https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust": { - "stars": 6, - "last_update": "2024-11-23 03:57:20", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-AstralAnimator": { - "stars": 18, - "last_update": "2024-07-18 12:41:22", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-CohernetVideoSampler": { - "stars": 18, - "last_update": "2024-12-23 10:54:08", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-EmptyHunyuanLatent": { - "stars": 6, - "last_update": "2024-12-29 05:30:57", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-FreeMemory": { - "stars": 59, - "last_update": "2024-10-19 17:01:30", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-Gemini_Flash_2.0_Exp": { - "stars": 31, - "last_update": "2024-12-23 10:41:30", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave": { - "stars": 13, - "last_update": "2025-01-09 18:22:56", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoStyler": { - "stars": 40, - "last_update": "2024-12-31 19:19:42", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-ImageMotionGuider": { - "stars": 36, - "last_update": "2024-12-27 11:19:59", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-LatentSyncWrapper": { - "stars": 344, - "last_update": "2025-01-25 11:56:04", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI-SVDResizer": { - "stars": 3, - "last_update": "2024-06-14 11:50:52", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI_Flux_1.1_RAW_API": { - "stars": 31, - "last_update": "2025-01-22 15:26:47", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI_Gemini_Flash": { - "stars": 27, - "last_update": "2024-10-12 02:07:36", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI_pixtral_large": { - "stars": 4, - "last_update": "2025-01-08 10:59:35", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI_pixtral_vision": { - "stars": 14, - "last_update": "2024-11-20 12:58:30", - "author_account_age_days": 1421 - }, - "https://github.com/ShmuelRonen/ComfyUI_wav2lip": { - "stars": 123, - "last_update": "2024-09-18 13:17:42", - "author_account_age_days": 1421 - }, - "https://github.com/Shraknard/ComfyUI-Remover": { - "stars": 6, - "last_update": "2024-07-24 08:42:48", - "author_account_age_days": 2532 - }, - "https://github.com/Siberpone/lazy-pony-prompter": { - "stars": 35, - "last_update": "2024-11-15 10:53:43", - "author_account_age_days": 668 - }, - "https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders": { - "stars": 4, - "last_update": "2024-08-30 01:19:54", - "author_account_age_days": 1899 - }, - "https://github.com/SlackinJack/asyncdiff_comfyui": { - "stars": 1, - "last_update": "2025-01-22 09:37:35", - "author_account_age_days": 2391 - }, - "https://github.com/SlackinJack/distrifuser_comfyui": { - "stars": 1, - "last_update": "2025-01-12 12:44:34", - "author_account_age_days": 2391 - }, - "https://github.com/SleeeepyZhou/ComfyUI-CNtranslator": { - "stars": 4, - "last_update": "2024-12-21 02:21:41", - "author_account_age_days": 1413 - }, - "https://github.com/Slickytail/ComfyUI-InstantX-IPAdapter-SD3": { - "stars": 48, - "last_update": "2024-12-21 22:36:22", - "author_account_age_days": 3777 - }, - "https://github.com/Smirnov75/ComfyUI-mxToolkit": { - "stars": 148, - "last_update": "2024-12-08 10:35:19", - "author_account_age_days": 1727 - }, - "https://github.com/Smuzzies/comfyui_meme_maker": { - "stars": 1, - "last_update": "2024-07-05 22:01:41", - "author_account_age_days": 907 - }, - "https://github.com/SoftMeng/ComfyUI-DeepCache-Fix": { - "stars": 10, - "last_update": "2024-07-25 13:09:00", - "author_account_age_days": 3739 - }, - "https://github.com/SoftMeng/ComfyUI-PIL": { - "stars": 6, - "last_update": "2024-10-13 10:02:17", - "author_account_age_days": 3739 - }, - "https://github.com/SoftMeng/ComfyUI_ImageToText": { - "stars": 10, - "last_update": "2024-06-14 08:08:36", - "author_account_age_days": 3739 - }, - "https://github.com/SoftMeng/ComfyUI_Mexx_Poster": { - "stars": 23, - "last_update": "2024-06-14 07:06:27", - "author_account_age_days": 3739 - }, - "https://github.com/SoftMeng/ComfyUI_Mexx_Styler": { - "stars": 22, - "last_update": "2024-06-14 07:09:03", - "author_account_age_days": 3739 - }, - "https://github.com/SongGuo11/ComfyUI-SaveAnything-SG11": { - "stars": 1, - "last_update": "2025-01-18 10:28:11", - "author_account_age_days": 52 - }, - "https://github.com/Sorcerio/MBM-Music-Visualizer": { - "stars": 21, - "last_update": "2024-05-23 01:09:18", - "author_account_age_days": 4463 - }, - "https://github.com/SozeInc/ComfyUI-Mobile": { - "stars": 0, - "last_update": "2024-08-22 03:12:11", - "author_account_age_days": 295 - }, - "https://github.com/SozeInc/ComfyUI_Soze": { - "stars": 4, - "last_update": "2024-11-23 22:56:20", - "author_account_age_days": 295 - }, - "https://github.com/SpaceKendo/ComfyUI-svd_txt2vid": { - "stars": 6, - "last_update": "2024-05-22 22:11:52", - "author_account_age_days": 424 - }, - "https://github.com/SparknightLLC/ComfyUI-ConditionalInterrupt": { - "stars": 3, - "last_update": "2024-12-30 01:26:43", - "author_account_age_days": 168 - }, - "https://github.com/SparknightLLC/ComfyUI-LatentClamp": { - "stars": 3, - "last_update": "2024-11-22 01:45:46", - "author_account_age_days": 168 - }, - "https://github.com/SparknightLLC/ComfyUI-MaskArbiter": { - "stars": 4, - "last_update": "2025-01-01 01:36:41", - "author_account_age_days": 168 - }, - "https://github.com/SpenserCai/ComfyUI-FunAudioLLM": { - "stars": 71, - "last_update": "2024-11-27 09:22:05", - "author_account_age_days": 2931 - }, - "https://github.com/SshunWang/ComfyUI_CosyVoice": { - "stars": 1, - "last_update": "2025-01-24 08:48:52", - "author_account_age_days": 2158 - }, - "https://github.com/Stability-AI/ComfyUI-SAI_API": { - "stars": 52, - "last_update": "2024-06-06 14:18:15", - "author_account_age_days": 1058 - }, - "https://github.com/Stability-AI/stability-ComfyUI-nodes": { - "stars": 208, - "last_update": "2024-05-22 15:30:47", - "author_account_age_days": 1058 - }, - "https://github.com/StableDiffusionVN/SDVN_Comfy_node": { - "stars": 20, - "last_update": "2025-01-20 18:40:38", - "author_account_age_days": 174 - }, - "https://github.com/StarMagicAI/comfyui_tagger": { - "stars": 3, - "last_update": "2024-09-03 02:01:59", - "author_account_age_days": 3762 - }, - "https://github.com/Starnodes2024/ComfyUI_StarNodes": { - "stars": 12, - "last_update": "2025-01-26 07:29:03", - "author_account_age_days": 218 - }, - "https://github.com/StartHua/ComfyUI_OOTDiffusion_CXH": { - "stars": 119, - "last_update": "2024-06-14 08:12:12", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/ComfyUI_PCDMs": { - "stars": 6, - "last_update": "2024-05-22 23:21:14", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/ComfyUI_Seg_VITON": { - "stars": 204, - "last_update": "2024-05-22 23:20:17", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_CXH_DeepLX": { - "stars": 9, - "last_update": "2024-09-21 02:38:08", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_CXH_FluxLoraMerge": { - "stars": 19, - "last_update": "2024-12-26 06:56:07", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_CXH_Phi_3.5": { - "stars": 17, - "last_update": "2024-08-22 04:45:39", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_CXH_joy_caption": { - "stars": 491, - "last_update": "2025-01-20 09:54:31", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_Gemini2": { - "stars": 15, - "last_update": "2024-12-12 09:42:42", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_joytag": { - "stars": 47, - "last_update": "2024-05-22 23:20:28", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_segformer_b2_clothes": { - "stars": 70, - "last_update": "2024-07-24 14:45:58", - "author_account_age_days": 3051 - }, - "https://github.com/Steudio/ComfyUI_Steudio": { - "stars": 18, - "last_update": "2025-01-14 18:15:36", - "author_account_age_days": 352 - }, - "https://github.com/SuperBeastsAI/ComfyUI-SuperBeasts": { - "stars": 148, - "last_update": "2024-07-31 02:48:34", - "author_account_age_days": 305 - }, - "https://github.com/SuperMasterBlasterLaser/ComfyUI_YOLO_Classifiers": { - "stars": 1, - "last_update": "2024-06-20 15:06:51", - "author_account_age_days": 3794 - }, - "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes": { - "stars": 756, - "last_update": "2024-07-24 11:16:13", - "author_account_age_days": 2365 - }, - "https://github.com/Sxela/ComfyWarp": { - "stars": 34, - "last_update": "2024-11-16 07:17:05", - "author_account_age_days": 3588 - }, - "https://github.com/TGu-97/ComfyUI-TGu-utils": { - "stars": 1, - "last_update": "2024-05-22 21:07:45", - "author_account_age_days": 745 - }, - "https://github.com/THtianhao/ComfyUI-FaceChain": { - "stars": 126, - "last_update": "2024-06-25 02:59:28", - "author_account_age_days": 3907 - }, - "https://github.com/THtianhao/ComfyUI-Portrait-Maker": { - "stars": 182, - "last_update": "2024-05-22 21:18:05", - "author_account_age_days": 3907 - }, - "https://github.com/TJ16th/comfyUI_TJ_NormalLighting": { - "stars": 145, - "last_update": "2024-05-23 00:25:37", - "author_account_age_days": 2751 - }, - "https://github.com/TKRLAB/ComfyUI_Prompt_List_JSON": { - "stars": 1, - "last_update": "2024-12-23 05:26:14", - "author_account_age_days": 335 - }, - "https://github.com/TMElyralab/Comfyui-MusePose": { - "stars": 387, - "last_update": "2024-07-31 06:21:52", - "author_account_age_days": 313 - }, - "https://github.com/TRI3D-LC/ComfyUI-MiroBoard": { - "stars": 5, - "last_update": "2024-11-21 07:15:20", - "author_account_age_days": 654 - }, - "https://github.com/TRI3D-LC/tri3d-comfyui-nodes": { - "stars": 26, - "last_update": "2025-01-24 13:35:09", - "author_account_age_days": 654 - }, - "https://github.com/TTPlanetPig/Comfyui_Hunyuan3D": { - "stars": 23, - "last_update": "2024-11-10 16:59:42", - "author_account_age_days": 419 - }, - "https://github.com/TTPlanetPig/Comfyui_JC2": { - "stars": 163, - "last_update": "2024-10-19 17:25:50", - "author_account_age_days": 419 - }, - "https://github.com/TTPlanetPig/Comfyui_Object_Migration": { - "stars": 627, - "last_update": "2024-11-20 16:51:57", - "author_account_age_days": 419 - }, - "https://github.com/TTPlanetPig/Comfyui_TTP_CN_Preprocessor": { - "stars": 28, - "last_update": "2024-08-21 17:52:56", - "author_account_age_days": 419 - }, - "https://github.com/TTPlanetPig/Comfyui_TTP_Toolset": { - "stars": 487, - "last_update": "2025-01-12 04:28:09", - "author_account_age_days": 419 - }, - "https://github.com/TW-CUI/TW-CUI-Util": { - "stars": 2, - "last_update": "2024-08-14 01:49:13", - "author_account_age_days": 247 - }, - "https://github.com/TZOOTZ/ComfyUI-TZOOTZ_VHS": { - "stars": 1, - "last_update": "2025-01-17 13:52:42", - "author_account_age_days": 3265 - }, - "https://github.com/TaiTair/comfyui-simswap": { - "stars": 15, - "last_update": "2024-07-31 18:28:38", - "author_account_age_days": 3782 - }, - "https://github.com/Taremin/comfyui-prompt-extranetworks": { - "stars": 4, - "last_update": "2024-05-22 23:08:34", - "author_account_age_days": 2431 - }, - "https://github.com/Taremin/comfyui-string-tools": { - "stars": 1, - "last_update": "2024-05-22 23:08:45", - "author_account_age_days": 2431 - }, - "https://github.com/Taremin/webui-monaco-prompt": { - "stars": 25, - "last_update": "2025-01-22 15:44:37", - "author_account_age_days": 2431 - }, - "https://github.com/TeaCrab/ComfyUI-TeaNodes": { - "stars": 5, - "last_update": "2024-05-22 20:44:05", - "author_account_age_days": 3433 - }, - "https://github.com/TechnoByteJS/ComfyUI-TechNodes": { - "stars": 15, - "last_update": "2024-09-20 23:26:02", - "author_account_age_days": 1891 - }, - "https://github.com/TemryL/ComfyS3": { - "stars": 41, - "last_update": "2024-11-05 14:56:04", - "author_account_age_days": 1084 - }, - "https://github.com/TemryL/ComfyUI-IDM-VTON": { - "stars": 451, - "last_update": "2024-08-20 02:44:02", - "author_account_age_days": 1084 - }, - "https://github.com/TencentQQGYLab/ComfyUI-ELLA": { - "stars": 361, - "last_update": "2024-08-16 11:21:10", - "author_account_age_days": 313 - }, - "https://github.com/Tenney95/ComfyUI-NodeAligner": { - "stars": 98, - "last_update": "2024-12-28 10:58:56", - "author_account_age_days": 142 - }, - "https://github.com/TheBarret/ZSuite": { - "stars": 8, - "last_update": "2024-08-10 13:31:03", - "author_account_age_days": 2928 - }, - "https://github.com/TheBill2001/ComfyUI-Save-Image-Caption": { - "stars": 5, - "last_update": "2024-08-28 07:45:11", - "author_account_age_days": 1657 - }, - "https://github.com/TheBill2001/comfyui-upscale-by-model": { - "stars": 4, - "last_update": "2024-06-18 17:57:06", - "author_account_age_days": 1657 - }, - "https://github.com/TheMistoAI/ComfyUI-Anyline": { - "stars": 424, - "last_update": "2024-08-30 09:50:34", - "author_account_age_days": 381 - }, - "https://github.com/ThepExcel/aiangelgallery-comfyui": { - "stars": 2, - "last_update": "2025-01-15 07:53:09", - "author_account_age_days": 1777 - }, - "https://github.com/ThereforeGames/ComfyUI-Unprompted": { - "stars": 10, - "last_update": "2024-11-13 20:46:08", - "author_account_age_days": 1151 - }, - "https://github.com/TinyTerra/ComfyUI_tinyterraNodes": { - "stars": 455, - "last_update": "2024-12-18 17:23:08", - "author_account_age_days": 837 - }, - "https://github.com/Tlant/ComfyUI-OllamaPromptsGeneratorTlant": { - "stars": 2, - "last_update": "2024-12-14 12:33:13", - "author_account_age_days": 2885 - }, - "https://github.com/Trgtuan10/ComfyUI_YoloSegment_Mask": { - "stars": 2, - "last_update": "2024-09-26 01:46:02", - "author_account_age_days": 788 - }, - "https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler": { - "stars": 45, - "last_update": "2024-05-22 22:13:06", - "author_account_age_days": 1076 - }, - "https://github.com/Tropfchen/ComfyUI-Embedding_Picker": { - "stars": 40, - "last_update": "2024-08-26 16:33:49", - "author_account_age_days": 4069 - }, - "https://github.com/Tropfchen/ComfyUI-yaResolutionSelector": { - "stars": 13, - "last_update": "2024-11-10 20:44:23", - "author_account_age_days": 4069 - }, - "https://github.com/Trung0246/ComfyUI-0246": { - "stars": 118, - "last_update": "2025-01-22 10:23:43", - "author_account_age_days": 3596 - }, - "https://github.com/Ttl/ComfyUi_NNLatentUpscale": { - "stars": 227, - "last_update": "2024-12-01 16:34:24", - "author_account_age_days": 5137 - }, - "https://github.com/TylerZoro/SD3-Scaling": { - "stars": 1, - "last_update": "2024-06-15 16:59:22", - "author_account_age_days": 1501 - }, - "https://github.com/Umikaze-job/select_folder_path_easy": { - "stars": 6, - "last_update": "2024-05-22 21:30:13", - "author_account_age_days": 434 - }, - "https://github.com/VAST-AI-Research/ComfyUI-Tripo": { - "stars": 217, - "last_update": "2025-01-26 02:14:31", - "author_account_age_days": 458 - }, - "https://github.com/Vaibhavs10/ComfyUI-DDUF": { - "stars": 5, - "last_update": "2025-01-03 15:10:44", - "author_account_age_days": 3196 - }, - "https://github.com/VangengLab/ComfyUI-LivePortrait_v2": { - "stars": 5, - "last_update": "2024-11-09 08:00:22", - "author_account_age_days": 494 - }, - "https://github.com/VangengLab/ComfyUI-LivePortrait_v3": { - "stars": 18, - "last_update": "2024-11-09 07:59:42", - "author_account_age_days": 494 - }, - "https://github.com/VertexStudio/roblox-comfyui-nodes": { - "stars": 1, - "last_update": "2024-10-08 16:35:54", - "author_account_age_days": 3194 - }, - "https://github.com/VikramxD/VEnhancer-ComfyUI-Wrapper": { - "stars": 10, - "last_update": "2025-01-14 07:35:00", - "author_account_age_days": 1571 - }, - "https://github.com/Visionatrix/ComfyUI-Visionatrix": { - "stars": 2, - "last_update": "2025-01-22 13:02:13", - "author_account_age_days": 332 - }, - "https://github.com/VrchStudio/comfyui-web-viewer": { - "stars": 94, - "last_update": "2025-01-25 19:15:02", - "author_account_age_days": 1135 - }, - "https://github.com/VykosX/ControlFlowUtils": { - "stars": 100, - "last_update": "2024-12-09 17:24:48", - "author_account_age_days": 2126 - }, - "https://github.com/WASasquatch/ComfyUI_Preset_Merger": { - "stars": 29, - "last_update": "2024-10-27 01:50:32", - "author_account_age_days": 4841 - }, - "https://github.com/WASasquatch/FreeU_Advanced": { - "stars": 116, - "last_update": "2024-10-27 01:49:14", - "author_account_age_days": 4841 - }, - "https://github.com/WASasquatch/PPF_Noise_ComfyUI": { - "stars": 23, - "last_update": "2024-06-14 10:27:23", - "author_account_age_days": 4841 - }, - "https://github.com/WASasquatch/PowerNoiseSuite": { - "stars": 72, - "last_update": "2024-07-31 13:48:33", - "author_account_age_days": 4841 - }, - "https://github.com/WASasquatch/WAS_Extras": { - "stars": 32, - "last_update": "2024-06-17 04:08:37", - "author_account_age_days": 4841 - }, - "https://github.com/WASasquatch/was-node-suite-comfyui": { - "stars": 1324, - "last_update": "2024-12-20 16:46:02", - "author_account_age_days": 4841 - }, - "https://github.com/WUYUDING2583/ComfyUI-Save-Image-Callback": { - "stars": 1, - "last_update": "2025-01-21 08:19:52", - "author_account_age_days": 2428 - }, - "https://github.com/WX-NPS1598/ComfyUI-Auto_Crop_By_NPS": { - "stars": 6, - "last_update": "2024-07-30 04:43:14", - "author_account_age_days": 192 - }, - "https://github.com/WaddingtonHoldings/ComfyUI-InstaSD": { - "stars": 2, - "last_update": "2025-01-14 02:01:05", - "author_account_age_days": 838 - }, - "https://github.com/WainWong/ComfyUI-Loop-image": { - "stars": 30, - "last_update": "2025-01-25 08:36:38", - "author_account_age_days": 2838 - }, - "https://github.com/Wakfull33/ComfyUI-SaveImageCivitAI": { - "stars": 2, - "last_update": "2024-10-29 11:03:23", - "author_account_age_days": 3175 - }, - "https://github.com/WangPengxing/ComfyUI_WPX_Node": { - "stars": 1, - "last_update": "2025-01-20 08:31:55", - "author_account_age_days": 542 - }, - "https://github.com/WebDev9000/WebDev9000-Nodes": { - "stars": 1, - "last_update": "2024-06-14 10:28:22", - "author_account_age_days": 3968 - }, - "https://github.com/Wenaka2004/ComfyUI-TagClassifier": { - "stars": 4, - "last_update": "2025-01-12 04:32:37", - "author_account_age_days": 754 - }, - "https://github.com/Wicloz/ComfyUI-Simply-Nodes": { - "stars": 2, - "last_update": "2025-01-05 01:44:38", - "author_account_age_days": 3859 - }, - "https://github.com/X-T-E-R/ComfyUI-EasyCivitai-XTNodes": { - "stars": 36, - "last_update": "2024-09-04 11:37:04", - "author_account_age_days": 1379 - }, - "https://github.com/XLabs-AI/x-flux-comfyui": { - "stars": 1299, - "last_update": "2024-10-30 12:51:21", - "author_account_age_days": 173 - }, - "https://github.com/Xclbr7/ComfyUI-Merlin": { - "stars": 28, - "last_update": "2024-09-02 19:36:05", - "author_account_age_days": 153 - }, - "https://github.com/Xiangyu-CAS/HandFixer": { - "stars": 2, - "last_update": "2025-01-24 14:35:29", - "author_account_age_days": 3604 - }, - "https://github.com/XieChengYuan/comfyui_kj": { - "stars": 1, - "last_update": "2025-01-22 15:55:59", - "author_account_age_days": 2645 - }, - "https://github.com/XmYx/deforum-comfy-nodes": { - "stars": 171, - "last_update": "2024-12-05 21:10:04", - "author_account_age_days": 2821 - }, - "https://github.com/Xyem/Xycuno-Oobabooga": { - "stars": 4, - "last_update": "2024-05-23 00:14:14", - "author_account_age_days": 4540 - }, - "https://github.com/YMC-GitHub/ymc-node-as-x-type": { - "stars": 1, - "last_update": "2024-08-03 06:01:00", - "author_account_age_days": 2911 - }, - "https://github.com/YMC-GitHub/ymc-node-suite-comfyui": { - "stars": 17, - "last_update": "2024-05-22 21:15:51", - "author_account_age_days": 2911 - }, - "https://github.com/YOUR-WORST-TACO/ComfyUI-TacoNodes": { - "stars": 14, - "last_update": "2024-05-22 20:48:23", - "author_account_age_days": 3971 - }, - "https://github.com/Yanick112/ComfyUI-ToSVG": { - "stars": 123, - "last_update": "2024-10-12 15:56:48", - "author_account_age_days": 1029 - }, - "https://github.com/YarvixPA/ComfyUI-NeuralMedia": { - "stars": 2, - "last_update": "2025-01-21 21:31:26", - "author_account_age_days": 422 - }, - "https://github.com/YinBailiang/MergeBlockWeighted_fo_ComfyUI": { - "stars": 16, - "last_update": "2025-01-03 03:58:20", - "author_account_age_days": 1002 - }, - "https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh": { - "stars": 5, - "last_update": "2024-11-29 09:52:04", - "author_account_age_days": 1656 - }, - "https://github.com/Yuan-ManX/ComfyUI-SoundHub": { - "stars": 2, - "last_update": "2024-11-27 08:00:48", - "author_account_age_days": 1656 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR": { - "stars": 356, - "last_update": "2024-05-22 14:14:46", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Animated-optical-illusions": { - "stars": 20, - "last_update": "2024-06-14 07:06:15", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-ArtGallery": { - "stars": 467, - "last_update": "2024-06-12 04:40:50", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BRIA_AI-RMBG": { - "stars": 748, - "last_update": "2024-05-22 14:14:18", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-DepthFM": { - "stars": 73, - "last_update": "2024-05-22 14:14:03", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Gemini": { - "stars": 692, - "last_update": "2024-05-22 14:15:11", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-InstantID": { - "stars": 1374, - "last_update": "2024-05-22 13:57:55", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Phi-3-mini": { - "stars": 200, - "last_update": "2024-06-30 08:41:40", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker-ZHO": { - "stars": 798, - "last_update": "2024-05-22 14:13:49", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PixArt-alpha-Diffusers": { - "stars": 48, - "last_update": "2024-05-22 13:40:58", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Q-Align": { - "stars": 4, - "last_update": "2024-05-22 14:15:52", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen": { - "stars": 96, - "last_update": "2024-09-20 21:27:47", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen-VL-API": { - "stars": 198, - "last_update": "2024-05-22 14:14:57", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO": { - "stars": 107, - "last_update": "2024-05-22 13:40:44", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SegMoE": { - "stars": 80, - "last_update": "2024-05-22 13:41:14", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Text_Image-Composite": { - "stars": 103, - "last_update": "2024-05-31 12:03:55", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-UltraEdit-ZHO": { - "stars": 145, - "last_update": "2024-07-11 14:59:07", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-YoloWorld-EfficientSAM": { - "stars": 657, - "last_update": "2024-05-22 13:01:07", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/comfyui-portrait-master-zh-cn": { - "stars": 1657, - "last_update": "2024-06-14 09:00:04", - "author_account_age_days": 555 - }, - "https://github.com/ZZXYWQ/ComfyUI-ZZXYWQ": { - "stars": 21, - "last_update": "2024-07-19 06:38:39", - "author_account_age_days": 1489 - }, - "https://github.com/ZaneA/ComfyUI-ImageReward": { - "stars": 28, - "last_update": "2024-08-19 06:43:55", - "author_account_age_days": 5755 - }, - "https://github.com/ZeDarkAdam/ComfyUI-Embeddings-Tools": { - "stars": 2, - "last_update": "2024-06-23 19:19:40", - "author_account_age_days": 1409 - }, - "https://github.com/Zeks/comfyui-rapidfire": { - "stars": 1, - "last_update": "2025-01-14 18:28:43", - "author_account_age_days": 4836 - }, - "https://github.com/Zuellni/ComfyUI-Custom-Nodes": { - "stars": 44, - "last_update": "2023-09-19 12:11:26", - "author_account_age_days": 738 - }, - "https://github.com/Zuellni/ComfyUI-ExLlama-Nodes": { - "stars": 117, - "last_update": "2024-12-06 14:22:11", - "author_account_age_days": 738 - }, - "https://github.com/Zuellni/ComfyUI-PickScore-Nodes": { - "stars": 35, - "last_update": "2024-09-08 09:17:04", - "author_account_age_days": 738 - }, - "https://github.com/a-und-b/ComfyUI_Delay": { - "stars": 3, - "last_update": "2025-01-10 11:20:35", - "author_account_age_days": 656 - }, - "https://github.com/a-und-b/ComfyUI_JSON_Helper": { - "stars": 3, - "last_update": "2025-01-09 15:54:55", - "author_account_age_days": 656 - }, - "https://github.com/a-und-b/ComfyUI_LoRA_from_URL": { - "stars": 1, - "last_update": "2025-01-16 13:40:26", - "author_account_age_days": 656 - }, - "https://github.com/a1lazydog/ComfyUI-AudioScheduler": { - "stars": 102, - "last_update": "2024-08-08 03:04:19", - "author_account_age_days": 5018 - }, - "https://github.com/abdozmantar/ComfyUI-DeepExtract": { - "stars": 9, - "last_update": "2024-12-07 11:44:06", - "author_account_age_days": 368 - }, - "https://github.com/aburahamu/ComfyUI-IsNiceParts": { - "stars": 3, - "last_update": "2024-06-14 12:01:40", - "author_account_age_days": 288 - }, - "https://github.com/aburahamu/ComfyUI-RequestsPoster": { - "stars": 2, - "last_update": "2024-06-14 13:59:24", - "author_account_age_days": 288 - }, - "https://github.com/abyz22/image_control": { - "stars": 15, - "last_update": "2024-08-31 08:39:44", - "author_account_age_days": 378 - }, - "https://github.com/acorderob/sd-webui-prompt-postprocessor": { - "stars": 28, - "last_update": "2024-11-23 13:08:46", - "author_account_age_days": 4043 - }, - "https://github.com/adbrasi/ComfyUI-TrashNodes-DownloadHuggingface": { - "stars": 4, - "last_update": "2024-05-22 23:24:45", - "author_account_age_days": 919 - }, - "https://github.com/adieyal/comfyui-dynamicprompts": { - "stars": 272, - "last_update": "2024-07-09 14:21:09", - "author_account_age_days": 5232 - }, - "https://github.com/adigayung/ComfyUI-Translator": { - "stars": 5, - "last_update": "2024-09-09 03:36:52", - "author_account_age_days": 429 - }, - "https://github.com/adriflex/ComfyUI_Blender_Texdiff": { - "stars": 2, - "last_update": "2024-05-22 23:14:18", - "author_account_age_days": 2438 - }, - "https://github.com/aegis72/aegisflow_utility_nodes": { - "stars": 31, - "last_update": "2024-10-03 11:11:39", - "author_account_age_days": 799 - }, - "https://github.com/aegis72/comfyui-styles-all": { - "stars": 48, - "last_update": "2024-05-22 22:10:41", - "author_account_age_days": 799 - }, - "https://github.com/ahernandezmiro/ComfyUI-GCP_Storage_tools": { - "stars": 1, - "last_update": "2025-01-03 18:48:03", - "author_account_age_days": 4211 - }, - "https://github.com/ai-liam/comfyui-liam": { - "stars": 2, - "last_update": "2024-06-22 03:27:52", - "author_account_age_days": 1736 - }, - "https://github.com/ai-liam/comfyui_liam_util": { - "stars": 1, - "last_update": "2024-05-22 22:21:23", - "author_account_age_days": 1736 - }, - "https://github.com/ai-shizuka/ComfyUI-tbox": { - "stars": 7, - "last_update": "2024-12-19 08:13:44", - "author_account_age_days": 228 - }, - "https://github.com/aianimation55/ComfyUI-FatLabels": { - "stars": 5, - "last_update": "2024-05-22 21:26:01", - "author_account_age_days": 489 - }, - "https://github.com/aidec/Comfyui_TextBatch_aidec": { - "stars": 2, - "last_update": "2025-01-25 05:52:31", - "author_account_age_days": 4119 - }, - "https://github.com/aidenli/ComfyUI_NYJY": { - "stars": 95, - "last_update": "2024-12-31 10:12:40", - "author_account_age_days": 4764 - }, - "https://github.com/aigc-apps/EasyAnimate": { - "stars": 1749, - "last_update": "2025-01-23 07:52:48", - "author_account_age_days": 534 - }, - "https://github.com/aimerib/ComfyUI_HigherBitDepthSaveImage": { - "stars": 3, - "last_update": "2024-09-14 03:03:01", - "author_account_age_days": 2886 - }, - "https://github.com/ainewsto/comfyui-labs-google": { - "stars": 51, - "last_update": "2025-01-10 09:53:04", - "author_account_age_days": 870 - }, - "https://github.com/aisabervisionlab/ComfyUI_merge_ASVL": { - "stars": 3, - "last_update": "2024-07-31 13:39:36", - "author_account_age_days": 205 - }, - "https://github.com/akatz-ai/ComfyUI-AKatz-Nodes": { - "stars": 24, - "last_update": "2025-01-19 07:40:04", - "author_account_age_days": 251 - }, - "https://github.com/akatz-ai/ComfyUI-DepthCrafter-Nodes": { - "stars": 198, - "last_update": "2024-12-13 01:44:03", - "author_account_age_days": 251 - }, - "https://github.com/akatz-ai/ComfyUI-Depthflow-Nodes": { - "stars": 238, - "last_update": "2024-12-26 22:37:39", - "author_account_age_days": 251 - }, - "https://github.com/akatz-ai/ComfyUI-X-Portrait-Nodes": { - "stars": 79, - "last_update": "2024-12-13 01:44:29", - "author_account_age_days": 251 - }, - "https://github.com/akierson/ComfyUI-textnodes": { - "stars": 1, - "last_update": "2024-10-20 20:12:15", - "author_account_age_days": 2550 - }, - "https://github.com/akierson/comfyui-colornodes": { - "stars": 2, - "last_update": "2024-10-20 20:14:09", - "author_account_age_days": 2550 - }, - "https://github.com/akspa0/ComfyUI-FapMixPlus": { - "stars": 2, - "last_update": "2024-11-11 02:59:10", - "author_account_age_days": 346 - }, - "https://github.com/al-swaiti/All-IN-ONE-style": { - "stars": 6, - "last_update": "2024-07-30 05:59:49", - "author_account_age_days": 1145 - }, - "https://github.com/al-swaiti/ComfyUI-CascadeResolutions": { - "stars": 4, - "last_update": "2024-07-31 13:48:47", - "author_account_age_days": 1145 - }, - "https://github.com/al-swaiti/ComfyUI-OllamaGemini": { - "stars": 31, - "last_update": "2024-11-28 12:32:25", - "author_account_age_days": 1145 - }, - "https://github.com/alanhuang67/ComfyUI-FAI-Node": { - "stars": 11, - "last_update": "2024-08-02 03:35:41", - "author_account_age_days": 3706 - }, - "https://github.com/alessandrozonta/ComfyUI-CenterNode": { - "stars": 7, - "last_update": "2024-11-14 12:20:40", - "author_account_age_days": 1412 - }, - "https://github.com/alessandrozonta/ComfyUI-Layers": { - "stars": 43, - "last_update": "2024-07-31 13:46:32", - "author_account_age_days": 1412 - }, - "https://github.com/alessandrozonta/ComfyUI-OpenPose": { - "stars": 18, - "last_update": "2024-07-31 13:51:14", - "author_account_age_days": 1412 - }, - "https://github.com/alexcong/ComfyUI_QwenVL": { - "stars": 34, - "last_update": "2024-12-28 23:17:34", - "author_account_age_days": 3802 - }, - "https://github.com/alexgenovese/ComfyUI_HF_Servelress_Inference": { - "stars": 6, - "last_update": "2024-09-01 13:04:48", - "author_account_age_days": 5230 - }, - "https://github.com/alexisrolland/ComfyUI-Phi": { - "stars": 9, - "last_update": "2025-01-04 10:38:45", - "author_account_age_days": 3501 - }, - "https://github.com/alexopus/ComfyUI-Image-Saver": { - "stars": 60, - "last_update": "2024-12-08 20:23:34", - "author_account_age_days": 2895 - }, - "https://github.com/ali1234/comfyui-job-iterator": { - "stars": 102, - "last_update": "2024-11-16 07:51:07", - "author_account_age_days": 5076 - }, - "https://github.com/alisson-anjos/ComfyUI-Ollama-Describer": { - "stars": 60, - "last_update": "2025-01-19 12:05:48", - "author_account_age_days": 816 - }, - "https://github.com/alpertunga-bile/image-caption-comfyui": { - "stars": 10, - "last_update": "2024-09-07 13:32:12", - "author_account_age_days": 1488 - }, - "https://github.com/alpertunga-bile/prompt-generator-comfyui": { - "stars": 91, - "last_update": "2025-01-23 17:30:20", - "author_account_age_days": 1488 - }, - "https://github.com/alsritter/asymmetric-tiling-comfyui": { - "stars": 17, - "last_update": "2024-05-22 20:43:07", - "author_account_age_days": 2210 - }, - "https://github.com/alt-key-project/comfyui-dream-project": { - "stars": 94, - "last_update": "2025-01-17 21:00:45", - "author_account_age_days": 876 - }, - "https://github.com/alt-key-project/comfyui-dream-video-batches": { - "stars": 68, - "last_update": "2024-12-07 20:06:38", - "author_account_age_days": 876 - }, - "https://github.com/an90ray/ComfyUI_RErouter_CustomNodes": { - "stars": 0, - "last_update": "2024-05-22 22:21:00", - "author_account_age_days": 404 - }, - "https://github.com/andersxa/comfyui-PromptAttention": { - "stars": 23, - "last_update": "2024-06-20 11:09:25", - "author_account_age_days": 3169 - }, - "https://github.com/andygill/comfyui-sunflower-nodes": { - "stars": 2, - "last_update": "2025-01-02 04:23:22", - "author_account_age_days": 6008 - }, - "https://github.com/angeloshredder/StableCascadeResizer": { - "stars": 2, - "last_update": "2024-05-23 00:12:55", - "author_account_age_days": 2044 - }, - "https://github.com/anhkhoatranle30/Handy-Nodes-ComfyUI": { - "stars": 2, - "last_update": "2024-09-14 14:08:22", - "author_account_age_days": 1966 - }, - "https://github.com/antrobot1234/antrobots-comfyUI-nodepack": { - "stars": 17, - "last_update": "2025-01-22 03:46:03", - "author_account_age_days": 3078 - }, - "https://github.com/arcum42/ComfyUI_SageUtils": { - "stars": 3, - "last_update": "2025-01-15 10:50:51", - "author_account_age_days": 5963 - }, - "https://github.com/aria1th/ComfyUI-LogicUtils": { - "stars": 30, - "last_update": "2025-01-15 18:27:44", - "author_account_age_days": 2561 - }, - "https://github.com/asaddi/ComfyUI-YALLM-node": { - "stars": 3, - "last_update": "2024-12-29 01:08:36", - "author_account_age_days": 3750 - }, - "https://github.com/asagi4/ComfyUI-Adaptive-Guidance": { - "stars": 45, - "last_update": "2024-11-23 17:37:39", - "author_account_age_days": 656 - }, - "https://github.com/asagi4/ComfyUI-CADS": { - "stars": 40, - "last_update": "2024-07-31 16:02:55", - "author_account_age_days": 656 - }, - "https://github.com/asagi4/ComfyUI-NPNet": { - "stars": 17, - "last_update": "2024-12-10 17:20:10", - "author_account_age_days": 656 - }, - "https://github.com/asagi4/comfyui-prompt-control": { - "stars": 242, - "last_update": "2025-01-12 13:58:43", - "author_account_age_days": 656 - }, - "https://github.com/asagi4/comfyui-utility-nodes": { - "stars": 7, - "last_update": "2024-05-25 11:40:49", - "author_account_age_days": 656 - }, - "https://github.com/asutermo/ComfyUI-Flux-TryOff": { - "stars": 17, - "last_update": "2025-01-24 19:07:56", - "author_account_age_days": 5127 - }, - "https://github.com/aszc-dev/ComfyUI-CoreMLSuite": { - "stars": 144, - "last_update": "2024-08-15 18:37:19", - "author_account_age_days": 2943 - }, - "https://github.com/atmaranto/ComfyUI-SaveAsScript": { - "stars": 120, - "last_update": "2024-10-09 08:44:54", - "author_account_age_days": 2564 - }, - "https://github.com/audioscavenger/ComfyUI-Thumbnails": { - "stars": 23, - "last_update": "2025-01-06 23:41:08", - "author_account_age_days": 4336 - }, - "https://github.com/audioscavenger/save-image-extended-comfyui": { - "stars": 72, - "last_update": "2025-01-05 19:27:21", - "author_account_age_days": 4336 - }, - "https://github.com/avatechai/avatar-graph-comfyui": { - "stars": 256, - "last_update": "2024-05-22 21:14:14", - "author_account_age_days": 1070 - }, - "https://github.com/aws-samples/comfyui-llm-node-for-amazon-bedrock": { - "stars": 11, - "last_update": "2025-01-26 02:31:14", - "author_account_age_days": 3774 - }, - "https://github.com/azure-dragon-ai/ComfyUI-ClipScore-Nodes": { - "stars": 3, - "last_update": "2024-05-22 23:16:28", - "author_account_age_days": 517 - }, - "https://github.com/badayvedat/ComfyUI-fal-Connector": { - "stars": 36, - "last_update": "2024-12-09 10:33:40", - "author_account_age_days": 1986 - }, - "https://github.com/badjeff/comfyui_lora_tag_loader": { - "stars": 66, - "last_update": "2024-05-22 20:40:03", - "author_account_age_days": 5578 - }, - "https://github.com/baicai99/ComfyUI-FrameSkipping": { - "stars": 9, - "last_update": "2024-12-03 09:26:50", - "author_account_age_days": 1047 - }, - "https://github.com/bananasss00/ComfyUI-SP-Nodes": { - "stars": 14, - "last_update": "2025-01-15 10:26:57", - "author_account_age_days": 2750 - }, - "https://github.com/bananasss00/ComfyUI-flux_fill_patcher": { - "stars": 5, - "last_update": "2024-11-25 20:04:20", - "author_account_age_days": 2750 - }, - "https://github.com/banodoco/steerable-motion": { - "stars": 869, - "last_update": "2024-06-15 23:01:54", - "author_account_age_days": 617 - }, - "https://github.com/banqingyuan/ComfyUI-text-replace": { - "stars": 1, - "last_update": "2024-09-22 16:14:22", - "author_account_age_days": 2514 - }, - "https://github.com/bartly/Comfyui_babel_removebg_api": { - "stars": 7, - "last_update": "2024-10-14 00:48:34", - "author_account_age_days": 4342 - }, - "https://github.com/bash-j/mikey_nodes": { - "stars": 126, - "last_update": "2024-11-02 07:57:28", - "author_account_age_days": 4403 - }, - "https://github.com/bear2b/comfyui-argo-nodes": { - "stars": 1, - "last_update": "2025-01-16 11:11:38", - "author_account_age_days": 3181 - }, - "https://github.com/bedovyy/ComfyUI_NAIDGenerator": { - "stars": 51, - "last_update": "2024-12-23 19:50:16", - "author_account_age_days": 578 - }, - "https://github.com/benjiyaya/ComfyUI-HunyuanVideoImagesGuider": { - "stars": 21, - "last_update": "2025-01-14 10:42:44", - "author_account_age_days": 328 - }, - "https://github.com/benjiyaya/ComfyUI-KokoroTTS": { - "stars": 18, - "last_update": "2025-01-24 14:45:54", - "author_account_age_days": 328 - }, - "https://github.com/bentoml/comfy-pack": { - "stars": 91, - "last_update": "2025-01-24 01:40:08", - "author_account_age_days": 2126 - }, - "https://github.com/bilal-arikan/ComfyUI_TextAssets": { - "stars": 2, - "last_update": "2024-05-22 23:23:50", - "author_account_age_days": 3723 - }, - "https://github.com/billwuhao/ComfyUI_OneButtonPrompt_Flux": { - "stars": 6, - "last_update": "2025-01-25 15:50:01", - "author_account_age_days": 2152 - }, - "https://github.com/bitaffinity/ComfyUI_HF_Inference": { - "stars": 2, - "last_update": "2024-06-14 10:23:29", - "author_account_age_days": 272 - }, - "https://github.com/black-forest-labs/bfl-comfy-nodes": { - "stars": 52, - "last_update": "2025-01-16 16:05:24", - "author_account_age_days": 312 - }, - "https://github.com/blackcodetavern/ComfyUI-Benripack": { - "stars": 2, - "last_update": "2024-09-07 09:06:00", - "author_account_age_days": 3089 - }, - "https://github.com/blepping/ComfyUI-bleh": { - "stars": 69, - "last_update": "2025-01-19 08:07:27", - "author_account_age_days": 370 - }, - "https://github.com/blepping/ComfyUI-sonar": { - "stars": 40, - "last_update": "2024-12-12 22:16:46", - "author_account_age_days": 370 - }, - "https://github.com/blepping/comfyui_jankdiffusehigh": { - "stars": 22, - "last_update": "2025-01-13 09:38:01", - "author_account_age_days": 370 - }, - "https://github.com/blepping/comfyui_jankhidiffusion": { - "stars": 121, - "last_update": "2024-12-25 04:47:01", - "author_account_age_days": 370 - }, - "https://github.com/blepping/comfyui_overly_complicated_sampling": { - "stars": 25, - "last_update": "2024-12-07 21:16:44", - "author_account_age_days": 370 - }, - "https://github.com/blib-la/blibla-comfyui-extensions": { - "stars": 166, - "last_update": "2024-08-20 14:47:54", - "author_account_age_days": 489 - }, - "https://github.com/blob8/ComfyUI_sloppy-comic": { - "stars": 6, - "last_update": "2024-09-20 18:53:34", - "author_account_age_days": 284 - }, - "https://github.com/blueraincoatli/comfyUI_SillyNodes": { - "stars": 4, - "last_update": "2025-01-17 09:17:48", - "author_account_age_days": 528 - }, - "https://github.com/bluevisor/ComfyUI_PS_Blend_Node": { - "stars": 2, - "last_update": "2024-07-08 12:38:26", - "author_account_age_days": 4783 - }, - "https://github.com/bmad4ever/ComfyUI-Bmad-DirtyUndoRedo": { - "stars": 49, - "last_update": "2024-05-22 18:11:51", - "author_account_age_days": 3752 - }, - "https://github.com/bmad4ever/comfyui_ab_samplercustom": { - "stars": 9, - "last_update": "2024-09-17 20:18:46", - "author_account_age_days": 3752 - }, - "https://github.com/bmad4ever/comfyui_lists_cartesian_product": { - "stars": 3, - "last_update": "2024-05-22 20:18:07", - "author_account_age_days": 3752 - }, - "https://github.com/bmad4ever/comfyui_quilting": { - "stars": 10, - "last_update": "2024-10-18 19:41:01", - "author_account_age_days": 3752 - }, - "https://github.com/bmad4ever/comfyui_wfc_like": { - "stars": 6, - "last_update": "2024-08-02 22:01:12", - "author_account_age_days": 3752 - }, - "https://github.com/bobmagicii/comfykit-custom-nodes": { - "stars": 2, - "last_update": "2024-08-22 22:28:30", - "author_account_age_days": 4960 - }, - "https://github.com/bombax-xiaoice/ComfyUI-Allegro": { - "stars": 5, - "last_update": "2025-01-22 09:09:14", - "author_account_age_days": 124 - }, - "https://github.com/bombax-xiaoice/ComfyUI-MagicDance": { - "stars": 4, - "last_update": "2024-12-26 04:43:40", - "author_account_age_days": 124 - }, - "https://github.com/bombax-xiaoice/ComfyUI-Open-Sora-I2V": { - "stars": 2, - "last_update": "2025-01-21 07:58:50", - "author_account_age_days": 124 - }, - "https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan": { - "stars": 1, - "last_update": "2025-01-22 05:38:11", - "author_account_age_days": 124 - }, - "https://github.com/bombless/comfyUI-RememberingUtils": { - "stars": 1, - "last_update": "2024-12-25 01:31:05", - "author_account_age_days": 4774 - }, - "https://github.com/bongsang/ComfyUI-Bongsang": { - "stars": 1, - "last_update": "2025-01-05 05:42:30", - "author_account_age_days": 3819 - }, - "https://github.com/boredofnames/ComfyUI-ntfy": { - "stars": 1, - "last_update": "2024-08-27 03:47:58", - "author_account_age_days": 4314 - }, - "https://github.com/bradsec/ComfyUI_ResolutionSelector": { - "stars": 11, - "last_update": "2024-07-07 12:15:49", - "author_account_age_days": 3872 - }, - "https://github.com/bradsec/ComfyUI_StringEssentials": { - "stars": 1, - "last_update": "2025-01-26 04:17:11", - "author_account_age_days": 3872 - }, - "https://github.com/braintacles/braintacles-comfyui-nodes": { - "stars": 1, - "last_update": "2024-07-31 15:01:52", - "author_account_age_days": 647 - }, - "https://github.com/brayevalerien/ComfyUI-resynthesizer": { - "stars": 19, - "last_update": "2025-01-04 00:25:23", - "author_account_age_days": 1809 - }, - "https://github.com/brianfitzgerald/style_aligned_comfy": { - "stars": 288, - "last_update": "2024-05-30 14:23:40", - "author_account_age_days": 4455 - }, - "https://github.com/bronkula/comfyui-fitsize": { - "stars": 47, - "last_update": "2024-05-22 21:32:34", - "author_account_age_days": 5371 - }, - "https://github.com/bruefire/ComfyUI-SeqImageLoader": { - "stars": 35, - "last_update": "2025-01-16 10:58:50", - "author_account_age_days": 2581 - }, - "https://github.com/budihartono/comfyui_otonx_nodes": { - "stars": 1, - "last_update": "2024-07-31 16:01:47", - "author_account_age_days": 4902 - }, - "https://github.com/bugltd/ComfyLab-Pack": { - "stars": 1, - "last_update": "2025-01-23 15:28:48", - "author_account_age_days": 15 - }, - "https://github.com/bvhari/ComfyUI_ImageProcessing": { - "stars": 21, - "last_update": "2024-08-03 03:58:44", - "author_account_age_days": 1390 - }, - "https://github.com/bvhari/ComfyUI_PerpCFG": { - "stars": 2, - "last_update": "2024-10-07 20:34:34", - "author_account_age_days": 1390 - }, - "https://github.com/bvhari/ComfyUI_PerpWeight": { - "stars": 13, - "last_update": "2024-08-03 03:58:28", - "author_account_age_days": 1390 - }, - "https://github.com/bvhari/ComfyUI_SUNoise": { - "stars": 11, - "last_update": "2024-09-24 15:27:30", - "author_account_age_days": 1390 - }, - "https://github.com/c0ffymachyne/ComfyUI_BeatByte": { - "stars": 4, - "last_update": "2024-12-28 21:19:19", - "author_account_age_days": 4730 - }, - "https://github.com/c0ffymachyne/ComfyUI_SignalProcessing": { - "stars": 3, - "last_update": "2024-12-28 19:14:00", - "author_account_age_days": 4730 - }, - "https://github.com/cake-ml/tiny-sana-preview": { - "stars": 1, - "last_update": "2025-01-25 03:59:33", - "author_account_age_days": 97 - }, - "https://github.com/calcuis/gguf": { - "stars": 5, - "last_update": "2025-01-26 02:00:25", - "author_account_age_days": 863 - }, - "https://github.com/caleboleary/ComfyUI-Arc2Face": { - "stars": 41, - "last_update": "2024-09-02 23:00:00", - "author_account_age_days": 3518 - }, - "https://github.com/caleboleary/Comfyui-calbenodes": { - "stars": 2, - "last_update": "2024-09-16 19:27:58", - "author_account_age_days": 3518 - }, - "https://github.com/camenduru/ComfyUI-TostAI": { - "stars": 1, - "last_update": "2024-08-22 04:04:06", - "author_account_age_days": 1984 - }, - "https://github.com/catboxanon/comfyui_stealth_pnginfo": { - "stars": 0, - "last_update": "2024-12-06 04:47:31", - "author_account_age_days": 747 - }, - "https://github.com/cdb-boop/ComfyUI-Bringing-Old-Photos-Back-to-Life": { - "stars": 401, - "last_update": "2024-09-12 06:55:50", - "author_account_age_days": 1420 - }, - "https://github.com/cdb-boop/comfyui-image-round": { - "stars": 7, - "last_update": "2024-05-23 00:09:02", - "author_account_age_days": 1420 - }, - "https://github.com/cdxOo/comfyui-text-node-with-comments": { - "stars": 2, - "last_update": "2024-08-03 00:54:38", - "author_account_age_days": 3511 - }, - "https://github.com/celoron/ComfyUI-VisualQueryTemplate": { - "stars": 12, - "last_update": "2024-08-28 20:13:26", - "author_account_age_days": 5227 - }, - "https://github.com/celsojr2013/comfyui_jamworks_client": { - "stars": 0, - "last_update": "2024-06-23 12:35:44", - "author_account_age_days": 3614 - }, - "https://github.com/celsojr2013/comfyui_simpletools": { - "stars": 2, - "last_update": "2024-06-22 11:35:40", - "author_account_age_days": 3614 - }, - "https://github.com/cenzijing/ComfyUI-Markmap": { - "stars": 2, - "last_update": "2025-01-04 21:00:08", - "author_account_age_days": 1681 - }, - "https://github.com/cerspense/ComfyUI_cspnodes": { - "stars": 32, - "last_update": "2024-12-17 04:07:09", - "author_account_age_days": 2897 - }, - "https://github.com/ceruleandeep/ComfyUI-LLaVA-Captioner": { - "stars": 120, - "last_update": "2024-08-03 16:22:31", - "author_account_age_days": 1369 - }, - "https://github.com/chakib-belgaid/ComfyUI-autosize": { - "stars": 0, - "last_update": "2024-06-14 07:13:20", - "author_account_age_days": 4052 - }, - "https://github.com/chakib-belgaid/Comfyui_Prompt_styler": { - "stars": 0, - "last_update": "2024-07-01 12:40:52", - "author_account_age_days": 4052 - }, - "https://github.com/chandlergis/ComfyUI-IMG_Query": { - "stars": 1, - "last_update": "2024-05-23 01:25:57", - "author_account_age_days": 572 - }, - "https://github.com/chandlergis/ComfyUI_EmojiOverlay": { - "stars": 0, - "last_update": "2024-06-14 09:05:03", - "author_account_age_days": 572 - }, - "https://github.com/changwook987/ComfyUI-Small-Utility": { - "stars": 1, - "last_update": "2025-01-25 17:18:32", - "author_account_age_days": 1409 - }, - "https://github.com/chaojie/ComfyUI-AniPortrait": { - "stars": 251, - "last_update": "2024-05-22 22:26:03", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-CameraCtrl-Wrapper": { - "stars": 19, - "last_update": "2024-06-14 09:07:23", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Champ": { - "stars": 24, - "last_update": "2024-05-22 22:26:47", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-DragAnything": { - "stars": 68, - "last_update": "2024-06-14 10:23:53", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-DragNUWA": { - "stars": 399, - "last_update": "2024-06-14 10:25:01", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-DynamiCrafter": { - "stars": 129, - "last_update": "2024-06-14 10:23:59", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-EasyAnimate": { - "stars": 51, - "last_update": "2024-05-22 22:24:00", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Gemma": { - "stars": 6, - "last_update": "2024-05-22 22:27:47", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-I2VGEN-XL": { - "stars": 29, - "last_update": "2024-06-14 09:06:10", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Img2Img-Turbo": { - "stars": 35, - "last_update": "2024-05-22 22:26:30", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-LaVIT": { - "stars": 12, - "last_update": "2024-06-14 10:27:44", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-LightGlue": { - "stars": 50, - "last_update": "2024-01-20 16:53:51", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Moore-AnimateAnyone": { - "stars": 211, - "last_update": "2024-06-10 20:16:06", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Motion-Vector-Extractor": { - "stars": 1, - "last_update": "2024-06-14 10:26:15", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-MotionCtrl": { - "stars": 136, - "last_update": "2024-06-14 10:26:02", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-MotionCtrl-SVD": { - "stars": 83, - "last_update": "2024-06-14 10:26:30", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-MuseTalk": { - "stars": 227, - "last_update": "2024-05-22 22:25:07", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-MuseV": { - "stars": 154, - "last_update": "2024-05-22 22:25:31", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Open-Sora": { - "stars": 100, - "last_update": "2024-07-19 05:13:25", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Open-Sora-Plan": { - "stars": 52, - "last_update": "2024-05-29 16:15:10", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Panda3d": { - "stars": 15, - "last_update": "2024-06-14 10:28:47", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Pymunk": { - "stars": 16, - "last_update": "2024-06-14 12:02:32", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-RAFT": { - "stars": 26, - "last_update": "2024-06-14 11:02:00", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-SimDA": { - "stars": 13, - "last_update": "2024-06-14 12:02:39", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Trajectory": { - "stars": 6, - "last_update": "2024-05-22 22:27:12", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-Video-Editing-X-Attention": { - "stars": 17, - "last_update": "2024-06-14 10:28:16", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-dust3r": { - "stars": 19, - "last_update": "2024-05-22 22:27:33", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI_StreamingT2V": { - "stars": 37, - "last_update": "2024-06-14 10:26:21", - "author_account_age_days": 5049 - }, - "https://github.com/chaosaiart/Chaosaiart-Nodes": { - "stars": 79, - "last_update": "2024-10-03 16:28:57", - "author_account_age_days": 549 - }, - "https://github.com/chenbaiyujason/ComfyUI_StepFun": { - "stars": 5, - "last_update": "2024-12-05 14:45:27", - "author_account_age_days": 1950 - }, - "https://github.com/chenpx976/ComfyUI-RunRunRun": { - "stars": 0, - "last_update": "2024-05-23 01:19:37", - "author_account_age_days": 3631 - }, - "https://github.com/cherninlab/logo-generator-comfyui": { - "stars": 2, - "last_update": "2024-12-22 15:45:31", - "author_account_age_days": 312 - }, - "https://github.com/chesnokovivan/ComfyUI-Novakid": { - "stars": 0, - "last_update": "2024-06-10 20:15:56", - "author_account_age_days": 1745 - }, - "https://github.com/chflame163/ComfyUI_CatVTON_Wrapper": { - "stars": 290, - "last_update": "2025-01-01 12:55:16", - "author_account_age_days": 660 - }, - "https://github.com/chflame163/ComfyUI_FaceSimilarity": { - "stars": 26, - "last_update": "2024-05-23 12:48:18", - "author_account_age_days": 660 - }, - "https://github.com/chflame163/ComfyUI_LayerStyle": { - "stars": 1826, - "last_update": "2025-01-26 08:56:06", - "author_account_age_days": 660 - }, - "https://github.com/chflame163/ComfyUI_LayerStyle_Advance": { - "stars": 130, - "last_update": "2025-01-23 16:24:52", - "author_account_age_days": 660 - }, - "https://github.com/chflame163/ComfyUI_MSSpeech_TTS": { - "stars": 25, - "last_update": "2024-05-25 02:39:56", - "author_account_age_days": 660 - }, - "https://github.com/chflame163/ComfyUI_OmniGen_Wrapper": { - "stars": 135, - "last_update": "2024-11-06 09:00:01", - "author_account_age_days": 660 - }, - "https://github.com/chflame163/ComfyUI_WordCloud": { - "stars": 99, - "last_update": "2024-05-25 02:41:06", - "author_account_age_days": 660 - }, - "https://github.com/chibiace/ComfyUI-Chibi-Nodes": { - "stars": 53, - "last_update": "2024-08-27 06:39:31", - "author_account_age_days": 3065 - }, - "https://github.com/choey/Comfy-Topaz": { - "stars": 149, - "last_update": "2024-09-28 08:02:47", - "author_account_age_days": 5739 - }, - "https://github.com/chris-arsenault/ComfyUI-AharaNodes": { - "stars": 1, - "last_update": "2024-12-25 16:45:58", - "author_account_age_days": 4188 - }, - "https://github.com/chris-the-wiz/EmbeddingsCurveEditor_ComfyUI": { - "stars": 8, - "last_update": "2024-07-31 13:51:59", - "author_account_age_days": 2012 - }, - "https://github.com/chrisfreilich/virtuoso-nodes": { - "stars": 73, - "last_update": "2024-08-26 00:06:51", - "author_account_age_days": 948 - }, - "https://github.com/chrisgoringe/cg-controller": { - "stars": 57, - "last_update": "2025-01-09 06:23:28", - "author_account_age_days": 4281 - }, - "https://github.com/chrisgoringe/cg-image-picker": { - "stars": 300, - "last_update": "2024-11-29 02:05:30", - "author_account_age_days": 4281 - }, - "https://github.com/chrisgoringe/cg-noisetools": { - "stars": 9, - "last_update": "2024-12-17 04:09:18", - "author_account_age_days": 4281 - }, - "https://github.com/chrisgoringe/cg-prompt-info": { - "stars": 29, - "last_update": "2024-05-22 21:07:33", - "author_account_age_days": 4281 - }, - "https://github.com/chrisgoringe/cg-use-everywhere": { - "stars": 577, - "last_update": "2024-12-30 03:55:54", - "author_account_age_days": 4281 - }, - "https://github.com/chrish-slingshot/CrasHUtils": { - "stars": 12, - "last_update": "2024-10-29 22:55:39", - "author_account_age_days": 816 - }, - "https://github.com/chrissy0/chris-comfyui-nodes": { - "stars": 2, - "last_update": "2024-09-17 16:09:35", - "author_account_age_days": 2270 - }, - "https://github.com/christian-byrne/audio-separation-nodes-comfyui": { - "stars": 182, - "last_update": "2025-01-05 19:12:48", - "author_account_age_days": 1564 - }, - "https://github.com/christian-byrne/comfyui-default-values-manager": { - "stars": 10, - "last_update": "2024-07-28 20:52:51", - "author_account_age_days": 1564 - }, - "https://github.com/christian-byrne/comfyui-search-navigation": { - "stars": 8, - "last_update": "2024-06-26 04:41:12", - "author_account_age_days": 1564 - }, - "https://github.com/christian-byrne/img2colors-comfyui-node": { - "stars": 9, - "last_update": "2025-01-05 18:48:59", - "author_account_age_days": 1564 - }, - "https://github.com/christian-byrne/img2txt-comfyui-nodes": { - "stars": 79, - "last_update": "2024-08-09 11:19:02", - "author_account_age_days": 1564 - }, - "https://github.com/christian-byrne/size-match-compositing-nodes": { - "stars": 5, - "last_update": "2025-01-05 17:45:02", - "author_account_age_days": 1564 - }, - "https://github.com/christian-byrne/youtube-dl-comfyui": { - "stars": 4, - "last_update": "2024-10-01 16:32:14", - "author_account_age_days": 1564 - }, - "https://github.com/ciga2011/ComfyUI-MarkItDown": { - "stars": 3, - "last_update": "2024-12-28 15:32:34", - "author_account_age_days": 4414 - }, - "https://github.com/ciga2011/ComfyUI-Pollinations": { - "stars": 1, - "last_update": "2025-01-14 15:23:14", - "author_account_age_days": 4414 - }, - "https://github.com/ciga2011/ComfyUI-PromptOptimizer": { - "stars": 1, - "last_update": "2025-01-16 02:24:50", - "author_account_age_days": 4414 - }, - "https://github.com/ciri/comfyui-model-downloader": { - "stars": 37, - "last_update": "2025-01-04 08:32:06", - "author_account_age_days": 5586 - }, - "https://github.com/city96/ComfyUI-GGUF": { - "stars": 1357, - "last_update": "2025-01-08 15:35:24", - "author_account_age_days": 713 - }, - "https://github.com/city96/ComfyUI_ColorMod": { - "stars": 86, - "last_update": "2024-08-06 22:38:54", - "author_account_age_days": 713 - }, - "https://github.com/city96/ComfyUI_DiT": { - "stars": 6, - "last_update": "2024-08-06 22:44:33", - "author_account_age_days": 713 - }, - "https://github.com/city96/ComfyUI_ExtraModels": { - "stars": 468, - "last_update": "2024-12-17 06:44:05", - "author_account_age_days": 713 - }, - "https://github.com/city96/ComfyUI_NetDist": { - "stars": 397, - "last_update": "2024-05-22 18:05:10", - "author_account_age_days": 713 - }, - "https://github.com/city96/SD-Latent-Interposer": { - "stars": 270, - "last_update": "2024-08-06 22:01:47", - "author_account_age_days": 713 - }, - "https://github.com/city96/SD-Latent-Upscaler": { - "stars": 144, - "last_update": "2024-05-22 18:05:50", - "author_account_age_days": 713 - }, - "https://github.com/civen-cn/ComfyUI-PaddleOcr": { - "stars": 5, - "last_update": "2024-12-31 19:11:04", - "author_account_age_days": 2721 - }, - "https://github.com/civen-cn/ComfyUI-Whisper-Translator": { - "stars": 4, - "last_update": "2025-01-04 03:37:06", - "author_account_age_days": 2721 - }, - "https://github.com/civitai/civitai_comfy_nodes": { - "stars": 116, - "last_update": "2024-08-25 03:32:49", - "author_account_age_days": 814 - }, - "https://github.com/claussteinmassl/ComfyUI-CS-CustomNodes": { - "stars": 1, - "last_update": "2024-06-14 09:03:10", - "author_account_age_days": 2916 - }, - "https://github.com/clhui/ComfyUi-clh-Tool": { - "stars": 3, - "last_update": "2024-12-28 10:22:00", - "author_account_age_days": 3044 - }, - "https://github.com/cnbjjj/ComfyUI-Jtils": { - "stars": 3, - "last_update": "2024-12-17 04:00:58", - "author_account_age_days": 390 - }, - "https://github.com/codecringebinge/ComfyUI-Arrow-Key-Canvas-Navigation": { - "stars": 3, - "last_update": "2024-09-29 22:35:01", - "author_account_age_days": 3014 - }, - "https://github.com/codeprimate/ComfyUI-MaskContourProcessor": { - "stars": 3, - "last_update": "2024-12-16 06:53:08", - "author_account_age_days": 6065 - }, - "https://github.com/comfyanonymous/ComfyUI": { - "stars": 64749, - "last_update": "2025-01-26 00:05:49", - "author_account_age_days": 765 - }, - "https://github.com/comfyanonymous/ComfyUI_TensorRT": { - "stars": 552, - "last_update": "2024-10-10 00:23:55", - "author_account_age_days": 765 - }, - "https://github.com/comfyanonymous/ComfyUI_experiments": { - "stars": 171, - "last_update": "2024-05-22 15:29:49", - "author_account_age_days": 765 - }, - "https://github.com/concarne000/ConCarneNode": { - "stars": 4, - "last_update": "2024-05-22 22:10:18", - "author_account_age_days": 2117 - }, - "https://github.com/conquestace/ComfyUI-ImageUploader": { - "stars": 2, - "last_update": "2024-05-23 01:25:49", - "author_account_age_days": 4825 - }, - "https://github.com/coolzilj/ComfyUI-LJNodes": { - "stars": 83, - "last_update": "2024-06-15 01:57:32", - "author_account_age_days": 4879 - }, - "https://github.com/coolzilj/ComfyUI-Photopea": { - "stars": 127, - "last_update": "2024-06-14 08:10:57", - "author_account_age_days": 4879 - }, - "https://github.com/coreyryanhanson/ComfyQR": { - "stars": 72, - "last_update": "2024-08-09 16:58:16", - "author_account_age_days": 3272 - }, - "https://github.com/coreyryanhanson/ComfyQR-scanning-nodes": { - "stars": 12, - "last_update": "2024-08-09 16:59:00", - "author_account_age_days": 3272 - }, - "https://github.com/cozy-comfyui/cozy_comm": { - "stars": 1, - "last_update": "2024-12-28 00:30:43", - "author_account_age_days": 282 - }, - "https://github.com/cozymantis/cozy-utils-comfyui-nodes": { - "stars": 3, - "last_update": "2024-07-07 15:38:05", - "author_account_age_days": 324 - }, - "https://github.com/cozymantis/human-parser-comfyui-node": { - "stars": 84, - "last_update": "2024-07-07 15:31:17", - "author_account_age_days": 324 - }, - "https://github.com/cozymantis/pose-generator-comfyui-node": { - "stars": 66, - "last_update": "2024-07-07 15:22:45", - "author_account_age_days": 324 - }, - "https://github.com/cr7Por/ComfyUI_DepthFlow": { - "stars": 6, - "last_update": "2024-09-16 09:10:08", - "author_account_age_days": 1341 - }, - "https://github.com/crystian/ComfyUI-Crystools": { - "stars": 940, - "last_update": "2024-11-09 16:30:13", - "author_account_age_days": 4333 - }, - "https://github.com/crystian/ComfyUI-Crystools-save": { - "stars": 42, - "last_update": "2024-09-24 23:39:03", - "author_account_age_days": 4333 - }, - "https://github.com/cubiq/Block_Patcher_ComfyUI": { - "stars": 75, - "last_update": "2024-09-22 09:49:06", - "author_account_age_days": 5227 - }, - "https://github.com/cubiq/ComfyUI_FaceAnalysis": { - "stars": 378, - "last_update": "2024-10-08 12:32:29", - "author_account_age_days": 5227 - }, - "https://github.com/cubiq/ComfyUI_IPAdapter_plus": { - "stars": 4518, - "last_update": "2024-09-13 13:04:50", - "author_account_age_days": 5227 - }, - "https://github.com/cubiq/ComfyUI_InstantID": { - "stars": 1428, - "last_update": "2024-09-30 08:54:05", - "author_account_age_days": 5227 - }, - "https://github.com/cubiq/ComfyUI_SimpleMath": { - "stars": 20, - "last_update": "2024-06-14 09:02:50", - "author_account_age_days": 5227 - }, - "https://github.com/cubiq/ComfyUI_essentials": { - "stars": 684, - "last_update": "2024-12-07 09:40:28", - "author_account_age_days": 5227 - }, - "https://github.com/cubiq/PuLID_ComfyUI": { - "stars": 776, - "last_update": "2024-10-05 16:21:01", - "author_account_age_days": 5227 - }, - "https://github.com/cuongloveit/comfy_http_request": { - "stars": 2, - "last_update": "2024-06-14 11:00:11", - "author_account_age_days": 3468 - }, - "https://github.com/curiousjp/ComfyUI-MaskBatchPermutations": { - "stars": 5, - "last_update": "2024-05-28 13:09:32", - "author_account_age_days": 2145 - }, - "https://github.com/czcz1024/Comfyui-FaceCompare": { - "stars": 0, - "last_update": "2024-06-14 07:13:32", - "author_account_age_days": 4449 - }, - "https://github.com/da2el-ai/ComfyUI-d2-send-eagle": { - "stars": 12, - "last_update": "2024-12-31 12:13:46", - "author_account_age_days": 605 - }, - "https://github.com/da2el-ai/ComfyUI-d2-size-selector": { - "stars": 5, - "last_update": "2024-10-02 14:04:20", - "author_account_age_days": 605 - }, - "https://github.com/da2el-ai/ComfyUI-d2-steps": { - "stars": 6, - "last_update": "2024-10-02 14:03:14", - "author_account_age_days": 605 - }, - "https://github.com/da2el-ai/ComfyUI-d2-xyplot-utils": { - "stars": 6, - "last_update": "2024-10-02 14:00:58", - "author_account_age_days": 605 - }, - "https://github.com/da2el-ai/D2-nodes-ComfyUI": { - "stars": 21, - "last_update": "2025-01-21 05:07:55", - "author_account_age_days": 605 - }, - "https://github.com/dadoirie/ComfyUI_Dados_Nodes": { - "stars": 1, - "last_update": "2024-08-23 20:46:12", - "author_account_age_days": 1805 - }, - "https://github.com/dafeng012/comfyui-imgmake": { - "stars": 11, - "last_update": "2024-11-03 17:38:47", - "author_account_age_days": 891 - }, - "https://github.com/dagthomas/comfyui_dagthomas": { - "stars": 225, - "last_update": "2024-12-20 22:53:53", - "author_account_age_days": 4287 - }, - "https://github.com/daniabib/ComfyUI_ProPainter_Nodes": { - "stars": 269, - "last_update": "2024-12-22 13:50:25", - "author_account_age_days": 2620 - }, - "https://github.com/daniel-lewis-ab/ComfyUI-Llama": { - "stars": 48, - "last_update": "2024-06-29 19:55:42", - "author_account_age_days": 3567 - }, - "https://github.com/daniel-lewis-ab/ComfyUI-TTS": { - "stars": 24, - "last_update": "2024-06-14 08:09:49", - "author_account_age_days": 3567 - }, - "https://github.com/darkpixel/darkprompts": { - "stars": 8, - "last_update": "2024-12-14 15:01:39", - "author_account_age_days": 5540 - }, - "https://github.com/darth-veitcher/comfydv": { - "stars": 2, - "last_update": "2024-10-20 12:43:46", - "author_account_age_days": 4644 - }, - "https://github.com/daryltucker/ComfyUI-LoadFiles": { - "stars": 1, - "last_update": "2024-08-31 23:59:44", - "author_account_age_days": 4680 - }, - "https://github.com/dave-palt/comfyui_DSP_imagehelpers": { - "stars": 0, - "last_update": "2024-05-22 23:12:11", - "author_account_age_days": 374 - }, - "https://github.com/davidgressett/comfyui-systemlevel": { - "stars": 1, - "last_update": "2025-01-22 23:51:40", - "author_account_age_days": 2846 - }, - "https://github.com/daxcay/ComfyUI-DataSet": { - "stars": 45, - "last_update": "2025-01-24 09:42:47", - "author_account_age_days": 311 - }, - "https://github.com/daxcay/ComfyUI-JDCN": { - "stars": 102, - "last_update": "2024-10-30 18:01:05", - "author_account_age_days": 311 - }, - "https://github.com/daxcay/ComfyUI-NODEJS": { - "stars": 10, - "last_update": "2024-11-28 09:46:29", - "author_account_age_days": 311 - }, - "https://github.com/daxcay/ComfyUI-Nexus": { - "stars": 79, - "last_update": "2024-11-28 20:28:24", - "author_account_age_days": 311 - }, - "https://github.com/daxcay/ComfyUI-TG": { - "stars": 15, - "last_update": "2024-11-28 09:45:12", - "author_account_age_days": 311 - }, - "https://github.com/daxcay/ComfyUI-WA": { - "stars": 49, - "last_update": "2024-11-28 09:44:50", - "author_account_age_days": 311 - }, - "https://github.com/daxcay/ComfyUI-YouTubeVideoPlayer": { - "stars": 6, - "last_update": "2024-11-28 09:45:30", - "author_account_age_days": 311 - }, - "https://github.com/dchatel/comfyui_davcha": { - "stars": 2, - "last_update": "2024-12-13 15:07:29", - "author_account_age_days": 4751 - }, - "https://github.com/dchatel/comfyui_facetools": { - "stars": 92, - "last_update": "2025-01-06 11:51:33", - "author_account_age_days": 4751 - }, - "https://github.com/denfrost/Den_ComfyUI_Workflow": { - "stars": 4, - "last_update": "2024-06-20 14:57:57", - "author_account_age_days": 3712 - }, - "https://github.com/deroberon/StableZero123-comfyui": { - "stars": 160, - "last_update": "2024-05-22 22:09:53", - "author_account_age_days": 5512 - }, - "https://github.com/deroberon/demofusion-comfyui": { - "stars": 87, - "last_update": "2024-05-22 22:09:42", - "author_account_age_days": 5512 - }, - "https://github.com/dfghsdh/ComfyUI_FluxPromptGen": { - "stars": 13, - "last_update": "2024-09-23 07:51:56", - "author_account_age_days": 125 - }, - "https://github.com/dfl/comfyui-clip-with-break": { - "stars": 10, - "last_update": "2024-05-22 23:23:15", - "author_account_age_days": 6190 - }, - "https://github.com/dfl/comfyui-tcd-scheduler": { - "stars": 83, - "last_update": "2024-05-22 23:23:28", - "author_account_age_days": 6190 - }, - "https://github.com/diStyApps/ComfyUI-disty-Flow": { - "stars": 470, - "last_update": "2025-01-04 18:03:37", - "author_account_age_days": 4420 - }, - "https://github.com/diStyApps/ComfyUI_FrameMaker": { - "stars": 18, - "last_update": "2024-05-23 00:11:33", - "author_account_age_days": 4420 - }, - "https://github.com/dicksondickson/ComfyUI-Dickson-Nodes": { - "stars": 11, - "last_update": "2024-09-18 04:30:33", - "author_account_age_days": 4207 - }, - "https://github.com/digitaljohn/comfyui-propost": { - "stars": 161, - "last_update": "2024-12-25 00:41:33", - "author_account_age_days": 4733 - }, - "https://github.com/dimtoneff/ComfyUI-PixelArt-Detector": { - "stars": 243, - "last_update": "2024-07-31 13:44:39", - "author_account_age_days": 3630 - }, - "https://github.com/dionren/ComfyUI-Pro-Export-Tool": { - "stars": 3, - "last_update": "2024-10-11 08:26:18", - "author_account_age_days": 4101 - }, - "https://github.com/diontimmer/ComfyUI-Vextra-Nodes": { - "stars": 72, - "last_update": "2024-06-20 16:48:44", - "author_account_age_days": 4986 - }, - "https://github.com/discopixel-studio/comfyui-discopixel": { - "stars": 12, - "last_update": "2024-09-30 00:46:13", - "author_account_age_days": 561 - }, - "https://github.com/discus0434/comfyui-aesthetic-predictor-v2-5": { - "stars": 7, - "last_update": "2024-06-14 08:12:05", - "author_account_age_days": 1686 - }, - "https://github.com/discus0434/comfyui-caching-embeddings": { - "stars": 1, - "last_update": "2024-06-14 08:59:36", - "author_account_age_days": 1686 - }, - "https://github.com/discus0434/comfyui-flux-accelerator": { - "stars": 120, - "last_update": "2024-12-19 14:39:39", - "author_account_age_days": 1686 - }, - "https://github.com/djbielejeski/a-person-mask-generator": { - "stars": 303, - "last_update": "2025-01-05 19:29:53", - "author_account_age_days": 4499 - }, - "https://github.com/dmMaze/sketch2manga": { - "stars": 40, - "last_update": "2024-06-30 03:27:55", - "author_account_age_days": 2065 - }, - "https://github.com/dmarx/ComfyUI-AudioReactive": { - "stars": 10, - "last_update": "2024-05-22 22:12:53", - "author_account_age_days": 4720 - }, - "https://github.com/dmarx/ComfyUI-Keyframed": { - "stars": 88, - "last_update": "2024-07-01 01:41:23", - "author_account_age_days": 4720 - }, - "https://github.com/drago87/ComfyUI_Dragos_Nodes": { - "stars": 3, - "last_update": "2024-05-22 21:32:15", - "author_account_age_days": 3985 - }, - "https://github.com/dreamhartley/ComfyUI_show_seed": { - "stars": 2, - "last_update": "2025-01-14 16:15:12", - "author_account_age_days": 699 - }, - "https://github.com/drmbt/comfyui-dreambait-nodes": { - "stars": 3, - "last_update": "2025-01-07 16:45:44", - "author_account_age_days": 3993 - }, - "https://github.com/drustan-hawk/primitive-types": { - "stars": 7, - "last_update": "2024-08-01 17:44:51", - "author_account_age_days": 505 - }, - "https://github.com/duchamps0305/comfyui-white-extractor": { - "stars": 1, - "last_update": "2025-01-23 08:09:12", - "author_account_age_days": 837 - }, - "https://github.com/ducido/ObjectFusion_ComfyUI_nodes": { - "stars": 2, - "last_update": "2024-08-27 01:08:12", - "author_account_age_days": 745 - }, - "https://github.com/dymokomi/comfyui_dygen": { - "stars": 2, - "last_update": "2024-11-28 20:08:13", - "author_account_age_days": 788 - }, - "https://github.com/e7mac/ComfyUI-ShadertoyGL": { - "stars": 2, - "last_update": "2024-06-20 14:52:42", - "author_account_age_days": 5019 - }, - "https://github.com/ealkanat/comfyui-easy-padding": { - "stars": 17, - "last_update": "2024-12-31 02:38:22", - "author_account_age_days": 2679 - }, - "https://github.com/eastoc/ComfyUI_SemanticSAM": { - "stars": 5, - "last_update": "2024-08-13 19:24:33", - "author_account_age_days": 2933 - }, - "https://github.com/edelvarden/ComfyUI-ImageMetadataExtension": { - "stars": 15, - "last_update": "2025-01-18 01:01:11", - "author_account_age_days": 2349 - }, - "https://github.com/edenartlab/eden_comfy_pipelines": { - "stars": 73, - "last_update": "2024-12-20 10:50:09", - "author_account_age_days": 488 - }, - "https://github.com/edenartlab/sd-lora-trainer": { - "stars": 34, - "last_update": "2024-12-20 10:46:20", - "author_account_age_days": 488 - }, - "https://github.com/educator-art/ComfyUI-Load-DirectoryFiles": { - "stars": 4, - "last_update": "2024-10-11 17:31:45", - "author_account_age_days": 417 - }, - "https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes": { - "stars": 1, - "last_update": "2024-09-03 06:55:04", - "author_account_age_days": 2739 - }, - "https://github.com/envy-ai/ComfyUI-ConDelta": { - "stars": 174, - "last_update": "2024-12-10 19:10:11", - "author_account_age_days": 171 - }, - "https://github.com/erosDiffusion/ComfyUI-enricos-nodes": { - "stars": 360, - "last_update": "2024-12-19 09:17:18", - "author_account_age_days": 212 - }, - "https://github.com/evanspearman/ComfyMath": { - "stars": 101, - "last_update": "2024-09-02 17:24:27", - "author_account_age_days": 4454 - }, - "https://github.com/exdysa/comfyui-selector": { - "stars": 5, - "last_update": "2025-01-26 07:11:39", - "author_account_age_days": 1211 - }, - "https://github.com/exectails/comfyui-et_dynamicprompts": { - "stars": 3, - "last_update": "2024-11-29 22:37:19", - "author_account_age_days": 4133 - }, - "https://github.com/exectails/comfyui-et_infoutils": { - "stars": 3, - "last_update": "2024-11-29 17:27:49", - "author_account_age_days": 4133 - }, - "https://github.com/exectails/comfyui-et_stringutils": { - "stars": 1, - "last_update": "2024-11-26 20:26:14", - "author_account_age_days": 4133 - }, - "https://github.com/ez-af/ComfyUI-EZ-AF-Nodes": { - "stars": 2, - "last_update": "2024-10-02 07:38:18", - "author_account_age_days": 150 - }, - "https://github.com/fablestudio/ComfyUI-Showrunner-Utils": { - "stars": 1, - "last_update": "2024-11-16 21:13:22", - "author_account_age_days": 2264 - }, - "https://github.com/facok/ComfyUI-HunyuanVideoMultiLora": { - "stars": 82, - "last_update": "2025-01-09 18:16:21", - "author_account_age_days": 674 - }, - "https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo": { - "stars": 66, - "last_update": "2025-01-09 18:14:29", - "author_account_age_days": 674 - }, - "https://github.com/fairy-root/ComfyUI-GLHF": { - "stars": 4, - "last_update": "2024-12-27 14:24:36", - "author_account_age_days": 2150 - }, - "https://github.com/fairy-root/Flux-Prompt-Generator": { - "stars": 159, - "last_update": "2024-08-25 23:16:12", - "author_account_age_days": 2150 - }, - "https://github.com/fairy-root/comfyui-ollama-llms": { - "stars": 14, - "last_update": "2024-12-29 12:20:04", - "author_account_age_days": 2150 - }, - "https://github.com/fallingmeteorite/nsfw-image-check-comfyui": { - "stars": 3, - "last_update": "2025-01-23 16:12:47", - "author_account_age_days": 1304 - }, - "https://github.com/fashn-AI/ComfyUI-FASHN": { - "stars": 18, - "last_update": "2024-12-23 14:07:26", - "author_account_age_days": 571 - }, - "https://github.com/fblissjr/ComfyUI-EmbeddingPipelineAnalytics": { - "stars": 3, - "last_update": "2025-01-24 18:51:53", - "author_account_age_days": 3580 - }, - "https://github.com/fearnworks/ComfyUI_FearnworksNodes": { - "stars": 20, - "last_update": "2024-08-05 01:50:04", - "author_account_age_days": 777 - }, - "https://github.com/feixuetuba/Spleeter": { - "stars": 1, - "last_update": "2025-01-19 10:39:17", - "author_account_age_days": 4178 - }, - "https://github.com/fexli/fexli-util-node-comfyui": { - "stars": 3, - "last_update": "2024-05-22 21:27:36", - "author_account_age_days": 1774 - }, - "https://github.com/fexploit/ComfyUI-AutoLabel": { - "stars": 6, - "last_update": "2024-06-14 08:09:41", - "author_account_age_days": 5260 - }, - "https://github.com/fexploit/ComfyUI-AutoTrimBG": { - "stars": 3, - "last_update": "2024-05-24 20:38:15", - "author_account_age_days": 5260 - }, - "https://github.com/fexploit/ComfyUI-Classifier": { - "stars": 1, - "last_update": "2024-06-14 16:58:31", - "author_account_age_days": 5260 - }, - "https://github.com/filipemeneses/comfy_pixelization": { - "stars": 44, - "last_update": "2024-12-31 13:07:59", - "author_account_age_days": 3692 - }, - "https://github.com/filliptm/ComfyUI_FL-Trainer": { - "stars": 152, - "last_update": "2024-10-18 00:20:18", - "author_account_age_days": 1952 - }, - "https://github.com/filliptm/ComfyUI_Fill-Nodes": { - "stars": 334, - "last_update": "2025-01-24 09:45:15", - "author_account_age_days": 1952 - }, - "https://github.com/florestefano1975/ComfyUI-Advanced-Sequence-Seed": { - "stars": 2, - "last_update": "2024-09-23 06:07:49", - "author_account_age_days": 409 - }, - "https://github.com/florestefano1975/ComfyUI-CogVideoX": { - "stars": 13, - "last_update": "2024-10-23 09:10:03", - "author_account_age_days": 409 - }, - "https://github.com/florestefano1975/ComfyUI-HiDiffusion": { - "stars": 144, - "last_update": "2024-05-22 00:33:06", - "author_account_age_days": 409 - }, - "https://github.com/florestefano1975/ComfyUI-StabilityAI-Suite": { - "stars": 4, - "last_update": "2024-07-10 18:03:39", - "author_account_age_days": 409 - }, - "https://github.com/florestefano1975/comfyui-portrait-master": { - "stars": 969, - "last_update": "2024-11-19 12:32:15", - "author_account_age_days": 409 - }, - "https://github.com/florestefano1975/comfyui-prompt-composer": { - "stars": 253, - "last_update": "2024-10-03 14:30:34", - "author_account_age_days": 409 - }, - "https://github.com/flowtyone/ComfyUI-Flowty-CRM": { - "stars": 148, - "last_update": "2024-06-14 10:23:09", - "author_account_age_days": 489 - }, - "https://github.com/flowtyone/ComfyUI-Flowty-LDSR": { - "stars": 218, - "last_update": "2024-06-14 09:04:51", - "author_account_age_days": 489 - }, - "https://github.com/flowtyone/ComfyUI-Flowty-TripoSR": { - "stars": 468, - "last_update": "2024-06-16 00:53:22", - "author_account_age_days": 489 - }, - "https://github.com/flycarl/ComfyUI-Pixelate": { - "stars": 2, - "last_update": "2024-11-26 13:31:56", - "author_account_age_days": 5075 - }, - "https://github.com/flyingshutter/As_ComfyUI_CustomNodes": { - "stars": 8, - "last_update": "2024-05-22 18:07:19", - "author_account_age_days": 3711 - }, - "https://github.com/fmatray/ComfyUI_BattlemapGrid": { - "stars": 0, - "last_update": "2024-06-05 22:35:06", - "author_account_age_days": 3837 - }, - "https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler": { - "stars": 12, - "last_update": "2024-06-20 11:51:50", - "author_account_age_days": 5323 - }, - "https://github.com/fofr/ComfyUI-Prompter-fofrAI": { - "stars": 63, - "last_update": "2024-08-09 11:37:00", - "author_account_age_days": 5323 - }, - "https://github.com/fofr/comfyui-fofr-toolkit": { - "stars": 5, - "last_update": "2024-08-09 11:36:38", - "author_account_age_days": 5323 - }, - "https://github.com/forever22777/comfyui-self-guidance": { - "stars": 8, - "last_update": "2024-08-15 10:49:29", - "author_account_age_days": 540 - }, - "https://github.com/foxtrot-roger/comfyui-rf-nodes": { - "stars": 2, - "last_update": "2024-08-13 22:01:40", - "author_account_age_days": 2536 - }, - "https://github.com/frankchieng/ComfyUI_Aniportrait": { - "stars": 55, - "last_update": "2024-09-13 10:41:16", - "author_account_age_days": 656 - }, - "https://github.com/frankchieng/ComfyUI_MagicClothing": { - "stars": 541, - "last_update": "2024-09-04 04:57:15", - "author_account_age_days": 656 - }, - "https://github.com/frankchieng/ComfyUI_llm_easyanimiate": { - "stars": 12, - "last_update": "2024-06-26 03:13:32", - "author_account_age_days": 656 - }, - "https://github.com/freelifehacker/ComfyUI-ImgMask2PNG": { - "stars": 1, - "last_update": "2024-08-28 08:32:23", - "author_account_age_days": 2374 - }, - "https://github.com/fsdymy1024/ComfyUI_fsdymy": { - "stars": 10, - "last_update": "2024-07-01 17:58:52", - "author_account_age_days": 2421 - }, - "https://github.com/fssorc/ComfyUI_FFT": { - "stars": 11, - "last_update": "2024-09-30 01:27:21", - "author_account_age_days": 4803 - }, - "https://github.com/fssorc/ComfyUI_FaceShaper": { - "stars": 128, - "last_update": "2024-09-20 06:15:46", - "author_account_age_days": 4803 - }, - "https://github.com/fssorc/ComfyUI_RopeWrapper": { - "stars": 4, - "last_update": "2025-01-07 04:55:59", - "author_account_age_days": 4803 - }, - "https://github.com/fssorc/ComfyUI_pose_inter": { - "stars": 61, - "last_update": "2024-08-28 07:25:07", - "author_account_age_days": 4803 - }, - "https://github.com/fuselayer/comfyui-mosaic-blur": { - "stars": 1, - "last_update": "2025-01-17 23:46:42", - "author_account_age_days": 493 - }, - "https://github.com/gelasdev/ComfyUI-FLUX-BFL-API": { - "stars": 26, - "last_update": "2024-11-27 16:23:47", - "author_account_age_days": 2196 - }, - "https://github.com/gemell1/ComfyUI_GMIC": { - "stars": 8, - "last_update": "2024-05-22 21:28:51", - "author_account_age_days": 2172 - }, - "https://github.com/geocine/geocine-comfyui": { - "stars": 1, - "last_update": "2024-10-02 18:12:09", - "author_account_age_days": 5168 - }, - "https://github.com/ggarra13/ComfyUI-mrv2": { - "stars": 3, - "last_update": "2024-12-29 09:24:04", - "author_account_age_days": 4074 - }, - "https://github.com/ginlov/segment_to_mask_comfyui": { - "stars": 2, - "last_update": "2024-06-14 10:23:23", - "author_account_age_days": 2227 - }, - "https://github.com/giriss/comfy-image-saver": { - "stars": 218, - "last_update": "2024-05-22 20:40:55", - "author_account_age_days": 4454 - }, - "https://github.com/gisu/comfyui-foxpack": { - "stars": 3, - "last_update": "2024-08-20 06:43:22", - "author_account_age_days": 5215 - }, - "https://github.com/githubYiheng/ComfyUI_Change_IMAGE_BOREDER": { - "stars": 0, - "last_update": "2024-05-23 01:20:09", - "author_account_age_days": 4119 - }, - "https://github.com/githubYiheng/ComfyUI_GetFileNameFromURL": { - "stars": 0, - "last_update": "2024-05-23 01:19:47", - "author_account_age_days": 4119 - }, - "https://github.com/githubYiheng/comfyui_kmeans_filter": { - "stars": 0, - "last_update": "2024-06-14 09:01:24", - "author_account_age_days": 4119 - }, - "https://github.com/githubYiheng/comfyui_meanshift_filter": { - "stars": 0, - "last_update": "2024-06-14 10:59:43", - "author_account_age_days": 4119 - }, - "https://github.com/githubYiheng/comfyui_private_postprocessor": { - "stars": 1, - "last_update": "2024-06-14 08:09:39", - "author_account_age_days": 4119 - }, - "https://github.com/glibsonoran/Plush-for-ComfyUI": { - "stars": 158, - "last_update": "2025-01-21 17:23:08", - "author_account_age_days": 2713 - }, - "https://github.com/glifxyz/ComfyUI-GlifNodes": { - "stars": 50, - "last_update": "2024-11-25 12:37:14", - "author_account_age_days": 789 - }, - "https://github.com/glowcone/comfyui-base64-to-image": { - "stars": 13, - "last_update": "2024-07-08 22:53:25", - "author_account_age_days": 3961 - }, - "https://github.com/glowcone/comfyui-string-converter": { - "stars": 2, - "last_update": "2024-07-31 13:40:48", - "author_account_age_days": 3961 - }, - "https://github.com/goburiin/nsfwrecog-comfyui": { - "stars": 1, - "last_update": "2024-08-14 02:17:15", - "author_account_age_days": 169 - }, - "https://github.com/godmt/ComfyUI-List-Utils": { - "stars": 7, - "last_update": "2024-11-13 14:48:56", - "author_account_age_days": 1945 - }, - "https://github.com/godspede/ComfyUI_Substring": { - "stars": 1, - "last_update": "2024-09-24 17:18:16", - "author_account_age_days": 3329 - }, - "https://github.com/gokayfem/ComfyUI-Depth-Visualization": { - "stars": 59, - "last_update": "2024-10-31 23:50:57", - "author_account_age_days": 1273 - }, - "https://github.com/gokayfem/ComfyUI-Dream-Interpreter": { - "stars": 78, - "last_update": "2024-07-31 16:11:04", - "author_account_age_days": 1273 - }, - "https://github.com/gokayfem/ComfyUI-Texture-Simple": { - "stars": 45, - "last_update": "2024-07-31 16:14:23", - "author_account_age_days": 1273 - }, - "https://github.com/gokayfem/ComfyUI_VLM_nodes": { - "stars": 454, - "last_update": "2024-11-06 15:53:28", - "author_account_age_days": 1273 - }, - "https://github.com/gonzalu/ComfyUI_YFG_Comical": { - "stars": 24, - "last_update": "2024-07-31 15:02:48", - "author_account_age_days": 2677 - }, - "https://github.com/googincheng/ComfyUX": { - "stars": 149, - "last_update": "2024-08-22 09:47:17", - "author_account_age_days": 3004 - }, - "https://github.com/gorillaframeai/GF_nodes": { - "stars": 20, - "last_update": "2024-11-21 17:50:46", - "author_account_age_days": 449 - }, - "https://github.com/gremlation/ComfyUI-ImageLabel": { - "stars": 3, - "last_update": "2025-01-10 11:12:14", - "author_account_age_days": 39 - }, - "https://github.com/gremlation/ComfyUI-JMESPath": { - "stars": 2, - "last_update": "2025-01-10 11:08:58", - "author_account_age_days": 39 - }, - "https://github.com/gremlation/ComfyUI-TrackAndWheel": { - "stars": 2, - "last_update": "2025-01-10 11:13:34", - "author_account_age_days": 39 - }, - "https://github.com/gremlation/ComfyUI-ViewData": { - "stars": 2, - "last_update": "2025-01-10 11:04:48", - "author_account_age_days": 39 - }, - "https://github.com/gremlation/ComfyUI-jq": { - "stars": 2, - "last_update": "2025-01-10 11:10:59", - "author_account_age_days": 39 - }, - "https://github.com/griptape-ai/ComfyUI-Griptape": { - "stars": 152, - "last_update": "2025-01-26 03:56:20", - "author_account_age_days": 736 - }, - "https://github.com/gseth/ControlAltAI-Nodes": { - "stars": 78, - "last_update": "2025-01-17 02:23:50", - "author_account_age_days": 4062 - }, - "https://github.com/gt732/ComfyUI-DreamWaltz-G": { - "stars": 3, - "last_update": "2024-10-27 03:15:13", - "author_account_age_days": 1371 - }, - "https://github.com/guill/abracadabra-comfyui": { - "stars": 2, - "last_update": "2024-12-23 09:46:10", - "author_account_age_days": 4409 - }, - "https://github.com/guyaton/guy-nodes-comfyui": { - "stars": 1, - "last_update": "2024-10-02 13:15:26", - "author_account_age_days": 117 - }, - "https://github.com/hackkhai/ComfyUI-Image-Matting": { - "stars": 15, - "last_update": "2024-07-31 15:02:56", - "author_account_age_days": 2066 - }, - "https://github.com/hanoixan/ComfyUI-DataBeast": { - "stars": 2, - "last_update": "2024-11-05 17:47:30", - "author_account_age_days": 5053 - }, - "https://github.com/haohaocreates/ComfyUI-HH-Image-Selector": { - "stars": 0, - "last_update": "2024-07-28 21:08:27", - "author_account_age_days": 321 - }, - "https://github.com/hay86/ComfyUI_DDColor": { - "stars": 7, - "last_update": "2024-06-14 08:12:13", - "author_account_age_days": 4883 - }, - "https://github.com/hay86/ComfyUI_Dreamtalk": { - "stars": 11, - "last_update": "2024-08-15 03:37:37", - "author_account_age_days": 4883 - }, - "https://github.com/hay86/ComfyUI_Hallo": { - "stars": 21, - "last_update": "2024-07-30 09:55:03", - "author_account_age_days": 4883 - }, - "https://github.com/hay86/ComfyUI_LatentSync": { - "stars": 9, - "last_update": "2025-01-06 07:47:40", - "author_account_age_days": 4883 - }, - "https://github.com/hay86/ComfyUI_MiniCPM-V": { - "stars": 37, - "last_update": "2024-08-09 07:52:59", - "author_account_age_days": 4883 - }, - "https://github.com/hay86/ComfyUI_OpenVoice": { - "stars": 14, - "last_update": "2024-07-02 08:16:20", - "author_account_age_days": 4883 - }, - "https://github.com/hayden-fr/ComfyUI-Image-Browsing": { - "stars": 13, - "last_update": "2025-01-24 06:14:25", - "author_account_age_days": 2153 - }, - "https://github.com/hayden-fr/ComfyUI-Model-Manager": { - "stars": 87, - "last_update": "2025-01-16 02:28:07", - "author_account_age_days": 2153 - }, - "https://github.com/hben35096/ComfyUI-ReplenishNodes": { - "stars": 3, - "last_update": "2024-11-03 20:04:38", - "author_account_age_days": 563 - }, - "https://github.com/hben35096/ComfyUI-ToolBox": { - "stars": 7, - "last_update": "2024-09-02 14:49:43", - "author_account_age_days": 563 - }, - "https://github.com/heshengtao/comfyui_LLM_party": { - "stars": 1251, - "last_update": "2025-01-24 11:59:27", - "author_account_age_days": 3111 - }, - "https://github.com/heshengtao/comfyui_LLM_schools": { - "stars": 9, - "last_update": "2024-08-24 15:08:14", - "author_account_age_days": 3111 - }, - "https://github.com/hhhzzyang/Comfyui_Lama": { - "stars": 49, - "last_update": "2024-05-22 21:13:19", - "author_account_age_days": 723 - }, - "https://github.com/hieuck/ComfyUI-BiRefNet": { - "stars": 0, - "last_update": "2024-12-04 16:20:00", - "author_account_age_days": 2740 - }, - "https://github.com/hiforce/comfyui-hiforce-plugin": { - "stars": 6, - "last_update": "2024-06-14 08:13:24", - "author_account_age_days": 2018 - }, - "https://github.com/hinablue/ComfyUI_3dPoseEditor": { - "stars": 176, - "last_update": "2024-06-21 17:38:40", - "author_account_age_days": 5327 - }, - "https://github.com/hmwl/ComfyUI_zip": { - "stars": 2, - "last_update": "2025-01-19 15:39:11", - "author_account_age_days": 2830 - }, - "https://github.com/hodanajan/optimal-crop-resolution": { - "stars": 2, - "last_update": "2025-01-21 10:46:26", - "author_account_age_days": 2545 - }, - "https://github.com/holchan/ComfyUI-ModelDownloader": { - "stars": 4, - "last_update": "2024-06-14 08:59:42", - "author_account_age_days": 1807 - }, - "https://github.com/hoveychen/ComfyUI-MusePose-Remaster": { - "stars": 4, - "last_update": "2024-10-22 09:40:04", - "author_account_age_days": 4859 - }, - "https://github.com/huagetai/ComfyUI-Gaffer": { - "stars": 47, - "last_update": "2024-06-19 00:58:38", - "author_account_age_days": 4848 - }, - "https://github.com/huagetai/ComfyUI_LightGradient": { - "stars": 9, - "last_update": "2024-05-23 01:21:27", - "author_account_age_days": 4848 - }, - "https://github.com/huanngzh/ComfyUI-MVAdapter": { - "stars": 259, - "last_update": "2025-01-17 06:30:57", - "author_account_age_days": 1454 - }, - "https://github.com/huchenlei/ComfyUI-IC-Light-Native": { - "stars": 573, - "last_update": "2024-12-31 17:59:41", - "author_account_age_days": 3091 - }, - "https://github.com/huchenlei/ComfyUI-layerdiffuse": { - "stars": 1567, - "last_update": "2025-01-05 19:53:01", - "author_account_age_days": 3091 - }, - "https://github.com/huchenlei/ComfyUI-openpose-editor": { - "stars": 67, - "last_update": "2024-07-31 13:44:16", - "author_account_age_days": 3091 - }, - "https://github.com/huchenlei/ComfyUI_DanTagGen": { - "stars": 62, - "last_update": "2024-08-01 01:42:14", - "author_account_age_days": 3091 - }, - "https://github.com/huchenlei/ComfyUI_densediffusion": { - "stars": 124, - "last_update": "2024-12-26 17:46:42", - "author_account_age_days": 3091 - }, - "https://github.com/huchenlei/ComfyUI_omost": { - "stars": 427, - "last_update": "2024-08-04 18:51:27", - "author_account_age_days": 3091 - }, - "https://github.com/hughescr/ComfyUI-OpenPose-Keypoint-Extractor": { - "stars": 27, - "last_update": "2024-09-26 21:14:35", - "author_account_age_days": 5856 - }, - "https://github.com/huixingyun/ComfyUI-HX-Captioner": { - "stars": 1, - "last_update": "2025-01-25 06:48:18", - "author_account_age_days": 51 - }, - "https://github.com/humgate/simplecomfy": { - "stars": 0, - "last_update": "2024-06-14 08:58:21", - "author_account_age_days": 1582 - }, - "https://github.com/hustille/ComfyUI_Fooocus_KSampler": { - "stars": 60, - "last_update": "2024-05-22 20:39:48", - "author_account_age_days": 655 - }, - "https://github.com/hustille/ComfyUI_hus_utils": { - "stars": 5, - "last_update": "2024-05-22 20:39:34", - "author_account_age_days": 655 - }, - "https://github.com/hwhaocool/ComfyUI-Select-Any": { - "stars": 3, - "last_update": "2024-07-31 13:52:47", - "author_account_age_days": 3104 - }, - "https://github.com/hylarucoder/comfyui-copilot": { - "stars": 18, - "last_update": "2024-06-28 04:43:18", - "author_account_age_days": 4129 - }, - "https://github.com/hyunamy/comfy-ui-on-complete-email-me": { - "stars": 2, - "last_update": "2025-01-18 19:19:06", - "author_account_age_days": 3326 - }, - "https://github.com/iFREEGROUP/comfyui-undistort": { - "stars": 2, - "last_update": "2024-06-14 08:59:52", - "author_account_age_days": 1772 - }, - "https://github.com/iamandeepsandhu/ComfyUI-NSFW-Check": { - "stars": 11, - "last_update": "2024-11-26 07:32:18", - "author_account_age_days": 2421 - }, - "https://github.com/icesun963/ComfyUI_HFDownLoad": { - "stars": 0, - "last_update": "2024-07-18 12:13:23", - "author_account_age_days": 4321 - }, - "https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words": { - "stars": 162, - "last_update": "2025-01-16 08:38:21", - "author_account_age_days": 3265 - }, - "https://github.com/iemesowum/ComfyUI_IsaacNodes": { - "stars": 2, - "last_update": "2024-08-22 17:23:13", - "author_account_age_days": 5507 - }, - "https://github.com/if-ai/ComfyUI-IF_AI_HFDownloaderNode": { - "stars": 17, - "last_update": "2024-12-29 11:09:57", - "author_account_age_days": 3078 - }, - "https://github.com/if-ai/ComfyUI-IF_AI_WishperSpeechNode": { - "stars": 42, - "last_update": "2024-10-01 08:47:47", - "author_account_age_days": 3078 - }, - "https://github.com/if-ai/ComfyUI-IF_AI_tools": { - "stars": 589, - "last_update": "2025-01-03 10:36:18", - "author_account_age_days": 3078 - }, - "https://github.com/if-ai/ComfyUI-IF_MemoAvatar": { - "stars": 140, - "last_update": "2024-12-18 22:34:21", - "author_account_age_days": 3078 - }, - "https://github.com/if-ai/ComfyUI-IF_Trellis": { - "stars": 356, - "last_update": "2025-01-26 08:49:30", - "author_account_age_days": 3078 - }, - "https://github.com/ihmily/ComfyUI-Light-Tool": { - "stars": 9, - "last_update": "2025-01-20 08:21:04", - "author_account_age_days": 845 - }, - "https://github.com/imb101/ComfyUI-FaceSwap": { - "stars": 31, - "last_update": "2024-05-22 18:22:29", - "author_account_age_days": 1104 - }, - "https://github.com/inflamously/comfyui-prompt-enhancer": { - "stars": 1, - "last_update": "2025-01-23 21:53:36", - "author_account_age_days": 3996 - }, - "https://github.com/injet-zhou/comfyui_extra_api": { - "stars": 6, - "last_update": "2024-12-31 01:53:17", - "author_account_age_days": 2443 - }, - "https://github.com/inventorado/ComfyUI_NNT": { - "stars": 53, - "last_update": "2025-01-08 17:22:46", - "author_account_age_days": 3101 - }, - "https://github.com/iwanders/ComfyUI_nodes": { - "stars": 1, - "last_update": "2024-07-11 01:06:26", - "author_account_age_days": 4642 - }, - "https://github.com/jacklukai/ComfyUI_DeployCash": { - "stars": 1, - "last_update": "2024-12-02 03:49:49", - "author_account_age_days": 198 - }, - "https://github.com/jags111/ComfyUI_Jags_Audiotools": { - "stars": 64, - "last_update": "2024-08-01 05:37:19", - "author_account_age_days": 4086 - }, - "https://github.com/jags111/ComfyUI_Jags_VectorMagic": { - "stars": 74, - "last_update": "2024-10-16 07:22:46", - "author_account_age_days": 4086 - }, - "https://github.com/jags111/efficiency-nodes-comfyui": { - "stars": 1091, - "last_update": "2024-08-26 04:49:54", - "author_account_age_days": 4086 - }, - "https://github.com/jakechai/ComfyUI-JakeUpgrade": { - "stars": 52, - "last_update": "2025-01-12 08:47:21", - "author_account_age_days": 1787 - }, - "https://github.com/jamal-alkharrat/ComfyUI_rotate_image": { - "stars": 0, - "last_update": "2024-05-22 23:19:02", - "author_account_age_days": 1192 - }, - "https://github.com/jamesWalker55/comfyui-p2ldgan": { - "stars": 17, - "last_update": "2024-05-22 18:19:04", - "author_account_age_days": 2743 - }, - "https://github.com/jamesWalker55/comfyui-various": { - "stars": 72, - "last_update": "2024-09-19 04:58:35", - "author_account_age_days": 2743 - }, - "https://github.com/jammyfu/ComfyUI_PaintingCoderUtils": { - "stars": 12, - "last_update": "2025-01-25 15:05:45", - "author_account_age_days": 4694 - }, - "https://github.com/jax-explorer/comfyui-model-dynamic-loader": { - "stars": 2, - "last_update": "2025-01-19 12:20:01", - "author_account_age_days": 792 - }, - "https://github.com/jax-explorer/fast_video_comfyui": { - "stars": 0, - "last_update": "2024-05-23 01:17:35", - "author_account_age_days": 792 - }, - "https://github.com/jeffrey2212/ComfyUI-PonyCharacterPrompt": { - "stars": 3, - "last_update": "2024-10-26 05:38:07", - "author_account_age_days": 4687 - }, - "https://github.com/jeffy5/comfyui-faceless-node": { - "stars": 40, - "last_update": "2024-07-29 08:00:20", - "author_account_age_days": 3146 - }, - "https://github.com/jerrylongyan/ComfyUI-My-Mask": { - "stars": 2, - "last_update": "2025-01-08 08:39:19", - "author_account_age_days": 4147 - }, - "https://github.com/jesenzhang/ComfyUI_StreamDiffusion": { - "stars": 136, - "last_update": "2024-11-19 01:16:54", - "author_account_age_days": 3867 - }, - "https://github.com/jhj0517/ComfyUI-Moondream-Gaze-Detection": { - "stars": 48, - "last_update": "2025-01-14 19:47:48", - "author_account_age_days": 1115 - }, - "https://github.com/jhj0517/ComfyUI-jhj-Kokoro-Onnx": { - "stars": 2, - "last_update": "2025-01-24 16:05:37", - "author_account_age_days": 1115 - }, - "https://github.com/jianzhichun/ComfyUI-Easyai": { - "stars": 11, - "last_update": "2024-10-27 03:29:53", - "author_account_age_days": 3253 - }, - "https://github.com/jiaqianjing/ComfyUI-MidjourneyHub": { - "stars": 7, - "last_update": "2024-12-13 03:03:41", - "author_account_age_days": 3345 - }, - "https://github.com/jiaxiangc/ComfyUI-ResAdapter": { - "stars": 292, - "last_update": "2024-05-23 00:22:23", - "author_account_age_days": 1502 - }, - "https://github.com/jitcoder/lora-info": { - "stars": 75, - "last_update": "2024-09-08 19:14:17", - "author_account_age_days": 4256 - }, - "https://github.com/jjkramhoeft/ComfyUI-Jjk-Nodes": { - "stars": 11, - "last_update": "2024-05-22 20:44:56", - "author_account_age_days": 3865 - }, - "https://github.com/jkrauss82/ultools-comfyui": { - "stars": 6, - "last_update": "2025-01-20 20:47:49", - "author_account_age_days": 4427 - }, - "https://github.com/jmkl/ComfyUI-ricing": { - "stars": 11, - "last_update": "2024-10-16 15:38:08", - "author_account_age_days": 4813 - }, - "https://github.com/jn-jairo/jn_comfyui": { - "stars": 5, - "last_update": "2024-08-16 18:09:12", - "author_account_age_days": 4200 - }, - "https://github.com/jnxmx/ComfyUI_HuggingFace_Downloader": { - "stars": 2, - "last_update": "2025-01-16 10:38:43", - "author_account_age_days": 554 - }, - "https://github.com/john-mnz/ComfyUI-Inspyrenet-Rembg": { - "stars": 428, - "last_update": "2024-07-31 13:54:32", - "author_account_age_days": 423 - }, - "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative": { - "stars": 130, - "last_update": "2024-08-02 08:23:26", - "author_account_age_days": 5014 - }, - "https://github.com/jordoh/ComfyUI-Deepface": { - "stars": 22, - "last_update": "2024-08-04 18:18:05", - "author_account_age_days": 5209 - }, - "https://github.com/jroc22/ComfyUI-CSV-prompt-builder": { - "stars": 7, - "last_update": "2024-08-01 19:39:30", - "author_account_age_days": 905 - }, - "https://github.com/jstit/comfyui_custom_node_image": { - "stars": 1, - "last_update": "2024-08-27 05:10:12", - "author_account_age_days": 2080 - }, - "https://github.com/jtrue/ComfyUI-JaRue": { - "stars": 7, - "last_update": "2024-06-14 09:01:12", - "author_account_age_days": 4145 - }, - "https://github.com/jtydhr88/ComfyUI-Hunyuan3D-1-wrapper": { - "stars": 21, - "last_update": "2024-11-13 11:50:46", - "author_account_age_days": 4969 - }, - "https://github.com/jtydhr88/ComfyUI-LayerDivider": { - "stars": 68, - "last_update": "2024-07-06 01:43:45", - "author_account_age_days": 4969 - }, - "https://github.com/jtydhr88/ComfyUI-Workflow-Encrypt": { - "stars": 29, - "last_update": "2024-07-31 13:45:53", - "author_account_age_days": 4969 - }, - "https://github.com/juehackr/comfyui_fk_server": { - "stars": 210, - "last_update": "2025-01-09 09:23:46", - "author_account_age_days": 1328 - }, - "https://github.com/jurdnisglobby/ComfyUI-Jurdns-Groq-Node": { - "stars": 2, - "last_update": "2025-01-18 06:20:23", - "author_account_age_days": 127 - }, - "https://github.com/justUmen/Bjornulf_custom_nodes": { - "stars": 94, - "last_update": "2025-01-25 18:45:47", - "author_account_age_days": 3005 - }, - "https://github.com/k-komarov/comfyui-bunny-cdn-storage": { - "stars": 1, - "last_update": "2024-08-31 20:59:08", - "author_account_age_days": 3690 - }, - "https://github.com/ka-puna/comfyui-yanc": { - "stars": 7, - "last_update": "2024-07-18 04:28:44", - "author_account_age_days": 2423 - }, - "https://github.com/kaanyalova/ComfyUI_ExtendedImageFormats": { - "stars": 6, - "last_update": "2025-01-25 10:57:38", - "author_account_age_days": 1482 - }, - "https://github.com/kadirnar/ComfyUI-Transformers": { - "stars": 22, - "last_update": "2024-06-22 22:44:39", - "author_account_age_days": 2545 - }, - "https://github.com/kadirnar/ComfyUI-YOLO": { - "stars": 53, - "last_update": "2024-11-29 15:22:15", - "author_account_age_days": 2545 - }, - "https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl": { - "stars": 408, - "last_update": "2024-11-24 20:25:04", - "author_account_age_days": 4897 - }, - "https://github.com/kale4eat/ComfyUI-path-util": { - "stars": 0, - "last_update": "2024-05-25 05:44:11", - "author_account_age_days": 1828 - }, - "https://github.com/kale4eat/ComfyUI-speech-dataset-toolkit": { - "stars": 16, - "last_update": "2025-01-21 10:05:26", - "author_account_age_days": 1828 - }, - "https://github.com/kale4eat/ComfyUI-string-util": { - "stars": 2, - "last_update": "2024-05-23 00:24:40", - "author_account_age_days": 1828 - }, - "https://github.com/kale4eat/ComfyUI-text-file-util": { - "stars": 0, - "last_update": "2024-05-23 00:24:51", - "author_account_age_days": 1828 - }, - "https://github.com/kappa54m/ComfyUI_Usability": { - "stars": 1, - "last_update": "2024-08-08 15:31:47", - "author_account_age_days": 1726 - }, - "https://github.com/kasukanra/ComfyUI_StringToHex": { - "stars": 2, - "last_update": "2024-08-20 04:52:06", - "author_account_age_days": 2877 - }, - "https://github.com/katalist-ai/comfyUI-nsfw-detection": { - "stars": 1, - "last_update": "2024-05-23 01:23:32", - "author_account_age_days": 969 - }, - "https://github.com/kazeyori/ComfyUI-QuickImageSequenceProcess": { - "stars": 1, - "last_update": "2024-12-24 16:48:11", - "author_account_age_days": 943 - }, - "https://github.com/kealiu/ComfyUI-S3-Tools": { - "stars": 7, - "last_update": "2024-07-04 10:13:07", - "author_account_age_days": 4344 - }, - "https://github.com/kealiu/ComfyUI-Zero123-Porting": { - "stars": 21, - "last_update": "2024-08-22 07:07:57", - "author_account_age_days": 4344 - }, - "https://github.com/kealiu/ComfyUI-ZeroShot-MTrans": { - "stars": 165, - "last_update": "2024-07-04 10:12:32", - "author_account_age_days": 4344 - }, - "https://github.com/kenjiqq/qq-nodes-comfyui": { - "stars": 42, - "last_update": "2024-10-01 19:14:55", - "author_account_age_days": 5105 - }, - "https://github.com/kevinmcmahondev/comfyui-skin-tone-detector": { - "stars": 3, - "last_update": "2024-12-22 06:44:20", - "author_account_age_days": 969 - }, - "https://github.com/kft334/Knodes": { - "stars": 3, - "last_update": "2024-06-14 08:12:06", - "author_account_age_days": 1175 - }, - "https://github.com/kijai/ComfyUI-ADMotionDirector": { - "stars": 172, - "last_update": "2024-11-07 07:20:23", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-APISR-KJ": { - "stars": 62, - "last_update": "2024-05-21 16:30:21", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-BrushNet-Wrapper": { - "stars": 136, - "last_update": "2024-06-20 12:15:16", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-CCSR": { - "stars": 201, - "last_update": "2024-06-28 11:13:33", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-CogVideoXWrapper": { - "stars": 1319, - "last_update": "2025-01-23 09:18:57", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-ControlNeXt-SVD": { - "stars": 170, - "last_update": "2024-08-15 08:26:15", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-DDColor": { - "stars": 130, - "last_update": "2024-05-21 16:04:26", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-DepthAnythingV2": { - "stars": 236, - "last_update": "2024-10-21 11:43:57", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-DiffusionLight": { - "stars": 64, - "last_update": "2024-05-21 16:16:52", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-DynamiCrafterWrapper": { - "stars": 646, - "last_update": "2024-08-15 21:17:07", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-ELLA-wrapper": { - "stars": 111, - "last_update": "2024-05-21 16:47:28", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-Florence2": { - "stars": 904, - "last_update": "2025-01-12 17:55:46", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-FluxTrainer": { - "stars": 643, - "last_update": "2025-01-19 15:57:36", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-GIMM-VFI": { - "stars": 199, - "last_update": "2024-11-19 14:31:22", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-Geowizard": { - "stars": 105, - "last_update": "2024-12-16 19:33:54", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-HunyuanVideoWrapper": { - "stars": 1645, - "last_update": "2025-01-25 18:22:01", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-IC-Light": { - "stars": 878, - "last_update": "2025-01-23 16:59:43", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-KJNodes": { - "stars": 805, - "last_update": "2025-01-18 22:52:27", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-KwaiKolorsWrapper": { - "stars": 574, - "last_update": "2024-10-18 08:47:45", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-LLaVA-OneVision": { - "stars": 83, - "last_update": "2024-08-25 14:04:22", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-LVCDWrapper": { - "stars": 57, - "last_update": "2024-09-30 11:49:12", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-LaVi-Bridge-Wrapper": { - "stars": 21, - "last_update": "2024-05-21 16:41:18", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-LivePortraitKJ": { - "stars": 1786, - "last_update": "2024-08-05 21:39:49", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-Lotus": { - "stars": 101, - "last_update": "2024-10-13 12:33:24", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-LuminaWrapper": { - "stars": 186, - "last_update": "2024-07-31 13:52:06", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-Marigold": { - "stars": 494, - "last_update": "2024-11-02 17:51:42", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-MimicMotionWrapper": { - "stars": 395, - "last_update": "2025-01-12 17:34:34", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-MoGe": { - "stars": 35, - "last_update": "2024-11-03 21:28:03", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-OpenDiTWrapper": { - "stars": 42, - "last_update": "2024-07-03 14:59:13", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-PyramidFlowWrapper": { - "stars": 347, - "last_update": "2024-11-15 13:28:18", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-SUPIR": { - "stars": 1720, - "last_update": "2024-08-01 23:03:53", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-SVD": { - "stars": 161, - "last_update": "2024-05-22 21:09:54", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-depth-fm": { - "stars": 70, - "last_update": "2024-05-22 21:10:15", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-moondream": { - "stars": 99, - "last_update": "2024-08-12 16:30:11", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-segment-anything-2": { - "stars": 739, - "last_update": "2024-10-03 18:41:02", - "author_account_age_days": 2398 - }, - "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": { - "stars": 12, - "last_update": "2025-01-08 12:50:40", - "author_account_age_days": 72 - }, - "https://github.com/kinfolk0117/ComfyUI_GradientDeepShrink": { - "stars": 25, - "last_update": "2024-05-22 21:25:13", - "author_account_age_days": 684 - }, - "https://github.com/kinfolk0117/ComfyUI_GridSwapper": { - "stars": 28, - "last_update": "2024-10-27 09:04:20", - "author_account_age_days": 684 - }, - "https://github.com/kinfolk0117/ComfyUI_Pilgram": { - "stars": 7, - "last_update": "2024-05-22 21:25:24", - "author_account_age_days": 684 - }, - "https://github.com/kinfolk0117/ComfyUI_SimpleTiles": { - "stars": 49, - "last_update": "2024-05-22 21:25:01", - "author_account_age_days": 684 - }, - "https://github.com/kk8bit/KayTool": { - "stars": 10, - "last_update": "2025-01-18 20:16:29", - "author_account_age_days": 572 - }, - "https://github.com/klinter007/klinter_nodes": { - "stars": 18, - "last_update": "2025-01-14 13:56:37", - "author_account_age_days": 641 - }, - "https://github.com/knuknX/ComfyUI-Image-Tools": { - "stars": 3, - "last_update": "2024-06-14 09:05:58", - "author_account_age_days": 416 - }, - "https://github.com/kohya-ss/ControlNet-LLLite-ComfyUI": { - "stars": 179, - "last_update": "2024-05-22 20:44:44", - "author_account_age_days": 2025 - }, - "https://github.com/komojini/ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes": { - "stars": 3, - "last_update": "2024-05-22 21:34:27", - "author_account_age_days": 799 - }, - "https://github.com/komojini/komojini-comfyui-nodes": { - "stars": 71, - "last_update": "2024-05-22 21:34:39", - "author_account_age_days": 799 - }, - "https://github.com/kostenickj/jk-comfyui-helpers": { - "stars": 4, - "last_update": "2024-12-19 10:22:42", - "author_account_age_days": 3265 - }, - "https://github.com/kraglik/prompt_collapse": { - "stars": 6, - "last_update": "2024-12-15 08:39:51", - "author_account_age_days": 2673 - }, - "https://github.com/kunieone/ComfyUI_alkaid": { - "stars": 0, - "last_update": "2024-05-23 01:10:21", - "author_account_age_days": 2735 - }, - "https://github.com/kwaroran/abg-comfyui": { - "stars": 23, - "last_update": "2024-05-22 18:19:51", - "author_account_age_days": 823 - }, - "https://github.com/kycg/comfyui-Lora-auto-downloader": { - "stars": 1, - "last_update": "2024-11-08 19:57:23", - "author_account_age_days": 1156 - }, - "https://github.com/l-comm/WatermarkRemoval": { - "stars": 2, - "last_update": "2025-01-13 05:33:32", - "author_account_age_days": 27 - }, - "https://github.com/l1yongch1/ComfyUI_PhiCaption": { - "stars": 1, - "last_update": "2024-10-10 07:28:29", - "author_account_age_days": 992 - }, - "https://github.com/l20richo/ComfyUI-Azure-Blob-Storage": { - "stars": 2, - "last_update": "2024-06-22 16:53:47", - "author_account_age_days": 1383 - }, - "https://github.com/laksjdjf/Batch-Condition-ComfyUI": { - "stars": 6, - "last_update": "2024-05-22 20:42:42", - "author_account_age_days": 3047 - }, - "https://github.com/laksjdjf/LCMSampler-ComfyUI": { - "stars": 15, - "last_update": "2024-05-22 20:42:17", - "author_account_age_days": 3047 - }, - "https://github.com/laksjdjf/LoRTnoC-ComfyUI": { - "stars": 13, - "last_update": "2024-05-22 20:42:29", - "author_account_age_days": 3047 - }, - "https://github.com/laksjdjf/cd-tuner_negpip-ComfyUI": { - "stars": 22, - "last_update": "2024-05-22 20:42:04", - "author_account_age_days": 3047 - }, - "https://github.com/laksjdjf/cgem156-ComfyUI": { - "stars": 53, - "last_update": "2024-09-12 12:07:30", - "author_account_age_days": 3047 - }, - "https://github.com/laksjdjf/pfg-ComfyUI": { - "stars": 12, - "last_update": "2024-05-22 20:41:41", - "author_account_age_days": 3047 - }, - "https://github.com/larsupb/LoRA-Merger-ComfyUI": { - "stars": 33, - "last_update": "2024-10-24 11:28:08", - "author_account_age_days": 3291 - }, - "https://github.com/latenightlabs/ComfyUI-LNL": { - "stars": 23, - "last_update": "2024-10-07 20:09:43", - "author_account_age_days": 366 - }, - "https://github.com/lazniak/Head-Orientation-Node-for-ComfyUI---by-PabloGFX": { - "stars": 9, - "last_update": "2024-09-25 15:02:14", - "author_account_age_days": 2497 - }, - "https://github.com/lazniak/LiquidTime-Interpolation": { - "stars": 7, - "last_update": "2024-11-14 18:11:23", - "author_account_age_days": 2497 - }, - "https://github.com/lazniak/comfyui-google-photos-loader": { - "stars": 4, - "last_update": "2024-09-26 16:32:32", - "author_account_age_days": 2497 - }, - "https://github.com/leeguandong/ComfyUI_CompareModelWeights": { - "stars": 4, - "last_update": "2025-01-09 02:43:41", - "author_account_age_days": 3010 - }, - "https://github.com/leeguandong/ComfyUI_CrossImageAttention": { - "stars": 4, - "last_update": "2024-08-16 11:59:42", - "author_account_age_days": 3010 - }, - "https://github.com/leeguandong/ComfyUI_FluxCustomId": { - "stars": 7, - "last_update": "2025-01-06 01:12:44", - "author_account_age_days": 3010 - }, - "https://github.com/leeguandong/ComfyUI_InternVL2": { - "stars": 14, - "last_update": "2024-08-10 11:00:11", - "author_account_age_days": 3010 - }, - "https://github.com/leeguandong/ComfyUI_LLaSM": { - "stars": 4, - "last_update": "2024-08-10 10:58:17", - "author_account_age_days": 3010 - }, - "https://github.com/leeguandong/ComfyUI_M3Net": { - "stars": 10, - "last_update": "2024-08-16 00:03:21", - "author_account_age_days": 3010 - }, - "https://github.com/leeguandong/ComfyUI_MasaCtrl": { - "stars": 4, - "last_update": "2024-09-01 03:47:35", - "author_account_age_days": 3010 - }, - "https://github.com/leeguandong/ComfyUI_Style_Aligned": { - "stars": 4, - "last_update": "2024-08-16 11:59:33", - "author_account_age_days": 3010 - }, - "https://github.com/leeguandong/ComfyUI_VideoEditing": { - "stars": 3, - "last_update": "2024-08-14 16:59:49", - "author_account_age_days": 3010 - }, - "https://github.com/leeguandong/ComfyUI_VisualAttentionMap": { - "stars": 8, - "last_update": "2024-08-26 05:15:14", - "author_account_age_days": 3010 - }, - "https://github.com/leestuartx/ComfyUI-GG": { - "stars": 3, - "last_update": "2024-07-23 04:13:09", - "author_account_age_days": 3994 - }, - "https://github.com/lenskikh/ComfyUI-Prompt-Worker": { - "stars": 11, - "last_update": "2025-01-08 04:10:35", - "author_account_age_days": 3712 - }, - "https://github.com/leoleelxh/ComfyUI-LLMs": { - "stars": 35, - "last_update": "2024-12-11 05:09:29", - "author_account_age_days": 4291 - }, - "https://github.com/lgldlk/ComfyUI-PC-ding-dong": { - "stars": 55, - "last_update": "2024-12-27 03:25:38", - "author_account_age_days": 1906 - }, - "https://github.com/liangt/comfyui-loadimagewithsubfolder": { - "stars": 3, - "last_update": "2024-07-28 08:23:11", - "author_account_age_days": 4274 - }, - "https://github.com/licyk/ComfyUI-HakuImg": { - "stars": 6, - "last_update": "2024-12-31 14:25:36", - "author_account_age_days": 1484 - }, - "https://github.com/licyk/ComfyUI-Restart-Sampler": { - "stars": 9, - "last_update": "2024-10-23 10:13:08", - "author_account_age_days": 1484 - }, - "https://github.com/licyk/ComfyUI-TCD-Sampler": { - "stars": 4, - "last_update": "2024-12-24 05:33:45", - "author_account_age_days": 1484 - }, - "https://github.com/lilly1987/ComfyUI_node_Lilly": { - "stars": 54, - "last_update": "2024-12-21 01:50:03", - "author_account_age_days": 3125 - }, - "https://github.com/linshier/comfyui-remote-tools": { - "stars": 3, - "last_update": "2024-05-28 07:44:23", - "author_account_age_days": 4007 - }, - "https://github.com/liuqianhonga/ComfyUI-Html2Image": { - "stars": 9, - "last_update": "2025-01-06 01:47:59", - "author_account_age_days": 402 - }, - "https://github.com/liuqianhonga/ComfyUI-Image-Compressor": { - "stars": 10, - "last_update": "2025-01-23 15:56:23", - "author_account_age_days": 402 - }, - "https://github.com/liuqianhonga/ComfyUI-QHNodes": { - "stars": 1, - "last_update": "2025-01-23 15:44:21", - "author_account_age_days": 402 - }, - "https://github.com/liuqianhonga/ComfyUI-String-Helper": { - "stars": 2, - "last_update": "2025-01-12 15:25:56", - "author_account_age_days": 402 - }, - "https://github.com/liushuchun/ComfyUI_Lora_List_With_Url_Loader": { - "stars": 3, - "last_update": "2024-09-26 12:38:32", - "author_account_age_days": 4262 - }, - "https://github.com/liusida/ComfyUI-AutoCropFaces": { - "stars": 67, - "last_update": "2024-08-12 17:38:17", - "author_account_age_days": 3423 - }, - "https://github.com/liusida/ComfyUI-B-LoRA": { - "stars": 69, - "last_update": "2024-06-18 03:17:46", - "author_account_age_days": 3423 - }, - "https://github.com/liusida/ComfyUI-Debug": { - "stars": 10, - "last_update": "2024-06-14 10:25:26", - "author_account_age_days": 3423 - }, - "https://github.com/liusida/ComfyUI-Login": { - "stars": 119, - "last_update": "2024-11-15 01:35:25", - "author_account_age_days": 3423 - }, - "https://github.com/liusida/ComfyUI-SD3-nodes": { - "stars": 5, - "last_update": "2024-06-14 13:01:41", - "author_account_age_days": 3423 - }, - "https://github.com/ljleb/comfy-mecha": { - "stars": 59, - "last_update": "2025-01-25 07:20:53", - "author_account_age_days": 2679 - }, - "https://github.com/lks-ai/ComfyUI-StableAudioSampler": { - "stars": 234, - "last_update": "2025-01-07 08:33:57", - "author_account_age_days": 315 - }, - "https://github.com/lks-ai/anynode": { - "stars": 513, - "last_update": "2024-07-07 03:45:48", - "author_account_age_days": 315 - }, - "https://github.com/lldacing/ComfyUI_BiRefNet_ll": { - "stars": 126, - "last_update": "2025-01-07 02:36:44", - "author_account_age_days": 2309 - }, - "https://github.com/lldacing/ComfyUI_Patches_ll": { - "stars": 38, - "last_update": "2025-01-22 09:32:34", - "author_account_age_days": 2309 - }, - "https://github.com/lldacing/ComfyUI_PuLID_Flux_ll": { - "stars": 109, - "last_update": "2025-01-22 09:31:53", - "author_account_age_days": 2309 - }, - "https://github.com/lldacing/ComfyUI_StableDelight_ll": { - "stars": 8, - "last_update": "2024-11-29 11:37:27", - "author_account_age_days": 2309 - }, - "https://github.com/lldacing/ComfyUI_StableHair_ll": { - "stars": 46, - "last_update": "2024-12-01 11:57:50", - "author_account_age_days": 2309 - }, - "https://github.com/lldacing/comfyui-easyapi-nodes": { - "stars": 58, - "last_update": "2024-12-21 02:44:42", - "author_account_age_days": 2309 - }, - "https://github.com/lo-th/Comfyui_three_js": { - "stars": 16, - "last_update": "2024-12-09 22:37:22", - "author_account_age_days": 4695 - }, - "https://github.com/lodestone-rock/ComfyUI_FluxMod": { - "stars": 31, - "last_update": "2025-01-22 18:50:02", - "author_account_age_days": 799 - }, - "https://github.com/logtd/ComfyUI-4DHumans": { - "stars": 5, - "last_update": "2024-08-30 21:12:55", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-APGScaling": { - "stars": 30, - "last_update": "2024-10-06 20:51:27", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-DiLightNet": { - "stars": 10, - "last_update": "2024-10-06 03:48:15", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-FLATTEN": { - "stars": 107, - "last_update": "2024-08-30 21:18:55", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-Fluxtapoz": { - "stars": 1034, - "last_update": "2025-01-09 02:38:40", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-InstanceDiffusion": { - "stars": 175, - "last_update": "2024-08-30 21:17:51", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-InversedNoise": { - "stars": 11, - "last_update": "2024-05-22 00:10:18", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-LTXTricks": { - "stars": 423, - "last_update": "2024-12-21 06:04:48", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-MochiEdit": { - "stars": 276, - "last_update": "2024-11-03 18:38:16", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-MotionThiefExperiment": { - "stars": 40, - "last_update": "2024-08-30 21:19:48", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-RAVE_ATTN": { - "stars": 14, - "last_update": "2024-05-22 00:20:03", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-ReNoise": { - "stars": 6, - "last_update": "2024-09-01 22:17:49", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-RefSampling": { - "stars": 6, - "last_update": "2024-09-11 20:56:01", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-RefUNet": { - "stars": 43, - "last_update": "2024-08-30 21:20:20", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-SEGAttention": { - "stars": 34, - "last_update": "2024-09-11 20:55:00", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-SSREncoder": { - "stars": 2, - "last_update": "2024-08-24 23:33:09", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-SeeCoder": { - "stars": 1, - "last_update": "2024-08-24 23:31:10", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-TrackingNodes": { - "stars": 18, - "last_update": "2024-05-22 00:03:27", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-ViewCrafter": { - "stars": 11, - "last_update": "2024-09-30 19:32:41", - "author_account_age_days": 338 - }, - "https://github.com/longgui0318/comfyui-common-util": { - "stars": 2, - "last_update": "2024-11-28 20:55:56", - "author_account_age_days": 4380 - }, - "https://github.com/longgui0318/comfyui-llm-assistant": { - "stars": 8, - "last_update": "2024-09-17 13:12:43", - "author_account_age_days": 4380 - }, - "https://github.com/longgui0318/comfyui-magic-clothing": { - "stars": 74, - "last_update": "2024-08-08 14:42:04", - "author_account_age_days": 4380 - }, - "https://github.com/longgui0318/comfyui-mask-util": { - "stars": 7, - "last_update": "2024-06-30 03:43:58", - "author_account_age_days": 4380 - }, - "https://github.com/lordgasmic/comfyui_save_image_with_options": { - "stars": 0, - "last_update": "2024-06-20 16:39:23", - "author_account_age_days": 4983 - }, - "https://github.com/lordgasmic/comfyui_wildcards": { - "stars": 8, - "last_update": "2024-06-20 16:52:14", - "author_account_age_days": 4983 - }, - "https://github.com/lquesada/ComfyUI-Inpaint-CropAndStitch": { - "stars": 480, - "last_update": "2024-11-30 07:01:55", - "author_account_age_days": 4266 - }, - "https://github.com/lquesada/ComfyUI-Interactive": { - "stars": 32, - "last_update": "2024-11-23 07:25:20", - "author_account_age_days": 4266 - }, - "https://github.com/lquesada/ComfyUI-Prompt-Combinator": { - "stars": 32, - "last_update": "2024-08-14 20:12:51", - "author_account_age_days": 4266 - }, - "https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils": { - "stars": 159, - "last_update": "2024-12-25 07:12:24", - "author_account_age_days": 3878 - }, - "https://github.com/lrzjason/Comfyui-Kolors-Utils": { - "stars": 17, - "last_update": "2024-07-26 11:12:25", - "author_account_age_days": 3878 - }, - "https://github.com/ltdrdata/ComfyUI-Impact-Pack": { - "stars": 2086, - "last_update": "2025-01-19 09:09:21", - "author_account_age_days": 678 - }, - "https://github.com/ltdrdata/ComfyUI-Impact-Subpack": { - "stars": 109, - "last_update": "2025-01-25 07:37:42", - "author_account_age_days": 678 - }, - "https://github.com/ltdrdata/ComfyUI-Inspire-Pack": { - "stars": 488, - "last_update": "2025-01-15 15:47:53", - "author_account_age_days": 678 - }, - "https://github.com/ltdrdata/ComfyUI-Manager": { - "stars": 8124, - "last_update": "2025-01-26 09:15:37", - "author_account_age_days": 678 - }, - "https://github.com/luandev/ComfyUI-CrewAI": { - "stars": 37, - "last_update": "2025-01-17 18:06:27", - "author_account_age_days": 4023 - }, - "https://github.com/lucafoscili/comfyui-lf": { - "stars": 49, - "last_update": "2024-12-10 18:46:04", - "author_account_age_days": 2250 - }, - "https://github.com/lujiazho/ComfyUI-CatvtonFluxWrapper": { - "stars": 63, - "last_update": "2024-12-02 22:10:41", - "author_account_age_days": 1653 - }, - "https://github.com/lumalabs/ComfyUI-LumaAI-API": { - "stars": 191, - "last_update": "2024-12-10 02:29:05", - "author_account_age_days": 1327 - }, - "https://github.com/m-sokes/ComfyUI-Sokes-Nodes": { - "stars": 1, - "last_update": "2024-05-22 20:36:07", - "author_account_age_days": 531 - }, - "https://github.com/madtunebk/ComfyUI-ControlnetAux": { - "stars": 13, - "last_update": "2024-06-28 16:16:51", - "author_account_age_days": 677 - }, - "https://github.com/maepopi/Diffusers-in-ComfyUI": { - "stars": 6, - "last_update": "2024-12-07 17:27:17", - "author_account_age_days": 2573 - }, - "https://github.com/magic-quill/ComfyUI_MagicQuill": { - "stars": 90, - "last_update": "2024-12-16 04:15:45", - "author_account_age_days": 136 - }, - "https://github.com/maludwig/basix_image_filters": { - "stars": 2, - "last_update": "2024-11-06 20:38:07", - "author_account_age_days": 3722 - }, - "https://github.com/mango-rgb/ComfyUI-Mango-Random-node": { - "stars": 1, - "last_update": "2025-01-21 11:31:10", - "author_account_age_days": 620 - }, - "https://github.com/mape/ComfyUI-mape-Helpers": { - "stars": 172, - "last_update": "2024-06-27 16:30:32", - "author_account_age_days": 5970 - }, - "https://github.com/maracman/ComfyUI-SubjectStyle-CSV": { - "stars": 4, - "last_update": "2024-06-24 13:53:39", - "author_account_age_days": 1382 - }, - "https://github.com/marcoc2/ComfyUI-AnotherUtils": { - "stars": 1, - "last_update": "2024-12-20 04:34:13", - "author_account_age_days": 5400 - }, - "https://github.com/marduk191/ComfyUI-Fluxpromptenhancer": { - "stars": 75, - "last_update": "2024-11-01 22:09:01", - "author_account_age_days": 4630 - }, - "https://github.com/marduk191/comfyui-marnodes": { - "stars": 4, - "last_update": "2024-09-11 06:05:49", - "author_account_age_days": 4630 - }, - "https://github.com/marhensa/sdxl-recommended-res-calc": { - "stars": 79, - "last_update": "2024-07-07 09:20:15", - "author_account_age_days": 4991 - }, - "https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver": { - "stars": 12, - "last_update": "2024-10-30 10:25:15", - "author_account_age_days": 3094 - }, - "https://github.com/martijnat/comfyui-previewlatent": { - "stars": 32, - "last_update": "2024-05-22 21:28:39", - "author_account_age_days": 3047 - }, - "https://github.com/massao000/ComfyUI_aspect_ratios": { - "stars": 10, - "last_update": "2024-05-22 22:23:10", - "author_account_age_days": 1623 - }, - "https://github.com/matan1905/ComfyUI-Serving-Toolkit": { - "stars": 61, - "last_update": "2024-10-17 18:59:44", - "author_account_age_days": 2955 - }, - "https://github.com/mattjohnpowell/comfyui-lmstudio-image-to-text-node": { - "stars": 7, - "last_update": "2024-08-28 09:50:09", - "author_account_age_days": 4766 - }, - "https://github.com/mav-rik/facerestore_cf": { - "stars": 242, - "last_update": "2024-05-22 20:53:23", - "author_account_age_days": 3136 - }, - "https://github.com/mbrostami/ComfyUI-HF": { - "stars": 18, - "last_update": "2024-05-27 21:45:33", - "author_account_age_days": 4537 - }, - "https://github.com/mbrostami/ComfyUI-TITrain": { - "stars": 8, - "last_update": "2024-08-14 02:19:27", - "author_account_age_days": 4537 - }, - "https://github.com/mcmonkeyprojects/sd-dynamic-thresholding": { - "stars": 1167, - "last_update": "2024-08-10 12:59:59", - "author_account_age_days": 2317 - }, - "https://github.com/meanin2/comfyui-MGnodes": { - "stars": 2, - "last_update": "2025-01-24 07:32:08", - "author_account_age_days": 870 - }, - "https://github.com/meanin2/comfyui-watermarking": { - "stars": 2, - "last_update": "2025-01-24 07:32:08", - "author_account_age_days": 870 - }, - "https://github.com/meap158/ComfyUI-Background-Replacement": { - "stars": 57, - "last_update": "2025-01-06 23:45:28", - "author_account_age_days": 3419 - }, - "https://github.com/meap158/ComfyUI-GPU-temperature-protection": { - "stars": 3, - "last_update": "2024-05-22 20:43:21", - "author_account_age_days": 3419 - }, - "https://github.com/meap158/ComfyUI-Prompt-Expansion": { - "stars": 73, - "last_update": "2024-05-22 20:43:37", - "author_account_age_days": 3419 - }, - "https://github.com/mech-tools/comfyui-checkpoint-automatic-config": { - "stars": 4, - "last_update": "2024-09-05 14:23:29", - "author_account_age_days": 4655 - }, - "https://github.com/melMass/comfy_mtb": { - "stars": 495, - "last_update": "2025-01-09 14:04:19", - "author_account_age_days": 3961 - }, - "https://github.com/mephisto83/petty-paint-comfyui-node": { - "stars": 4, - "last_update": "2024-10-23 22:23:03", - "author_account_age_days": 3888 - }, - "https://github.com/meshmesh-io/ComfyUI-MeshMesh": { - "stars": 0, - "last_update": "2024-05-23 00:10:09", - "author_account_age_days": 444 - }, - "https://github.com/meshmesh-io/mm-comfyui-loopback": { - "stars": 1, - "last_update": "2024-05-23 00:09:57", - "author_account_age_days": 444 - }, - "https://github.com/meshmesh-io/mm-comfyui-megamask": { - "stars": 0, - "last_update": "2024-05-23 00:09:47", - "author_account_age_days": 444 - }, - "https://github.com/metal3d/ComfyUI_Human_Parts": { - "stars": 25, - "last_update": "2024-09-13 05:15:40", - "author_account_age_days": 5689 - }, - "https://github.com/metncelik/comfyui_met_suite": { - "stars": 1, - "last_update": "2024-07-07 13:40:26", - "author_account_age_days": 838 - }, - "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext": { - "stars": 2, - "last_update": "2024-11-29 13:12:52", - "author_account_age_days": 2533 - }, - "https://github.com/mgfxer/ComfyUI-FrameFX": { - "stars": 23, - "last_update": "2024-07-20 13:58:46", - "author_account_age_days": 218 - }, - "https://github.com/miaoshouai/ComfyUI-Miaoshouai-Tagger": { - "stars": 327, - "last_update": "2024-11-05 00:07:48", - "author_account_age_days": 684 - }, - "https://github.com/microbote/ComfyUI-StyledCLIPTextEncode": { - "stars": 2, - "last_update": "2024-08-27 03:37:29", - "author_account_age_days": 2224 - }, - "https://github.com/mihaiiancu/ComfyUI_Inpaint": { - "stars": 9, - "last_update": "2024-05-22 18:19:38", - "author_account_age_days": 2877 - }, - "https://github.com/mikebilly/Transparent-background-comfyUI": { - "stars": 1, - "last_update": "2024-07-17 15:59:31", - "author_account_age_days": 2780 - }, - "https://github.com/mikkel/ComfyUI-text-overlay": { - "stars": 53, - "last_update": "2024-08-17 16:09:41", - "author_account_age_days": 6132 - }, - "https://github.com/mikkel/comfyui-mask-boundingbox": { - "stars": 28, - "last_update": "2024-05-22 21:26:23", - "author_account_age_days": 6132 - }, - "https://github.com/mingsky-ai/ComfyUI-MingNodes": { - "stars": 248, - "last_update": "2024-10-18 16:51:14", - "author_account_age_days": 137 - }, - "https://github.com/mira-6/comfyui-sasolver": { - "stars": 3, - "last_update": "2025-01-09 22:36:41", - "author_account_age_days": 608 - }, - "https://github.com/mirabarukaso/ComfyUI_Mira": { - "stars": 67, - "last_update": "2025-01-16 15:33:06", - "author_account_age_days": 1436 - }, - "https://github.com/misterjoessef/MLTask_ComfyUI": { - "stars": 1, - "last_update": "2024-08-17 16:45:24", - "author_account_age_days": 954 - }, - "https://github.com/mittimi/ComfyUI_mittimiLoadPreset2": { - "stars": 3, - "last_update": "2024-11-02 15:01:29", - "author_account_age_days": 4226 - }, - "https://github.com/mittimi/ComfyUI_mittimiRecalculateSize": { - "stars": 1, - "last_update": "2024-09-07 07:43:41", - "author_account_age_days": 4226 - }, - "https://github.com/mittimi/ComfyUI_mittimiWidthHeight": { - "stars": 2, - "last_update": "2024-09-07 07:48:03", - "author_account_age_days": 4226 - }, - "https://github.com/modelscope/comfyscope": { - "stars": 4, - "last_update": "2024-11-20 08:48:36", - "author_account_age_days": 916 - }, - "https://github.com/modelscope/scepter": { - "stars": 456, - "last_update": "2024-12-07 16:31:54", - "author_account_age_days": 916 - }, - "https://github.com/modusCell/ComfyUI-dimension-node-modusCell": { - "stars": 1, - "last_update": "2024-05-22 22:08:50", - "author_account_age_days": 4819 - }, - "https://github.com/morino-kumasan/comfyui-toml-prompt": { - "stars": 1, - "last_update": "2024-12-07 11:19:40", - "author_account_age_days": 1539 - }, - "https://github.com/motivated3/comfyui-shua-creator": { - "stars": 6, - "last_update": "2024-12-05 10:39:52", - "author_account_age_days": 3022 - }, - "https://github.com/moustafa-nasr/ComfyUI-SimpleLogger": { - "stars": 2, - "last_update": "2024-10-24 13:44:41", - "author_account_age_days": 3687 - }, - "https://github.com/moyi7712/ComfyUI_Seamless_Patten": { - "stars": 16, - "last_update": "2024-08-06 15:37:47", - "author_account_age_days": 2516 - }, - "https://github.com/mozman/ComfyUI_mozman_nodes": { - "stars": 0, - "last_update": "2024-05-22 22:13:32", - "author_account_age_days": 4296 - }, - "https://github.com/mrchipset/ComfyUI-SaveImageS3": { - "stars": 1, - "last_update": "2024-12-28 05:34:06", - "author_account_age_days": 2526 - }, - "https://github.com/mrhan1993/ComfyUI-Fooocus": { - "stars": 5, - "last_update": "2025-01-15 15:18:07", - "author_account_age_days": 2083 - }, - "https://github.com/muhammederem/blip-comfyui": { - "stars": 1, - "last_update": "2025-01-13 21:11:12", - "author_account_age_days": 2311 - }, - "https://github.com/mullakhmetov/comfyui_dynamic_util_nodes": { - "stars": 0, - "last_update": "2024-07-15 14:13:58", - "author_account_age_days": 4153 - }, - "https://github.com/muxueChen/ComfyUI_NTCosyVoice": { - "stars": 25, - "last_update": "2025-01-04 02:48:08", - "author_account_age_days": 3177 - }, - "https://github.com/muzi12888/ComfyUI-PoseKeypoint-Mask": { - "stars": 8, - "last_update": "2024-07-31 13:49:27", - "author_account_age_days": 3161 - }, - "https://github.com/my-opencode/ComfyUI_IndustrialMagick": { - "stars": 2, - "last_update": "2024-07-31 14:04:26", - "author_account_age_days": 1596 - }, - "https://github.com/my-opencode/ComfyUI_KSamplerTimer": { - "stars": 2, - "last_update": "2024-07-31 14:13:17", - "author_account_age_days": 1596 - }, - "https://github.com/myshell-ai/ComfyUI-ShellAgent-Plugin": { - "stars": 8, - "last_update": "2025-01-16 08:03:08", - "author_account_age_days": 684 - }, - "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL": { - "stars": 3, - "last_update": "2024-07-19 14:46:14", - "author_account_age_days": 3890 - }, - "https://github.com/nagolinc/comfyui_openai_node": { - "stars": 1, - "last_update": "2024-06-15 15:59:07", - "author_account_age_days": 3890 - }, - "https://github.com/nat-chan/ComfyUI-graphToPrompt": { - "stars": 2, - "last_update": "2024-05-23 01:16:40", - "author_account_age_days": 3209 - }, - "https://github.com/nat-chan/comfyui-transceiver": { - "stars": 5, - "last_update": "2024-05-23 01:16:28", - "author_account_age_days": 3209 - }, - "https://github.com/nathannlu/ComfyUI-Cloud": { - "stars": 192, - "last_update": "2024-07-31 18:05:55", - "author_account_age_days": 2941 - }, - "https://github.com/nathannlu/ComfyUI-Pets": { - "stars": 45, - "last_update": "2024-06-14 11:00:42", - "author_account_age_days": 2941 - }, - "https://github.com/natto-maki/ComfyUI-NegiTools": { - "stars": 29, - "last_update": "2024-09-15 05:11:18", - "author_account_age_days": 493 - }, - "https://github.com/nchenevey1/comfyui-gimp-nodes": { - "stars": 8, - "last_update": "2024-10-26 09:11:34", - "author_account_age_days": 865 - }, - "https://github.com/neph1/comfyui-smooth-step-lora-loader": { - "stars": 7, - "last_update": "2024-12-25 18:40:01", - "author_account_age_days": 3867 - }, - "https://github.com/neverbiasu/ComfyUI-Dashscope": { - "stars": 1, - "last_update": "2025-01-24 12:07:31", - "author_account_age_days": 1235 - }, - "https://github.com/neverbiasu/ComfyUI-Image-Captioner": { - "stars": 6, - "last_update": "2024-12-12 06:33:15", - "author_account_age_days": 1235 - }, - "https://github.com/neverbiasu/ComfyUI-SAM2": { - "stars": 109, - "last_update": "2025-01-26 08:05:39", - "author_account_age_days": 1235 - }, - "https://github.com/neverbiasu/ComfyUI-StyleShot": { - "stars": 10, - "last_update": "2024-11-24 09:40:44", - "author_account_age_days": 1235 - }, - "https://github.com/ngosset/ComfyUI-ImageSimilarity": { - "stars": 4, - "last_update": "2025-01-18 18:17:50", - "author_account_age_days": 4537 - }, - "https://github.com/nicehero/comfyui-SegGPT": { - "stars": 5, - "last_update": "2024-08-26 06:05:35", - "author_account_age_days": 4225 - }, - "https://github.com/nickve28/ComfyUI-Nich-Utils": { - "stars": 9, - "last_update": "2024-09-05 03:39:09", - "author_account_age_days": 4244 - }, - "https://github.com/nicofdga/DZ-FaceDetailer": { - "stars": 173, - "last_update": "2024-06-17 10:00:30", - "author_account_age_days": 1447 - }, - "https://github.com/niknah/ComfyUI-F5-TTS": { - "stars": 83, - "last_update": "2025-01-26 06:55:01", - "author_account_age_days": 4935 - }, - "https://github.com/niknah/ComfyUI-Hunyuan-3D-2": { - "stars": 4, - "last_update": "2025-01-25 13:22:48", - "author_account_age_days": 4935 - }, - "https://github.com/niknah/quick-connections": { - "stars": 172, - "last_update": "2024-12-15 03:01:31", - "author_account_age_days": 4935 - }, - "https://github.com/nilor-corp/nilor-nodes": { - "stars": 3, - "last_update": "2024-11-15 03:30:08", - "author_account_age_days": 431 - }, - "https://github.com/ningxiaoxiao/comfyui-NDI": { - "stars": 54, - "last_update": "2024-07-02 09:03:11", - "author_account_age_days": 3203 - }, - "https://github.com/nirbhay-faaya/ImgProcessing_ComfyUI": { - "stars": 1, - "last_update": "2024-07-31 08:34:48", - "author_account_age_days": 551 - }, - "https://github.com/nirex0/ComfyUI_pytorch_openpose": { - "stars": 2, - "last_update": "2024-06-14 12:01:07", - "author_account_age_days": 3718 - }, - "https://github.com/nisimjoseph/ComfyUI_OpenAI-Prompter": { - "stars": 3, - "last_update": "2025-01-18 19:57:31", - "author_account_age_days": 4522 - }, - "https://github.com/nkchocoai/ComfyUI-Dart": { - "stars": 25, - "last_update": "2024-08-17 03:08:51", - "author_account_age_days": 375 - }, - "https://github.com/nkchocoai/ComfyUI-PromptUtilities": { - "stars": 10, - "last_update": "2024-10-19 14:44:42", - "author_account_age_days": 375 - }, - "https://github.com/nkchocoai/ComfyUI-SaveImageWithMetaData": { - "stars": 51, - "last_update": "2024-12-30 12:15:57", - "author_account_age_days": 375 - }, - "https://github.com/nkchocoai/ComfyUI-SizeFromPresets": { - "stars": 7, - "last_update": "2024-08-17 03:08:42", - "author_account_age_days": 375 - }, - "https://github.com/nkchocoai/ComfyUI-TextOnSegs": { - "stars": 11, - "last_update": "2024-06-23 04:52:29", - "author_account_age_days": 375 - }, - "https://github.com/noarche/sd-webui-color-enhance": { - "stars": 4, - "last_update": "2024-08-04 08:11:53", - "author_account_age_days": 1878 - }, - "https://github.com/noembryo/ComfyUI-noEmbryo": { - "stars": 24, - "last_update": "2024-10-24 20:22:13", - "author_account_age_days": 2958 - }, - "https://github.com/nofunstudio/Node_Fun_ComfyUI": { - "stars": 3, - "last_update": "2025-01-26 07:38:19", - "author_account_age_days": 1428 - }, - "https://github.com/nonnonstop/comfyui-faster-loading": { - "stars": 8, - "last_update": "2024-06-13 15:37:45", - "author_account_age_days": 2338 - }, - "https://github.com/nosiu/comfyui-instantId-faceswap": { - "stars": 210, - "last_update": "2024-10-20 21:07:49", - "author_account_age_days": 4120 - }, - "https://github.com/noxinias/ComfyUI_NoxinNodes": { - "stars": 10, - "last_update": "2024-05-22 21:24:24", - "author_account_age_days": 2776 - }, - "https://github.com/nsdtcloud3d/ComfyUI-3D-Convert": { - "stars": 10, - "last_update": "2024-12-23 07:46:17", - "author_account_age_days": 290 - }, - "https://github.com/ntc-ai/ComfyUI-DARE-LoRA-Merge": { - "stars": 29, - "last_update": "2024-05-22 22:22:14", - "author_account_age_days": 1933 - }, - "https://github.com/nuanarchy/ComfyUI-NuA-BIRD": { - "stars": 9, - "last_update": "2024-06-18 05:35:49", - "author_account_age_days": 1308 - }, - "https://github.com/nuanarchy/ComfyUI-NuA-FlashFace": { - "stars": 23, - "last_update": "2024-07-31 13:54:00", - "author_account_age_days": 1308 - }, - "https://github.com/nullquant/ComfyUI-BrushNet": { - "stars": 724, - "last_update": "2024-11-11 16:15:51", - "author_account_age_days": 1392 - }, - "https://github.com/numz/ComfyUI-FlowChain": { - "stars": 103, - "last_update": "2024-10-19 21:20:45", - "author_account_age_days": 4999 - }, - "https://github.com/nux1111/ComfyUI_NetDist_Plus": { - "stars": 22, - "last_update": "2024-08-27 23:15:18", - "author_account_age_days": 768 - }, - "https://github.com/okgo4/ComfyUI-Mosaic-Mask": { - "stars": 4, - "last_update": "2024-08-15 01:51:13", - "author_account_age_days": 2902 - }, - "https://github.com/olduvai-jp/ComfyUI-HfLoader": { - "stars": 4, - "last_update": "2024-05-23 00:14:52", - "author_account_age_days": 1092 - }, - "https://github.com/oleksandr612/ComfyUI-Counter": { - "stars": 1, - "last_update": "2024-08-05 16:18:48", - "author_account_age_days": 178 - }, - "https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92": { - "stars": 140, - "last_update": "2024-09-10 14:16:30", - "author_account_age_days": 4722 - }, - "https://github.com/opvelll/ComfyUI_TextListProduct": { - "stars": 2, - "last_update": "2024-10-30 16:00:09", - "author_account_age_days": 1770 - }, - "https://github.com/osi1880vr/prompt_quill_comfyui": { - "stars": 16, - "last_update": "2024-06-13 17:24:12", - "author_account_age_days": 1292 - }, - "https://github.com/ostris/ostris_nodes_comfyui": { - "stars": 28, - "last_update": "2024-08-20 10:40:03", - "author_account_age_days": 2618 - }, - "https://github.com/ownimage/ComfyUI-ownimage": { - "stars": 0, - "last_update": "2024-05-22 22:22:37", - "author_account_age_days": 2999 - }, - "https://github.com/oyvindg/ComfyUI-TrollSuite": { - "stars": 2, - "last_update": "2024-08-15 10:37:43", - "author_account_age_days": 2545 - }, - "https://github.com/oztrkoguz/ComfyUI_StoryCreator": { - "stars": 25, - "last_update": "2024-05-23 12:18:45", - "author_account_age_days": 1057 - }, - "https://github.com/palant/image-resize-comfyui": { - "stars": 77, - "last_update": "2024-01-18 20:59:55", - "author_account_age_days": 5269 - }, - "https://github.com/palant/integrated-nodes-comfyui": { - "stars": 37, - "last_update": "2023-12-27 22:52:00", - "author_account_age_days": 5269 - }, - "https://github.com/pamparamm/ComfyUI-ppm": { - "stars": 147, - "last_update": "2025-01-03 07:53:12", - "author_account_age_days": 2346 - }, - "https://github.com/pamparamm/ComfyUI-vectorscope-cc": { - "stars": 15, - "last_update": "2024-09-01 05:22:43", - "author_account_age_days": 2346 - }, - "https://github.com/pamparamm/sd-perturbed-attention": { - "stars": 233, - "last_update": "2024-11-30 06:34:59", - "author_account_age_days": 2346 - }, - "https://github.com/pandaer119/ComfyUI_pandai": { - "stars": 7, - "last_update": "2025-01-07 13:01:42", - "author_account_age_days": 222 - }, - "https://github.com/pants007/comfy-pants": { - "stars": 2, - "last_update": "2024-05-22 18:16:04", - "author_account_age_days": 2533 - }, - "https://github.com/patriciogonzalezvivo/comfyui_glslnodes": { - "stars": 191, - "last_update": "2025-01-12 14:56:38", - "author_account_age_days": 5295 - }, - "https://github.com/paulo-coronado/comfy_clip_blip_node": { - "stars": 29, - "last_update": "2024-05-22 17:39:09", - "author_account_age_days": 2902 - }, - "https://github.com/pbpbpb2705/ComfyUI-LyraVSIH": { - "stars": 1, - "last_update": "2024-08-30 07:52:11", - "author_account_age_days": 1446 - }, - "https://github.com/pharmapsychotic/comfy-cliption": { - "stars": 41, - "last_update": "2025-01-04 05:06:11", - "author_account_age_days": 1130 - }, - "https://github.com/phazei/ConfyUI-node-prompt-stash-saver": { - "stars": 2, - "last_update": "2024-12-28 07:07:26", - "author_account_age_days": 5224 - }, - "https://github.com/philiprodriguez/ComfyUI-HunyuanImageLatentToVideoLatent": { - "stars": 1, - "last_update": "2025-01-12 16:43:09", - "author_account_age_days": 3214 - }, - "https://github.com/philz1337x/ComfyUI-ClarityAI": { - "stars": 159, - "last_update": "2024-09-25 08:48:51", - "author_account_age_days": 879 - }, - "https://github.com/phineas-pta/comfyui-auto-nodes-layout": { - "stars": 41, - "last_update": "2024-08-02 17:31:24", - "author_account_age_days": 2504 - }, - "https://github.com/phuvinh010701/ComfyUI-Nudenet": { - "stars": 8, - "last_update": "2025-01-06 11:49:33", - "author_account_age_days": 1889 - }, - "https://github.com/phyblas/paint-by-example_comfyui": { - "stars": 8, - "last_update": "2025-01-12 02:31:01", - "author_account_age_days": 3269 - }, - "https://github.com/picturesonpictures/comfy_PoP": { - "stars": 17, - "last_update": "2024-07-05 07:32:50", - "author_account_age_days": 803 - }, - "https://github.com/pikenrover/ComfyUI_PRNodes": { - "stars": 3, - "last_update": "2024-10-08 17:29:07", - "author_account_age_days": 185 - }, - "https://github.com/pkpkTech/ComfyUI-SaveAVIF": { - "stars": 2, - "last_update": "2024-05-22 22:19:21", - "author_account_age_days": 1719 - }, - "https://github.com/pkpkTech/ComfyUI-SaveQueues": { - "stars": 3, - "last_update": "2024-05-22 22:19:54", - "author_account_age_days": 1719 - }, - "https://github.com/pkpkTech/ComfyUI-TemporaryLoader": { - "stars": 1, - "last_update": "2024-05-22 22:19:44", - "author_account_age_days": 1719 - }, - "https://github.com/pkpkTech/ComfyUI-ngrok": { - "stars": 4, - "last_update": "2024-05-22 22:19:32", - "author_account_age_days": 1719 - }, - "https://github.com/playbook3d/playbook3d-comfyui-nodes": { - "stars": 21, - "last_update": "2025-01-17 22:52:52", - "author_account_age_days": 1716 - }, - "https://github.com/plugcrypt/CRT-Nodes": { - "stars": 2, - "last_update": "2024-10-01 07:58:40", - "author_account_age_days": 1278 - }, - "https://github.com/pollockjj/ComfyUI-MultiGPU": { - "stars": 27, - "last_update": "2025-01-25 23:49:22", - "author_account_age_days": 3722 - }, - "https://github.com/portu-sim/comfyui_bmab": { - "stars": 99, - "last_update": "2024-10-07 16:39:03", - "author_account_age_days": 538 - }, - "https://github.com/prodogape/ComfyUI-EasyOCR": { - "stars": 29, - "last_update": "2024-08-05 07:03:20", - "author_account_age_days": 1246 - }, - "https://github.com/prodogape/ComfyUI-Minio": { - "stars": 2, - "last_update": "2024-05-23 00:13:38", - "author_account_age_days": 1246 - }, - "https://github.com/prodogape/ComfyUI-OmDet": { - "stars": 2, - "last_update": "2024-06-14 13:01:34", - "author_account_age_days": 1246 - }, - "https://github.com/prodogape/Comfyui-Yolov8-JSON": { - "stars": 21, - "last_update": "2024-08-28 02:10:39", - "author_account_age_days": 1246 - }, - "https://github.com/prozacgod/comfyui-pzc-multiworkspace": { - "stars": 7, - "last_update": "2024-05-22 23:11:46", - "author_account_age_days": 5784 - }, - "https://github.com/pschroedl/ComfyUI-SAM2-Realtime": { - "stars": 11, - "last_update": "2025-01-21 05:29:03", - "author_account_age_days": 4203 - }, - "https://github.com/purpen/ComfyUI-AIRedoon": { - "stars": 3, - "last_update": "2024-12-11 09:38:42", - "author_account_age_days": 5154 - }, - "https://github.com/purpen/ComfyUI-ImageTagger": { - "stars": 3, - "last_update": "2024-11-27 17:20:49", - "author_account_age_days": 5154 - }, - "https://github.com/pydn/ComfyUI-to-Python-Extension": { - "stars": 1457, - "last_update": "2025-01-14 17:03:18", - "author_account_age_days": 2912 - }, - "https://github.com/pythongosssss/ComfyUI-Custom-Scripts": { - "stars": 2053, - "last_update": "2025-01-14 22:51:00", - "author_account_age_days": 713 - }, - "https://github.com/pythongosssss/ComfyUI-WD14-Tagger": { - "stars": 748, - "last_update": "2024-10-23 19:52:57", - "author_account_age_days": 713 - }, - "https://github.com/pzc163/Comfyui-CatVTON": { - "stars": 145, - "last_update": "2024-10-03 12:50:42", - "author_account_age_days": 992 - }, - "https://github.com/pzc163/Comfyui_MiniCPMv2_6-prompt-generator": { - "stars": 71, - "last_update": "2024-08-30 08:37:48", - "author_account_age_days": 992 - }, - "https://github.com/qwixiwp/queuetools": { - "stars": 0, - "last_update": "2024-06-14 10:27:57", - "author_account_age_days": 827 - }, - "https://github.com/r3dial/redial-discomphy": { - "stars": 1, - "last_update": "2025-01-09 19:59:31", - "author_account_age_days": 647 - }, - "https://github.com/r3dsd/comfyui-template-loader": { - "stars": 1, - "last_update": "2025-01-12 08:55:49", - "author_account_age_days": 356 - }, - "https://github.com/ramesh-x90/ComfyUI_pyannote": { - "stars": 2, - "last_update": "2024-11-23 09:42:16", - "author_account_age_days": 1538 - }, - "https://github.com/ramyma/A8R8_ComfyUI_nodes": { - "stars": 54, - "last_update": "2024-12-09 16:06:25", - "author_account_age_days": 3433 - }, - "https://github.com/randjtw/advance-aesthetic-score": { - "stars": 0, - "last_update": "2024-05-23 01:14:47", - "author_account_age_days": 976 - }, - "https://github.com/randomnoner11/ComfyUI-MistralAI-API": { - "stars": 2, - "last_update": "2024-12-28 19:31:31", - "author_account_age_days": 35 - }, - "https://github.com/raspie10032/ComfyUI_RS_NAI_Local_Prompt_converter": { - "stars": 1, - "last_update": "2024-12-26 10:23:16", - "author_account_age_days": 251 - }, - "https://github.com/ratulrafsan/Comfyui-SAL-VTON": { - "stars": 81, - "last_update": "2024-08-26 09:52:06", - "author_account_age_days": 4710 - }, - "https://github.com/raysers/Mflux-ComfyUI": { - "stars": 51, - "last_update": "2024-12-05 08:42:13", - "author_account_age_days": 2220 - }, - "https://github.com/rcfcu2000/zhihuige-nodes-comfyui": { - "stars": 1, - "last_update": "2024-05-22 22:13:55", - "author_account_age_days": 3640 - }, - "https://github.com/rcsaquino/comfyui-custom-nodes": { - "stars": 2, - "last_update": "2024-08-26 10:08:29", - "author_account_age_days": 1727 - }, - "https://github.com/rdancer/ComfyUI_Florence2SAM2": { - "stars": 27, - "last_update": "2024-10-25 09:09:43", - "author_account_age_days": 5837 - }, - "https://github.com/receyuki/comfyui-prompt-reader-node": { - "stars": 314, - "last_update": "2024-09-06 11:40:48", - "author_account_age_days": 2808 - }, - "https://github.com/recraft-ai/ComfyUI-RecraftAI": { - "stars": 43, - "last_update": "2024-11-06 13:54:26", - "author_account_age_days": 938 - }, - "https://github.com/redhottensors/ComfyUI-Prediction": { - "stars": 14, - "last_update": "2024-07-14 21:19:01", - "author_account_age_days": 355 - }, - "https://github.com/regiellis/ComfyUI-EasyNoobai": { - "stars": 8, - "last_update": "2025-01-06 18:38:11", - "author_account_age_days": 4842 - }, - "https://github.com/regiellis/ComfyUI-EasyPony": { - "stars": 8, - "last_update": "2024-12-01 20:36:54", - "author_account_age_days": 4842 - }, - "https://github.com/replicate/comfyui-replicate": { - "stars": 169, - "last_update": "2024-11-05 15:26:20", - "author_account_age_days": 1824 - }, - "https://github.com/revirevy/Comfyui_saveimage_imgbb": { - "stars": 1, - "last_update": "2025-01-24 19:21:57", - "author_account_age_days": 4701 - }, - "https://github.com/rgthree/rgthree-comfy": { - "stars": 1442, - "last_update": "2024-12-31 04:01:59", - "author_account_age_days": 5190 - }, - "https://github.com/rhdunn/comfyui-audio-processing": { - "stars": 6, - "last_update": "2024-08-22 19:11:01", - "author_account_age_days": 5852 - }, - "https://github.com/rhdunn/comfyui-bus-plugin": { - "stars": 3, - "last_update": "2024-08-22 19:00:56", - "author_account_age_days": 5852 - }, - "https://github.com/rhplus0831/ComfyMepi": { - "stars": 1, - "last_update": "2025-01-01 15:58:13", - "author_account_age_days": 369 - }, - "https://github.com/richinsley/Comfy-LFO": { - "stars": 5, - "last_update": "2024-05-22 20:46:30", - "author_account_age_days": 2896 - }, - "https://github.com/ricklove/comfyui-ricklove": { - "stars": 2, - "last_update": "2024-10-05 03:12:28", - "author_account_age_days": 5048 - }, - "https://github.com/risunobushi/ComfyUI-Similarity-Score": { - "stars": 2, - "last_update": "2025-01-03 15:27:06", - "author_account_age_days": 863 - }, - "https://github.com/risunobushi/comfyUI_FrequencySeparation_RGB-HSV": { - "stars": 30, - "last_update": "2024-06-14 10:28:04", - "author_account_age_days": 863 - }, - "https://github.com/rnbwdsh/ComfyUI-LatentWalk": { - "stars": 7, - "last_update": "2024-08-20 22:39:19", - "author_account_age_days": 3762 - }, - "https://github.com/robertvoy/ComfyUI-Flux-Continuum": { - "stars": 126, - "last_update": "2024-12-03 19:25:59", - "author_account_age_days": 4321 - }, - "https://github.com/robtl2/ComfyUI-ComfyBridge": { - "stars": 1, - "last_update": "2024-11-18 23:28:13", - "author_account_age_days": 667 - }, - "https://github.com/rohitsainier/ComfyUI-InstagramDownloader": { - "stars": 14, - "last_update": "2025-01-02 08:47:22", - "author_account_age_days": 3369 - }, - "https://github.com/romeobuilderotti/ComfyUI-PNG-Metadata": { - "stars": 7, - "last_update": "2024-05-22 21:29:25", - "author_account_age_days": 506 - }, - "https://github.com/ronaldzgithub/ComfyUI_Appstore": { - "stars": 4, - "last_update": "2024-12-04 15:02:42", - "author_account_age_days": 2526 - }, - "https://github.com/ronniebasak/ComfyUI-Tara-LLM-Integration": { - "stars": 103, - "last_update": "2024-11-18 05:08:11", - "author_account_age_days": 4370 - }, - "https://github.com/ronsantash/Comfyui-flexi-lora-loader": { - "stars": 3, - "last_update": "2025-01-12 11:57:27", - "author_account_age_days": 1233 - }, - "https://github.com/royceschultz/ComfyUI-Notifications": { - "stars": 10, - "last_update": "2024-12-31 16:13:21", - "author_account_age_days": 2745 - }, - "https://github.com/royceschultz/ComfyUI-TranscriptionTools": { - "stars": 18, - "last_update": "2024-05-23 01:10:10", - "author_account_age_days": 2745 - }, - "https://github.com/rubi-du/ComfyUI-BiRefNet-Super": { - "stars": 8, - "last_update": "2025-01-02 02:39:10", - "author_account_age_days": 397 - }, - "https://github.com/rubi-du/ComfyUI-Flux-Inpainting": { - "stars": 16, - "last_update": "2025-01-12 14:21:56", - "author_account_age_days": 397 - }, - "https://github.com/rubi-du/ComfyUI-ICC-nodes": { - "stars": 2, - "last_update": "2024-12-05 08:27:40", - "author_account_age_days": 397 - }, - "https://github.com/rui40000/RUI-Nodes": { - "stars": 15, - "last_update": "2024-05-22 22:12:26", - "author_account_age_days": 689 - }, - "https://github.com/ruiqutech/ComfyUI-RuiquNodes": { - "stars": 0, - "last_update": "2024-05-23 01:21:50", - "author_account_age_days": 285 - }, - "https://github.com/runtime44/comfyui_r44_nodes": { - "stars": 40, - "last_update": "2024-07-01 08:02:04", - "author_account_age_days": 383 - }, - "https://github.com/ruucm/ruucm-comfy": { - "stars": 2, - "last_update": "2024-10-12 10:31:49", - "author_account_age_days": 2636 - }, - "https://github.com/ryanontheinside/ComfyUI_Doom": { - "stars": 5, - "last_update": "2024-11-08 17:58:21", - "author_account_age_days": 3905 - }, - "https://github.com/ryanontheinside/ComfyUI_EfficientTAM": { - "stars": 3, - "last_update": "2024-12-21 20:25:05", - "author_account_age_days": 3905 - }, - "https://github.com/ryanontheinside/ComfyUI_ProfilerX": { - "stars": 36, - "last_update": "2025-01-23 00:10:03", - "author_account_age_days": 3905 - }, - "https://github.com/ryanontheinside/ComfyUI_RealTimeNodes": { - "stars": 16, - "last_update": "2025-01-11 03:09:45", - "author_account_age_days": 3905 - }, - "https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside": { - "stars": 399, - "last_update": "2025-01-26 01:20:30", - "author_account_age_days": 3905 - }, - "https://github.com/saftle/uber_comfy_nodes": { - "stars": 2, - "last_update": "2024-08-24 02:42:40", - "author_account_age_days": 4973 - }, - "https://github.com/sakura1bgx/ComfyUI_FlipStreamViewer": { - "stars": 4, - "last_update": "2024-11-04 04:39:41", - "author_account_age_days": 154 - }, - "https://github.com/sanbuphy/ComfyUI-AudioLDM": { - "stars": 1, - "last_update": "2025-01-02 02:01:12", - "author_account_age_days": 1138 - }, - "https://github.com/sdfxai/SDFXBridgeForComfyUI": { - "stars": 11, - "last_update": "2024-06-14 10:26:56", - "author_account_age_days": 450 - }, - "https://github.com/seanlynch/comfyui-optical-flow": { - "stars": 32, - "last_update": "2024-05-22 20:52:17", - "author_account_age_days": 5521 - }, - "https://github.com/seanlynch/srl-nodes": { - "stars": 7, - "last_update": "2024-06-30 13:47:38", - "author_account_age_days": 5521 - }, - "https://github.com/sebord/ComfyUI-LMCQ": { - "stars": 35, - "last_update": "2025-01-15 08:00:45", - "author_account_age_days": 1003 - }, - "https://github.com/sergekatzmann/ComfyUI_Nimbus-Pack": { - "stars": 4, - "last_update": "2024-05-22 21:34:15", - "author_account_age_days": 3548 - }, - "https://github.com/sh570655308/ComfyUI-GigapixelAI": { - "stars": 117, - "last_update": "2025-01-15 05:16:31", - "author_account_age_days": 2718 - }, - "https://github.com/sh570655308/ComfyUI-TopazVideoAI": { - "stars": 123, - "last_update": "2025-01-18 09:49:32", - "author_account_age_days": 2718 - }, - "https://github.com/shabri-arrahim/ComfyUI-Safety-Checker": { - "stars": 2, - "last_update": "2025-01-23 05:46:33", - "author_account_age_days": 1985 - }, - "https://github.com/shadowcz007/comfyui-Image-reward": { - "stars": 29, - "last_update": "2024-06-14 10:24:49", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-consistency-decoder": { - "stars": 2, - "last_update": "2024-06-14 10:23:35", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-edit-mask": { - "stars": 6, - "last_update": "2024-06-20 01:42:48", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-liveportrait": { - "stars": 435, - "last_update": "2024-09-01 10:34:41", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-mixlab-nodes": { - "stars": 1421, - "last_update": "2025-01-25 02:35:15", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-sound-lab": { - "stars": 107, - "last_update": "2024-07-04 12:53:38", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-try-on": { - "stars": 13, - "last_update": "2024-08-15 10:50:22", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-ultralytics-yolo": { - "stars": 29, - "last_update": "2024-06-22 09:06:04", - "author_account_age_days": 3530 - }, - "https://github.com/shahkoorosh/ComfyUI-KGnodes": { - "stars": 1, - "last_update": "2024-12-27 17:55:11", - "author_account_age_days": 408 - }, - "https://github.com/shahkoorosh/ComfyUI-PersianText": { - "stars": 1, - "last_update": "2025-01-15 17:05:57", - "author_account_age_days": 408 - }, - "https://github.com/shenduldh/ComfyUI-Lightning": { - "stars": 129, - "last_update": "2025-01-25 15:32:03", - "author_account_age_days": 2334 - }, - "https://github.com/shi3z/ComfyUI_Memeplex_DALLE": { - "stars": 2, - "last_update": "2024-05-23 00:14:25", - "author_account_age_days": 5308 - }, - "https://github.com/shiimizu/ComfyUI-PhotoMaker-Plus": { - "stars": 260, - "last_update": "2024-12-01 18:40:16", - "author_account_age_days": 1981 - }, - "https://github.com/shiimizu/ComfyUI-TiledDiffusion": { - "stars": 360, - "last_update": "2024-12-02 22:41:52", - "author_account_age_days": 1981 - }, - "https://github.com/shiimizu/ComfyUI-semantic-aware-guidance": { - "stars": 9, - "last_update": "2024-08-08 19:59:57", - "author_account_age_days": 1981 - }, - "https://github.com/shiimizu/ComfyUI_smZNodes": { - "stars": 240, - "last_update": "2024-12-29 10:24:12", - "author_account_age_days": 1981 - }, - "https://github.com/shingo1228/ComfyUI-SDXL-EmptyLatentImage": { - "stars": 34, - "last_update": "2024-05-22 20:41:29", - "author_account_age_days": 2439 - }, - "https://github.com/shingo1228/ComfyUI-send-eagle-slim": { - "stars": 31, - "last_update": "2024-07-30 22:28:41", - "author_account_age_days": 2439 - }, - "https://github.com/shinich39/comfyui-connect-from-afar": { - "stars": 1, - "last_update": "2024-08-15 21:10:31", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-group-selection": { - "stars": 2, - "last_update": "2024-08-16 06:01:35", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-load-image-in-seq": { - "stars": 6, - "last_update": "2024-08-23 11:51:31", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-local-db": { - "stars": 3, - "last_update": "2024-08-03 15:45:29", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-model-db": { - "stars": 1, - "last_update": "2025-01-25 10:07:03", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-parse-image": { - "stars": 3, - "last_update": "2025-01-22 00:03:55", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-put-image": { - "stars": 3, - "last_update": "2025-01-22 00:00:58", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-ramdom-node": { - "stars": 3, - "last_update": "2025-01-25 10:05:38", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-target-search": { - "stars": 2, - "last_update": "2024-08-15 23:12:25", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-textarea-command": { - "stars": 2, - "last_update": "2024-12-25 05:36:46", - "author_account_age_days": 528 - }, - "https://github.com/shinich39/comfyui-view-recommendations": { - "stars": 3, - "last_update": "2024-12-28 08:28:51", - "author_account_age_days": 528 - }, - "https://github.com/shobhitic/ComfyUI-PlusMinusTextClip": { - "stars": 3, - "last_update": "2024-06-20 13:57:29", - "author_account_age_days": 4523 - }, - "https://github.com/shockz0rz/comfy-easy-grids": { - "stars": 21, - "last_update": "2024-05-22 18:14:05", - "author_account_age_days": 1842 - }, - "https://github.com/siliconflow/BizyAir": { - "stars": 499, - "last_update": "2025-01-26 02:41:44", - "author_account_age_days": 521 - }, - "https://github.com/siliconflow/onediff_comfy_nodes": { - "stars": 19, - "last_update": "2024-06-24 10:08:11", - "author_account_age_days": 521 - }, - "https://github.com/silveroxides/ComfyUI_bnb_nf4_fp4_Loaders": { - "stars": 13, - "last_update": "2025-01-20 08:30:14", - "author_account_age_days": 1717 - }, - "https://github.com/sipherxyz/comfyui-art-venture": { - "stars": 200, - "last_update": "2024-11-04 14:05:29", - "author_account_age_days": 1323 - }, - "https://github.com/sipie800/ComfyUI-PuLID-Flux-Enhanced": { - "stars": 156, - "last_update": "2025-01-04 12:41:20", - "author_account_age_days": 2343 - }, - "https://github.com/skfoo/ComfyUI-Coziness": { - "stars": 28, - "last_update": "2024-08-16 03:10:43", - "author_account_age_days": 2298 - }, - "https://github.com/slyt/comfyui-ollama-nodes": { - "stars": 0, - "last_update": "2024-07-31 13:52:27", - "author_account_age_days": 4155 - }, - "https://github.com/smagnetize/kb-comfyui-nodes": { - "stars": 0, - "last_update": "2024-06-14 12:00:45", - "author_account_age_days": 2930 - }, - "https://github.com/smlbiobot/ComfyUI-Flux-Replicate-API": { - "stars": 21, - "last_update": "2024-12-26 16:21:00", - "author_account_age_days": 2937 - }, - "https://github.com/smlbiobot/sml-comfyui-prompt-expansion": { - "stars": 0, - "last_update": "2025-01-26 05:10:48", - "author_account_age_days": 2937 - }, - "https://github.com/smthemex/ComfyUI_AnyDoor": { - "stars": 53, - "last_update": "2024-10-05 00:22:07", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_CSGO_Wrapper": { - "stars": 15, - "last_update": "2024-09-07 06:13:48", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_ChatGLM_API": { - "stars": 24, - "last_update": "2024-07-31 13:53:41", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_CustomNet": { - "stars": 10, - "last_update": "2024-08-11 08:58:37", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_DeepFakeDefenders": { - "stars": 37, - "last_update": "2024-09-14 00:17:59", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Demucs": { - "stars": 7, - "last_update": "2024-11-06 10:06:01", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Diffree": { - "stars": 30, - "last_update": "2024-12-17 00:47:19", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_EchoMimic": { - "stars": 515, - "last_update": "2025-01-16 00:38:15", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Face_Anon_Simple": { - "stars": 12, - "last_update": "2024-11-20 01:14:37", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_FoleyCrafter": { - "stars": 54, - "last_update": "2024-09-06 02:36:44", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_FollowYourEmoji": { - "stars": 16, - "last_update": "2024-07-21 06:01:11", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Hallo2": { - "stars": 68, - "last_update": "2024-11-19 01:00:07", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_HiDiffusion_Pro": { - "stars": 53, - "last_update": "2025-01-13 03:29:50", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_ID_Animator": { - "stars": 25, - "last_update": "2024-07-31 13:53:27", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_InstantIR_Wrapper": { - "stars": 211, - "last_update": "2024-11-15 12:16:19", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Llama3_8B": { - "stars": 27, - "last_update": "2024-06-25 00:49:01", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_MS_Diffusion": { - "stars": 52, - "last_update": "2024-09-10 09:50:19", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_MangaNinjia": { - "stars": 30, - "last_update": "2025-01-23 00:43:14", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_MooER": { - "stars": 6, - "last_update": "2024-09-03 13:41:15", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_OmniParser": { - "stars": 31, - "last_update": "2024-12-06 01:07:38", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_PBR_Maker": { - "stars": 13, - "last_update": "2024-12-09 05:34:53", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_ParlerTTS": { - "stars": 35, - "last_update": "2024-12-25 06:26:03", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Pic2Story": { - "stars": 10, - "last_update": "2024-12-06 12:12:19", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Pipeline_Tool": { - "stars": 11, - "last_update": "2024-08-05 06:14:57", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Pops": { - "stars": 22, - "last_update": "2024-08-12 09:11:49", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_SVFR": { - "stars": 58, - "last_update": "2025-01-22 01:15:19", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Sapiens": { - "stars": 140, - "last_update": "2024-12-05 12:00:37", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_StableAudio_Open": { - "stars": 19, - "last_update": "2024-08-10 03:45:47", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Stable_Makeup": { - "stars": 81, - "last_update": "2025-01-10 05:26:59", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_StoryDiffusion": { - "stars": 276, - "last_update": "2025-01-19 04:15:14", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_Streamv2v_Plus": { - "stars": 11, - "last_update": "2024-09-06 08:20:59", - "author_account_age_days": 570 - }, - "https://github.com/smthemex/ComfyUI_TRELLIS": { - "stars": 133, - "last_update": "2024-12-27 03:35:57", - "author_account_age_days": 570 - }, - "https://github.com/sn0w12/ComfyUI-Sn0w-Scripts": { - "stars": 10, - "last_update": "2025-01-12 01:16:22", - "author_account_age_days": 989 - }, - "https://github.com/sneccc/comfyui-snek-nodes": { - "stars": 1, - "last_update": "2024-11-09 19:28:50", - "author_account_age_days": 1783 - }, - "https://github.com/solution9th/Comfyui_mobilesam": { - "stars": 1, - "last_update": "2024-12-24 09:27:31", - "author_account_age_days": 2288 - }, - "https://github.com/souki202/ComfyUI-LoadImage-Advanced": { - "stars": 2, - "last_update": "2024-08-29 14:03:52", - "author_account_age_days": 3475 - }, - "https://github.com/sourceful-official/LoadLoraModelOnlyWithUrl": { - "stars": 2, - "last_update": "2024-12-04 12:14:51", - "author_account_age_days": 1699 - }, - "https://github.com/sousakujikken/ComfyUI-PixydustQuantizer": { - "stars": 26, - "last_update": "2024-12-01 15:14:40", - "author_account_age_days": 624 - }, - "https://github.com/space-nuko/ComfyUI-Disco-Diffusion": { - "stars": 50, - "last_update": "2024-08-07 11:51:17", - "author_account_age_days": 2940 - }, - "https://github.com/space-nuko/ComfyUI-OpenPose-Editor": { - "stars": 190, - "last_update": "2024-05-22 18:10:49", - "author_account_age_days": 2940 - }, - "https://github.com/space-nuko/nui-suite": { - "stars": 11, - "last_update": "2024-05-22 18:11:04", - "author_account_age_days": 2940 - }, - "https://github.com/spacepxl/ComfyUI-Depth-Pro": { - "stars": 165, - "last_update": "2024-10-23 20:05:56", - "author_account_age_days": 510 - }, - "https://github.com/spacepxl/ComfyUI-Florence-2": { - "stars": 76, - "last_update": "2024-07-20 19:44:33", - "author_account_age_days": 510 - }, - "https://github.com/spacepxl/ComfyUI-HQ-Image-Save": { - "stars": 48, - "last_update": "2024-10-28 17:18:44", - "author_account_age_days": 510 - }, - "https://github.com/spacepxl/ComfyUI-Image-Filters": { - "stars": 183, - "last_update": "2024-12-16 22:42:50", - "author_account_age_days": 510 - }, - "https://github.com/spacepxl/ComfyUI-LossTesting": { - "stars": 0, - "last_update": "2025-01-26 05:09:57", - "author_account_age_days": 510 - }, - "https://github.com/spacepxl/ComfyUI-RAVE": { - "stars": 86, - "last_update": "2024-05-22 20:56:19", - "author_account_age_days": 510 - }, - "https://github.com/spacepxl/ComfyUI-StyleGan": { - "stars": 12, - "last_update": "2024-06-10 20:16:34", - "author_account_age_days": 510 - }, - "https://github.com/spinagon/ComfyUI-seam-carving": { - "stars": 19, - "last_update": "2024-08-04 19:13:25", - "author_account_age_days": 4956 - }, - "https://github.com/spinagon/ComfyUI-seamless-tiling": { - "stars": 176, - "last_update": "2024-09-25 05:22:05", - "author_account_age_days": 4956 - }, - "https://github.com/spro/comfyui-mirror": { - "stars": 5, - "last_update": "2024-05-22 20:50:25", - "author_account_age_days": 5447 - }, - "https://github.com/ssitu/ComfyUI_UltimateSDUpscale": { - "stars": 962, - "last_update": "2025-01-06 19:06:53", - "author_account_age_days": 1905 - }, - "https://github.com/ssitu/ComfyUI_fabric": { - "stars": 88, - "last_update": "2024-05-22 18:10:19", - "author_account_age_days": 1905 - }, - "https://github.com/ssitu/ComfyUI_restart_sampling": { - "stars": 87, - "last_update": "2024-05-22 18:09:49", - "author_account_age_days": 1905 - }, - "https://github.com/ssitu/ComfyUI_roop": { - "stars": 71, - "last_update": "2024-05-22 18:10:03", - "author_account_age_days": 1905 - }, - "https://github.com/stavsap/comfyui-kokoro": { - "stars": 3, - "last_update": "2025-01-25 10:35:27", - "author_account_age_days": 4299 - }, - "https://github.com/stavsap/comfyui-ollama": { - "stars": 438, - "last_update": "2025-01-10 09:00:17", - "author_account_age_days": 4299 - }, - "https://github.com/stormcenter/ComfyUI-AutoSplitGridImage": { - "stars": 26, - "last_update": "2025-01-06 12:02:58", - "author_account_age_days": 4344 - }, - "https://github.com/stormcenter/ComfyUI-LivePhotoCreator": { - "stars": 21, - "last_update": "2025-01-06 12:03:42", - "author_account_age_days": 4344 - }, - "https://github.com/stormcenter/ComfyUI-SVGFullfill": { - "stars": 8, - "last_update": "2025-01-06 12:04:18", - "author_account_age_days": 4344 - }, - "https://github.com/storyicon/comfyui_musev_evolved": { - "stars": 24, - "last_update": "2024-06-14 11:02:40", - "author_account_age_days": 2768 - }, - "https://github.com/storyicon/comfyui_segment_anything": { - "stars": 820, - "last_update": "2024-07-12 10:17:33", - "author_account_age_days": 2768 - }, - "https://github.com/strand1/ComfyUI-Autogen": { - "stars": 1, - "last_update": "2025-01-21 05:10:43", - "author_account_age_days": 4687 - }, - "https://github.com/strimmlarn/ComfyUI-Strimmlarns-Aesthetic-Score": { - "stars": 29, - "last_update": "2024-06-17 10:01:44", - "author_account_age_days": 2842 - }, - "https://github.com/styler00dollar/ComfyUI-deepcache": { - "stars": 8, - "last_update": "2024-05-22 22:18:18", - "author_account_age_days": 2061 - }, - "https://github.com/styler00dollar/ComfyUI-sudo-latent-upscale": { - "stars": 39, - "last_update": "2024-05-22 22:18:07", - "author_account_age_days": 2061 - }, - "https://github.com/subtleGradient/TinkerBot-tech-for-ComfyUI-Touchpad": { - "stars": 31, - "last_update": "2024-08-16 01:18:03", - "author_account_age_days": 6146 - }, - "https://github.com/sugarkwork/comfyui_cohere": { - "stars": 2, - "last_update": "2024-07-22 08:42:31", - "author_account_age_days": 1091 - }, - "https://github.com/sugarkwork/comfyui_tag_fillter": { - "stars": 35, - "last_update": "2025-01-09 02:36:09", - "author_account_age_days": 1091 - }, - "https://github.com/superyoman/comfyui_lumaAPI": { - "stars": 21, - "last_update": "2024-06-17 21:00:05", - "author_account_age_days": 664 - }, - "https://github.com/sweetndata/ComfyUI-Image-Harmonizer": { - "stars": 2, - "last_update": "2024-11-20 06:10:34", - "author_account_age_days": 948 - }, - "https://github.com/sweetndata/ComfyUI-googletrans": { - "stars": 2, - "last_update": "2024-11-20 04:53:19", - "author_account_age_days": 948 - }, - "https://github.com/sweetndata/ComfyUI_Sticker_Compositer": { - "stars": 2, - "last_update": "2025-01-02 06:54:51", - "author_account_age_days": 948 - }, - "https://github.com/syaofox/ComfyUI_fnodes": { - "stars": 8, - "last_update": "2024-10-15 09:38:25", - "author_account_age_days": 3371 - }, - "https://github.com/syllebra/bilbox-comfyui": { - "stars": 120, - "last_update": "2024-12-06 23:51:55", - "author_account_age_days": 3351 - }, - "https://github.com/sylym/comfy_vid2vid": { - "stars": 69, - "last_update": "2024-05-22 17:53:40", - "author_account_age_days": 2114 - }, - "https://github.com/szhublox/ambw_comfyui": { - "stars": 16, - "last_update": "2024-05-22 18:04:57", - "author_account_age_days": 1223 - }, - "https://github.com/taabata/ComfyCanvas": { - "stars": 78, - "last_update": "2024-12-15 00:59:25", - "author_account_age_days": 1898 - }, - "https://github.com/taabata/LCM_Inpaint_Outpaint_Comfy": { - "stars": 257, - "last_update": "2024-11-18 00:45:28", - "author_account_age_days": 1898 - }, - "https://github.com/taabata/SANA_LOWVRAM": { - "stars": 6, - "last_update": "2024-12-28 01:16:29", - "author_account_age_days": 1898 - }, - "https://github.com/taches-ai/comfyui-scene-composer": { - "stars": 46, - "last_update": "2024-11-17 20:49:23", - "author_account_age_days": 123 - }, - "https://github.com/tachyon-beep/comfyui-simplefeed": { - "stars": 9, - "last_update": "2024-10-16 09:19:29", - "author_account_age_days": 5137 - }, - "https://github.com/takemetosiberia/ComfyUI-SAMURAI--SAM2-": { - "stars": 24, - "last_update": "2024-12-01 13:06:02", - "author_account_age_days": 601 - }, - "https://github.com/talesofai/comfyui-browser": { - "stars": 528, - "last_update": "2024-11-11 01:42:30", - "author_account_age_days": 771 - }, - "https://github.com/tanglaoya321/ComfyUI-StoryMaker": { - "stars": 17, - "last_update": "2024-10-01 01:20:00", - "author_account_age_days": 4187 - }, - "https://github.com/teward/Comfy-Sentry": { - "stars": 1, - "last_update": "2024-07-31 21:37:42", - "author_account_age_days": 5314 - }, - "https://github.com/teward/ComfyUI-Helper-Nodes": { - "stars": 4, - "last_update": "2024-05-23 01:22:01", - "author_account_age_days": 5314 - }, - "https://github.com/theAdamColton/ComfyUI-texflow-extension": { - "stars": 2, - "last_update": "2025-01-16 19:58:24", - "author_account_age_days": 1572 - }, - "https://github.com/theUpsider/ComfyUI-Logic": { - "stars": 163, - "last_update": "2024-08-16 12:20:56", - "author_account_age_days": 2938 - }, - "https://github.com/theUpsider/ComfyUI-Styles_CSV_Loader": { - "stars": 46, - "last_update": "2025-01-17 14:42:53", - "author_account_age_days": 2938 - }, - "https://github.com/thecooltechguy/ComfyUI-ComfyWorkflows": { - "stars": 57, - "last_update": "2024-05-22 21:33:47", - "author_account_age_days": 2638 - }, - "https://github.com/thecooltechguy/ComfyUI-MagicAnimate": { - "stars": 220, - "last_update": "2024-05-22 21:33:35", - "author_account_age_days": 2638 - }, - "https://github.com/thecooltechguy/ComfyUI-Stable-Video-Diffusion": { - "stars": 344, - "last_update": "2024-05-24 22:14:42", - "author_account_age_days": 2638 - }, - "https://github.com/theshubzworld/ComfyUI-SD3.5-Latent-Size-Picker": { - "stars": 1, - "last_update": "2024-12-25 14:09:38", - "author_account_age_days": 187 - }, - "https://github.com/theshubzworld/ComfyUI-TogetherVision": { - "stars": 1, - "last_update": "2025-01-24 18:07:15", - "author_account_age_days": 187 - }, - "https://github.com/theshubzworld/ComfyUI-ollama_killer": { - "stars": 3, - "last_update": "2024-12-25 13:10:30", - "author_account_age_days": 187 - }, - "https://github.com/thoddnn/ComfyUI-MLX": { - "stars": 98, - "last_update": "2024-10-22 06:41:22", - "author_account_age_days": 479 - }, - "https://github.com/tianguanggliu/Utools": { - "stars": 1, - "last_update": "2024-08-29 09:45:03", - "author_account_age_days": 2556 - }, - "https://github.com/tiankuan93/ComfyUI-V-Express": { - "stars": 111, - "last_update": "2024-06-26 02:41:00", - "author_account_age_days": 3166 - }, - "https://github.com/tianlang0704/ComfyUI-StableProjectorzBridge": { - "stars": 24, - "last_update": "2024-12-01 11:46:58", - "author_account_age_days": 3541 - }, - "https://github.com/tianyuw/ComfyUI-LLM-API": { - "stars": 0, - "last_update": "2025-01-25 19:31:47", - "author_account_age_days": 3408 - }, - "https://github.com/tkreuziger/comfyui-claude": { - "stars": 3, - "last_update": "2025-01-10 22:43:50", - "author_account_age_days": 752 - }, - "https://github.com/tmagara/ComfyUI-Prediction-Boost": { - "stars": 2, - "last_update": "2024-07-31 13:51:19", - "author_account_age_days": 4591 - }, - "https://github.com/tocubed/ComfyUI-AudioReactor": { - "stars": 8, - "last_update": "2024-05-22 22:21:57", - "author_account_age_days": 4075 - }, - "https://github.com/tocubed/ComfyUI-EvTexture": { - "stars": 6, - "last_update": "2025-01-05 23:21:23", - "author_account_age_days": 4075 - }, - "https://github.com/tomudo/ComfyUI-ascii-art": { - "stars": 4, - "last_update": "2024-11-21 05:24:12", - "author_account_age_days": 3118 - }, - "https://github.com/tooldigital/ComfyUI-Yolo-Cropper": { - "stars": 6, - "last_update": "2024-06-14 13:59:48", - "author_account_age_days": 4533 - }, - "https://github.com/toxicwind/ComfyUI-TTools": { - "stars": 1, - "last_update": "2024-07-04 20:07:35", - "author_account_age_days": 4586 - }, - "https://github.com/toyxyz/ComfyUI_rgbx_Wrapper": { - "stars": 68, - "last_update": "2024-12-25 02:02:16", - "author_account_age_days": 3865 - }, - "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes": { - "stars": 541, - "last_update": "2024-11-15 19:13:08", - "author_account_age_days": 3865 - }, - "https://github.com/traugdor/ComfyUI-quadMoons-nodes": { - "stars": 13, - "last_update": "2024-11-03 00:10:00", - "author_account_age_days": 4036 - }, - "https://github.com/tritant/ComfyUI_CreaPrompt": { - "stars": 44, - "last_update": "2024-12-11 09:08:22", - "author_account_age_days": 3356 - }, - "https://github.com/trojblue/trNodes": { - "stars": 8, - "last_update": "2024-05-22 18:04:36", - "author_account_age_days": 2473 - }, - "https://github.com/troyxmccall/ComfyUI-ScaleToTargetMegapixels": { - "stars": 2, - "last_update": "2024-11-11 00:07:25", - "author_account_age_days": 5605 - }, - "https://github.com/trumanwong/ComfyUI-NSFW-Detection": { - "stars": 27, - "last_update": "2024-08-03 05:16:33", - "author_account_age_days": 3176 - }, - "https://github.com/tsogzark/ComfyUI-load-image-from-url": { - "stars": 16, - "last_update": "2024-06-14 13:59:05", - "author_account_age_days": 1744 - }, - "https://github.com/ttulttul/ComfyUI-Iterative-Mixer": { - "stars": 118, - "last_update": "2024-07-09 14:56:02", - "author_account_age_days": 4973 - }, - "https://github.com/ttulttul/ComfyUI-Tensor-Operations": { - "stars": 5, - "last_update": "2024-06-12 21:55:39", - "author_account_age_days": 4973 - }, - "https://github.com/tungdop2/Comfyui_face_restorer": { - "stars": 3, - "last_update": "2024-11-21 15:53:59", - "author_account_age_days": 1640 - }, - "https://github.com/tungdop2/Comfyui_joy-caption-alpha-two": { - "stars": 3, - "last_update": "2024-11-26 07:47:26", - "author_account_age_days": 1640 - }, - "https://github.com/turkyden/ComfyUI-SmartCrop": { - "stars": 4, - "last_update": "2024-10-08 09:36:34", - "author_account_age_days": 2965 - }, - "https://github.com/tusharbhutt/Endless-Nodes": { - "stars": 26, - "last_update": "2024-08-20 02:23:16", - "author_account_age_days": 2881 - }, - "https://github.com/twri/sdxl_prompt_styler": { - "stars": 800, - "last_update": "2024-05-22 18:16:58", - "author_account_age_days": 4284 - }, - "https://github.com/txt2any/ComfyUI-PromptOrganizer": { - "stars": 0, - "last_update": "2024-05-23 01:10:33", - "author_account_age_days": 300 - }, - "https://github.com/ty0x2333/ComfyUI-Dev-Utils": { - "stars": 116, - "last_update": "2024-10-03 23:26:45", - "author_account_age_days": 3918 - }, - "https://github.com/tzwm/comfyui-profiler": { - "stars": 146, - "last_update": "2024-08-28 14:27:12", - "author_account_age_days": 4985 - }, - "https://github.com/uarefans/ComfyUI-Fans": { - "stars": 16, - "last_update": "2024-07-14 15:00:38", - "author_account_age_days": 1488 - }, - "https://github.com/uetuluk/comfyui-webcam-node": { - "stars": 3, - "last_update": "2024-06-14 08:25:13", - "author_account_age_days": 2530 - }, - "https://github.com/umiyuki/comfyui-pad-to-eight": { - "stars": 1, - "last_update": "2025-01-07 09:58:36", - "author_account_age_days": 3969 - }, - "https://github.com/un-seen/comfyui-tensorops": { - "stars": 16, - "last_update": "2024-10-26 00:04:07", - "author_account_age_days": 1532 - }, - "https://github.com/un-seen/comfyui_segment_anything_plus": { - "stars": 5, - "last_update": "2024-07-29 06:21:54", - "author_account_age_days": 1532 - }, - "https://github.com/unwdef/unwdef-nodes-comfyui": { - "stars": 2, - "last_update": "2024-07-31 13:39:39", - "author_account_age_days": 289 - }, - "https://github.com/valofey/Openrouter-Node": { - "stars": 2, - "last_update": "2024-09-26 14:38:37", - "author_account_age_days": 1599 - }, - "https://github.com/vanche1212/ComfyUI-ZMG-Nodes": { - "stars": 3, - "last_update": "2024-06-25 04:48:19", - "author_account_age_days": 3174 - }, - "https://github.com/vanillacode314/SimpleWildcardsComfyUI": { - "stars": 4, - "last_update": "2024-07-31 13:39:43", - "author_account_age_days": 1073 - }, - "https://github.com/var1ableX/ComfyUI_Accessories": { - "stars": 1, - "last_update": "2025-01-15 22:18:41", - "author_account_age_days": 4980 - }, - "https://github.com/vault-developer/comfyui-image-blender": { - "stars": 20, - "last_update": "2024-08-03 19:30:31", - "author_account_age_days": 2829 - }, - "https://github.com/veighnsche/comfyui_gr85": { - "stars": 2, - "last_update": "2024-11-26 17:26:48", - "author_account_age_days": 3316 - }, - "https://github.com/victorchall/comfyui_webcamcapture": { - "stars": 12, - "last_update": "2024-06-22 18:59:10", - "author_account_age_days": 3361 - }, - "https://github.com/vienteck/ComfyUI-Chat-GPT-Integration": { - "stars": 31, - "last_update": "2024-05-22 22:11:14", - "author_account_age_days": 3643 - }, - "https://github.com/vincentfs/ComfyUI-ArchiGraph": { - "stars": 3, - "last_update": "2025-01-23 17:29:09", - "author_account_age_days": 3882 - }, - "https://github.com/violet-chen/comfyui-psd2png": { - "stars": 17, - "last_update": "2025-01-21 05:16:52", - "author_account_age_days": 1614 - }, - "https://github.com/viperyl/ComfyUI-RGT": { - "stars": 6, - "last_update": "2024-06-20 15:33:50", - "author_account_age_days": 2248 - }, - "https://github.com/vivax3794/ComfyUI-Sub-Nodes": { - "stars": 158, - "last_update": "2024-11-03 04:06:08", - "author_account_age_days": 2054 - }, - "https://github.com/vivax3794/ComfyUI-Vivax-Nodes": { - "stars": 4, - "last_update": "2024-09-07 18:42:27", - "author_account_age_days": 2054 - }, - "https://github.com/vkff5833/ComfyUI-PromptConverter": { - "stars": 2, - "last_update": "2025-01-21 13:22:56", - "author_account_age_days": 511 - }, - "https://github.com/vsevolod-oparin/comfyui-kandinsky22": { - "stars": 10, - "last_update": "2024-07-31 16:03:48", - "author_account_age_days": 5200 - }, - "https://github.com/vuongminh1907/ComfyUI_ZenID": { - "stars": 106, - "last_update": "2024-12-22 06:45:45", - "author_account_age_days": 788 - }, - "https://github.com/wTechArtist/ComfyUI-CustomNodes": { - "stars": 3, - "last_update": "2024-08-21 03:03:16", - "author_account_age_days": 1576 - }, - "https://github.com/wTechArtist/ComfyUI-StableDelight-weiweiliang": { - "stars": 2, - "last_update": "2024-11-08 15:37:40", - "author_account_age_days": 1576 - }, - "https://github.com/wallish77/wlsh_nodes": { - "stars": 105, - "last_update": "2024-06-19 12:01:29", - "author_account_age_days": 2436 - }, - "https://github.com/wandbrandon/comfyui-pixel": { - "stars": 4, - "last_update": "2024-06-14 07:07:09", - "author_account_age_days": 3599 - }, - "https://github.com/waterminer/ComfyUI-tagcomplete": { - "stars": 5, - "last_update": "2025-01-06 00:13:57", - "author_account_age_days": 2328 - }, - "https://github.com/web3nomad/ComfyUI_Invisible_Watermark": { - "stars": 1, - "last_update": "2024-05-23 01:16:54", - "author_account_age_days": 1183 - }, - "https://github.com/webfiltered/DebugNode-ComfyUI": { - "stars": 5, - "last_update": "2024-09-10 13:08:51", - "author_account_age_days": 190 - }, - "https://github.com/wei30172/comfygen": { - "stars": 8, - "last_update": "2024-11-07 22:10:50", - "author_account_age_days": 1828 - }, - "https://github.com/weilin9999/WeiLin-ComfyUI-prompt-all-in-one": { - "stars": 151, - "last_update": "2025-01-09 14:59:21", - "author_account_age_days": 2123 - }, - "https://github.com/weilin9999/WeiLin-Comfyui-Tools": { - "stars": 22, - "last_update": "2025-01-23 13:12:22", - "author_account_age_days": 2123 - }, - "https://github.com/welltop-cn/ComfyUI-TeaCache": { - "stars": 342, - "last_update": "2025-01-17 12:37:09", - "author_account_age_days": 1787 - }, - "https://github.com/wentao-uw/ComfyUI-template-matching": { - "stars": 1, - "last_update": "2024-11-06 06:52:30", - "author_account_age_days": 1995 - }, - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-editor": { - "stars": 10, - "last_update": "2025-01-25 18:28:07", - "author_account_age_days": 510 - }, - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-estimator": { - "stars": 5, - "last_update": "2025-01-25 05:53:53", - "author_account_age_days": 510 - }, - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-render": { - "stars": 6, - "last_update": "2025-01-25 05:54:27", - "author_account_age_days": 510 - }, - "https://github.com/whatbirdisthat/cyberdolphin": { - "stars": 14, - "last_update": "2024-07-31 13:40:12", - "author_account_age_days": 5703 - }, - "https://github.com/whmc76/ComfyUI-Openpose-Editor-Plus": { - "stars": 37, - "last_update": "2024-06-20 13:52:34", - "author_account_age_days": 667 - }, - "https://github.com/willchil/ComfyUI-Environment-Visualizer": { - "stars": 9, - "last_update": "2024-10-09 02:48:18", - "author_account_age_days": 2854 - }, - "https://github.com/windfancy/zsq_prompt": { - "stars": 1, - "last_update": "2024-12-15 14:58:52", - "author_account_age_days": 1753 - }, - "https://github.com/wjl0313/ComfyUI_KimNodes": { - "stars": 20, - "last_update": "2025-01-20 03:19:15", - "author_account_age_days": 2087 - }, - "https://github.com/wmatson/easy-comfy-nodes": { - "stars": 16, - "last_update": "2024-10-08 01:54:33", - "author_account_age_days": 4333 - }, - "https://github.com/wmpmiles/comfyui-some-image-processing-stuff": { - "stars": 4, - "last_update": "2024-12-23 02:43:14", - "author_account_age_days": 3246 - }, - "https://github.com/wolfden/ComfyUi_PromptStylers": { - "stars": 85, - "last_update": "2024-09-03 18:33:52", - "author_account_age_days": 5937 - }, - "https://github.com/wolfden/ComfyUi_String_Function_Tree": { - "stars": 9, - "last_update": "2024-05-22 18:29:16", - "author_account_age_days": 5937 - }, - "https://github.com/wootwootwootwoot/ComfyUI-RK-Sampler": { - "stars": 53, - "last_update": "2024-08-17 21:12:43", - "author_account_age_days": 1783 - }, - "https://github.com/wqjuser/ComfyUI-Chat-Image": { - "stars": 1, - "last_update": "2024-12-26 07:00:30", - "author_account_age_days": 3149 - }, - "https://github.com/wu12023/ComfyUI-Image-Evaluation": { - "stars": 6, - "last_update": "2024-12-06 06:51:15", - "author_account_age_days": 533 - }, - "https://github.com/wujm424606/ComfyUi-Ollama-YN": { - "stars": 74, - "last_update": "2024-09-17 13:20:02", - "author_account_age_days": 2478 - }, - "https://github.com/wutipong/ComfyUI-TextUtils": { - "stars": 1, - "last_update": "2024-06-14 09:34:31", - "author_account_age_days": 4401 - }, - "https://github.com/wwwins/ComfyUI-Simple-Aspect-Ratio": { - "stars": 1, - "last_update": "2024-05-22 22:22:25", - "author_account_age_days": 5266 - }, - "https://github.com/xXAdonesXx/NodeGPT": { - "stars": 344, - "last_update": "2024-06-20 11:41:30", - "author_account_age_days": 1694 - }, - "https://github.com/xfgexo/EXO-Custom-ComfyUI-Nodes": { - "stars": 2, - "last_update": "2024-12-24 14:07:18", - "author_account_age_days": 645 - }, - "https://github.com/xiaoxiaodesha/hd_node": { - "stars": 14, - "last_update": "2024-06-11 02:36:48", - "author_account_age_days": 3090 - }, - "https://github.com/xlinx/ComfyUI-decadetw-auto-messaging-realtime": { - "stars": 7, - "last_update": "2024-08-30 17:38:52", - "author_account_age_days": 4715 - }, - "https://github.com/xlinx/ComfyUI-decadetw-auto-prompt-llm": { - "stars": 19, - "last_update": "2024-08-30 17:39:03", - "author_account_age_days": 4715 - }, - "https://github.com/xlinx/ComfyUI-decadetw-spout-syphon-im-vj": { - "stars": 10, - "last_update": "2024-09-03 08:55:08", - "author_account_age_days": 4715 - }, - "https://github.com/xliry/ComfyUI_SendDiscord": { - "stars": 0, - "last_update": "2024-05-23 02:21:38", - "author_account_age_days": 1489 - }, - "https://github.com/xobiomesh/ComfyUI_xObiomesh": { - "stars": 3, - "last_update": "2024-11-08 17:10:40", - "author_account_age_days": 1905 - }, - "https://github.com/xs315431/Comfyui_Get_promptId": { - "stars": 1, - "last_update": "2024-12-02 09:30:53", - "author_account_age_days": 1490 - }, - "https://github.com/xuhongming251/ComfyUI-GPEN": { - "stars": 4, - "last_update": "2024-06-15 14:33:37", - "author_account_age_days": 4322 - }, - "https://github.com/xuhongming251/ComfyUI-MuseTalkUtils": { - "stars": 20, - "last_update": "2024-06-15 14:32:32", - "author_account_age_days": 4322 - }, - "https://github.com/xuhongming251/ComfyUI_Camera": { - "stars": 2, - "last_update": "2024-12-25 07:31:32", - "author_account_age_days": 4322 - }, - "https://github.com/yanlang0123/ComfyUI_Lam": { - "stars": 15, - "last_update": "2024-11-30 08:19:45", - "author_account_age_days": 3024 - }, - "https://github.com/ycchanau/ComfyUI_Preview_Magnifier": { - "stars": 3, - "last_update": "2024-07-31 13:59:12", - "author_account_age_days": 2333 - }, - "https://github.com/ycyy/ComfyUI-YCYY-LoraInfo": { - "stars": 6, - "last_update": "2024-09-30 02:33:25", - "author_account_age_days": 3640 - }, - "https://github.com/yffyhk/comfyui_auto_danbooru": { - "stars": 1, - "last_update": "2024-05-22 23:23:03", - "author_account_age_days": 3937 - }, - "https://github.com/yhayano-ponotech/ComfyUI-Fal-API-Flux": { - "stars": 36, - "last_update": "2025-01-16 08:47:22", - "author_account_age_days": 786 - }, - "https://github.com/yhayano-ponotech/comfyui-save-image-local": { - "stars": 3, - "last_update": "2025-01-15 12:30:50", - "author_account_age_days": 786 - }, - "https://github.com/yichengup/Comfyui-Deepseek": { - "stars": 8, - "last_update": "2025-01-21 07:30:20", - "author_account_age_days": 340 - }, - "https://github.com/yichengup/Comfyui-Ycanvas": { - "stars": 61, - "last_update": "2024-12-22 01:26:50", - "author_account_age_days": 340 - }, - "https://github.com/yichengup/Comfyui_Flux_Style_Adjust": { - "stars": 237, - "last_update": "2024-12-12 08:22:38", - "author_account_age_days": 340 - }, - "https://github.com/yichengup/Comfyui_Redux_Advanced": { - "stars": 55, - "last_update": "2025-01-24 10:07:48", - "author_account_age_days": 340 - }, - "https://github.com/yiwangsimple/ComfyUI_DW_Chat": { - "stars": 87, - "last_update": "2024-11-08 08:42:14", - "author_account_age_days": 768 - }, - "https://github.com/yiwangsimple/florence_dw": { - "stars": 35, - "last_update": "2024-10-21 06:40:25", - "author_account_age_days": 768 - }, - "https://github.com/yolain/ComfyUI-Easy-Use": { - "stars": 1251, - "last_update": "2025-01-24 12:43:14", - "author_account_age_days": 1556 - }, - "https://github.com/yolanother/ComfyUI-Save16bitPng": { - "stars": 4, - "last_update": "2024-12-23 01:50:04", - "author_account_age_days": 5079 - }, - "https://github.com/yolanother/DTAIComfyImageSubmit": { - "stars": 1, - "last_update": "2024-09-25 04:40:23", - "author_account_age_days": 5079 - }, - "https://github.com/yolanother/DTAIComfyLoaders": { - "stars": 1, - "last_update": "2024-11-18 09:35:46", - "author_account_age_days": 5079 - }, - "https://github.com/yolanother/DTAIComfyPromptAgent": { - "stars": 5, - "last_update": "2024-05-22 18:14:18", - "author_account_age_days": 5079 - }, - "https://github.com/yolanother/DTAIComfyQRCodes": { - "stars": 3, - "last_update": "2024-05-22 18:15:09", - "author_account_age_days": 5079 - }, - "https://github.com/yolanother/DTAIComfyVariables": { - "stars": 10, - "last_update": "2024-05-22 18:15:21", - "author_account_age_days": 5079 - }, - "https://github.com/yolanother/DTAIImageToTextNode": { - "stars": 19, - "last_update": "2024-05-22 18:14:31", - "author_account_age_days": 5079 - }, - "https://github.com/yondonfu/ComfyUI-Background-Edit": { - "stars": 20, - "last_update": "2024-12-31 23:15:33", - "author_account_age_days": 4091 - }, - "https://github.com/yondonfu/ComfyUI-Torch-Compile": { - "stars": 3, - "last_update": "2024-12-25 18:42:17", - "author_account_age_days": 4091 - }, - "https://github.com/yorkane/ComfyUI-KYNode": { - "stars": 5, - "last_update": "2024-12-26 14:25:21", - "author_account_age_days": 3605 - }, - "https://github.com/youyegit/tdxh_node_comfyui": { - "stars": 3, - "last_update": "2024-10-23 01:56:00", - "author_account_age_days": 644 - }, - "https://github.com/yuan199696/add_text_2_img": { - "stars": 7, - "last_update": "2024-08-15 02:51:45", - "author_account_age_days": 2658 - }, - "https://github.com/yuan199696/chinese_clip_encode": { - "stars": 6, - "last_update": "2024-08-15 02:47:23", - "author_account_age_days": 2658 - }, - "https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": { - "stars": 92, - "last_update": "2024-12-02 18:15:56", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-Dwpose-Tensorrt": { - "stars": 21, - "last_update": "2024-10-01 11:19:11", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-Facerestore-Tensorrt": { - "stars": 16, - "last_update": "2024-09-22 13:07:19", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-PiperTTS": { - "stars": 29, - "last_update": "2024-05-22 23:17:27", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-Pronodes": { - "stars": 3, - "last_update": "2025-01-05 10:06:31", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-Rife-Tensorrt": { - "stars": 10, - "last_update": "2024-10-04 10:23:26", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-Upscaler-Tensorrt": { - "stars": 77, - "last_update": "2024-09-24 17:35:22", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-Video-Depth-Anything": { - "stars": 0, - "last_update": "2025-01-26 08:28:35", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-Vsgan": { - "stars": 3, - "last_update": "2024-05-22 23:17:02", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-Whisper": { - "stars": 85, - "last_update": "2024-08-06 05:31:10", - "author_account_age_days": 2368 - }, - "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt": { - "stars": 11, - "last_update": "2024-06-28 15:59:14", - "author_account_age_days": 2368 - }, - "https://github.com/yvann-ba/ComfyUI_Yvann-Nodes": { - "stars": 339, - "last_update": "2025-01-23 16:38:36", - "author_account_age_days": 1115 - }, - "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes": { - "stars": 7, - "last_update": "2024-10-19 12:15:24", - "author_account_age_days": 804 - }, - "https://github.com/zcfrank1st/Comfyui-Toolbox": { - "stars": 6, - "last_update": "2024-05-22 22:08:07", - "author_account_age_days": 4631 - }, - "https://github.com/zcfrank1st/Comfyui-Yolov8": { - "stars": 23, - "last_update": "2024-06-14 07:08:40", - "author_account_age_days": 4631 - }, - "https://github.com/zcfrank1st/comfyui_visual_anagrams": { - "stars": 8, - "last_update": "2024-06-14 07:07:27", - "author_account_age_days": 4631 - }, - "https://github.com/zer0TF/cute-comfy": { - "stars": 34, - "last_update": "2024-05-22 21:18:53", - "author_account_age_days": 2886 - }, - "https://github.com/zer0thgear/zer0-comfy-utils": { - "stars": 0, - "last_update": "2024-11-16 23:48:18", - "author_account_age_days": 332 - }, - "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer": { - "stars": 71, - "last_update": "2024-08-15 03:56:51", - "author_account_age_days": 2659 - }, - "https://github.com/zfkun/ComfyUI_zfkun": { - "stars": 22, - "last_update": "2025-01-01 13:48:04", - "author_account_age_days": 5078 - }, - "https://github.com/zhangp365/ComfyUI-utils-nodes": { - "stars": 47, - "last_update": "2025-01-17 11:40:12", - "author_account_age_days": 507 - }, - "https://github.com/zhangp365/ComfyUI_photomakerV2_native": { - "stars": 7, - "last_update": "2024-11-09 03:17:11", - "author_account_age_days": 507 - }, - "https://github.com/zhilemann/ComfyUI-moondream2": { - "stars": 2, - "last_update": "2024-12-29 13:17:31", - "author_account_age_days": 509 - }, - "https://github.com/zhiselfly/ComfyUI-Alimama-ControlNet-compatible": { - "stars": 18, - "last_update": "2024-09-14 13:46:05", - "author_account_age_days": 3565 - }, - "https://github.com/zhongpei/ComfyUI-InstructIR": { - "stars": 69, - "last_update": "2024-05-22 23:19:43", - "author_account_age_days": 3675 - }, - "https://github.com/zhuanqianfish/ComfyUI-EasyNode": { - "stars": 65, - "last_update": "2024-06-14 07:10:18", - "author_account_age_days": 4450 - }, - "https://github.com/zhulu111/ComfyUI_Bxb": { - "stars": 1255, - "last_update": "2024-12-13 08:42:11", - "author_account_age_days": 255 - }, - "https://github.com/ziwang-com/comfyui-deepseek-r1": { - "stars": 8, - "last_update": "2025-01-23 10:50:37", - "author_account_age_days": 3592 - }, - "https://github.com/zmwv823/ComfyUI_Anytext": { - "stars": 38, - "last_update": "2025-01-22 13:33:05", - "author_account_age_days": 3485 - }, - "https://github.com/zohac/ComfyUI_ZC_DrawShape": { - "stars": 3, - "last_update": "2024-06-25 15:05:28", - "author_account_age_days": 2877 - }, - "https://github.com/zombieyang/sd-ppp": { - "stars": 713, - "last_update": "2025-01-16 04:50:15", - "author_account_age_days": 4133 - }, - "https://github.com/zubenelakrab/ComfyUI-ASV-Nodes": { - "stars": 2, - "last_update": "2024-11-04 00:51:29", - "author_account_age_days": 5177 - } -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/cm_global.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/cm_global.cpython-312.pyc deleted file mode 100644 index 6f254e04d59eae937cc6e6b0f6617aedbaef0371..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/cm_global.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/cnr_utils.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/cnr_utils.cpython-312.pyc deleted file mode 100644 index 9db2839053a44accc7faf2dda7e04c6fd20cc046..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/cnr_utils.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/git_utils.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/git_utils.cpython-312.pyc deleted file mode 100644 index f1f1b61696520ac3ebab93964e347b5a65588bcf..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/git_utils.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/manager_core.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/manager_core.cpython-312.pyc deleted file mode 100644 index 4035c20abbc38e27ff0d4751bdf54402efeb8e46..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/manager_core.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/manager_downloader.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/manager_downloader.cpython-312.pyc deleted file mode 100644 index bca1814184fc980402dfef2bf2fa49a971156f20..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/manager_downloader.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/manager_server.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/manager_server.cpython-312.pyc deleted file mode 100644 index 23a1a7507e7d23c0f6c1515591386859e7445ee0..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/manager_server.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/manager_util.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/manager_util.cpython-312.pyc deleted file mode 100644 index 8cc3c0e798fb287c22f24e91d44da46aaed52a59..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/manager_util.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/node_package.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/node_package.cpython-312.pyc deleted file mode 100644 index 8ce4ad36a1987293309eddc73417f87966499908..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/node_package.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/security_check.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/security_check.cpython-312.pyc deleted file mode 100644 index aad3d815f2395718811c021419b859a1c41f72c4..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/security_check.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/__pycache__/share_3rdparty.cpython-312.pyc b/custom_nodes/comfyui-manager/glob/__pycache__/share_3rdparty.cpython-312.pyc deleted file mode 100644 index 1efc04e2124b60288fe7394509f24deea71ab4ae..0000000000000000000000000000000000000000 Binary files a/custom_nodes/comfyui-manager/glob/__pycache__/share_3rdparty.cpython-312.pyc and /dev/null differ diff --git a/custom_nodes/comfyui-manager/glob/cm_global.py b/custom_nodes/comfyui-manager/glob/cm_global.py deleted file mode 100644 index 71e1bb58154986a7494df27c1e34c34cc627055e..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/cm_global.py +++ /dev/null @@ -1,115 +0,0 @@ -import traceback - -# -# Global Var -# -# Usage: -# import cm_global -# cm_global.variables['comfyui.revision'] = 1832 -# print(f"log mode: {cm_global.variables['logger.enabled']}") -# -variables = {} - - -# -# Global API -# -# Usage: -# [register API] -# import cm_global -# -# def api_hello(msg): -# print(f"hello: {msg}") -# return msg -# -# cm_global.register_api('hello', api_hello) -# -# [use API] -# import cm_global -# -# test = cm_global.try_call(api='hello', msg='an example') -# print(f"'{test}' is returned") -# - -APIs = {} - - -def register_api(k, f): - global APIs - APIs[k] = f - - -def try_call(**kwargs): - if 'api' in kwargs: - api_name = kwargs['api'] - try: - api = APIs.get(api_name) - if api is not None: - del kwargs['api'] - return api(**kwargs) - else: - print(f"WARN: The '{kwargs['api']}' API has not been registered.") - except Exception as e: - print(f"ERROR: An exception occurred while calling the '{api_name}' API.") - raise e - else: - return None - - -# -# Extension Info -# -# Usage: -# import cm_global -# -# cm_global.extension_infos['my_extension'] = {'version': [0, 1], 'name': 'me', 'description': 'example extension', } -# -extension_infos = {} - -on_extension_registered_handlers = {} - - -def register_extension(extension_name, v): - global extension_infos - global on_extension_registered_handlers - extension_infos[extension_name] = v - - if extension_name in on_extension_registered_handlers: - for k, f in on_extension_registered_handlers[extension_name]: - try: - f(extension_name, v) - except Exception: - print(f"[ERROR] '{k}' on_extension_registered_handlers") - traceback.print_exc() - - del on_extension_registered_handlers[extension_name] - - -def add_on_extension_registered(k, extension_name, f): - global on_extension_registered_handlers - if extension_name in extension_infos: - try: - v = extension_infos[extension_name] - f(extension_name, v) - except Exception: - print(f"[ERROR] '{k}' on_extension_registered_handler") - traceback.print_exc() - else: - if extension_name not in on_extension_registered_handlers: - on_extension_registered_handlers[extension_name] = [] - - on_extension_registered_handlers[extension_name].append((k, f)) - - -def add_on_revision_detected(k, f): - if 'comfyui.revision' in variables: - try: - f(variables['comfyui.revision']) - except Exception: - print(f"[ERROR] '{k}' on_revision_detected_handler") - traceback.print_exc() - else: - variables['cm.on_revision_detected_handler'].append((k, f)) - - -error_dict = {} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/glob/cnr_utils.py b/custom_nodes/comfyui-manager/glob/cnr_utils.py deleted file mode 100644 index 5add97fe89526a1d3b061240b8cc0c8d0501f0d9..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/cnr_utils.py +++ /dev/null @@ -1,213 +0,0 @@ -import requests -from dataclasses import dataclass -from typing import List -import manager_util -import toml -import os -import asyncio -import json -import time - -base_url = "https://api.comfy.org" - - -lock = asyncio.Lock() - -is_cache_loading = False - -async def get_cnr_data(cache_mode=True, dont_wait=True): - try: - return await _get_cnr_data(cache_mode, dont_wait) - except asyncio.TimeoutError: - print("A timeout occurred during the fetch process from ComfyRegistry.") - return await _get_cnr_data(cache_mode=True, dont_wait=True) # timeout fallback - -async def _get_cnr_data(cache_mode=True, dont_wait=True): - global is_cache_loading - - uri = f'{base_url}/nodes' - - async def fetch_all(): - remained = True - page = 1 - - full_nodes = {} - while remained: - sub_uri = f'{base_url}/nodes?page={page}&limit=30' - sub_json_obj = await asyncio.wait_for(manager_util.get_data_with_cache(sub_uri, cache_mode=False, silent=True), timeout=30) - remained = page < sub_json_obj['totalPages'] - - for x in sub_json_obj['nodes']: - full_nodes[x['id']] = x - - if page % 5 == 0: - print(f"FETCH ComfyRegistry Data: {page}/{sub_json_obj['totalPages']}") - - page += 1 - time.sleep(0.5) - - print("FETCH ComfyRegistry Data [DONE]") - - for v in full_nodes.values(): - if 'latest_version' not in v: - v['latest_version'] = dict(version='nightly') - - return {'nodes': list(full_nodes.values())} - - if cache_mode: - is_cache_loading = True - cache_state = manager_util.get_cache_state(uri) - - if dont_wait: - if cache_state == 'not-cached': - return {} - else: - print("[ComfyUI-Manager] The ComfyRegistry cache update is still in progress, so an outdated cache is being used.") - with open(manager_util.get_cache_path(uri), 'r', encoding="UTF-8", errors="ignore") as json_file: - return json.load(json_file)['nodes'] - - if cache_state == 'cached': - with open(manager_util.get_cache_path(uri), 'r', encoding="UTF-8", errors="ignore") as json_file: - return json.load(json_file)['nodes'] - - try: - json_obj = await fetch_all() - manager_util.save_to_cache(uri, json_obj) - return json_obj['nodes'] - except: - res = {} - print("Cannot connect to comfyregistry.") - finally: - if cache_mode: - is_cache_loading = False - - return res - - -@dataclass -class NodeVersion: - changelog: str - dependencies: List[str] - deprecated: bool - id: str - version: str - download_url: str - - -def map_node_version(api_node_version): - """ - Maps node version data from API response to NodeVersion dataclass. - - Args: - api_data (dict): The 'node_version' part of the API response. - - Returns: - NodeVersion: An instance of NodeVersion dataclass populated with data from the API. - """ - return NodeVersion( - changelog=api_node_version.get( - "changelog", "" - ), # Provide a default value if 'changelog' is missing - dependencies=api_node_version.get( - "dependencies", [] - ), # Provide a default empty list if 'dependencies' is missing - deprecated=api_node_version.get( - "deprecated", False - ), # Assume False if 'deprecated' is not specified - id=api_node_version[ - "id" - ], # 'id' should be mandatory; raise KeyError if missing - version=api_node_version[ - "version" - ], # 'version' should be mandatory; raise KeyError if missing - download_url=api_node_version.get( - "downloadUrl", "" - ), # Provide a default value if 'downloadUrl' is missing - ) - - -def install_node(node_id, version=None): - """ - Retrieves the node version for installation. - - Args: - node_id (str): The unique identifier of the node. - version (str, optional): Specific version of the node to retrieve. If omitted, the latest version is returned. - - Returns: - NodeVersion: Node version data or error message. - """ - if version is None: - url = f"{base_url}/nodes/{node_id}/install" - else: - url = f"{base_url}/nodes/{node_id}/install?version={version}" - - response = requests.get(url) - if response.status_code == 200: - # Convert the API response to a NodeVersion object - return map_node_version(response.json()) - else: - return None - - -def all_versions_of_node(node_id): - url = f"{base_url}/nodes/{node_id}/versions?statuses=NodeVersionStatusActive&statuses=NodeVersionStatusPending" - - response = requests.get(url) - if response.status_code == 200: - return response.json() - else: - return None - - -def read_cnr_info(fullpath): - try: - toml_path = os.path.join(fullpath, 'pyproject.toml') - tracking_path = os.path.join(fullpath, '.tracking') - - if not os.path.exists(toml_path) or not os.path.exists(tracking_path): - return None # not valid CNR node pack - - with open(toml_path, "r", encoding="utf-8") as f: - data = toml.load(f) - - project = data.get('project', {}) - name = project.get('name').strip().lower() - version = project.get('version') - - urls = project.get('urls', {}) - repository = urls.get('Repository') - - if name and version: # repository is optional - return { - "id": name, - "version": version, - "url": repository - } - - return None - except Exception: - return None # not valid CNR node pack - - -def generate_cnr_id(fullpath, cnr_id): - cnr_id_path = os.path.join(fullpath, '.git', '.cnr-id') - try: - if not os.path.exists(cnr_id_path): - with open(cnr_id_path, "w") as f: - return f.write(cnr_id) - except: - print(f"[ComfyUI Manager] unable to create file: {cnr_id_path}") - - -def read_cnr_id(fullpath): - cnr_id_path = os.path.join(fullpath, '.git', '.cnr-id') - try: - if os.path.exists(cnr_id_path): - with open(cnr_id_path) as f: - return f.read().strip() - except: - pass - - return None - diff --git a/custom_nodes/comfyui-manager/glob/git_utils.py b/custom_nodes/comfyui-manager/glob/git_utils.py deleted file mode 100644 index 3ff6aa1d1c605ddeae3001bef274b45a9fcd0e4f..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/git_utils.py +++ /dev/null @@ -1,61 +0,0 @@ -import os -import configparser - - -def is_git_repo(path: str) -> bool: - """ Check if the path is a git repository. """ - # NOTE: Checking it through `git.Repo` must be avoided. - # It locks the file, causing issues on Windows. - return os.path.exists(os.path.join(path, '.git')) - - -def get_commit_hash(fullpath): - git_head = os.path.join(fullpath, '.git', 'HEAD') - if os.path.exists(git_head): - with open(git_head) as f: - line = f.readline() - - if line.startswith("ref: "): - ref = os.path.join(fullpath, '.git', line[5:].strip()) - if os.path.exists(ref): - with open(ref) as f2: - return f2.readline().strip() - else: - return "unknown" - else: - return line - - return "unknown" - - -def git_url(fullpath): - """ - resolve version of unclassified custom node based on remote url in .git/config - """ - git_config_path = os.path.join(fullpath, '.git', 'config') - - if not os.path.exists(git_config_path): - return None - - config = configparser.ConfigParser() - config.read(git_config_path) - - for k, v in config.items(): - if k.startswith('remote ') and 'url' in v: - return v['url'] - - return None - -def normalize_url(url) -> str: - url = url.replace("git@github.com:", "https://github.com/") - if url.endswith('.git'): - url = url[:-4] - - return url - -def normalize_url_http(url) -> str: - url = url.replace("https://github.com/", "git@github.com:") - if url.endswith('.git'): - url = url[:-4] - - return url \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/glob/manager_core.py b/custom_nodes/comfyui-manager/glob/manager_core.py deleted file mode 100644 index 58922d7212678fabcb0359ccdb3d4edf45581bb5..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/manager_core.py +++ /dev/null @@ -1,3212 +0,0 @@ -""" -description: - `manager_core` contains the core implementation of the management functions in ComfyUI-Manager. -""" - -import json -import os -import sys -import subprocess -import re -import shutil -import configparser -import platform -from datetime import datetime - -import git -from git.remote import RemoteProgress -from urllib.parse import urlparse -from tqdm.auto import tqdm -import time -import yaml -import zipfile -import traceback -from concurrent.futures import ThreadPoolExecutor, as_completed - -orig_print = print - -from rich import print -from packaging import version - -import uuid - -glob_path = os.path.join(os.path.dirname(__file__)) # ComfyUI-Manager/glob -sys.path.append(glob_path) - -import cm_global -import cnr_utils -import manager_util -import git_utils -import manager_downloader -from node_package import InstalledNodePackage - - -version_code = [3, 9, 4] -version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '') - - -DEFAULT_CHANNEL = "https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main" - - -default_custom_nodes_path = None - - -def get_default_custom_nodes_path(): - global default_custom_nodes_path - if default_custom_nodes_path is None: - try: - import folder_paths - default_custom_nodes_path = folder_paths.get_folder_paths("custom_nodes")[0] - except: - default_custom_nodes_path = os.path.abspath(os.path.join(manager_util.comfyui_manager_path, '..')) - - return default_custom_nodes_path - - -def get_custom_nodes_paths(): - try: - import folder_paths - return folder_paths.get_folder_paths("custom_nodes") - except: - custom_nodes_path = os.path.abspath(os.path.join(manager_util.comfyui_manager_path, '..')) - return [custom_nodes_path] - - -def get_comfyui_tag(): - repo = git.Repo(comfy_path) - try: - return repo.git.describe('--tags') - except: - return None - - -def get_script_env(): - new_env = os.environ.copy() - git_exe = get_config().get('git_exe') - if git_exe is not None: - new_env['GIT_EXE_PATH'] = git_exe - - if 'COMFYUI_PATH' not in new_env: - new_env['COMFYUI_PATH'] = comfy_path - - if 'COMFYUI_FOLDERS_BASE_PATH' not in new_env: - new_env['COMFYUI_FOLDERS_BASE_PATH'] = comfy_path - - return new_env - - -invalid_nodes = {} - - -def extract_base_custom_nodes_dir(x:str): - if os.path.dirname(x).endswith('.disabled'): - return os.path.dirname(os.path.dirname(x)) - elif x.endswith('.disabled'): - return os.path.dirname(x) - else: - return os.path.dirname(x) - - -def check_invalid_nodes(): - global invalid_nodes - - try: - import folder_paths - except: - try: - sys.path.append(comfy_path) - import folder_paths - except: - raise Exception(f"Invalid COMFYUI_FOLDERS_BASE_PATH: {comfy_path}") - - def check(root): - global invalid_nodes - - subdirs = [d for d in os.listdir(root) if os.path.isdir(os.path.join(root, d))] - for subdir in subdirs: - if subdir in ['.disabled', '__pycache__']: - continue - - package = unified_manager.installed_node_packages.get(subdir) - if not package: - continue - - if not package.isValid(): - invalid_nodes[subdir] = package.fullpath - - node_paths = folder_paths.get_folder_paths("custom_nodes") - for x in node_paths: - check(x) - - disabled_dir = os.path.join(x, '.disabled') - if os.path.exists(disabled_dir): - check(disabled_dir) - - if len(invalid_nodes): - print("\n-------------------- ComfyUI-Manager invalid nodes notice ----------------") - print("\nNodes requiring reinstallation have been detected:\n(Directly delete the corresponding path and reinstall.)\n") - - for x in invalid_nodes.values(): - print(x) - - print("\n---------------------------------------------------------------------------\n") - - -# read env vars -comfy_path = os.environ.get('COMFYUI_PATH') -comfy_base_path = os.environ.get('COMFYUI_FOLDERS_BASE_PATH') - -if comfy_path is None: - try: - import folder_paths - comfy_path = os.path.join(os.path.dirname(folder_paths.__file__)) - except: - comfy_path = os.path.abspath(os.path.join(manager_util.comfyui_manager_path, '..', '..')) - -if comfy_base_path is None: - comfy_base_path = comfy_path - - -channel_list_template_path = os.path.join(manager_util.comfyui_manager_path, 'channels.list.template') -git_script_path = os.path.join(manager_util.comfyui_manager_path, "git_helper.py") - -manager_files_path = None -manager_config_path = None -manager_channel_list_path = None -manager_startup_script_path = None -manager_snapshot_path = None -manager_pip_overrides_path = None -manager_components_path = None - -def update_user_directory(user_dir): - global manager_files_path - global manager_config_path - global manager_channel_list_path - global manager_startup_script_path - global manager_snapshot_path - global manager_pip_overrides_path - global manager_components_path - - manager_files_path = os.path.abspath(os.path.join(user_dir, 'default', 'ComfyUI-Manager')) - if not os.path.exists(manager_files_path): - os.makedirs(manager_files_path) - - manager_snapshot_path = os.path.join(manager_files_path, "snapshots") - if not os.path.exists(manager_snapshot_path): - os.makedirs(manager_snapshot_path) - - manager_startup_script_path = os.path.join(manager_files_path, "startup-scripts") - if not os.path.exists(manager_startup_script_path): - os.makedirs(manager_startup_script_path) - - manager_config_path = os.path.join(manager_files_path, 'config.ini') - manager_channel_list_path = os.path.join(manager_files_path, 'channels.list') - manager_pip_overrides_path = os.path.join(manager_files_path, "pip_overrides.json") - manager_components_path = os.path.join(manager_files_path, "components") - manager_util.cache_dir = os.path.join(manager_files_path, "cache") - - if not os.path.exists(manager_util.cache_dir): - os.makedirs(manager_util.cache_dir) - -try: - import folder_paths - update_user_directory(folder_paths.get_user_directory()) - -except Exception: - # fallback: - # This case is only possible when running with cm-cli, and in practice, this case is not actually used. - update_user_directory(os.path.abspath(manager_util.comfyui_manager_path)) - - -cached_config = None -js_path = None - -comfy_ui_required_revision = 1930 -comfy_ui_required_commit_datetime = datetime(2024, 1, 24, 0, 0, 0) - -comfy_ui_revision = "Unknown" -comfy_ui_commit_datetime = datetime(1900, 1, 1, 0, 0, 0) - -channel_dict = None -channel_list = None - - -def remap_pip_package(pkg): - if pkg in cm_global.pip_overrides: - res = cm_global.pip_overrides[pkg] - print(f"[ComfyUI-Manager] '{pkg}' is remapped to '{res}'") - return res - else: - return pkg - - -def is_blacklisted(name): - name = name.strip() - - pattern = r'([^<>!~=]+)([<>!~=]=?)([^ ]*)' - match = re.search(pattern, 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 = manager_util.get_installed_packages() - - if match is None: - if name in pips: - return True - elif match.group(2) in ['<=', '==', '<', '~=']: - if name in pips: - if manager_util.StrictVersion(pips[name]) >= manager_util.StrictVersion(match.group(3)): - return True - - return False - - -def is_installed(name): - name = name.strip() - - if name.startswith('#'): - return True - - pattern = r'([^<>!~=]+)([<>!~=]=?)([0-9.a-zA-Z]*)' - match = re.search(pattern, 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 = manager_util.get_installed_packages() - - if match is None: - if name in pips: - return True - elif match.group(2) in ['<=', '==', '<', '~=']: - if name in pips: - if manager_util.StrictVersion(pips[name]) >= manager_util.StrictVersion(match.group(3)): - print(f"[ComfyUI-Manager] skip black listed pip installation: '{name}'") - return True - - pkg = manager_util.get_installed_packages().get(name.lower()) - if pkg is None: - return False # update if not installed - - if match is None: - return True # don't update if version is not specified - - if match.group(2) in ['>', '>=']: - if manager_util.StrictVersion(pkg) < manager_util.StrictVersion(match.group(3)): - return False - elif manager_util.StrictVersion(pkg) > manager_util.StrictVersion(match.group(3)): - print(f"[SKIP] Downgrading pip package isn't allowed: {name.lower()} (cur={pkg})") - - if match.group(2) == '==': - if manager_util.StrictVersion(pkg) < manager_util.StrictVersion(match.group(3)): - return False - - if match.group(2) == '~=': - if manager_util.StrictVersion(pkg) == manager_util.StrictVersion(match.group(3)): - return False - - return name.lower() in manager_util.get_installed_packages() - - -def normalize_channel(channel): - if channel == 'local': - return channel - elif channel is None: - return None - elif channel.startswith('https://'): - return channel - - tmp_dict = get_channel_dict() - channel_url = tmp_dict.get(channel) - if channel_url: - return channel_url - - raise Exception(f"Invalid channel name '{channel}'") - - -class ManagedResult: - def __init__(self, action): - self.action = action - self.items = [] - self.result = True - self.to_path = None - self.msg = None - self.target = None - self.postinstall = lambda: True - - def append(self, item): - self.items.append(item) - - def fail(self, msg): - self.result = False - self.msg = msg - return self - - def with_target(self, target): - self.target = target - return self - - def with_msg(self, msg): - self.msg = msg - return self - - def with_postinstall(self, postinstall): - self.postinstall = postinstall - return self - - -class UnifiedManager: - def __init__(self): - self.installed_node_packages: dict[str, InstalledNodePackage] = {} - - self.cnr_inactive_nodes = {} # node_id -> node_version -> fullpath - self.nightly_inactive_nodes = {} # node_id -> fullpath - self.unknown_inactive_nodes = {} # node_id -> repo url * fullpath - self.active_nodes = {} # node_id -> node_version * fullpath - self.unknown_active_nodes = {} # node_id -> repo url * fullpath - self.cnr_map = {} # node_id -> cnr info - self.repo_cnr_map = {} # repo_url -> cnr info - self.custom_node_map_cache = {} # (channel, mode) -> augmented custom node list json - self.processed_install = set() - - def get_module_name(self, x): - info = self.active_nodes.get(x) - if info is None: - for url, fullpath in self.unknown_active_nodes.values(): - if url == x: - return os.path.basename(fullpath) - else: - return os.path.basename(info[1]) - - return None - - def get_cnr_by_repo(self, url): - return self.repo_cnr_map.get(git_utils.normalize_url(url)) - - def resolve_unspecified_version(self, node_name, guess_mode=None): - if guess_mode == 'active': - # priority: - # 1. CNR/nightly active nodes - # 2. unknown - # 3. Fail - - if node_name in self.cnr_map: - version_spec = self.get_from_cnr_active_nodes(node_name) - - if version_spec is None: - if node_name in self.unknown_active_nodes: - version_spec = "unknown" - else: - return None - - elif node_name in self.unknown_active_nodes: - version_spec = "unknown" - else: - return None - - elif guess_mode == 'inactive': - # priority: - # 1. CNR latest in inactive - # 2. nightly - # 3. unknown - # 4. Fail - - if node_name in self.cnr_map: - latest = self.get_from_cnr_inactive_nodes(node_name) - - if latest is not None: - version_spec = str(latest[0]) - else: - if node_name in self.nightly_inactive_nodes: - version_spec = "nightly" - else: - version_spec = "unknown" - - elif node_name in self.unknown_inactive_nodes: - version_spec = "unknown" - else: - return None - - else: - # priority: - # 1. CNR latest in world - # 2. unknown - - if node_name in self.cnr_map: - version_spec = self.cnr_map[node_name]['latest_version']['version'] - else: - version_spec = "unknown" - - return version_spec - - def resolve_node_spec(self, node_name, guess_mode=None): - """ - resolve to 'node_name, version_spec' from version string - - version string: - node_name@latest - node_name@nightly - node_name@unknown - node_name@ - node_name - - if guess_mode is 'active' or 'inactive' - return can be 'None' based on state check - otherwise - return 'unknown' version when failed to guess - """ - - spec = node_name.split('@') - - if len(spec) == 2: - node_name = spec[0] - version_spec = spec[1] - - if version_spec == 'latest': - if node_name not in self.cnr_map: - print(f"ERROR: '{node_name}' is not a CNR node.") - return None - else: - version_spec = self.cnr_map[node_name]['latest_version']['version'] - - elif guess_mode in ['active', 'inactive']: - node_name = spec[0] - version_spec = self.resolve_unspecified_version(node_name, guess_mode=guess_mode) - if version_spec is None: - return None - else: - node_name = spec[0] - version_spec = self.resolve_unspecified_version(node_name) - if version_spec is None: - return None - - return node_name, version_spec, len(spec) > 1 - - def resolve_from_path(self, fullpath): - url = git_utils.git_url(fullpath) - if url: - cnr = self.get_cnr_by_repo(url) - commit_hash = git_utils.get_commit_hash(fullpath) - if cnr: - cnr_utils.generate_cnr_id(fullpath, cnr['id']) - return {'id': cnr['id'], 'cnr': cnr, 'ver': 'nightly', 'hash': commit_hash} - else: - url = os.path.basename(url) - if url.endswith('.git'): - url = url[:-4] - return {'id': url, 'ver': 'unknown', 'hash': commit_hash} - else: - info = cnr_utils.read_cnr_info(fullpath) - - if info: - cnr = self.cnr_map.get(info['id']) - if cnr: - return {'id': cnr['id'], 'cnr': cnr, 'ver': info['version']} - else: - return None - else: - return None - - def update_cache_at_path(self, fullpath): - node_package = InstalledNodePackage.from_fullpath(fullpath, self.resolve_from_path) - self.installed_node_packages[node_package.id] = node_package - - if node_package.is_disabled and node_package.is_unknown: - url = git_utils.git_url(node_package.fullpath) - self.unknown_inactive_nodes[node_package.id] = (url, node_package.fullpath) - - if node_package.is_disabled and node_package.is_nightly: - self.nightly_inactive_nodes[node_package.id] = node_package.fullpath - - if node_package.is_enabled and not node_package.is_unknown: - self.active_nodes[node_package.id] = node_package.version, node_package.fullpath - - if node_package.is_enabled and node_package.is_unknown: - url = git_utils.git_url(node_package.fullpath) - self.unknown_active_nodes[node_package.id] = (url, node_package.fullpath) - - if node_package.is_from_cnr and node_package.is_disabled: - self.add_to_cnr_inactive_nodes(node_package.id, node_package.version, node_package.fullpath) - - def is_updatable(self, node_id): - cur_ver = self.get_cnr_active_version(node_id) - latest_ver = self.cnr_map[node_id]['latest_version']['version'] - - if cur_ver and latest_ver: - return self.safe_version(latest_ver) > self.safe_version(cur_ver) - - return False - - def fetch_or_pull_git_repo(self, is_pull=False): - updated = set() - failed = set() - - def check_update(node_name, fullpath, ver_spec): - try: - if is_pull: - is_updated, success = git_repo_update_check_with(fullpath, do_update=True) - else: - is_updated, success = git_repo_update_check_with(fullpath, do_fetch=True) - - return f"{node_name}@{ver_spec}", is_updated, success - except Exception: - traceback.print_exc() - - return f"{node_name}@{ver_spec}", False, False - - with ThreadPoolExecutor() as executor: - futures = [] - - for k, v in self.unknown_active_nodes.items(): - futures.append(executor.submit(check_update, k, v[1], 'unknown')) - - for k, v in self.active_nodes.items(): - if v[0] == 'nightly': - futures.append(executor.submit(check_update, k, v[1], 'nightly')) - - for future in as_completed(futures): - item, is_updated, success = future.result() - - if is_updated: - updated.add(item) - - if not success: - failed.add(item) - - return dict(updated=list(updated), failed=list(failed)) - - def is_enabled(self, node_id, version_spec=None): - """ - 1. true if node_id@ is enabled - 2. true if node_id@ is enabled and version_spec==None - 3. false otherwise - - remark: latest version_spec is not allowed. Must be resolved before call. - """ - if version_spec == "cnr": - return self.get_cnr_active_version(node_id) not in [None, 'nightly'] - elif version_spec == 'unknown' and self.is_unknown_active(node_id): - return True - elif version_spec is not None and self.get_cnr_active_version(node_id) == version_spec: - return True - elif version_spec is None and (node_id in self.active_nodes or node_id in self.unknown_active_nodes): - return True - return False - - def is_disabled(self, node_id, version_spec=None): - """ - 1. node_id@unknown is disabled if version_spec is @unknown - 2. node_id@nightly is disabled if version_spec is @nightly - 4. node_id@ is disabled if version_spec is not None - 5. not exists (active node_id) if version_spec is None - - remark: latest version_spec is not allowed. Must be resolved before call. - """ - if version_spec == "unknown": - return node_id in self.unknown_inactive_nodes - elif version_spec == "nightly": - return node_id in self.nightly_inactive_nodes - elif version_spec == "cnr": - res = self.cnr_inactive_nodes.get(node_id, None) - if res is None: - return False - - res = [x for x in res.keys() if x != 'nightly'] - return len(res) > 0 - elif version_spec is not None: - return version_spec in self.cnr_inactive_nodes.get(node_id, []) - - if node_id in self.nightly_inactive_nodes: - return True - elif node_id in self.unknown_inactive_nodes: - return True - - target = self.cnr_inactive_nodes.get(node_id, None) - if target is not None and target == version_spec: - return True - - return False - - def is_registered_in_cnr(self, node_id): - return node_id in self.cnr_map - - def get_cnr_active_version(self, node_id): - res = self.active_nodes.get(node_id) - if res: - return res[0] - else: - return None - - def is_unknown_active(self, node_id): - return node_id in self.unknown_active_nodes - - def add_to_cnr_inactive_nodes(self, node_id, ver, fullpath): - ver_map = self.cnr_inactive_nodes.get(node_id) - if ver_map is None: - ver_map = {} - self.cnr_inactive_nodes[node_id] = ver_map - - ver_map[ver] = fullpath - - def get_from_cnr_active_nodes(self, node_id): - ver_path = self.active_nodes.get(node_id) - if ver_path is None: - return None - - return ver_path[0] - - def get_from_cnr_inactive_nodes(self, node_id, ver=None): - ver_map = self.cnr_inactive_nodes.get(node_id) - if ver_map is None: - return None - - if ver is not None: - return ver_map.get(ver) - - latest = None - for k, v in ver_map.items(): - if latest is None: - latest = self.safe_version(k), v - continue - - cur_ver = self.safe_version(k) - if cur_ver > latest[0]: - latest = cur_ver, v - - return latest - - async def reload(self, cache_mode, dont_wait=True): - self.custom_node_map_cache = {} - self.cnr_inactive_nodes = {} # node_id -> node_version -> fullpath - self.nightly_inactive_nodes = {} # node_id -> fullpath - self.unknown_inactive_nodes = {} # node_id -> repo url * fullpath - self.unknown_active_nodes = {} # node_id -> repo url * fullpath - self.active_nodes = {} # node_id -> node_version * fullpath - - # reload 'cnr_map' and 'repo_cnr_map' - cnrs = await cnr_utils.get_cnr_data(cache_mode=cache_mode=='cache', dont_wait=dont_wait) - - for x in cnrs: - self.cnr_map[x['id']] = x - if 'repository' in x: - normalized_url = git_utils.normalize_url(x['repository']) - self.repo_cnr_map[normalized_url] = x - - # reload node status info from custom_nodes/* - for custom_nodes_path in folder_paths.get_folder_paths('custom_nodes'): - for x in os.listdir(custom_nodes_path): - fullpath = os.path.join(custom_nodes_path, x) - if os.path.isdir(fullpath): - if x not in ['__pycache__', '.disabled']: - self.update_cache_at_path(fullpath) - - # reload node status info from custom_nodes/.disabled/* - for custom_nodes_path in folder_paths.get_folder_paths('custom_nodes'): - disabled_dir = os.path.join(custom_nodes_path, '.disabled') - if os.path.exists(disabled_dir): - for x in os.listdir(disabled_dir): - fullpath = os.path.join(disabled_dir, x) - if os.path.isdir(fullpath): - self.update_cache_at_path(fullpath) - - @staticmethod - async def load_nightly(channel, mode): - res = {} - - channel_url = normalize_channel(channel) - if channel_url: - if mode not in ['remote', 'local', 'cache']: - print(f"[bold red]ERROR: Invalid mode is specified `--mode {mode}`[/bold red]", file=sys.stderr) - return {} - - json_obj = await get_data_by_mode(mode, 'custom-node-list.json', channel_url=channel_url) - for x in json_obj['custom_nodes']: - for y in x['files']: - if 'github.com' in y and not (y.endswith('.py') or y.endswith('.js')): - repo_name = y.split('/')[-1] - res[repo_name] = (x, False) - - if 'id' in x: - if x['id'] not in res: - res[x['id']] = (x, True) - - return res - - async def get_custom_nodes(self, channel, mode): - # default_channel = normalize_channel('default') - # cache = self.custom_node_map_cache.get((default_channel, mode)) # CNR/nightly should always be based on the default channel. - - channel = normalize_channel(channel) - cache = self.custom_node_map_cache.get((channel, mode)) # CNR/nightly should always be based on the default channel. - - if cache is not None: - return cache - - channel = normalize_channel(channel) - print(f"nightly_channel: {channel}/{mode}") - nodes = await self.load_nightly(channel, mode) - - res = {} - added_cnr = set() - for v in nodes.values(): - v = v[0] - if len(v['files']) == 1: - cnr = self.get_cnr_by_repo(v['files'][0]) - if cnr: - if 'latest_version' not in cnr: - v['cnr_latest'] = '0.0.0' - else: - v['cnr_latest'] = cnr['latest_version']['version'] - v['id'] = cnr['id'] - v['author'] = cnr['publisher']['name'] - v['title'] = cnr['name'] - v['description'] = cnr['description'] - v['health'] = '-' - if 'repository' in cnr: - v['repository'] = cnr['repository'] - added_cnr.add(cnr['id']) - node_id = v['id'] - else: - node_id = v['files'][0].split('/')[-1] - res[node_id] = v - elif len(v['files']) > 1: - res[v['files'][0]] = v # A custom node composed of multiple url is treated as a single repository with one representative path - - self.custom_node_map_cache[(channel, mode)] = res - return res - - @staticmethod - def safe_version(ver_str): - try: - return version.parse(ver_str) - except: - return version.parse("0.0.0") - - def execute_install_script(self, url, repo_path, instant_execution=False, lazy_mode=False, no_deps=False): - install_script_path = os.path.join(repo_path, "install.py") - requirements_path = os.path.join(repo_path, "requirements.txt") - - if lazy_mode: - install_cmd = ["#LAZY-INSTALL-SCRIPT", sys.executable] - return try_install_script(url, repo_path, install_cmd) - else: - if os.path.exists(requirements_path) and not no_deps: - print("Install: pip packages") - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - res = True - with open(requirements_path, "r") as requirements_file: - for line in requirements_file: - package_name = remap_pip_package(line.strip()) - if package_name and not package_name.startswith('#') and package_name not in self.processed_install: - self.processed_install.add(package_name) - install_cmd = [sys.executable, "-m", "pip", "install", package_name] - if package_name.strip() != "" and not package_name.startswith('#'): - res = res and try_install_script(url, repo_path, install_cmd, instant_execution=instant_execution) - - pip_fixer.fix_broken() - return res - - if os.path.exists(install_script_path) and install_script_path not in self.processed_install: - self.processed_install.add(install_script_path) - print("Install: install script") - install_cmd = [sys.executable, "install.py"] - return try_install_script(url, repo_path, install_cmd, instant_execution=instant_execution) - - return True - - def reserve_cnr_switch(self, target, zip_url, from_path, to_path, no_deps): - script_path = os.path.join(manager_startup_script_path, "install-scripts.txt") - with open(script_path, "a") as file: - obj = [target, "#LAZY-CNR-SWITCH-SCRIPT", zip_url, from_path, to_path, no_deps, get_default_custom_nodes_path(), sys.executable] - file.write(f"{obj}\n") - - print(f"Installation reserved: {target}") - - return True - - def reserve_migration(self, moves): - script_path = os.path.join(manager_startup_script_path, "install-scripts.txt") - with open(script_path, "a") as file: - obj = ["", "#LAZY-MIGRATION", moves] - file.write(f"{obj}\n") - - return True - - def unified_fix(self, node_id, version_spec, instant_execution=False, no_deps=False): - """ - fix dependencies - """ - - result = ManagedResult('fix') - - if version_spec == 'unknown': - info = self.unknown_active_nodes.get(node_id) - else: - info = self.active_nodes.get(node_id) - - if info is None or not os.path.exists(info[1]): - return result.fail(f'not found: {node_id}@{version_spec}') - - self.execute_install_script(node_id, info[1], instant_execution=instant_execution, no_deps=no_deps) - - return result - - def cnr_switch_version(self, node_id, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False): - if instant_execution: - return self.cnr_switch_version_instant(node_id, version_spec, instant_execution, no_deps, return_postinstall) - else: - return self.cnr_switch_version_lazy(node_id, version_spec, no_deps, return_postinstall) - - def cnr_switch_version_lazy(self, node_id, version_spec=None, no_deps=False, return_postinstall=False): - """ - switch between cnr version (lazy mode) - """ - - result = ManagedResult('switch-cnr') - - node_info = cnr_utils.install_node(node_id, version_spec) - if node_info is None or not node_info.download_url: - return result.fail(f'not available node: {node_id}@{version_spec}') - - version_spec = node_info.version - - if self.active_nodes[node_id][0] == version_spec: - return ManagedResult('skip').with_msg("Up to date") - - zip_url = node_info.download_url - from_path = self.active_nodes[node_id][1] - target = node_id - to_path = os.path.join(get_default_custom_nodes_path(), target) - - def postinstall(): - return self.reserve_cnr_switch(target, zip_url, from_path, to_path, no_deps) - - if return_postinstall: - return result.with_postinstall(postinstall) - else: - if not postinstall(): - return result.fail(f"Failed to execute install script: {node_id}@{version_spec}") - - return result - - def cnr_switch_version_instant(self, node_id, version_spec=None, instant_execution=True, no_deps=False, return_postinstall=False): - """ - switch between cnr version - """ - - # 1. download - result = ManagedResult('switch-cnr') - - node_info = cnr_utils.install_node(node_id, version_spec) - if node_info is None or not node_info.download_url: - return result.fail(f'not available node: {node_id}@{version_spec}') - - version_spec = node_info.version - - if self.active_nodes[node_id][0] == version_spec: - return ManagedResult('skip').with_msg("Up to date") - - archive_name = f"CNR_temp_{str(uuid.uuid4())}.zip" # should be unpredictable name - security precaution - download_path = os.path.join(get_default_custom_nodes_path(), archive_name) - manager_downloader.basic_download_url(node_info.download_url, get_default_custom_nodes_path(), archive_name) - - # 2. extract files into - install_path = self.active_nodes[node_id][1] - extracted = manager_util.extract_package_as_zip(download_path, install_path) - os.remove(download_path) - - if extracted is None: - if len(os.listdir(install_path)) == 0: - shutil.rmtree(install_path) - - return result.fail(f'Empty archive file: {node_id}@{version_spec}') - - # 3. calculate garbage files (.tracking - extracted) - tracking_info_file = os.path.join(install_path, '.tracking') - prev_files = set() - with open(tracking_info_file, 'r') as f: - for line in f: - prev_files.add(line.strip()) - garbage = prev_files.difference(extracted) - garbage = [os.path.join(install_path, x) for x in garbage] - - # 4-1. remove garbage files - for x in garbage: - if os.path.isfile(x): - os.remove(x) - - # 4-2. remove garbage dir if empty - for x in garbage: - if os.path.isdir(x): - if not os.listdir(x): - os.rmdir(x) - - # 5. create .tracking file - tracking_info_file = os.path.join(install_path, '.tracking') - with open(tracking_info_file, "w", encoding='utf-8') as file: - file.write('\n'.join(list(extracted))) - - # 6. post install - result.target = version_spec - - def postinstall(): - res = self.execute_install_script(f"{node_id}@{version_spec}", install_path, instant_execution=instant_execution, no_deps=no_deps) - return res - - if return_postinstall: - return result.with_postinstall(postinstall) - else: - if not postinstall(): - return result.fail(f"Failed to execute install script: {node_id}@{version_spec}") - - return result - - def unified_enable(self, node_id, version_spec=None): - """ - priority if version_spec == None - 1. CNR latest in disk - 2. nightly - 3. unknown - - remark: latest version_spec is not allowed. Must be resolved before call. - """ - - result = ManagedResult('enable') - - if version_spec is None: - version_spec = self.resolve_unspecified_version(node_id, guess_mode='inactive') - if version is None: - return result.fail(f'Specified inactive node not exists: {node_id}') - - if self.is_enabled(node_id, version_spec): - return ManagedResult('skip').with_msg('Already enabled') - - if not self.is_disabled(node_id, version_spec): - return ManagedResult('skip').with_msg('Not installed') - - from_path = None - to_path = None - - if version_spec == 'unknown': - repo_and_path = self.unknown_inactive_nodes.get(node_id) - if repo_and_path is None: - return result.fail(f'Specified inactive node not exists: {node_id}@unknown') - from_path = repo_and_path[1] - - base_path = extract_base_custom_nodes_dir(from_path) - to_path = os.path.join(base_path, node_id) - elif version_spec == 'nightly': - self.unified_disable(node_id, False) - from_path = self.nightly_inactive_nodes.get(node_id) - if from_path is None: - return result.fail(f'Specified inactive node not exists: {node_id}@nightly') - base_path = extract_base_custom_nodes_dir(from_path) - to_path = os.path.join(base_path, node_id) - elif version_spec is not None: - self.unified_disable(node_id, False) - cnr_info = self.cnr_inactive_nodes.get(node_id) - - if cnr_info is None or len(cnr_info) == 0: - return result.fail(f'Specified inactive cnr node not exists: {node_id}') - - if version_spec == "cnr": - version_spec = next(iter(cnr_info)) - - if version_spec not in cnr_info: - return result.fail(f'Specified inactive node not exists: {node_id}@{version_spec}') - - from_path = cnr_info[version_spec] - base_path = extract_base_custom_nodes_dir(from_path) - to_path = os.path.join(base_path, node_id) - - if from_path is None or not os.path.exists(from_path): - return result.fail(f'Specified inactive node path not exists: {from_path}') - - # move from disk - shutil.move(from_path, to_path) - - # update cache - if version_spec == 'unknown': - del self.unknown_inactive_nodes[node_id] - self.unknown_active_nodes[node_id] = to_path - return result.with_target(to_path) - elif version_spec == 'nightly': - del self.nightly_inactive_nodes[node_id] - else: - del self.cnr_inactive_nodes[node_id][version_spec] - - self.active_nodes[node_id] = version_spec, to_path - return result.with_target(to_path) - - def unified_disable(self, node_id, is_unknown): - result = ManagedResult('disable') - - if is_unknown: - version_spec = 'unknown' - else: - version_spec = None - - if not self.is_enabled(node_id, version_spec): - if not self.is_disabled(node_id, version_spec): - return ManagedResult('skip').with_msg('Not installed') - else: - return ManagedResult('skip').with_msg('Already disabled') - - if is_unknown: - repo_and_path = self.unknown_active_nodes.get(node_id) - - if repo_and_path is None or not os.path.exists(repo_and_path[1]): - return result.fail(f'Specified active node not exists: {node_id}') - - base_path = extract_base_custom_nodes_dir(repo_and_path[1]) - to_path = os.path.join(base_path, '.disabled', node_id) - - shutil.move(repo_and_path[1], to_path) - result.append((repo_and_path[1], to_path)) - - self.unknown_inactive_nodes[node_id] = repo_and_path[0], to_path - del self.unknown_active_nodes[node_id] - - return result - - ver_and_path = self.active_nodes.get(node_id) - - if ver_and_path is None or not os.path.exists(ver_and_path[1]): - return result.fail(f'Specified active node not exists: {node_id}') - - base_path = extract_base_custom_nodes_dir(ver_and_path[1]) - - # NOTE: A disabled node may have multiple versions, so preserve it using the `@ suffix`. - to_path = os.path.join(base_path, '.disabled', f"{node_id}@{ver_and_path[0].replace('.', '_')}") - shutil.move(ver_and_path[1], to_path) - result.append((ver_and_path[1], to_path)) - - if ver_and_path[0] == 'nightly': - self.nightly_inactive_nodes[node_id] = to_path - else: - self.add_to_cnr_inactive_nodes(node_id, ver_and_path[0], to_path) - - del self.active_nodes[node_id] - - return result - - def unified_uninstall(self, node_id: str, is_unknown: bool): - """ - Remove whole installed custom nodes including inactive nodes - """ - result = ManagedResult('uninstall') - - if is_unknown: - # remove from actives - repo_and_path = self.unknown_active_nodes.get(node_id) - - is_removed = False - - if repo_and_path is not None and os.path.exists(repo_and_path[1]): - rmtree(repo_and_path[1]) - result.append(repo_and_path[1]) - del self.unknown_active_nodes[node_id] - - is_removed = True - - # remove from inactives - repo_and_path = self.unknown_inactive_nodes.get(node_id) - - if repo_and_path is not None and os.path.exists(repo_and_path[1]): - rmtree(repo_and_path[1]) - result.append(repo_and_path[1]) - del self.unknown_inactive_nodes[node_id] - - is_removed = True - - if is_removed: - return result - else: - return ManagedResult('skip') - - # remove from actives - ver_and_path = self.active_nodes.get(node_id) - - if ver_and_path is not None and os.path.exists(ver_and_path[1]): - shutil.rmtree(ver_and_path[1]) - result.items.append(ver_and_path) - del self.active_nodes[node_id] - - # remove from nightly inactives - fullpath = self.nightly_inactive_nodes.get(node_id) - if fullpath is not None and os.path.exists(fullpath): - shutil.rmtree(fullpath) - result.items.append(('nightly', fullpath)) - del self.nightly_inactive_nodes[node_id] - - # remove from cnr inactives - ver_map = self.cnr_inactive_nodes.get(node_id) - if ver_map is not None: - for key, fullpath in ver_map.items(): - shutil.rmtree(fullpath) - result.items.append((key, fullpath)) - del self.cnr_inactive_nodes[node_id] - - if len(result.items) == 0: - return ManagedResult('skip').with_msg('Not installed') - - return result - - def cnr_install(self, node_id, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False): - result = ManagedResult('install-cnr') - - node_info = cnr_utils.install_node(node_id, version_spec) - if node_info is None or not node_info.download_url: - return result.fail(f'not available node: {node_id}@{version_spec}') - - archive_name = f"CNR_temp_{str(uuid.uuid4())}.zip" # should be unpredictable name - security precaution - download_path = os.path.join(get_default_custom_nodes_path(), archive_name) - - # re-download. I cannot trust existing file. - if os.path.exists(download_path): - os.remove(download_path) - - # install_path - install_path = os.path.join(get_default_custom_nodes_path(), node_id) - if os.path.exists(install_path): - return result.fail(f'Install path already exists: {install_path}') - - manager_downloader.download_url(node_info.download_url, get_default_custom_nodes_path(), archive_name) - os.makedirs(install_path, exist_ok=True) - extracted = manager_util.extract_package_as_zip(download_path, install_path) - os.remove(download_path) - result.to_path = install_path - - if extracted is None: - shutil.rmtree(install_path) - return result.fail(f'Empty archive file: {node_id}@{version_spec}') - - # create .tracking file - tracking_info_file = os.path.join(install_path, '.tracking') - with open(tracking_info_file, "w", encoding='utf-8') as file: - file.write('\n'.join(extracted)) - - result.target = version_spec - - def postinstall(): - return self.execute_install_script(node_id, install_path, instant_execution=instant_execution, no_deps=no_deps) - - if return_postinstall: - return result.with_postinstall(postinstall) - else: - if not postinstall(): - return result.fail(f"Failed to execute install script: {node_id}@{version_spec}") - - return result - - def repo_install(self, url, repo_path, instant_execution=False, no_deps=False, return_postinstall=False): - result = ManagedResult('install-git') - result.append(url) - - if not is_valid_url(url): - return result.fail(f"Invalid git url: {url}") - - if url.endswith("/"): - url = url[:-1] - try: - print(f"Download: git clone '{url}'") - - # Clone the repository from the remote URL - if not instant_execution and platform.system() == 'Windows': - res = manager_funcs.run_script([sys.executable, git_script_path, "--clone", get_default_custom_nodes_path(), url, repo_path], cwd=get_default_custom_nodes_path()) - if res != 0: - return result.fail(f"Failed to clone repo: {url}") - else: - repo = git.Repo.clone_from(url, repo_path, recursive=True, progress=GitProgress()) - repo.git.clear_cache() - repo.close() - - def postinstall(): - return self.execute_install_script(url, repo_path, instant_execution=instant_execution, no_deps=no_deps) - - if return_postinstall: - return result.with_postinstall(postinstall) - else: - if not postinstall(): - return result.fail(f"Failed to execute install script: {url}") - - except Exception as e: - return result.fail(f"Install(git-clone) error: {url} / {e}") - - print("Installation was successful.") - return result - - def repo_update(self, repo_path, instant_execution=False, no_deps=False, return_postinstall=False): - result = ManagedResult('update-git') - - if not os.path.exists(os.path.join(repo_path, '.git')): - return result.fail(f'Path not found: {repo_path}') - - # version check - repo = git.Repo(repo_path) - - if repo.head.is_detached: - if not switch_to_default_branch(repo): - return result.fail(f"Failed to switch to default branch: {repo_path}") - - current_branch = repo.active_branch - branch_name = current_branch.name - - if current_branch.tracking_branch() is None: - print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})") - remote_name = get_remote_name(repo) - else: - remote_name = current_branch.tracking_branch().remote_name - - if remote_name is None: - return result.fail(f"Failed to get remote when installing: {repo_path}") - - remote = repo.remote(name=remote_name) - - try: - remote.fetch() - except Exception as e: - if 'detected dubious' in str(e): - print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on '{repo_path}' repository") - safedir_path = repo_path.replace('\\', '/') - subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path]) - try: - remote.fetch() - except Exception: - print("\n[ComfyUI-Manager] Failed to fixing repository setup. Please execute this command on cmd: \n" - "-----------------------------------------------------------------------------------------\n" - f'git config --global --add safe.directory "{safedir_path}"\n' - "-----------------------------------------------------------------------------------------\n") - - commit_hash = repo.head.commit.hexsha - if f'{remote_name}/{branch_name}' in repo.refs: - remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha - else: - return result.fail(f"Not updatable branch: {branch_name}") - - if commit_hash != remote_commit_hash: - git_pull(repo_path) - - if len(repo.remotes) > 0: - url = repo.remotes[0].url - else: - url = "unknown repo" - - def postinstall(): - return self.execute_install_script(url, repo_path, instant_execution=instant_execution, no_deps=no_deps) - - if return_postinstall: - return result.with_postinstall(postinstall) - else: - if not postinstall(): - return result.fail(f"Failed to execute install script: {url}") - - return result - else: - return ManagedResult('skip').with_msg('Up to date') - - def unified_update(self, node_id, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False): - orig_print(f"\x1b[2K\rUpdating: {node_id}", end='') - - if version_spec is None: - version_spec = self.resolve_unspecified_version(node_id, guess_mode='active') - - if version_spec is None: - return ManagedResult('update').fail(f'Update not available: {node_id}@{version_spec}') - - if version_spec == 'nightly': - return self.repo_update(self.active_nodes[node_id][1], instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall).with_target('nightly') - elif version_spec == 'unknown': - return self.repo_update(self.unknown_active_nodes[node_id][1], instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall).with_target('unknown') - else: - return self.cnr_switch_version(node_id, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall) - - async def install_by_id(self, node_id, version_spec=None, channel=None, mode=None, instant_execution=False, no_deps=False, return_postinstall=False): - """ - priority if version_spec == None - 1. CNR latest - 2. unknown - - remark: latest version_spec is not allowed. Must be resolved before call. - """ - - repo_url = None - if version_spec is None: - if self.is_enabled(node_id): - return ManagedResult('skip') - elif self.is_disabled(node_id): - return self.unified_enable(node_id) - else: - version_spec = self.resolve_unspecified_version(node_id) - - if version_spec == 'unknown' or version_spec == 'nightly': - custom_nodes = await self.get_custom_nodes(channel, mode) - the_node = custom_nodes.get(node_id) - if the_node is not None: - if version_spec == 'unknown': - repo_url = the_node['files'][0] - else: # nightly - repo_url = the_node['repository'] - else: - result = ManagedResult('install') - return result.fail(f"Node '{node_id}@{version_spec}' not found in [{channel}, {mode}]") - - if self.is_enabled(node_id, version_spec): - return ManagedResult('skip').with_target(f"{node_id}@{version_spec}") - - elif self.is_disabled(node_id, version_spec): - return self.unified_enable(node_id, version_spec) - - elif version_spec == 'unknown' or version_spec == 'nightly': - if version_spec == 'nightly': - # disable cnr nodes - if self.is_enabled(node_id, 'cnr'): - self.unified_disable(node_id, False) - - to_path = os.path.abspath(os.path.join(get_default_custom_nodes_path(), node_id)) - res = self.repo_install(repo_url, to_path, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall) - if res.result: - if version_spec == 'unknown': - self.unknown_active_nodes[node_id] = to_path - elif version_spec == 'nightly': - cnr_utils.generate_cnr_id(to_path, node_id) - self.active_nodes[node_id] = 'nightly', to_path - else: - return res - - return res.with_target(version_spec) - - if self.is_enabled(node_id, 'nightly'): - # disable nightly nodes - self.unified_disable(node_id, False) # NOTE: don't return from here - - if self.is_disabled(node_id, version_spec): - # enable and return if specified version is disabled - return self.unified_enable(node_id, version_spec) - - if self.is_disabled(node_id, "cnr"): - # enable and switch version if cnr is disabled (not specified version) - self.unified_enable(node_id, "cnr") - return self.cnr_switch_version(node_id, version_spec, no_deps=no_deps, return_postinstall=return_postinstall) - - if self.is_enabled(node_id, "cnr"): - return self.cnr_switch_version(node_id, version_spec, no_deps=no_deps, return_postinstall=return_postinstall) - - res = self.cnr_install(node_id, version_spec, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall) - if res.result: - self.active_nodes[node_id] = version_spec, res.to_path - - return res - - async def migrate_unmanaged_nodes(self): - """ - fix path for nightly and unknown nodes of unmanaged nodes - """ - await self.reload('cache') - await self.get_custom_nodes('default', 'cache') - - print("Migration: STAGE 1") - moves = [] - - # migrate nightly inactive - for x, v in self.nightly_inactive_nodes.items(): - if v.endswith('@nightly'): - continue - - new_path = os.path.join(get_default_custom_nodes_path(), '.disabled', f"{x}@nightly") - moves.append((v, new_path)) - - self.reserve_migration(moves) - - print("DONE (Migration reserved)") - - -unified_manager = UnifiedManager() - - -def identify_node_pack_from_path(fullpath): - module_name = os.path.basename(fullpath) - if module_name.endswith('.git'): - module_name = module_name[:-4] - - repo_url = git_utils.git_url(fullpath) - if repo_url is None: - # cnr - cnr = cnr_utils.read_cnr_info(fullpath) - if cnr is not None: - return module_name, cnr['version'], cnr['id'] - - return None - else: - # nightly or unknown - cnr_id = cnr_utils.read_cnr_id(fullpath) - commit_hash = git_utils.get_commit_hash(fullpath) - - if cnr_id is not None: - return module_name, commit_hash, cnr_id - else: - return module_name, commit_hash, '' - - -def get_installed_node_packs(): - res = {} - - for x in get_custom_nodes_paths(): - for y in os.listdir(x): - if y == '__pycache__' or y == '.disabled': - continue - - fullpath = os.path.join(x, y) - info = identify_node_pack_from_path(fullpath) - if info is None: - continue - - is_disabled = not y.endswith('.disabled') - - res[info[0]] = { 'ver': info[1], 'cnr_id': info[2], 'enabled': is_disabled } - - disabled_dirs = os.path.join(x, '.disabled') - if os.path.exists(disabled_dirs): - for y in os.listdir(disabled_dirs): - if y == '__pycache__': - continue - - fullpath = os.path.join(disabled_dirs, y) - info = identify_node_pack_from_path(fullpath) - if info is None: - continue - - res[info[0]] = { 'ver': info[1], 'cnr_id': info[2], 'enabled': False } - - return res - - -def get_channel_dict(): - global channel_dict - - if channel_dict is None: - channel_dict = {} - - if not os.path.exists(manager_channel_list_path): - shutil.copy(channel_list_template_path, manager_channel_list_path) - - with open(manager_channel_list_path, 'r') as file: - channels = file.read() - for x in channels.split('\n'): - channel_info = x.split("::") - if len(channel_info) == 2: - channel_dict[channel_info[0]] = channel_info[1] - - return channel_dict - - -def get_channel_list(): - global channel_list - - if channel_list is None: - channel_list = [] - for k, v in get_channel_dict().items(): - channel_list.append(f"{k}::{v}") - - return channel_list - - -class ManagerFuncs: - def __init__(self): - pass - - def get_current_preview_method(self): - return "none" - - def run_script(self, cmd, cwd='.'): - if len(cmd) > 0 and cmd[0].startswith("#"): - print(f"[ComfyUI-Manager] Unexpected behavior: `{cmd}`") - return 0 - - subprocess.check_call(cmd, cwd=cwd, env=get_script_env()) - - return 0 - - -manager_funcs = ManagerFuncs() - - -def write_config(): - config = configparser.ConfigParser() - config['default'] = { - 'preview_method': manager_funcs.get_current_preview_method(), - 'git_exe': get_config()['git_exe'], - 'channel_url': get_config()['channel_url'], - 'share_option': get_config()['share_option'], - 'bypass_ssl': get_config()['bypass_ssl'], - "file_logging": get_config()['file_logging'], - 'default_ui': get_config()['default_ui'], - 'component_policy': get_config()['component_policy'], - 'double_click_policy': get_config()['double_click_policy'], - 'windows_selector_event_loop_policy': get_config()['windows_selector_event_loop_policy'], - 'model_download_by_agent': get_config()['model_download_by_agent'], - 'downgrade_blacklist': get_config()['downgrade_blacklist'], - 'security_level': get_config()['security_level'], - 'skip_migration_check': get_config()['skip_migration_check'], - } - - directory = os.path.dirname(manager_config_path) - if not os.path.exists(directory): - os.makedirs(directory) - - with open(manager_config_path, 'w') as configfile: - config.write(configfile) - - -def read_config(): - try: - config = configparser.ConfigParser() - config.read(manager_config_path) - default_conf = config['default'] - - # policy migration: disable_unsecure_features -> security_level - if 'disable_unsecure_features' in default_conf: - if default_conf['disable_unsecure_features'].lower() == 'true': - security_level = 'strong' - else: - security_level = 'normal' - else: - security_level = default_conf['security_level'] if 'security_level' in default_conf else 'normal' - - return { - 'preview_method': default_conf['preview_method'] if 'preview_method' in default_conf else manager_funcs.get_current_preview_method(), - 'git_exe': default_conf['git_exe'] if 'git_exe' in default_conf else '', - 'channel_url': default_conf['channel_url'] if 'channel_url' in default_conf else DEFAULT_CHANNEL, - 'share_option': default_conf['share_option'] if 'share_option' in default_conf else 'all', - 'bypass_ssl': default_conf['bypass_ssl'].lower() == 'true' if 'bypass_ssl' in default_conf else False, - 'file_logging': default_conf['file_logging'].lower() == 'true' if 'file_logging' in default_conf else True, - 'default_ui': default_conf['default_ui'] if 'default_ui' in default_conf else 'none', - 'component_policy': default_conf['component_policy'] if 'component_policy' in default_conf else 'workflow', - 'double_click_policy': default_conf['double_click_policy'] if 'double_click_policy' in default_conf else 'copy-all', - 'windows_selector_event_loop_policy': default_conf['windows_selector_event_loop_policy'].lower() == 'true' if 'windows_selector_event_loop_policy' in default_conf else False, - 'model_download_by_agent': default_conf['model_download_by_agent'].lower() == 'true' if 'model_download_by_agent' in default_conf else False, - 'downgrade_blacklist': default_conf['downgrade_blacklist'] if 'downgrade_blacklist' in default_conf else '', - 'skip_migration_check': default_conf['skip_migration_check'].lower() == 'true' if 'skip_migration_check' in default_conf else False, - 'security_level': security_level - } - - except Exception: - return { - 'preview_method': manager_funcs.get_current_preview_method(), - 'git_exe': '', - 'channel_url': DEFAULT_CHANNEL, - 'share_option': 'all', - 'bypass_ssl': False, - 'file_logging': True, - 'default_ui': 'none', - 'component_policy': 'workflow', - 'double_click_policy': 'copy-all', - 'windows_selector_event_loop_policy': False, - 'model_download_by_agent': False, - 'downgrade_blacklist': '', - 'skip_migration_check': False, - 'security_level': 'normal', - } - - -def get_config(): - global cached_config - - if cached_config is None: - cached_config = read_config() - - return cached_config - - -def get_remote_name(repo): - available_remotes = [remote.name for remote in repo.remotes] - if 'origin' in available_remotes: - return 'origin' - elif 'upstream' in available_remotes: - return 'upstream' - elif len(available_remotes) > 0: - return available_remotes[0] - - if not available_remotes: - print(f"[ComfyUI-Manager] No remotes are configured for this repository: {repo.working_dir}") - else: - print(f"[ComfyUI-Manager] Available remotes in '{repo.working_dir}': ") - for remote in available_remotes: - print(f"- {remote}") - - return None - - -def switch_to_default_branch(repo): - remote_name = get_remote_name(repo) - - try: - if remote_name is None: - return False - - default_branch = repo.git.symbolic_ref(f'refs/remotes/{remote_name}/HEAD').replace(f'refs/remotes/{remote_name}/', '') - repo.git.checkout(default_branch) - return True - except: - try: - repo.git.checkout(repo.heads.master) - except: - try: - if remote_name is not None: - repo.git.checkout('-b', 'master', f'{remote_name}/master') - except: - pass - - print("[ComfyUI Manager] Failed to switch to the default branch") - return False - - -def try_install_script(url, repo_path, install_cmd, instant_execution=False): - if not instant_execution and ((len(install_cmd) > 0 and install_cmd[0].startswith('#')) or (platform.system() == "Windows" and comfy_ui_commit_datetime.date() >= comfy_ui_required_commit_datetime.date())): - if not os.path.exists(manager_startup_script_path): - os.makedirs(manager_startup_script_path) - - script_path = os.path.join(manager_startup_script_path, "install-scripts.txt") - with open(script_path, "a") as file: - obj = [repo_path] + install_cmd - file.write(f"{obj}\n") - - return True - else: - if len(install_cmd) == 5 and install_cmd[2:4] == ['pip', 'install']: - if is_blacklisted(install_cmd[4]): - print(f"[ComfyUI-Manager] skip black listed pip installation: '{install_cmd[4]}'") - return True - - print(f"\n## ComfyUI-Manager: EXECUTE => {install_cmd}") - code = manager_funcs.run_script(install_cmd, cwd=repo_path) - - if platform.system() != "Windows": - try: - if comfy_ui_commit_datetime.date() < comfy_ui_required_commit_datetime.date(): - print("\n\n###################################################################") - print(f"[WARN] ComfyUI-Manager: Your ComfyUI version ({comfy_ui_revision})[{comfy_ui_commit_datetime.date()}] is too old. Please update to the latest version.") - print("[WARN] The extension installation feature may not work properly in the current installed ComfyUI version on Windows environment.") - print("###################################################################\n\n") - except: - pass - - if code != 0: - if url is None: - url = os.path.dirname(repo_path) - print(f"install script failed: {url}") - return False - - return True - - -# use subprocess to avoid file system lock by git (Windows) -def __win_check_git_update(path, do_fetch=False, do_update=False): - if do_fetch: - command = [sys.executable, git_script_path, "--fetch", path] - elif do_update: - command = [sys.executable, git_script_path, "--pull", path] - else: - command = [sys.executable, git_script_path, "--check", path] - - new_env = get_script_env() - process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=get_default_custom_nodes_path(), env=new_env) - output, _ = process.communicate() - output = output.decode('utf-8').strip() - - if 'detected dubious' in output: - # fix and try again - safedir_path = path.replace('\\', '/') - try: - print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on '{safedir_path}' repo") - process = subprocess.Popen(['git', 'config', '--global', '--add', 'safe.directory', safedir_path], env=new_env, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - output, _ = process.communicate() - - process = subprocess.Popen(command, env=new_env, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - output, _ = process.communicate() - output = output.decode('utf-8').strip() - except Exception: - print('[ComfyUI-Manager] failed to fixing') - - if 'detected dubious' in output: - print(f'\n[ComfyUI-Manager] Failed to fixing repository setup. Please execute this command on cmd: \n' - f'-----------------------------------------------------------------------------------------\n' - f'git config --global --add safe.directory "{safedir_path}"\n' - f'-----------------------------------------------------------------------------------------\n') - - if do_update: - if "CUSTOM NODE PULL: Success" in output: - process.wait() - print(f"\x1b[2K\rUpdated: {path}") - return True, True # updated - elif "CUSTOM NODE PULL: None" in output: - process.wait() - return False, True # there is no update - else: - print(f"\x1b[2K\rUpdate error: {path}") - process.wait() - return False, False # update failed - else: - if "CUSTOM NODE CHECK: True" in output: - process.wait() - return True, True - elif "CUSTOM NODE CHECK: False" in output: - process.wait() - return False, True - else: - print(f"\x1b[2K\rFetch error: {path}") - print(f"\n{output}\n") - process.wait() - return False, True - - -def __win_check_git_pull(path): - command = [sys.executable, git_script_path, "--pull", path] - process = subprocess.Popen(command, env=get_script_env(), cwd=get_default_custom_nodes_path()) - process.wait() - - -def execute_install_script(url, repo_path, lazy_mode=False, instant_execution=False, no_deps=False): - # import ipdb; ipdb.set_trace() - install_script_path = os.path.join(repo_path, "install.py") - requirements_path = os.path.join(repo_path, "requirements.txt") - - if lazy_mode: - install_cmd = ["#LAZY-INSTALL-SCRIPT", sys.executable] - try_install_script(url, repo_path, install_cmd) - else: - if os.path.exists(requirements_path) and not no_deps: - print("Install: pip packages") - pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - with open(requirements_path, "r") as requirements_file: - for line in requirements_file: - #handle comments - if '#' in line: - if line.strip()[0] == '#': - print("Line is comment...skipping") - continue - else: - line = line.split('#')[0].strip() - - package_name = remap_pip_package(line.strip()) - - if package_name and not package_name.startswith('#'): - if '--index-url' in package_name: - s = package_name.split('--index-url') - install_cmd = [sys.executable, "-m", "pip", "install", s[0].strip(), '--index-url', s[1].strip()] - else: - install_cmd = [sys.executable, "-m", "pip", "install", package_name] - - if package_name.strip() != "" and not package_name.startswith('#'): - try_install_script(url, repo_path, install_cmd, instant_execution=instant_execution) - pip_fixer.fix_broken() - - if os.path.exists(install_script_path): - print("Install: install script") - install_cmd = [sys.executable, "install.py"] - try_install_script(url, repo_path, install_cmd, instant_execution=instant_execution) - - return True - - -def git_repo_update_check_with(path, do_fetch=False, do_update=False, no_deps=False): - """ - - perform update check for git custom node - and fetch or update if flag is on - - :param path: path to git custom node - :param do_fetch: do fetch during check - :param do_update: do update during check - :param no_deps: don't install dependencies - :return: update state * success - """ - if do_fetch: - orig_print(f"\x1b[2K\rFetching: {path}", end='') - elif do_update: - orig_print(f"\x1b[2K\rUpdating: {path}", end='') - - # Check if the path is a git repository - if not os.path.exists(os.path.join(path, '.git')): - raise ValueError(f'[ComfyUI-Manager] Not a valid git repository: {path}') - - if platform.system() == "Windows": - updated, success = __win_check_git_update(path, do_fetch, do_update) - if updated and success: - execute_install_script(None, path, lazy_mode=True, no_deps=no_deps) - return updated, success - else: - # Fetch the latest commits from the remote repository - repo = git.Repo(path) - - remote_name = get_remote_name(repo) - - if remote_name is None: - raise ValueError(f"No remotes are configured for this repository: {path}") - - remote = repo.remote(name=remote_name) - - if not do_update and repo.head.is_detached: - if do_fetch: - remote.fetch() - - return True, True # detached branch is treated as updatable - - if repo.head.is_detached: - if not switch_to_default_branch(repo): - raise ValueError(f"Failed to switch detached branch to default branch: {path}") - - current_branch = repo.active_branch - branch_name = current_branch.name - - # Get the current commit hash - commit_hash = repo.head.commit.hexsha - - if do_fetch or do_update: - remote.fetch() - - if do_update: - if repo.is_dirty(): - print(f"\nSTASH: '{path}' is dirty.") - repo.git.stash() - - if f'{remote_name}/{branch_name}' not in repo.refs: - if not switch_to_default_branch(repo): - raise ValueError(f"Failed to switch to default branch while updating: {path}") - - current_branch = repo.active_branch - branch_name = current_branch.name - - if f'{remote_name}/{branch_name}' in repo.refs: - remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha - else: - return False, False - - if commit_hash == remote_commit_hash: - repo.close() - return False, True - - try: - remote.pull() - repo.git.submodule('update', '--init', '--recursive') - new_commit_hash = repo.head.commit.hexsha - - if commit_hash != new_commit_hash: - execute_install_script(None, path, no_deps=no_deps) - print(f"\x1b[2K\rUpdated: {path}") - return True, True - else: - return False, False - - except Exception as e: - print(f"\nUpdating failed: {path}\n{e}", file=sys.stderr) - return False, False - - if repo.head.is_detached: - repo.close() - return True, True - - # Get commit hash of the remote branch - current_branch = repo.active_branch - branch_name = current_branch.name - - if f'{remote_name}/{branch_name}' in repo.refs: - remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha - else: - return True, True # Assuming there's an update if it's not the default branch. - - # Compare the commit hashes to determine if the local repository is behind the remote repository - if commit_hash != remote_commit_hash: - # Get the commit dates - commit_date = repo.head.commit.committed_datetime - remote_commit_date = repo.refs[f'{remote_name}/{branch_name}'].object.committed_datetime - - # Compare the commit dates to determine if the local repository is behind the remote repository - if commit_date < remote_commit_date: - repo.close() - return True, True - - repo.close() - - return False, True - - -class GitProgress(RemoteProgress): - def __init__(self): - super().__init__() - self.pbar = tqdm() - - def update(self, op_code, cur_count, max_count=None, message=''): - self.pbar.total = max_count - self.pbar.n = cur_count - self.pbar.pos = 0 - self.pbar.refresh() - - -def is_valid_url(url): - try: - # Check for HTTP/HTTPS URL format - result = urlparse(url) - if all([result.scheme, result.netloc]): - return True - finally: - # Check for SSH git URL format - pattern = re.compile(r"^(.+@|ssh://).+:.+$") - if pattern.match(url): - return True - return False - - -async def gitclone_install(url, instant_execution=False, msg_prefix='', no_deps=False): - await unified_manager.reload('cache') - await unified_manager.get_custom_nodes('default', 'cache') - - print(f"{msg_prefix}Install: {url}") - - result = ManagedResult('install-git') - - if not is_valid_url(url): - return result.fail(f"Invalid git url: '{url}'") - - if url.endswith("/"): - url = url[:-1] - try: - cnr = unified_manager.get_cnr_by_repo(url) - if cnr: - cnr_id = cnr['id'] - return await unified_manager.install_by_id(cnr_id, version_spec='nightly') - else: - repo_name = os.path.splitext(os.path.basename(url))[0] - - # NOTE: Keep original name as possible if unknown node - # node_dir = f"{repo_name}@unknown" - node_dir = repo_name - - repo_path = os.path.join(get_default_custom_nodes_path(), node_dir) - - if os.path.exists(repo_path): - return result.fail(f"Already exists: '{repo_path}'") - - for custom_nodes_dir in get_custom_nodes_paths(): - disabled_repo_path1 = os.path.join(custom_nodes_dir, '.disabled', node_dir) - disabled_repo_path2 = os.path.join(custom_nodes_dir, repo_name+'.disabled') # old style - - if os.path.exists(disabled_repo_path1): - return result.fail(f"Already exists (disabled): '{disabled_repo_path1}'") - - if os.path.exists(disabled_repo_path2): - return result.fail(f"Already exists (disabled): '{disabled_repo_path2}'") - - print(f"CLONE into '{repo_path}'") - - # Clone the repository from the remote URL - if not instant_execution and platform.system() == 'Windows': - res = manager_funcs.run_script([sys.executable, git_script_path, "--clone", get_default_custom_nodes_path(), url, repo_path], cwd=get_default_custom_nodes_path()) - if res != 0: - return result.fail(f"Failed to clone '{url}' into '{repo_path}'") - else: - repo = git.Repo.clone_from(url, repo_path, recursive=True, progress=GitProgress()) - repo.git.clear_cache() - repo.close() - - execute_install_script(url, repo_path, instant_execution=instant_execution, no_deps=no_deps) - print("Installation was successful.") - return result.with_target(repo_path) - - except Exception as e: - traceback.print_exc() - print(f"Install(git-clone) error: {url} / {e}", file=sys.stderr) - return result.fail(f"Install(git-clone) error: {url} / {e}") - - -def git_pull(path): - # Check if the path is a git repository - if not os.path.exists(os.path.join(path, '.git')): - raise ValueError('Not a git repository') - - # Pull the latest changes from the remote repository - if platform.system() == "Windows": - return __win_check_git_pull(path) - else: - repo = git.Repo(path) - - if repo.is_dirty(): - print(f"STASH: '{path}' is dirty.") - repo.git.stash() - - if repo.head.is_detached: - if not switch_to_default_branch(repo): - raise ValueError(f"Failed to switch to default branch while pulling: {path}") - - current_branch = repo.active_branch - remote_name = current_branch.tracking_branch().remote_name - remote = repo.remote(name=remote_name) - - remote.pull() - repo.git.submodule('update', '--init', '--recursive') - - repo.close() - - return True - - -async def get_data_by_mode(mode, filename, channel_url=None): - if channel_url in get_channel_dict(): - channel_url = get_channel_dict()[channel_url] - - try: - if mode == "local": - uri = os.path.join(manager_util.comfyui_manager_path, filename) - json_obj = await manager_util.get_data(uri) - else: - if channel_url is None: - uri = get_config()['channel_url'] + '/' + filename - else: - uri = channel_url + '/' + filename - - cache_uri = str(manager_util.simple_hash(uri))+'_'+filename - cache_uri = os.path.join(manager_util.cache_dir, cache_uri) - - if mode == "cache": - if manager_util.is_file_created_within_one_day(cache_uri): - json_obj = await manager_util.get_data(cache_uri) - else: - json_obj = await manager_util.get_data(uri) - with manager_util.cache_lock: - with open(cache_uri, "w", encoding='utf-8') as file: - json.dump(json_obj, file, indent=4, sort_keys=True) - else: - json_obj = await manager_util.get_data(uri) - with manager_util.cache_lock: - with open(cache_uri, "w", encoding='utf-8') as file: - json.dump(json_obj, file, indent=4, sort_keys=True) - except Exception as e: - print(f"[ComfyUI-Manager] Due to a network error, switching to local mode.\n=> {filename}\n=> {e}") - uri = os.path.join(manager_util.comfyui_manager_path, filename) - json_obj = await manager_util.get_data(uri) - - return json_obj - - -def gitclone_fix(files, instant_execution=False, no_deps=False): - print(f"Try fixing: {files}") - for url in files: - if not is_valid_url(url): - print(f"Invalid git url: '{url}'") - return False - - if url.endswith("/"): - url = url[:-1] - try: - repo_name = os.path.splitext(os.path.basename(url))[0] - repo_path = os.path.join(get_default_custom_nodes_path(), repo_name) - - if os.path.exists(repo_path+'.disabled'): - repo_path = repo_path+'.disabled' - - if not execute_install_script(url, repo_path, instant_execution=instant_execution, no_deps=no_deps): - return False - - except Exception as e: - print(f"Install(git-clone) error: {url} / {e}", file=sys.stderr) - return False - - print(f"Attempt to fixing '{files}' is done.") - return True - - -def pip_install(packages): - install_cmd = ['#FORCE', sys.executable, "-m", "pip", "install", '-U'] + packages - try_install_script('pip install via manager', '..', install_cmd) - - -def rmtree(path): - retry_count = 3 - - while True: - try: - retry_count -= 1 - - if platform.system() == "Windows": - manager_funcs.run_script(['attrib', '-R', path + '\\*', '/S']) - shutil.rmtree(path) - - return True - - except Exception as ex: - print(f"ex: {ex}") - time.sleep(3) - - if retry_count < 0: - raise ex - - print(f"Uninstall retry({retry_count})") - - -def gitclone_uninstall(files): - import os - - print(f"Uninstall: {files}") - for url in files: - if url.endswith("/"): - url = url[:-1] - try: - for custom_nodes_dir in get_custom_nodes_paths(): - dir_name = os.path.splitext(os.path.basename(url))[0].replace(".git", "") - dir_path = os.path.join(custom_nodes_dir, dir_name) - - # safety check - if dir_path == '/' or dir_path[1:] == ":/" or dir_path == '': - print(f"Uninstall(git-clone) error: invalid path '{dir_path}' for '{url}'") - return False - - install_script_path = os.path.join(dir_path, "uninstall.py") - disable_script_path = os.path.join(dir_path, "disable.py") - if os.path.exists(install_script_path): - uninstall_cmd = [sys.executable, "uninstall.py"] - code = manager_funcs.run_script(uninstall_cmd, cwd=dir_path) - - if code != 0: - print(f"An error occurred during the execution of the uninstall.py script. Only the '{dir_path}' will be deleted.") - elif os.path.exists(disable_script_path): - disable_script = [sys.executable, "disable.py"] - code = manager_funcs.run_script(disable_script, cwd=dir_path) - if code != 0: - print(f"An error occurred during the execution of the disable.py script. Only the '{dir_path}' will be deleted.") - - if os.path.exists(dir_path): - rmtree(dir_path) - elif os.path.exists(dir_path + ".disabled"): - rmtree(dir_path + ".disabled") - except Exception as e: - print(f"Uninstall(git-clone) error: {url} / {e}", file=sys.stderr) - return False - - print("Uninstallation was successful.") - return True - - -def gitclone_set_active(files, is_disable): - import os - - if is_disable: - action_name = "Disable" - else: - action_name = "Enable" - - print(f"{action_name}: {files}") - for url in files: - if url.endswith("/"): - url = url[:-1] - try: - for custom_nodes_dir in get_custom_nodes_paths(): - dir_name = os.path.splitext(os.path.basename(url))[0].replace(".git", "") - dir_path = os.path.join(custom_nodes_dir, dir_name) - - # safety check - if dir_path == '/' or dir_path[1:] == ":/" or dir_path == '': - print(f"{action_name}(git-clone) error: invalid path '{dir_path}' for '{url}'") - return False - - if is_disable: - current_path = dir_path - base_path = extract_base_custom_nodes_dir(current_path) - new_path = os.path.join(base_path, ".disabled", dir_name) - - if not os.path.exists(current_path): - continue - else: - current_path1 = os.path.join(get_default_custom_nodes_path(), ".disabled", dir_name) - current_path2 = dir_path + ".disabled" - - if os.path.exists(current_path1): - current_path = current_path1 - elif os.path.exists(current_path2): - current_path = current_path2 - else: - continue - - base_path = extract_base_custom_nodes_dir(current_path) - new_path = os.path.join(base_path, dir_name) - - shutil.move(current_path, new_path) - - if is_disable: - if os.path.exists(os.path.join(new_path, "disable.py")): - disable_script = [sys.executable, "disable.py"] - try_install_script(url, new_path, disable_script) - else: - if os.path.exists(os.path.join(new_path, "enable.py")): - enable_script = [sys.executable, "enable.py"] - try_install_script(url, new_path, enable_script) - - break # for safety - - except Exception as e: - print(f"{action_name}(git-clone) error: {url} / {e}", file=sys.stderr) - return False - - print(f"{action_name} was successful.") - return True - - -def gitclone_update(files, instant_execution=False, skip_script=False, msg_prefix="", no_deps=False): - import os - - print(f"{msg_prefix}Update: {files}") - for url in files: - if url.endswith("/"): - url = url[:-1] - try: - for custom_nodes_dir in get_default_custom_nodes_path(): - repo_name = os.path.splitext(os.path.basename(url))[0].replace(".git", "") - repo_path = os.path.join(custom_nodes_dir, repo_name) - - if os.path.exists(repo_path+'.disabled'): - repo_path = repo_path+'.disabled' - - elif os.path.exists(os.path.join(get_default_custom_nodes_path(), "disabled", repo_name)): - repo_path = os.path.join(get_default_custom_nodes_path(), "disabled", repo_name) - - if not os.path.exists(repo_path): - continue - - git_pull(repo_path) - - if not skip_script: - if instant_execution: - if not execute_install_script(url, repo_path, lazy_mode=False, instant_execution=True, no_deps=no_deps): - return False - else: - if not execute_install_script(url, repo_path, lazy_mode=True, no_deps=no_deps): - return False - - break # for safety - - except Exception as e: - print(f"Update(git-clone) error: {url} / {e}", file=sys.stderr) - return False - - if not skip_script: - print("Update was successful.") - return True - - -def update_path(repo_path, instant_execution=False, no_deps=False): - if not os.path.exists(os.path.join(repo_path, '.git')): - return "fail" - - # version check - repo = git.Repo(repo_path) - - if repo.head.is_detached: - if not switch_to_default_branch(repo): - return "fail" - - current_branch = repo.active_branch - branch_name = current_branch.name - - if current_branch.tracking_branch() is None: - print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})") - remote_name = get_remote_name(repo) - else: - remote_name = current_branch.tracking_branch().remote_name - remote = repo.remote(name=remote_name) - - try: - remote.fetch() - except Exception as e: - if 'detected dubious' in str(e): - print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on '{repo_path}' repository") - safedir_path = repo_path.replace('\\', '/') - subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path]) - try: - remote.fetch() - except Exception: - print(f"\n[ComfyUI-Manager] Failed to fixing repository setup. Please execute this command on cmd: \n" - f"-----------------------------------------------------------------------------------------\n" - f'git config --global --add safe.directory "{safedir_path}"\n' - f"-----------------------------------------------------------------------------------------\n") - return "fail" - - commit_hash = repo.head.commit.hexsha - - if f'{remote_name}/{branch_name}' in repo.refs: - remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha - else: - return "fail" - - if commit_hash != remote_commit_hash: - git_pull(repo_path) - execute_install_script("ComfyUI", repo_path, instant_execution=instant_execution, no_deps=no_deps) - return "updated" - else: - return "skipped" - - -def lookup_customnode_by_url(data, target): - for x in data['custom_nodes']: - if target in x['files']: - for custom_nodes_dir in get_custom_nodes_paths(): - dir_name = os.path.splitext(os.path.basename(target))[0].replace(".git", "") - dir_path = os.path.join(custom_nodes_dir, dir_name) - if os.path.exists(dir_path): - x['installed'] = 'True' - else: - disabled_path1 = os.path.join(custom_nodes_dir, '.disabled', dir_name) - disabled_path2 = dir_path + ".disabled" - - if os.path.exists(disabled_path1) or os.path.exists(disabled_path2): - x['installed'] = 'Disabled' - else: - continue - - return x - - return None - - -def lookup_installed_custom_nodes_legacy(repo_name): - base_paths = get_custom_nodes_paths() - - for base_path in base_paths: - repo_path = os.path.join(base_path, repo_name) - if os.path.exists(repo_path): - return True, repo_path - elif os.path.exists(repo_path + '.disabled'): - return False, repo_path - - return None - - -def simple_check_custom_node(url): - dir_name = os.path.splitext(os.path.basename(url))[0].replace(".git", "") - dir_path = os.path.join(get_default_custom_nodes_path(), dir_name) - if os.path.exists(dir_path): - return 'installed' - elif os.path.exists(dir_path+'.disabled'): - return 'disabled' - - return 'not-installed' - - -def check_state_of_git_node_pack_single(item, do_fetch=False, do_update_check=True, do_update=False): - if item['version'] == 'unknown': - dir_path = unified_manager.unknown_active_nodes.get(item['id'])[1] - elif item['version'] == 'nightly': - dir_path = unified_manager.active_nodes.get(item['id'])[1] - else: - # skip CNR nodes - dir_path = None - - if dir_path and os.path.exists(dir_path): - if do_update_check: - try: - update_state, success = git_repo_update_check_with(dir_path, do_fetch, do_update) - if (do_update_check or do_update) and update_state: - item['update-state'] = 'true' - elif do_update and not success: - item['update-state'] = 'fail' - except Exception: - print(f"[ComfyUI-Manager] Failed to check state of the git node pack: {dir_path}") - - -def get_installed_pip_packages(): - # extract pip package infos - pips = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze'], text=True).split('\n') - - res = {} - for x in pips: - if x.strip() == "": - continue - - if ' @ ' in x: - spec_url = x.split(' @ ') - res[spec_url[0]] = spec_url[1] - else: - res[x] = "" - - return res - - -async def get_current_snapshot(): - await unified_manager.reload('cache') - await unified_manager.get_custom_nodes('default', 'cache') - - # Get ComfyUI hash - repo_path = comfy_path - - if not os.path.exists(os.path.join(repo_path, '.git')): - print("ComfyUI update fail: The installed ComfyUI does not have a Git repository.") - return {} - - repo = git.Repo(repo_path) - comfyui_commit_hash = repo.head.commit.hexsha - - git_custom_nodes = {} - cnr_custom_nodes = {} - file_custom_nodes = [] - - # Get custom nodes hash - for custom_nodes_dir in get_custom_nodes_paths(): - paths = os.listdir(custom_nodes_dir) - - disabled_path = os.path.join(custom_nodes_dir, '.disabled') - if os.path.exists(disabled_path): - for x in os.listdir(disabled_path): - paths.append(os.path.join(disabled_path, x)) - - for path in paths: - if path in ['.disabled', '__pycache__']: - continue - - fullpath = os.path.join(custom_nodes_dir, path) - - if os.path.isdir(fullpath): - is_disabled = path.endswith(".disabled") or os.path.basename(os.path.dirname(fullpath)) == ".disabled" - - try: - info = unified_manager.resolve_from_path(fullpath) - - if info is None: - continue - - if info['ver'] not in ['nightly', 'latest', 'unknown']: - if is_disabled: - continue # don't restore disabled state of CNR node. - - cnr_custom_nodes[info['id']] = info['ver'] - else: - repo = git.Repo(fullpath) - - if repo.head.is_detached: - remote_name = get_remote_name(repo) - else: - current_branch = repo.active_branch - - if current_branch.tracking_branch() is None: - remote_name = get_remote_name(repo) - else: - remote_name = current_branch.tracking_branch().remote_name - - commit_hash = repo.head.commit.hexsha - - url = repo.remotes[remote_name].url - - git_custom_nodes[url] = dict(hash=commit_hash, disabled=is_disabled) - except: - print(f"Failed to extract snapshots for the custom node '{path}'.") - - elif path.endswith('.py'): - is_disabled = path.endswith(".py.disabled") - filename = os.path.basename(path) - item = { - 'filename': filename, - 'disabled': is_disabled - } - - file_custom_nodes.append(item) - - pip_packages = get_installed_pip_packages() - - return { - 'comfyui': comfyui_commit_hash, - 'git_custom_nodes': git_custom_nodes, - 'cnr_custom_nodes': cnr_custom_nodes, - 'file_custom_nodes': file_custom_nodes, - 'pips': pip_packages, - } - - -async def save_snapshot_with_postfix(postfix, path=None): - if path is None: - now = datetime.now() - - date_time_format = now.strftime("%Y-%m-%d_%H-%M-%S") - file_name = f"{date_time_format}_{postfix}" - - path = os.path.join(manager_snapshot_path, f"{file_name}.json") - else: - file_name = path.replace('\\', '/').split('/')[-1] - file_name = file_name.split('.')[-2] - - snapshot = await get_current_snapshot() - if path.endswith('.json'): - with open(path, "w") as json_file: - json.dump(snapshot, json_file, indent=4) - - return file_name + '.json' - - elif path.endswith('.yaml'): - with open(path, "w") as yaml_file: - snapshot = {'custom_nodes': snapshot} - yaml.dump(snapshot, yaml_file, allow_unicode=True) - - return path - - -async def extract_nodes_from_workflow(filepath, mode='local', channel_url='default'): - # prepare json data - workflow = None - if filepath.endswith('.json'): - with open(filepath, "r", encoding="UTF-8", errors="ignore") as json_file: - try: - workflow = json.load(json_file) - except: - print(f"Invalid workflow file: {filepath}") - exit(-1) - - elif filepath.endswith('.png'): - from PIL import Image - with Image.open(filepath) as img: - if 'workflow' not in img.info: - print(f"The specified .png file doesn't have a workflow: {filepath}") - exit(-1) - else: - try: - workflow = json.loads(img.info['workflow']) - except: - print(f"This is not a valid .png file containing a ComfyUI workflow: {filepath}") - exit(-1) - - if workflow is None: - print(f"Invalid workflow file: {filepath}") - exit(-1) - - # extract nodes - used_nodes = set() - - def extract_nodes(sub_workflow): - for x in sub_workflow['nodes']: - node_name = x.get('type') - - # skip virtual nodes - if node_name in ['Reroute', 'Note']: - continue - - if node_name is not None and not (node_name.startswith('workflow/') or node_name.startswith('workflow>')): - used_nodes.add(node_name) - - if 'nodes' in workflow: - extract_nodes(workflow) - - if 'extra' in workflow: - if 'groupNodes' in workflow['extra']: - for x in workflow['extra']['groupNodes'].values(): - extract_nodes(x) - - # lookup dependent custom nodes - ext_map = await get_data_by_mode(mode, 'extension-node-map.json', channel_url) - - rext_map = {} - preemption_map = {} - patterns = [] - for k, v in ext_map.items(): - if k == 'https://github.com/comfyanonymous/ComfyUI': - for x in v[0]: - if x not in preemption_map: - preemption_map[x] = [] - - preemption_map[x] = k - continue - - for x in v[0]: - if x not in rext_map: - rext_map[x] = [] - - rext_map[x].append(k) - - if 'preemptions' in v[1]: - for x in v[1]['preemptions']: - if x not in preemption_map: - preemption_map[x] = [] - - preemption_map[x] = k - - if 'nodename_pattern' in v[1]: - patterns.append((v[1]['nodename_pattern'], k)) - - # identify used extensions - used_exts = set() - unknown_nodes = set() - - for node_name in used_nodes: - ext = preemption_map.get(node_name) - - if ext is None: - ext = rext_map.get(node_name) - if ext is not None: - ext = ext[0] - - if ext is None: - for pat_ext in patterns: - if re.search(pat_ext[0], node_name): - ext = pat_ext[1] - break - - if ext == 'https://github.com/comfyanonymous/ComfyUI': - pass - elif ext is not None: - if 'Fooocus' in ext: - print(f">> {node_name}") - - used_exts.add(ext) - else: - unknown_nodes.add(node_name) - - return used_exts, unknown_nodes - - -def unzip(model_path): - if not os.path.exists(model_path): - print(f"[ComfyUI-Manager] unzip: File not found: {model_path}") - return False - - base_dir = os.path.dirname(model_path) - filename = os.path.basename(model_path) - target_dir = os.path.join(base_dir, filename[:-4]) - - os.makedirs(target_dir, exist_ok=True) - - with zipfile.ZipFile(model_path, 'r') as zip_ref: - zip_ref.extractall(target_dir) - - # Check if there's only one directory inside the target directory - contents = os.listdir(target_dir) - if len(contents) == 1 and os.path.isdir(os.path.join(target_dir, contents[0])): - nested_dir = os.path.join(target_dir, contents[0]) - # Move each file and sub-directory in the nested directory up to the target directory - for item in os.listdir(nested_dir): - shutil.move(os.path.join(nested_dir, item), os.path.join(target_dir, item)) - # Remove the now empty nested directory - os.rmdir(nested_dir) - - os.remove(model_path) - return True - - -def map_to_unified_keys(json_obj): - res = {} - for k, v in json_obj.items(): - cnr = unified_manager.get_cnr_by_repo(k) - if cnr: - res[cnr['id']] = v - else: - res[k] = v - - return res - - -async def get_unified_total_nodes(channel, mode, regsitry_cache_mode='cache'): - await unified_manager.reload(regsitry_cache_mode) - - res = await unified_manager.get_custom_nodes(channel, mode) - - # collect pure cnr ids (i.e. not exists in custom-node-list.json) - # populate state/updatable field to non-pure cnr nodes - cnr_ids = set(unified_manager.cnr_map.keys()) - for k, v in res.items(): - # resolve cnr_id from repo url - files_in_json = v.get('files', []) - cnr_id = None - if len(files_in_json) == 1: - cnr = unified_manager.get_cnr_by_repo(files_in_json[0]) - if cnr: - cnr_id = cnr['id'] - - if cnr_id is not None: - # cnr or nightly version - cnr_ids.remove(cnr_id) - updatable = False - cnr = unified_manager.cnr_map[cnr_id] - - if cnr_id in invalid_nodes: - v['invalid-installation'] = True - - if cnr_id in unified_manager.active_nodes: - # installed - v['state'] = 'enabled' - if unified_manager.active_nodes[cnr_id][0] != 'nightly': - updatable = unified_manager.is_updatable(cnr_id) - else: - updatable = False - v['active_version'] = unified_manager.active_nodes[cnr_id][0] - v['version'] = v['active_version'] - - if cm_global.try_call(api="cm.is_import_failed_extension", name=unified_manager.active_nodes[cnr_id][1]): - v['import-fail'] = True - - elif cnr_id in unified_manager.cnr_inactive_nodes: - # disabled - v['state'] = 'disabled' - cnr_ver = unified_manager.get_from_cnr_inactive_nodes(cnr_id) - if cnr_ver is not None: - v['version'] = str(cnr_ver[0]) - else: - v['version'] = '0' - - elif cnr_id in unified_manager.nightly_inactive_nodes: - # disabled - v['state'] = 'disabled' - v['version'] = 'nightly' - else: - # not installed - v['state'] = 'not-installed' - - if 'version' not in v: - v['version'] = cnr['latest_version']['version'] - - v['update-state'] = 'true' if updatable else 'false' - else: - # unknown version - v['version'] = 'unknown' - - if unified_manager.is_enabled(k, 'unknown'): - v['state'] = 'enabled' - v['active_version'] = 'unknown' - - if cm_global.try_call(api="cm.is_import_failed_extension", name=unified_manager.unknown_active_nodes[k][1]): - v['import-fail'] = True - - elif unified_manager.is_disabled(k, 'unknown'): - v['state'] = 'disabled' - else: - v['state'] = 'not-installed' - - # add items for pure cnr nodes - if normalize_channel(channel) == DEFAULT_CHANNEL: - # Don't show CNR nodes unless default channel - for cnr_id in cnr_ids: - cnr = unified_manager.cnr_map[cnr_id] - author = cnr['publisher']['name'] - title = cnr['name'] - reference = f"https://registry.comfy.org/nodes/{cnr['id']}" - repository = cnr.get('repository', '') - install_type = "cnr" - description = cnr.get('description', '') - - ver = None - active_version = None - updatable = False - import_fail = None - if cnr_id in unified_manager.active_nodes: - # installed - state = 'enabled' - updatable = unified_manager.is_updatable(cnr_id) - active_version = unified_manager.active_nodes[cnr['id']][0] - ver = active_version - - if cm_global.try_call(api="cm.is_import_failed_extension", name=unified_manager.active_nodes[cnr_id][1]): - import_fail = True - - elif cnr['id'] in unified_manager.cnr_inactive_nodes: - # disabled - state = 'disabled' - elif cnr['id'] in unified_manager.nightly_inactive_nodes: - # disabled - state = 'disabled' - ver = 'nightly' - else: - # not installed - state = 'not-installed' - - if ver is None: - ver = cnr['latest_version']['version'] - - item = dict(author=author, title=title, reference=reference, repository=repository, install_type=install_type, - description=description, state=state, updatable=updatable, version=ver) - - if active_version: - item['active_version'] = active_version - - if import_fail: - item['import-fail'] = True - - res[cnr_id] = item - - return res - - -def populate_github_stats(node_packs, json_obj_github): - for k, v in node_packs.items(): - url = v['reference'] - if url in json_obj_github: - v['stars'] = json_obj_github[url]['stars'] - v['last_update'] = json_obj_github[url]['last_update'] - v['trust'] = json_obj_github[url]['author_account_age_days'] > 600 - else: - v['stars'] = -1 - v['last_update'] = -1 - v['trust'] = False - - -def populate_favorites(node_packs, json_obj_extras): - favorites = set(json_obj_extras['favorites']) - - for k, v in node_packs.items(): - if v.get('version') != 'unknown': - if k in favorites: - v['is_favorite'] = True - - -async def restore_snapshot(snapshot_path, git_helper_extras=None): - cloned_repos = [] - checkout_repos = [] - enabled_repos = [] - disabled_repos = [] - skip_node_packs = [] - - await unified_manager.reload('cache') - await unified_manager.get_custom_nodes('default', 'cache') - - cnr_repo_map = {} - for k, v in unified_manager.repo_cnr_map.items(): - cnr_repo_map[v['id']] = k - - print("Restore snapshot.") - - postinstalls = [] - - with open(snapshot_path, 'r', encoding="UTF-8") as snapshot_file: - if snapshot_path.endswith('.json'): - info = json.load(snapshot_file) - elif snapshot_path.endswith('.yaml'): - info = yaml.load(snapshot_file, Loader=yaml.SafeLoader) - info = info['custom_nodes'] - - # for cnr restore - cnr_info = info.get('cnr_custom_nodes') - if cnr_info is not None: - # disable not listed cnr nodes - todo_disable = [] - todo_checkout = [] - - for k, v in unified_manager.active_nodes.items(): - if 'comfyui-manager' in k: - continue - - if v[0] != 'nightly': - if k not in cnr_info: - todo_disable.append(k) - else: - cnr_ver = cnr_info[k] - if v[1] != cnr_ver: - todo_checkout.append((k, cnr_ver)) - else: - skip_node_packs.append(k) - - for x in todo_disable: - unified_manager.unified_disable(x, False) - disabled_repos.append(x) - - for x in todo_checkout: - unified_manager.cnr_switch_version(x[0], x[1], instant_execution=True, no_deps=True, return_postinstall=False) - checkout_repos.append(x[1]) - - # install listed cnr nodes - for k, v in cnr_info.items(): - if 'comfyui-manager' in k: - continue - - ps = await unified_manager.install_by_id(k, version_spec=v, instant_execution=True, return_postinstall=True) - cloned_repos.append(k) - if ps is not None and ps.result: - if hasattr(ps, 'postinstall'): - postinstalls.append(ps.postinstall) - else: - print("cm-cli: unexpected [0001]") - - # for nightly restore - git_info = info.get('git_custom_nodes') - if git_info is not None: - todo_disable = [] - todo_enable = [] - todo_checkout = [] - processed_urls = [] - - for k, v in unified_manager.active_nodes.items(): - if 'comfyui-manager' in k: - continue - - if v[0] == 'nightly' and cnr_repo_map.get(k): - repo_url = cnr_repo_map.get(k) - - normalized_url1 = git_utils.normalize_url(repo_url) - normalized_url2 = git_utils.normalize_url_http(repo_url) - - if normalized_url1 not in git_info and normalized_url2 not in git_info: - todo_disable.append(k) - else: - if normalized_url1 in git_info: - commit_hash = git_info[normalized_url1]['hash'] - todo_checkout.append((v[1], commit_hash)) - - if normalized_url2 in git_info: - commit_hash = git_info[normalized_url2]['hash'] - todo_checkout.append((v[1], commit_hash)) - - for k, v in unified_manager.nightly_inactive_nodes.items(): - if 'comfyui-manager' in k: - continue - - if cnr_repo_map.get(k): - repo_url = cnr_repo_map.get(k) - normalized_url1 = git_utils.normalize_url(repo_url) - normalized_url2 = git_utils.normalize_url_http(repo_url) - - if normalized_url1 in git_info: - commit_hash = git_info[normalized_url1]['hash'] - todo_enable.append((k, commit_hash)) - processed_urls.append(normalized_url1) - - if normalized_url2 in git_info: - commit_hash = git_info[normalized_url2]['hash'] - todo_enable.append((k, commit_hash)) - processed_urls.append(normalized_url2) - - for x in todo_disable: - unified_manager.unified_disable(x, False) - disabled_repos.append(x) - - for x in todo_enable: - res = unified_manager.unified_enable(x, 'nightly') - - is_switched = False - if res and res.target: - is_switched = repo_switch_commit(res.target, x[1]) - - if is_switched: - checkout_repos.append(x) - else: - enabled_repos.append(x) - - for x in todo_checkout: - is_switched = repo_switch_commit(x[0], x[1]) - - if is_switched: - checkout_repos.append(x) - else: - skip_node_packs.append(x[0]) - - for x in git_info.keys(): - normalized_url = git_utils.normalize_url(x) - cnr = unified_manager.repo_cnr_map.get(normalized_url) - if cnr is not None: - pack_id = cnr['id'] - await unified_manager.install_by_id(pack_id, 'nightly', instant_execution=True, no_deps=False, return_postinstall=False) - cloned_repos.append(pack_id) - processed_urls.append(x) - - for x in processed_urls: - if x in git_info: - del git_info[x] - - # remained nightly will be installed and migrated - - # for unknown restore - todo_disable = [] - todo_enable = [] - todo_checkout = [] - processed_urls = [] - - for k2, v2 in unified_manager.unknown_active_nodes.items(): - repo_url = resolve_giturl_from_path(v2[1]) - - if repo_url is None: - continue - - normalized_url1 = git_utils.normalize_url(repo_url) - normalized_url2 = git_utils.normalize_url_http(repo_url) - - if normalized_url1 not in git_info and normalized_url2 not in git_info: - todo_disable.append(k2) - else: - if normalized_url1 in git_info: - commit_hash = git_info[normalized_url1]['hash'] - todo_checkout.append((k2, commit_hash)) - processed_urls.append(normalized_url1) - - if normalized_url2 in git_info: - commit_hash = git_info[normalized_url2]['hash'] - todo_checkout.append((k2, commit_hash)) - processed_urls.append(normalized_url2) - - for k2, v2 in unified_manager.unknown_inactive_nodes.items(): - repo_url = resolve_giturl_from_path(v2[1]) - - if repo_url is None: - continue - - normalized_url1 = git_utils.normalize_url(repo_url) - normalized_url2 = git_utils.normalize_url_http(repo_url) - - if normalized_url1 in git_info: - commit_hash = git_info[normalized_url1]['hash'] - todo_enable.append((k2, commit_hash)) - processed_urls.append(normalized_url1) - - if normalized_url2 in git_info: - commit_hash = git_info[normalized_url2]['hash'] - todo_enable.append((k2, commit_hash)) - processed_urls.append(normalized_url2) - - for x in todo_disable: - unified_manager.unified_disable(x, True) - disabled_repos.append(x) - - for x in todo_enable: - res = unified_manager.unified_enable(x[0], 'unknown') - - is_switched = False - if res and res.target: - is_switched = repo_switch_commit(res.target, x[1]) - - if is_switched: - checkout_repos.append(x) - else: - enabled_repos.append(x) - - for x in todo_checkout: - is_switched = repo_switch_commit(x[0], x[1]) - - if is_switched: - checkout_repos.append(x) - else: - skip_node_packs.append(x[0]) - - for x in processed_urls: - if x in git_info: - del git_info[x] - - for repo_url in git_info.keys(): - repo_name = os.path.basename(repo_url) - if repo_name.endswith('.git'): - repo_name = repo_name[:-4] - - to_path = os.path.join(get_default_custom_nodes_path(), repo_name) - unified_manager.repo_install(repo_url, to_path, instant_execution=True, no_deps=False, return_postinstall=False) - cloned_repos.append(repo_name) - - # reload - await unified_manager.migrate_unmanaged_nodes() - - # print summary - for x in cloned_repos: - print(f"[ INSTALLED ] {x}") - for x in checkout_repos: - print(f"[ CHECKOUT ] {x}") - for x in enabled_repos: - print(f"[ ENABLED ] {x}") - for x in disabled_repos: - print(f"[ DISABLED ] {x}") - for x in skip_node_packs: - print(f"[ SKIPPED ] {x}") - - # if is_failed: - # print("[bold red]ERROR: Failed to restore snapshot.[/bold red]") - - -# check need to migrate -need_to_migrate = False - - -async def check_need_to_migrate(): - global need_to_migrate - - await unified_manager.reload('cache') - await unified_manager.load_nightly(channel='default', mode='cache') - - legacy_custom_nodes = [] - - for x in unified_manager.active_nodes.values(): - if x[0] == 'nightly' and not x[1].endswith('@nightly'): - legacy_custom_nodes.append(x[1]) - - for x in unified_manager.nightly_inactive_nodes.values(): - if not x.endswith('@nightly'): - legacy_custom_nodes.append(x) - - if len(legacy_custom_nodes) > 0: - print("\n--------------------- ComfyUI-Manager migration notice --------------------") - print("The following custom nodes were installed using the old management method and require migration:\n") - print("\n".join(legacy_custom_nodes)) - print("---------------------------------------------------------------------------\n") - need_to_migrate = True - - -def get_comfyui_versions(): - repo = git.Repo(comfy_path) - versions = [x.name for x in repo.tags if x.name.startswith('v')] - versions.reverse() # nearest tag - - versions = versions[:4] - - current_tag = repo.git.describe('--tags') - - if current_tag not in versions: - versions = sorted(versions + [current_tag], reverse=True) - versions = versions[:4] - - main_branch = repo.heads.master - latest_commit = main_branch.commit - latest_tag = repo.git.describe('--tags', latest_commit.hexsha) - - if latest_tag != versions[0]: - versions.insert(0, 'nightly') - else: - versions[0] = 'nightly' - current_tag = 'nightly' - - return versions, current_tag - - -def switch_comfyui(tag): - repo = git.Repo(comfy_path) - - if tag == 'nightly': - repo.git.checkout('main') - repo.remotes.origin.pull() - print("[ComfyUI-Manager] ComfyUI version is switched to the latest 'main' version") - else: - repo.git.checkout(tag) - print(f"[ComfyUI-Manager] ComfyUI version is switched to '{tag}'") - - -def resolve_giturl_from_path(fullpath): - """ - resolve giturl path of unclassified custom node based on remote url in .git/config - """ - git_config_path = os.path.join(fullpath, '.git', 'config') - - if not os.path.exists(git_config_path): - return "unknown" - - config = configparser.ConfigParser() - config.read(git_config_path) - - for k, v in config.items(): - if k.startswith('remote ') and 'url' in v: - return v['url'].replace("git@github.com:", "https://github.com/") - - return None - - -def repo_switch_commit(repo_path, commit_hash): - try: - repo = git.Repo(repo_path) - if repo.head.commit.hexsha == commit_hash: - return False - - repo.git.checkout(commit_hash) - return True - except: - return None diff --git a/custom_nodes/comfyui-manager/glob/manager_downloader.py b/custom_nodes/comfyui-manager/glob/manager_downloader.py deleted file mode 100644 index 1aa0dc645816b699235e379317439edf98ad06f3..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/manager_downloader.py +++ /dev/null @@ -1,119 +0,0 @@ -import os -from urllib.parse import urlparse -import urllib -import sys -import logging -aria2 = os.getenv('COMFYUI_MANAGER_ARIA2_SERVER') -HF_ENDPOINT = os.getenv('HF_ENDPOINT') - -if aria2 is not None: - secret = os.getenv('COMFYUI_MANAGER_ARIA2_SECRET') - url = urlparse(aria2) - port = url.port - host = url.scheme + '://' + url.hostname - import aria2p - - aria2 = aria2p.API(aria2p.Client(host=host, port=port, secret=secret)) - - -def basic_download_url(url, dest_folder: str, filename: str): - ''' - Download file from url to dest_folder with filename - using requests library. - ''' - import requests - - # Ensure the destination folder exists - if not os.path.exists(dest_folder): - os.makedirs(dest_folder) - - # Full path to save the file - dest_path = os.path.join(dest_folder, filename) - - # Download the file - response = requests.get(url, stream=True) - if response.status_code == 200: - with open(dest_path, 'wb') as file: - for chunk in response.iter_content(chunk_size=1024): - if chunk: - file.write(chunk) - else: - raise Exception(f"Failed to download file from {url}") - - -def download_url(model_url: str, model_dir: str, filename: str): - if HF_ENDPOINT: - model_url = model_url.replace('https://huggingface.co', HF_ENDPOINT) - logging.info(f"model_url replaced by HF_ENDPOINT, new = {model_url}") - if aria2: - return aria2_download_url(model_url, model_dir, filename) - else: - from torchvision.datasets.utils import download_url as torchvision_download_url - return torchvision_download_url(model_url, model_dir, filename) - - -def aria2_find_task(dir: str, filename: str): - target = os.path.join(dir, filename) - - downloads = aria2.get_downloads() - - for download in downloads: - for file in download.files: - if file.is_metadata: - continue - if str(file.path) == target: - return download - - -def aria2_download_url(model_url: str, model_dir: str, filename: str): - import manager_core as core - import tqdm - import time - - if model_dir.startswith(core.comfy_path): - model_dir = model_dir[len(core.comfy_path) :] - - download_dir = model_dir if model_dir.startswith('/') else os.path.join('/models', model_dir) - - download = aria2_find_task(download_dir, filename) - if download is None: - options = {'dir': download_dir, 'out': filename} - download = aria2.add(model_url, options)[0] - - if download.is_active: - with tqdm.tqdm( - total=download.total_length, - bar_format='{l_bar}{bar}{r_bar}', - desc=filename, - unit='B', - unit_scale=True, - ) as progress_bar: - while download.is_active: - if progress_bar.total == 0 and download.total_length != 0: - progress_bar.reset(download.total_length) - progress_bar.update(download.completed_length - progress_bar.n) - time.sleep(1) - download.update() - - -def download_url_with_agent(url, save_path): - try: - headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} - - req = urllib.request.Request(url, headers=headers) - response = urllib.request.urlopen(req) - data = response.read() - - if not os.path.exists(os.path.dirname(save_path)): - os.makedirs(os.path.dirname(save_path)) - - with open(save_path, 'wb') as f: - f.write(data) - - except Exception as e: - print(f"Download error: {url} / {e}", file=sys.stderr) - return False - - print("Installation was successful.") - return True diff --git a/custom_nodes/comfyui-manager/glob/manager_server.py b/custom_nodes/comfyui-manager/glob/manager_server.py deleted file mode 100644 index 908cd50eab0846f4c7fa0fdfd9e687c95df63010..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/manager_server.py +++ /dev/null @@ -1,1459 +0,0 @@ -import traceback - -import folder_paths -import locale -import subprocess # don't remove this -import concurrent -import nodes -import os -import sys -import threading -import re -import shutil -import git -from datetime import datetime - -from server import PromptServer -import manager_core as core -import manager_util -import cm_global -import logging - - -logging.info(f"### Loading: ComfyUI-Manager ({core.version_str})") - -comfy_ui_hash = "-" -comfyui_tag = None - -SECURITY_MESSAGE_MIDDLE_OR_BELOW = "ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy" -SECURITY_MESSAGE_NORMAL_MINUS = "ERROR: To use this feature, you must either set '--listen' to a local IP and set the security level to 'normal-' or lower, or set the security level to 'middle' or 'weak'. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy" -SECURITY_MESSAGE_GENERAL = "ERROR: This installation is not allowed in this security_level. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy" - -routes = PromptServer.instance.routes - - -def handle_stream(stream, prefix): - stream.reconfigure(encoding=locale.getpreferredencoding(), errors='replace') - for msg in stream: - if prefix == '[!]' and ('it/s]' in msg or 's/it]' in msg) and ('%|' in msg or 'it [' in msg): - if msg.startswith('100%'): - print('\r' + msg, end="", file=sys.stderr), - else: - print('\r' + msg[:-1], end="", file=sys.stderr), - else: - if prefix == '[!]': - print(prefix, msg, end="", file=sys.stderr) - else: - print(prefix, msg, end="") - - -from comfy.cli_args import args -import latent_preview - - -is_local_mode = args.listen.startswith('127.') or args.listen.startswith('local.') - - -def is_allowed_security_level(level): - if level == 'block': - return False - elif level == 'high': - if is_local_mode: - return core.get_config()['security_level'].lower() in ['weak', 'normal-'] - else: - return core.get_config()['security_level'].lower() == 'weak' - elif level == 'middle': - return core.get_config()['security_level'].lower() in ['weak', 'normal', 'normal-'] - else: - return True - - -async def get_risky_level(files, pip_packages): - json_data1 = await core.get_data_by_mode('local', 'custom-node-list.json') - json_data2 = await core.get_data_by_mode('cache', 'custom-node-list.json', channel_url='https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main') - - all_urls = set() - for x in json_data1['custom_nodes'] + json_data2['custom_nodes']: - all_urls.update(x['files']) - - for x in files: - if x not in all_urls: - return "high" - - all_pip_packages = set() - for x in json_data1['custom_nodes'] + json_data2['custom_nodes']: - if "pip" in x: - all_pip_packages.update(x['pip']) - - for p in pip_packages: - if p not in all_pip_packages: - return "block" - - return "middle" - - -class ManagerFuncsInComfyUI(core.ManagerFuncs): - def get_current_preview_method(self): - if args.preview_method == latent_preview.LatentPreviewMethod.Auto: - return "auto" - elif args.preview_method == latent_preview.LatentPreviewMethod.Latent2RGB: - return "latent2rgb" - elif args.preview_method == latent_preview.LatentPreviewMethod.TAESD: - return "taesd" - else: - return "none" - - def run_script(self, cmd, cwd='.'): - if len(cmd) > 0 and cmd[0].startswith("#"): - logging.error(f"[ComfyUI-Manager] Unexpected behavior: `{cmd}`") - return 0 - - process = subprocess.Popen(cmd, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, bufsize=1, env=core.get_script_env()) - - stdout_thread = threading.Thread(target=handle_stream, args=(process.stdout, "")) - stderr_thread = threading.Thread(target=handle_stream, args=(process.stderr, "[!]")) - - stdout_thread.start() - stderr_thread.start() - - stdout_thread.join() - stderr_thread.join() - - return process.wait() - - -core.manager_funcs = ManagerFuncsInComfyUI() - -sys.path.append('../..') - -from manager_downloader import download_url, download_url_with_agent - -core.comfy_path = os.path.dirname(folder_paths.__file__) -core.js_path = os.path.join(core.comfy_path, "web", "extensions") - -local_db_model = os.path.join(manager_util.comfyui_manager_path, "model-list.json") -local_db_alter = os.path.join(manager_util.comfyui_manager_path, "alter-list.json") -local_db_custom_node_list = os.path.join(manager_util.comfyui_manager_path, "custom-node-list.json") -local_db_extension_node_mappings = os.path.join(manager_util.comfyui_manager_path, "extension-node-map.json") - - -def set_preview_method(method): - if method == 'auto': - args.preview_method = latent_preview.LatentPreviewMethod.Auto - elif method == 'latent2rgb': - args.preview_method = latent_preview.LatentPreviewMethod.Latent2RGB - elif method == 'taesd': - args.preview_method = latent_preview.LatentPreviewMethod.TAESD - else: - args.preview_method = latent_preview.LatentPreviewMethod.NoPreviews - - core.get_config()['preview_method'] = args.preview_method - - -set_preview_method(core.get_config()['preview_method']) - - -def set_default_ui_mode(mode): - core.get_config()['default_ui'] = mode - - -def set_component_policy(mode): - core.get_config()['component_policy'] = mode - - -def set_double_click_policy(mode): - core.get_config()['double_click_policy'] = mode - - -def print_comfyui_version(): - global comfy_ui_hash - global comfyui_tag - - is_detached = False - try: - repo = git.Repo(os.path.dirname(folder_paths.__file__)) - core.comfy_ui_revision = len(list(repo.iter_commits('HEAD'))) - - comfy_ui_hash = repo.head.commit.hexsha - cm_global.variables['comfyui.revision'] = core.comfy_ui_revision - - core.comfy_ui_commit_datetime = repo.head.commit.committed_datetime - cm_global.variables['comfyui.commit_datetime'] = core.comfy_ui_commit_datetime - - is_detached = repo.head.is_detached - current_branch = repo.active_branch.name - - comfyui_tag = core.get_comfyui_tag() - - try: - if core.comfy_ui_commit_datetime.date() < core.comfy_ui_required_commit_datetime.date(): - logging.warning(f"\n\n## [WARN] ComfyUI-Manager: Your ComfyUI version ({core.comfy_ui_revision})[{core.comfy_ui_commit_datetime.date()}] is too old. Please update to the latest version. ##\n\n") - except: - pass - - # process on_revision_detected --> - if 'cm.on_revision_detected_handler' in cm_global.variables: - for k, f in cm_global.variables['cm.on_revision_detected_handler']: - try: - f(core.comfy_ui_revision) - except Exception: - logging.error(f"[ERROR] '{k}' on_revision_detected_handler") - traceback.print_exc() - - del cm_global.variables['cm.on_revision_detected_handler'] - else: - logging.warning("[ComfyUI-Manager] Some features are restricted due to your ComfyUI being outdated.") - # <-- - - if current_branch == "master": - if comfyui_tag: - logging.info(f"### ComfyUI Version: {comfyui_tag} | Released on '{core.comfy_ui_commit_datetime.date()}'") - else: - logging.info(f"### ComfyUI Revision: {core.comfy_ui_revision} [{comfy_ui_hash[:8]}] | Released on '{core.comfy_ui_commit_datetime.date()}'") - else: - if comfyui_tag: - logging.info(f"### ComfyUI Version: {comfyui_tag} on '{current_branch}' | Released on '{core.comfy_ui_commit_datetime.date()}'") - else: - logging.info(f"### ComfyUI Revision: {core.comfy_ui_revision} on '{current_branch}' [{comfy_ui_hash[:8]}] | Released on '{core.comfy_ui_commit_datetime.date()}'") - except: - if is_detached: - logging.info(f"### ComfyUI Revision: {core.comfy_ui_revision} [{comfy_ui_hash[:8]}] *DETACHED | Released on '{core.comfy_ui_commit_datetime.date()}'") - else: - logging.info("### ComfyUI Revision: UNKNOWN (The currently installed ComfyUI is not a Git repository)") - - -print_comfyui_version() -core.check_invalid_nodes() - - - -def setup_environment(): - git_exe = core.get_config()['git_exe'] - - if git_exe != '': - git.Git().update_environment(GIT_PYTHON_GIT_EXECUTABLE=git_exe) - - -setup_environment() - -# Expand Server api - -from aiohttp import web -import aiohttp -import json -import zipfile -import urllib.request - - -def get_model_dir(data, show_log=False): - if 'download_model_base' in folder_paths.folder_names_and_paths: - models_base = folder_paths.folder_names_and_paths['download_model_base'][0][0] - else: - models_base = folder_paths.models_dir - - def resolve_custom_node(save_path): - save_path = save_path[13:] # remove 'custom_nodes/' - repo_name = save_path.replace('\\','/').split('/')[0] # get custom node repo name - - # NOTE: The creation of files within the custom node path should be removed in the future. - repo_path = core.lookup_installed_custom_nodes_legacy(repo_name) - if repo_path is not None and repo_path[0]: - # Returns the retargeted path based on the actually installed repository - return os.path.join(os.path.dirname(repo_path[1]), save_path) - else: - return None - - if data['save_path'] != 'default': - if '..' in data['save_path'] or data['save_path'].startswith('/'): - if show_log: - logging.info(f"[WARN] '{data['save_path']}' is not allowed path. So it will be saved into 'models/etc'.") - base_model = os.path.join(models_base, "etc") - else: - if data['save_path'].startswith("custom_nodes"): - base_model = resolve_custom_node(data['save_path']) - if base_model is None: - if show_log: - logging.info(f"[ComfyUI-Manager] The target custom node for model download is not installed: {data['save_path']}") - return None - else: - base_model = os.path.join(models_base, data['save_path']) - else: - model_type = data['type'] - if model_type == "checkpoints" or model_type == "checkpoint": - base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0] - elif model_type == "unclip": - base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0] - elif model_type == "clip" or model_type == "text_encoders": - if folder_paths.folder_names_and_paths.get("text_encoders"): - base_model = folder_paths.folder_names_and_paths["text_encoders"][0][0] - else: - if show_log: - logging.info("[ComfyUI-Manager] Your ComfyUI is outdated version.") - base_model = folder_paths.folder_names_and_paths["clip"][0][0] # outdated version - elif model_type == "VAE": - base_model = folder_paths.folder_names_and_paths["vae"][0][0] - elif model_type == "lora": - base_model = folder_paths.folder_names_and_paths["loras"][0][0] - elif model_type == "T2I-Adapter": - base_model = folder_paths.folder_names_and_paths["controlnet"][0][0] - elif model_type == "T2I-Style": - base_model = folder_paths.folder_names_and_paths["controlnet"][0][0] - elif model_type == "controlnet": - base_model = folder_paths.folder_names_and_paths["controlnet"][0][0] - elif model_type == "clip_vision": - base_model = folder_paths.folder_names_and_paths["clip_vision"][0][0] - elif model_type == "gligen": - base_model = folder_paths.folder_names_and_paths["gligen"][0][0] - elif model_type == "upscale": - base_model = folder_paths.folder_names_and_paths["upscale_models"][0][0] - elif model_type == "embeddings": - base_model = folder_paths.folder_names_and_paths["embeddings"][0][0] - elif model_type == "unet" or model_type == "diffusion_model": - if folder_paths.folder_names_and_paths.get("diffusion_models"): - base_model = folder_paths.folder_names_and_paths["diffusion_models"][0][1] - else: - if show_log: - logging.info("[ComfyUI-Manager] Your ComfyUI is outdated version.") - base_model = folder_paths.folder_names_and_paths["unet"][0][0] # outdated version - else: - base_model = os.path.join(models_base, "etc") - - return base_model - - -def get_model_path(data, show_log=False): - base_model = get_model_dir(data, show_log) - if base_model is None: - return None - else: - return os.path.join(base_model, data['filename']) - - -def check_state_of_git_node_pack(node_packs, do_fetch=False, do_update_check=True, do_update=False): - if do_fetch: - print("Start fetching...", end="") - elif do_update: - print("Start updating...", end="") - elif do_update_check: - print("Start update check...", end="") - - def process_custom_node(item): - core.check_state_of_git_node_pack_single(item, do_fetch, do_update_check, do_update) - - with concurrent.futures.ThreadPoolExecutor(4) as executor: - for k, v in node_packs.items(): - if v.get('active_version') in ['unknown', 'nightly']: - executor.submit(process_custom_node, v) - - if do_fetch: - print("\x1b[2K\rFetching done.") - elif do_update: - update_exists = any(item.get('updatable', False) for item in node_packs.values()) - if update_exists: - print("\x1b[2K\rUpdate done.") - else: - print("\x1b[2K\rAll extensions are already up-to-date.") - elif do_update_check: - print("\x1b[2K\rUpdate check done.") - - -def nickname_filter(json_obj): - preemptions_map = {} - - for k, x in json_obj.items(): - if 'preemptions' in x[1]: - for y in x[1]['preemptions']: - preemptions_map[y] = k - elif k.endswith("/ComfyUI"): - for y in x[0]: - preemptions_map[y] = k - - updates = {} - for k, x in json_obj.items(): - removes = set() - for y in x[0]: - k2 = preemptions_map.get(y) - if k2 is not None and k != k2: - removes.add(y) - - if len(removes) > 0: - updates[k] = [y for y in x[0] if y not in removes] - - for k, v in updates.items(): - json_obj[k][0] = v - - return json_obj - - -@routes.get("/customnode/getmappings") -async def fetch_customnode_mappings(request): - """ - provide unified (node -> node pack) mapping list - """ - mode = request.rel_url.query["mode"] - - nickname_mode = False - if mode == "nickname": - mode = "local" - nickname_mode = True - - json_obj = await core.get_data_by_mode(mode, 'extension-node-map.json') - json_obj = core.map_to_unified_keys(json_obj) - - if nickname_mode: - json_obj = nickname_filter(json_obj) - - all_nodes = set() - patterns = [] - for k, x in json_obj.items(): - all_nodes.update(set(x[0])) - - if 'nodename_pattern' in x[1]: - patterns.append((x[1]['nodename_pattern'], x[0])) - - missing_nodes = set(nodes.NODE_CLASS_MAPPINGS.keys()) - all_nodes - - for x in missing_nodes: - for pat, item in patterns: - if re.match(pat, x): - item.append(x) - - return web.json_response(json_obj, content_type='application/json') - - -@routes.get("/customnode/fetch_updates") -async def fetch_updates(request): - try: - if request.rel_url.query["mode"] == "local": - channel = 'local' - else: - channel = core.get_config()['channel_url'] - - await core.unified_manager.reload(request.rel_url.query["mode"]) - await core.unified_manager.get_custom_nodes(channel, request.rel_url.query["mode"]) - - res = core.unified_manager.fetch_or_pull_git_repo(is_pull=False) - - for x in res['failed']: - logging.error(f"FETCH FAILED: {x}") - - logging.info("\nDone.") - - if len(res['updated']) > 0: - return web.Response(status=201) - - return web.Response(status=200) - except: - traceback.print_exc() - return web.Response(status=400) - - -@routes.get("/customnode/update_all") -async def update_all(request): - if not is_allowed_security_level('middle'): - logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW) - return web.Response(status=403) - - try: - await core.save_snapshot_with_postfix('autosave') - - if request.rel_url.query["mode"] == "local": - channel = 'local' - else: - channel = core.get_config()['channel_url'] - - await core.unified_manager.reload(request.rel_url.query["mode"]) - await core.unified_manager.get_custom_nodes(channel, request.rel_url.query["mode"]) - - updated_cnr = [] - for k, v in core.unified_manager.active_nodes.items(): - if v[0] != 'nightly': - res = core.unified_manager.unified_update(k, v[0]) - if res.action == 'switch-cnr' and res: - updated_cnr.append(k) - - res = core.unified_manager.fetch_or_pull_git_repo(is_pull=True) - - res['updated'] += updated_cnr - - for x in res['failed']: - logging.error(f"PULL FAILED: {x}") - - if len(res['updated']) == 0 and len(res['failed']) == 0: - status = 200 - else: - status = 201 - - logging.info("\nDone.") - return web.json_response(res, status=status, content_type='application/json') - except: - traceback.print_exc() - return web.Response(status=400) - finally: - manager_util.clear_pip_cache() - - -def convert_markdown_to_html(input_text): - pattern_a = re.compile(r'\[a/([^]]+)]\(([^)]+)\)') - pattern_w = re.compile(r'\[w/([^]]+)]') - pattern_i = re.compile(r'\[i/([^]]+)]') - pattern_bold = re.compile(r'\*\*([^*]+)\*\*') - pattern_white = re.compile(r'%%([^*]+)%%') - - def replace_a(match): - return f"{match.group(1)}" - - def replace_w(match): - return f"

{match.group(1)}

" - - def replace_i(match): - return f"

{match.group(1)}

" - - def replace_bold(match): - return f"{match.group(1)}" - - def replace_white(match): - return f"{match.group(1)}" - - input_text = input_text.replace('\\[', '[').replace('\\]', ']').replace('<', '<').replace('>', '>') - - result_text = re.sub(pattern_a, replace_a, input_text) - result_text = re.sub(pattern_w, replace_w, result_text) - result_text = re.sub(pattern_i, replace_i, result_text) - result_text = re.sub(pattern_bold, replace_bold, result_text) - result_text = re.sub(pattern_white, replace_white, result_text) - - return result_text.replace("\n", "
") - - -def populate_markdown(x): - if 'description' in x: - x['description'] = convert_markdown_to_html(manager_util.sanitize_tag(x['description'])) - - if 'name' in x: - x['name'] = manager_util.sanitize_tag(x['name']) - - if 'title' in x: - x['title'] = manager_util.sanitize_tag(x['title']) - - -# freeze imported version -startup_time_installed_node_packs = core.get_installed_node_packs() -@routes.get("/customnode/installed") -async def installed_list(request): - mode = request.query.get('mode', 'default') - - if mode == 'imported': - res = startup_time_installed_node_packs - else: - res = core.get_installed_node_packs() - - return web.json_response(res, content_type='application/json') - - -@routes.get("/customnode/getlist") -async def fetch_customnode_list(request): - """ - provide unified custom node list - """ - if "skip_update" in request.rel_url.query and request.rel_url.query["skip_update"] == "true": - skip_update = True - else: - skip_update = False - - if request.rel_url.query["mode"] == "local": - channel = 'local' - else: - channel = core.get_config()['channel_url'] - - node_packs = await core.get_unified_total_nodes(channel, request.rel_url.query["mode"], 'cache') - json_obj_github = core.get_data_by_mode(request.rel_url.query["mode"], 'github-stats.json', 'default') - json_obj_extras = core.get_data_by_mode(request.rel_url.query["mode"], 'extras.json', 'default') - - core.populate_github_stats(node_packs, await json_obj_github) - core.populate_favorites(node_packs, await json_obj_extras) - - check_state_of_git_node_pack(node_packs, False, do_update_check=not skip_update) - - for v in node_packs.values(): - populate_markdown(v) - - if channel != 'local': - found = 'custom' - - for name, url in core.get_channel_dict().items(): - if url == channel: - found = name - break - - channel = found - - result = dict(channel=channel, node_packs=node_packs) - - return web.json_response(result, content_type='application/json') - - -@routes.get("/customnode/alternatives") -async def fetch_customnode_alternatives(request): - alter_json = await core.get_data_by_mode(request.rel_url.query["mode"], 'alter-list.json') - - res = {} - - for item in alter_json['items']: - populate_markdown(item) - res[item['id']] = item - - res = core.map_to_unified_keys(res) - - return web.json_response(res, content_type='application/json') - - -def check_model_installed(json_obj): - def process_model(item): - model_path = get_model_path(item, False) - item['installed'] = 'None' - - if model_path is not None: - if model_path.endswith('.zip'): - if os.path.exists(model_path[:-4]): - item['installed'] = 'True' - else: - item['installed'] = 'False' - elif os.path.exists(model_path): - item['installed'] = 'True' - else: - item['installed'] = 'False' - - with concurrent.futures.ThreadPoolExecutor(8) as executor: - for item in json_obj['models']: - executor.submit(process_model, item) - - -@routes.get("/externalmodel/getlist") -async def fetch_externalmodel_list(request): - json_obj = await core.get_data_by_mode(request.rel_url.query["mode"], 'model-list.json') - - check_model_installed(json_obj) - - for x in json_obj['models']: - populate_markdown(x) - - return web.json_response(json_obj, content_type='application/json') - - -@PromptServer.instance.routes.get("/snapshot/getlist") -async def get_snapshot_list(request): - items = [f[:-5] for f in os.listdir(core.manager_snapshot_path) if f.endswith('.json')] - items.sort(reverse=True) - return web.json_response({'items': items}, content_type='application/json') - - -@routes.get("/snapshot/remove") -async def remove_snapshot(request): - if not is_allowed_security_level('middle'): - logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW) - return web.Response(status=403) - - try: - target = request.rel_url.query["target"] - - path = os.path.join(core.manager_snapshot_path, f"{target}.json") - if os.path.exists(path): - os.remove(path) - - return web.Response(status=200) - except: - return web.Response(status=400) - - -@routes.get("/snapshot/restore") -async def restore_snapshot(request): - if not is_allowed_security_level('middle'): - logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW) - return web.Response(status=403) - - try: - target = request.rel_url.query["target"] - - path = os.path.join(core.manager_snapshot_path, f"{target}.json") - if os.path.exists(path): - if not os.path.exists(core.manager_startup_script_path): - os.makedirs(core.manager_startup_script_path) - - target_path = os.path.join(core.manager_startup_script_path, "restore-snapshot.json") - shutil.copy(path, target_path) - - logging.info(f"Snapshot restore scheduled: `{target}`") - return web.Response(status=200) - - logging.error(f"Snapshot file not found: `{path}`") - return web.Response(status=400) - except: - return web.Response(status=400) - - -@routes.get("/snapshot/get_current") -async def get_current_snapshot_api(request): - try: - return web.json_response(await core.get_current_snapshot(), content_type='application/json') - except: - return web.Response(status=400) - - -@routes.get("/snapshot/save") -async def save_snapshot(request): - try: - await core.save_snapshot_with_postfix('snapshot') - return web.Response(status=200) - except: - return web.Response(status=400) - - -def unzip_install(files): - temp_filename = 'manager-temp.zip' - for url in files: - if url.endswith("/"): - url = url[:-1] - try: - headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} - - req = urllib.request.Request(url, headers=headers) - response = urllib.request.urlopen(req) - data = response.read() - - with open(temp_filename, 'wb') as f: - f.write(data) - - with zipfile.ZipFile(temp_filename, 'r') as zip_ref: - zip_ref.extractall(core.get_default_custom_nodes_path()) - - os.remove(temp_filename) - except Exception as e: - logging.error(f"Install(unzip) error: {url} / {e}", file=sys.stderr) - return False - - logging.info("Installation was successful.") - return True - - -def copy_install(files, js_path_name=None): - for url in files: - if url.endswith("/"): - url = url[:-1] - try: - filename = os.path.basename(url) - if url.endswith(".py"): - download_url(url, core.get_default_custom_nodes_path(), filename) - else: - path = os.path.join(core.js_path, js_path_name) if js_path_name is not None else core.js_path - if not os.path.exists(path): - os.makedirs(path) - download_url(url, path, filename) - - except Exception as e: - logging.error(f"Install(copy) error: {url} / {e}", file=sys.stderr) - return False - - logging.info("Installation was successful.") - return True - - -def copy_uninstall(files, js_path_name='.'): - for url in files: - if url.endswith("/"): - url = url[:-1] - dir_name = os.path.basename(url) - base_path = core.get_default_custom_nodes_path() if url.endswith('.py') else os.path.join(core.js_path, js_path_name) - file_path = os.path.join(base_path, dir_name) - - try: - if os.path.exists(file_path): - os.remove(file_path) - elif os.path.exists(file_path + ".disabled"): - os.remove(file_path + ".disabled") - except Exception as e: - logging.error(f"Uninstall(copy) error: {url} / {e}", file=sys.stderr) - return False - - logging.info("Uninstallation was successful.") - return True - - -def copy_set_active(files, is_disable, js_path_name='.'): - if is_disable: - action_name = "Disable" - else: - action_name = "Enable" - - for url in files: - if url.endswith("/"): - url = url[:-1] - dir_name = os.path.basename(url) - base_path = core.get_default_custom_nodes_path() if url.endswith('.py') else os.path.join(core.js_path, js_path_name) - file_path = os.path.join(base_path, dir_name) - - try: - if is_disable: - current_name = file_path - new_name = file_path + ".disabled" - else: - current_name = file_path + ".disabled" - new_name = file_path - - os.rename(current_name, new_name) - - except Exception as e: - logging.error(f"{action_name}(copy) error: {url} / {e}", file=sys.stderr) - - return False - - logging.info(f"{action_name} was successful.") - return True - - -@routes.get("/customnode/versions/{node_name}") -async def get_cnr_versions(request): - node_name = request.match_info.get("node_name", None) - versions = core.cnr_utils.all_versions_of_node(node_name) - - if versions is not None: - return web.json_response(versions, content_type='application/json') - - return web.Response(status=400) - - -@routes.get("/customnode/disabled_versions/{node_name}") -async def get_disabled_versions(request): - node_name = request.match_info.get("node_name", None) - versions = [] - if node_name in core.unified_manager.nightly_inactive_nodes: - versions.append(dict(version='nightly')) - - for v in core.unified_manager.cnr_inactive_nodes.get(node_name, {}).keys(): - versions.append(dict(version=v)) - - if versions: - return web.json_response(versions, content_type='application/json') - - return web.Response(status=400) - - -@routes.post("/customnode/import_fail_info") -async def import_fail_info(request): - json_data = await request.json() - - if 'cnr_id' in json_data: - module_name = core.unified_manager.get_module_name(json_data['cnr_id']) - else: - module_name = core.unified_manager.get_module_name(json_data['url']) - - if module_name is not None: - info = cm_global.error_dict.get(module_name) - if info is not None: - return web.json_response(info) - - return web.Response(status=400) - - -@routes.post("/customnode/reinstall") -async def reinstall_custom_node(request): - await uninstall_custom_node(request) - await install_custom_node(request) - - -@routes.post("/customnode/install") -async def install_custom_node(request): - if not is_allowed_security_level('middle'): - logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW) - return web.Response(status=403, text="A security error has occurred. Please check the terminal logs") - - json_data = await request.json() - - # non-nightly cnr is safe - risky_level = None - cnr_id = json_data.get('id') - skip_post_install = json_data.get('skip_post_install') - - git_url = None - - if json_data['version'] != 'unknown': - selected_version = json_data.get('selected_version', 'latest') - if selected_version != 'nightly': - risky_level = 'low' - node_spec_str = f"{cnr_id}@{selected_version}" - else: - node_spec_str = f"{cnr_id}@nightly" - git_url = [json_data.get('repository')] - if git_url is None: - logging.error(f"[ComfyUI-Manager] Following node pack doesn't provide `nightly` version: ${git_url}") - return web.Response(status=404, text=f"Following node pack doesn't provide `nightly` version: ${git_url}") - else: - # unknown - unknown_name = os.path.basename(json_data['files'][0]) - node_spec_str = f"{unknown_name}@unknown" - git_url = json_data.get('files') - - # apply security policy if not cnr node (nightly isn't regarded as cnr node) - if risky_level is None: - if git_url is not None: - risky_level = await get_risky_level(git_url, json_data.get('pip', [])) - else: - return web.Response(status=404, text=f"Following node pack doesn't provide `nightly` version: ${git_url}") - - if not is_allowed_security_level(risky_level): - logging.error(SECURITY_MESSAGE_GENERAL) - return web.Response(status=404, text="A security error has occurred. Please check the terminal logs") - - node_spec = core.unified_manager.resolve_node_spec(node_spec_str) - - if node_spec is None: - return web.Response(status=400, text=f"Cannot resolve install target: '{node_spec_str}'") - - node_name, version_spec, is_specified = node_spec - res = await core.unified_manager.install_by_id(node_name, version_spec, json_data['channel'], json_data['mode'], return_postinstall=skip_post_install) - # discard post install if skip_post_install mode - - if res.action not in ['skip', 'enable', 'install-git', 'install-cnr', 'switch-cnr']: - logging.error(f"[ComfyUI-Manager] Installation failed:\n{res.msg}") - return web.Response(status=400, text=res.msg) - elif not res.result: - logging.error(f"[ComfyUI-Manager] Installation failed:\n{res.msg}") - return web.Response(status=400, text=res.msg) - - return web.Response(status=200, text="Installation success.") - - -@routes.post("/customnode/fix") -async def fix_custom_node(request): - if not is_allowed_security_level('middle'): - logging.error(SECURITY_MESSAGE_GENERAL) - return web.Response(status=403, text="A security error has occurred. Please check the terminal logs") - - json_data = await request.json() - - node_id = json_data.get('id') - node_ver = json_data['version'] - if node_ver != 'unknown': - node_name = node_id - else: - # unknown - node_name = os.path.basename(json_data['files'][0]) - - res = core.unified_manager.unified_fix(node_name, node_ver) - - if res.result: - logging.info("\nAfter restarting ComfyUI, please refresh the browser.") - return web.json_response({}, content_type='application/json') - else: - logging.error(res.msg) - - logging.error(f"\nERROR: An error occurred while fixing '{node_name}@{node_ver}'.") - return web.Response(status=400, text=f"An error occurred while fixing '{node_name}@{node_ver}'.") - - -@routes.post("/customnode/install/git_url") -async def install_custom_node_git_url(request): - if not is_allowed_security_level('high'): - logging.error(SECURITY_MESSAGE_NORMAL_MINUS) - return web.Response(status=403) - - url = await request.text() - res = await core.gitclone_install(url) - - if res.action == 'skip': - logging.info(f"\nAlready installed: '{res.target}'") - return web.Response(status=200) - elif res.result: - logging.info("\nAfter restarting ComfyUI, please refresh the browser.") - return web.Response(status=200) - - logging.error(res.msg) - return web.Response(status=400) - - -@routes.post("/customnode/install/pip") -async def install_custom_node_pip(request): - if not is_allowed_security_level('high'): - logging.error(SECURITY_MESSAGE_NORMAL_MINUS) - return web.Response(status=403) - - packages = await request.text() - core.pip_install(packages.split(' ')) - - return web.Response(status=200) - - -@routes.post("/customnode/uninstall") -async def uninstall_custom_node(request): - if not is_allowed_security_level('middle'): - logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW) - return web.Response(status=403, text="A security error has occurred. Please check the terminal logs") - - json_data = await request.json() - - node_id = json_data.get('id') - if json_data['version'] != 'unknown': - is_unknown = False - node_name = node_id - else: - # unknown - is_unknown = True - node_name = os.path.basename(json_data['files'][0]) - - res = core.unified_manager.unified_uninstall(node_name, is_unknown) - - if res.result: - logging.info("\nAfter restarting ComfyUI, please refresh the browser.") - return web.json_response({}, content_type='application/json') - - logging.error(f"\nERROR: An error occurred while uninstalling '{node_name}'.") - return web.Response(status=400, text=f"An error occurred while uninstalling '{node_name}'.") - - -@routes.post("/customnode/update") -async def update_custom_node(request): - if not is_allowed_security_level('middle'): - logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW) - return web.Response(status=403, text="A security error has occurred. Please check the terminal logs") - - json_data = await request.json() - - node_id = json_data.get('id') - if json_data['version'] != 'unknown': - node_name = node_id - else: - # unknown - node_name = os.path.basename(json_data['files'][0]) - - res = core.unified_manager.unified_update(node_name, json_data['version']) - - manager_util.clear_pip_cache() - - if res.result: - logging.info("\nAfter restarting ComfyUI, please refresh the browser.") - return web.json_response({}, content_type='application/json') - - logging.error(f"\nERROR: An error occurred while updating '{node_name}'.") - return web.Response(status=400, text=f"An error occurred while updating '{node_name}'.") - - -@routes.get("/comfyui_manager/update_comfyui") -async def update_comfyui(request): - logging.info("Update ComfyUI") - - try: - repo_path = os.path.dirname(folder_paths.__file__) - res = core.update_path(repo_path) - if res == "fail": - logging.error("ComfyUI update fail: The installed ComfyUI does not have a Git repository.") - return web.Response(status=400) - elif res == "updated": - return web.Response(status=201) - else: # skipped - return web.Response(status=200) - except Exception as e: - logging.error(f"ComfyUI update fail: {e}", file=sys.stderr) - - return web.Response(status=400) - - -@routes.get("/comfyui_manager/comfyui_versions") -async def comfyui_versions(request): - try: - res, current = core.get_comfyui_versions() - return web.json_response({'versions': res, 'current': current}, status=200, content_type='application/json') - except Exception as e: - logging.error(f"ComfyUI update fail: {e}", file=sys.stderr) - - return web.Response(status=400) - - -@routes.get("/comfyui_manager/comfyui_switch_version") -async def comfyui_switch_version(request): - try: - if "ver" in request.rel_url.query: - core.switch_comfyui(request.rel_url.query['ver']) - - return web.Response(status=200) - except Exception as e: - logging.error(f"ComfyUI update fail: {e}", file=sys.stderr) - - return web.Response(status=400) - - -@routes.post("/customnode/disable") -async def disable_node(request): - json_data = await request.json() - - node_id = json_data.get('id') - if json_data['version'] != 'unknown': - is_unknown = False - node_name = node_id - else: - # unknown - is_unknown = True - node_name = os.path.basename(json_data['files'][0]) - - res = core.unified_manager.unified_disable(node_name, is_unknown) - - if res: - return web.json_response({}, content_type='application/json') - - return web.Response(status=400, text="Failed to disable") - - -@routes.get("/manager/migrate_unmanaged_nodes") -async def migrate_unmanaged_nodes(request): - logging.info("[ComfyUI-Manager] Migrating unmanaged nodes...") - await core.unified_manager.migrate_unmanaged_nodes() - logging.info("Done.") - return web.Response(status=200) - - -@routes.get("/manager/need_to_migrate") -async def need_to_migrate(request): - return web.Response(text=str(core.need_to_migrate), status=200) - - -@routes.post("/model/install") -async def install_model(request): - json_data = await request.json() - - model_path = get_model_path(json_data) - - if not is_allowed_security_level('middle'): - logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW) - return web.Response(status=403) - - if not json_data['filename'].endswith('.safetensors') and not is_allowed_security_level('high'): - models_json = await core.get_data_by_mode('cache', 'model-list.json') - - is_belongs_to_whitelist = False - for x in models_json['models']: - if x.get('url') == json_data['url']: - is_belongs_to_whitelist = True - break - - if not is_belongs_to_whitelist: - logging.error(SECURITY_MESSAGE_NORMAL_MINUS) - return web.Response(status=403) - - res = False - - try: - if model_path is not None: - - model_url = json_data['url'] - logging.info(f"Install model '{json_data['name']}' from '{model_url}' into '{model_path}'") - if not core.get_config()['model_download_by_agent'] and ( - model_url.startswith('https://github.com') or model_url.startswith('https://huggingface.co') or model_url.startswith('https://heibox.uni-heidelberg.de')): - model_dir = get_model_dir(json_data, True) - download_url(model_url, model_dir, filename=json_data['filename']) - if model_path.endswith('.zip'): - res = core.unzip(model_path) - else: - res = True - - if res: - return web.json_response({}, content_type='application/json') - else: - res = download_url_with_agent(model_url, model_path) - if res and model_path.endswith('.zip'): - res = core.unzip(model_path) - else: - logging.error(f"Model installation error: invalid model type - {json_data['type']}") - - if res: - return web.json_response({}, content_type='application/json') - except Exception as e: - logging.error(f"[ERROR] {e}", file=sys.stderr) - - return web.Response(status=400) - - -@routes.get("/manager/preview_method") -async def preview_method(request): - if "value" in request.rel_url.query: - set_preview_method(request.rel_url.query['value']) - core.write_config() - else: - return web.Response(text=core.manager_funcs.get_current_preview_method(), status=200) - - return web.Response(status=200) - - -@routes.get("/manager/default_ui") -async def default_ui_mode(request): - if "value" in request.rel_url.query: - set_default_ui_mode(request.rel_url.query['value']) - core.write_config() - else: - return web.Response(text=core.get_config()['default_ui'], status=200) - - return web.Response(status=200) - - -@routes.get("/manager/component/policy") -async def component_policy(request): - if "value" in request.rel_url.query: - set_component_policy(request.rel_url.query['value']) - core.write_config() - else: - return web.Response(text=core.get_config()['component_policy'], status=200) - - return web.Response(status=200) - - -@routes.get("/manager/dbl_click/policy") -async def dbl_click_policy(request): - if "value" in request.rel_url.query: - set_double_click_policy(request.rel_url.query['value']) - core.write_config() - else: - return web.Response(text=core.get_config()['double_click_policy'], status=200) - - return web.Response(status=200) - - -@routes.get("/manager/channel_url_list") -async def channel_url_list(request): - channels = core.get_channel_dict() - if "value" in request.rel_url.query: - channel_url = channels.get(request.rel_url.query['value']) - if channel_url is not None: - core.get_config()['channel_url'] = channel_url - core.write_config() - else: - selected = 'custom' - selected_url = core.get_config()['channel_url'] - - for name, url in channels.items(): - if url == selected_url: - selected = name - break - - res = {'selected': selected, - 'list': core.get_channel_list()} - return web.json_response(res, status=200) - - return web.Response(status=200) - - -def add_target_blank(html_text): - pattern = r'(]*)(>)' - - def add_target(match): - if 'target=' not in match.group(1): - return match.group(1) + ' target="_blank"' + match.group(2) - return match.group(0) - - modified_html = re.sub(pattern, add_target, html_text) - - return modified_html - - -@routes.get("/manager/notice") -async def get_notice(request): - url = "github.com" - path = "/ltdrdata/ltdrdata.github.io/wiki/News" - - async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session: - async with session.get(f"https://{url}{path}") as response: - if response.status == 200: - # html_content = response.read().decode('utf-8') - html_content = await response.text() - - pattern = re.compile(r'
([\s\S]*?)
') - match = pattern.search(html_content) - - if match: - markdown_content = match.group(1) - version_tag = core.get_comfyui_tag() - if version_tag is None: - markdown_content += f"
ComfyUI: {core.comfy_ui_revision}[{comfy_ui_hash[:6]}]({core.comfy_ui_commit_datetime.date()})" - else: - markdown_content += (f"
ComfyUI: {version_tag}
" - f"         ({core.comfy_ui_commit_datetime.date()})") - # markdown_content += f"
         ()" - markdown_content += f"
Manager: {core.version_str}" - - markdown_content = add_target_blank(markdown_content) - - try: - if core.comfy_ui_commit_datetime == datetime(1900, 1, 1, 0, 0, 0): - markdown_content = '

Your ComfyUI isn\'t git repo.

' + markdown_content - elif core.comfy_ui_required_commit_datetime.date() > core.comfy_ui_commit_datetime.date(): - markdown_content = '

Your ComfyUI is too OUTDATED!!!

' + markdown_content - except: - pass - - return web.Response(text=markdown_content, status=200) - else: - return web.Response(text="Unable to retrieve Notice", status=200) - else: - return web.Response(text="Unable to retrieve Notice", status=200) - - -@routes.get("/manager/reboot") -def restart(self): - if not is_allowed_security_level('middle'): - logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW) - return web.Response(status=403) - - try: - sys.stdout.close_log() - except Exception: - pass - - if '__COMFY_CLI_SESSION__' in os.environ: - with open(os.path.join(os.environ['__COMFY_CLI_SESSION__'] + '.reboot'), 'w'): - pass - - print("\nRestarting...\n\n") # This printing should not be logging - that will be ugly - exit(0) - - print("\nRestarting... [Legacy Mode]\n\n") # This printing should not be logging - that will be ugly - - sys_argv = sys.argv.copy() - if '--windows-standalone-build' in sys_argv: - sys_argv.remove('--windows-standalone-build') - - if sys.platform.startswith('win32'): - cmds = ['"' + sys.executable + '"', '"' + sys_argv[0] + '"'] + sys_argv[1:] - else: - cmds = [sys.executable] + sys_argv - - print(f"Command: {cmds}", flush=True) - - return os.execv(sys.executable, cmds) - - -@routes.post("/manager/component/save") -async def save_component(request): - try: - data = await request.json() - name = data['name'] - workflow = data['workflow'] - - if not os.path.exists(core.manager_components_path): - os.mkdir(core.manager_components_path) - - if 'packname' in workflow and workflow['packname'] != '': - sanitized_name = manager_util.sanitize_filename(workflow['packname']) + '.pack' - else: - sanitized_name = manager_util.sanitize_filename(name) + '.json' - - filepath = os.path.join(core.manager_components_path, sanitized_name) - components = {} - if os.path.exists(filepath): - with open(filepath) as f: - components = json.load(f) - - components[name] = workflow - - with open(filepath, 'w') as f: - json.dump(components, f, indent=4, sort_keys=True) - return web.Response(text=filepath, status=200) - except: - return web.Response(status=400) - - -@routes.post("/manager/component/loads") -async def load_components(request): - if os.path.exists(core.manager_components_path): - try: - json_files = [f for f in os.listdir(core.manager_components_path) if f.endswith('.json')] - pack_files = [f for f in os.listdir(core.manager_components_path) if f.endswith('.pack')] - - components = {} - for json_file in json_files + pack_files: - file_path = os.path.join(core.manager_components_path, json_file) - with open(file_path, 'r') as file: - try: - # When there is a conflict between the .pack and the .json, the pack takes precedence and overrides. - components.update(json.load(file)) - except json.JSONDecodeError as e: - logging.error(f"[ComfyUI-Manager] Error decoding component file in file {json_file}: {e}") - - return web.json_response(components) - except Exception as e: - logging.error(f"[ComfyUI-Manager] failed to load components\n{e}") - return web.Response(status=400) - else: - return web.json_response({}) - - -@routes.get("/manager/version") -async def get_version(request): - return web.Response(text=core.version_str, status=200) - - -async def _confirm_try_install(sender, custom_node_url, msg): - json_obj = await core.get_data_by_mode('default', 'custom-node-list.json') - - sender = manager_util.sanitize_tag(sender) - msg = manager_util.sanitize_tag(msg) - target = core.lookup_customnode_by_url(json_obj, custom_node_url) - - if target is not None: - PromptServer.instance.send_sync("cm-api-try-install-customnode", - {"sender": sender, "target": target, "msg": msg}) - else: - logging.error(f"[ComfyUI Manager API] Failed to try install - Unknown custom node url '{custom_node_url}'") - - -def confirm_try_install(sender, custom_node_url, msg): - asyncio.run(_confirm_try_install(sender, custom_node_url, msg)) - - -cm_global.register_api('cm.try-install-custom-node', confirm_try_install) - -import asyncio - - -async def default_cache_update(): - async def get_cache(filename): - uri = f"{core.DEFAULT_CHANNEL}/{filename}" - cache_uri = str(manager_util.simple_hash(uri)) + '_' + filename - cache_uri = os.path.join(manager_util.cache_dir, cache_uri) - - json_obj = await manager_util.get_data(uri, True) - - with manager_util.cache_lock: - with open(cache_uri, "w", encoding='utf-8') as file: - json.dump(json_obj, file, indent=4, sort_keys=True) - logging.info(f"[ComfyUI-Manager] default cache updated: {uri}") - - a = get_cache("custom-node-list.json") - b = get_cache("extension-node-map.json") - c = get_cache("model-list.json") - d = get_cache("alter-list.json") - e = get_cache("github-stats.json") - - await asyncio.gather(a, b, c, d, e) - - # load at least once - await core.unified_manager.reload('remote', dont_wait=False) - await core.unified_manager.get_custom_nodes('default', 'remote') - - # NOTE: hide migration button temporarily. - # if not core.get_config()['skip_migration_check']: - # await core.check_need_to_migrate() - # else: - # logging.info("[ComfyUI-Manager] Migration check is skipped...") - -threading.Thread(target=lambda: asyncio.run(default_cache_update())).start() - -if not os.path.exists(core.manager_config_path): - core.get_config() - core.write_config() - - -cm_global.register_extension('ComfyUI-Manager', - {'version': core.version, - 'name': 'ComfyUI Manager', - 'nodes': {}, - 'description': 'This extension provides the ability to manage custom nodes in ComfyUI.', }) - - diff --git a/custom_nodes/comfyui-manager/glob/manager_util.py b/custom_nodes/comfyui-manager/glob/manager_util.py deleted file mode 100644 index d2f8e8422c0f42927f866b64a14dc7adc24eaa49..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/manager_util.py +++ /dev/null @@ -1,361 +0,0 @@ -""" -description: - `manager_util` is the lightest module shared across the prestartup_script, main code, and cm-cli of ComfyUI-Manager. -""" - -import aiohttp -import json -import threading -import os -from datetime import datetime -import subprocess -import sys -import re -import logging - - -cache_lock = threading.Lock() - -comfyui_manager_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) -cache_dir = os.path.join(comfyui_manager_path, '.cache') # This path is also updated together in **manager_core.update_user_directory**. - - -# DON'T USE StrictVersion - cannot handle pre_release version -# try: -# from distutils.version import StrictVersion -# except: -# 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 - self.major = 0 - self.minor = 0 - self.patch = 0 - self.pre_release = None - self.parse_version_string() - - def parse_version_string(self): - parts = self.version_string.split('.') - if not parts: - raise ValueError("Version string must not be empty") - - self.major = int(parts[0]) - self.minor = int(parts[1]) if len(parts) > 1 else 0 - self.patch = int(parts[2]) if len(parts) > 2 else 0 - - # Handling pre-release versions if present - if len(parts) > 3: - self.pre_release = parts[3] - - def __str__(self): - version = f"{self.major}.{self.minor}.{self.patch}" - if self.pre_release: - version += f"-{self.pre_release}" - return version - - def __eq__(self, other): - return (self.major, self.minor, self.patch, self.pre_release) == \ - (other.major, other.minor, other.patch, other.pre_release) - - def __lt__(self, other): - if (self.major, self.minor, self.patch) == (other.major, other.minor, other.patch): - return self.pre_release_compare(self.pre_release, other.pre_release) < 0 - return (self.major, self.minor, self.patch) < (other.major, other.minor, other.patch) - - @staticmethod - def pre_release_compare(pre1, pre2): - if pre1 == pre2: - return 0 - if pre1 is None: - return 1 - if pre2 is None: - return -1 - return -1 if pre1 < pre2 else 1 - - def __le__(self, other): - return self == other or self < other - - def __gt__(self, other): - return not self <= other - - def __ge__(self, other): - return not self < other - - def __ne__(self, other): - return not self == other - - -def simple_hash(input_string): - hash_value = 0 - for char in input_string: - hash_value = (hash_value * 31 + ord(char)) % (2**32) - - return hash_value - - -def is_file_created_within_one_day(file_path): - if not os.path.exists(file_path): - return False - - file_creation_time = os.path.getctime(file_path) - current_time = datetime.now().timestamp() - time_difference = current_time - file_creation_time - - return time_difference <= 86400 - - -async def get_data(uri, silent=False): - if not silent: - print(f"FETCH DATA from: {uri}", end="") - - if uri.startswith("http"): - async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session: - headers = { - 'Cache-Control': 'no-cache', - 'Pragma': 'no-cache', - 'Expires': '0' - } - async with session.get(uri, headers=headers) as resp: - json_text = await resp.text() - else: - with cache_lock: - with open(uri, "r", encoding="utf-8") as f: - json_text = f.read() - - json_obj = json.loads(json_text) - - if not silent: - print(" [DONE]") - - return json_obj - - -def get_cache_path(uri): - cache_uri = str(simple_hash(uri)) + '_' + os.path.basename(uri).replace('&', "_").replace('?', "_").replace('=', "_") - return os.path.join(cache_dir, cache_uri+'.json') - - -def get_cache_state(uri): - cache_uri = get_cache_path(uri) - - if not os.path.exists(cache_uri): - return "not-cached" - elif is_file_created_within_one_day(cache_uri): - return "cached" - - return "expired" - - -def save_to_cache(uri, json_obj, silent=False): - cache_uri = get_cache_path(uri) - - with cache_lock: - with open(cache_uri, "w", encoding='utf-8') as file: - json.dump(json_obj, file, indent=4, sort_keys=True) - if not silent: - logging.info(f"[ComfyUI-Manager] default cache updated: {uri}") - - -async def get_data_with_cache(uri, silent=False, cache_mode=True, dont_wait=False): - cache_uri = get_cache_path(uri) - - if cache_mode and dont_wait: - # NOTE: return the cache if possible, even if it is expired, so do not cache - if not os.path.exists(cache_uri): - logging.error(f"[ComfyUI-Manager] The network connection is unstable, so it is operating in fallback mode: {uri}") - - return {} - else: - if not is_file_created_within_one_day(cache_uri): - logging.error(f"[ComfyUI-Manager] The network connection is unstable, so it is operating in outdated cache mode: {uri}") - - return await get_data(cache_uri, silent=silent) - - if cache_mode and is_file_created_within_one_day(cache_uri): - json_obj = await get_data(cache_uri, silent=silent) - else: - json_obj = await get_data(uri, silent=silent) - with cache_lock: - with open(cache_uri, "w", encoding='utf-8') as file: - json.dump(json_obj, file, indent=4, sort_keys=True) - if not silent: - logging.info(f"[ComfyUI-Manager] default cache updated: {uri}") - - return json_obj - - -def sanitize_tag(x): - return x.replace('<', '<').replace('>', '>') - - -def extract_package_as_zip(file_path, extract_path): - import zipfile - try: - with zipfile.ZipFile(file_path, "r") as zip_ref: - zip_ref.extractall(extract_path) - extracted_files = zip_ref.namelist() - logging.info(f"Extracted zip file to {extract_path}") - return extracted_files - except zipfile.BadZipFile: - logging.error(f"File '{file_path}' is not a zip or is corrupted.") - return None - - -pip_map = None - - -def get_installed_packages(renew=False): - global pip_map - - if renew or pip_map is None: - try: - result = subprocess.check_output([sys.executable, '-m', 'pip', 'list'], universal_newlines=True) - - pip_map = {} - for line in result.split('\n'): - x = line.strip() - if x: - y = line.split() - if y[0] == 'Package' or y[0].startswith('-'): - continue - - pip_map[y[0]] = y[1] - except subprocess.CalledProcessError: - logging.error("[ComfyUI-Manager] Failed to retrieve the information of installed pip packages.") - return set() - - return pip_map - - -def clear_pip_cache(): - global pip_map - pip_map = None - - -torch_torchvision_version_map = { - '2.5.1': '0.20.1', - '2.5.0': '0.20.0', - '2.4.1': '0.19.1', - '2.4.0': '0.19.0', - '2.3.1': '0.18.1', - '2.3.0': '0.18.0', - '2.2.2': '0.17.2', - '2.2.1': '0.17.1', - '2.2.0': '0.17.0', - '2.1.2': '0.16.2', - '2.1.1': '0.16.1', - '2.1.0': '0.16.0', - '2.0.1': '0.15.2', - '2.0.0': '0.15.1', -} - - -class PIPFixer: - def __init__(self, prev_pip_versions): - self.prev_pip_versions = { **prev_pip_versions } - - def torch_rollback(self): - spec = self.prev_pip_versions['torch'].split('+') - if len(spec) > 0: - platform = spec[1] - else: - cmd = [sys.executable, '-m', 'pip', 'install', '--force', 'torch', 'torchvision', 'torchaudio'] - subprocess.check_output(cmd, universal_newlines=True) - logging.error(cmd) - return - - torch_ver = StrictVersion(spec[0]) - torch_ver = f"{torch_ver.major}.{torch_ver.minor}.{torch_ver.patch}" - torchvision_ver = torch_torchvision_version_map.get(torch_ver) - - if torchvision_ver is None: - cmd = [sys.executable, '-m', 'pip', 'install', '--pre', - 'torch', 'torchvision', 'torchaudio', - '--index-url', f"https://download.pytorch.org/whl/nightly/{platform}"] - logging.info("[ComfyUI-Manager] restore PyTorch to nightly version") - else: - cmd = [sys.executable, '-m', 'pip', 'install', - f'torch=={torch_ver}', f'torchvision=={torchvision_ver}', f"torchaudio=={torch_ver}", - '--index-url', f"https://download.pytorch.org/whl/{platform}"] - logging.info(f"[ComfyUI-Manager] restore PyTorch to {torch_ver}+{platform}") - - subprocess.check_output(cmd, universal_newlines=True) - - def fix_broken(self): - new_pip_versions = get_installed_packages(True) - - # remove `comfy` python package - try: - if 'comfy' in new_pip_versions: - cmd = [sys.executable, '-m', 'pip', 'uninstall', 'comfy'] - subprocess.check_output(cmd, universal_newlines=True) - - logging.warning("[ComfyUI-Manager] 'comfy' python package is uninstalled.\nWARN: The 'comfy' package is completely unrelated to ComfyUI and should never be installed as it causes conflicts with ComfyUI.") - except Exception as e: - logging.error("[ComfyUI-Manager] Failed to uninstall `comfy` python package") - logging.error(e) - - # fix torch - reinstall torch packages if version is changed - try: - if 'torch' not in self.prev_pip_versions or 'torchvision' not in self.prev_pip_versions or 'torchaudio' not in self.prev_pip_versions: - logging.error("[ComfyUI-Manager] PyTorch is not installed") - elif self.prev_pip_versions['torch'] != new_pip_versions['torch'] \ - or self.prev_pip_versions['torchvision'] != new_pip_versions['torchvision'] \ - or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']: - self.torch_rollback() - except Exception as e: - logging.error("[ComfyUI-Manager] Failed to restore PyTorch") - logging.error(e) - - # fix opencv - try: - ocp = new_pip_versions.get('opencv-contrib-python') - ocph = new_pip_versions.get('opencv-contrib-python-headless') - op = new_pip_versions.get('opencv-python') - oph = new_pip_versions.get('opencv-python-headless') - - versions = [ocp, ocph, op, oph] - versions = [StrictVersion(x) for x in versions if x is not None] - versions.sort(reverse=True) - - if len(versions) > 0: - # upgrade to maximum version - targets = [] - cur = versions[0] - if ocp is not None and StrictVersion(ocp) != cur: - targets.append('opencv-contrib-python') - if ocph is not None and StrictVersion(ocph) != cur: - targets.append('opencv-contrib-python-headless') - if op is not None and StrictVersion(op) != cur: - targets.append('opencv-python') - if oph is not None and StrictVersion(oph) != cur: - targets.append('opencv-python-headless') - - if len(targets) > 0: - for x in targets: - cmd = [sys.executable, '-m', 'pip', 'install', f"{x}=={versions[0].version_string}"] - subprocess.check_output(cmd, universal_newlines=True) - - logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}") - except Exception as e: - logging.error("[ComfyUI-Manager] Failed to restore opencv") - logging.error(e) - - # fix numpy - try: - np = new_pip_versions.get('numpy') - if np is not None: - if StrictVersion(np) >= StrictVersion('2'): - subprocess.check_output([sys.executable, '-m', 'pip', 'install', "numpy<2"], universal_newlines=True) - except Exception as e: - logging.error("[ComfyUI-Manager] Failed to restore numpy") - logging.error(e) - - -def sanitize(data): - return data.replace("<", "<").replace(">", ">") - - -def sanitize_filename(input_string): - result_string = re.sub(r'[^a-zA-Z0-9_]', '_', input_string) - return result_string diff --git a/custom_nodes/comfyui-manager/glob/node_package.py b/custom_nodes/comfyui-manager/glob/node_package.py deleted file mode 100644 index 6e2733ec06282ec43fdb8b41509fb5ac0a1f9627..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/node_package.py +++ /dev/null @@ -1,72 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass -import os - -from git_utils import get_commit_hash - - -@dataclass -class InstalledNodePackage: - """Information about an installed node package.""" - - id: str - fullpath: str - disabled: bool - version: str - - @property - def is_unknown(self) -> bool: - return self.version == "unknown" - - @property - def is_nightly(self) -> bool: - return self.version == "nightly" - - @property - def is_from_cnr(self) -> bool: - return not self.is_unknown and not self.is_nightly - - @property - def is_enabled(self) -> bool: - return not self.disabled - - @property - def is_disabled(self) -> bool: - return self.disabled - - def get_commit_hash(self) -> str: - return get_commit_hash(self.fullpath) - - def isValid(self) -> bool: - if self.is_from_cnr: - return os.path.exists(os.path.join(self.fullpath, '.tracking')) - - return True - - @staticmethod - def from_fullpath(fullpath: str, resolve_from_path) -> InstalledNodePackage: - parent_folder_name = os.path.basename(os.path.dirname(fullpath)) - module_name = os.path.basename(fullpath) - - if module_name.endswith(".disabled"): - node_id = module_name[:-9] - disabled = True - elif parent_folder_name == ".disabled": - # Nodes under custom_nodes/.disabled/* are disabled - node_id = module_name - disabled = True - else: - node_id = module_name - disabled = False - - info = resolve_from_path(fullpath) - if info is None: - version = 'unknown' - else: - node_id = info['id'] # robust module guessing - version = info['ver'] - - return InstalledNodePackage( - id=node_id, fullpath=fullpath, disabled=disabled, version=version - ) diff --git a/custom_nodes/comfyui-manager/glob/security_check.py b/custom_nodes/comfyui-manager/glob/security_check.py deleted file mode 100644 index 45bcea6de087902ee7e8ebd70cd42d9bffacf1e3..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/security_check.py +++ /dev/null @@ -1,117 +0,0 @@ -import sys -import subprocess -import os - - -def security_check(): - print("[START] Security scan") - - custom_nodes_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) - comfyui_path = os.path.abspath(os.path.join(custom_nodes_path, '..')) - - guide = { - "ComfyUI_LLMVISION": """ -0.Remove ComfyUI\\custom_nodes\\ComfyUI_LLMVISION. -1.Remove pip packages: openai-1.16.3.dist-info, anthropic-0.21.4.dist-info, openai-1.30.2.dist-info, anthropic-0.21.5.dist-info, anthropic-0.26.1.dist-info, %LocalAppData%\\rundll64.exe - (For portable versions, it is recommended to reinstall. If you are using a venv, it is advised to recreate the venv.) -2.Remove these files in your system: lib/browser/admin.py, Cadmino.py, Fadmino.py, VISION-D.exe, BeamNG.UI.exe -3.Check your Windows registry for the key listed above and remove it. - (HKEY_CURRENT_USER\\Software\\OpenAICLI) -4.Run a malware scanner. -5.Change all of your passwords, everywhere. - -(Reinstall OS is recommended.) -\n -Detailed information: https://old.reddit.com/r/comfyui/comments/1dbls5n/psa_if_youve_used_the_comfyui_llmvision_node_from/ - """, - "lolMiner": """ -1. Remove pip packages: lolMiner* -2. Remove files: lolMiner*, 4G_Ethash_Linux_Readme.txt, mine* in ComfyUI dir. - -(Reinstall ComfyUI is recommended.) - """, - "ultralytics==8.3.41": f""" -Execute following commands: - {sys.executable} -m pip uninstall ultralytics - {sys.executable} -m pip install ultralytics==8.3.40 - -And kill and remove /tmp/ultralytics_runner - - -The version 8.3.41 to 8.3.42 of the Ultralytics package you installed is compromised. Please uninstall that version and reinstall the latest version. -https://blog.comfy.org/comfyui-statement-on-the-ultralytics-crypto-miner-situation/ - """, - "ultralytics==8.3.42": f""" -Execute following commands: - {sys.executable} -m pip uninstall ultralytics - {sys.executable} -m pip install ultralytics==8.3.40 - -And kill and remove /tmp/ultralytics_runner - - -The version 8.3.41 to 8.3.42 of the Ultralytics package you installed is compromised. Please uninstall that version and reinstall the latest version. -https://blog.comfy.org/comfyui-statement-on-the-ultralytics-crypto-miner-situation/ - """ - } - - node_blacklist = {"ComfyUI_LLMVISION": "ComfyUI_LLMVISION"} - - pip_blacklist = { - "AppleBotzz": "ComfyUI_LLMVISION", - "ultralytics==8.3.41": "ultralytics==8.3.41" - } - - file_blacklist = { - "ComfyUI_LLMVISION": ["%LocalAppData%\\rundll64.exe"], - "lolMiner": [os.path.join(comfyui_path, 'lolMiner')] - } - - installed_pips = subprocess.check_output([sys.executable, '-m', "pip", "freeze"], text=True) - - detected = set() - try: - anthropic_info = subprocess.check_output([sys.executable, '-m', "pip", "show", "anthropic"], text=True, stderr=subprocess.DEVNULL) - anthropic_reqs = [x for x in anthropic_info.split('\n') if x.startswith("Requires")][0].split(': ')[1] - if "pycrypto" in anthropic_reqs: - location = [x for x in anthropic_info.split('\n') if x.startswith("Location")][0].split(': ')[1] - for fi in os.listdir(location): - if fi.startswith("anthropic"): - guide["ComfyUI_LLMVISION"] = f"\n0.Remove {os.path.join(location, fi)}" + guide["ComfyUI_LLMVISION"] - detected.add("ComfyUI_LLMVISION") - except subprocess.CalledProcessError: - pass - - for k, v in node_blacklist.items(): - if os.path.exists(os.path.join(custom_nodes_path, k)): - print(f"[SECURITY ALERT] custom node '{k}' is dangerous.") - detected.add(v) - - for k, v in pip_blacklist.items(): - if k in installed_pips: - detected.add(v) - break - - for k, v in file_blacklist.items(): - for x in v: - if os.path.exists(os.path.expandvars(x)): - detected.add(k) - break - - if len(detected) > 0: - for line in installed_pips.split('\n'): - for k, v in pip_blacklist.items(): - if k in line: - print(f"[SECURITY ALERT] '{line}' is dangerous.") - - print("\n########################################################################") - print(" Malware has been detected, forcibly terminating ComfyUI execution.") - print("########################################################################\n") - - for x in detected: - print(f"\n======== TARGET: {x} =========") - print("\nTODO:") - print(guide.get(x)) - - exit(-1) - - print("[DONE] Security scan") diff --git a/custom_nodes/comfyui-manager/glob/share_3rdparty.py b/custom_nodes/comfyui-manager/glob/share_3rdparty.py deleted file mode 100644 index 515ea1a88c9f584ae0bf786c5d360d3ad9d88606..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/glob/share_3rdparty.py +++ /dev/null @@ -1,384 +0,0 @@ -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.manager_files_path, ".openart_key")): - return None - try: - with open(os.path.join(core.manager_files_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.manager_files_path, "matrix_auth")): - return None - try: - with open(os.path.join(core.manager_files_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.manager_files_path, "comfyworkflows_sharekey")): - return None - try: - with open(os.path.join(core.manager_files_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.manager_files_path, ".youml")): - return None - try: - with open(os.path.join(core.manager_files_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.manager_files_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.manager_files_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() - with open(os.path.join(core.manager_files_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.manager_files_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.manager_files_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.manager_files_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(await 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" - matrix.send_message(comfyui_share_room_id, text_content) - matrix.send_content(comfyui_share_room_id, mxc_url, filename, 'm.image') - 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) diff --git a/custom_nodes/comfyui-manager/js/cm-api.js b/custom_nodes/comfyui-manager/js/cm-api.js deleted file mode 100644 index 6cc872628fc399b397ac85f0ad7d2ef505ae6a32..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/cm-api.js +++ /dev/null @@ -1,67 +0,0 @@ -import { api } from "../../scripts/api.js"; -import { app } from "../../scripts/app.js"; -import { sleep, customConfirm, customAlert } from "./common.js"; - -async function tryInstallCustomNode(event) { - let msg = '-= [ComfyUI Manager] extension installation request =-\n\n'; - msg += `The '${event.detail.sender}' extension requires the installation of the '${event.detail.target.title}' extension. `; - - if(event.detail.target.installed == 'Disabled') { - msg += 'However, the extension is currently disabled. Would you like to enable it and reboot?' - } - else if(event.detail.target.installed == 'True') { - msg += 'However, it seems that the extension is in an import-fail state or is not compatible with the current version. Please address this issue.'; - } - else { - msg += `Would you like to install it and reboot?`; - } - - msg += `\n\nRequest message:\n${event.detail.msg}`; - - if(event.detail.target.installed == 'True') { - customAlert(msg); - return; - } - const res = await customConfirm(msg); - if(res) { - if(event.detail.target.installed == 'Disabled') { - const response = await api.fetchApi(`/customnode/toggle_active`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(event.detail.target) - }); - } - else { - await sleep(300); - app.ui.dialog.show(`Installing... '${event.detail.target.title}'`); - - const response = await api.fetchApi(`/customnode/install`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(event.detail.target) - }); - - if(response.status == 403) { - show_message('This action is not allowed with this security level configuration.'); - return false; - } - else if(response.status == 400) { - let msg = await res.text(); - show_message(msg); - return false; - } - } - - let response = await api.fetchApi("/manager/reboot"); - if(response.status == 403) { - show_message('This action is not allowed with this security level configuration.'); - return false; - } - - await sleep(300); - - app.ui.dialog.show(`Rebooting...`); - } -} - -api.addEventListener("cm-api-try-install-customnode", tryInstallCustomNode); diff --git a/custom_nodes/comfyui-manager/js/comfyui-manager.js b/custom_nodes/comfyui-manager/js/comfyui-manager.js deleted file mode 100644 index 900e735a62fa3425f9acccda1e81392931995005..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/comfyui-manager.js +++ /dev/null @@ -1,1633 +0,0 @@ -import { api } from "../../scripts/api.js"; -import { app } from "../../scripts/app.js"; -import { $el, ComfyDialog } from "../../scripts/ui.js"; -import { - SUPPORTED_OUTPUT_NODE_TYPES, - ShareDialog, - ShareDialogChooser, - getPotentialOutputsAndOutputNodes, - showOpenArtShareDialog, - showShareDialog, - showYouMLShareDialog -} from "./comfyui-share-common.js"; -import { OpenArtShareDialog } from "./comfyui-share-openart.js"; -import { - free_models, install_pip, install_via_git_url, manager_instance, - rebootAPI, migrateAPI, setManagerInstance, show_message, customAlert, customPrompt } from "./common.js"; -import { ComponentBuilderDialog, getPureName, load_components, set_component_policy } from "./components-manager.js"; -import { CustomNodesManager } from "./custom-nodes-manager.js"; -import { ModelManager } from "./model-manager.js"; -import { set_double_click_policy } from "./node_fixer.js"; -import { SnapshotManager } from "./snapshot.js"; - -var docStyle = document.createElement('style'); -docStyle.innerHTML = ` -.comfy-toast { - position: fixed; - bottom: 20px; - left: 50%; - transform: translateX(-50%); - background-color: rgba(0, 0, 0, 0.7); - color: white; - padding: 10px 20px; - border-radius: 5px; - z-index: 1000; - transition: opacity 0.5s; -} - -.comfy-toast-fadeout { - opacity: 0; -} - -#cm-manager-dialog { - width: 1000px; - height: 520px; - box-sizing: content-box; - z-index: 1000; - overflow-y: auto; -} - -.cb-widget { - width: 400px; - height: 25px; - box-sizing: border-box; - z-index: 1000; - margin-top: 10px; - margin-bottom: 5px; -} - -.cb-widget-input { - width: 305px; - height: 25px; - box-sizing: border-box; -} -.cb-widget-input:disabled { - background-color: #444444; - color: white; -} - -.cb-widget-input-label { - width: 90px; - height: 25px; - box-sizing: border-box; - color: white; - text-align: right; - display: inline-block; - margin-right: 5px; -} - -.cm-menu-container { - column-gap: 20px; - display: flex; - flex-wrap: wrap; - justify-content: center; - box-sizing: content-box; -} - -.cm-menu-column { - display: flex; - flex-direction: column; - flex: 1 1 auto; - width: 300px; - box-sizing: content-box; -} - -.cm-title { - background-color: black; - text-align: center; - height: 40px; - width: calc(100% - 10px); - font-weight: bold; - justify-content: center; - align-content: center; - vertical-align: middle; -} - -#custom-nodes-grid a { - color: #5555FF; - font-weight: bold; - text-decoration: none; -} - -#custom-nodes-grid a:hover { - color: #7777FF; - text-decoration: underline; -} - -#external-models-grid a { - color: #5555FF; - font-weight: bold; - text-decoration: none; -} - -#external-models-grid a:hover { - color: #7777FF; - text-decoration: underline; -} - -#alternatives-grid a { - color: #5555FF; - font-weight: bold; - text-decoration: none; -} - -#alternatives-grid a:hover { - color: #7777FF; - text-decoration: underline; -} - -.cm-notice-board { - width: 290px; - height: 270px; - overflow: auto; - color: var(--input-text); - border: 1px solid var(--descrip-text); - padding: 5px 10px; - overflow-x: hidden; - box-sizing: content-box; -} - -.cm-notice-board > ul { - display: block; - list-style-type: disc; - margin-block-start: 1em; - margin-block-end: 1em; - margin-inline-start: 0px; - margin-inline-end: 0px; - padding-inline-start: 40px; -} - -.cm-conflicted-nodes-text { - background-color: #CCCC55 !important; - color: #AA3333 !important; - font-size: 10px; - border-radius: 5px; - padding: 10px; -} - -.cm-warn-note { - background-color: #101010 !important; - color: #FF3800 !important; - font-size: 13px; - border-radius: 5px; - padding: 10px; - overflow-x: hidden; - overflow: auto; -} - -.cm-info-note { - background-color: #101010 !important; - color: #FF3800 !important; - font-size: 13px; - border-radius: 5px; - padding: 10px; - overflow-x: hidden; - overflow: auto; -} -`; - -function is_legacy_front() { - let compareVersion = '1.2.49'; - try { - const frontendVersion = window['__COMFYUI_FRONTEND_VERSION__']; - if (typeof frontendVersion !== 'string') { - return false; - } - - function parseVersion(versionString) { - const parts = versionString.split('.').map(Number); - return parts.length === 3 && parts.every(part => !isNaN(part)) ? parts : null; - } - - const currentVersion = parseVersion(frontendVersion); - const comparisonVersion = parseVersion(compareVersion); - - if (!currentVersion || !comparisonVersion) { - return false; - } - - for (let i = 0; i < 3; i++) { - if (currentVersion[i] > comparisonVersion[i]) { - return false; - } else if (currentVersion[i] < comparisonVersion[i]) { - return true; - } - } - - return false; - } catch { - return true; - } -} - -document.head.appendChild(docStyle); - -var update_comfyui_button = null; -var switch_comfyui_button = null; -var fetch_updates_button = null; -var update_all_button = null; -let share_option = 'all'; - -// copied style from https://github.com/pythongosssss/ComfyUI-Custom-Scripts -const style = ` -#workflowgallery-button { - width: 310px; - height: 27px; - padding: 0px !important; - position: relative; - overflow: hidden; - font-size: 17px !important; -} -#cm-nodeinfo-button { - width: 310px; - height: 27px; - padding: 0px !important; - position: relative; - overflow: hidden; - font-size: 17px !important; -} -#cm-manual-button { - width: 310px; - height: 27px; - position: relative; - overflow: hidden; -} - -.cm-button { - width: 310px; - height: 30px; - position: relative; - overflow: hidden; - font-size: 17px !important; -} - -.cm-button-red { - width: 310px; - height: 30px; - position: relative; - overflow: hidden; - font-size: 17px !important; - background-color: #500000 !important; - color: white !important; -} - - -.cm-button-orange { - width: 310px; - height: 30px; - position: relative; - overflow: hidden; - font-size: 17px !important; - font-weight: bold; - background-color: orange !important; - color: black !important; -} - -.cm-experimental-button { - width: 290px; - height: 30px; - position: relative; - overflow: hidden; - font-size: 17px !important; -} - -.cm-experimental { - width: 310px; - border: 1px solid #555; - border-radius: 5px; - padding: 10px; - align-items: center; - text-align: center; - justify-content: center; - box-sizing: border-box; -} - -.cm-experimental-legend { - margin-top: -20px; - margin-left: 50%; - width:auto; - height:20px; - font-size: 13px; - font-weight: bold; - background-color: #990000; - color: #CCFFFF; - border-radius: 5px; - text-align: center; - transform: translateX(-50%); - display: block; -} - -.cm-menu-combo { - cursor: pointer; - width: 310px; - box-sizing: border-box; -} - -.cm-small-button { - width: 120px; - height: 30px; - position: relative; - overflow: hidden; - box-sizing: border-box; - font-size: 17px !important; -} - -#cm-install-customnodes-button { - width: 200px; - height: 30px; - position: relative; - overflow: hidden; - box-sizing: border-box; - font-size: 17px !important; -} - -.cm-search-filter { - width: 200px; - height: 30px !important; - position: relative; - overflow: hidden; - box-sizing: border-box; -} - -.cb-node-label { - width: 400px; - height:28px; - color: black; - background-color: #777777; - font-size: 18px; - text-align: center; - font-weight: bold; -} - -#cm-close-button { - width: calc(100% - 65px); - bottom: 10px; - position: absolute; - overflow: hidden; -} - -#cm-save-button { - width: calc(100% - 65px); - bottom:40px; - position: absolute; - overflow: hidden; -} -#cm-save-button:disabled { - background-color: #444444; -} - -.pysssss-workflow-arrow-2 { - position: absolute; - top: 0; - bottom: 0; - right: 0; - font-size: 12px; - display: flex; - align-items: center; - width: 24px; - justify-content: center; - background: rgba(255,255,255,0.1); - content: "▼"; -} -.pysssss-workflow-arrow-2:after { - content: "▼"; - } - .pysssss-workflow-arrow-2:hover { - filter: brightness(1.6); - background-color: var(--comfy-menu-bg); - } -.pysssss-workflow-popup-2 ~ .litecontextmenu { - transform: scale(1.3); -} -#workflowgallery-button-menu { - z-index: 10000000000 !important; -} -#cm-manual-button-menu { - z-index: 10000000000 !important; -} -`; - -async function init_share_option() { - api.fetchApi('/manager/share_option') - .then(response => response.text()) - .then(data => { - share_option = data || 'all'; - }); -} - -async function init_notice(notice) { - api.fetchApi('/manager/notice') - .then(response => response.text()) - .then(data => { - notice.innerHTML = data; - }) -} - -await init_share_option(); - -async function fetchNicknames() { - const response1 = await api.fetchApi(`/customnode/getmappings?mode=nickname`); - const mappings = await response1.json(); - - let result = {}; - let nickname_patterns = []; - - for (let i in mappings) { - let item = mappings[i]; - var nickname; - if (item[1].nickname) { - nickname = item[1].nickname; - } - else if (item[1].title) { - nickname = item[1].title; - } - else { - nickname = item[1].title_aux; - } - - for (let j in item[0]) { - result[item[0][j]] = nickname; - } - - if(item[1].nodename_pattern) { - nickname_patterns.push([item[1].nodename_pattern, nickname]); - } - } - - return [result, nickname_patterns]; -} - -const [nicknames, nickname_patterns] = await fetchNicknames(); - -function getNickname(node, nodename) { - if(node.nickname) { - return node.nickname; - } - else { - if (nicknames[nodename]) { - node.nickname = nicknames[nodename]; - } - else if(node.getInnerNodes) { - let pure_name = getPureName(node); - let groupNode = app.graph.extra?.groupNodes?.[pure_name]; - if(groupNode) { - let packname = groupNode.packname; - node.nickname = packname; - } - return node.nickname; - } - else { - for(let i in nickname_patterns) { - let item = nickname_patterns[i]; - if(nodename.match(item[0])) { - node.nickname = item[1]; - } - } - } - - return node.nickname; - } -} - -async function updateComfyUI() { - let prev_text = update_comfyui_button.innerText; - update_comfyui_button.innerText = "Updating ComfyUI..."; - update_comfyui_button.disabled = true; - update_comfyui_button.style.backgroundColor = "gray"; - - try { - const response = await api.fetchApi('/comfyui_manager/update_comfyui'); - - if (response.status == 400) { - show_message('Failed to update ComfyUI.'); - return false; - } - - if (response.status == 201) { - show_message('ComfyUI has been successfully updated.'); - } - else { - show_message('ComfyUI is already up to date with the latest version.'); - } - - return true; - } - catch (exception) { - show_message(`Failed to update ComfyUI / ${exception}`); - return false; - } - finally { - update_comfyui_button.disabled = false; - update_comfyui_button.innerText = prev_text; - update_comfyui_button.style.backgroundColor = ""; - } -} - -function showVersionSelectorDialog(versions, current, onSelect) { - const dialog = new ComfyDialog(); - dialog.element.style.zIndex = 1100; - dialog.element.style.width = "300px"; - dialog.element.style.padding = "0"; - dialog.element.style.backgroundColor = "#2a2a2a"; - dialog.element.style.border = "1px solid #3a3a3a"; - dialog.element.style.borderRadius = "8px"; - dialog.element.style.boxSizing = "border-box"; - dialog.element.style.overflow = "hidden"; - - const contentStyle = { - width: "300px", - display: "flex", - flexDirection: "column", - alignItems: "center", - padding: "20px", - boxSizing: "border-box", - gap: "15px" - }; - - let selectedVersion = versions[0]; - - const versionList = $el("select", { - multiple: true, - size: Math.min(10, versions.length), - style: { - width: "260px", - height: "auto", - backgroundColor: "#383838", - color: "#ffffff", - border: "1px solid #4a4a4a", - borderRadius: "4px", - padding: "5px", - boxSizing: "border-box" - } - }, - versions.map((v, index) => $el("option", { - value: v, - textContent: v, - selected: v === current - })) - ); - - versionList.addEventListener('change', (e) => { - selectedVersion = e.target.value; - Array.from(e.target.options).forEach(opt => { - opt.selected = opt.value === selectedVersion; - }); - }); - - const content = $el("div", { - style: contentStyle - }, [ - $el("h3", { - textContent: "Select Version", - style: { - color: "#ffffff", - backgroundColor: "#1a1a1a", - padding: "10px 15px", - margin: "0 0 10px 0", - width: "260px", - textAlign: "center", - borderRadius: "4px", - boxSizing: "border-box", - whiteSpace: "nowrap", - overflow: "hidden", - textOverflow: "ellipsis" - } - }), - versionList, - $el("div", { - style: { - display: "flex", - justifyContent: "space-between", - width: "260px", - gap: "10px" - } - }, [ - $el("button", { - textContent: "Cancel", - onclick: () => dialog.close(), - style: { - flex: "1", - padding: "8px", - backgroundColor: "#4a4a4a", - color: "#ffffff", - border: "none", - borderRadius: "4px", - cursor: "pointer", - whiteSpace: "nowrap", - overflow: "hidden", - textOverflow: "ellipsis" - } - }), - $el("button", { - textContent: "Select", - onclick: () => { - if (selectedVersion) { - onSelect(selectedVersion); - dialog.close(); - } else { - customAlert("Please select a version."); - } - }, - style: { - flex: "1", - padding: "8px", - backgroundColor: "#4CAF50", - color: "#ffffff", - border: "none", - borderRadius: "4px", - cursor: "pointer", - whiteSpace: "nowrap", - overflow: "hidden", - textOverflow: "ellipsis" - } - }), - ]) - ]); - - dialog.show(content); -} - -async function switchComfyUI() { - let res = await api.fetchApi(`/comfyui_manager/comfyui_versions`, { cache: "no-store" }); - - if(res.status == 200) { - let obj = await res.json(); - - let versions = []; - let default_version; - - for(let v of obj.versions) { - default_version = v; - versions.push(v); - } - - showVersionSelectorDialog(versions, obj.current, (selected_version) => { - api.fetchApi(`/comfyui_manager/comfyui_switch_version?ver=${selected_version}`, { cache: "no-store" }); - }); - } - else { - show_message('Failed to fetch ComfyUI versions.'); - } -} - - -async function fetchUpdates(update_check_checkbox) { - let prev_text = fetch_updates_button.innerText; - fetch_updates_button.innerText = "Fetching updates..."; - fetch_updates_button.disabled = true; - fetch_updates_button.style.backgroundColor = "gray"; - - try { - var mode = manager_instance.datasrc_combo.value; - - const response = await api.fetchApi(`/customnode/fetch_updates?mode=${mode}`); - - if (response.status != 200 && response.status != 201) { - show_message('Failed to fetch updates.'); - return false; - } - - if (response.status == 201) { - show_message("There is an updated extension available.

NOTE:
Fetch Updates is not an update.
Please update from

"); - - const button = document.getElementById('cm-install-customnodes-button'); - button.addEventListener("click", - async function() { - app.ui.dialog.close(); - - if(!CustomNodesManager.instance) { - CustomNodesManager.instance = new CustomNodesManager(app, self); - } - await CustomNodesManager.instance.show(CustomNodesManager.ShowMode.UPDATE); - } - ); - - update_check_checkbox.checked = false; - } - else { - show_message('All extensions are already up-to-date with the latest versions.'); - } - - return true; - } - catch (exception) { - show_message(`Failed to update custom nodes / ${exception}`); - return false; - } - finally { - fetch_updates_button.disabled = false; - fetch_updates_button.innerText = prev_text; - fetch_updates_button.style.backgroundColor = ""; - } -} - -async function updateAll(update_check_checkbox, manager_dialog) { - let prev_text = update_all_button.innerText; - update_all_button.innerText = "Updating all...(ComfyUI)"; - update_all_button.disabled = true; - update_all_button.style.backgroundColor = "gray"; - - try { - var mode = manager_instance.datasrc_combo.value; - - update_all_button.innerText = "Updating all..."; - const response1 = await api.fetchApi('/comfyui_manager/update_comfyui'); - const response2 = await api.fetchApi(`/customnode/update_all?mode=${mode}`); - - if (response2.status == 403) { - show_message('This action is not allowed with this security level configuration.'); - return false; - } - - if (response1.status == 400 || response2.status == 400) { - show_message('Failed to update ComfyUI or several extensions.

See terminal log.
'); - return false; - } - - if(response1.status == 201 || response2.status == 201) { - const update_info = await response2.json(); - - let failed_list = ""; - if(update_info.failed.length > 0) { - failed_list = "
FAILED: "+update_info.failed.join(", "); - } - - let updated_list = ""; - if(update_info.updated.length > 0) { - updated_list = "
UPDATED: "+update_info.updated.join(", "); - } - - show_message( - "ComfyUI and all extensions have been updated to the latest version.
To apply the updated custom node, please ComfyUI. And refresh browser.
" - +failed_list - +updated_list - ); - - const rebootButton = document.getElementById('cm-reboot-button5'); - rebootButton.addEventListener("click", - function() { - if(rebootAPI()) { - manager_dialog.close(); - } - }); - } - else { - show_message('ComfyUI and all extensions are already up-to-date with the latest versions.'); - } - - return true; - } - catch (exception) { - show_message(`Failed to update ComfyUI or several extensions / ${exception}`); - return false; - } - finally { - update_all_button.disabled = false; - update_all_button.innerText = prev_text; - update_all_button.style.backgroundColor = ""; - } -} - -function newDOMTokenList(initialTokens) { - const tmp = document.createElement(`div`); - - const classList = tmp.classList; - if (initialTokens) { - initialTokens.forEach(token => { - classList.add(token); - }); - } - - return classList; - } - -/** - * Check whether the node is a potential output node (img, gif or video output) - */ -const isOutputNode = (node) => { - return SUPPORTED_OUTPUT_NODE_TYPES.includes(node.type); -} - -// ----------- -class ManagerMenuDialog extends ComfyDialog { - createControlsMid() { - let self = this; - - update_comfyui_button = - $el("button.cm-button", { - type: "button", - textContent: "Update ComfyUI", - onclick: - () => updateComfyUI() - }); - - switch_comfyui_button = - $el("button.cm-button", { - type: "button", - textContent: "Switch ComfyUI", - onclick: - () => switchComfyUI() - }); - - fetch_updates_button = - $el("button.cm-button", { - type: "button", - textContent: "Fetch Updates", - onclick: - () => fetchUpdates(this.update_check_checkbox) - }); - - update_all_button = - $el("button.cm-button", { - type: "button", - textContent: "Update All", - onclick: - () => updateAll(this.update_check_checkbox, self) - }); - - const res = - [ - $el("button.cm-button", { - type: "button", - textContent: "Custom Nodes Manager", - onclick: - () => { - if(!CustomNodesManager.instance) { - CustomNodesManager.instance = new CustomNodesManager(app, self); - } - CustomNodesManager.instance.show(CustomNodesManager.ShowMode.NORMAL); - } - }), - - $el("button.cm-button", { - type: "button", - textContent: "Install Missing Custom Nodes", - onclick: - () => { - if(!CustomNodesManager.instance) { - CustomNodesManager.instance = new CustomNodesManager(app, self); - } - CustomNodesManager.instance.show(CustomNodesManager.ShowMode.MISSING); - } - }), - - - $el("button.cm-button", { - type: "button", - textContent: "Model Manager", - onclick: - () => { - if(!ModelManager.instance) { - ModelManager.instance = new ModelManager(app, self); - } - ModelManager.instance.show(); - } - }), - - $el("button.cm-button", { - type: "button", - textContent: "Install via Git URL", - onclick: async () => { - var url = await customPrompt("Please enter the URL of the Git repository to install", ""); - - if (url !== null) { - install_via_git_url(url, self); - } - } - }), - - $el("br", {}, []), - update_all_button, - update_comfyui_button, - switch_comfyui_button, - fetch_updates_button, - - $el("br", {}, []), - $el("button.cm-button", { - type: "button", - textContent: "Alternatives of A1111", - onclick: - () => { - if(!CustomNodesManager.instance) { - CustomNodesManager.instance = new CustomNodesManager(app, self); - } - CustomNodesManager.instance.show(CustomNodesManager.ShowMode.ALTERNATIVES); - } - }), - - $el("br", {}, []), - $el("button.cm-button-red", { - type: "button", - textContent: "Restart", - onclick: () => rebootAPI() - }), - ]; - - let migration_btn = - $el("button.cm-button-orange", { - type: "button", - textContent: "Migrate to New Node System", - onclick: () => migrateAPI() - }); - - migration_btn.style.display = 'none'; - - res.push(migration_btn); - - api.fetchApi('/manager/need_to_migrate') - .then(response => response.text()) - .then(text => { - if (text === 'True') { - migration_btn.style.display = 'block'; - } - }) - .catch(error => { - console.error('Error checking migration status:', error); - }); - - return res; - } - - createControlsLeft() { - let self = this; - - this.update_check_checkbox = $el("input",{type:'checkbox', id:"skip_update_check"},[]) - const uc_checkbox_text = $el("label",{for:"skip_update_check"},[" Skip update check"]) - uc_checkbox_text.style.color = "var(--fg-color)"; - uc_checkbox_text.style.cursor = "pointer"; - this.update_check_checkbox.checked = true; - - // db mode - this.datasrc_combo = document.createElement("select"); - this.datasrc_combo.setAttribute("title", "Configure where to retrieve node/model information. If set to 'local,' the channel is ignored, and if set to 'channel (remote),' it fetches the latest information each time the list is opened."); - this.datasrc_combo.className = "cm-menu-combo"; - this.datasrc_combo.appendChild($el('option', { value: 'cache', text: 'DB: Channel (1day cache)' }, [])); - this.datasrc_combo.appendChild($el('option', { value: 'local', text: 'DB: Local' }, [])); - this.datasrc_combo.appendChild($el('option', { value: 'remote', text: 'DB: Channel (remote)' }, [])); - - // preview method - let preview_combo = document.createElement("select"); - preview_combo.setAttribute("title", "Configure how latent variables will be decoded during preview in the sampling process."); - preview_combo.className = "cm-menu-combo"; - preview_combo.appendChild($el('option', { value: 'auto', text: 'Preview method: Auto' }, [])); - preview_combo.appendChild($el('option', { value: 'taesd', text: 'Preview method: TAESD (slow)' }, [])); - preview_combo.appendChild($el('option', { value: 'latent2rgb', text: 'Preview method: Latent2RGB (fast)' }, [])); - preview_combo.appendChild($el('option', { value: 'none', text: 'Preview method: None (very fast)' }, [])); - - api.fetchApi('/manager/preview_method') - .then(response => response.text()) - .then(data => { preview_combo.value = data; }); - - preview_combo.addEventListener('change', function (event) { - api.fetchApi(`/manager/preview_method?value=${event.target.value}`); - }); - - // channel - let channel_combo = document.createElement("select"); - channel_combo.setAttribute("title", "Configure the channel for retrieving data from the Custom Node list (including missing nodes) or the Model list."); - channel_combo.className = "cm-menu-combo"; - api.fetchApi('/manager/channel_url_list') - .then(response => response.json()) - .then(async data => { - try { - let urls = data.list; - for (let i in urls) { - if (urls[i] != '') { - let name_url = urls[i].split('::'); - channel_combo.appendChild($el('option', { value: name_url[0], text: `Channel: ${name_url[0]}` }, [])); - } - } - - channel_combo.addEventListener('change', function (event) { - api.fetchApi(`/manager/channel_url_list?value=${event.target.value}`); - }); - - channel_combo.value = data.selected; - } - catch (exception) { - - } - }); - - // default ui state - let default_ui_combo = document.createElement("select"); - default_ui_combo.setAttribute("title", "Set the default state to be displayed in the main menu when the browser starts."); - default_ui_combo.className = "cm-menu-combo"; - default_ui_combo.appendChild($el('option', { value: 'none', text: 'Default UI: None' }, [])); - default_ui_combo.appendChild($el('option', { value: 'history', text: 'Default UI: History' }, [])); - default_ui_combo.appendChild($el('option', { value: 'queue', text: 'Default UI: Queue' }, [])); - api.fetchApi('/manager/default_ui') - .then(response => response.text()) - .then(data => { default_ui_combo.value = data; }); - - default_ui_combo.addEventListener('change', function (event) { - api.fetchApi(`/manager/default_ui?value=${event.target.value}`); - }); - - - // share - let share_combo = document.createElement("select"); - share_combo.setAttribute("title", "Hide the share button in the main menu or set the default action upon clicking it. Additionally, configure the default share site when sharing via the context menu's share button."); - share_combo.className = "cm-menu-combo"; - const share_options = [ - ['none', 'None'], - ['openart', 'OpenArt AI'], - ['youml', 'YouML'], - ['matrix', 'Matrix Server'], - ['comfyworkflows', 'ComfyWorkflows'], - ['copus', 'Copus'], - ['all', 'All'], - ]; - for (const option of share_options) { - share_combo.appendChild($el('option', { value: option[0], text: `Share: ${option[1]}` }, [])); - } - - // default ui state - let component_policy_combo = document.createElement("select"); - component_policy_combo.setAttribute("title", "When loading the workflow, configure which version of the component to use."); - component_policy_combo.className = "cm-menu-combo"; - component_policy_combo.appendChild($el('option', { value: 'workflow', text: 'Component: Use workflow version' }, [])); - component_policy_combo.appendChild($el('option', { value: 'higher', text: 'Component: Use higher version' }, [])); - component_policy_combo.appendChild($el('option', { value: 'mine', text: 'Component: Use my version' }, [])); - api.fetchApi('/manager/component/policy') - .then(response => response.text()) - .then(data => { - component_policy_combo.value = data; - set_component_policy(data); - }); - - component_policy_combo.addEventListener('change', function (event) { - api.fetchApi(`/manager/component/policy?value=${event.target.value}`); - set_component_policy(event.target.value); - }); - - let dbl_click_policy_combo = document.createElement("select"); - dbl_click_policy_combo.setAttribute("title", "Sets the behavior when you double-click the title area of a node."); - dbl_click_policy_combo.className = "cm-menu-combo"; - dbl_click_policy_combo.appendChild($el('option', { value: 'none', text: 'Double-Click: None' }, [])); - dbl_click_policy_combo.appendChild($el('option', { value: 'copy-all', text: 'Double-Click: Copy All Connections' }, [])); - dbl_click_policy_combo.appendChild($el('option', { value: 'copy-full', text: 'Double-Click: Copy All Connections and shape' }, [])); - dbl_click_policy_combo.appendChild($el('option', { value: 'copy-input', text: 'Double-Click: Copy Input Connections' }, [])); - dbl_click_policy_combo.appendChild($el('option', { value: 'possible-input', text: 'Double-Click: Possible Input Connections' }, [])); - dbl_click_policy_combo.appendChild($el('option', { value: 'dual', text: 'Double-Click: Possible(left) + Copy(right)' }, [])); - - api.fetchApi('/manager/dbl_click/policy') - .then(response => response.text()) - .then(data => { - dbl_click_policy_combo.value = data; - set_double_click_policy(data); - }); - - dbl_click_policy_combo.addEventListener('change', function (event) { - api.fetchApi(`/manager/dbl_click/policy?value=${event.target.value}`); - set_double_click_policy(event.target.value); - }); - - api.fetchApi('/manager/share_option') - .then(response => response.text()) - .then(data => { - share_combo.value = data || 'all'; - share_option = data || 'all'; - }); - - share_combo.addEventListener('change', function (event) { - const value = event.target.value; - share_option = value; - api.fetchApi(`/manager/share_option?value=${value}`); - const shareButton = document.getElementById("shareButton"); - if (value === 'none') { - shareButton.style.display = "none"; - } else { - shareButton.style.display = "inline-block"; - } - }); - - return [ - $el("div", {}, [this.update_check_checkbox, uc_checkbox_text]), - $el("br", {}, []), - this.datasrc_combo, - channel_combo, - preview_combo, - default_ui_combo, - share_combo, - component_policy_combo, - dbl_click_policy_combo, - $el("br", {}, []), - - $el("br", {}, []), - $el("filedset.cm-experimental", {}, [ - $el("legend.cm-experimental-legend", {}, ["EXPERIMENTAL"]), - $el("button.cm-experimental-button", { - type: "button", - textContent: "Snapshot Manager", - onclick: - () => { - if(!SnapshotManager.instance) - SnapshotManager.instance = new SnapshotManager(app, self); - SnapshotManager.instance.show(); - } - }), - $el("button.cm-experimental-button", { - type: "button", - textContent: "Install PIP packages", - onclick: - async () => { - var url = await customPrompt("Please enumerate the pip packages to be installed.\n\nExample: insightface opencv-python-headless>=4.1.1\n", ""); - - if (url !== null) { - install_pip(url, self); - } - } - }), - $el("button.cm-experimental-button", { - type: "button", - textContent: "Unload models", - onclick: () => { free_models(); } - }) - ]), - ]; - } - - createControlsRight() { - const elts = [ - $el("button.cm-button", { - id: 'cm-manual-button', - type: "button", - textContent: "Community Manual", - onclick: () => { window.open("https://blenderneko.github.io/ComfyUI-docs/", "comfyui-community-manual"); } - }, [ - $el("div.pysssss-workflow-arrow-2", { - id: `cm-manual-button-arrow`, - onclick: (e) => { - e.preventDefault(); - e.stopPropagation(); - - LiteGraph.closeAllContextMenus(); - const menu = new LiteGraph.ContextMenu( - [ - { - title: "ComfyUI Docs", - callback: () => { window.open("https://docs.comfy.org/", "comfyui-official-manual"); }, - }, - { - title: "Comfy Custom Node How To", - callback: () => { window.open("https://github.com/chrisgoringe/Comfy-Custom-Node-How-To/wiki/aaa_index", "comfyui-community-manual1"); }, - }, - { - title: "ComfyUI Guide To Making Custom Nodes", - callback: () => { window.open("https://github.com/Suzie1/ComfyUI_Guide_To_Making_Custom_Nodes/wiki", "comfyui-community-manual2"); }, - }, - { - title: "ComfyUI Examples", - callback: () => { window.open("https://comfyanonymous.github.io/ComfyUI_examples", "comfyui-community-manual3"); }, - }, - { - title: "Close", - callback: () => { - LiteGraph.closeAllContextMenus(); - }, - } - ], - { - event: e, - scale: 1.3, - }, - window - ); - // set the id so that we can override the context menu's z-index to be above the comfyui manager menu - menu.root.id = "cm-manual-button-menu"; - menu.root.classList.add("pysssss-workflow-popup-2"); - }, - }) - ]), - - $el("button", { - id: 'workflowgallery-button', - type: "button", - style: { - ...(localStorage.getItem("wg_last_visited") ? {height: '50px'} : {}) - }, - onclick: (e) => { - const last_visited_site = localStorage.getItem("wg_last_visited") - if (!!last_visited_site) { - window.open(last_visited_site, last_visited_site); - } else { - this.handleWorkflowGalleryButtonClick(e) - } - }, - }, [ - $el("p", { - textContent: 'Workflow Gallery', - style: { - 'text-align': 'center', - 'color': 'var(--input-text)', - 'font-size': '18px', - 'margin': 0, - 'padding': 0, - } - }, [ - $el("p", { - id: 'workflowgallery-button-last-visited-label', - textContent: `(${localStorage.getItem("wg_last_visited") ? localStorage.getItem("wg_last_visited").split('/')[2] : ''})`, - style: { - 'text-align': 'center', - 'color': 'var(--input-text)', - 'font-size': '12px', - 'margin': 0, - 'padding': 0, - } - }) - ]), - $el("div.pysssss-workflow-arrow-2", { - id: `comfyworkflows-button-arrow`, - onclick: this.handleWorkflowGalleryButtonClick - }) - ]), - - $el("button.cm-button", { - id: 'cm-nodeinfo-button', - type: "button", - textContent: "Nodes Info", - onclick: () => { window.open("https://ltdrdata.github.io/", "comfyui-node-info"); } - }), - $el("br", {}, []), - ]; - - var textarea = document.createElement("div"); - textarea.className = "cm-notice-board"; - elts.push(textarea); - - init_notice(textarea); - - return elts; - } - - constructor() { - super(); - - const close_button = $el("button", { id: "cm-close-button", type: "button", textContent: "Close", onclick: () => this.close() }); - - const content = - $el("div.comfy-modal-content", - [ - $el("tr.cm-title", {}, [ - $el("font", {size:6, color:"white"}, [`ComfyUI Manager Menu`])] - ), - $el("br", {}, []), - $el("div.cm-menu-container", - [ - $el("div.cm-menu-column", [...this.createControlsLeft()]), - $el("div.cm-menu-column", [...this.createControlsMid()]), - $el("div.cm-menu-column", [...this.createControlsRight()]) - ]), - - $el("br", {}, []), - close_button, - ] - ); - - content.style.width = '100%'; - content.style.height = '100%'; - - this.element = $el("div.comfy-modal", { id:'cm-manager-dialog', parent: document.body }, [ content ]); - } - - show() { - this.element.style.display = "block"; - } - - handleWorkflowGalleryButtonClick(e) { - e.preventDefault(); - e.stopPropagation(); - LiteGraph.closeAllContextMenus(); - - // Modify the style of the button so that the UI can indicate the last - // visited site right away. - const modifyButtonStyle = (url) => { - const workflowGalleryButton = document.getElementById('workflowgallery-button'); - workflowGalleryButton.style.height = '50px'; - const lastVisitedLabel = document.getElementById('workflowgallery-button-last-visited-label'); - lastVisitedLabel.textContent = `(${url.split('/')[2]})`; - } - - const menu = new LiteGraph.ContextMenu( - [ - { - title: "Share your art", - callback: () => { - if (share_option === 'openart') { - showOpenArtShareDialog(); - return; - } else if (share_option === 'matrix' || share_option === 'comfyworkflows') { - showShareDialog(share_option); - return; - } else if (share_option === 'youml') { - showYouMLShareDialog(); - return; - } - - if (!ShareDialogChooser.instance) { - ShareDialogChooser.instance = new ShareDialogChooser(); - } - ShareDialogChooser.instance.show(); - }, - }, - { - title: "Open 'openart.ai'", - callback: () => { - const url = "https://openart.ai/workflows/dev"; - localStorage.setItem("wg_last_visited", url); - window.open(url, url); - modifyButtonStyle(url); - }, - }, - { - title: "Open 'youml.com'", - callback: () => { - const url = "https://youml.com/?from=comfyui-share"; - localStorage.setItem("wg_last_visited", url); - window.open(url, url); - modifyButtonStyle(url); - }, - }, - { - title: "Open 'comfyworkflows.com'", - callback: () => { - const url = "https://comfyworkflows.com/"; - localStorage.setItem("wg_last_visited", url); - window.open(url, url); - modifyButtonStyle(url); - }, - }, - { - title: "Open 'esheep'", - callback: () => { - const url = "https://www.esheep.com"; - localStorage.setItem("wg_last_visited", url); - window.open(url, url); - modifyButtonStyle(url); - }, - }, - { - title: "Open 'Copus.io'", - callback: () => { - const url = "https://www.copus.io"; - localStorage.setItem("wg_last_visited", url); - window.open(url, url); - modifyButtonStyle(url); - }, - }, - { - title: "Close", - callback: () => { - LiteGraph.closeAllContextMenus(); - }, - } - ], - { - event: e, - scale: 1.3, - }, - window - ); - // set the id so that we can override the context menu's z-index to be above the comfyui manager menu - menu.root.id = "workflowgallery-button-menu"; - menu.root.classList.add("pysssss-workflow-popup-2"); - } -} - -async function getVersion() { - let version = await api.fetchApi(`/manager/version`); - return await version.text(); -} - - -app.registerExtension({ - name: "Comfy.ManagerMenu", - - aboutPageBadges: [ - { - label: `ComfyUI-Manager ${await getVersion()}`, - url: 'https://github.com/ltdrdata/ComfyUI-Manager', - icon: 'pi pi-th-large' - } - ], - - init() { - $el("style", { - textContent: style, - parent: document.head, - }); - }, - async setup() { - let orig_clear = app.graph.clear; - app.graph.clear = function () { - orig_clear.call(app.graph); - load_components(); - }; - - load_components(); - - const menu = document.querySelector(".comfy-menu"); - const separator = document.createElement("hr"); - - separator.style.margin = "20px 0"; - separator.style.width = "100%"; - menu.append(separator); - - try { - // new style Manager buttons - // unload models button into new style Manager button - let cmGroup = new (await import("../../scripts/ui/components/buttonGroup.js")).ComfyButtonGroup( - new(await import("../../scripts/ui/components/button.js")).ComfyButton({ - icon: "puzzle", - action: () => { - if(!manager_instance) - setManagerInstance(new ManagerMenuDialog()); - manager_instance.show(); - }, - tooltip: "ComfyUI Manager", - content: "Manager", - classList: "comfyui-button comfyui-menu-mobile-collapse primary" - }).element, - new(await import("../../scripts/ui/components/button.js")).ComfyButton({ - icon: "star", - action: () => { - if(!manager_instance) - setManagerInstance(new ManagerMenuDialog()); - - if(!CustomNodesManager.instance) { - CustomNodesManager.instance = new CustomNodesManager(app, self); - } - CustomNodesManager.instance.show(CustomNodesManager.ShowMode.FAVORITES); - }, - tooltip: "Show favorite custom node list" - }).element, - new(await import("../../scripts/ui/components/button.js")).ComfyButton({ - icon: "vacuum-outline", - action: () => { - free_models(); - }, - tooltip: "Unload Models" - }).element, - new(await import("../../scripts/ui/components/button.js")).ComfyButton({ - icon: "vacuum", - action: () => { - free_models(true); - }, - tooltip: "Free model and node cache" - }).element, - new(await import("../../scripts/ui/components/button.js")).ComfyButton({ - icon: "share", - action: () => { - if (share_option === 'openart') { - showOpenArtShareDialog(); - return; - } else if (share_option === 'matrix' || share_option === 'comfyworkflows') { - showShareDialog(share_option); - return; - } else if (share_option === 'youml') { - showYouMLShareDialog(); - return; - } - - if(!ShareDialogChooser.instance) { - ShareDialogChooser.instance = new ShareDialogChooser(); - } - ShareDialogChooser.instance.show(); - }, - tooltip: "Share" - }).element - ); - - app.menu?.settingsGroup.element.before(cmGroup.element); - } - catch(exception) { - console.log('ComfyUI is outdated. New style menu based features are disabled.'); - } - - // old style Manager button - const managerButton = document.createElement("button"); - managerButton.textContent = "Manager"; - managerButton.onclick = () => { - if(!manager_instance) - setManagerInstance(new ManagerMenuDialog()); - manager_instance.show(); - } - menu.append(managerButton); - - const shareButton = document.createElement("button"); - shareButton.id = "shareButton"; - shareButton.textContent = "Share"; - shareButton.onclick = () => { - if (share_option === 'openart') { - showOpenArtShareDialog(); - return; - } else if (share_option === 'matrix' || share_option === 'comfyworkflows') { - showShareDialog(share_option); - return; - } else if (share_option === 'youml') { - showYouMLShareDialog(); - return; - } - - if(!ShareDialogChooser.instance) { - ShareDialogChooser.instance = new ShareDialogChooser(); - } - ShareDialogChooser.instance.show(); - } - // make the background color a gradient of blue to green - shareButton.style.background = "linear-gradient(90deg, #00C9FF 0%, #92FE9D 100%)"; - shareButton.style.color = "black"; - - // Load share option from local storage to determine whether to show - // the share button. - const shouldShowShareButton = share_option !== 'none'; - shareButton.style.display = shouldShowShareButton ? "inline-block" : "none"; - - menu.append(shareButton); - }, - - async beforeRegisterNodeDef(nodeType, nodeData, app) { - this._addExtraNodeContextMenu(nodeType, app); - }, - - _addExtraNodeContextMenu(node, app) { - const origGetExtraMenuOptions = node.prototype.getExtraMenuOptions; - node.prototype.cm_menu_added = true; - node.prototype.getExtraMenuOptions = function (_, options) { - origGetExtraMenuOptions?.apply?.(this, arguments); - - if (node.category.startsWith('group nodes>')) { - options.push({ - content: "Save As Component", - callback: (obj) => { - if (!ComponentBuilderDialog.instance) { - ComponentBuilderDialog.instance = new ComponentBuilderDialog(); - } - ComponentBuilderDialog.instance.target_node = node; - ComponentBuilderDialog.instance.show(); - } - }, null); - } - - if (isOutputNode(node)) { - const { potential_outputs } = getPotentialOutputsAndOutputNodes([this]); - const hasOutput = potential_outputs.length > 0; - - // Check if the previous menu option is `null`. If it's not, - // then we need to add a `null` as a separator. - if (options[options.length - 1] !== null) { - options.push(null); - } - - options.push({ - content: "🏞️ Share Output", - disabled: !hasOutput, - callback: (obj) => { - if (!ShareDialog.instance) { - ShareDialog.instance = new ShareDialog(); - } - const shareButton = document.getElementById("shareButton"); - if (shareButton) { - const currentNode = this; - if (!OpenArtShareDialog.instance) { - OpenArtShareDialog.instance = new OpenArtShareDialog(); - } - OpenArtShareDialog.instance.selectedNodeId = currentNode.id; - if (!ShareDialog.instance) { - ShareDialog.instance = new ShareDialog(share_option); - } - ShareDialog.instance.selectedNodeId = currentNode.id; - shareButton.click(); - } - } - }, null); - } - } - }, -}); - - -async function set_default_ui() -{ - let res = await api.fetchApi('/manager/default_ui'); - if(res.status == 200) { - let mode = await res.text(); - switch(mode) { - case 'history': - app.ui.queue.hide(); - app.ui.history.show(); - break; - case 'queue': - app.ui.queue.show(); - app.ui.history.hide(); - break; - default: - // do nothing - break; - } - } -} - -set_default_ui(); \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/js/comfyui-share-common.js b/custom_nodes/comfyui-manager/js/comfyui-share-common.js deleted file mode 100644 index 3d2bd4090bb60d73bbbf0515635e4a9e416cca82..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/comfyui-share-common.js +++ /dev/null @@ -1,1102 +0,0 @@ -import { api } from "../../scripts/api.js"; -import { app } from "../../scripts/app.js"; -import { $el, ComfyDialog } from "../../scripts/ui.js"; -import { CopusShareDialog } from "./comfyui-share-copus.js"; -import { OpenArtShareDialog } from "./comfyui-share-openart.js"; -import { YouMLShareDialog } from "./comfyui-share-youml.js"; -import { customAlert } from "./common.js"; - -export const SUPPORTED_OUTPUT_NODE_TYPES = [ - "PreviewImage", - "SaveImage", - "VHS_VideoCombine", - "ADE_AnimateDiffCombine", - "SaveAnimatedWEBP", - "CR Image Output" -] - -var docStyle = document.createElement('style'); -docStyle.innerHTML = ` -.cm-menu-container { - column-gap: 20px; - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -.cm-menu-column { - display: flex; - flex-direction: column; -} - -.cm-title { - padding: 10px 10px 0 10p; - background-color: black; - text-align: center; - height: 45px; -} -`; -document.head.appendChild(docStyle); - -export function getPotentialOutputsAndOutputNodes(nodes) { - const potential_outputs = []; - const potential_output_nodes = []; - - // iterate over the array of nodes to find the ones that are marked as SaveImage - // TODO: Add support for AnimateDiffCombine, etc. nodes that save videos/gifs, etc. - for (let i = 0; i < nodes.length; i++) { - const node = nodes[i]; - if (!SUPPORTED_OUTPUT_NODE_TYPES.includes(node.type)) { - continue; - } - - if (node.type === "SaveImage" || node.type === "CR Image Output") { - // check if node has an 'images' array property - if (node.hasOwnProperty("images") && Array.isArray(node.images)) { - // iterate over the images array and add each image to the potential_outputs array - for (let j = 0; j < node.images.length; j++) { - potential_output_nodes.push(node); - potential_outputs.push({ "type": "image", "image": node.images[j], "title": node.title, "node_id": node.id }); - } - } - } - else if (node.type === "PreviewImage") { - // check if node has an 'images' array property - if (node.hasOwnProperty("images") && Array.isArray(node.images)) { - // iterate over the images array and add each image to the potential_outputs array - for (let j = 0; j < node.images.length; j++) { - potential_output_nodes.push(node); - potential_outputs.push({ "type": "image", "image": node.images[j], "title": node.title, "node_id": node.id }); - } - } - } - else if (node.type === "VHS_VideoCombine") { - // check if node has a 'widgets' array property, with type 'image' - if (node.hasOwnProperty("widgets") && Array.isArray(node.widgets)) { - // iterate over the widgets array and add each image to the potential_outputs array - for (let j = 0; j < node.widgets.length; j++) { - if (node.widgets[j].type === "image") { - const widgetValue = node.widgets[j].value; - const parsedURLVals = parseURLPath(widgetValue); - - // ensure that the parsedURLVals have 'filename', 'subfolder', 'type', and 'format' properties - if (parsedURLVals.hasOwnProperty("filename") && parsedURLVals.hasOwnProperty("subfolder") && parsedURLVals.hasOwnProperty("type") && parsedURLVals.hasOwnProperty("format")) { - if (parsedURLVals.type !== "output") { - // TODO - } - potential_output_nodes.push(node); - potential_outputs.push({ "type": "output", 'title': node.title, "node_id": node.id , "output": { "filename": parsedURLVals.filename, "subfolder": parsedURLVals.subfolder, "value": widgetValue, "format": parsedURLVals.format } }); - } - } else if (node.widgets[j].type === "preview") { - const widgetValue = node.widgets[j].value; - const parsedURLVals = widgetValue.params; - - if(!parsedURLVals.format?.startsWith('image')) { - // video isn't supported format - continue; - } - - // ensure that the parsedURLVals have 'filename', 'subfolder', 'type', and 'format' properties - if (parsedURLVals.hasOwnProperty("filename") && parsedURLVals.hasOwnProperty("subfolder") && parsedURLVals.hasOwnProperty("type") && parsedURLVals.hasOwnProperty("format")) { - if (parsedURLVals.type !== "output") { - // TODO - } - potential_output_nodes.push(node); - potential_outputs.push({ "type": "output", 'title': node.title, "node_id": node.id , "output": { "filename": parsedURLVals.filename, "subfolder": parsedURLVals.subfolder, "value": `/view?filename=${parsedURLVals.filename}&subfolder=${parsedURLVals.subfolder}&type=${parsedURLVals.type}&format=${parsedURLVals.format}`, "format": parsedURLVals.format } }); - } - } - } - } - } - else if (node.type === "ADE_AnimateDiffCombine") { - // check if node has a 'widgets' array property, with type 'image' - if (node.hasOwnProperty("widgets") && Array.isArray(node.widgets)) { - // iterate over the widgets array and add each image to the potential_outputs array - for (let j = 0; j < node.widgets.length; j++) { - if (node.widgets[j].type === "image") { - const widgetValue = node.widgets[j].value; - const parsedURLVals = parseURLPath(widgetValue); - // ensure that the parsedURLVals have 'filename', 'subfolder', 'type', and 'format' properties - if (parsedURLVals.hasOwnProperty("filename") && parsedURLVals.hasOwnProperty("subfolder") && parsedURLVals.hasOwnProperty("type") && parsedURLVals.hasOwnProperty("format")) { - if (parsedURLVals.type !== "output") { - // TODO - continue; - } - potential_output_nodes.push(node); - potential_outputs.push({ "type": "output", 'title': node.title, "output": { "filename": parsedURLVals.filename, "subfolder": parsedURLVals.subfolder, "type": parsedURLVals.type, "value": widgetValue, "format": parsedURLVals.format } }); - } - } - } - } - } - else if (node.type === "SaveAnimatedWEBP") { - // check if node has an 'images' array property - if (node.hasOwnProperty("images") && Array.isArray(node.images)) { - // iterate over the images array and add each image to the potential_outputs array - for (let j = 0; j < node.images.length; j++) { - potential_output_nodes.push(node); - potential_outputs.push({ "type": "image", "image": node.images[j], "title": node.title }); - } - } - } - } - - // Note: make sure that two arrays are the same length - return { potential_outputs, potential_output_nodes }; -} - - -export function parseURLPath(urlPath) { - // Extract the query string from the URL path - var queryString = urlPath.split('?')[1]; - - // Use the URLSearchParams API to parse the query string - var params = new URLSearchParams(queryString); - - // Create an object to store the parsed parameters - var parsedParams = {}; - - // Iterate over each parameter and add it to the object - for (var pair of params.entries()) { - parsedParams[pair[0]] = pair[1]; - } - - // Return the object with the parsed parameters - return parsedParams; -} - - -export const shareToEsheep= () => { - app.graphToPrompt() - .then(prompt => { - const nodes = app.graph._nodes - const { potential_outputs, potential_output_nodes } = getPotentialOutputsAndOutputNodes(nodes); - const workflow = prompt['workflow'] - api.fetchApi(`/manager/set_esheep_workflow_and_images`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - workflow: workflow, - images: potential_outputs - }) - }).then(response => { - var domain = window.location.hostname; - var port = window.location.port; - port = port || (window.location.protocol === 'http:' ? '80' : window.location.protocol === 'https:' ? '443' : ''); - var full_domin = domain + ':' + port - window.open('https://www.esheep.com/app/workflow_upload?from_local='+ full_domin, '_blank'); - }); - }) -} - -export const showCopusShareDialog = () => { - if (!CopusShareDialog.instance) { - CopusShareDialog.instance = new CopusShareDialog(); - } - - return app.graphToPrompt() - .then(prompt => { - return app.graph._nodes; - }) - .then(nodes => { - const { potential_outputs, potential_output_nodes } = getPotentialOutputsAndOutputNodes(nodes); - CopusShareDialog.instance.show({ potential_outputs, potential_output_nodes}); - }) -} - -export const showOpenArtShareDialog = () => { - if (!OpenArtShareDialog.instance) { - OpenArtShareDialog.instance = new OpenArtShareDialog(); - } - - return app.graphToPrompt() - .then(prompt => { - // console.log({ prompt }) - return app.graph._nodes; - }) - .then(nodes => { - const { potential_outputs, potential_output_nodes } = getPotentialOutputsAndOutputNodes(nodes); - OpenArtShareDialog.instance.show({ potential_outputs, potential_output_nodes}); - }) -} - - -export const showYouMLShareDialog = () => { - if (!YouMLShareDialog.instance) { - YouMLShareDialog.instance = new YouMLShareDialog(); - } - - return app.graphToPrompt() - .then(prompt => { - return app.graph._nodes; - }) - .then(nodes => { - const { potential_outputs, potential_output_nodes } = getPotentialOutputsAndOutputNodes(nodes); - YouMLShareDialog.instance.show(potential_outputs, potential_output_nodes); - }) -} - - -export const showShareDialog = async (share_option) => { - if (!ShareDialog.instance) { - ShareDialog.instance = new ShareDialog(share_option); - } - return app.graphToPrompt() - .then(prompt => { - // console.log({ prompt }) - return app.graph._nodes; - }) - .then(nodes => { - // console.log({ nodes }); - const { potential_outputs, potential_output_nodes } = getPotentialOutputsAndOutputNodes(nodes); - if (potential_outputs.length === 0) { - if (potential_output_nodes.length === 0) { - // todo: add support for other output node types (animatediff combine, etc.) - const supported_nodes_string = SUPPORTED_OUTPUT_NODE_TYPES.join(", "); - customAlert(`No supported output node found (${supported_nodes_string}). To share this workflow, please add an output node to your graph and re-run your prompt.`); - } else { - customAlert("To share this, first run a prompt. Once it's done, click 'Share'.\n\nNOTE: Images of the Share target can only be selected in the PreviewImage, SaveImage, and VHS_VideoCombine nodes. In the case of VHS_VideoCombine, only the image/gif and image/webp formats are supported."); - } - return false; - } - ShareDialog.instance.show({ potential_outputs, potential_output_nodes, share_option }); - return true; - }); -} - -export class ShareDialogChooser extends ComfyDialog { - static instance = null; - constructor() { - super(); - this.element = $el("div.comfy-modal", { - parent: document.body, style: { - 'overflow-y': "auto", - } - }, - [$el("div.comfy-modal-content", - {}, - [...this.createButtons()]), - ]); - this.selectedNodeId = null; - } - createButtons() { - const buttons = [ - { - key: "openart", - textContent: "OpenArt AI", - website: "https://openart.ai/workflows/", - description: "Share ComfyUI workflows and art on OpenArt.ai", - onclick: () => { - showOpenArtShareDialog(); - this.close(); - } - }, - { - key: "youml", - textContent: "YouML", - website: "https://youml.com", - description: "Share your workflow or transform it into an interactive app on YouML.com", - onclick: () => { - showYouMLShareDialog(); - this.close(); - } - }, - { - key: "matrix", - textContent: "Matrix Server", - website: "https://app.element.io/#/room/%23comfyui_space%3Amatrix.org", - description: "Share your art on the official ComfyUI matrix server", - onclick: async () => { - showShareDialog('matrix').then((suc) => { - suc && this.close(); - }) - } - }, - { - key: "comfyworkflows", - textContent: "ComfyWorkflows", - website: "https://comfyworkflows.com", - description: "Share & browse thousands of ComfyUI workflows and art 🎨

ComfyWorkflows.com", - onclick: () => { - showShareDialog('comfyworkflows').then((suc) => { - suc && this.close(); - }) - } - }, - { - key: "esheep", - textContent: "eSheep", - website: "https://www.esheep.com", - description: "Share & download thousands of ComfyUI workflows on esheep.com", - onclick: () => { - shareToEsheep(); - this.close(); - } - }, - { - key: "Copus", - textContent: "Copus", - website: "https://www.copus.io", - description: "🔴 Earn simple. Get paid from your ComfyUI workflows—no revenue sharing. Ever.", - onclick: () => { - showCopusShareDialog(); - this.close(); - } - }, - ]; - - function createShareButtonsWithDescriptions() { - // Responsive container - const container = $el("div", { - style: { - display: "flex", - 'flex-wrap': 'wrap', - 'justify-content': 'space-around', - 'padding': '10px', - } - }); - - buttons.forEach(b => { - const button = $el("button", - { - type: "button", - textContent: b.textContent, - onclick: b.onclick, - style: { - 'width': '25%', - 'minWidth': '200px', - 'background-color': b.backgroundColor || '', - 'border-radius': '5px', - 'cursor': 'pointer', - 'padding': '5px 5px', - 'margin-bottom': '5px', - 'transition': 'background-color 0.3s', - 'position':'relative' - } - }, - [ - $el("span", { style: { - } }), - ] - ); - button.addEventListener('mouseover', () => { - button.style.backgroundColor = '#007BFF'; // Change color on hover - }); - button.addEventListener('mouseout', () => { - button.style.backgroundColor = b.backgroundColor || ''; - }); - - const description = $el("p", { - innerHTML: b.description, - style: { - 'text-align': 'left', - color: 'var(--input-text)', - 'font-size': '14px', - 'margin-bottom': '0', - }, - }); - - const copus_ui =$el("div", { style: { - 'position': 'absolute', - 'height': '100%', - 'left': '-25px', - 'top': '-26px', - 'width': '100%', - 'z-index':'-1', - 'background':'url("https://static.copus.io/images/client/202412/test/f28ac6ef8f4c6f3d5d50856a272ed02c.png")', - 'background-repeat': 'no-repeat', - } }); - const copus_ui_bottom =$el("div", { style: { - 'position': 'absolute', - 'height': '100%', - 'left': '25px', - 'bottom': '-26px', - 'width': '100%', - 'transform':'scale(-1, -1)', - 'z-index':'-1', - 'background':'url("https://static.copus.io/images/client/202412/test/f28ac6ef8f4c6f3d5d50856a272ed02c.png")', - 'background-repeat': 'no-repeat', - } }); - - const websiteLink = $el("a", { - textContent: "🌐 Website", - href: b.website, - target: "_blank", - style: { - color: 'var(--input-text)', - 'margin-left': '10px', - 'font-size': '12px', - 'text-decoration': 'none', - 'align-self': 'center', - }, - }); - - // Add highlight to the website link - websiteLink.addEventListener('mouseover', () => { - websiteLink.style.opacity = '0.7'; - }); - - websiteLink.addEventListener('mouseout', () => { - websiteLink.style.opacity = '1'; - }); - - const buttonLinkContainer = $el("div", { - style: { - display: 'flex', - 'align-items': 'center', - 'margin-bottom': '10px', - } - }, [button, websiteLink]); - const column = $el("div", { - style: { - 'flex-basis': '100%', - 'margin': '10px', - 'padding': '10px 20px', - 'border': '1px solid #ddd', - 'border-radius': '5px', - 'box-shadow': '0 2px 4px rgba(0, 0, 0, 0.1)', - 'position':'relative' - } - }, [buttonLinkContainer, description - , - b.key ==='Copus' ? - copus_ui - :'', - b.key ==='Copus' ? - copus_ui_bottom - :'', - ]); - - container.appendChild(column); - }); - - return container; - } - - return [ - $el("p", { - textContent: 'Choose a platform to share your workflow', - style: { - 'text-align': 'center', - 'color': 'var(--input-text)', - 'font-size': '18px', - 'margin-bottom': '10px', - }, - } - ), - - $el("div.cm-menu-container", { - id: "comfyui-share-container" - }, [ - $el("div.cm-menu-column", [ - createShareButtonsWithDescriptions(), - $el("br", {}, []), - ]), - ]), - $el("div.cm-menu-container", { - id: "comfyui-share-container" - }, [ - $el("button", { - type: "button", - style: { - margin: "0 25px", - width: "100%", - }, - textContent: "Close", - onclick: () => { - this.close() - } - }), - $el("br", {}, []), - ]), - ]; - } - show() { - this.element.style.display = "block"; - this.element.style.zIndex = 1099; - } -} -export class ShareDialog extends ComfyDialog { - static instance = null; - static matrix_auth = { homeserver: "matrix.org", username: "", password: "" }; - static cw_sharekey = ""; - - constructor(share_option) { - super(); - this.share_option = share_option; - this.element = $el("div.comfy-modal", { - parent: document.body, style: { - 'overflow-y': "auto", - } - }, - [$el("div.comfy-modal-content", - {}, - [...this.createButtons()]), - ]); - this.selectedOutputIndex = 0; - } - - createButtons() { - this.radio_buttons = $el("div", { - id: "selectOutputImages", - }, []); - - this.is_nsfw_checkbox = $el("input", { type: 'checkbox', id: "is_nsfw" }, []) - const is_nsfw_checkbox_text = $el("label", { - }, [" Is this NSFW?"]) - this.is_nsfw_checkbox.style.color = "var(--fg-color)"; - this.is_nsfw_checkbox.checked = false; - - this.matrix_destination_checkbox = $el("input", { type: 'checkbox', id: "matrix_destination" }, []) - const matrix_destination_checkbox_text = $el("label", {}, [" ComfyUI Matrix server"]) - this.matrix_destination_checkbox.style.color = "var(--fg-color)"; - this.matrix_destination_checkbox.checked = this.share_option === 'matrix'; //true; - - this.comfyworkflows_destination_checkbox = $el("input", { type: 'checkbox', id: "comfyworkflows_destination" }, []) - const comfyworkflows_destination_checkbox_text = $el("label", {}, [" ComfyWorkflows.com"]) - this.comfyworkflows_destination_checkbox.style.color = "var(--fg-color)"; - this.comfyworkflows_destination_checkbox.checked = this.share_option !== 'matrix'; - - this.matrix_homeserver_input = $el("input", { type: 'text', id: "matrix_homeserver", placeholder: "matrix.org", value: ShareDialog.matrix_auth.homeserver || 'matrix.org' }, []); - this.matrix_username_input = $el("input", { type: 'text', placeholder: "Username", value: ShareDialog.matrix_auth.username || '' }, []); - this.matrix_password_input = $el("input", { type: 'password', placeholder: "Password", value: ShareDialog.matrix_auth.password || '' }, []); - - this.cw_sharekey_input = $el("input", { type: 'text', placeholder: "Share key (found on your profile page)", value: ShareDialog.cw_sharekey || '' }, []); - this.cw_sharekey_input.style.width = "100%"; - - this.credits_input = $el("input", { - type: "text", - placeholder: "This will be used to give credits", - required: false, - }, []); - - this.title_input = $el("input", { - type: "text", - placeholder: "ex: My awesome art", - required: false - }, []); - - this.description_input = $el("textarea", { - placeholder: "ex: Trying out a new workflow... ", - required: false, - }, []); - - this.share_button = $el("button", { - type: "submit", - textContent: "Share", - style: { - backgroundColor: "blue" - } - }, []); - - this.final_message = $el("div", { - style: { - color: "white", - textAlign: "center", - // marginTop: "10px", - // backgroundColor: "black", - padding: "10px", - } - }, []); - - this.share_finalmessage_container = $el("div.cm-menu-container", { - id: "comfyui-share-finalmessage-container", - style: { - display: "none", - } - }, [ - $el("div.cm-menu-column", [ - this.final_message, - $el("button", { - type: "button", - textContent: "Close", - onclick: () => { - // Reset state - this.matrix_destination_checkbox.checked = this.share_option === 'matrix'; - this.comfyworkflows_destination_checkbox.checked = this.share_option !== 'matrix'; - this.share_button.textContent = "Share"; - this.share_button.style.display = "inline-block"; - this.final_message.innerHTML = ""; - this.final_message.style.color = "white"; - this.credits_input.value = ""; - this.title_input.value = ""; - this.description_input.value = ""; - this.is_nsfw_checkbox.checked = false; - this.selectedOutputIndex = 0; - - // hide the final message - this.share_finalmessage_container.style.display = "none"; - - // show the share container - this.share_container.style.display = "flex"; - - this.close() - } - }), - ]) - ]); - this.share_container = $el("div.cm-menu-container", { - id: "comfyui-share-container" - }, [ - $el("div.cm-menu-column", [ - $el("details", { - style: { - border: "1px solid #999", - padding: "5px", - borderRadius: "5px", - backgroundColor: "#222" - } - }, [ - $el("summary", { - style: { - color: "white", - cursor: "pointer", - } - }, [`Matrix account`]), - $el("div", { - style: { - display: "flex", - flexDirection: "row", - } - }, [ - $el("div", { - textContent: "Homeserver", - style: { - marginRight: "10px", - } - }, []), - this.matrix_homeserver_input, - ]), - - $el("div", { - style: { - display: "flex", - flexDirection: "row", - } - }, [ - $el("div", { - textContent: "Username", - style: { - marginRight: "10px", - } - }, []), - this.matrix_username_input, - ]), - - $el("div", { - style: { - display: "flex", - flexDirection: "row", - } - }, [ - $el("div", { - textContent: "Password", - style: { - marginRight: "10px", - } - }, []), - this.matrix_password_input, - ]), - - ]), - $el("details", { - style: { - border: "1px solid #999", - marginTop: "10px", - padding: "5px", - borderRadius: "5px", - backgroundColor: "#222" - }, - }, [ - $el("summary", { - style: { - color: "white", - cursor: "pointer", - } - }, [`Comfyworkflows.com account`]), - $el("h4", { - textContent: "Share key (found on your profile page)", - }, []), - $el("p", { size: 3, color: "white" }, ["If provided, your art will be saved to your account. Otherwise, it will be shared anonymously."]), - this.cw_sharekey_input, - ]), - - $el("div", {}, [ - $el("p", { - size: 3, color: "white", style: { - color: 'var(--input-text)' - } - }, [`Select where to share your art:`]), - this.matrix_destination_checkbox, - matrix_destination_checkbox_text, - $el("br", {}, []), - this.comfyworkflows_destination_checkbox, - comfyworkflows_destination_checkbox_text, - ]), - - $el("h4", { - textContent: "Credits (optional)", - size: 3, - color: "white", - style: { - color: 'var(--input-text)' - } - }, []), - this.credits_input, - // $el("br", {}, []), - - $el("h4", { - textContent: "Title (optional)", - size: 3, - color: "white", - style: { - color: 'var(--input-text)' - } - }, []), - this.title_input, - // $el("br", {}, []), - - $el("h4", { - textContent: "Description (optional)", - size: 3, - color: "white", - style: { - color: 'var(--input-text)' - } - }, []), - this.description_input, - $el("br", {}, []), - - $el("div", {}, [this.is_nsfw_checkbox, is_nsfw_checkbox_text]), - // $el("br", {}, []), - - // this.final_message, - // $el("br", {}, []), - ]), - $el("div.cm-menu-column", [ - this.radio_buttons, - $el("br", {}, []), - - this.share_button, - - $el("button", { - type: "button", - textContent: "Close", - onclick: () => { - // Reset state - this.matrix_destination_checkbox.checked = this.share_option === 'matrix'; - this.comfyworkflows_destination_checkbox.checked = this.share_option !== 'matrix'; - this.share_button.textContent = "Share"; - this.share_button.style.display = "inline-block"; - this.final_message.innerHTML = ""; - this.final_message.style.color = "white"; - this.credits_input.value = ""; - this.title_input.value = ""; - this.description_input.value = ""; - this.is_nsfw_checkbox.checked = false; - this.selectedOutputIndex = 0; - - // hide the final message - this.share_finalmessage_container.style.display = "none"; - - // show the share container - this.share_container.style.display = "flex"; - - this.close() - } - }), - $el("br", {}, []), - ]), - ]); - - // get the user's existing matrix auth and share key - ShareDialog.matrix_auth = { homeserver: "matrix.org", username: "", password: "" }; - try { - api.fetchApi(`/manager/get_matrix_auth`) - .then(response => response.json()) - .then(data => { - ShareDialog.matrix_auth = data; - this.matrix_homeserver_input.value = ShareDialog.matrix_auth.homeserver; - this.matrix_username_input.value = ShareDialog.matrix_auth.username; - this.matrix_password_input.value = ShareDialog.matrix_auth.password; - }) - .catch(error => { - // console.log(error); - }); - } catch (error) { - // console.log(error); - } - - // get the user's existing comfyworkflows share key - ShareDialog.cw_sharekey = ""; - try { - // console.log("Fetching comfyworkflows share key") - api.fetchApi(`/manager/get_comfyworkflows_auth`) - .then(response => response.json()) - .then(data => { - ShareDialog.cw_sharekey = data.comfyworkflows_sharekey; - this.cw_sharekey_input.value = ShareDialog.cw_sharekey; - }) - .catch(error => { - // console.log(error); - }); - } catch (error) { - // console.log(error); - } - - this.share_button.onclick = async () => { - const prompt = await app.graphToPrompt(); - const nodes = app.graph._nodes; - - // console.log({ prompt, nodes }); - - const destinations = []; - if (this.matrix_destination_checkbox.checked) { - destinations.push("matrix"); - } - if (this.comfyworkflows_destination_checkbox.checked) { - destinations.push("comfyworkflows"); - } - - // if destinations includes matrix, make an api call to /manager/check_matrix to ensure that the user has configured their matrix settings - if (destinations.includes("matrix")) { - let definedMatrixAuth = !!this.matrix_homeserver_input.value && !!this.matrix_username_input.value && !!this.matrix_password_input.value; - if (!definedMatrixAuth) { - customAlert("Please set your Matrix account details."); - return; - } - } - - if (destinations.includes("comfyworkflows") && !this.cw_sharekey_input.value && false) { //!confirm("You have NOT set your ComfyWorkflows.com share key. Your art will NOT be connected to your account (it will be shared anonymously). Continue?")) { - return; - } - - const { potential_outputs, potential_output_nodes } = getPotentialOutputsAndOutputNodes(nodes); - - // console.log({ potential_outputs, potential_output_nodes }) - - if (potential_outputs.length === 0) { - if (potential_output_nodes.length === 0) { - // todo: add support for other output node types (animatediff combine, etc.) - const supported_nodes_string = SUPPORTED_OUTPUT_NODE_TYPES.join(", "); - customAlert(`No supported output node found (${supported_nodes_string}). To share this workflow, please add an output node to your graph and re-run your prompt.`); - } else { - customAlert("To share this, first run a prompt. Once it's done, click 'Share'.\n\nNOTE: Images of the Share target can only be selected in the PreviewImage, SaveImage, and VHS_VideoCombine nodes. In the case of VHS_VideoCombine, only the image/gif and image/webp formats are supported."); - } - this.selectedOutputIndex = 0; - this.close(); - return; - } - - // Change the text of the share button to "Sharing..." to indicate that the share process has started - this.share_button.textContent = "Sharing..."; - - const response = await api.fetchApi(`/manager/share`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - matrix_auth: { - homeserver: this.matrix_homeserver_input.value, - username: this.matrix_username_input.value, - password: this.matrix_password_input.value, - }, - cw_auth: { - cw_sharekey: this.cw_sharekey_input.value, - }, - share_destinations: destinations, - credits: this.credits_input.value, - title: this.title_input.value, - description: this.description_input.value, - is_nsfw: this.is_nsfw_checkbox.checked, - prompt, - potential_outputs, - selected_output_index: this.selectedOutputIndex, - // potential_output_nodes - }) - }); - - if (response.status != 200) { - try { - const response_json = await response.json(); - if (response_json.error) { - customAlert(response_json.error); - this.close(); - return; - } else { - customAlert("Failed to share your art. Please try again."); - this.close(); - return; - } - } catch (e) { - customAlert("Failed to share your art. Please try again."); - this.close(); - return; - } - } - - const response_json = await response.json(); - - if (response_json.comfyworkflows.url) { - this.final_message.innerHTML = "Your art has been shared: " + response_json.comfyworkflows.url + ""; - if (response_json.matrix.success) { - this.final_message.innerHTML += "
Your art has been shared in the ComfyUI Matrix server's #share channel!"; - } - } else { - if (response_json.matrix.success) { - this.final_message.innerHTML = "Your art has been shared in the ComfyUI Matrix server's #share channel!"; - } - } - - this.final_message.style.color = "green"; - - // hide #comfyui-share-container and show #comfyui-share-finalmessage-container - this.share_container.style.display = "none"; - this.share_finalmessage_container.style.display = "block"; - - // hide the share button - this.share_button.textContent = "Shared!"; - this.share_button.style.display = "none"; - // this.close(); - } - - const res = - [ - $el("tr.td", { width: "100%" }, [ - $el("font", { size: 6, color: "white" }, [`Share your art`]), - ]), - $el("br", {}, []), - - this.share_finalmessage_container, - this.share_container, - ]; - - res[0].style.padding = "10px 10px 10px 10px"; - res[0].style.backgroundColor = "black"; //"linear-gradient(90deg, #00C9FF 0%, #92FE9D 100%)"; - res[0].style.textAlign = "center"; - res[0].style.height = "45px"; - return res; - } - - show({potential_outputs, potential_output_nodes, share_option}) { - // Sort `potential_output_nodes` by node ID to make the order always - // consistent, but we should also keep `potential_outputs` in the same - // order as `potential_output_nodes`. - const potential_output_to_order = {}; - potential_output_nodes.forEach((node, index) => { - if (node.id in potential_output_to_order) { - potential_output_to_order[node.id][1].push(potential_outputs[index]); - } else { - potential_output_to_order[node.id] = [node, [potential_outputs[index]]]; - } - }) - // Sort the object `potential_output_to_order` by key (node ID) - const sorted_potential_output_to_order = Object.fromEntries( - Object.entries(potential_output_to_order).sort((a, b) => a[0].id - b[0].id) - ); - const sorted_potential_outputs = [] - const sorted_potential_output_nodes = [] - for (const [key, value] of Object.entries(sorted_potential_output_to_order)) { - sorted_potential_output_nodes.push(value[0]); - sorted_potential_outputs.push(...value[1]); - } - potential_output_nodes = sorted_potential_output_nodes; - potential_outputs = sorted_potential_outputs; - - // console.log({ potential_outputs, potential_output_nodes }) - this.radio_buttons.innerHTML = ""; // clear the radio buttons - let is_radio_button_checked = false; // only check the first radio button if multiple images from the same node - const new_radio_buttons = $el("div", { - id: "selectOutput-Options", - style: { - 'overflow-y': 'scroll', - 'max-height': '400px', - } - }, potential_outputs.map((output, index) => { - const {node_id} = output; - const radio_button = $el("input", { type: 'radio', name: "selectOutputImages", value: index, required: index === 0 }, []) - let radio_button_img; - if (output.type === "image" || output.type === "temp") { - radio_button_img = $el("img", { src: `/view?filename=${output.image.filename}&subfolder=${output.image.subfolder}&type=${output.image.type}`, style: { width: "auto", height: "100px" } }, []); - } else if (output.type === "output") { - radio_button_img = $el("img", { src: output.output.value, style: { width: "auto", height: "100px" } }, []); - } else { - // unsupported output type - // this should never happen - // TODO - radio_button_img = $el("img", { src: "", style: { width: "auto", height: "100px" } }, []); - } - const radio_button_text = $el("label", { - // style: { - // color: 'var(--input-text)' - // } - }, [output.title]) - radio_button.style.color = "var(--fg-color)"; - - // Make the radio button checked if it's the selected node, - // otherwise make the first radio button checked. - if (this.selectedNodeId) { - if (this.selectedNodeId === node_id && !is_radio_button_checked) { - radio_button.checked = true; - is_radio_button_checked = true; - } - } else { - radio_button.checked = index === 0; - } - - if (radio_button.checked) { - this.selectedOutputIndex = index; - } - - radio_button.onchange = () => { - this.selectedOutputIndex = parseInt(radio_button.value); - }; - - return $el("div", { - style: { - display: "flex", - 'align-items': 'center', - 'justify-content': 'space-between', - 'margin-bottom': '10px', - } - }, [radio_button, radio_button_text, radio_button_img]); - })); - const header = $el("h3", { - textContent: "Select an image to share", - size: 3, - color: "white", - style: { - 'text-align': 'center', - color: 'var(--input-text)', - backgroundColor: 'black', - padding: '10px', - 'margin-top': '0px', - } - }, [ - $el("p", { - textContent: "Scroll to see all outputs", - size: 2, - color: "white", - style: { - 'text-align': 'center', - color: 'var(--input-text)', - 'margin-bottom': '5px', - 'font-style': 'italic', - 'font-size': '12px', - }, - }, []) - ]); - this.radio_buttons.appendChild(header); - // this.radio_buttons.appendChild(subheader); - this.radio_buttons.appendChild(new_radio_buttons); - this.element.style.display = "block"; - - share_option = share_option || this.share_option; - if (share_option === 'comfyworkflows') { - this.matrix_destination_checkbox.checked = false; - this.comfyworkflows_destination_checkbox.checked = true; - } else { - this.matrix_destination_checkbox.checked = true; - this.comfyworkflows_destination_checkbox.checked = false; - } - } -} diff --git a/custom_nodes/comfyui-manager/js/comfyui-share-copus.js b/custom_nodes/comfyui-manager/js/comfyui-share-copus.js deleted file mode 100644 index 50b49cd6cd24d12805b20911f840eb37b0b9c7ce..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/comfyui-share-copus.js +++ /dev/null @@ -1,985 +0,0 @@ -import { app } from "../../scripts/app.js"; -import { $el, ComfyDialog } from "../../scripts/ui.js"; -import { customAlert } from "./common.js"; - -const env = "prod"; - -let DEFAULT_HOMEPAGE_URL = "https://copus.io"; - -let API_ENDPOINT = "https://api.client.prod.copus.io"; - -if (env !== "prod") { - API_ENDPOINT = "https://api.test.copus.io"; - DEFAULT_HOMEPAGE_URL = "https://test.copus.io"; -} - -const style = ` - .copus-share-dialog a { - color: #f8f8f8; - } - .copus-share-dialog a:hover { - color: #007bff; - } - .output_label { - border: 5px solid transparent; - } - .output_label:hover { - border: 5px solid #59E8C6; - } - .output_label.checked { - border: 5px solid #59E8C6; - } -`; - -// Shared component styles -const sectionStyle = { - marginBottom: 0, - padding: 0, - borderRadius: "8px", - boxShadow: "0 2px 4px rgba(0, 0, 0, 0.05)", - display: "flex", - flexDirection: "column", - justifyContent: "center", - position: "relative", -}; - -export class CopusShareDialog extends ComfyDialog { - static instance = null; - - constructor() { - super(); - $el("style", { - textContent: style, - parent: document.head, - }); - this.element = $el( - "div.comfy-modal.copus-share-dialog", - { - parent: document.body, - style: { - "overflow-y": "auto", - }, - }, - [$el("div.comfy-modal-content", {}, [...this.createButtons()])] - ); - this.selectedOutputIndex = 0; - this.selectedOutput_lock = 0; - this.selectedNodeId = null; - this.uploadedImages = []; - this.allFilesImages = []; - this.selectedFile = null; - this.allFiles = []; - this.titleNum = 0; - } - - createButtons() { - const inputStyle = { - display: "block", - minWidth: "500px", - width: "100%", - padding: "10px", - margin: "10px 0", - borderRadius: "4px", - border: "1px solid #ddd", - boxSizing: "border-box", - }; - - const textAreaStyle = { - display: "block", - minWidth: "500px", - width: "100%", - padding: "10px", - margin: "10px 0", - borderRadius: "4px", - border: "1px solid #ddd", - boxSizing: "border-box", - minHeight: "100px", - background: "#222", - resize: "vertical", - color: "#f2f2f2", - fontFamily: "Arial", - fontWeight: "400", - fontSize: "15px", - }; - - const hyperLinkStyle = { - display: "block", - marginBottom: "15px", - fontWeight: "bold", - fontSize: "14px", - }; - - const labelStyle = { - color: "#f8f8f8", - display: "block", - margin: "10px 0 0 0", - fontWeight: "bold", - textDecoration: "none", - }; - - const buttonStyle = { - padding: "10px 80px", - margin: "10px 5px", - borderRadius: "4px", - border: "none", - cursor: "pointer", - color: "#fff", - backgroundColor: "#007bff", - }; - - // upload images input - this.uploadImagesInput = $el("input", { - type: "file", - multiple: false, - style: inputStyle, - accept: "image/*", - }); - - this.uploadImagesInput.addEventListener("change", async (e) => { - const file = e.target.files[0]; - if (!file) { - this.previewImage.src = ""; - this.previewImage.style.display = "none"; - return; - } - const reader = new FileReader(); - reader.onload = async (e) => { - const imgData = e.target.result; - this.previewImage.src = imgData; - this.previewImage.style.display = "block"; - this.selectedFile = null; - // Once user uploads an image, we uncheck all radio buttons - this.radioButtons.forEach((ele) => { - ele.checked = false; - ele.parentElement.classList.remove("checked"); - }); - - // Add the opacity style toggle here to indicate that they only need - // to upload one image or choose one from the outputs. - this.outputsSection.style.opacity = 0.35; - this.uploadImagesInput.style.opacity = 1; - }; - reader.readAsDataURL(file); - }); - - // preview image - this.previewImage = $el("img", { - src: "", - style: { - width: "100%", - maxHeight: "100px", - objectFit: "contain", - display: "none", - marginTop: "10px", - }, - }); - - this.keyInput = $el("input", { - type: "password", - placeholder: "Copy & paste your API key", - style: inputStyle, - }); - this.TitleInput = $el("input", { - type: "text", - placeholder: "Title (Required)", - style: inputStyle, - maxLength: "70", - oninput: () => { - const titleNum = this.TitleInput.value.length; - titleNumDom.textContent = `${titleNum}/70`; - }, - }); - this.SubTitleInput = $el("input", { - type: "text", - placeholder: "Subtitle (Optional)", - style: inputStyle, - maxLength: "350", - oninput: () => { - const titleNum = this.SubTitleInput.value.length; - subTitleNumDom.textContent = `${titleNum}/350`; - }, - }); - this.LockInput = $el("input", { - type: "text", - placeholder: "", - style: { - width: "100px", - padding: "7px", - borderRadius: "4px", - border: "1px solid #ddd", - boxSizing: "border-box", - }, - oninput: (event) => { - let input = event.target.value; - // Use a regular expression to match a number with up to two decimal places - const regex = /^\d*\.?\d{0,2}$/; - if (!regex.test(input)) { - // If the input doesn't match, remove the last entered character - event.target.value = input.slice(0, -1); - } - const numericValue = parseFloat(input); - if (numericValue > 9999) { - input = "9999"; - } - // Update the input field with the valid value - event.target.value = input; - }, - }); - this.descriptionInput = $el("textarea", { - placeholder: "Content (Optional)", - style: { - ...textAreaStyle, - minHeight: "100px", - }, - }); - - // Header Section - const headerSection = $el("h3", { - textContent: "Share your workflow to Copus", - size: 3, - color: "white", - style: { - "text-align": "center", - color: "white", - margin: "0 0 10px 0", - }, - }); - this.getAPIKeyLink = $el( - "a", - { - style: { - ...hyperLinkStyle, - color: "#59E8C6", - }, - href: `${DEFAULT_HOMEPAGE_URL}?fromPage=comfyUI`, - target: "_blank", - }, - ["👉 Get your API key here"] - ); - const linkSection = $el( - "div", - { - style: { - marginTop: "10px", - display: "flex", - flexDirection: "column", - }, - }, - [ - // this.communityLink, - this.getAPIKeyLink, - ] - ); - - // Account Section - const accountSection = $el("div", { style: sectionStyle }, [ - $el("label", { style: labelStyle }, ["1️⃣ Copus API Key"]), - this.keyInput, - ]); - - // Output Upload Section - const outputUploadSection = $el("div", { style: sectionStyle }, [ - $el( - "label", - { - style: { - ...labelStyle, - margin: "10px 0 0 0", - }, - }, - ["2️⃣ Image/Thumbnail (Required)"] - ), - this.previewImage, - this.uploadImagesInput, - ]); - - // Outputs Section - this.outputsSection = $el( - "div", - { - id: "selectOutputs", - }, - [] - ); - - const titleNumDom = $el( - "label", - { - style: { - fontSize: "12px", - position: "absolute", - right: "10px", - bottom: "-10px", - color: "#999", - }, - }, - ["0/70"] - ); - const subTitleNumDom = $el( - "label", - { - style: { - fontSize: "12px", - position: "absolute", - right: "10px", - bottom: "-10px", - color: "#999", - }, - }, - ["0/350"] - ); - const descriptionNumDom = $el( - "label", - { - style: { - fontSize: "12px", - position: "absolute", - right: "10px", - bottom: "-10px", - color: "#999", - }, - }, - ["0/70"] - ); - // Additional Inputs Section - const additionalInputsSection = $el( - "div", - { style: { ...sectionStyle, } }, - [ - $el("label", { style: labelStyle }, ["3️⃣ Title "]), - this.TitleInput, - titleNumDom, - ] - ); - const SubtitleSection = $el("div", { style: sectionStyle }, [ - $el("label", { style: labelStyle }, ["4️⃣ Subtitle "]), - this.SubTitleInput, - subTitleNumDom, - ]); - const DescriptionSection = $el("div", { style: sectionStyle }, [ - $el("label", { style: labelStyle }, ["5️⃣ Description "]), - this.descriptionInput, - // descriptionNumDom, - ]); - // switch between outputs section and additional inputs section - this.radioButtons_lock = []; - - this.radioButtonsCheck_lock = $el("input", { - type: "radio", - name: "output_type_lock", - value: "0", - id: "blockchain1_lock", - checked: true, - }); - this.radioButtonsCheckOff_lock = $el("input", { - type: "radio", - name: "output_type_lock", - value: "1", - id: "blockchain_lock", - }); - - const blockChainSection_lock = $el("div", { style: sectionStyle }, [ - $el("label", { style: labelStyle }, ["6️⃣ Pay to download"]), - $el( - "label", - { - style: { - marginTop: "10px", - display: "flex", - alignItems: "center", - cursor: "pointer", - }, - }, - [ - this.radioButtonsCheck_lock, - $el("div", { style: { marginLeft: "5px" ,display:'flex',alignItems:'center'} }, [ - $el("span", { style: { marginLeft: "5px" } }, ["ON"]), - $el("span", { style: { marginLeft: "20px",marginRight:'10px' ,color:'#fff'} }, ["Price US$"]), - this.LockInput - ]), - ] - ), - $el( - "label", - { style: { display: "flex", alignItems: "center", cursor: "pointer" } }, - [ - this.radioButtonsCheckOff_lock, - $el("span", { style: { marginLeft: "5px" } }, ["OFF"]), - ] - ), - - $el( - "p", - { style: { fontSize: "16px", color: "#fff", margin: "10px 0 0 0" } }, - ["Get paid from your workflow. You can change the price and withdraw your earnings on Copus."] - ), - ]); - - this.radioButtons = []; - - this.radioButtonsCheck = $el("input", { - type: "radio", - name: "output_type", - value: "0", - id: "blockchain1", - checked: true, - }); - this.radioButtonsCheckOff = $el("input", { - type: "radio", - name: "output_type", - value: "1", - id: "blockchain", - }); - - const blockChainSection = $el("div", { style: sectionStyle }, [ - $el("label", { style: labelStyle }, ["7️⃣ Store on blockchain "]), - $el( - "label", - { - style: { - marginTop: "10px", - display: "flex", - alignItems: "center", - cursor: "pointer", - }, - }, - [ - this.radioButtonsCheck, - $el("span", { style: { marginLeft: "5px" } }, ["ON"]), - ] - ), - $el( - "label", - { style: { display: "flex", alignItems: "center", cursor: "pointer" } }, - [ - this.radioButtonsCheckOff, - $el("span", { style: { marginLeft: "5px" } }, ["OFF"]), - ] - ), - $el( - "p", - { style: { fontSize: "16px", color: "#fff", margin: "10px 0 0 0" } }, - ["Secure ownership with a permanent & decentralized storage"] - ), - ]); - - - // Message Section - this.message = $el( - "div", - { - style: { - color: "#ff3d00", - textAlign: "center", - padding: "10px", - fontSize: "20px", - }, - }, - [] - ); - - this.shareButton = $el("button", { - type: "submit", - textContent: "Share", - style: buttonStyle, - onclick: () => { - this.handleShareButtonClick(); - }, - }); - - // Share and Close Buttons - const buttonsSection = $el( - "div", - { - style: { - textAlign: "right", - marginTop: "20px", - display: "flex", - justifyContent: "space-between", - }, - }, - [ - $el("button", { - type: "button", - textContent: "Close", - style: { - ...buttonStyle, - backgroundColor: undefined, - }, - onclick: () => { - this.close(); - }, - }), - this.shareButton, - ] - ); - - // Composing the full layout - const layout = [ - headerSection, - linkSection, - accountSection, - outputUploadSection, - this.outputsSection, - additionalInputsSection, - SubtitleSection, - DescriptionSection, - // contestSection, - blockChainSection_lock, - blockChainSection, - this.message, - buttonsSection, - ]; - - return layout; - } - /** - * api - * @param {url} path - * @param {params} options - * @param {statusText} statusText - * @returns - */ - async fetchApi(path, options, statusText) { - if (statusText) { - this.message.textContent = statusText; - } - const fullPath = new URL(API_ENDPOINT + path); - const response = await fetch(fullPath, options); - if (!response.ok) { - throw new Error(response.statusText); - } - if (statusText) { - this.message.textContent = ""; - } - const data = await response.json(); - return { - ok: response.ok, - statusText: response.statusText, - status: response.status, - data, - }; - } - /** - * @param {file} uploadFile - */ - async uploadThumbnail(uploadFile, type) { - const form = new FormData(); - form.append("file", uploadFile); - form.append("apiToken", this.keyInput.value); - try { - const res = await this.fetchApi( - `/client/common/opus/uploadImage`, - { - method: "POST", - body: form, - }, - "Uploading thumbnail..." - ); - if (res.status && res.data.status && res.data) { - const { data } = res.data; - if (type) { - this.allFilesImages.push({ - url: data, - }); - } - this.uploadedImages.push({ - url: data, - }); - } else { - throw new Error("make sure your API key is correct and try again later"); - } - } catch (e) { - if (e?.response?.status === 413) { - throw new Error("File size is too large (max 20MB)"); - } else { - throw new Error("Error uploading thumbnail: " + e.message); - } - } - } - - async handleShareButtonClick() { - this.message.textContent = ""; - try { - this.shareButton.disabled = true; - this.shareButton.textContent = "Sharing..."; - await this.share(); - } catch (e) { - customAlert(e.message); - } - this.shareButton.disabled = false; - this.shareButton.textContent = "Share"; - } - /** - * share - * @param {string} title - * @param {string} subtitle - * @param {string} content - * @param {boolean} storeOnChain - * @param {string} coverUrl - * @param {string[]} imageUrls - * @param {string} apiToken - */ - async share() { - const prompt = await app.graphToPrompt(); - const workflowJSON = prompt["workflow"]; - const form_values = { - title: this.TitleInput.value, - subTitle: this.SubTitleInput.value, - content: this.descriptionInput.value, - storeOnChain: this.radioButtonsCheck.checked ? true : false, - lockState:this.radioButtonsCheck_lock.checked ? 2 : 0, - unlockPrice:this.LockInput.value, - }; - - if (!this.keyInput.value) { - throw new Error("API key is required"); - } - - if (!this.uploadImagesInput.files[0] && !this.selectedFile) { - throw new Error("Thumbnail is required"); - } - - if (!form_values.title) { - throw new Error("Title is required"); - } - - if(this.radioButtonsCheck_lock.checked){ - if (!this.LockInput.value){ - throw new Error("Price is required"); - } - } - - if (!this.uploadedImages.length) { - if (this.selectedFile) { - await this.uploadThumbnail(this.selectedFile); - } else { - for (const file of this.uploadImagesInput.files) { - try { - await this.uploadThumbnail(file); - } catch (e) { - this.uploadedImages = []; - throw new Error(e.message); - } - } - - if (this.uploadImagesInput.files.length === 0) { - throw new Error("No thumbnail uploaded"); - } - } - } - if (this.allFiles.length > 0) { - for (const file of this.allFiles) { - try { - await this.uploadThumbnail(file, true); - } catch (e) { - this.allFilesImages = []; - throw new Error(e.message); - } - } - } - try { - const res = await this.fetchApi( - "/client/common/opus/shareFromComfyUI", - { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - workflowJson: workflowJSON, - apiToken: this.keyInput.value, - coverUrl: this.uploadedImages[0].url, - imageUrls: this.allFilesImages.map((image) => image.url), - ...form_values, - }), - }, - "Uploading workflow..." - ); - - if (res.status && res.data.status && res.data) { - localStorage.setItem("copus_token",this.keyInput.value); - const { data } = res.data; - if (data) { - const url = `${DEFAULT_HOMEPAGE_URL}/work/${data}`; - this.message.innerHTML = `Workflow has been shared successfully. Click here to view it.`; - this.previewImage.src = ""; - this.previewImage.style.display = "none"; - this.uploadedImages = []; - this.allFilesImages = []; - this.allFiles = []; - this.TitleInput.value = ""; - this.SubTitleInput.value = ""; - this.descriptionInput.value = ""; - this.selectedFile = null; - } - } - } catch (e) { - throw new Error("Error sharing workflow: " + e.message); - } - } - - async fetchImageBlob(url) { - const response = await fetch(url); - const blob = await response.blob(); - return blob; - } - - async show({ potential_outputs, potential_output_nodes } = {}) { - // Sort `potential_output_nodes` by node ID to make the order always - // consistent, but we should also keep `potential_outputs` in the same - // order as `potential_output_nodes`. - const potential_output_to_order = {}; - potential_output_nodes.forEach((node, index) => { - if (node.id in potential_output_to_order) { - potential_output_to_order[node.id][1].push(potential_outputs[index]); - } else { - potential_output_to_order[node.id] = [node, [potential_outputs[index]]]; - } - }); - // Sort the object `potential_output_to_order` by key (node ID) - const sorted_potential_output_to_order = Object.fromEntries( - Object.entries(potential_output_to_order).sort( - (a, b) => a[0].id - b[0].id - ) - ); - const sorted_potential_outputs = []; - const sorted_potential_output_nodes = []; - for (const [key, value] of Object.entries( - sorted_potential_output_to_order - )) { - sorted_potential_output_nodes.push(value[0]); - sorted_potential_outputs.push(...value[1]); - } - potential_output_nodes = sorted_potential_output_nodes; - potential_outputs = sorted_potential_outputs; - const apiToken = localStorage.getItem("copus_token"); - this.message.innerHTML = ""; - this.message.textContent = ""; - this.element.style.display = "block"; - this.previewImage.src = ""; - this.previewImage.style.display = "none"; - this.keyInput.value = apiToken!=null?apiToken:""; - this.uploadedImages = []; - this.allFilesImages = []; - this.allFiles = []; - // If `selectedNodeId` is provided, we will select the corresponding radio - // button for the node. In addition, we move the selected radio button to - // the top of the list. - if (this.selectedNodeId) { - const index = potential_output_nodes.findIndex( - (node) => node.id === this.selectedNodeId - ); - if (index >= 0) { - this.selectedOutputIndex = index; - } - } - - this.radioButtons = []; - const new_radio_buttons = $el( - "div", - { - id: "selectOutput-Options", - style: { - "overflow-y": "scroll", - "max-height": "200px", - display: "grid", - "grid-template-columns": "repeat(auto-fit, minmax(100px, 1fr))", - "grid-template-rows": "auto", - "grid-column-gap": "10px", - "grid-row-gap": "10px", - "margin-bottom": "10px", - padding: "10px", - "border-radius": "8px", - "box-shadow": "0 2px 4px rgba(0, 0, 0, 0.05)", - "background-color": "var(--bg-color)", - }, - }, - potential_outputs.map((output, index) => { - const { node_id } = output; - const radio_button = $el( - "input", - { - type: "radio", - name: "selectOutputImages", - value: index, - required: index === 0, - }, - [] - ); - let radio_button_img; - let filename; - if (output.type === "image" || output.type === "temp") { - radio_button_img = $el( - "img", - { - src: `/view?filename=${output.image.filename}&subfolder=${output.image.subfolder}&type=${output.image.type}`, - style: { - width: "100px", - height: "100px", - objectFit: "cover", - borderRadius: "5px", - }, - }, - [] - ); - filename = output.image.filename; - } else if (output.type === "output") { - radio_button_img = $el( - "img", - { - src: output.output.value, - style: { - width: "auto", - height: "100px", - objectFit: "cover", - borderRadius: "5px", - }, - }, - [] - ); - filename = output.filename; - } else { - // unsupported output type - // this should never happen - radio_button_img = $el( - "img", - { - src: "", - style: { width: "auto", height: "100px" }, - }, - [] - ); - } - const radio_button_text = $el( - "span", - { - style: { - color: "gray", - display: "block", - fontSize: "12px", - overflowX: "hidden", - textOverflow: "ellipsis", - textWrap: "nowrap", - maxWidth: "100px", - }, - }, - [output.title] - ); - const node_id_chip = $el( - "span", - { - style: { - color: "#FBFBFD", - display: "block", - backgroundColor: "rgba(0, 0, 0, 0.5)", - fontSize: "12px", - overflowX: "hidden", - padding: "2px 3px", - textOverflow: "ellipsis", - textWrap: "nowrap", - maxWidth: "100px", - position: "absolute", - top: "3px", - left: "3px", - borderRadius: "3px", - }, - }, - [`Node: ${node_id}`] - ); - radio_button.style.color = "var(--fg-color)"; - radio_button.checked = this.selectedOutputIndex === index; - - radio_button.onchange = async () => { - this.selectedOutputIndex = parseInt(radio_button.value); - - // Remove the "checked" class from all radio buttons - this.radioButtons.forEach((ele) => { - ele.parentElement.classList.remove("checked"); - }); - radio_button.parentElement.classList.add("checked"); - - this.fetchImageBlob(radio_button_img.src).then((blob) => { - const file = new File([blob], filename, { - type: blob.type, - }); - this.previewImage.src = radio_button_img.src; - this.previewImage.style.display = "block"; - this.selectedFile = file; - }); - - // Add the opacity style toggle here to indicate that they only need - // to upload one image or choose one from the outputs. - this.outputsSection.style.opacity = 1; - this.uploadImagesInput.style.opacity = 0.35; - }; - - if (radio_button.checked) { - this.fetchImageBlob(radio_button_img.src).then((blob) => { - const file = new File([blob], filename, { - type: blob.type, - }); - this.previewImage.src = radio_button_img.src; - this.previewImage.style.display = "block"; - this.selectedFile = file; - }); - // Add the opacity style toggle here to indicate that they only need - // to upload one image or choose one from the outputs. - this.outputsSection.style.opacity = 1; - this.uploadImagesInput.style.opacity = 0.35; - } - this.radioButtons.push(radio_button); - let src = ""; - if (output.type === "image" || output.type === "temp") { - filename = output.image.filename; - src = `/view?filename=${output.image.filename}&subfolder=${output.image.subfolder}&type=${output.image.type}`; - } else if (output.type === "output") { - src = output.output.value; - filename = output.filename; - } - if (src) { - this.fetchImageBlob(src).then((blob) => { - const file = new File([blob], filename, { - type: blob.type, - }); - this.allFiles.push(file); - }); - } - return $el( - `label.output_label${radio_button.checked ? ".checked" : ""}`, - { - style: { - display: "flex", - flexDirection: "column", - alignItems: "center", - justifyContent: "center", - marginBottom: "10px", - cursor: "pointer", - position: "relative", - }, - }, - [radio_button_img, radio_button_text, radio_button, node_id_chip] - ); - }) - ); - - const header = $el( - "p", - { - textContent: - this.radioButtons.length === 0 - ? "Queue Prompt to see the outputs" - : "Or choose one from the outputs (scroll to see all)", - size: 2, - color: "white", - style: { - color: "white", - margin: "0 0 5px 0", - fontSize: "12px", - }, - }, - [] - ); - this.outputsSection.innerHTML = ""; - this.outputsSection.appendChild(header); - this.outputsSection.appendChild(new_radio_buttons); - } -} diff --git a/custom_nodes/comfyui-manager/js/comfyui-share-openart.js b/custom_nodes/comfyui-manager/js/comfyui-share-openart.js deleted file mode 100644 index 5dd8c219c530e3abfb6d72a064083604d1c1dc4c..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/comfyui-share-openart.js +++ /dev/null @@ -1,746 +0,0 @@ -import {app} from "../../scripts/app.js"; -import {api} from "../../scripts/api.js"; -import {ComfyDialog, $el} from "../../scripts/ui.js"; -import { customAlert } from "./common.js"; - -const LOCAL_STORAGE_KEY = "openart_comfy_workflow_key"; -const DEFAULT_HOMEPAGE_URL = "https://openart.ai/workflows/dev?developer=true"; -//const DEFAULT_HOMEPAGE_URL = "http://localhost:8080/workflows/dev?developer=true"; - -const API_ENDPOINT = "https://openart.ai/api"; -//const API_ENDPOINT = "http://localhost:8080/api"; - -const style = ` - .openart-share-dialog a { - color: #f8f8f8; - } - .openart-share-dialog a:hover { - color: #007bff; - } - .output_label { - border: 5px solid transparent; - } - .output_label:hover { - border: 5px solid #59E8C6; - } - .output_label.checked { - border: 5px solid #59E8C6; - } -`; - -// Shared component styles -const sectionStyle = { - marginBottom: 0, - padding: 0, - borderRadius: "8px", - boxShadow: "0 2px 4px rgba(0, 0, 0, 0.05)", - display: "flex", - flexDirection: "column", - justifyContent: "center", -}; - -export class OpenArtShareDialog extends ComfyDialog { - static instance = null; - - constructor() { - super(); - $el("style", { - textContent: style, - parent: document.head, - }); - this.element = $el( - "div.comfy-modal.openart-share-dialog", - { - parent: document.body, - style: { - "overflow-y": "auto", - }, - }, - [$el("div.comfy-modal-content", {}, [...this.createButtons()])] - ); - this.selectedOutputIndex = 0; - this.selectedNodeId = null; - this.uploadedImages = []; - this.selectedFile = null; - } - - async readKey() { - let key = "" - try { - key = await api.fetchApi(`/manager/get_openart_auth`) - .then(response => response.json()) - .then(data => { - return data.openart_key; - }) - .catch(error => { - // console.log(error); - }); - } catch (error) { - // console.log(error); - } - return key || ""; - } - - async saveKey(value) { - await api.fetchApi(`/manager/set_openart_auth`, { - method: 'POST', - headers: {'Content-Type': 'application/json'}, - body: JSON.stringify({ - openart_key: value - }) - }); - } - - createButtons() { - const inputStyle = { - display: "block", - minWidth: "500px", - width: "100%", - padding: "10px", - margin: "10px 0", - borderRadius: "4px", - border: "1px solid #ddd", - boxSizing: "border-box", - }; - - const hyperLinkStyle = { - display: "block", - marginBottom: "15px", - fontWeight: "bold", - fontSize: "14px", - }; - - const labelStyle = { - color: "#f8f8f8", - display: "block", - margin: "10px 0 0 0", - fontWeight: "bold", - textDecoration: "none", - }; - - const buttonStyle = { - padding: "10px 80px", - margin: "10px 5px", - borderRadius: "4px", - border: "none", - cursor: "pointer", - color: "#fff", - backgroundColor: "#007bff", - }; - - // upload images input - this.uploadImagesInput = $el("input", { - type: "file", - multiple: false, - style: inputStyle, - accept: "image/*", - }); - - this.uploadImagesInput.addEventListener("change", async (e) => { - const file = e.target.files[0]; - if (!file) { - this.previewImage.src = ""; - this.previewImage.style.display = "none"; - return; - } - const reader = new FileReader(); - reader.onload = async (e) => { - const imgData = e.target.result; - this.previewImage.src = imgData; - this.previewImage.style.display = "block"; - this.selectedFile = null - // Once user uploads an image, we uncheck all radio buttons - this.radioButtons.forEach((ele) => { - ele.checked = false; - ele.parentElement.classList.remove("checked"); - }); - - // Add the opacity style toggle here to indicate that they only need - // to upload one image or choose one from the outputs. - this.outputsSection.style.opacity = 0.35; - this.uploadImagesInput.style.opacity = 1; - }; - reader.readAsDataURL(file); - }); - - // preview image - this.previewImage = $el("img", { - src: "", - style: { - width: "100%", - maxHeight: "100px", - objectFit: "contain", - display: "none", - marginTop: '10px', - }, - }); - - this.keyInput = $el("input", { - type: "password", - placeholder: "Copy & paste your API key", - style: inputStyle, - }); - this.NameInput = $el("input", { - type: "text", - placeholder: "Title (required)", - style: inputStyle, - }); - this.descriptionInput = $el("textarea", { - placeholder: "Description (optional)", - style: { - ...inputStyle, - minHeight: "100px", - }, - }); - - // Header Section - const headerSection = $el("h3", { - textContent: "Share your workflow to OpenArt", - size: 3, - color: "white", - style: { - 'text-align': 'center', - color: 'var(--input-text)', - margin: '0 0 10px 0', - } - }); - - // LinkSection - this.communityLink = $el("a", { - style: hyperLinkStyle, - href: DEFAULT_HOMEPAGE_URL, - target: "_blank" - }, ["👉 Check out thousands of workflows shared from the community"]) - this.getAPIKeyLink = $el("a", { - style: { - ...hyperLinkStyle, - color: "#59E8C6" - }, - href: DEFAULT_HOMEPAGE_URL, - target: "_blank" - }, ["👉 Get your API key here"]) - const linkSection = $el( - "div", - { - style: { - marginTop: "10px", - display: "flex", - flexDirection: "column", - }, - }, - [ - this.communityLink, - this.getAPIKeyLink, - ] - ); - - // Account Section - const accountSection = $el("div", {style: sectionStyle}, [ - $el("label", {style: labelStyle}, ["1️⃣ OpenArt API Key"]), - this.keyInput, - ]); - - // Output Upload Section - const outputUploadSection = $el("div", {style: sectionStyle}, [ - $el("label", { - style: { - ...labelStyle, - margin: "10px 0 0 0" - } - }, ["2️⃣ Image/Thumbnail (Required)"]), - this.previewImage, - this.uploadImagesInput, - ]); - - // Outputs Section - this.outputsSection = $el("div", { - id: "selectOutputs", - }, []); - - // Additional Inputs Section - const additionalInputsSection = $el("div", {style: sectionStyle}, [ - $el("label", {style: labelStyle}, ["3️⃣ Workflow Information"]), - this.NameInput, - this.descriptionInput, - ]); - - // OpenArt Contest Section - /* - this.joinContestCheckbox = $el("input", { - type: 'checkbox', - id: "join_contest"s - }, []) - this.joinContestDescription = $el("a", { - style: { - ...hyperLinkStyle, - display: 'inline-block', - color: "#59E8C6", - fontSize: '12px', - marginLeft: '10px', - marginBottom: 0, - }, - href: "https://contest.openart.ai/", - target: "_blank" - }, ["🏆 I'm participating in the OpenArt workflow contest"]) - this.joinContestLabel = $el("label", { - style: { - display: 'flex', - alignItems: 'center', - cursor: 'pointer', - } - }, [this.joinContestCheckbox, this.joinContestDescription]) - const contestSection = $el("div", {style: sectionStyle}, [ - this.joinContestLabel, - ]); - */ - - // Message Section - this.message = $el( - "div", - { - style: { - color: "#ff3d00", - textAlign: "center", - padding: "10px", - fontSize: "20px", - }, - }, - [] - ); - - this.shareButton = $el("button", { - type: "submit", - textContent: "Share", - style: buttonStyle, - onclick: () => { - this.handleShareButtonClick(); - }, - }); - - // Share and Close Buttons - const buttonsSection = $el( - "div", - { - style: { - textAlign: "right", - marginTop: "20px", - display: "flex", - justifyContent: "space-between", - }, - }, - [ - $el("button", { - type: "button", - textContent: "Close", - style: { - ...buttonStyle, - backgroundColor: undefined, - }, - onclick: () => { - this.close(); - }, - }), - this.shareButton, - ] - ); - - // Composing the full layout - const layout = [ - headerSection, - linkSection, - accountSection, - outputUploadSection, - this.outputsSection, - additionalInputsSection, - // contestSection, - this.message, - buttonsSection, - ]; - - return layout; - } - - async fetchApi(path, options, statusText) { - if (statusText) { - this.message.textContent = statusText; - } - const addSearchParams = (url, params = {}) => - new URL( - `${url.origin}${url.pathname}?${new URLSearchParams([ - ...Array.from(url.searchParams.entries()), - ...Object.entries(params), - ])}` - ); - - const fullPath = addSearchParams(new URL(API_ENDPOINT + path), { - workflow_api_key: this.keyInput.value, - }); - - const response = await fetch(fullPath, options); - - if (!response.ok) { - throw new Error(response.statusText); - } - - if (statusText) { - this.message.textContent = ""; - } - const data = await response.json(); - return { - ok: response.ok, - statusText: response.statusText, - status: response.status, - data, - }; - } - - async uploadThumbnail(uploadFile) { - const form = new FormData(); - form.append("file", uploadFile); - try { - const res = await this.fetchApi( - `/workflows/upload_thumbnail`, - { - method: "POST", - body: form, - }, - "Uploading thumbnail..." - ); - - if (res.ok && res.data) { - const {image_url, width, height} = res.data; - this.uploadedImages.push({ - url: image_url, - width, - height, - }); - } - } catch (e) { - if (e?.response?.status === 413) { - throw new Error("File size is too large (max 20MB)"); - } else { - throw new Error("Error uploading thumbnail: " + e.message); - } - } - } - - async handleShareButtonClick() { - this.message.textContent = ""; - await this.saveKey(this.keyInput.value); - try { - this.shareButton.disabled = true; - this.shareButton.textContent = "Sharing..."; - await this.share(); - } catch (e) { - customAlert(e.message); - } - this.shareButton.disabled = false; - this.shareButton.textContent = "Share"; - } - - async share() { - const prompt = await app.graphToPrompt(); - const workflowJSON = prompt["workflow"]; - const workflowAPIJSON = prompt["output"]; - const form_values = { - name: this.NameInput.value, - description: this.descriptionInput.value, - }; - - if (!this.keyInput.value) { - throw new Error("API key is required"); - } - - if (!this.uploadImagesInput.files[0] && !this.selectedFile) { - throw new Error("Thumbnail is required"); - } - - if (!form_values.name) { - throw new Error("Title is required"); - } - - const current_snapshot = await api.fetchApi(`/snapshot/get_current`) - .then(response => response.json()) - .catch(error => { - // console.log(error); - }); - - - if (!this.uploadedImages.length) { - if (this.selectedFile) { - await this.uploadThumbnail(this.selectedFile); - } else { - for (const file of this.uploadImagesInput.files) { - try { - await this.uploadThumbnail(file); - } catch (e) { - this.uploadedImages = []; - throw new Error(e.message); - } - } - - if (this.uploadImagesInput.files.length === 0) { - throw new Error("No thumbnail uploaded"); - } - } - } - - // const join_contest = this.joinContestCheckbox.checked; - - try { - const response = await this.fetchApi( - "/workflows/publish", - { - method: "POST", - headers: {"Content-Type": "application/json"}, - body: JSON.stringify({ - workflow_json: workflowJSON, - upload_images: this.uploadedImages, - form_values, - advanced_config: { - workflow_api_json: workflowAPIJSON, - snapshot: current_snapshot, - }, - // join_contest, - }), - }, - "Uploading workflow..." - ); - - if (response.ok) { - const {workflow_id} = response.data; - if (workflow_id) { - const url = `https://openart.ai/workflows/-/-/${workflow_id}`; - this.message.innerHTML = `Workflow has been shared successfully. Click here to view it.`; - this.previewImage.src = ""; - this.previewImage.style.display = "none"; - this.uploadedImages = []; - this.NameInput.value = ""; - this.descriptionInput.value = ""; - this.radioButtons.forEach((ele) => { - ele.checked = false; - ele.parentElement.classList.remove("checked"); - }); - this.selectedOutputIndex = 0; - this.selectedNodeId = null; - this.selectedFile = null; - } - } - } catch (e) { - throw new Error("Error sharing workflow: " + e.message); - } - } - - async fetchImageBlob(url) { - const response = await fetch(url); - const blob = await response.blob(); - return blob; - } - - async show({potential_outputs, potential_output_nodes} = {}) { - // Sort `potential_output_nodes` by node ID to make the order always - // consistent, but we should also keep `potential_outputs` in the same - // order as `potential_output_nodes`. - const potential_output_to_order = {}; - potential_output_nodes.forEach((node, index) => { - if (node.id in potential_output_to_order) { - potential_output_to_order[node.id][1].push(potential_outputs[index]); - } else { - potential_output_to_order[node.id] = [node, [potential_outputs[index]]]; - } - }) - // Sort the object `potential_output_to_order` by key (node ID) - const sorted_potential_output_to_order = Object.fromEntries( - Object.entries(potential_output_to_order).sort((a, b) => a[0].id - b[0].id) - ); - const sorted_potential_outputs = [] - const sorted_potential_output_nodes = [] - for (const [key, value] of Object.entries(sorted_potential_output_to_order)) { - sorted_potential_output_nodes.push(value[0]); - sorted_potential_outputs.push(...value[1]); - } - potential_output_nodes = sorted_potential_output_nodes; - potential_outputs = sorted_potential_outputs; - - this.message.innerHTML = ""; - this.message.textContent = ""; - this.element.style.display = "block"; - this.previewImage.src = ""; - this.previewImage.style.display = "none"; - const key = await this.readKey(); - this.keyInput.value = key; - this.uploadedImages = []; - - // If `selectedNodeId` is provided, we will select the corresponding radio - // button for the node. In addition, we move the selected radio button to - // the top of the list. - if (this.selectedNodeId) { - const index = potential_output_nodes.findIndex(node => node.id === this.selectedNodeId); - if (index >= 0) { - this.selectedOutputIndex = index; - } - } - - this.radioButtons = []; - const new_radio_buttons = $el("div", - { - id: "selectOutput-Options", - style: { - 'overflow-y': 'scroll', - 'max-height': '200px', - - 'display': 'grid', - 'grid-template-columns': 'repeat(auto-fit, minmax(100px, 1fr))', - 'grid-template-rows': 'auto', - 'grid-column-gap': '10px', - 'grid-row-gap': '10px', - 'margin-bottom': '10px', - 'padding': '10px', - 'border-radius': '8px', - 'box-shadow': '0 2px 4px rgba(0, 0, 0, 0.05)', - 'background-color': 'var(--bg-color)', - } - }, - potential_outputs.map((output, index) => { - const {node_id} = output; - const radio_button = $el("input", { - type: 'radio', - name: "selectOutputImages", - value: index, - required: index === 0 - }, []) - let radio_button_img; - let filename; - if (output.type === "image" || output.type === "temp") { - radio_button_img = $el("img", { - src: `/view?filename=${output.image.filename}&subfolder=${output.image.subfolder}&type=${output.image.type}`, - style: { - width: "100px", - height: "100px", - objectFit: "cover", - borderRadius: "5px" - } - }, []); - filename = output.image.filename - } else if (output.type === "output") { - radio_button_img = $el("img", { - src: output.output.value, - style: { - width: "auto", - height: "100px", - objectFit: "cover", - borderRadius: "5px" - } - }, []); - filename = output.filename - } else { - // unsupported output type - // this should never happen - // TODO - radio_button_img = $el("img", { - src: "", - style: {width: "auto", height: "100px"} - }, []); - } - const radio_button_text = $el("span", { - style: { - color: 'gray', - display: 'block', - fontSize: '12px', - overflowX: 'hidden', - textOverflow: 'ellipsis', - textWrap: 'nowrap', - maxWidth: '100px', - } - }, [output.title]) - const node_id_chip = $el("span", { - style: { - color: '#FBFBFD', - display: 'block', - backgroundColor: 'rgba(0, 0, 0, 0.5)', - fontSize: '12px', - overflowX: 'hidden', - padding: '2px 3px', - textOverflow: 'ellipsis', - textWrap: 'nowrap', - maxWidth: '100px', - position: 'absolute', - top: '3px', - left: '3px', - borderRadius: '3px', - } - }, [`Node: ${node_id}`]) - radio_button.style.color = "var(--fg-color)"; - radio_button.checked = this.selectedOutputIndex === index; - - radio_button.onchange = async () => { - this.selectedOutputIndex = parseInt(radio_button.value); - - // Remove the "checked" class from all radio buttons - this.radioButtons.forEach((ele) => { - ele.parentElement.classList.remove("checked"); - }); - radio_button.parentElement.classList.add("checked"); - - this.fetchImageBlob(radio_button_img.src).then((blob) => { - const file = new File([blob], filename, { - type: blob.type, - }); - this.previewImage.src = radio_button_img.src; - this.previewImage.style.display = "block"; - this.selectedFile = file; - }) - - // Add the opacity style toggle here to indicate that they only need - // to upload one image or choose one from the outputs. - this.outputsSection.style.opacity = 1; - this.uploadImagesInput.style.opacity = 0.35; - }; - - if (radio_button.checked) { - this.fetchImageBlob(radio_button_img.src).then((blob) => { - const file = new File([blob], filename, { - type: blob.type, - }); - this.previewImage.src = radio_button_img.src; - this.previewImage.style.display = "block"; - this.selectedFile = file; - }) - // Add the opacity style toggle here to indicate that they only need - // to upload one image or choose one from the outputs. - this.outputsSection.style.opacity = 1; - this.uploadImagesInput.style.opacity = 0.35; - } - - this.radioButtons.push(radio_button); - - return $el(`label.output_label${radio_button.checked ? '.checked' : ''}`, { - style: { - display: "flex", - flexDirection: "column", - alignItems: "center", - justifyContent: "center", - marginBottom: "10px", - cursor: "pointer", - position: 'relative', - } - }, [radio_button_img, radio_button_text, radio_button, node_id_chip]); - }) - ); - - const header = - $el("p", { - textContent: this.radioButtons.length === 0 ? "Queue Prompt to see the outputs" : "Or choose one from the outputs (scroll to see all)", - size: 2, - color: "white", - style: { - color: 'var(--input-text)', - margin: '0 0 5px 0', - fontSize: '12px', - }, - }, []) - this.outputsSection.innerHTML = ""; - this.outputsSection.appendChild(header); - this.outputsSection.appendChild(new_radio_buttons); - } -} diff --git a/custom_nodes/comfyui-manager/js/comfyui-share-youml.js b/custom_nodes/comfyui-manager/js/comfyui-share-youml.js deleted file mode 100644 index 1e3a70881b0c38b7068f45be3c6db55add2e24ac..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/comfyui-share-youml.js +++ /dev/null @@ -1,569 +0,0 @@ -import {app} from "../../scripts/app.js"; -import {api} from "../../scripts/api.js"; -import {ComfyDialog, $el} from "../../scripts/ui.js"; -import { customAlert } from "./common.js"; - -const BASE_URL = "https://youml.com"; -//const BASE_URL = "http://localhost:3000"; -const DEFAULT_HOMEPAGE_URL = `${BASE_URL}/?from=comfyui`; -const TOKEN_PAGE_URL = `${BASE_URL}/my-token`; -const API_ENDPOINT = `${BASE_URL}/api`; - -const style = ` - .youml-share-dialog { - overflow-y: auto; - } - .youml-share-dialog .dialog-header { - text-align: center; - color: white; - margin: 0 0 10px 0; - } - .youml-share-dialog .dialog-section { - margin-bottom: 0; - padding: 0; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); - display: flex; - flex-direction: column; - justify-content: center; - } - .youml-share-dialog input, .youml-share-dialog textarea { - display: block; - min-width: 500px; - width: 100%; - padding: 10px; - margin: 10px 0; - border-radius: 4px; - border: 1px solid #ddd; - box-sizing: border-box; - } - .youml-share-dialog textarea { - color: var(--input-text); - background-color: var(--comfy-input-bg); - } - .youml-share-dialog .workflow-description { - min-height: 75px; - } - .youml-share-dialog label { - color: #f8f8f8; - display: block; - margin: 5px 0 0 0; - font-weight: bold; - text-decoration: none; - } - .youml-share-dialog .action-button { - padding: 10px 80px; - margin: 10px 5px; - border-radius: 4px; - border: none; - cursor: pointer; - } - .youml-share-dialog .share-button { - color: #fff; - background-color: #007bff; - } - .youml-share-dialog .close-button { - background-color: none; - } - .youml-share-dialog .action-button-panel { - text-align: right; - display: flex; - justify-content: space-between; - } - .youml-share-dialog .status-message { - color: #fd7909; - text-align: center; - padding: 5px; - font-size: 18px; - } - .youml-share-dialog .status-message a { - color: white; - } - .youml-share-dialog .output-panel { - overflow: auto; - max-height: 180px; - display: grid; - grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); - grid-template-rows: auto; - grid-column-gap: 10px; - grid-row-gap: 10px; - margin-bottom: 10px; - padding: 10px; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); - background-color: var(--bg-color); - } - .youml-share-dialog .output-panel .output-image { - width: 100px; - height: 100px; - objectFit: cover; - borderRadius: 5px; - } - - .youml-share-dialog .output-panel .radio-button { - color:var(--fg-color); - } - .youml-share-dialog .output-panel .radio-text { - color: gray; - display: block; - font-size: 12px; - overflow-x: hidden; - text-overflow: ellipsis; - text-wrap: nowrap; - max-width: 100px; - } - .youml-share-dialog .output-panel .node-id { - color: #FBFBFD; - display: block; - background-color: rgba(0, 0, 0, 0.5); - font-size: 12px; - overflow-x: hidden; - padding: 2px 3px; - text-overflow: ellipsis; - text-wrap: nowrap; - max-width: 100px; - position: absolute; - top: 3px; - left: 3px; - border-radius: 3px; - } - .youml-share-dialog .output-panel .output-label { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - margin-bottom: 10px; - cursor: pointer; - position: relative; - border: 5px solid transparent; - } - .youml-share-dialog .output-panel .output-label:hover { - border: 5px solid #007bff; - } - .youml-share-dialog .output-panel .output-label.checked { - border: 5px solid #007bff; - } - .youml-share-dialog .missing-output-message{ - color: #fd7909; - font-size: 16px; - margin-bottom:10px - } - .youml-share-dialog .select-output-message{ - color: white; - margin-bottom:5px - } -`; - -export class YouMLShareDialog extends ComfyDialog { - static instance = null; - - constructor() { - super(); - $el("style", { - textContent: style, - parent: document.head, - }); - this.element = $el( - "div.comfy-modal.youml-share-dialog", - { - parent: document.body, - }, - [$el("div.comfy-modal-content", {}, [...this.createLayout()])] - ); - this.selectedOutputIndex = 0; - this.selectedNodeId = null; - this.uploadedImages = []; - this.selectedFile = null; - } - - async loadToken() { - let key = "" - try { - const response = await api.fetchApi(`/manager/youml/settings`) - const settings = await response.json() - return settings.token - } catch (error) { - } - return key || ""; - } - - async saveToken(value) { - await api.fetchApi(`/manager/youml/settings`, { - method: 'POST', - headers: {'Content-Type': 'application/json'}, - body: JSON.stringify({ - token: value - }) - }); - } - - createLayout() { - // Header Section - const headerSection = $el("h3.dialog-header", { - textContent: "Share your workflow to YouML.com", - size: 3, - }); - - // Workflow Info Section - this.nameInput = $el("input", { - type: "text", - placeholder: "Name (required)", - }); - this.descriptionInput = $el("textarea.workflow-description", { - placeholder: "Description (optional, markdown supported)", - }); - const workflowMetadata = $el("div.dialog-section", {}, [ - $el("label", {}, ["Workflow info"]), - this.nameInput, - this.descriptionInput, - ]); - - // Outputs Section - this.outputsSection = $el("div.dialog-section", { - id: "selectOutputs", - }, []); - - const outputUploadSection = $el("div.dialog-section", {}, [ - $el("label", {}, ["Thumbnail"]), - this.outputsSection, - ]); - - // API Token Section - this.apiTokenInput = $el("input", { - type: "password", - placeholder: "Copy & paste your API token", - }); - const getAPITokenButton = $el("button", { - href: DEFAULT_HOMEPAGE_URL, - target: "_blank", - onclick: () => window.open(TOKEN_PAGE_URL, "_blank"), - }, ["Get your API Token"]) - - const apiTokenSection = $el("div.dialog-section", {}, [ - $el("label", {}, ["YouML API Token"]), - this.apiTokenInput, - getAPITokenButton, - ]); - - // Message Section - this.message = $el("div.status-message", {}, []); - - // Share and Close Buttons - this.shareButton = $el("button.action-button.share-button", { - type: "submit", - textContent: "Share", - onclick: () => { - this.handleShareButtonClick(); - }, - }); - - const buttonsSection = $el( - "div.action-button-panel", - {}, - [ - $el("button.action-button.close-button", { - type: "button", - textContent: "Close", - onclick: () => { - this.close(); - }, - }), - this.shareButton, - ] - ); - - // Composing the full layout - const layout = [ - headerSection, - workflowMetadata, - outputUploadSection, - apiTokenSection, - this.message, - buttonsSection, - ]; - - return layout; - } - - async fetchYoumlApi(path, options, statusText) { - if (statusText) { - this.message.textContent = statusText; - } - - const fullPath = new URL(API_ENDPOINT + path) - - const fetchOptions = Object.assign({}, options) - - fetchOptions.headers = { - ...fetchOptions.headers, - "Authorization": `Bearer ${this.apiTokenInput.value}`, - "User-Agent": "ComfyUI-Manager-Youml/1.0.0", - } - - const response = await fetch(fullPath, fetchOptions); - - if (!response.ok) { - throw new Error(response.statusText + " " + (await response.text())); - } - - if (statusText) { - this.message.textContent = ""; - } - const data = await response.json(); - return { - ok: response.ok, - statusText: response.statusText, - status: response.status, - data, - }; - } - - async uploadThumbnail(uploadFile, recipeId) { - const form = new FormData(); - form.append("file", uploadFile, uploadFile.name); - try { - const res = await this.fetchYoumlApi( - `/v1/comfy/recipes/${recipeId}/thumbnail`, - { - method: "POST", - body: form, - }, - "Uploading thumbnail..." - ); - - } catch (e) { - if (e?.response?.status === 413) { - throw new Error("File size is too large (max 20MB)"); - } else { - throw new Error("Error uploading thumbnail: " + e.message); - } - } - } - - async handleShareButtonClick() { - this.message.textContent = ""; - await this.saveToken(this.apiTokenInput.value); - try { - this.shareButton.disabled = true; - this.shareButton.textContent = "Sharing..."; - await this.share(); - } catch (e) { - customAlert(e.message); - } finally { - this.shareButton.disabled = false; - this.shareButton.textContent = "Share"; - } - } - - async share() { - const prompt = await app.graphToPrompt(); - const workflowJSON = prompt["workflow"]; - const workflowAPIJSON = prompt["output"]; - const form_values = { - name: this.nameInput.value, - description: this.descriptionInput.value, - }; - - if (!this.apiTokenInput.value) { - throw new Error("API token is required"); - } - - if (!this.selectedFile) { - throw new Error("Thumbnail is required"); - } - - if (!form_values.name) { - throw new Error("Title is required"); - } - - - try { - let snapshotData = null; - try { - const snapshot = await api.fetchApi(`/snapshot/get_current`) - snapshotData = await snapshot.json() - } catch (e) { - console.error("Failed to get snapshot", e) - } - - const request = { - name: this.nameInput.value, - description: this.descriptionInput.value, - workflowUiJson: JSON.stringify(workflowJSON), - workflowApiJson: JSON.stringify(workflowAPIJSON), - } - - if (snapshotData) { - request.snapshotJson = JSON.stringify(snapshotData) - } - - const response = await this.fetchYoumlApi( - "/v1/comfy/recipes", - { - method: "POST", - headers: {"Content-Type": "application/json"}, - body: JSON.stringify(request), - }, - "Uploading workflow..." - ); - - if (response.ok) { - const {id, recipePageUrl, editorPageUrl} = response.data; - if (id) { - let messagePrefix = "Workflow has been shared." - if (this.selectedFile) { - try { - await this.uploadThumbnail(this.selectedFile, id); - } catch (e) { - console.error("Thumbnail upload failed: ", e); - messagePrefix = "Workflow has been shared, but thumbnail upload failed. You can create a thumbnail on YouML later." - } - } - this.message.innerHTML = `${messagePrefix} To turn your workflow into an interactive app, ` + - `visit it on YouML`; - - this.uploadedImages = []; - this.nameInput.value = ""; - this.descriptionInput.value = ""; - this.radioButtons.forEach((ele) => { - ele.checked = false; - ele.parentElement.classList.remove("checked"); - }); - this.selectedOutputIndex = 0; - this.selectedNodeId = null; - this.selectedFile = null; - } - } - } catch (e) { - throw new Error("Error sharing workflow: " + e.message); - } - } - - async fetchImageBlob(url) { - const response = await fetch(url); - const blob = await response.blob(); - return blob; - } - - async show(potentialOutputs, potentialOutputNodes) { - const potentialOutputsToOrder = {}; - potentialOutputNodes.forEach((node, index) => { - if (node.id in potentialOutputsToOrder) { - potentialOutputsToOrder[node.id][1].push(potentialOutputs[index]); - } else { - potentialOutputsToOrder[node.id] = [node, [potentialOutputs[index]]]; - } - }) - const sortedPotentialOutputsToOrder = Object.fromEntries( - Object.entries(potentialOutputsToOrder).sort((a, b) => a[0].id - b[0].id) - ); - const sortedPotentialOutputs = [] - const sortedPotentiaOutputNodes = [] - for (const [key, value] of Object.entries(sortedPotentialOutputsToOrder)) { - sortedPotentiaOutputNodes.push(value[0]); - sortedPotentialOutputs.push(...value[1]); - } - potentialOutputNodes = sortedPotentiaOutputNodes; - potentialOutputs = sortedPotentialOutputs; - - - // If `selectedNodeId` is provided, we will select the corresponding radio - // button for the node. In addition, we move the selected radio button to - // the top of the list. - if (this.selectedNodeId) { - const index = potentialOutputNodes.findIndex(node => node.id === this.selectedNodeId); - if (index >= 0) { - this.selectedOutputIndex = index; - } - } - - this.radioButtons = []; - const newRadioButtons = $el("div.output-panel", - { - id: "selectOutput-Options", - }, - potentialOutputs.map((output, index) => { - const {node_id: nodeId} = output; - const radioButton = $el("input.radio-button", { - type: "radio", - name: "selectOutputImages", - value: index, - required: index === 0 - }, []) - let radioButtonImage; - let filename; - if (output.type === "image" || output.type === "temp") { - radioButtonImage = $el("img.output-image", { - src: `/view?filename=${output.image.filename}&subfolder=${output.image.subfolder}&type=${output.image.type}`, - }, []); - filename = output.image.filename - } else if (output.type === "output") { - radioButtonImage = $el("img.output-image", { - src: output.output.value, - }, []); - filename = output.output.filename - } else { - radioButtonImage = $el("img.output-image", { - src: "", - }, []); - } - const radioButtonText = $el("span.radio-text", {}, [output.title]) - const nodeIdChip = $el("span.node-id", {}, [`Node: ${nodeId}`]) - radioButton.checked = this.selectedOutputIndex === index; - - radioButton.onchange = async () => { - this.selectedOutputIndex = parseInt(radioButton.value); - - // Remove the "checked" class from all radio buttons - this.radioButtons.forEach((ele) => { - ele.parentElement.classList.remove("checked"); - }); - radioButton.parentElement.classList.add("checked"); - - this.fetchImageBlob(radioButtonImage.src).then((blob) => { - const file = new File([blob], filename, { - type: blob.type, - }); - this.selectedFile = file; - }) - }; - - if (radioButton.checked) { - this.fetchImageBlob(radioButtonImage.src).then((blob) => { - const file = new File([blob], filename, { - type: blob.type, - }); - this.selectedFile = file; - }) - } - - this.radioButtons.push(radioButton); - - return $el(`label.output-label${radioButton.checked ? '.checked' : ''}`, {}, - [radioButtonImage, radioButtonText, radioButton, nodeIdChip]); - }) - ); - - let header; - if (this.radioButtons.length === 0) { - header = $el("div.missing-output-message", {textContent: "Queue Prompt to see the outputs and select a thumbnail"}, []) - } else { - header = $el("div.select-output-message", {textContent: "Choose one from the outputs (scroll to see all)"}, []) - } - - this.outputsSection.innerHTML = ""; - this.outputsSection.appendChild(header); - if (this.radioButtons.length > 0) { - this.outputsSection.appendChild(newRadioButtons); - } - - this.message.innerHTML = ""; - this.message.textContent = ""; - - const token = await this.loadToken(); - this.apiTokenInput.value = token; - this.uploadedImages = []; - - this.element.style.display = "block"; - } -} diff --git a/custom_nodes/comfyui-manager/js/common.js b/custom_nodes/comfyui-manager/js/common.js deleted file mode 100644 index 8ae933842ad32f4df293123a716cd7f6650ab4aa..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/common.js +++ /dev/null @@ -1,408 +0,0 @@ -import { app } from "../../scripts/app.js"; -import { api } from "../../scripts/api.js"; -import { $el, ComfyDialog } from "../../scripts/ui.js"; - - -function internalCustomConfirm(message, confirmMessage, cancelMessage) { - return new Promise((resolve) => { - // transparent bg - const modalOverlay = document.createElement('div'); - modalOverlay.style.position = 'fixed'; - modalOverlay.style.top = 0; - modalOverlay.style.left = 0; - modalOverlay.style.width = '100%'; - modalOverlay.style.height = '100%'; - modalOverlay.style.backgroundColor = 'rgba(0, 0, 0, 0.8)'; - modalOverlay.style.display = 'flex'; - modalOverlay.style.alignItems = 'center'; - modalOverlay.style.justifyContent = 'center'; - modalOverlay.style.zIndex = '1101'; - - // Modal window container (dark bg) - const modalDialog = document.createElement('div'); - modalDialog.style.backgroundColor = '#333'; - modalDialog.style.padding = '20px'; - modalDialog.style.borderRadius = '4px'; - modalDialog.style.maxWidth = '400px'; - modalDialog.style.width = '80%'; - modalDialog.style.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.5)'; - modalDialog.style.color = '#fff'; - - // Display message - const modalMessage = document.createElement('p'); - modalMessage.textContent = message; - modalMessage.style.margin = '0'; - modalMessage.style.padding = '0 0 20px'; - modalMessage.style.wordBreak = 'keep-all'; - - // Button container - const modalButtons = document.createElement('div'); - modalButtons.style.display = 'flex'; - modalButtons.style.justifyContent = 'flex-end'; - - // Confirm button (green) - const confirmButton = document.createElement('button'); - if(confirmMessage) - confirmButton.textContent = confirmMessage; - else - confirmButton.textContent = 'Confirm'; - confirmButton.style.marginLeft = '10px'; - confirmButton.style.backgroundColor = '#28a745'; // green - confirmButton.style.color = '#fff'; - confirmButton.style.border = 'none'; - confirmButton.style.padding = '6px 12px'; - confirmButton.style.borderRadius = '4px'; - confirmButton.style.cursor = 'pointer'; - confirmButton.style.fontWeight = 'bold'; - - // Cancel button (red) - const cancelButton = document.createElement('button'); - if(cancelMessage) - cancelButton.textContent = cancelMessage; - else - cancelButton.textContent = 'Cancel'; - - cancelButton.style.marginLeft = '10px'; - cancelButton.style.backgroundColor = '#dc3545'; // red - cancelButton.style.color = '#fff'; - cancelButton.style.border = 'none'; - cancelButton.style.padding = '6px 12px'; - cancelButton.style.borderRadius = '4px'; - cancelButton.style.cursor = 'pointer'; - cancelButton.style.fontWeight = 'bold'; - - const closeModal = () => { - document.body.removeChild(modalOverlay); - }; - - confirmButton.addEventListener('click', () => { - closeModal(); - resolve(true); - }); - - cancelButton.addEventListener('click', () => { - closeModal(); - resolve(false); - }); - - modalButtons.appendChild(confirmButton); - modalButtons.appendChild(cancelButton); - modalDialog.appendChild(modalMessage); - modalDialog.appendChild(modalButtons); - modalOverlay.appendChild(modalDialog); - document.body.appendChild(modalOverlay); - }); -} - -export function show_message(msg) { - app.ui.dialog.show(msg); - app.ui.dialog.element.style.zIndex = 1100; -} - -export async function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -export async function customConfirm(message) { - try { - let res = await - window['app'].extensionManager.dialog - .confirm({ - title: 'Confirm', - message: message - }); - - return res; - } - catch { - let res = await internalCustomConfirm(message); - return res; - } -} - - -export function customAlert(message) { - try { - window['app'].extensionManager.toast.addAlert(message); - } - catch { - alert(message); - } -} - - -export async function customPrompt(title, message) { - try { - let res = await - window['app'].extensionManager.dialog - .prompt({ - title: title, - message: message - }); - - return res; - } - catch { - return prompt(title, message) - } -} - - -export function rebootAPI() { - if ('electronAPI' in window) { - window.electronAPI.restartApp(); - return true; - } - - customConfirm("Are you sure you'd like to reboot the server?").then((isConfirmed) => { - if (isConfirmed) { - try { - api.fetchApi("/manager/reboot"); - } - catch(exception) {} - } - }); - - return false; -} - - -export async function migrateAPI() { - let confirmed = await customConfirm("When performing a migration, existing installed custom nodes will be renamed and the server will be restarted. Are you sure you want to apply this?\n\n(If you don't perform the migration, ComfyUI-Manager's start-up time will be longer each time due to re-checking during startup.)") - if (confirmed) { - try { - await api.fetchApi("/manager/migrate_unmanaged_nodes"); - api.fetchApi("/manager/reboot"); - } - catch(exception) { - - } - return true; - } - - return false; -} - - -export var manager_instance = null; - -export function setManagerInstance(obj) { - manager_instance = obj; -} - -export function showToast(message, duration = 3000) { - const toast = $el("div.comfy-toast", {textContent: message}); - document.body.appendChild(toast); - setTimeout(() => { - toast.classList.add("comfy-toast-fadeout"); - setTimeout(() => toast.remove(), 500); - }, duration); -} - -function isValidURL(url) { - if(url.includes('&')) - return false; - - const http_pattern = /^(https?|ftp):\/\/[^\s$?#]+$/; - const ssh_pattern = /^(.+@|ssh:\/\/).+:.+$/; - return http_pattern.test(url) || ssh_pattern.test(url); -} - -export async function install_pip(packages) { - if(packages.includes('&')) - app.ui.dialog.show(`Invalid PIP package enumeration: '${packages}'`); - - const res = await api.fetchApi("/customnode/install/pip", { - method: "POST", - body: packages, - }); - - if(res.status == 403) { - show_message('This action is not allowed with this security level configuration.'); - return; - } - - if(res.status == 200) { - show_message(`PIP package installation is processed.
To apply the pip packages, please click the button in ComfyUI.`); - - const rebootButton = document.getElementById('cm-reboot-button3'); - const self = this; - - rebootButton.addEventListener("click", rebootAPI); - } - else { - show_message(`Failed to install '${packages}'
See terminal log.`); - } -} - -export async function install_via_git_url(url, manager_dialog) { - if(!url) { - return; - } - - if(!isValidURL(url)) { - show_message(`Invalid Git url '${url}'`); - return; - } - - show_message(`Wait...

Installing '${url}'`); - - const res = await api.fetchApi("/customnode/install/git_url", { - method: "POST", - body: url, - }); - - if(res.status == 403) { - show_message('This action is not allowed with this security level configuration.'); - return; - } - - if(res.status == 200) { - show_message(`'${url}' is installed
To apply the installed custom node, please ComfyUI.`); - - const rebootButton = document.getElementById('cm-reboot-button4'); - const self = this; - - rebootButton.addEventListener("click", - function() { - if(rebootAPI()) { - manager_dialog.close(); - } - }); - } - else { - show_message(`Failed to install '${url}'
See terminal log.`); - } -} - -export async function free_models(free_execution_cache) { - try { - let mode = ""; - if(free_execution_cache) { - mode = '{"unload_models": true, "free_memory": true}'; - } - else { - mode = '{"unload_models": true}'; - } - - let res = await api.fetchApi(`/free`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: mode - }); - - if (res.status == 200) { - if(free_execution_cache) { - showToast("'Models' and 'Execution Cache' have been cleared.", 3000); - } - else { - showToast("Models' have been unloaded.", 3000); - } - } else { - showToast('Unloading of models failed. Installed ComfyUI may be an outdated version.', 5000); - } - } catch (error) { - showToast('An error occurred while trying to unload models.', 5000); - } -} - -export function md5(inputString) { - const hc = '0123456789abcdef'; - const rh = n => {let j,s='';for(j=0;j<=3;j++) s+=hc.charAt((n>>(j*8+4))&0x0F)+hc.charAt((n>>(j*8))&0x0F);return s;} - const ad = (x,y) => {let l=(x&0xFFFF)+(y&0xFFFF);let m=(x>>16)+(y>>16)+(l>>16);return (m<<16)|(l&0xFFFF);} - const rl = (n,c) => (n<>>(32-c)); - const cm = (q,a,b,x,s,t) => ad(rl(ad(ad(a,q),ad(x,t)),s),b); - const ff = (a,b,c,d,x,s,t) => cm((b&c)|((~b)&d),a,b,x,s,t); - const gg = (a,b,c,d,x,s,t) => cm((b&d)|(c&(~d)),a,b,x,s,t); - const hh = (a,b,c,d,x,s,t) => cm(b^c^d,a,b,x,s,t); - const ii = (a,b,c,d,x,s,t) => cm(c^(b|(~d)),a,b,x,s,t); - const sb = x => { - let i;const nblk=((x.length+8)>>6)+1;const blks=[];for(i=0;i>2]|=x.charCodeAt(i)<<((i%4)*8);} - blks[i>>2]|=0x80<<((i%4)*8);blks[nblk*16-2]=x.length*8;return blks; - } - let i,x=sb(inputString),a=1732584193,b=-271733879,c=-1732584194,d=271733878,olda,oldb,oldc,oldd; - for(i=0;i { - err = e; - }); - - if (!res) { - return { - status: 400, - error: new Error("Unknown Error") - } - } - - const { status, statusText } = res; - if (err) { - return { - status, - error: err - } - } - - if (status !== 200) { - return { - status, - error: new Error(statusText || "Unknown Error") - } - } - - const data = await res.json(); - if (!data) { - return { - status, - error: new Error(`Failed to load data: ${route}`) - } - } - return { - status, - data - } -} - -export const icons = { - search: '', - extensions: '', - conflicts: '', - passed: '', - download: '' -} - -export function sanitizeHTML(str) { - return str - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/js/components-manager.js b/custom_nodes/comfyui-manager/js/components-manager.js deleted file mode 100644 index 2df75641a19c3add8f0c99a3ad2946cb534b2543..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/components-manager.js +++ /dev/null @@ -1,812 +0,0 @@ -import { app } from "../../scripts/app.js"; -import { api } from "../../scripts/api.js" -import { sleep, show_message, customConfirm, customAlert } from "./common.js"; -import { GroupNodeConfig, GroupNodeHandler } from "../../extensions/core/groupNode.js"; -import { ComfyDialog, $el } from "../../scripts/ui.js"; - -const SEPARATOR = ">" - -let pack_map = {}; -let rpack_map = {}; - -export function getPureName(node) { - // group nodes/ - let category = null; - if(node.category) { - category = node.category.substring(12); - } - else { - category = node.constructor.category?.substring(12); - } - if(category) { - let purename = node.comfyClass.substring(category.length+1); - return purename; - } - else if(node.comfyClass.startsWith('workflow/') || node.comfyClass.startsWith(`workflow${SEPARATOR}`)) { - return node.comfyClass.substring(9); - } - else { - return node.comfyClass; - } -} - -function isValidVersionString(version) { - const versionPattern = /^(\d+)\.(\d+)(\.(\d+))?$/; - - const match = version.match(versionPattern); - - return match !== null && - parseInt(match[1], 10) >= 0 && - parseInt(match[2], 10) >= 0 && - (!match[3] || parseInt(match[4], 10) >= 0); -} - -function register_pack_map(name, data) { - if(data.packname) { - pack_map[data.packname] = name; - rpack_map[name] = data; - } - else { - rpack_map[name] = data; - } -} - -function storeGroupNode(name, data, register=true) { - let extra = app.graph.extra; - if (!extra) app.graph.extra = extra = {}; - let groupNodes = extra.groupNodes; - if (!groupNodes) extra.groupNodes = groupNodes = {}; - groupNodes[name] = data; - - if(register) { - register_pack_map(name, data); - } -} - -export async function load_components() { - let data = await api.fetchApi('/manager/component/loads', {method: "POST"}); - let components = await data.json(); - - let start_time = Date.now(); - let failed = []; - let failed2 = []; - - for(let name in components) { - if(app.graph.extra?.groupNodes?.[name]) { - if(data) { - let data = components[name]; - - let category = data.packname; - if(data.category) { - category += SEPARATOR + data.category; - } - if(category == '') { - category = 'components'; - } - - const config = new GroupNodeConfig(name, data); - await config.registerType(category); - - register_pack_map(name, data); - continue; - } - } - - let nodeData = components[name]; - - storeGroupNode(name, nodeData); - - const config = new GroupNodeConfig(name, nodeData); - - while(true) { - try { - let category = nodeData.packname; - if(nodeData.category) { - category += SEPARATOR + nodeData.category; - } - if(category == '') { - category = 'components'; - } - - await config.registerType(category); - register_pack_map(name, nodeData); - break; - } - catch { - let elapsed_time = Date.now() - start_time; - if (elapsed_time > 5000) { - failed.push(name); - break; - } else { - await sleep(100); - } - } - } - } - - // fallback1 - for(let i in failed) { - let name = failed[i]; - - if(app.graph.extra?.groupNodes?.[name]) { - continue; - } - - let nodeData = components[name]; - - storeGroupNode(name, nodeData); - - const config = new GroupNodeConfig(name, nodeData); - while(true) { - try { - let category = nodeData.packname; - if(nodeData.workflow.category) { - category += SEPARATOR + nodeData.category; - } - if(category == '') { - category = 'components'; - } - - await config.registerType(category); - register_pack_map(name, nodeData); - break; - } - catch { - let elapsed_time = Date.now() - start_time; - if (elapsed_time > 10000) { - failed2.push(name); - break; - } else { - await sleep(100); - } - } - } - } - - // fallback2 - for(let name in failed2) { - let name = failed2[i]; - - let nodeData = components[name]; - - storeGroupNode(name, nodeData); - - const config = new GroupNodeConfig(name, nodeData); - while(true) { - try { - let category = nodeData.workflow.packname; - if(nodeData.workflow.category) { - category += SEPARATOR + nodeData.category; - } - if(category == '') { - category = 'components'; - } - - await config.registerType(category); - register_pack_map(name, nodeData); - break; - } - catch { - let elapsed_time = Date.now() - start_time; - if (elapsed_time > 30000) { - failed.push(name); - break; - } else { - await sleep(100); - } - } - } - } -} - -async function save_as_component(node, version, author, prefix, nodename, packname, category) { - let component_name = `${prefix}::${nodename}`; - - let subgraph = app.graph.extra?.groupNodes?.[component_name]; - if(!subgraph) { - subgraph = app.graph.extra?.groupNodes?.[getPureName(node)]; - } - - subgraph.version = version; - subgraph.author = author; - subgraph.datetime = Date.now(); - subgraph.packname = packname; - subgraph.category = category; - - let body = - { - name: component_name, - workflow: subgraph - }; - - pack_map[packname] = component_name; - rpack_map[component_name] = subgraph; - - const res = await api.fetchApi('/manager/component/save', { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(body), - }); - - if(res.status == 200) { - storeGroupNode(component_name, subgraph); - const config = new GroupNodeConfig(component_name, subgraph); - - let category = body.workflow.packname; - if(body.workflow.category) { - category += SEPARATOR + body.workflow.category; - } - if(category == '') { - category = 'components'; - } - - await config.registerType(category); - - let path = await res.text(); - show_message(`Component '${component_name}' is saved into:\n${path}`); - } - else - show_message(`Failed to save component.`); -} - -async function import_component(component_name, component, mode) { - if(mode) { - let body = - { - name: component_name, - workflow: component - }; - - const res = await api.fetchApi('/manager/component/save', { - method: "POST", - headers: { "Content-Type": "application/json", }, - body: JSON.stringify(body) - }); - } - - let category = component.packname; - if(component.category) { - category += SEPARATOR + component.category; - } - if(category == '') { - category = 'components'; - } - - storeGroupNode(component_name, component); - const config = new GroupNodeConfig(component_name, component); - await config.registerType(category); -} - -function restore_to_loaded_component(component_name) { - if(rpack_map[component_name]) { - let component = rpack_map[component_name]; - storeGroupNode(component_name, component, false); - const config = new GroupNodeConfig(component_name, component); - config.registerType(component.category); - } -} - -// Using a timestamp prevents duplicate pastes and ensures the prevention of re-deletion of litegrapheditor_clipboard. -let last_paste_timestamp = null; - -function versionCompare(v1, v2) { - let ver1; - let ver2; - if(v1 && v1 != '') { - ver1 = v1.split('.'); - ver1[0] = parseInt(ver1[0]); - ver1[1] = parseInt(ver1[1]); - if(ver1.length == 2) - ver1.push(0); - else - ver1[2] = parseInt(ver2[2]); - } - else { - ver1 = [0,0,0]; - } - - if(v2 && v2 != '') { - ver2 = v2.split('.'); - ver2[0] = parseInt(ver2[0]); - ver2[1] = parseInt(ver2[1]); - if(ver2.length == 2) - ver2.push(0); - else - ver2[2] = parseInt(ver2[2]); - } - else { - ver2 = [0,0,0]; - } - - if(ver1[0] > ver2[0]) - return -1; - else if(ver1[0] < ver2[0]) - return 1; - - if(ver1[1] > ver2[1]) - return -1; - else if(ver1[1] < ver2[1]) - return 1; - - if(ver1[2] > ver2[2]) - return -1; - else if(ver1[2] < ver2[2]) - return 1; - - return 0; -} - -function checkVersion(name, component) { - let msg = ''; - if(rpack_map[name]) { - let old_version = rpack_map[name].version; - if(!old_version || old_version == '') { - msg = ` '${name}' Upgrade (V0.0 -> V${component.version})`; - } - else { - let c = versionCompare(old_version, component.version); - if(c < 0) { - msg = ` '${name}' Downgrade (V${old_version} -> V${component.version})`; - } - else if(c > 0) { - msg = ` '${name}' Upgrade (V${old_version} -> V${component.version})`; - } - else { - msg = ` '${name}' Same version (V${component.version})`; - } - } - } - else { - msg = `'${name}' NEW (V${component.version})`; - } - - return msg; -} - -async function handle_import_components(components) { - let msg = 'Components:\n'; - let cnt = 0; - for(let name in components) { - let component = components[name]; - let v = checkVersion(name, component); - - if(cnt < 10) { - msg += v + '\n'; - } - else if (cnt == 10) { - msg += '...\n'; - } - else { - // do nothing - } - - cnt++; - } - - let last_name = null; - msg += '\nWill you load components?\n'; - const confirmed = await customConfirm(msg); - if(confirmed) { - const mode = await customConfirm('\nWill you save components?\n(cancel=load without save)'); - - for(let name in components) { - let component = components[name]; - import_component(name, component, mode); - last_name = name; - } - - if(mode) { - show_message('Components are saved.'); - } - else { - show_message('Components are loaded.'); - } - } - - if(cnt == 1 && last_name) { - const node = LiteGraph.createNode(`workflow${SEPARATOR}${last_name}`); - node.pos = [app.canvas.graph_mouse[0], app.canvas.graph_mouse[1]]; - app.canvas.graph.add(node, false); - } -} - -async function handlePaste(e) { - let data = (e.clipboardData || window.clipboardData); - const items = data.items; - for(const item of items) { - if(item.kind == 'string' && item.type == 'text/plain') { - data = data.getData("text/plain"); - try { - let json_data = JSON.parse(data); - if(json_data.kind == 'ComfyUI Components' && last_paste_timestamp != json_data.timestamp) { - last_paste_timestamp = json_data.timestamp; - await handle_import_components(json_data.components); - - // disable paste node - localStorage.removeItem("litegrapheditor_clipboard", null); - } - else { - console.log('This components are already pasted: ignored'); - } - } - catch { - // nothing to do - } - } - } -} - -document.addEventListener("paste", handlePaste); - - -export class ComponentBuilderDialog extends ComfyDialog { - constructor() { - super(); - } - - clear() { - while (this.element.children.length) { - this.element.removeChild(this.element.children[0]); - } - } - - show() { - this.invalidateControl(); - - this.element.style.display = "block"; - this.element.style.zIndex = 1099; - this.element.style.width = "500px"; - this.element.style.height = "480px"; - } - - invalidateControl() { - this.clear(); - - let self = this; - - const close_button = $el("button", { id: "cm-close-button", type: "button", textContent: "Close", onclick: () => self.close() }); - this.save_button = $el("button", - { id: "cm-save-button", type: "button", textContent: "Save", onclick: () => - { - save_as_component(self.target_node, self.version_string.value.trim(), self.author.value.trim(), self.node_prefix.value.trim(), - self.getNodeName(), self.getPackName(), self.category.value.trim()); - } - }); - - let default_nodename = getPureName(this.target_node).trim(); - - let groupNode = app.graph.extra.groupNodes[default_nodename]; - let default_packname = groupNode.packname; - if(!default_packname) { - default_packname = ''; - } - - let default_category = groupNode.category; - if(!default_category) { - default_category = ''; - } - - this.default_ver = groupNode.version; - if(!this.default_ver) { - this.default_ver = '0.0'; - } - - let default_author = groupNode.author; - if(!default_author) { - default_author = ''; - } - - let delimiterIndex = default_nodename.indexOf('::'); - let default_prefix = ""; - if(delimiterIndex != -1) { - default_prefix = default_nodename.substring(0, delimiterIndex); - default_nodename = default_nodename.substring(delimiterIndex + 2); - } - - if(!default_prefix) { - this.save_button.disabled = true; - } - - this.pack_list = this.createPackListCombo(); - - let version_string = this.createLabeledInput('input version (e.g. 1.0)', '*Version : ', this.default_ver); - this.version_string = version_string[1]; - this.version_string.disabled = true; - - let author = this.createLabeledInput('input author (e.g. Dr.Lt.Data)', 'Author : ', default_author); - this.author = author[1]; - - let node_prefix = this.createLabeledInput('input node prefix (e.g. mypack)', '*Prefix : ', default_prefix); - this.node_prefix = node_prefix[1]; - - let manual_nodename = this.createLabeledInput('input node name (e.g. MAKE_BASIC_PIPE)', 'Nodename : ', default_nodename); - this.manual_nodename = manual_nodename[1]; - - let manual_packname = this.createLabeledInput('input pack name (e.g. mypack)', 'Packname : ', default_packname); - this.manual_packname = manual_packname[1]; - - let category = this.createLabeledInput('input category (e.g. util/pipe)', 'Category : ', default_category); - this.category = category[1]; - - this.node_label = this.createNodeLabel(); - - let author_mode = this.createAuthorModeCheck(); - this.author_mode = author_mode[0]; - - const content = - $el("div.comfy-modal-content", - [ - $el("tr.cm-title", {}, [ - $el("font", {size:6, color:"white"}, [`ComfyUI-Manager: Component Builder`])] - ), - $el("br", {}, []), - $el("div.cm-menu-container", - [ - author_mode[0], - author_mode[1], - category[0], - author[0], - node_prefix[0], - manual_nodename[0], - manual_packname[0], - version_string[0], - this.pack_list, - $el("br", {}, []), - this.node_label - ]), - - $el("br", {}, []), - this.save_button, - close_button, - ] - ); - - content.style.width = '100%'; - content.style.height = '100%'; - - this.element = $el("div.comfy-modal", { id:'cm-manager-dialog', parent: document.body }, [ content ]); - } - - validateInput() { - let msg = ""; - - if(!isValidVersionString(this.version_string.value)) { - msg += 'Invalid version string: '+event.value+"\n"; - } - - if(this.node_prefix.value.trim() == '') { - msg += 'Node prefix cannot be empty\n'; - } - - if(this.manual_nodename.value.trim() == '') { - msg += 'Node name cannot be empty\n'; - } - - if(msg != '') { -// alert(msg); - } - - this.save_button.disabled = msg != ""; - } - - getPackName() { - if(this.pack_list.selectedIndex == 0) { - return this.manual_packname.value.trim(); - } - - return this.pack_list.value.trim(); - } - - getNodeName() { - if(this.manual_nodename.value.trim() != '') { - return this.manual_nodename.value.trim(); - } - - return getPureName(this.target_node); - } - - createAuthorModeCheck() { - let check = $el("input",{type:'checkbox', id:"author-mode"},[]) - const check_label = $el("label",{for:"author-mode"},["Enable author mode"]); - check_label.style.color = "var(--fg-color)"; - check_label.style.cursor = "pointer"; - check.checked = false; - - let self = this; - check.onchange = () => { - self.version_string.disabled = !check.checked; - - if(!check.checked) { - self.version_string.value = self.default_ver; - } - else { - customAlert('If you are not the author, it is not recommended to change the version, as it may cause component update issues.'); - } - }; - - return [check, check_label]; - } - - createNodeLabel() { - let label = $el('p'); - label.className = 'cb-node-label'; - if(this.target_node.comfyClass.includes('::')) - label.textContent = getPureName(this.target_node); - else - label.textContent = " _::" + getPureName(this.target_node); - return label; - } - - createLabeledInput(placeholder, label, value) { - let textbox = $el('input.cb-widget-input', {type:'text', placeholder:placeholder, value:value}, []); - - let self = this; - textbox.onchange = () => { - this.validateInput.call(self); - this.node_label.textContent = this.node_prefix.value + "::" + this.manual_nodename.value; - } - let row = $el('span.cb-widget', {}, [ $el('span.cb-widget-input-label', label), textbox]); - - return [row, textbox]; - } - - createPackListCombo() { - let combo = document.createElement("select"); - combo.className = "cb-widget"; - let default_packname_option = { value: '##manual', text: 'Packname: Manual' }; - - combo.appendChild($el('option', default_packname_option, [])); - for(let name in pack_map) { - combo.appendChild($el('option', { value: name, text: 'Packname: '+ name }, [])); - } - - let self = this; - combo.onchange = function () { - if(combo.selectedIndex == 0) { - self.manual_packname.disabled = false; - } - else { - self.manual_packname.disabled = true; - } - }; - - return combo; - } -} - -let orig_handleFile = app.handleFile; - -async function handleFile(file) { - if (file.name?.endsWith(".json") || file.name?.endsWith(".pack")) { - const reader = new FileReader(); - reader.onload = async () => { - let is_component = false; - const jsonContent = JSON.parse(reader.result); - for(let name in jsonContent) { - let cand = jsonContent[name]; - is_component = cand.datetime && cand.version; - break; - } - - if(is_component) { - await handle_import_components(jsonContent); - } - else { - orig_handleFile.call(app, file); - } - }; - reader.readAsText(file); - - return; - } - - orig_handleFile.call(app, file); -} - -app.handleFile = handleFile; - -let current_component_policy = 'workflow'; -try { - api.fetchApi('/manager/component/policy') - .then(response => response.text()) - .then(data => { current_component_policy = data; }); -} -catch {} - -function getChangedVersion(groupNodes) { - if(!Object.keys(pack_map).length || !groupNodes) - return null; - - let res = {}; - for(let component_name in groupNodes) { - let data = groupNodes[component_name]; - - if(rpack_map[component_name]) { - let v = versionCompare(data.version, rpack_map[component_name].version); - res[component_name] = v; - } - } - - return res; -} - -const loadGraphData = app.loadGraphData; -app.loadGraphData = async function () { - if(arguments.length == 0) - return await loadGraphData.apply(this, arguments); - - let graphData = arguments[0]; - let groupNodes = graphData.extra?.groupNodes; - let res = getChangedVersion(groupNodes); - - if(res) { - let target_components = null; - switch(current_component_policy) { - case 'higher': - target_components = Object.keys(res).filter(key => res[key] == 1); - break; - - case 'mine': - target_components = Object.keys(res); - break; - - default: - // do nothing - } - - if(target_components) { - for(let i in target_components) { - let component_name = target_components[i]; - let component = rpack_map[component_name]; - if(component && graphData.extra?.groupNodes) { - graphData.extra.groupNodes[component_name] = component; - } - } - } - } - else { - console.log('Empty components: policy ignored'); - } - - arguments[0] = graphData; - return await loadGraphData.apply(this, arguments); -}; - -export function set_component_policy(v) { - current_component_policy = v; -} - -let graphToPrompt = app.graphToPrompt; -app.graphToPrompt = async function () { - let p = await graphToPrompt.call(app); - try { - let groupNodes = p.workflow.extra?.groupNodes; - if(groupNodes) { - p.workflow.extra = { ... p.workflow.extra}; - - // get used group nodes - let used_group_nodes = new Set(); - for(let node of p.workflow.nodes) { - if(node.type.startsWith(`workflow/`) || node.type.startsWith(`workflow${SEPARATOR}`)) { - used_group_nodes.add(node.type.substring(9)); - } - } - - // remove unused group nodes - let new_groupNodes = {}; - for (let key in p.workflow.extra.groupNodes) { - if (used_group_nodes.has(key)) { - new_groupNodes[key] = p.workflow.extra.groupNodes[key]; - } - } - p.workflow.extra.groupNodes = new_groupNodes; - } - } - catch(e) { - console.log(`Failed to filtering group nodes: ${e}`); - } - - return p; -} diff --git a/custom_nodes/comfyui-manager/js/custom-nodes-manager.js b/custom_nodes/comfyui-manager/js/custom-nodes-manager.js deleted file mode 100644 index f1c4a42fdcb6c45d5f37aff76f11cfb770b61f7f..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/custom-nodes-manager.js +++ /dev/null @@ -1,1821 +0,0 @@ -import { app } from "../../scripts/app.js"; -import { ComfyDialog, $el } from "../../scripts/ui.js"; -import { api } from "../../scripts/api.js"; - -import { - manager_instance, rebootAPI, install_via_git_url, - fetchData, md5, icons, show_message, customConfirm, customAlert, customPrompt, sanitizeHTML -} from "./common.js"; - -// https://cenfun.github.io/turbogrid/api.html -import TG from "./turbogrid.esm.js"; - -const pageCss = ` -.cn-manager { - --grid-font: -apple-system, BlinkMacSystemFont, "Segue UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; - z-index: 1099; - width: 80%; - height: 80%; - display: flex; - flex-direction: column; - gap: 10px; - color: var(--fg-color); - font-family: arial, sans-serif; -} - -.cn-manager .cn-flex-auto { - flex: auto; -} - -.cn-manager button { - font-size: 16px; - color: var(--input-text); - background-color: var(--comfy-input-bg); - border-radius: 8px; - border-color: var(--border-color); - border-style: solid; - margin: 0; - padding: 4px 8px; - min-width: 100px; -} - -.cn-manager button:disabled, -.cn-manager input:disabled, -.cn-manager select:disabled { - color: gray; -} - -.cn-manager button:disabled { - background-color: var(--comfy-input-bg); -} - -.cn-manager .cn-manager-restart { - display: none; - background-color: #500000; - color: white; -} - -.cn-manager .cn-manager-back { - align-items: center; - justify-content: center; -} - -.arrow-icon { - height: 1em; - width: 1em; - margin-right: 5px; - transform: translateY(2px); -} - -.cn-manager-header { - display: flex; - flex-wrap: wrap; - gap: 5px; - align-items: center; - padding: 0 5px; -} - -.cn-manager-header label { - display: flex; - gap: 5px; - align-items: center; -} - -.cn-manager-filter { - height: 28px; - line-height: 28px; -} - -.cn-manager-keywords { - height: 28px; - line-height: 28px; - padding: 0 5px 0 26px; - background-size: 16px; - background-position: 5px center; - background-repeat: no-repeat; - background-image: url("data:image/svg+xml;charset=utf8,${encodeURIComponent(icons.search.replace("currentColor", "#888"))}"); -} - -.cn-manager-status { - padding-left: 10px; -} - -.cn-manager-grid { - flex: auto; - border: 1px solid var(--border-color); - overflow: hidden; -} - -.cn-manager-selection { - display: flex; - flex-wrap: wrap; - gap: 10px; - align-items: center; -} - -.cn-manager-message { - -} - -.cn-manager-footer { - display: flex; - flex-wrap: wrap; - gap: 10px; - align-items: center; -} - -.cn-manager-grid .tg-turbogrid { - font-family: var(--grid-font); - font-size: 15px; - background: var(--bg-color); -} - -.cn-manager-grid .cn-node-name a { - color: skyblue; - text-decoration: none; - word-break: break-word; -} - -.cn-manager-grid .cn-node-desc a { - color: #5555FF; - font-weight: bold; - text-decoration: none; -} - -.cn-manager-grid .tg-cell a:hover { - text-decoration: underline; -} - -.cn-manager-grid .cn-extensions-button, -.cn-manager-grid .cn-conflicts-button { - display: inline-block; - width: 20px; - height: 20px; - color: green; - border: none; - padding: 0; - margin: 0; - background: none; - min-width: 20px; -} - -.cn-manager-grid .cn-conflicts-button { - color: orange; -} - -.cn-manager-grid .cn-extensions-list, -.cn-manager-grid .cn-conflicts-list { - line-height: normal; - text-align: left; - max-height: 80%; - min-height: 200px; - min-width: 300px; - overflow-y: auto; - font-size: 12px; - border-radius: 5px; - padding: 10px; - filter: drop-shadow(2px 5px 5px rgb(0 0 0 / 30%)); - white-space: normal; -} - -.cn-manager-grid .cn-extensions-list { - border-color: var(--bg-color); -} - -.cn-manager-grid .cn-conflicts-list { - background-color: #CCCC55; - color: #AA3333; -} - -.cn-manager-grid .cn-extensions-list h3, -.cn-manager-grid .cn-conflicts-list h3 { - margin: 0; - padding: 5px 0; - color: #000; -} - -.cn-tag-list { - display: flex; - flex-wrap: wrap; - gap: 5px; - align-items: center; - margin-bottom: 5px; -} - -.cn-tag-list > div { - background-color: var(--border-color); - border-radius: 5px; - padding: 0 5px; -} - -.cn-install-buttons { - display: flex; - flex-direction: column; - gap: 3px; - padding: 3px; - align-items: center; - justify-content: center; - height: 100%; -} - -.cn-selected-buttons { - display: flex; - gap: 5px; - align-items: center; - padding-right: 20px; -} - -.cn-manager .cn-btn-enable { - background-color: #333399; - color: white; -} - -.cn-manager .cn-btn-disable { - background-color: #442277; - color: white; -} - -.cn-manager .cn-btn-update { - background-color: #1155AA; - color: white; -} - -.cn-manager .cn-btn-try-update { - background-color: Gray; - color: white; -} - -.cn-manager .cn-btn-try-fix { - background-color: #6495ED; - color: white; -} - -.cn-manager .cn-btn-import-failed { - background-color: #AA1111; - font-size: 10px; - font-weight: bold; - color: white; -} - -.cn-manager .cn-btn-install { - background-color: black; - color: white; -} - -.cn-manager .cn-btn-try-install { - background-color: Gray; - color: white; -} - -.cn-manager .cn-btn-uninstall { - background-color: #993333; - color: white; -} - -.cn-manager .cn-btn-reinstall { - background-color: #993333; - color: white; -} - -.cn-manager .cn-btn-switch { - background-color: #448833; - color: white; - -} - -@keyframes cn-btn-loading-bg { - 0% { - left: 0; - } - 100% { - left: -105px; - } -} - -.cn-manager button.cn-btn-loading { - position: relative; - overflow: hidden; - border-color: rgb(0 119 207 / 80%); - background-color: var(--comfy-input-bg); -} - -.cn-manager button.cn-btn-loading::after { - position: absolute; - top: 0; - left: 0; - content: ""; - width: 500px; - height: 100%; - background-image: repeating-linear-gradient( - -45deg, - rgb(0 119 207 / 30%), - rgb(0 119 207 / 30%) 10px, - transparent 10px, - transparent 15px - ); - animation: cn-btn-loading-bg 2s linear infinite; -} - -.cn-manager-light .cn-node-name a { - color: blue; -} - -.cn-manager-light .cm-warn-note { - background-color: #ccc !important; -} - -.cn-manager-light .cn-btn-install { - background-color: #333; -} - -`; - -const pageHtml = ` -
- - -
-
-
-
-
-
-
- -`; - -const ShowMode = { - NORMAL: "Normal", - UPDATE: "Update", - MISSING: "Missing", - FAVORITES: "Favorites", - ALTERNATIVES: "Alternatives" -}; - -export class CustomNodesManager { - static instance = null; - static ShowMode = ShowMode; - - constructor(app, manager_dialog) { - this.app = app; - this.manager_dialog = manager_dialog; - this.id = "cn-manager"; - - app.registerExtension({ - name: "Comfy.CustomNodesManager", - afterConfigureGraph: (missingNodeTypes) => { - const item = this.getFilterItem(ShowMode.MISSING); - if (item) { - item.hasData = false; - item.hashMap = null; - } - } - }); - - this.filter = ''; - this.keywords = ''; - this.restartMap = {}; - - this.init(); - } - - init() { - if (!document.querySelector(`style[context="${this.id}"]`)) { - const $style = document.createElement("style"); - $style.setAttribute("context", this.id); - $style.innerHTML = pageCss; - document.head.appendChild($style); - } - - this.element = $el("div", { - parent: document.body, - className: "comfy-modal cn-manager" - }); - this.element.innerHTML = pageHtml; - this.initFilter(); - this.bindEvents(); - this.initGrid(); - } - - showVersionSelectorDialog(versions, onSelect) { - const dialog = new ComfyDialog(); - dialog.element.style.zIndex = 1100; - dialog.element.style.width = "300px"; - dialog.element.style.padding = "0"; - dialog.element.style.backgroundColor = "#2a2a2a"; - dialog.element.style.border = "1px solid #3a3a3a"; - dialog.element.style.borderRadius = "8px"; - dialog.element.style.boxSizing = "border-box"; - dialog.element.style.overflow = "hidden"; - - const contentStyle = { - width: "300px", - display: "flex", - flexDirection: "column", - alignItems: "center", - padding: "20px", - boxSizing: "border-box", - gap: "15px" - }; - - let selectedVersion = versions[0]; - - const versionList = $el("select", { - multiple: true, - size: Math.min(10, versions.length), - style: { - width: "260px", - height: "auto", - backgroundColor: "#383838", - color: "#ffffff", - border: "1px solid #4a4a4a", - borderRadius: "4px", - padding: "5px", - boxSizing: "border-box" - } - }, - versions.map((v, index) => $el("option", { - value: v, - textContent: v, - selected: index === 0 - })) - ); - - versionList.addEventListener('change', (e) => { - selectedVersion = e.target.value; - Array.from(e.target.options).forEach(opt => { - opt.selected = opt.value === selectedVersion; - }); - }); - - const content = $el("div", { - style: contentStyle - }, [ - $el("h3", { - textContent: "Select Version", - style: { - color: "#ffffff", - backgroundColor: "#1a1a1a", - padding: "10px 15px", - margin: "0 0 10px 0", - width: "260px", - textAlign: "center", - borderRadius: "4px", - boxSizing: "border-box", - whiteSpace: "nowrap", - overflow: "hidden", - textOverflow: "ellipsis" - } - }), - versionList, - $el("div", { - style: { - display: "flex", - justifyContent: "space-between", - width: "260px", - gap: "10px" - } - }, [ - $el("button", { - textContent: "Cancel", - onclick: () => dialog.close(), - style: { - flex: "1", - padding: "8px", - backgroundColor: "#4a4a4a", - color: "#ffffff", - border: "none", - borderRadius: "4px", - cursor: "pointer", - whiteSpace: "nowrap", - overflow: "hidden", - textOverflow: "ellipsis" - } - }), - $el("button", { - textContent: "Select", - onclick: () => { - if (selectedVersion) { - onSelect(selectedVersion); - dialog.close(); - } else { - customAlert("Please select a version."); - } - }, - style: { - flex: "1", - padding: "8px", - backgroundColor: "#4CAF50", - color: "#ffffff", - border: "none", - borderRadius: "4px", - cursor: "pointer", - whiteSpace: "nowrap", - overflow: "hidden", - textOverflow: "ellipsis" - } - }), - ]) - ]); - - dialog.show(content); - } - - initFilter() { - const $filter = this.element.querySelector(".cn-manager-filter"); - const filterList = [{ - label: "All", - value: "", - hasData: true - }, { - label: "Installed", - value: "installed", - hasData: true - }, { - label: "Enabled", - value: "enabled", - hasData: true - }, { - label: "Disabled", - value: "disabled", - hasData: true - }, { - label: "Import Failed", - value: "import-fail", - hasData: true - }, { - label: "Not Installed", - value: "not-installed", - hasData: true - }, { - label: "ComfyRegistry", - value: "cnr", - hasData: true - }, { - label: "Non-ComfyRegistry", - value: "unknown", - hasData: true - }, { - label: "Update", - value: ShowMode.UPDATE, - hasData: false - }, { - label: "Missing", - value: ShowMode.MISSING, - hasData: false - }, { - label: "Favorites", - value: ShowMode.FAVORITES, - hasData: false - }, { - label: "Alternatives of A1111", - value: ShowMode.ALTERNATIVES, - hasData: false - }]; - this.filterList = filterList; - $filter.innerHTML = filterList.map(item => { - return `` - }).join(""); - } - - getFilterItem(filter) { - return this.filterList.find(it => it.value === filter) - } - - getActionButtons(action, rowItem, is_selected_button) { - const buttons = { - "enable": { - label: "Enable", - mode: "enable" - }, - "disable": { - label: "Disable", - mode: "disable" - }, - - "update": { - label: "Update", - mode: "update" - }, - "try-update": { - label: "Try update", - mode: "update" - }, - - "try-fix": { - label: "Try fix", - mode: "fix" - }, - - "reinstall": { - label: "Reinstall", - mode: "reinstall" - }, - - "install": { - label: "Install", - mode: "install" - }, - - "try-install": { - label: "Try install", - mode: "install" - }, - - "uninstall": { - label: "Uninstall", - mode: "uninstall" - }, - - "switch": { - label: "Switch Ver", - mode: "switch" - } - } - - const installGroups = { - "disabled": ["enable", "switch", "uninstall"], - "updatable": ["update", "switch", "disable", "uninstall"], - "import-fail": ["try-fix", "switch", "disable", "uninstall"], - "enabled": ["try-update", "switch", "disable", "uninstall"], - "not-installed": ["install"], - 'unknown': ["try-install"], - "invalid-installation": ["reinstall"], - } - - if (!manager_instance.update_check_checkbox.checked) { - installGroups.enabled = installGroups.enabled.filter(it => it !== "try-update"); - } - - if (rowItem?.title === "ComfyUI-Manager") { - installGroups.enabled = installGroups.enabled.filter(it => it !== "disable" && it !== "uninstall" && it !== "switch"); - } - - let list = installGroups[action]; - - if(is_selected_button || rowItem?.version === "unknown") { - list = list.filter(it => it !== "switch"); - } - - if (!list) { - return ""; - } - - return list.map(id => { - const bt = buttons[id]; - return ``; - }).join(""); - } - - getButton(target) { - if(!target) { - return; - } - const mode = target.getAttribute("mode"); - if (!mode) { - return; - } - const group = target.getAttribute("group"); - if (!group) { - return; - } - return { - group, - mode, - target, - label: target.innerText - } - } - - bindEvents() { - const eventsMap = { - ".cn-manager-filter": { - change: (e) => { - - if (this.grid) { - this.grid.selectAll(false); - } - - const value = e.target.value - this.filter = value; - const item = this.getFilterItem(value); - if (item && !item.hasData) { - this.loadData(value); - return; - } - this.updateGrid(); - } - }, - - ".cn-manager-keywords": { - input: (e) => { - const keywords = `${e.target.value}`.trim(); - if (keywords !== this.keywords) { - this.keywords = keywords; - this.updateGrid(); - } - }, - focus: (e) => e.target.select() - }, - - ".cn-manager-selection": { - click: (e) => { - const btn = this.getButton(e.target); - if (btn) { - const nodes = this.selectedMap[btn.group]; - if (nodes) { - this.installNodes(nodes, btn); - } - } - } - }, - - ".cn-manager-back": { - click: (e) => { - this.close() - manager_instance.show(); - } - }, - - ".cn-manager-restart": { - click: () => { - if(rebootAPI()) { - this.close(); - this.manager_dialog.close(); - } - } - }, - - ".cn-manager-check-update": { - click: (e) => { - e.target.classList.add("cn-btn-loading"); - this.setFilter(ShowMode.UPDATE); - this.loadData(ShowMode.UPDATE); - } - }, - - ".cn-manager-check-missing": { - click: (e) => { - e.target.classList.add("cn-btn-loading"); - this.setFilter(ShowMode.MISSING); - this.loadData(ShowMode.MISSING); - } - }, - - ".cn-manager-install-url": { - click: async (e) => { - const url = await customPrompt("Please enter the URL of the Git repository to install", ""); - if (url !== null) { - install_via_git_url(url, this.manager_dialog); - } - } - } - }; - Object.keys(eventsMap).forEach(selector => { - const target = this.element.querySelector(selector); - if (target) { - const events = eventsMap[selector]; - if (events) { - Object.keys(events).forEach(type => { - target.addEventListener(type, events[type]); - }); - } - } - }); - } - - // =========================================================================================== - - initGrid() { - const container = this.element.querySelector(".cn-manager-grid"); - const grid = new TG.Grid(container); - this.grid = grid; - - let prevViewRowsLength = -1; - grid.bind('onUpdated', (e, d) => { - const viewRows = grid.viewRows; - prevViewRowsLength = viewRows.length; - this.showStatus(`${prevViewRowsLength.toLocaleString()} custom nodes`); - }); - - grid.bind('onSelectChanged', (e, changes) => { - this.renderSelected(); - }); - - grid.bind('onClick', (e, d) => { - const btn = this.getButton(d.e.target); - if (btn) { - const item = this.grid.getRowItemBy("hash", d.rowItem.hash); - - const { target, label, mode} = btn; - if((mode === "install" || mode === "switch" || mode == "enable") && item.originalData.version != 'unknown') { - // install after select version via dialog if item is cnr node - this.installNodeWithVersion(d.rowItem, btn, mode == 'enable'); - } - else { - this.installNodes([d.rowItem.hash], btn, d.rowItem.title); - } - } - }); - - grid.setOption({ - theme: 'dark', - selectVisible: true, - selectMultiple: true, - selectAllVisible: true, - - textSelectable: true, - scrollbarRound: true, - - frozenColumn: 1, - rowNotFound: "No Results", - - rowHeight: 40, - bindWindowResize: true, - bindContainerResize: true, - - cellResizeObserver: (rowItem, columnItem) => { - const autoHeightColumns = ['title', 'action', 'description', "alternatives"]; - return autoHeightColumns.includes(columnItem.id) - }, - - // updateGrid handler for filter and keywords - rowFilter: (rowItem) => { - - const searchableColumns = ["title", "author", "description"]; - if (this.hasAlternatives()) { - searchableColumns.push("alternatives"); - } - - let shouldShown = grid.highlightKeywordsFilter(rowItem, searchableColumns, this.keywords); - - if (shouldShown) { - if(this.filter && rowItem.filterTypes) { - shouldShown = rowItem.filterTypes.includes(this.filter); - } - } - - return shouldShown; - } - }); - - } - - hasAlternatives() { - return this.filter === ShowMode.ALTERNATIVES - } - - async handleImportFail(rowItem) { - var info; - if(rowItem.version == 'unknown'){ - info = { - 'url': rowItem.originalData.files[0] - }; - } - else{ - info = { - 'cnr_id': rowItem.originalData.id - }; - } - - const response = await api.fetchApi(`/customnode/import_fail_info`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(info) - }); - - let res = await response.json(); - - let title = `Error message occurred while importing the '${rowItem.title}' module.


` - - if(res.code == 400) - { - show_message(title+'The information is not available.') - } - else { - show_message(title+sanitizeHTML(res['msg']).replace(/ /g, ' ').replace(/\n/g, '
')); - } - } - - renderGrid() { - - // update theme - const colorPalette = this.app.ui.settings.settingsValues['Comfy.ColorPalette']; - Array.from(this.element.classList).forEach(cn => { - if (cn.startsWith("cn-manager-")) { - this.element.classList.remove(cn); - } - }); - this.element.classList.add(`cn-manager-${colorPalette}`); - - const options = { - theme: colorPalette === "light" ? "" : "dark" - }; - - const rows = this.custom_nodes || {}; - for(let nodeKey in rows) { - let item = rows[nodeKey]; - const extensionInfo = this.extension_mappings[nodeKey]; - - if(extensionInfo) { - const { extensions, conflicts } = extensionInfo; - if (extensions.length) { - item.extensions = extensions.length; - item.extensionsList = extensions; - } - if (conflicts) { - item.conflicts = conflicts.length; - item.conflictsList = conflicts; - } - } - } - - let self = this; - const columns = [{ - id: 'id', - name: 'ID', - width: 50, - align: 'center' - }, { - id: 'title', - name: 'Title', - width: 200, - minWidth: 100, - maxWidth: 500, - classMap: 'cn-node-name', - formatter: (title, rowItem, columnItem) => { - const container = document.createElement('div'); - - if (rowItem.action === 'invalid-installation') { - const invalidTag = document.createElement('span'); - invalidTag.style.color = 'red'; - invalidTag.innerHTML = '(INVALID)'; - container.appendChild(invalidTag); - } else if (rowItem.action === 'import-fail') { - const button = document.createElement('button'); - button.className = 'cn-btn-import-failed'; - button.innerText = 'IMPORT FAILED ↗'; - button.onclick = () => self.handleImportFail(rowItem); - container.appendChild(button); - container.appendChild(document.createElement('br')); - } - - const link = document.createElement('a'); - if(rowItem.originalData.repository) - link.href = rowItem.originalData.repository; - else - link.href = rowItem.reference; - link.target = '_blank'; - link.innerHTML = `${title}`; - container.appendChild(link); - - return container; - } - }, { - id: 'version', - name: 'Version', - width: 200, - minWidth: 100, - maxWidth: 500, - classMap: 'cn-node-desc', - formatter: (version, rowItem, columnItem) => { - if(version == undefined) { - return `undef`; - } - else { - if(rowItem.cnr_latest && version != rowItem.cnr_latest) { - if(version == 'nightly') { - return `${version} [${rowItem.cnr_latest}]`; - } - else { - return `${version} [↑${rowItem.cnr_latest}]`; - } - } - else { - return `${version}`; - } - } - } - }, { - id: 'action', - name: 'Action', - width: 130, - minWidth: 110, - maxWidth: 200, - sortable: false, - align: 'center', - formatter: (action, rowItem, columnItem) => { - if (rowItem.restart) { - return `Restart Required`; - } - const buttons = this.getActionButtons(action, rowItem); - return `
${buttons}
`; - } - }, { - id: "alternatives", - name: "Alternatives", - width: 400, - maxWidth: 5000, - invisible: !this.hasAlternatives(), - classMap: 'cn-node-desc' - }, { - id: 'description', - name: 'Description', - width: 400, - maxWidth: 5000, - classMap: 'cn-node-desc' - }, { - id: "extensions", - name: "Extensions", - width: 80, - align: 'center', - formatter: (extensions, rowItem, columnItem) => { - const extensionsList = rowItem.extensionsList; - if (!extensionsList) { - return; - } - const list = []; - const eId = `popover_extensions_${columnItem.id}_${rowItem.tg_index}`; - list.push(``) - list.push(`
`) - list.push(`

【${rowItem.title}】Extension Nodes (${extensionsList.length})

`); - extensionsList.forEach(en => { - list.push(`
  • ${en}
  • `); - }) - list.push("
    "); - return list.join(""); - } - }, { - id: "conflicts", - name: "Conflicts", - width: 80, - align: 'center', - formatter: (conflicts, rowItem, columnItem) => { - const conflictsList = rowItem.conflictsList; - if (!conflictsList) { - return; - } - const list = []; - const cId = `popover_conflicts_${columnItem.id}_${rowItem.tg_index}`; - list.push(``) - list.push(`
    `) - list.push(`

    【${rowItem.title}】Conflicted Nodes (${conflictsList.length})

    `); - conflictsList.forEach(en => { - let [node_name, extension_name] = en; - extension_name = extension_name.split('/').filter(it => it).pop(); - if(extension_name.endsWith('.git')) { - extension_name = extension_name.slice(0, -4); - } - list.push(`
  • ${node_name} [${extension_name}]
  • `); - }) - list.push("
    "); - return list.join(""); - } - }, { - id: 'author', - name: 'Author', - width: 120, - classMap: "cn-node-author", - formatter: (author, rowItem, columnItem) => { - if (rowItem.trust) { - return `✅ ${author}`; - } - return author; - } - }, { - id: 'stars', - name: '★', - align: 'center', - classMap: "cn-node-stars", - formatter: (stars) => { - if (stars < 0) { - return 'N/A'; - } - if (typeof stars === 'number') { - return stars.toLocaleString(); - } - return stars; - } - }, { - id: 'last_update', - name: 'Last Update', - align: 'center', - type: 'date', - width: 100, - classMap: "cn-node-last-update", - formatter: (last_update) => { - if (last_update < 0) { - return 'N/A'; - } - return `${last_update}`.split(' ')[0]; - } - }]; - - let rows_values = Object.keys(rows).map(key => rows[key]); - - rows_values = - rows_values.sort((a, b) => { - if (a.version == 'unknown' && b.version != 'unknown') return 1; - if (a.version != 'unknown' && b.version == 'unknown') return -1; - - if (a.stars !== b.stars) { - return b.stars - a.stars; - } - - if (a.last_update !== b.last_update) { - return new Date(b.last_update) - new Date(a.last_update); - } - - return 0; - }); - - this.grid.setData({ - options: options, - rows: rows_values, - columns: columns - }); - - for(let i=0; i { - let type = item.action; - if (item.restart) { - type = "Restart Required"; - } - if (selectedMap[type]) { - selectedMap[type].push(item.hash); - } else { - selectedMap[type] = [item.hash]; - } - }); - - this.selectedMap = selectedMap; - - const list = []; - Object.keys(selectedMap).forEach(v => { - const filterItem = this.getFilterItem(v); - list.push(`
    - Selected ${selectedMap[v].length} ${filterItem ? filterItem.label : v} - ${this.grid.hasMask ? "" : this.getActionButtons(v, null, true)} -
    `); - }); - - this.showSelection(list.join("")); - } - - focusInstall(item, mode) { - const cellNode = this.grid.getCellNode(item, "installed"); - if (cellNode) { - const cellBtn = cellNode.querySelector(`button[mode="${mode}"]`); - if (cellBtn) { - cellBtn.classList.add("cn-btn-loading"); - return true - } - } - } - - async installNodeWithVersion(rowItem, btn, is_enable) { - let hash = rowItem.hash; - let title = rowItem.title; - - const item = this.grid.getRowItemBy("hash", hash); - - let node_id = item.originalData.id; - - this.showLoading(); - let res; - if(is_enable) { - res = await api.fetchApi(`/customnode/disabled_versions/${node_id}`, { cache: "no-store" }); - } - else { - res = await api.fetchApi(`/customnode/versions/${node_id}`, { cache: "no-store" }); - } - this.hideLoading(); - - if(res.status == 200) { - let obj = await res.json(); - - let versions = []; - let default_version; - let version_cnt = 0; - - if(!is_enable) { - if(rowItem.originalData.active_version != 'nightly') { - versions.push('nightly'); - default_version = 'nightly'; - version_cnt++; - } - - if(rowItem.cnr_latest != rowItem.originalData.active_version && obj.length > 0) { - versions.push('latest'); - } - } - - for(let v of obj) { - if(rowItem.originalData.active_version != v.version) { - default_version = v.version; - versions.push(v.version); - version_cnt++; - } - } - - this.showVersionSelectorDialog(versions, (selected_version) => { - this.installNodes([hash], btn, title, selected_version); - }); - } - else { - show_message('Failed to fetch versions from ComfyRegistry.'); - } - } - - async installNodes(list, btn, title, selected_version) { - const { target, label, mode} = btn; - - if(mode === "uninstall") { - title = title || `${list.length} custom nodes`; - - const confirmed = await customConfirm(`Are you sure uninstall ${title}?`); - if (!confirmed) { - return; - } - } - - if(mode === "reinstall") { - title = title || `${list.length} custom nodes`; - - const confirmed = await customConfirm(`Are you sure reinstall ${title}?`); - if (!confirmed) { - return; - } - } - - target.classList.add("cn-btn-loading"); - this.showError(""); - - let needRestart = false; - let errorMsg = ""; - for (const hash of list) { - const item = this.grid.getRowItemBy("hash", hash); - if (!item) { - errorMsg = `Not found custom node: ${hash}`; - break; - } - - this.grid.scrollRowIntoView(item); - - if (!this.focusInstall(item, mode)) { - this.grid.onNextUpdated(() => { - this.focusInstall(item, mode); - }); - } - - this.showStatus(`${label} ${item.title} ...`); - - const data = item.originalData; - data.selected_version = selected_version; - data.channel = this.channel; - data.mode = this.mode; - - let install_mode = mode; - if(mode == 'switch') { - install_mode = 'install'; - } - - // don't post install if install_mode == 'enable' - data.skip_post_install = install_mode == 'enable'; - let api_mode = install_mode; - if(install_mode == 'enable') { - api_mode = 'install'; - } - - if(install_mode == 'reinstall') { - api_mode = 'reinstall'; - } - - const res = await api.fetchApi(`/customnode/${api_mode}`, { - method: 'POST', - body: JSON.stringify(data) - }); - - if (res.status != 200) { - - errorMsg = `${item.title} ${mode} failed: `; - if(res.status == 403) { - errorMsg += `This action is not allowed with this security level configuration.`; - } else if(res.status == 404) { - errorMsg += `With the current security level configuration, only custom nodes from the "default channel" can be installed.`; - } else { - errorMsg += await res.text(); - } - - break; - } - - needRestart = true; - - this.grid.setRowSelected(item, false); - item.restart = true; - this.restartMap[item.hash] = true; - this.grid.updateCell(item, "action"); - - //console.log(res.data); - - } - - target.classList.remove("cn-btn-loading"); - - if (errorMsg) { - this.showError(errorMsg); - show_message("Installation Error:\n"+errorMsg); - } else { - this.showStatus(`${label} ${list.length} custom node(s) successfully`); - } - - if (needRestart) { - this.showRestart(); - this.showMessage(`To apply the installed/updated/disabled/enabled custom node, please restart ComfyUI. And refresh browser.`, "red") - } - - } - - // =========================================================================================== - - async getExtensionMappings() { - const mode = manager_instance.datasrc_combo.value; - this.showStatus(`Loading extension mappings (${mode}) ...`); - const res = await fetchData(`/customnode/getmappings?mode=${mode}`); - if (res.error) { - console.log(res.error); - return {} - } - - const data = res.data; - - const extension_mappings = {}; - const conflicts_map = {}; - Object.keys(data).forEach(k => { - const [extensions, metadata] = data[k]; - extension_mappings[k] = { - extensions, - metadata - } - extensions.forEach(node => { - let l = conflicts_map[node]; - if(!l) { - l = []; - conflicts_map[node] = l; - } - l.push(k); - }) - }) - - Object.keys(conflicts_map).forEach(node => { - const list = conflicts_map[node]; - if(list.length > 1) { - list.forEach(k => { - const item = extension_mappings[k]; - if(!item) { - console.log(`not found ${k}`) - return; - } - - if (!item.conflicts) { - item.conflicts = []; - } - list.forEach(key => { - if(k !== key) { - item.conflicts.push([node, key]) - } - }) - }) - } - }) - - return extension_mappings; - } - - async getMissingNodes() { - const mode = manager_instance.datasrc_combo.value; - this.showStatus(`Loading missing nodes (${mode}) ...`); - const res = await fetchData(`/customnode/getmappings?mode=${mode}`); - if (res.error) { - this.showError(`Failed to get custom node mappings: ${res.error}`); - return; - } - - const mappings = res.data; - - // build regex->url map - const regex_to_pack = []; - for(let k in this.custom_nodes) { - let node = this.custom_nodes[k]; - - if(node.nodename_pattern) { - regex_to_pack.push({ - regex: new RegExp(node.nodename_pattern), - url: node.files[0] - }); - } - } - - // build name->url map - const name_to_packs = {}; - for (const url in mappings) { - const names = mappings[url]; - - for(const name in names[0]) { - let v = name_to_packs[names[0][name]]; - if(v == undefined) { - v = []; - name_to_packs[names[0][name]] = v; - } - v.push(url); - } - } - - const registered_nodes = new Set(); - for (let i in LiteGraph.registered_node_types) { - registered_nodes.add(LiteGraph.registered_node_types[i].type); - } - - const missing_nodes = new Set(); - const workflow = app.graph.serialize(); - const group_nodes = workflow.extra && workflow.extra.groupNodes ? workflow.extra.groupNodes : []; - let nodes = workflow.nodes; - - for (let i in group_nodes) { - let group_node = group_nodes[i]; - nodes = nodes.concat(group_node.nodes); - } - - for (let i in nodes) { - const node_type = nodes[i].type; - if(node_type.startsWith('workflow/') || node_type.startsWith('workflow>')) - continue; - - if (!registered_nodes.has(node_type)) { - const packs = name_to_packs[node_type.trim()]; - if(packs) - packs.forEach(url => { - missing_nodes.add(url); - }); - else { - for(let j in regex_to_pack) { - if(regex_to_pack[j].regex.test(node_type)) { - missing_nodes.add(regex_to_pack[j].url); - } - } - } - } - } - - const hashMap = {}; - for(let k in this.custom_nodes) { - let item = this.custom_nodes[k]; - - if(missing_nodes.has(item.id)) { - hashMap[item.hash] = true; - } - else if (item.files?.some(file => missing_nodes.has(file))) { - hashMap[item.hash] = true; - } - } - - return hashMap; - } - - async getFavorites() { - const hashMap = {}; - for(let k in this.custom_nodes) { - let item = this.custom_nodes[k]; - if(item.is_favorite) - hashMap[item.hash] = true; - } - - return hashMap; - } - - async getAlternatives() { - const mode = manager_instance.datasrc_combo.value; - this.showStatus(`Loading alternatives (${mode}) ...`); - const res = await fetchData(`/customnode/alternatives?mode=${mode}`); - if (res.error) { - this.showError(`Failed to get alternatives: ${res.error}`); - return []; - } - - const hashMap = {}; - const items = res.data; - - for(let i in items) { - let item = items[i]; - let custom_node = this.custom_nodes[i]; - - if (!custom_node) { - console.log(`Not found custom node: ${item.id}`); - continue; - } - - const tags = `${item.tags}`.split(",").map(tag => { - return `
    ${tag.trim()}
    `; - }).join(""); - - hashMap[custom_node.hash] = { - alternatives: `
    ${tags}
    ${item.description}` - } - - } - - return hashMap; - } - - async loadData(show_mode = ShowMode.NORMAL) { - this.show_mode = show_mode; - console.log("Show mode:", show_mode); - - this.showLoading(); - - this.extension_mappings = await this.getExtensionMappings(); - - const mode = manager_instance.datasrc_combo.value; - this.showStatus(`Loading custom nodes (${mode}) ...`); - - const skip_update = this.show_mode === ShowMode.UPDATE ? "" : "&skip_update=true"; - const res = await fetchData(`/customnode/getlist?mode=${mode}${skip_update}`); - if (res.error) { - this.showError("Failed to get custom node list."); - this.hideLoading(); - return - } - - const { channel, node_packs } = res.data; - this.channel = channel; - this.mode = mode; - this.custom_nodes = node_packs; - - if(this.channel !== 'default') { - this.element.querySelector(".cn-manager-channel").innerHTML = `Channel: ${this.channel} (Incomplete list)`; - } - - for (const k in node_packs) { - let item = node_packs[k]; - item.originalData = JSON.parse(JSON.stringify(item)); - if(item.originalData.id == undefined) { - item.originalData.id = k; - } - item.hash = md5(k); - } - - const filterItem = this.getFilterItem(this.show_mode); - if(filterItem) { - let hashMap; - if(this.show_mode == ShowMode.UPDATE) { - hashMap = {}; - for (const k in node_packs) { - let it = node_packs[k]; - if (it['update-state'] === "true") { - hashMap[it.hash] = true; - } - } - } else if(this.show_mode == ShowMode.MISSING) { - hashMap = await this.getMissingNodes(); - } else if(this.show_mode == ShowMode.ALTERNATIVES) { - hashMap = await this.getAlternatives(); - } else if(this.show_mode == ShowMode.FAVORITES) { - hashMap = await this.getFavorites(); - } - filterItem.hashMap = hashMap; - filterItem.hasData = true; - } - - for(let k in node_packs) { - let nodeItem = node_packs[k]; - - if (this.restartMap[nodeItem.hash]) { - nodeItem.restart = true; - } - - if(nodeItem['update-state'] == "true") { - nodeItem.action = 'updatable'; - } - else if(nodeItem['import-fail']) { - nodeItem.action = 'import-fail'; - } - else { - nodeItem.action = nodeItem.state; - } - - if(nodeItem['invalid-installation']) { - nodeItem.action = 'invalid-installation'; - } - - const filterTypes = new Set(); - this.filterList.forEach(filterItem => { - const { value, hashMap } = filterItem; - if (hashMap) { - const hashData = hashMap[nodeItem.hash] - if (hashData) { - filterTypes.add(value); - if (value === ShowMode.UPDATE) { - nodeItem['update-state'] = "true"; - } - if (value === ShowMode.MISSING) { - nodeItem['missing-node'] = "true"; - } - if (typeof hashData === "object") { - Object.assign(nodeItem, hashData); - } - } - } else { - if (nodeItem.state === value) { - filterTypes.add(value); - } - - switch(nodeItem.state) { - case "enabled": - filterTypes.add("enabled"); - case "disabled": - filterTypes.add("installed"); - break; - - case "not-installed": - filterTypes.add("not-installed"); - break; - } - - if(nodeItem.version != 'unknown') { - filterTypes.add("cnr"); - } - else { - filterTypes.add("unknown"); - } - - if(nodeItem['update-state'] == 'true') { - filterTypes.add("updatable"); - } - - if(nodeItem['import-fail']) { - filterTypes.add("import-fail"); - } - - if(nodeItem['invalid-installation']) { - filterTypes.add("invalid-installation"); - } - } - }); - - nodeItem.filterTypes = Array.from(filterTypes); - } - - this.renderGrid(); - - this.hideLoading(); - - } - - // =========================================================================================== - - showSelection(msg) { - this.element.querySelector(".cn-manager-selection").innerHTML = msg; - } - - showError(err) { - this.showMessage(err, "red"); - } - - showMessage(msg, color) { - if (color) { - msg = `${msg}`; - } - this.element.querySelector(".cn-manager-message").innerHTML = msg; - } - - showStatus(msg, color) { - if (color) { - msg = `${msg}`; - } - this.element.querySelector(".cn-manager-status").innerHTML = msg; - } - - showLoading() { - this.setDisabled(true); - if (this.grid) { - this.grid.showLoading(); - this.grid.showMask({ - opacity: 0.05 - }); - } - } - - hideLoading() { - this.setDisabled(false); - if (this.grid) { - this.grid.hideLoading(); - this.grid.hideMask(); - } - } - - setDisabled(disabled) { - - const $close = this.element.querySelector(".cn-manager-close"); - const $restart = this.element.querySelector(".cn-manager-restart"); - - const list = [ - ".cn-manager-header input", - ".cn-manager-header select", - ".cn-manager-footer button", - ".cn-manager-selection button" - ].map(s => { - return Array.from(this.element.querySelectorAll(s)); - }) - .flat() - .filter(it => { - return it !== $close && it !== $restart; - }); - - list.forEach($elem => { - if (disabled) { - $elem.setAttribute("disabled", "disabled"); - } else { - $elem.removeAttribute("disabled"); - } - }); - - Array.from(this.element.querySelectorAll(".cn-btn-loading")).forEach($elem => { - $elem.classList.remove("cn-btn-loading"); - }); - - } - - showRestart() { - this.element.querySelector(".cn-manager-restart").style.display = "block"; - } - - setFilter(filterValue) { - let filter = ""; - const filterItem = this.getFilterItem(filterValue); - if(filterItem) { - filter = filterItem.value; - } - this.filter = filter; - this.element.querySelector(".cn-manager-filter").value = filter; - } - - setKeywords(keywords = "") { - this.keywords = keywords; - this.element.querySelector(".cn-manager-keywords").value = keywords; - } - - show(show_mode) { - this.element.style.display = "flex"; - this.setFilter(show_mode); - this.setKeywords(""); - this.showSelection(""); - this.showMessage(""); - this.loadData(show_mode); - } - - close() { - this.element.style.display = "none"; - } -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/js/model-manager.js b/custom_nodes/comfyui-manager/js/model-manager.js deleted file mode 100644 index ff98785537f6adfa763af9e26ba41c5b6657c0f6..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/model-manager.js +++ /dev/null @@ -1,893 +0,0 @@ -import { $el } from "../../scripts/ui.js"; -import { - manager_instance, rebootAPI, - fetchData, md5, icons -} from "./common.js"; - -// https://cenfun.github.io/turbogrid/api.html -import TG from "./turbogrid.esm.js"; - -const pageCss = ` -.cmm-manager { - --grid-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; - z-index: 1099; - width: 80%; - height: 80%; - display: flex; - flex-direction: column; - gap: 10px; - color: var(--fg-color); - font-family: arial, sans-serif; -} - -.cmm-manager .cmm-flex-auto { - flex: auto; -} - -.cmm-manager button { - font-size: 16px; - color: var(--input-text); - background-color: var(--comfy-input-bg); - border-radius: 8px; - border-color: var(--border-color); - border-style: solid; - margin: 0; - padding: 4px 8px; - min-width: 100px; -} - -.cmm-manager button:disabled, -.cmm-manager input:disabled, -.cmm-manager select:disabled { - color: gray; -} - -.cmm-manager button:disabled { - background-color: var(--comfy-input-bg); -} - -.cmm-manager-header { - display: flex; - flex-wrap: wrap; - gap: 5px; - align-items: center; - padding: 0 5px; -} - -.cmm-manager-header label { - display: flex; - gap: 5px; - align-items: center; -} - -.cmm-manager-type, -.cmm-manager-base, -.cmm-manager-filter { - height: 28px; - line-height: 28px; -} - -.cmm-manager-keywords { - height: 28px; - line-height: 28px; - padding: 0 5px 0 26px; - background-size: 16px; - background-position: 5px center; - background-repeat: no-repeat; - background-image: url("data:image/svg+xml;charset=utf8,${encodeURIComponent(icons.search.replace("currentColor", "#888"))}"); -} - -.cmm-manager-status { - padding-left: 10px; -} - -.cmm-manager-grid { - flex: auto; - border: 1px solid var(--border-color); - overflow: hidden; -} - -.cmm-manager-selection { - display: flex; - flex-wrap: wrap; - gap: 10px; - align-items: center; -} - -.cmm-manager-message { - -} - -.cmm-manager-footer { - display: flex; - flex-wrap: wrap; - gap: 10px; - align-items: center; -} - -.cmm-manager-grid .tg-turbogrid { - font-family: var(--grid-font); - font-size: 15px; - background: var(--bg-color); -} - -.cmm-manager-grid .cmm-node-name a { - color: skyblue; - text-decoration: none; - word-break: break-word; -} - -.cmm-manager-grid .cmm-node-desc a { - color: #5555FF; - font-weight: bold; - text-decoration: none; -} - -.cmm-manager-grid .tg-cell a:hover { - text-decoration: underline; -} - -.cmm-icon-passed { - width: 20px; - height: 20px; - position: absolute; - left: calc(50% - 10px); - top: calc(50% - 10px); -} - -.cmm-manager .cmm-btn-enable { - background-color: blue; - color: white; -} - -.cmm-manager .cmm-btn-disable { - background-color: MediumSlateBlue; - color: white; -} - -.cmm-manager .cmm-btn-install { - background-color: black; - color: white; -} - -.cmm-btn-download { - width: 18px; - height: 18px; - position: absolute; - left: calc(50% - 10px); - top: calc(50% - 10px); - cursor: pointer; - opacity: 0.8; - color: #fff; -} - -.cmm-btn-download:hover { - opacity: 1; -} - -.cmm-manager-light .cmm-btn-download { - color: #000; -} - -@keyframes cmm-btn-loading-bg { - 0% { - left: 0; - } - 100% { - left: -105px; - } -} - -.cmm-manager button.cmm-btn-loading { - position: relative; - overflow: hidden; - border-color: rgb(0 119 207 / 80%); - background-color: var(--comfy-input-bg); -} - -.cmm-manager button.cmm-btn-loading::after { - position: absolute; - top: 0; - left: 0; - content: ""; - width: 500px; - height: 100%; - background-image: repeating-linear-gradient( - -45deg, - rgb(0 119 207 / 30%), - rgb(0 119 207 / 30%) 10px, - transparent 10px, - transparent 15px - ); - animation: cmm-btn-loading-bg 2s linear infinite; -} - -.cmm-manager-light .cmm-node-name a { - color: blue; -} - -.cmm-manager-light .cm-warn-note { - background-color: #ccc !important; -} - -.cmm-manager-light .cmm-btn-install { - background-color: #333; -} - -`; - -const pageHtml = ` -
    - - - - -
    -
    -
    -
    -
    -
    - -`; - -export class ModelManager { - static instance = null; - - constructor(app, manager_dialog) { - this.app = app; - this.manager_dialog = manager_dialog; - this.id = "cmm-manager"; - - this.filter = ''; - this.type = ''; - this.base = ''; - this.keywords = ''; - - this.init(); - } - - init() { - - if (!document.querySelector(`style[context="${this.id}"]`)) { - const $style = document.createElement("style"); - $style.setAttribute("context", this.id); - $style.innerHTML = pageCss; - document.head.appendChild($style); - } - - this.element = $el("div", { - parent: document.body, - className: "comfy-modal cmm-manager" - }); - this.element.innerHTML = pageHtml; - this.initFilter(); - this.bindEvents(); - this.initGrid(); - } - - initFilter() { - - this.filterList = [{ - label: "All", - value: "" - }, { - label: "Installed", - value: "True" - }, { - label: "Not Installed", - value: "False" - }]; - - this.typeList = [{ - label: "All", - value: "" - }]; - - this.baseList = [{ - label: "All", - value: "" - }]; - - this.updateFilter(); - - } - - updateFilter() { - const $filter = this.element.querySelector(".cmm-manager-filter"); - $filter.innerHTML = this.filterList.map(item => { - const selected = item.value === this.filter ? " selected" : ""; - return `` - }).join(""); - - const $type = this.element.querySelector(".cmm-manager-type"); - $type.innerHTML = this.typeList.map(item => { - const selected = item.value === this.type ? " selected" : ""; - return `` - }).join(""); - - const $base = this.element.querySelector(".cmm-manager-base"); - $base.innerHTML = this.baseList.map(item => { - const selected = item.value === this.base ? " selected" : ""; - return `` - }).join(""); - - } - - bindEvents() { - const eventsMap = { - ".cmm-manager-filter": { - change: (e) => { - this.filter = e.target.value; - this.updateGrid(); - } - }, - ".cmm-manager-type": { - change: (e) => { - this.type = e.target.value; - this.updateGrid(); - } - }, - ".cmm-manager-base": { - change: (e) => { - this.base = e.target.value; - this.updateGrid(); - } - }, - - ".cmm-manager-keywords": { - input: (e) => { - const keywords = `${e.target.value}`.trim(); - if (keywords !== this.keywords) { - this.keywords = keywords; - this.updateGrid(); - } - }, - focus: (e) => e.target.select() - }, - - ".cmm-manager-selection": { - click: (e) => { - const target = e.target; - const mode = target.getAttribute("mode"); - if (mode === "install") { - this.installModels(this.selectedModels, target); - } - } - }, - - ".cmm-manager-back": { - click: (e) => { - this.close() - manager_instance.show(); - } - }, - }; - Object.keys(eventsMap).forEach(selector => { - const target = this.element.querySelector(selector); - if (target) { - const events = eventsMap[selector]; - if (events) { - Object.keys(events).forEach(type => { - target.addEventListener(type, events[type]); - }); - } - } - }); - } - - // =========================================================================================== - - initGrid() { - const container = this.element.querySelector(".cmm-manager-grid"); - const grid = new TG.Grid(container); - this.grid = grid; - - grid.bind('onUpdated', (e, d) => { - - this.showStatus(`${grid.viewRows.length.toLocaleString()} external models`); - - }); - - grid.bind('onSelectChanged', (e, changes) => { - this.renderSelected(); - }); - - grid.bind('onClick', (e, d) => { - const { rowItem } = d; - const target = d.e.target; - const mode = target.getAttribute("mode"); - if (mode === "install") { - this.installModels([rowItem], target); - } - - }); - - grid.setOption({ - theme: 'dark', - - selectVisible: true, - selectMultiple: true, - selectAllVisible: true, - - textSelectable: true, - scrollbarRound: true, - - frozenColumn: 1, - rowNotFound: "No Results", - - rowHeight: 40, - bindWindowResize: true, - bindContainerResize: true, - - cellResizeObserver: (rowItem, columnItem) => { - const autoHeightColumns = ['name', 'description']; - return autoHeightColumns.includes(columnItem.id) - }, - - // updateGrid handler for filter and keywords - rowFilter: (rowItem) => { - - const searchableColumns = ["name", "type", "base", "description", "filename", "save_path"]; - - let shouldShown = grid.highlightKeywordsFilter(rowItem, searchableColumns, this.keywords); - - if (shouldShown) { - if(this.filter && rowItem.installed !== this.filter) { - return false; - } - - if(this.type && rowItem.type !== this.type) { - return false; - } - - if(this.base && rowItem.base !== this.base) { - return false; - } - - } - - return shouldShown; - } - }); - - } - - renderGrid() { - - // update theme - const colorPalette = this.app.ui.settings.settingsValues['Comfy.ColorPalette']; - Array.from(this.element.classList).forEach(cn => { - if (cn.startsWith("cmm-manager-")) { - this.element.classList.remove(cn); - } - }); - this.element.classList.add(`cmm-manager-${colorPalette}`); - - const options = { - theme: colorPalette === "light" ? "" : "dark" - }; - - const rows = this.modelList || []; - - const columns = [{ - id: 'id', - name: 'ID', - width: 50, - align: 'center' - }, { - id: 'name', - name: 'Name', - width: 200, - minWidth: 100, - maxWidth: 500, - classMap: 'cmm-node-name', - formatter: function(name, rowItem, columnItem, cellNode) { - return `${name}`; - } - }, { - id: 'installed', - name: 'Install', - width: 130, - minWidth: 110, - maxWidth: 200, - sortable: false, - align: 'center', - formatter: (installed, rowItem, columnItem) => { - if (rowItem.refresh) { - return `Refresh Required`; - } - if (installed === "True") { - return `
    ${icons.passed}
    `; - } - return ``; - } - }, { - id: 'url', - name: '', - width: 50, - sortable: false, - align: 'center', - formatter: (url, rowItem, columnItem) => { - return `${icons.download}`; - } - }, { - id: 'size', - name: 'Size', - width: 100, - formatter: (size) => { - if (typeof size === "number") { - return this.formatSize(size); - } - return size; - } - }, { - id: 'type', - name: 'Type', - width: 100 - }, { - id: 'base', - name: 'Base' - }, { - id: 'description', - name: 'Description', - width: 400, - maxWidth: 5000, - classMap: 'cmm-node-desc' - }, { - id: "save_path", - name: 'Save Path', - width: 200 - }, { - id: 'filename', - name: 'Filename', - width: 200 - }]; - - this.grid.setData({ - options, - rows, - columns - }); - - this.grid.render(); - - } - - updateGrid() { - if (this.grid) { - this.grid.update(); - } - } - - // =========================================================================================== - - renderSelected() { - const selectedList = this.grid.getSelectedRows(); - if (!selectedList.length) { - this.showSelection(""); - this.selectedModels = []; - return; - } - - this.selectedModels = selectedList; - this.showSelection(`Selected ${selectedList.length} models `); - } - - focusInstall(item) { - const cellNode = this.grid.getCellNode(item, "installed"); - if (cellNode) { - const cellBtn = cellNode.querySelector(`button[mode="install"]`); - if (cellBtn) { - cellBtn.classList.add("cmm-btn-loading"); - return true - } - } - } - - async installModels(list, btn) { - - btn.classList.add("cmm-btn-loading"); - this.showLoading(); - this.showError(""); - - let needRestart = false; - let errorMsg = ""; - - for (const item of list) { - - this.grid.scrollRowIntoView(item); - - if (!this.focusInstall(item)) { - this.grid.onNextUpdated(() => { - this.focusInstall(item); - }); - } - - this.showStatus(`Install ${item.name} ...`); - - const data = item.originalData; - const res = await fetchData('/model/install', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(data) - }); - - - if (res.error) { - errorMsg = `Install failed: ${item.name} ${res.error.message}`; - break;; - } - - needRestart = true; - - this.grid.setRowSelected(item, false); - - item.refresh = true; - item.selectable = false; - this.grid.updateCell(item, "installed"); - this.grid.updateCell(item, "tg-column-select"); - - this.showStatus(`Install ${item.name} successfully`); - - } - - this.hideLoading(); - btn.classList.remove("cmm-btn-loading"); - - if (errorMsg) { - this.showError(errorMsg); - } else { - this.showStatus(`Install ${list.length} models successfully`); - } - - if (needRestart) { - this.showMessage(`To apply the installed model, please click the 'Refresh' button on the main menu.`, "red") - } - - } - - getModelList(models) { - - const typeMap = new Map(); - const baseMap = new Map(); - - models.forEach((item, i) => { - const { type, base, name, reference, installed } = item; - item.originalData = JSON.parse(JSON.stringify(item)); - item.size = this.sizeToBytes(item.size); - item.hash = md5(name + reference); - item.id = i + 1; - - if (installed === "True") { - item.selectable = false; - } - - typeMap.set(type, type); - baseMap.set(base, base); - - }); - - const typeList = []; - typeMap.forEach(type => { - typeList.push({ - label: type, - value: type - }); - }); - typeList.sort((a,b)=> { - const au = a.label.toUpperCase(); - const bu = b.label.toUpperCase(); - if (au !== bu) { - return au > bu ? 1 : -1; - } - return 0; - }); - this.typeList = [{ - label: "All", - value: "" - }].concat(typeList); - - - const baseList = []; - baseMap.forEach(base => { - baseList.push({ - label: base, - value: base - }); - }); - baseList.sort((a,b)=> { - const au = a.label.toUpperCase(); - const bu = b.label.toUpperCase(); - if (au !== bu) { - return au > bu ? 1 : -1; - } - return 0; - }); - this.baseList = [{ - label: "All", - value: "" - }].concat(baseList); - - return models; - } - - // =========================================================================================== - - async loadData() { - - this.showLoading(); - - this.showStatus(`Loading external model list ...`); - - const mode = manager_instance.datasrc_combo.value; - - const res = await fetchData(`/externalmodel/getlist?mode=${mode}`); - if (res.error) { - this.showError("Failed to get external model list."); - this.hideLoading(); - return - } - - const { models } = res.data; - - this.modelList = this.getModelList(models); - // console.log("models", this.modelList); - - this.updateFilter(); - - this.renderGrid(); - - this.hideLoading(); - - } - - // =========================================================================================== - - formatSize(v) { - const base = 1000; - const units = ['', 'K', 'M', 'G', 'T', 'P']; - const space = ''; - const postfix = 'B'; - if (v <= 0) { - return `0${space}${postfix}`; - } - for (let i = 0, l = units.length; i < l; i++) { - const min = Math.pow(base, i); - const max = Math.pow(base, i + 1); - if (v > min && v <= max) { - const unit = units[i]; - if (unit) { - const n = v / min; - const nl = n.toString().split('.')[0].length; - const fl = Math.max(3 - nl, 1); - v = n.toFixed(fl); - } - v = v + space + unit + postfix; - break; - } - } - return v; - } - - // for size sort - sizeToBytes(v) { - if (typeof v === "number") { - return v; - } - if (typeof v === "string") { - const n = parseFloat(v); - const unit = v.replace(/[0-9.B]+/g, "").trim().toUpperCase(); - if (unit === "K") { - return n * 1000; - } - if (unit === "M") { - return n * 1000 * 1000; - } - if (unit === "G") { - return n * 1000 * 1000 * 1000; - } - if (unit === "T") { - return n * 1000 * 1000 * 1000 * 1000; - } - } - return v; - } - - showSelection(msg) { - this.element.querySelector(".cmm-manager-selection").innerHTML = msg; - } - - showError(err) { - this.showMessage(err, "red"); - } - - showMessage(msg, color) { - if (color) { - msg = `${msg}`; - } - this.element.querySelector(".cmm-manager-message").innerHTML = msg; - } - - showStatus(msg, color) { - if (color) { - msg = `${msg}`; - } - this.element.querySelector(".cmm-manager-status").innerHTML = msg; - } - - showLoading() { - this.setDisabled(true); - if (this.grid) { - this.grid.showLoading(); - this.grid.showMask({ - opacity: 0.05 - }); - } - } - - hideLoading() { - this.setDisabled(false); - if (this.grid) { - this.grid.hideLoading(); - this.grid.hideMask(); - } - } - - setDisabled(disabled) { - - const $close = this.element.querySelector(".cmm-manager-close"); - - const list = [ - ".cmm-manager-header input", - ".cmm-manager-header select", - ".cmm-manager-footer button", - ".cmm-manager-selection button" - ].map(s => { - return Array.from(this.element.querySelectorAll(s)); - }) - .flat() - .filter(it => { - return it !== $close; - }); - - list.forEach($elem => { - if (disabled) { - $elem.setAttribute("disabled", "disabled"); - } else { - $elem.removeAttribute("disabled"); - } - }); - - Array.from(this.element.querySelectorAll(".cmm-btn-loading")).forEach($elem => { - $elem.classList.remove("cmm-btn-loading"); - }); - - } - - setKeywords(keywords = "") { - this.keywords = keywords; - this.element.querySelector(".cmm-manager-keywords").value = keywords; - } - - show() { - this.element.style.display = "flex"; - this.setKeywords(""); - this.showSelection(""); - this.showMessage(""); - this.loadData(); - } - - close() { - this.element.style.display = "none"; - } -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/js/node_fixer.js b/custom_nodes/comfyui-manager/js/node_fixer.js deleted file mode 100644 index d99f381feebc09a356cb0ea5c274eb4ee946ad2d..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/node_fixer.js +++ /dev/null @@ -1,226 +0,0 @@ -import { app } from "../../scripts/app.js"; -import { api } from "../../scripts/api.js"; - -let double_click_policy = "copy-all"; - -api.fetchApi('/manager/dbl_click/policy') - .then(response => response.text()) - .then(data => set_double_click_policy(data)); - -export function set_double_click_policy(mode) { - double_click_policy = mode; -} - -function addMenuHandler(nodeType, cb) { - const getOpts = nodeType.prototype.getExtraMenuOptions; - nodeType.prototype.getExtraMenuOptions = function () { - const r = getOpts.apply(this, arguments); - cb.apply(this, arguments); - return r; - }; -} - -function distance(node1, node2) { - let dx = (node1.pos[0] + node1.size[0]/2) - (node2.pos[0] + node2.size[0]/2); - let dy = (node1.pos[1] + node1.size[1]/2) - (node2.pos[1] + node2.size[1]/2); - return Math.sqrt(dx * dx + dy * dy); -} - -function lookup_nearest_nodes(node) { - let nearest_distance = Infinity; - let nearest_node = null; - for(let other of app.graph._nodes) { - if(other === node) - continue; - - let dist = distance(node, other); - if (dist < nearest_distance && dist < 1000) { - nearest_distance = dist; - nearest_node = other; - } - } - - return nearest_node; -} - -function lookup_nearest_inputs(node) { - let input_map = {}; - - for(let i in node.inputs) { - let input = node.inputs[i]; - - if(input.link || input_map[input.type]) - continue; - - input_map[input.type] = {distance: Infinity, input_name: input.name, node: null, slot: null}; - } - - let x = node.pos[0]; - let y = node.pos[1] + node.size[1]/2; - - for(let other of app.graph._nodes) { - if(other === node || !other.outputs) - continue; - - let dx = x - (other.pos[0] + other.size[0]); - let dy = y - (other.pos[1] + other.size[1]/2); - - if(dx < 0) - continue; - - let dist = Math.sqrt(dx * dx + dy * dy); - - for(let input_type in input_map) { - for(let j in other.outputs) { - let output = other.outputs[j]; - if(output.type == input_type) { - if(input_map[input_type].distance > dist) { - input_map[input_type].distance = dist; - input_map[input_type].node = other; - input_map[input_type].slot = parseInt(j); - } - } - } - } - } - - let res = {}; - for (let i in input_map) { - if (input_map[i].node) { - res[i] = input_map[i]; - } - } - - return res; -} - -function connect_inputs(nearest_inputs, node) { - for(let i in nearest_inputs) { - let info = nearest_inputs[i]; - info.node.connect(info.slot, node.id, info.input_name); - } -} - -function node_info_copy(src, dest, connect_both, copy_shape) { - // copy input connections - for(let i in src.inputs) { - let input = src.inputs[i]; - if (input.widget !== undefined) { - const destWidget = dest.widgets.find(x => x.name === input.widget.name); - dest.convertWidgetToInput(destWidget); - } - if(input.link) { - let link = app.graph.links[input.link]; - let src_node = app.graph.getNodeById(link.origin_id); - src_node.connect(link.origin_slot, dest.id, input.name); - } - } - - // copy output connections - if(connect_both) { - let output_links = {}; - for(let i in src.outputs) { - let output = src.outputs[i]; - if(output.links) { - let links = []; - for(let j in output.links) { - links.push(app.graph.links[output.links[j]]); - } - output_links[output.name] = links; - } - } - - for(let i in dest.outputs) { - let links = output_links[dest.outputs[i].name]; - if(links) { - for(let j in links) { - let link = links[j]; - let target_node = app.graph.getNodeById(link.target_id); - dest.connect(parseInt(i), target_node, link.target_slot); - } - } - } - } - - if(copy_shape) { - dest.color = src.color; - dest.bgcolor = src.bgcolor; - dest.size = max(src.size, dest.size); - } - - app.graph.afterChange(); -} - -app.registerExtension({ - name: "Comfy.Manager.NodeFixer", - - async nodeCreated(node, app) { - let orig_dblClick = node.onDblClick; - node.onDblClick = function (e, pos, self) { - orig_dblClick?.apply?.(this, arguments); - - if((!node.inputs && !node.outputs) || pos[1] > 0) - return; - - switch(double_click_policy) { - case "copy-all": - case "copy-full": - case "copy-input": - { - if(node.inputs?.some(x => x.link != null) || node.outputs?.some(x => x.links != null && x.links.length > 0) ) - return; - - let src_node = lookup_nearest_nodes(node); - if(src_node) - { - let both_connection = double_click_policy != "copy-input"; - let copy_shape = double_click_policy == "copy-full"; - node_info_copy(src_node, node, both_connection, copy_shape); - } - } - break; - case "possible-input": - { - let nearest_inputs = lookup_nearest_inputs(node); - if(nearest_inputs) - connect_inputs(nearest_inputs, node); - } - break; - case "dual": - { - if(pos[0] < node.size[0]/2) { - // left: possible-input - let nearest_inputs = lookup_nearest_inputs(node); - if(nearest_inputs) - connect_inputs(nearest_inputs, node); - } - else { - // right: copy-all - if(node.inputs?.some(x => x.link != null) || node.outputs?.some(x => x.links != null && x.links.length > 0) ) - return; - - let src_node = lookup_nearest_nodes(node); - if(src_node) - node_info_copy(src_node, node, true); - } - } - break; - } - } - }, - - beforeRegisterNodeDef(nodeType, nodeData, app) { - addMenuHandler(nodeType, function (_, options) { - options.push({ - content: "Fix node (recreate)", - callback: () => { - let new_node = LiteGraph.createNode(nodeType.comfyClass); - new_node.pos = [this.pos[0], this.pos[1]]; - app.canvas.graph.add(new_node, false); - node_info_copy(this, new_node, true); - app.canvas.graph.remove(this); - }, - }); - }); - } -}); diff --git a/custom_nodes/comfyui-manager/js/snapshot.js b/custom_nodes/comfyui-manager/js/snapshot.js deleted file mode 100644 index dab8d91afaa5f05771742ab11956a06336a54cf6..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/snapshot.js +++ /dev/null @@ -1,300 +0,0 @@ -import { app } from "../../scripts/app.js"; -import { api } from "../../scripts/api.js" -import { ComfyDialog, $el } from "../../scripts/ui.js"; -import { manager_instance, rebootAPI, show_message } from "./common.js"; - - -async function restore_snapshot(target) { - if(SnapshotManager.instance) { - try { - const response = await api.fetchApi(`/snapshot/restore?target=${target}`, { cache: "no-store" }); - - if(response.status == 403) { - show_message('This action is not allowed with this security level configuration.'); - return false; - } - - if(response.status == 400) { - show_message(`Restore snapshot failed: ${target.title} / ${exception}`); - } - - app.ui.dialog.close(); - return true; - } - catch(exception) { - show_message(`Restore snapshot failed: ${target.title} / ${exception}`); - return false; - } - finally { - await SnapshotManager.instance.invalidateControl(); - SnapshotManager.instance.updateMessage("
    To apply the snapshot, please ComfyUI. And refresh browser.", 'cm-reboot-button2'); - } - } -} - -async function remove_snapshot(target) { - if(SnapshotManager.instance) { - try { - const response = await api.fetchApi(`/snapshot/remove?target=${target}`, { cache: "no-store" }); - - if(response.status == 403) { - show_message('This action is not allowed with this security level configuration.'); - return false; - } - - if(response.status == 400) { - show_message(`Remove snapshot failed: ${target.title} / ${exception}`); - } - - app.ui.dialog.close(); - return true; - } - catch(exception) { - show_message(`Restore snapshot failed: ${target.title} / ${exception}`); - return false; - } - finally { - await SnapshotManager.instance.invalidateControl(); - } - } -} - -async function save_current_snapshot() { - try { - const response = await api.fetchApi('/snapshot/save', { cache: "no-store" }); - app.ui.dialog.close(); - return true; - } - catch(exception) { - show_message(`Backup snapshot failed: ${exception}`); - return false; - } - finally { - await SnapshotManager.instance.invalidateControl(); - SnapshotManager.instance.updateMessage("
    Current snapshot saved."); - } -} - -async function getSnapshotList() { - const response = await api.fetchApi(`/snapshot/getlist`); - const data = await response.json(); - return data; -} - -export class SnapshotManager extends ComfyDialog { - static instance = null; - - restore_buttons = []; - message_box = null; - data = null; - - clear() { - this.restore_buttons = []; - this.message_box = null; - this.data = null; - } - - constructor(app, manager_dialog) { - super(); - this.manager_dialog = manager_dialog; - this.search_keyword = ''; - this.element = $el("div.comfy-modal", { parent: document.body }, []); - } - - async remove_item() { - caller.disableButtons(); - - await caller.invalidateControl(); - } - - createControls() { - return [ - $el("button.cm-small-button", { - type: "button", - textContent: "Close", - onclick: () => { this.close(); } - }) - ]; - } - - startRestore(target) { - const self = SnapshotManager.instance; - - self.updateMessage(`
    Restore snapshot '${target.name}'`); - - for(let i in self.restore_buttons) { - self.restore_buttons[i].disabled = true; - self.restore_buttons[i].style.backgroundColor = 'gray'; - } - } - - async invalidateControl() { - this.clear(); - this.data = (await getSnapshotList()).items; - - while (this.element.children.length) { - this.element.removeChild(this.element.children[0]); - } - - await this.createGrid(); - await this.createBottomControls(); - } - - updateMessage(msg, btn_id) { - this.message_box.innerHTML = msg; - if(btn_id) { - const rebootButton = document.getElementById(btn_id); - const self = this; - rebootButton.onclick = function() { - if(rebootAPI()) { - self.close(); - self.manager_dialog.close(); - } - }; - } - } - - async createGrid(models_json) { - var grid = document.createElement('table'); - grid.setAttribute('id', 'snapshot-list-grid'); - - var thead = document.createElement('thead'); - var tbody = document.createElement('tbody'); - - var headerRow = document.createElement('tr'); - thead.style.position = "sticky"; - thead.style.top = "0px"; - thead.style.borderCollapse = "collapse"; - thead.style.tableLayout = "fixed"; - - var header1 = document.createElement('th'); - header1.innerHTML = '  ID  '; - header1.style.width = "20px"; - var header2 = document.createElement('th'); - header2.innerHTML = 'Datetime'; - header2.style.width = "100%"; - var header_button = document.createElement('th'); - header_button.innerHTML = 'Action'; - header_button.style.width = "100px"; - - thead.appendChild(headerRow); - headerRow.appendChild(header1); - headerRow.appendChild(header2); - headerRow.appendChild(header_button); - - headerRow.style.backgroundColor = "Black"; - headerRow.style.color = "White"; - headerRow.style.textAlign = "center"; - headerRow.style.width = "100%"; - headerRow.style.padding = "0"; - - grid.appendChild(thead); - grid.appendChild(tbody); - - this.grid_rows = {}; - - if(this.data) - for (var i = 0; i < this.data.length; i++) { - const data = this.data[i]; - var dataRow = document.createElement('tr'); - var data1 = document.createElement('td'); - data1.style.textAlign = "center"; - data1.innerHTML = i+1; - var data2 = document.createElement('td'); - data2.innerHTML = ` ${data}`; - var data_button = document.createElement('td'); - data_button.style.textAlign = "center"; - - var restoreBtn = document.createElement('button'); - restoreBtn.innerHTML = 'Restore'; - restoreBtn.style.width = "100px"; - restoreBtn.style.backgroundColor = 'blue'; - - restoreBtn.addEventListener('click', function() { - restore_snapshot(data); - }); - - var removeBtn = document.createElement('button'); - removeBtn.innerHTML = 'Remove'; - removeBtn.style.width = "100px"; - removeBtn.style.backgroundColor = 'red'; - - removeBtn.addEventListener('click', function() { - remove_snapshot(data); - }); - - data_button.appendChild(restoreBtn); - data_button.appendChild(removeBtn); - - dataRow.style.backgroundColor = "var(--bg-color)"; - dataRow.style.color = "var(--fg-color)"; - dataRow.style.textAlign = "left"; - - dataRow.appendChild(data1); - dataRow.appendChild(data2); - dataRow.appendChild(data_button); - tbody.appendChild(dataRow); - - this.grid_rows[i] = {data:data, control:dataRow}; - } - - let self = this; - const panel = document.createElement('div'); - panel.style.width = "100%"; - panel.appendChild(grid); - - function handleResize() { - const parentHeight = self.element.clientHeight; - const gridHeight = parentHeight - 200; - - grid.style.height = gridHeight + "px"; - } - window.addEventListener("resize", handleResize); - - grid.style.position = "relative"; - grid.style.display = "inline-block"; - grid.style.width = "100%"; - grid.style.height = "100%"; - grid.style.overflowY = "scroll"; - this.element.style.height = "85%"; - this.element.style.width = "80%"; - this.element.appendChild(panel); - - handleResize(); - } - - async createBottomControls() { - var close_button = document.createElement("button"); - close_button.className = "cm-small-button"; - close_button.innerHTML = "Close"; - close_button.onclick = () => { this.close(); } - close_button.style.display = "inline-block"; - - var save_button = document.createElement("button"); - save_button.className = "cm-small-button"; - save_button.innerHTML = "Save snapshot"; - save_button.onclick = () => { save_current_snapshot(); } - save_button.style.display = "inline-block"; - save_button.style.horizontalAlign = "right"; - save_button.style.width = "170px"; - - this.message_box = $el('div', {id:'custom-download-message'}, [$el('br'), '']); - this.message_box.style.height = '60px'; - this.message_box.style.verticalAlign = 'middle'; - - this.element.appendChild(this.message_box); - this.element.appendChild(close_button); - this.element.appendChild(save_button); - } - - async show() { - try { - this.invalidateControl(); - this.element.style.display = "block"; - this.element.style.zIndex = 1099; - } - catch(exception) { - app.ui.dialog.show(`Failed to get external model list. / ${exception}`); - } - } -} diff --git a/custom_nodes/comfyui-manager/js/turbogrid.esm.js b/custom_nodes/comfyui-manager/js/turbogrid.esm.js deleted file mode 100644 index fd0bfb57db2af168bac5642b78e503fcac9d82af..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/turbogrid.esm.js +++ /dev/null @@ -1 +0,0 @@ -var t={915:(t,e,i)=>{i.d(e,{A:()=>l});var o=i(256),n=i.n(o),s=i(505),r=i.n(s)()(n());r.push([t.id,'.tg-turbogrid{position:relative;z-index:0;width:100%;height:100%;margin:0;padding:0;box-sizing:border-box;font-size:14px;font-family:arial,sans-serif;outline:0;cursor:default;overflow:hidden}.tg-turbogrid *,.tg-turbogrid *::before,.tg-turbogrid *::after{box-sizing:border-box}.tg-text-unselectable.tg-turbogrid{user-select:none}.tg-turbogrid svg{display:block;pointer-events:none}.tg-turbogrid .tg-symbols{font-family:webdings,sans-serif}.tg-turbogrid .tg-nowrap{white-space:nowrap}.tg-turbogrid .tg-align-left{text-align:left}.tg-turbogrid .tg-align-center{text-align:center}.tg-turbogrid .tg-align-right{text-align:right}@keyframes tg-fade-in{from{opacity:0}to{opacity:1}}@keyframes tg-fade-out{from{opacity:1}to{opacity:0}}.tg-turbogrid .tg-fade-in{animation-name:tg-fade-in;animation-duration:.2s;animation-fill-mode:both}.tg-turbogrid .tg-fade-in .tg-scrollbar-track{display:none}.tg-turbogrid .tg-fade-out{animation-name:tg-fade-out;animation-duration:.2s;animation-fill-mode:both}.tg-turbogrid .tg-fade-out .tg-scrollbar-track{display:none}.tg-turbogrid .tg-mask{position:absolute;top:0;left:0;z-index:200;display:none;width:100%;height:100%;background-color:#000;opacity:.1}@keyframes tg-loading-animation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.tg-turbogrid .tg-loading{position:absolute;top:50%;left:50%;z-index:300;display:none;transform:translate(-50%, -50%);pointer-events:none}.tg-turbogrid .tg-loading-default{width:35px;height:35px;color:#0077cf;animation:1s tg-loading-animation linear infinite}.tg-turbogrid .tg-loading-fast{animation:.382s tg-loading-animation linear infinite}.tg-turbogrid .tg-checkbox{width:100%;height:100%;cursor:pointer;overflow:hidden}.tg-turbogrid .tg-checkbox:hover .tg-checkbox-item{fill:#005ba1}.tg-turbogrid .tg-checkbox.tg-select-icon-all{height:18px}.tg-turbogrid .tg-checkbox .tg-icon-checkbox{position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;transform:translate(-50%, -50%)}.tg-turbogrid .tg-checkbox .tg-checkbox-item{display:none;fill:gray}.tg-turbogrid .tg-checkbox .tg-checkbox-none{display:block}.tg-turbogrid .tg-checkbox.tg-selected .tg-checkbox-selected{display:block;fill:#0077cf}.tg-turbogrid .tg-checkbox.tg-mixed .tg-checkbox-mixed{display:block;fill:#0077cf}.tg-turbogrid .tg-radio{cursor:pointer;overflow:hidden}.tg-turbogrid .tg-radio:hover .tg-icon-radio::before{border-color:#005ba1}.tg-turbogrid .tg-radio .tg-icon-radio{position:absolute;top:50%;left:50%;width:16px;height:16px;transform:translate(-50%, -50%)}.tg-turbogrid .tg-radio .tg-icon-radio::before{position:absolute;top:50%;left:50%;content:"";display:block;width:16px;height:16px;border:thin solid gray;border-radius:50%;background:#fff;transform:translate(-50%, -50%)}.tg-turbogrid .tg-radio .tg-icon-radio::after{position:absolute;top:50%;left:50%;content:"";display:none;width:10px;height:10px;border-radius:50%;background:#0077cf;transform:translate(-50%, -50%)}.tg-turbogrid .tg-radio.tg-selected .tg-icon-radio::after{display:block;border-color:#0077cf}.tg-turbogrid .tg-scrollbar{position:absolute;z-index:100;overflow:hidden;user-select:none}.tg-turbogrid .tg-scrollbar-v{top:0;right:0}.tg-turbogrid .tg-scrollbar-h{left:0;bottom:0}.tg-turbogrid .tg-scrollbar-track{position:relative;width:100%;height:100%;background:#f9f9f9;overflow:hidden;user-select:none}.tg-turbogrid .tg-scrollbar-thumb{position:absolute;top:0;left:0;border-radius:1px;background:#999;overflow:hidden;user-select:none}.tg-turbogrid .tg-scrollbar-thumb:hover{background:#888}.tg-turbogrid .tg-scrollbar-thumb-hold{background:#666}.tg-turbogrid .tg-scrollbar-thumb-hold:hover{background:#666}.tg-turbogrid .tg-scrollbar-round .tg-scrollbar-track{border-radius:10px}.tg-turbogrid .tg-scrollbar-round .tg-scrollbar-thumb{border-radius:10px}.tg-turbogrid .tg-scroll-pane{position:relative;margin:0;padding:0;border:none;outline:none;overflow:hidden}.tg-turbogrid .tg-scroll-view{position:relative;width:100%;height:100%;margin:0;padding:0;border:none;overflow:hidden}.tg-turbogrid .tg-scroll-body{position:absolute}.tg-turbogrid .tg-header{position:relative;width:10000px;border-left:0;overflow:hidden}.tg-turbogrid .tg-header-table{position:relative;color:#5e5e5e;font-weight:bold;font-size:14px;line-height:16px;border-bottom:thin solid #e5e5e5;overflow:hidden}.tg-turbogrid .tg-header-item{position:absolute;bottom:0}.tg-turbogrid .tg-header-group-item{overflow:hidden}.tg-turbogrid .tg-header-group-item::after{position:absolute;left:5px;bottom:0;content:"";display:block;width:calc(100% - 10px);height:1px;border-bottom:thin solid #ccc}.tg-turbogrid .tg-column-header{position:absolute;bottom:0;overflow:hidden}.tg-turbogrid .tg-column-header .tg-column-name{padding:10px 5px;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-column-header .tg-column-name.tg-header-group-name{margin:0 5px;padding:5px 0}.tg-turbogrid .tg-column-resizing{position:absolute;top:0;right:-5px;z-index:100;width:10px;height:100%;background:#ccc;cursor:ew-resize;opacity:0}.tg-turbogrid .tg-header-column-last .tg-column-resizing{right:0}.tg-turbogrid .tg-column-sortable .tg-column-name{cursor:pointer}.tg-turbogrid .tg-column-sortable .tg-sort-indicator{cursor:pointer}.tg-turbogrid .tg-column-sorted{color:#000}.tg-turbogrid .tg-header-sort-h .tg-column-name{padding:12px 5px 15px}.tg-turbogrid .tg-header-sort-h .tg-column-sort{width:100%;height:15px;margin-top:-15px;padding:0 5px;overflow:hidden}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator{position:relative;display:none;width:100%;height:100%}.tg-turbogrid .tg-header-sort-h .tg-column-sorted .tg-column-sort .tg-sort-indicator{display:block}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-line{position:absolute;top:1px;width:100%;height:0;border-top:thin solid #1e1e1e;overflow:hidden}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon{position:absolute;top:5px;left:0;right:inherit}.tg-turbogrid .tg-header-sort-h .tg-align-right .tg-sort-indicator-icon{left:inherit;right:0}.tg-turbogrid .tg-header-sort-h .tg-align-center .tg-sort-indicator-icon{left:50%;transform:translateX(-50%)}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-sort-h{display:block;width:19px;height:6px}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item{display:none;fill:#1e1e1e}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item-light{fill:#ababab}.tg-turbogrid .tg-column-sort-v{display:flex;flex-direction:row;align-items:center}.tg-turbogrid .tg-column-sort-v .tg-column-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-column-sort-v.tg-align-right{justify-content:right}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator{position:relative;width:16px;height:16px}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon{position:absolute}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-sort-v{display:block;width:10px;height:16px}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item{fill:#ababab}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item-light{fill:#ababab}.tg-turbogrid .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item{fill:#1e1e1e}.tg-turbogrid .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item-light{fill:#ababab}.tg-turbogrid .tg-sort-desc .tg-sort-indicator .tg-sort-indicator-icon .tg-desc{display:block}.tg-turbogrid .tg-sort-desc .tg-sort-indicator .tg-sort-indicator-icon .tg-asc{display:none}.tg-turbogrid .tg-sort-asc .tg-sort-indicator .tg-sort-indicator-icon .tg-desc{display:none}.tg-turbogrid .tg-sort-asc .tg-sort-indicator .tg-sort-indicator-icon .tg-asc{display:block}.tg-turbogrid .tg-column-line{position:absolute;top:0;left:0;z-index:100;display:none;height:100%;pointer-events:none}.tg-turbogrid .tg-column-line-item{position:absolute;top:0;bottom:0;display:block;width:0;height:100%;border-left:thin solid #ccc}.tg-turbogrid .tg-column-line-item.tg-active{border-left:thin solid #0077cf}.tg-turbogrid .tg-column-dragging{cursor:ew-resize}.tg-turbogrid .tg-column-dragging .tg-column-name{cursor:ew-resize}.tg-turbogrid .tg-column-dragging .tg-column-resizing:not(.tg-resizing-active){display:none}.tg-turbogrid .tg-tree{position:relative;display:flex;flex-direction:row;place-items:center left;width:100%;height:100%;overflow:hidden}.tg-turbogrid .tg-tree-icon{position:relative;width:15px;height:100%;min-height:9px;text-align:left;cursor:pointer;overflow:hidden}.tg-turbogrid .tg-tree-icon .tg-icon-tree{position:absolute;top:50%;left:0;display:block;width:9px;height:9px;transform:translate(0, -50%);overflow:hidden}.tg-turbogrid .tg-tree-icon .tg-tree-item{display:none}.tg-turbogrid .tg-tree-icon-collapsed .tg-tree-collapsed{display:block}.tg-turbogrid .tg-tree-icon-empty .tg-tree-collapsed{opacity:.5}.tg-turbogrid .tg-tree-icon-expanded .tg-tree-expanded{display:block}.tg-turbogrid .tg-tree-name{flex:1;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-tree-header .tg-tree .tg-tree-icon{display:none}.tg-turbogrid .tg-tree-icon-all{position:relative;height:17px}.tg-turbogrid .tg-tree-header-indent .tg-tree{padding-left:5px}.tg-turbogrid .tg-tree-header-indent .tg-tree .tg-tree-icon{display:block}.tg-turbogrid .tg-tree-header-indent.tg-column-sort-h .tg-column-sort{width:calc(100% - 20px);margin-left:20px}.tg-turbogrid .tg-pane{position:absolute;width:100%;outline:0;overflow:hidden}.tg-turbogrid .tg-header-frame{position:relative;display:block;outline:0;overflow:hidden}.tg-turbogrid .tg-header-frame .tg-pane{height:100%}.tg-turbogrid .tg-body-frame{position:relative;width:100%;outline:0}.tg-turbogrid .tg-body-message{position:absolute;display:none;width:100%;height:100%;padding:10px;overflow:hidden}.tg-turbogrid .tg-body-message img,.tg-turbogrid .tg-body-message div{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.tg-turbogrid .tg-body{position:absolute;outline:0}.tg-turbogrid .tg-cell-hover-icon{display:none}.tg-touch-device.tg-turbogrid .tg-cell-hover-icon{display:inherit}.tg-turbogrid .tg-cell-row-number{font-weight:normal}.tg-turbogrid .tg-cell-row-drag .tg-row-drag-icon{position:absolute;top:50%;left:50%;width:24px;height:24px;cursor:move;opacity:.8;transform:translate(-50%, -50%)}.tg-turbogrid .tg-cell-row-drag .tg-row-drag-icon:hover{opacity:1}.tg-turbogrid .tg-cell{position:absolute;z-index:1;height:100%;margin:0;padding:0 5px;color:#1e1e1e;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle;overflow:hidden}.tg-turbogrid .tg-cell:focus{outline:none}.tg-turbogrid .tg-cell.tg-flashing{border:1px solid red !important}.tg-turbogrid .tg-cell.tg-selected{background-color:beige}.tg-turbogrid .tg-cell.tg-align-left.tg-cell-negative{padding-left:1px}.tg-turbogrid .tg-cell.tg-align-right.tg-cell-negative{padding-right:1px}.tg-turbogrid .tg-cell.tg-cell-observer{display:flex;flex-direction:column;justify-content:center;padding:5px;line-height:normal;white-space:normal;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-cell.tg-cell-observer .tg-observer{position:relative;margin:0;padding:0;border:none}.tg-turbogrid .tg-row{position:absolute;width:100%;border:0;border-bottom:thin solid #e5e5e5}.tg-turbogrid .tg-row.tg-group-line{border-bottom:thin solid #999}.tg-turbogrid .tg-row.tg-none-line{border-bottom:none}.tg-turbogrid .tg-row.tg-top-line{border-top:thin solid #e5e5e5}.tg-turbogrid .tg-row.tg-group{font-weight:bold;overflow:hidden}.tg-turbogrid .tg-row.tg-group .tg-cell.tg-align-left.tg-cell-negative{padding-left:0}.tg-turbogrid .tg-row.tg-group .tg-cell.tg-align-right.tg-cell-negative{padding-right:0}.tg-turbogrid .tg-row.tg-hover .tg-cell .tg-cell-hover-icon{display:inherit}.tg-turbogrid .tg-row.tg-dragging{opacity:.3}.tg-turbogrid .tg-row.tg-clone{z-index:1000;border:1px dashed #ccc;border-right:none;border-left:none;background:#fff;cursor:move;opacity:.5}.tg-turbogrid .tg-row.tg-clone *{cursor:move}.tg-turbogrid .tg-row-placeholder{position:absolute;z-index:9999;width:100%;border-top:2px solid #00a8e1;pointer-events:none}.tg-turbogrid .tg-row::before,.tg-turbogrid .tg-row::after{position:absolute;top:0;left:0;content:"";z-index:100;display:none;width:100%;height:100%;pointer-events:none}.tg-turbogrid .tg-hover.tg-row::before{display:block;background:rgba(0,0,0,.08)}.tg-turbogrid .tg-selected.tg-row::after{display:block;background:rgba(0,0,0,.13)}.tg-lightblue .tg-header-item{border-top:thin solid #e8eaf0;border-right:thin solid #e8eaf0}.tg-lightblue .tg-column-name{padding:5px;color:#304265}.tg-lightblue .tg-header-group-item::after{display:none}.tg-lightblue .tg-checkbox .tg-icon-item{fill:#d4d7e0}.tg-lightblue .tg-checkbox:hover .tg-icon-item{fill:#107fff}.tg-lightblue .tg-checkbox.tg-selected .tg-select-checkbox{fill:#107fff}.tg-lightblue .tg-checkbox.tg-mixed .tg-select-mixed{fill:#107fff}.tg-lightblue .tg-cell{color:#304265;border-right:thin solid #e8eaf0}.tg-lightblue .tg-row{border-bottom:thin solid #e8eaf0}.tg-lightblue .tg-row.tg-group-line{border-bottom:thin solid #c9ccd8}.tg-lightblue .tg-row.tg-selected{background:rgba(58,116,213,.05)}.tg-lightblue .tg-row.tg-hover{background:rgba(58,116,213,.05)}.tg-lightblue .tg-row.tg-even{background:#fbfcfe}.tg-lightblue .tg-row.tg-odd{background:#fff}.tg-lightblue .tg-hover.tg-row::before{background:rgba(58,116,213,.05)}.tg-lightblue .tg-selected.tg-row::after{background:rgba(58,116,213,.1)}.tg-lightblue .tg-header-frame{border-bottom:thin solid #e8eaf0}.tg-lightblue .tg-row-not-found .tg-frozen-line-v{border-right:none}.tg-lightblue .tg-scrollbar-track{background:#fff}.tg-lightblue .tg-scrollbar-thumb{background:rgba(48,66,101,.35)}.tg-lightblue .tg-scrollbar-thumb:hover{background-color:#a8a8a8}.tg-lightblue .tg-scrollbar-thumb:active{background-color:#787878}.tg-dark{background:#1e1e1e}.tg-dark .tg-checkbox .tg-icon-item{fill:#ababab}.tg-dark .tg-header-table{color:#ccc;border-bottom:thin solid #333}.tg-dark .tg-header-group-item::after{border-bottom:1px solid #999}.tg-dark .tg-column-sorted{color:#fff}.tg-dark .tg-column-sorted .tg-tree-icon-all .tg-icon-item{fill:#fff}.tg-dark .tg-header-sort-h .tg-sort-indicator-line{border-top:thin solid #eee}.tg-dark .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item{fill:#eee}.tg-dark .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item-light{fill:#666}.tg-dark .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item{fill:#666}.tg-dark .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item-light{fill:#666}.tg-dark .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item{fill:#fff}.tg-dark .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item-light{fill:#666}.tg-dark .tg-tree-icon .tg-icon-item{fill:#fff}.tg-dark .tg-tree-icon-all .tg-icon-item{fill:#999}.tg-dark .tg-header-item .tg-tree-icon .tg-icon-item{fill:#999}.tg-dark .tg-header-item .tg-column-sorted .tg-tree-icon .tg-icon-item{fill:#fff}.tg-dark .tg-row{border-bottom:thin solid #333}.tg-dark .tg-row.tg-group-line{border-bottom:thin solid #666}.tg-dark .tg-row.tg-clone{border:1px dashed #1e1e1e;opacity:.1}.tg-dark .tg-cell{color:#eee}.tg-dark .tg-body-message{color:#eee}.tg-dark .tg-hover.tg-row::before{background:rgba(255,255,255,.1)}.tg-dark .tg-selected.tg-row::after{background:rgba(255,255,255,.2)}.tg-dark .tg-mask{background-color:#fff}.tg-dark .tg-scrollbar-track{background:#333}.tg-dark .tg-scrollbar-thumb{background:#bbb}.tg-dark .tg-scrollbar-thumb:hover{background:#ddd}.tg-dark .tg-scrollbar-thumb-hold{background:#eee}.tg-dark .tg-scrollbar-thumb-hold:hover{background:#eee}.tg-pointer-events-none{pointer-events:none}',""]);const l=r},505:t=>{t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i="",o=void 0!==e[5];return e[4]&&(i+="@supports (".concat(e[4],") {")),e[2]&&(i+="@media ".concat(e[2]," {")),o&&(i+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),i+=t(e),o&&(i+="}"),e[2]&&(i+="}"),e[4]&&(i+="}"),i})).join("")},e.i=function(t,i,o,n,s){"string"==typeof t&&(t=[[null,t,void 0]]);var r={};if(o)for(var l=0;l0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=s),i&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=i):c[2]=i),n&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=n):c[4]="".concat(n)),e.push(c))}},e}},256:t=>{t.exports=function(t){return t[1]}}},e={};function i(o){var n=e[o];if(void 0!==n)return n.exports;var s=e[o]={id:o,exports:{}};return t[o](s,s.exports,i),s.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var o in e)i.o(e,o)&&!i.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var o={};(()=>{i.d(o,{$:()=>w,MP:()=>e,_d:()=>k,xA:()=>Xt,In:()=>X,T8:()=>B,Gr:()=>kt,ht:()=>Kt,J0:()=>d,xv:()=>Yt,Ay:()=>qt});const t="turbogrid",e={ID:t,NS:`tg-${t}`,VERSION:"3.2.0",TIMESTAMP:"2024-06-20T10:33:49.165Z",UP:"up",DOWN:"down",LEFT:"left",RIGHT:"right",TREE_INDENT:15},n=function(t){if(!t||"object"!=typeof t)return!1;const e=Object.prototype.toString.call(t);return!!["[object Object]","[object Array]"].includes(e)&&(!t.constructor||!![Object,Array].includes(t.constructor))},s=function(t,e){let i;return t.forEach((t=>{n(t)&&(i||(i=t instanceof Array?[]:{}),t instanceof Array?function(t,e,i){const o=e.length;for(let s=0;s{this.execute()})):Promise.resolve().then((()=>{this.execute()}))}execute(){if(!this.started)return;this.started=!1;const t=this.callback;this.callback=null,"function"==typeof t&&t.call(this)}cancel(){this.started=!1,this.callback=null}}const a=new WeakMap,c={isObject:n,merge:l,hasOwn:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},uid:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;const e="0123456789abcdefghijklmnopqrstuvwxyz";let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";for(;t--;)i+=e[36*Math.random()|0];return i},isNum:function(t){if("number"!=typeof t||isNaN(t))return!1;return(e=t)!==Number.MAX_VALUE&&e!==Number.MIN_VALUE&&e!==Number.NEGATIVE_INFINITY&&e!==Number.POSITIVE_INFINITY;var e},toNum:function(t,e){return"number"!=typeof t&&(t=parseFloat(t)),isNaN(t)&&(t=0),e&&!Number.isInteger(t)&&(t=Math.round(t)),t},convertNum:function(t){if("string"==typeof t){if(/^[-+]?\d+(\.\d+)?$/gi.test(t))return parseFloat(t)}return t},clamp:function(t,e,i){return Math.max(Math.min(t,i),e)},per:function(t){return t=c.toNum(t),t=c.clamp(t,0,1)},replace:function(t,e){return t=`${t}`,e?t=t.replace(/\{([^}]+)\}/g,(function(t,i){return c.hasOwn(e,i)?e[i]:t})):t},isArray:function(t){return!!(t&&t instanceof Array)},toList:function(t){return t instanceof Array?t:void 0===t?[]:"string"==typeof t?[t]:t&&c.hasOwn(t,"length")?Array.from(t):[t]},isList:function(t){return!!(c.isArray(t)&&t.length>0)},inList:function(t,e){if(!c.isList(e))return!1;for(let i=0,o=e.length;i{if(!c.isList(t))return;let n=0;const s=t.length;for(;nt.startsWith(e))).forEach((e=>{t[e]=null}))},hasShiftKey:function(t){let e=!1;return t&&(e=t.shiftKey),e},isTouchDevice:function(){return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0},contains:function(t,e){if(!t||!e)return!1;if(t===e)return!0;if("function"==typeof t.contains)return t.contains(e);let i=e.parentNode;for(;i;){if(i===t)return!0;i=i.parentNode}return!1},isNarrowCharacter:function(t){const e=t.codePointAt(0);return e>=32&&e<=126||162===e||163===e||165===e||166===e||172===e||175===e||8361===e||e>=10214&&e<=10221||10629===e||10630===e||e>=65377&&e<=65470||e>=65474&&e<=65479||e>=65482&&e<=65487||e>=65490&&e<=65495||e>=65498&&e<=65500||e>=65512&&e<=65518},getCharLen:function(t){let e=0;if(!t)return e;for(const i of String(t))e+=c.isNarrowCharacter(i)?1:2;return e},pascalToKebabCase:function(t){return`${t}`.trim().replace(/([a-z])([A-Z])/g,"$1-$2").replace(/\W/g,(t=>/[À-ž]/.test(t)?t:"-")).replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").toLowerCase()},classMap:function(t){if("string"==typeof t)return t.trim();if(Array.isArray(t)){let e=t.filter((t=>t));return e=e.map((t=>t&&"object"==typeof t?c.classMap(t):String(t).trim())),e=e.filter((t=>t)),e=Array.from(new Set(e)),e.join(" ")}if(t&&"object"==typeof t){const e=[];return Object.keys(t).forEach((i=>{t[i]&&e.push(i)})),e.join(" ")}return""},styleMap:function(t){if("string"==typeof t)return t.trim();if(Array.isArray(t)){let e=t.filter((t=>t));return e=e.map((t=>{const e=String(t).trim();return e?-1===e.indexOf(":")?"":e.endsWith(";")?e:`${e};`:""})),e=e.filter((t=>t)),e=Array.from(new Set(e)),e.join(" ")}if(t&&"object"==typeof t){const e=[];return Object.keys(t).forEach((i=>{const o=t[i];if(o||0===o){const t=String(o).trim();t&&e.push(`${c.pascalToKebabCase(i)}: ${t};`)}})),e.join(" ")}return""},getInstance:function(t){if(t){const e=document.getElementById(t);if(e)return a.get(e)}},setInstance:function(t,e){t&&a.set(t,e)},bindEvents:function(t,e){t&&(c.unbindEvents(t),Object.keys(t).forEach((i=>{const o=t[i];o.target=o.target||e,o.target.addEventListener(i,o.handler,o.options)})))},unbindEvents:function(t){t&&Object.keys(t).forEach((e=>{const i=t[e];i.target&&i.target.removeEventListener(e,i.handler,i.options)}))},preventDefault:function(t){t&&"function"==typeof t.preventDefault&&t.cancelable&&t.preventDefault()},debounce:function(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100;const o=function(){clearTimeout(e),e=setTimeout((()=>{t.apply(this,arguments)}),i)};return o.cancel=()=>{clearTimeout(e)},o},throttle:function(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,o=0;const n=function(){const n=Date.now();if(n>o+i)return clearTimeout(e),o=n,void t.apply(this,arguments);clearTimeout(e),e=setTimeout((()=>{o=n,t.apply(this,arguments)}),i)};return n.cancel=()=>{clearTimeout(e),o=0},n},microtask:function(t){const e=new h,i=function(){e.start((()=>{t.apply(this,arguments)}))};return i.cancel=()=>{e.cancel()},i},nextTick:function(t){"function"==typeof window.queueMicrotask?window.queueMicrotask((()=>{t()})):Promise.resolve().then((()=>{t()}))},cancelAsync:function(t){t&&(Object.keys(t).filter((e=>e.startsWith("async")&&"function"==typeof t[e])).forEach((e=>{const i=t[e];"function"==typeof i.cancel&&(i.cancel(),t[e]=null)})),Object.keys(t).filter((t=>t.startsWith("timeout"))).forEach((e=>{clearTimeout(t[e])})))}},d=c,u={animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},g=function(t){return null!==t&&1===t.nodeType},f=function(t){let e=t.ownerDocument.defaultView;return e&&e.opener||(e=window),e.getComputedStyle(t)},p={},m=function(t,e){return null!=(i=t)&&i===i.window?t[`inner${e}`]:(function(t){return null!==t&&9===t.nodeType}(t)&&(t=t.body),t[`client${e}`]);var i},b=function(t){return this.list=[],t?this.create(t):this};function w(t){return new b(t)}b.prototype={constructor:b,Query:"Query",list:[],create:function(t){return t instanceof b?t:"string"==typeof t?this.createFromString(t):((t.nodeType||t===window)&&(this.list=[t]),this)},createFromString:function(t){if("<"===(t=t.trim())[0]&&">"===t[t.length-1]&&t.length>=3)this.parseHTML(t);else{const e=document.querySelectorAll(t);for(let t=0,i=e.length;t{this.css(e,t[e])}))}var i;return this.each((function(i){let o=e;"number"!=typeof o||u[t]||(o+="px"),i.style[t]=o})),this},attr:function(t,e){if(!t)return this;if(1===arguments.length){if("object"==typeof t)return Object.keys(t).forEach((e=>{this.attr(e,t[e])})),this;const e=this.get(0);return e?e.getAttribute(t):void 0}return this.each((function(i){i.setAttribute(t,e)})),this},removeAttr:function(t){return t?(this.each((function(e){e.hasAttribute(t)&&e.removeAttribute(t)})),this):this},removeClass:function(t){if(!arguments.length)return this.each((function(t){t.className=""})),this;if(!t||"string"!=typeof t)return this;const e=t.split(" ");return this.each((function(t){e.forEach((function(e){e&&t.classList.remove(e)}))})),this},addClass:function(t){if(!t||"string"!=typeof t)return this;const e=t.split(" ");return this.each((function(t){e.forEach((function(e){e&&t.classList.add(e)}))})),this},hasClass:function(t){if(!t||"string"!=typeof t)return!1;let e=!1;return this.each((function(i){if(i.classList.contains(t))return e=!0,!1})),e},show:function(){return this.each((function(t){if(!g(t))return;const e=function(t){if(!p[t]){const e=document.createElement(t);document.body.appendChild(e);const i=f(e).display;e.parentNode.removeChild(e),p[t]=i}return p[t]}(t.nodeName);t.style.display=e})),this},hide:function(){return this.each((function(t){if(!g(t))return;"none"!==t.style.display&&(t.style.display="none")})),this},click:function(){const t=this.get(0);return t&&"function"==typeof t.click&&t.click(),this},offset:function(){const t={left:0,top:0},e=this.get(0);if(e){const i=e.getBoundingClientRect();t.left=i.left+window.scrollX,t.top=i.top+window.scrollY}return t},clone:function(){const t=new b;return this.each((function(e){if(e&&e.cloneNode){const i=e.cloneNode(!0);t.add(i)}})),t},children:function(){const t=new b;return this.each((function(e){let i=e.firstChild;for(;i;)t.add(i),i=i.nextSibling})),t},parent:function(){const t=this.get(0);return t?new b(t.parentNode):new b},is:function(t){if(!t)return!1;const e=t.split(",");let i=!0;return this.each((function(t){if(!t.nodeName)return i=!1,!1;const o=t.nodeName.toLowerCase();return d.inList(o,e)?void 0:(i=!1,!1)})),i}},Object.defineProperty(b.prototype,"length",{get:function(){return this.list.length}});const v={createCache:function(){this.headerCache=new Map,this.rowsCache=new Map,this.dataCache=new WeakMap,this.cellResizeObserver=this.createResizeObserver((t=>{this.cellResizeHandler(t)}))},setHeaderCache:function(t,e){this.headerCache.set(t,e)},getHeaderCache:function(t){return this.headerCache.get(t)},clearHeaderCache:function(){this.headerCache.clear()},setRowCache:function(t,e){this.rowsCache.set(t,{rowNodes:e,cellNodes:new Map,observerNodes:new Map})},getRowCache:function(t){return this.rowsCache.get(t)},deleteRowCache:function(t){const e=this.getRowCache(t);if(!e)return;this.rowsCache.delete(t);const i=e.observerNodes;i&&i.forEach((t=>{t&&this.cellResizeObserver.unobserve(t)}));const o=e.rowNodes;o&&o.each((t=>{this.removeNode(t)}))},deleteCellCache:function(t,e,i){if(i){const e=i.get(t);e&&this.cellResizeObserver.unobserve(e),i.delete(t)}e&&(this.removeNode(e.get(t)),e.delete(t))},getRowNodesByIndex:function(t){const e=this.getRowCache(t);if(e)return e.rowNodes},getCellNodeByIndex:function(t,e){const i=this.getRowCache(t);if(i)return i.cellNodes.get(e)},forEachRowsCache:function(t){this.rowsCache.forEach(((e,i)=>{t.call(this,i,e.rowNodes,e.cellNodes,e.observerNodes)}))},updateRowCacheTopOffset:function(){const t=this.frozenInfo.row;this.forEachRowsCache(((e,i)=>{if(!(e<=t)&&i){const t=this.getViewRowItem(e),o=this.getViewRowTop(t);i.css("top",o)}}))},updateRowCacheTopAndHeight:function(){this.forEachRowsCache(((t,e)=>{if(e){const i=this.getViewRowItem(t),o=this.getViewRowTop(i),n=this.getRowHeight(i);e.css({top:o,height:n,"line-height":n})}}))},setNodeDataCache:function(t,e){if(t)return this.dataCache.set(t,e)},getNodeDataCache:function(t){if(t)return this.dataCache.get(t)},removeCache:function(){this.headerCache=null,this.rowsCache=null,this.dataCache=null,this.cellResizeObserver&&(this.cellResizeObserver.disconnect(),this.cellResizeObserver=null)}},H=["onUpdated","onFirstUpdated","onHeaderUpdated","onSort","onColumnAdded","onColumnRemoved","onColumnWidthChanged","onRowAdded","onRowRemoved","onRowExpanded","onRowCollapsed","onRowSubsRequest","onRowDragged","onRowDropped","onRowMoved","onRowMouseEnter","onRowMouseLeave","onSelectChanged","onCellUpdated","onCellMouseEnter","onCellMouseLeave","onClick","onDblClick","onContextMenu","onMouseOver","onMouseOut","onTouchStart","onTouchMove","onTouchEnd","onScroll","onScrollStateChanged","onMouseWheel","onResize","onLayout","onKeyDown","onDestroy"],C={};H.forEach((t=>{C[t]=t}));const y=C,R={renderCells:function(t,e){t.forEach((t=>{this.drawRowCells(t,e)}))},getCellValue:function(t,e){return t[e.id]},renderCell:function(t){const{rowItem:e,columnItem:i,cellNode:o,observerNode:n}=t,s=this.getCellValue(e,i);let r=s;this.nullFormatter&&(r=this.nullFormatter.call(this,r,e,i,o,n));const l=e.tg_formatter||i.tg_formatter;"function"==typeof l&&(r=l.call(this,r,e,i,o,n));const h=n||o;this.renderNodeContent(h,r);const{highlightKey:a}=this.options.highlightKeywords;e[a+i.id]&&this.renderSettings.highlightCells.push(o),this.trigger(y.onCellUpdated,{value:s,rowItem:e,columnItem:i,node:o})},getPreRenderColumnList:function(t,e){const i=[];if(!e.length)return i;for(let o=0,n=e.length;o{this.createCellNode(t,e)}))},getCellClass:function(t,e,i){const o=e.tg_view_index,n=["tg-cell"];return i&&n.push("tg-cell-observer"),n.push(`tg-c-${o}`),e.align&&n.push(`tg-align-${e.align}`),0===e.tg_list_index&&n.push("tg-list-first"),e.tg_list_last&&n.push("tg-list-last"),n.push(d.classMap(e.classMap)),n.push(d.classMap(t[`${e.id}ClassMap`])),d.classMap(n)},cellResizeObserverHandler:function(t,e){const i=this.options.cellResizeObserver;if("function"==typeof i)return i.apply(this,[t,e])},cellResizeHandler:function(t){const e=new Map;t.forEach((t=>{const{target:i}=t,o=this.getNodeDataCache(i.parentNode);if(!o)return;const{row:n,rowItem:s}=o;e.set(n,s)}));let i=!1;e.forEach(((t,e)=>{const o=this.getRowCache(e);if(!o)return;const n=o.observerNodes;if(!n)return;const{rowHeight:s,rowMinHeight:r}=this.options;let l=Math.max(r||s,1);n.forEach((t=>{if(t){const e=t.clientHeight+11;e>l&&(l=e)}}));this.getRowHeight(t)!==l&&(t.tg_height=l,i=!0)})),i&&this.render("rows_cache")},createCellNode:function(t,e){const i=this.getRowCache(t);if(!i)return;const o=this.getViewRowItem(t),n=this.getViewColumnItem(e);if(!o||!n)return;const s=this.cellResizeObserverHandler(o,n),r=document.createElement("div");r.setAttribute("column",e);const l=this.getCellClass(o,n,s);r.className=l;const h=d.styleMap(n.styleMap)+d.styleMap(o[`${n.id}StyleMap`]);h&&(r.style.cssText=h);const a=i.rowNodes,c=n.tg_frozen,u=this.getCellRowNode(a,c);let g;this.appendNode(u,r),s&&(g=document.createElement("div"),g.className="tg-observer",r.appendChild(g),this.cellResizeObserver.observe(g),i.observerNodes.set(e,g));const f={row:t,rowItem:o,rowNode:u,column:e,columnItem:n,cellNode:r,observerNode:g};this.setNodeDataCache(r,f),i.cellNodes.set(e,r),this.renderCell(f)},getCellRowNode:function(t,e){const i=t.get(0);if(this.frozenInfo.columns){const o=t.get(1);return this.frozenInfo.right?e?o:i:e?i:o}return i}},S={addColumn:function(t,e,i){let o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const n=this.getToBeAddedItemList(t);if(!n.length)return!1;let s;if(null!=e&&(s=this.getColumnItem(e),!s))return!1;const r=this.getToBeAddedParentSubs(s,this.columns),l=[this.getToBeAddedPositionIndex(i,r),0].concat(n);r.splice.apply(r,l),this.onNextUpdated((function(){this.trigger(y.onColumnAdded,n)}));const h={type:"columns"};return o&&(h.scrollColumn=n[n.length-1]),this.render(h),!0},deleteColumn:function(t){const e=this.toColumnItemList(t,(t=>!t.private));return!!e.length&&(this.removeColumnsHandler(e),this.onNextUpdated((function(){this.trigger(y.onColumnRemoved,e)})),this.render("columns"),!0)},removeColumnsHandler:function(t){const e=[].concat(t);e.sort((function(t,e){return e.tg_index-t.tg_index})),e.forEach((t=>{let e;if(t===this.sortColumn&&this.removeSortColumn(),t.tg_parent)e=t.tg_parent.subs,e.splice(t.tg_sub_index,1);else{e=this.columns;const i=e.findIndex((e=>e===t));-1!==i&&e.splice(i,1)}!e.length&&t.tg_parent&&(t.tg_parent.subs=null)}))}},T={setColumnWidth:function(t,e){return this.updateColumnWidth(t,e)?(this.resize(),this):this},updateColumnWidth:function(t,e){const i=this.getColumnItem(t);return!!i&&(!!d.isNum(e)&&(e=Math.round(e),e=Math.max(0,e),i.tg_width!==e&&(i.width=e,i.minWidth=Math.min(i.minWidth,e),i.maxWidth=Math.max(i.maxWidth,e),this.updateViewColumnWidth(i),!0)))},showColumn:function(t){return this.updateColumnsInvisible(this.toColumnItemList(t),!1)},hideColumn:function(t){return this.updateColumnsInvisible(this.toColumnItemList(t),!0)},updateColumnsInvisible:function(t,e){if(!t.length)return!1;const i=[];return t.forEach((t=>{t.invisible!==e&&(t.invisible=e,t.tg_invisible=e,i.push(t))})),!!i.length&&(this.render("columns"),!0)}},E={showColumnLine:function(t){t&&(this.$columnLineContainer.show(),this.renderColumnLine(t))},hideColumnLine:function(){this.previousColumnLineActive||this.$columnLineContainer.hide()},setColumnLineActive:function(t){this.setTextSelectable(!t),this.rowHoverable=!t,t!==this.previousColumnLineActive&&(this.previousColumnLineActive=t,t?this.$columnLineItem.addClass("tg-active"):this.$columnLineItem.removeClass("tg-active"))},getColumnLineLeft:function(t){let e=t.tg_left;return t.tg_frozen||(e-=this.scrollLeft),this.frozenInfo.right&&(t.tg_frozen?e=t.tg_left+this.paneWidthL:e-=this.columnsWidthR),e},renderColumnLine:function(t){const e=this.getHeaderItemNode(t).offsetTop,i=t.tg_width,o=this.getColumnLineLeft(t);this.$columnLineItemL.css({top:e,left:o}),this.$columnLineItemR.css({top:e,left:o+i-1}),this.frozenInfo.right||(this.frozenInfo.columns&&!t.tg_frozen&&o{this.renderColumnLine(e.columnItem)})),this.resize()},columnWidthTouchStartHandler:function(t,e){d.preventDefault(e.e);const i=e.columnItem;this.showColumnLine(i),this.setColumnLineActive(!0),e.index=i.tg_index;const o=this.getColumnHeaderNode(i);e.width=o.clientWidth},columnWidthTouchMoveHandler:function(t,e){d.preventDefault(e.e);const i=e.columnItem;let o=e.width+e.offsetX;o=d.clamp(o,i.minWidth,i.maxWidth),i.tg_width!==o&&(i.width=o,this.updateViewColumnWidth(i),this.renderColumnLine(i))},columnWidthTouchEndHandler:function(t,e){d.preventDefault(e.e),this.setColumnLineActive(!1),this.hideColumnLine(),this.resize()}},I={getColumnItem:function(t){return d.isNum(t)?(t<0&&(t=this.columnsInfo.length+t),this.columnsInfo.indexCache[t]):t?d.isNum(t.tg_index)?t:this.getColumnItemById(t.id||t):void 0},getColumnItemById:function(t){return this.getColumnItemBy("id",t)},getColumnItemBy:function(t,e){if(void 0!==e)return this.columnsInfo.indexCache.find((i=>i[t]===e))},getColumnsLength:function(t){return t?this.columnsInfo.length:this.viewColumns.length},getViewColumnItem:function(t){return this.viewAllColumns[t]},isColumnSortable:function(t){return!!t&&(!t.tg_group&&(!(!t.name||!t.id)&&this.isSortable(t)))},isColumnResizable:function(t){return!!t&&(!t.tg_group&&(!d.hasOwn(t,"resizable")||Boolean(t.resizable)))},updateViewColumnWidth:function(t){return t.tg_width=t.width,this.updateColumnHeaderSize(t),this.updateTotalColumnsWidth(),this.updateHeaderLayerHeight(),this.cssRulesInvalid=!0,this.resizeBodyHandler(),this.trigger(y.onColumnWidthChanged,t),!0},updateTotalColumnsWidth:function(){this.blankColumn.tg_width=0;const t=this.viewColumns;let e=0,i=0;const o=this.frozenInfo.columns,n=t.length;let s=0;for(let r=0;r0&&(s+=l,o&&r>=o?i+=l:e+=l)}if(this.frozenInfo.right){const t=e;e=i,i=t}this.columnsWidthL=e,this.columnsWidthR=i,this.columnsWidth=e+i},updateColumnHeaderSize:function(t){this.updateColumnHeaderWidth(t),this.updateColumnHeaderHeight(t,!0),this.updateColumnGroupWidth(t)},updateColumnHeaderWidth:function(t){const e=this.getColumnHeaderNode(t);if(!e)return;const i=t.tg_width;this.isInvisible(t)||i<=0?e.style.display="none":(e.style.display="",e.style.width=`${i}px`)},updateColumnHeaderHeight:function(t,e){if(t.tg_height=0,t.tg_width<=0)return;if(this.isInvisible(t))return;e&&(t.tg_element_height=0);const i=t.tg_element_height;if(i)return void(t.tg_height=i);const o=this.getColumnHeaderHeight(t);t.tg_height=o,t.tg_element_height=o},getColumnHeaderHeight:function(t){const e=this.getColumnHeaderNode(t);return e?e.clientHeight:0},updateColumnGroupWidth:function(t){const e=t.tg_parent;if(!e)return;const i=this.getColumnGroupWidth(e);e.tg_width!==i&&(e.tg_width=i,this.updateColumnHeaderSize(e))},getColumnGroupWidth:function(t){if(this.isInvisible(t))return 0;let e=0;return t.subs&&t.subs.forEach((t=>{this.isInvisible(t)||d.isNum(t.tg_width)&&(e+=t.tg_width)})),e}},L={initTreeInfo:function(t,e){const i=[];let o=!1,n=0,s=0;const r=function(t,r,l){(t=>{t.invisible?t.tg_invisible=!0:t.tg_invisible&&(t.tg_invisible=!1)})(t),((t,i)=>{if(e>=0&&!t.tg_invisible)return t.tg_frozen=!0,void(e-=1);t.tg_frozen&&(t.tg_frozen=!1)})(t),(t=>{if(d.hasOwn(t,"subs")){if(Array.isArray(t.subs))return o=!0,t.tg_group=!0,void(t.tg_subs_length=t.subs.length);t.subs=null}t.tg_group&&(t.tg_group=!1)})(t),((t,e)=>{t.tg_parent=e;let i=0;e&&(i=e.tg_level+1,i>n&&(n=i)),t.tg_level=i})(t,l),t.tg_index=s,t.tg_sub_index=r,i.push(t),s+=1},l=function(t,e){let i=0;const o=t.length;for(;i{if(!this.isInvisible(e))return this.isRowSelectable(e)?t(e,i,o):void 0})),this},toRowItemList:function(t,e){let i=d.toList(t).map((t=>this.getRowItem(t))).filter((t=>t));return"function"==typeof e&&(i=i.filter(e)),i},toColumnItemList:function(t,e){let i=d.toList(t).map((t=>this.getColumnItem(t))).filter((t=>t));return"function"==typeof e&&(i=i.filter(e)),i},isRowLeaf:function(t){return!!t&&("blank"!==t.formatter&&(!t.tg_frozen&&!t.tg_group))},isRowSelectable:function(t){return!!t&&(d.hasOwn(t,"selectable")?Boolean(t.selectable):this.isRowLeaf(t))},isEmptyGroup:function(t){return!(!t||!t.tg_group||0!==t.tg_subs_length)},isInvisible:function(t){return!!t&&(!(!t.tg_filtered&&!t.tg_invisible)||!!this.isInvisible(t.tg_parent))},isSortable:function(t){return!!t&&(!d.hasOwn(t,"sortable")||Boolean(t.sortable))},isCollapsedChanged:function(t,e){return Boolean(t.collapsed)!==e},isSelectedChanged:function(t,e){return Boolean(t.selected)!==e}},x={updateCssRules:function(){this.cssRulesInvalid&&(this.cssRulesInvalid=!1,this.initCssRules(),this.updateColumnsCssRules(),this.updateHeadersCssRules(),this.updateStyleElement())},initCssRules:function(){this.removeCssRules(),this.cssList={},this.cssDisplayCache={};const t=this.getRowHeight(),e=this.createCssRule(".tg-row");e.height=`${t}px`,e["line-height"]=`${t}px`},resetCssDisplay:function(t){if(this.cssDisplayCache){t=t||"";for(const e in this.cssDisplayCache)if(d.hasOwn(this.cssDisplayCache,e)){this.cssDisplayCache[e].style.display=t}}},updateColumnsCssRules:function(){const t=this.viewColumns,e=this.frozenInfo.column,i={};let o=0;for(let n=0,s=t.length;n=0;i--){const e=this.headerLayerHeight[i],o=this.createCssRule(`.tg-h-${i}`);o.bottom=`${t}px`,o.height=`${e}px`,t+=e}this.getLayerCombinations(e).forEach((t=>{const e=this.createCssRule(`.tg-h-${t}`);let i=0;t.split("").forEach((t=>{i+=this.headerLayerHeight[t]||0})),e.height=`${i}px`}))},getLayerCombinations:function(t){let e="";for(;t>=0;)e+=t,t--;if(e.length<2)return[];const i=[],o=function(t,e){const n=t.length;let s=e+2;for(;s<=n;){const o=t.substring(e,s);i.push(o),s++}e=i){let t="Possible Event memory leak detected. ";return t+=`More than ${i} (max limit) listeners added. `,t+="Use setMaxListeners(n) to increase limit.",void console.warn(t,e)}t.events.push(e)},addEvents:function(t,e,i){e.forEach((function(e){const o=e.type;t[o]||(t[o]={events:[]});if("function"!=typeof e.handler)return;const n=t[o];N.addEvent(n,e,i)}))},removeEventByNamespace:function(t,e){Object.keys(t).forEach((function(i){const o=t[i],n=[];o.events.forEach((function(t){t&&t.namespace!==e&&n.push(t)})),o.events=n}))},removeEventByHandler:function(t,e,i){const o=t[e];if(!o)return;const n=[];o.events.forEach((function(t){t&&t.handler!==i&&n.push(t)})),o.events=n},removeEventByType:function(t,e){const i=t[e];i&&(i.events=[])},removeEvent:function(t,e){const i=e.type,o=e.namespace;if(!i&&o)return void N.removeEventByNamespace(t,o);const n=e.handler;"function"!=typeof n?N.removeEventByType(t,i):N.removeEventByHandler(t,i,n)},removeEvents:function(t,e){e.forEach((function(e){N.removeEvent(t,e)}))},removeAllEvents:function(t){Object.keys(t).forEach((function(e){N.removeEventByType(t,e)}))},sendEventList:function(t,e,i,o){const n=e.events;for(let e=0;e!t.onceCalled))},sendEvent:function(t,e,i,o){const n=e[i];if(!n)return;const s=new P({type:i,target:t,currentTarget:t,data:o});N.sendEventList(t,n,s,o)}},_=N;class k{maxListeners=10;setMaxListeners(t){this.maxListeners=Number(t)||10}getMaxListeners(){return this.maxListeners}getEventListeners(){return this.eventListeners||(this.eventListeners={}),this.eventListeners}delEventListeners(){this.eventListeners=null}bind(t,e,i){const o=_.getEventList(this,t,e,i);if(!o.length)return this;const n=this.getEventListeners();return _.addEvents(n,o,this.maxListeners),this}once(t,e){return this.bind(t,e,{once:!0})}unbind(t,e,i){const o=this.getEventListeners();if(!arguments.length)return _.removeAllEvents(o),this;const n=_.getEventList(this,t,e,i);return n.length?(_.removeEvents(o,n),this):this}trigger(t,e){const i=this.getEventListeners();return _.sendEvent(this,i,t,e),this}}const V={DRAG_START:"drag_start",DRAG_MOVE:"drag_move",DRAG_END:"drag_end"};class O extends k{static EVENT=V;generateOptions(t){return d.merge({type:"mouse",startX:0,startY:0,previousX:0,previousY:0,currentX:0,currentY:0,moveX:0,moveY:0,offsetX:0,offsetY:0,changed:!1},t)}start(t,e){t&&(this.unbindEvents(),this.bindEvents(),this.options=this.generateOptions(e),this.startHandler(t))}bindEvents(){this.windowEvents={mousemove:{handler:t=>{this.iframeHandler(t),this.mouseMoveHandler(t)},options:!0},mouseup:{handler:t=>{this.mouseUpHandler(t)},options:{once:!0}}},d.bindEvents(this.windowEvents,window)}unbindEvents(){d.unbindEvents(this.windowEvents),this.windowEvents=null,this.previousIframe&&(this.previousIframe.classList.remove("tg-pointer-events-none"),this.previousIframe=null)}iframeHandler(t){const e=t.target;"IFRAME"===e.nodeName&&e!==this.previousIframe&&(this.previousIframe&&this.previousIframe.classList.remove("tg-pointer-events-none"),e.classList.add("tg-pointer-events-none"),this.previousIframe=e)}startHandler(t){const e=this.options;e.e=t,e.startX=t.pageX,e.startY=t.pageY,e.currentX=e.startX,e.currentY=e.startY,this.hasMoved=!1}mouseMoveHandler(t){d.preventDefault(t);const e=this.options;e.e=t,e.previousX=e.currentX,e.previousY=e.currentY,e.currentX=t.pageX,e.currentY=t.pageY,e.moveX=e.currentX-e.previousX,e.moveY=e.currentY-e.previousY,e.offsetX=e.currentX-e.startX,e.offsetY=e.currentY-e.startY,e.changed=!(0===e.offsetX&&0===e.offsetY),this.hasMoved?this.trigger(V.DRAG_MOVE,e):(this.hasMoved=!0,this.trigger(V.DRAG_START,e))}mouseUpHandler(t){this.unbindEvents();const e=this.options;this.hasMoved&&(e.e=t,d.preventDefault(t),this.trigger(V.DRAG_END,e))}destroy(){this.unbindEvents(),this.unbind()}}const $={Linear:{None:function(t){return t}}},D={MOTION_START:"motion_start",MOTION_MOVE:"motion_move",MOTION_END:"motion_end",MOTION_STOP:"motion_stop"};class B extends k{static EVENT=D;constructor(t){super(),this.constructorOptions=t,this.stopped=!0}generateOptions(t){return d.merge({easing:null,duration:100,from:0,till:1,data:0},this.constructorOptions,t)}stop(){return this.stopped||(this.stopped=!0,this.cancelAnimationFrame(),this.trigger(D.MOTION_STOP,this.data)),this}start(t){return this.stop(),this.stopped=!1,this.options=this.generateOptions(t),this.initCalculation(),this.data=this.calculateHandler(0),this.trigger(D.MOTION_START,this.data),this.stopped||(this.time=Date.now(),this.requestAnimationFrame(this.moveHandler)),this}requestAnimationFrame(t){this.requestId=window.requestAnimationFrame((()=>{t.apply(this)}))}cancelAnimationFrame(){window.cancelAnimationFrame(this.requestId)}getEasing(t){return"function"!=typeof t&&(t=d.getValue($,t,$.Linear.None)),t}moveHandler(){const t=Date.now()-this.time,e=this.duration;if(t{o[n]=this.calculateNumber(t,e[n],i[n])})),o):(this.calculateKeys=[],Object.keys(e).forEach((n=>{const s=e[n],r=i[n];d.isNum(s)&&d.isNum(r)&&(o[n]=this.calculateNumber(t,s,r),this.calculateKeys.push(n))})),o)}calculateNumber(t,e,i){return(i-e)*t+e}calculateNone(t,e,i){return e}destroy(){this.stop(),this.unbind()}}const A={TOUCH_START:"touch_start",TOUCH_MOVE:"touch_move",TOUCH_END:"touch_end",TOUCH_INERTIA:"touch_inertia"};class W extends k{static EVENT=A;generateOptions(t){return d.merge({type:"touch",startX:0,startY:0,previousX:0,previousY:0,currentX:0,currentY:0,moveX:0,moveY:0,offsetX:0,offsetY:0,changed:!1,touchLength:0,direction:"",inertia:!1,inertiaTime:200},t)}start(t,e){t&&(this.unbindEvents(),this.bindEvents(),this.options=this.generateOptions(e),this.startHandler(t))}bindEvents(){this.touchEvents={touchmove:{handler:t=>{this.touchMoveHandler(t)},options:{passive:!1}},touchend:{handler:t=>{this.touchEndHandler(t)},options:{passive:!1,once:!0}},touchcancel:{handler:t=>{this.touchCancelHandler(t)},options:{passive:!1,once:!0}}},d.bindEvents(this.touchEvents,document.body)}unbindEvents(){this.motionStop(),d.unbindEvents(this.touchEvents),this.touchEvents=null}startHandler(t){this.trackingPoints=[];const e=t.touches,i=e[0];if(!i)return;const o=this.options;o.e=t,o.startX=i.clientX,o.startY=i.clientY,o.currentX=o.startX,o.currentY=o.startY,o.touchLength=e.length,this.addTrackingPoint(o),this.trigger(A.TOUCH_START,o)}touchMoveHandler(t){const e=t.touches,i=e[0];if(!i)return;const o=this.options;o.e=t,o.previousX=o.currentX,o.previousY=o.currentY,o.currentX=i.clientX,o.currentY=i.clientY,o.moveX=o.currentX-o.previousX,o.moveY=o.currentY-o.previousY,o.offsetX=o.currentX-o.startX,o.offsetY=o.currentY-o.startY,o.changed=!(0===o.offsetX&&0===o.offsetY),o.touchLength=e.length,o.direction=this.getDirection(o),this.addTrackingPoint(o),this.trigger(A.TOUCH_MOVE,o)}touchEndHandler(t){this.unbindEvents();const e=this.options;e.e=t,this.trigger(A.TOUCH_END,e);const i=t.changedTouches[0];if(!i)return;const o=t.touches;e.touchLength=o.length,e.touchLength>0||(e.currentX=i.clientX,e.currentY=i.clientY,this.addTrackingPoint(e),this.motionStart())}touchCancelHandler(t){this.unbindEvents(),this.trigger(A.TOUCH_END,this.options)}getMotionInfo(){const t=this.trackingPoints;if(t.length<2)return;if(this.filterTrackingPoints(t),t.length<2)return;const e=t[0],i=t[t.length-1],o=i.t-e.t;if(o<=0)return;let n=i.x-e.x,s=i.y-e.y;const r=Math.abs(n),l=Math.abs(s);r>l?s=0:n=0;return{offsetDistance:Math.max(r,l),offsetTime:o,offsetX:n,offsetY:s}}motionStart(){const t=this.options;if(!t.inertia)return;const e=this.getMotionInfo();if(!e)return;const i=500*e.offsetDistance/50,o=d.clamp(i,20,2e3),n={x:20*(e.offsetX/e.offsetTime),y:20*(e.offsetY/e.offsetTime)};this.motion=new B,this.motion.bind(B.EVENT.MOTION_MOVE,((e,i)=>{t.touchInertiaX=i.x,t.touchInertiaY=i.y,this.trigger(A.TOUCH_INERTIA,t)})),this.motion.start({duration:o,from:n,till:{x:0,y:0}})}motionStop(){this.motion&&(this.motion.destroy(),this.motion=null)}getDirection(t){const i=t.offsetX,o=t.offsetY,n=Math.abs(i),s=Math.abs(o);if(n0)return e.UP;if(o<0)return e.DOWN}if(n>s){if(i>0)return e.LEFT;if(i<0)return e.RIGHT}return""}filterTrackingPoints(t){t.reverse();const e=t.length,i=Date.now(),o=this.options.inertiaTime;for(let n=0;no){t.length=n;break}t.reverse()}addTrackingPoint(t){if(!t.inertia)return;const e=t.currentX,i=t.currentY,o=Date.now(),n=this.trackingPoints;n.push({x:e,y:i,t:o}),n.length>100&&this.filterTrackingPoints(n)}destroy(){this.unbindEvents(),this.unbind()}}const F={getAllEvents:function(){return[].concat(H)},bindEvents:function(){this.unbindEvents(),this.containerEvents={mousedown:{handler:t=>{this.containerMouseDownHandler(t)},options:!0},mousemove:{handler:t=>{this.containerMouseMoveHandler(t)},options:!0},mouseover:{handler:t=>{this.containerMouseOverOutHandler(t,!0)},options:!0},mouseout:{handler:t=>{this.containerMouseOverOutHandler(t,!1)},options:!0},mouseenter:{handler:t=>{this.containerMouseEnterLeaveHandler(t,!0)},options:!0},mouseleave:{handler:t=>{this.containerMouseEnterLeaveHandler(t,!1)},options:!0},touchstart:{handler:t=>{this.containerTouchStartHandler(t)},options:{passive:!1}},touchmove:{handler:t=>{this.containerTouchMoveHandler(t)},options:{passive:!1}},touchend:{handler:t=>{this.containerTouchEndHandler(t)},options:{passive:!1}},touchcancel:{handler:t=>{this.containerTouchCancelHandler(t)},options:{passive:!1}},wheel:{handler:t=>{this.containerWheelHandler(t)},options:{passive:!1}},click:{handler:t=>{this.containerClickHandler(t)},options:!0},dblclick:{handler:t=>{this.containerDblClickHandler(t)},options:!0},contextmenu:{handler:t=>{this.containerContextMenuHandler(t)},options:!0},selectstart:{handler:t=>{this.containerSelectStartHandler(t)},options:!0},keydown:{handler:t=>{this.containerKeyDownHandler(t)},options:!0}},d.bindEvents(this.containerEvents,this.container),this.columnWidthDrag=new O,this.columnWidthDrag.bind(O.EVENT.DRAG_START,((t,e)=>{this.columnWidthDragStartHandler(t,e)})).bind(O.EVENT.DRAG_MOVE,((t,e)=>{this.columnWidthDragMoveHandler(t,e)})).bind(O.EVENT.DRAG_END,((t,e)=>{this.columnWidthDragEndHandler(t,e)})),this.columnWidthTouch=new W,this.columnWidthTouch.bind(W.EVENT.TOUCH_START,((t,e)=>{this.columnWidthTouchStartHandler(t,e)})).bind(W.EVENT.TOUCH_MOVE,((t,e)=>{this.columnWidthTouchMoveHandler(t,e)})).bind(W.EVENT.TOUCH_END,((t,e)=>{this.columnWidthTouchEndHandler(t,e)})),this.rowDrag=new O,this.rowDrag.bind(O.EVENT.DRAG_START,((t,e)=>{this.rowDragStartHandler(t,e)})).bind(O.EVENT.DRAG_MOVE,((t,e)=>{this.rowDragMoveHandler(t,e)})).bind(O.EVENT.DRAG_END,((t,e)=>{this.rowDragEndHandler(t,e)})),this.rowTouch=new W,this.rowTouch.bind(W.EVENT.TOUCH_START,((t,e)=>{this.rowDragStartHandler(t,e)})).bind(W.EVENT.TOUCH_MOVE,((t,e)=>{this.rowDragMoveHandler(t,e)})).bind(W.EVENT.TOUCH_END,((t,e)=>{this.rowDragEndHandler(t,e)})),this.scrollTouch=new W,this.scrollTouch.bind(W.EVENT.TOUCH_START,((t,e)=>{this.scrollTouchStartHandler(t,e)})).bind(W.EVENT.TOUCH_MOVE,((t,e)=>{this.scrollTouchMoveHandler(t,e)})).bind(W.EVENT.TOUCH_END,((t,e)=>{this.scrollTouchEndHandler(t,e)})).bind(W.EVENT.TOUCH_INERTIA,((t,e)=>{this.scrollTouchInertiaHandler(t,e)}))},isDefaultPrevented:function(t){if(t){if(t.defaultPrevented)return!0;if(t.e&&t.e.defaultPrevented)return!0}return!1},getEventClosestNode:function(t,e){if(t&&t!==this.container)return t.classList.contains(e)?t:this.getEventClosestNode(t.parentNode,e)},getEventClosestData:function(t){if(!t||t===this.container)return;const e=this.getNodeDataCache(t);return e||this.getEventClosestData(t.parentNode)},getEventData:function(t){const e=this.getEventClosestData(t.target);if(e)return e.e=t,e},getWheelDelta:function(t,e,i){let o=t.deltaX,n=t.deltaY;return d.isNum(o)||(o=d.toNum(t.wheelDeltaX)),d.isNum(n)||(n=d.toNum(t.wheelDeltaY||t.wheelDelta)),1===t.deltaMode?(n*=e,o*=e):2===t.deltaMode&&(n*=i,o*=i),{deltaX:o,deltaY:n}},columnResizingMouseDownHandler:function(t){const e=this.getEventData(t);e&&this.columnWidthDrag.start(t,{columnItem:e.columnItem})},columnResizingTouchStartHandler:function(t){const e=this.getEventData(t);e&&this.columnWidthTouch.start(t,{columnItem:e.columnItem})},columnResizingMouseEnterLeaveHandler:function(t,e){const i=this.getEventData(t);i&&(e?this.showColumnLine(i.columnItem):this.hideColumnLine())},rowDragMouseDownHandler:function(t){const e=this.getEventData(t);e&&this.rowDrag.start(t,{rowItem:e.rowItem})},rowDragTouchStartHandler:function(t){const e=this.getEventData(t);e&&(this.protectedItem=e,this.rowTouch.start(t,{rowItem:e.rowItem}))},scrollPaneTouchStartHandler:function(t){if(!this.hasHScroll&&!this.hasVScroll)return;const e=this.getEventData(t);this.protectedItem=e,this.scrollTouch.start(t,{inertia:!0})},sortHandler:function(t,e){const i=e.columnItem;if(!this.isColumnSortable(i))return;const o=this.getEventClosestNode(t.target,"tg-column-name"),n=this.getEventClosestNode(t.target,"tg-column-sort");(o||n)&&(this.trigger(y.onSort,e),this.isDefaultPrevented(e)||this.setSortColumn(i))},selectIconAllClickHandler:function(t){const e=w(t);let i=!1;(e.hasClass("tg-selected")||e.hasClass("tg-mixed"))&&(i=!0),i=!i,this.selectAll(i)},cellEnterLeaveHandler:function(t,e){const i=this.getEventData(t);i&&(e?this.trigger(y.onCellMouseEnter,i):this.trigger(y.onCellMouseLeave,i))},rowEnterLeaveHandler:function(t,e){const i=this.getEventData(t);if(i&&(e?this.trigger(y.onRowMouseEnter,i):this.trigger(y.onRowMouseLeave,i),!this.isDefaultPrevented(i)))return this.renderRowHover(i.rowItem,e),this},containerMouseDownHandler:function(t){if(this.getEventClosestNode(t.target,"tg-column-resizing"))this.columnResizingMouseDownHandler(t);else if(this.options.rowDragVisible){this.getEventClosestNode(t.target,"tg-row-drag-icon")&&this.rowDragMouseDownHandler(t)}},containerMouseMoveHandler:function(t){this.scrollbarFadeInOutHandler(t,!0)},containerMouseOverOutHandler:function(t,e){const i=this.getEventClosestNode(t.target,"tg-cell"),o=this.getEventClosestNode(t.target,"tg-header-item");if(i||o){const i=this.getEventData(t);if(!i)return;e?this.trigger(y.onMouseOver,i):this.trigger(y.onMouseOut,i)}},containerMouseEnterLeaveHandler:function(t,e){this.scrollbarFadeInOutHandler(t,e);if(w(t.target).hasClass("tg-column-resizing"))return void this.columnResizingMouseEnterLeaveHandler(t,e);if(w(t.target).hasClass("tg-cell"))return void this.cellEnterLeaveHandler(t,e);w(t.target).hasClass("tg-row")&&this.rowEnterLeaveHandler(t,e)},containerTouchStartHandler:function(t){this.scrollTouch.motionStop();if(this.getEventClosestNode(t.target,"tg-column-resizing"))return void this.columnResizingTouchStartHandler(t);if(this.options.rowDragVisible){if(this.getEventClosestNode(t.target,"tg-row-drag-icon"))return void this.rowDragTouchStartHandler(t)}const e=this.getEventData(t);e&&(this.trigger(y.onTouchStart,e),this.isDefaultPrevented(e))||this.scrollPaneTouchStartHandler(t)},containerTouchMoveHandler:function(t){const e=this.getEventData(t);e&&this.trigger(y.onTouchMove,e)},containerTouchEndHandler:function(t){const e=this.getEventData(t);e&&this.trigger(y.onTouchEnd,e)},containerTouchCancelHandler:function(t){this.trigger(y.onTouchEnd,{e:t})},containerWheelHandler:function(t){if(this.hasMask)return;const e=this.getRowHeight(),i=this.bodyHeight,o=this.getWheelDelta(t,e,i),n={e:t,deltaX:o.deltaX,deltaY:o.deltaY,delta:o};if(this.trigger(y.onMouseWheel,n),this.isDefaultPrevented(n))return;let s=!1;this.scrollPaneHidden&&(s=this.scrollPaneFrozen.setOffsetH(o.deltaX),o.deltaX=0);(this.scrollPane.mouseWheelHandler(o)||s)&&d.preventDefault(t)},containerClickHandler:function(t){if(this.getEventClosestNode(t.target,"tg-tree-icon-all"))return void this.toggleAllRows();const e=this.getEventClosestNode(t.target,"tg-select-icon-all");if(e)return void this.selectIconAllClickHandler(e);const i=this.getEventData(t);if(!i)return;if(this.getEventClosestNode(t.target,"tg-header-item")){if(this.trigger(y.onClick,i),this.isDefaultPrevented(i))return;return void this.sortHandler(t,i)}if(this.getEventClosestNode(t.target,"tg-tree-icon"))return void this.toggleRow(i.rowItem);this.getEventClosestNode(t.target,"tg-select-icon")?this.setRowSelected(i.rowItem,t):this.trigger(y.onClick,i)},containerDblClickHandler:function(t){const e=this.getEventData(t)||{e:t};this.trigger(y.onDblClick,e)},containerContextMenuHandler:function(t){const e=this.getEventData(t)||{e:t};this.trigger(y.onContextMenu,e)},containerSelectStartHandler:function(t){if(this.options.textSelectable)return;w(t.target).is("input,textarea,code")||d.preventDefault(t)},containerKeyDownHandler:function(t){if(this.hasMask)return;const e={e:t};if(this.trigger(y.onKeyDown,e),this.isDefaultPrevented(e))return;const i=t.keyCode,o={9:this.keyTabHandler,13:this.keyEnterHandler,27:this.keyEscHandler,33:this.keyPageUpHandler,34:this.keyPageDownHandler,35:this.keyEndHandler,36:this.keyHomeHandler,37:this.keyLeftHandler,38:this.keyUpHandler,39:this.keyRightHandler,40:this.keyDownHandler}[i];if(!o)return;o.call(this,t)&&d.preventDefault(t)},unbindEvents:function(){d.unbindEvents(this.containerEvents),this.containerEvents=null,this.columnWidthDrag&&(this.columnWidthDrag.destroy(),this.columnWidthDrag=null),this.columnWidthTouch&&(this.columnWidthTouch.destroy(),this.columnWidthTouch=null),this.rowDrag&&(this.rowDrag.destroy(),this.rowDrag=null),this.rowTouch&&(this.rowTouch.destroy(),this.rowTouch=null),this.scrollTouch&&(this.scrollTouch.destroy(),this.scrollTouch=null),this.protectedItem=null}},G={exportData:function(t){const e=this.getData();return{columns:this.getTreeSnapshot(e.columns,t),rows:this.getTreeSnapshot(e.rows,t)}},isItemExportable:function(t){return!!t&&(!d.hasOwn(t,"exportable")||Boolean(t.exportable))},getTreeSnapshot:function(t,e){const i=(t,o)=>{d.isList(o)&&o.forEach((o=>{if(!this.isItemExportable(o))return;const n=this.getItemSnapshot(o,e),s=o.subs;Array.isArray(s)&&(n.subs=[],i(n.subs,s)),t.push(n)}))},o=[];return i(o,t),o},getItemSnapshot:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i={};return Object.keys(t).forEach((o=>{!0!==e[o]?!1!==e[o]&&"subs"!==o&&0!==o.indexOf("tg_")&&(i[o]=t[o]):i[o]=t[o]})),i}},j={flushRow:function(t){d.toList(t).forEach((t=>{this.deleteRowCache(t)}))},flushRowFrom:function(t){d.isNum(t)&&(0!==t?this.forEachRowsCache((e=>{e>=t&&this.deleteRowCache(e)})):this.flushBody())},flushBody:function(){this.forEachRowsCache((t=>{this.deleteRowCache(t)}))},flushSort:function(){this.frozenInfo.rows?this.flushRowFrom(this.frozenInfo.rows):this.flushBody()},flushColumn:function(t){const e=d.toList(t);this.forEachRowsCache(((t,i,o,n)=>{e.forEach((t=>{this.deleteCellCache(t,o,n)}))}))},flushColumnFrom:function(t){d.isNum(t)&&this.forEachRowsCache(((e,i,o,n)=>{o.forEach(((e,i)=>{i>=t&&this.deleteCellCache(i,o,n)}))}))},flushCell:function(t,e){const i=d.toList(t),o=d.toList(e);i.forEach((t=>{const e=this.getRowCache(t);if(!e)return;const i=e.cellNodes,n=e.observerNodes;o.forEach((t=>{this.deleteCellCache(t,i,n)}))}))},flushWithViewport:function(){const{rows:t,columns:e}=this.viewport;this.forEachRowsCache(((i,o,n,s)=>{t.includes(i)?n.forEach(((t,i)=>{e.includes(i)||this.deleteCellCache(i,n,s)})):this.deleteRowCache(i)}))}},U={"sort-h":'\n\n \n \n \n \n\n',"sort-v":'\n\n \n \n \n \n\n',checkbox:'\n\n \n \n \n\n',radio:'
    ',drag:'\n\n \n\n',tree:'\n\n \n \n\n'},X={icons:U,getIcon:function(t){let e=U[t];return e=String(e).trim(),e}},Y={header:function(t,e,i,o){return t},null:function(t,e,i,o){return e&&e.tg_group?t:null==t?"—":t},blank:function(t,e,i,o){return""},string:function(t,e,i,o){return t},number:function(t,e,i,o){return t},icon:function(t,e,i,o){return`${t}`},select:function(t,e,i,o){return this.isRowSelectable(e)?this.getSelectFormatterContent(e):""},rowDrag:function(t,e,i,o){return this.getRowDragFormatterContent(e)},rowNumber:function(t,e,i,o){return e.tg_row_number||""},tree:function(t,e,i,o){return this.getTreeFormatterContent(t,e)}},K={setFormatter:function(t,e){this.renderType="all";let i=t;if("string"==typeof t){if(this.formatters)return this.formatters[t]=e,this;i={},i[t]=e}return this.customFormatters=i,this},getFormatter:function(t){if(!t)return;const e=this.formatters[t];return"function"==typeof e?e.bind(this):void 0},getDefaultFormatter:function(t){return(Y[t]||Y.string).bind(this)},getSelectFormatterContent:function(t){let e="radio";this.options.selectMultiple&&(e="checkbox");const i=X.getIcon(e);return`
    ${i}
    `},getRowDragFormatterContent:function(t){if(t.tg_frozen)return"";return`
    ${X.getIcon("drag")}
    `},getTreeIndentWidth:function(t,i,o){if(!t)return 0;let n=5;return i||(n+=e.TREE_INDENT),n+=o*e.TREE_INDENT,n},getTreeFormatterContent:function(t,e){const i=this.rowsInfo.isTree,o=e.tg_group,n=this.isEmptyGroup(e);n&&(e.collapsed=!0);const s=e.collapsed,r=d.toNum(e.tg_level),l=this.getTreeIndentWidth(i,o,r),h=[];if(h.push(`
    `),o){const t={"tg-tree-icon":!0,"tg-tree-icon-collapsed":s,"tg-tree-icon-expanded":!s,"tg-tree-icon-empty":n},e=X.getIcon("tree"),i=`
    ${e}
    `;h.push(i)}return h.push(`
    ${t}
    `),h.push("
    "),h.join("")}},q={renderHeaderTables:function(){this.clearHeaderCache();const t=this.viewColumns,e=this.frozenInfo.columns;this.hasTreeColumn=!1,this.hasSortColumn=!1;let i=[],o=[];for(let n=0,s=t.length;n=e?o.push(s):i.push(s)}if(this.frozenInfo.right){const t=i;i=o,o=t}this.renderHeaderTable(i,this.$headerL),this.renderHeaderTable(o,this.$headerR)},renderHeaderTable:function(t,e){const i=document.createElement("div"),o=["tg-header-table"];this.hasSortColumn&&(o.push("tg-header-sortable"),o.push(`tg-header-sort-${this.options.sortIndicator}`)),i.className=d.classMap(o);const n=t.length;if(n){let e=t[n-1];e&&"tg-column-blank"===e.id&&(e=t[n-2]),t.forEach((t=>{this.renderHeaderItem(t,i,e)}))}e.append(i)},renderHeaderItem:function(t,e,i){const o=t.tg_view_index;if(this.getHeaderCache(o))return;const n=this.getHeaderItemClass(t,i),s=d.styleMap(t.headerStyleMap),r={column:o,class:n,data:t.id};s&&(r.style=s);const l=[this.createColumnHeader(t)];if(this.isColumnResizable(t)){const e=this.createColumnResizing(t);l.push(e)}const h=this.createElement("div",r,l);e.appendChild(h),this.setHeaderCache(o,h),this.setNodeDataCache(h,{rowItem:this.headerRowItem,column:o,columnItem:t,headerNode:h}),t.tg_parent&&this.renderHeaderItem(t.tg_parent,e)},createColumnHeader:function(t){const e={class:this.getHeaderClass(t),style:this.getHeaderStyle(t)},i=[this.createColumnName(t)];if(this.hasSortColumn&&!t.tg_group){const e=this.createColumnSort(t);i.push(e)}return this.createElement("div",e,i)},createColumnName:function(t){const e=["tg-column-name"];t.tg_group&&e.push("tg-header-group-name");const i={class:e.join(" ")};let o=t.name;const n=t.tg_headerFormatter;return"function"==typeof n&&(o=n.call(this,o,this.headerRowItem,t)),"tree"===t.formatter?o=this.createHeaderTreeName(o):t===this.selectColumn&&this.isSelectAllVisible()&&(o=this.createHeaderSelectName()),this.createElement("div",i,o)},createHeaderTreeName:function(t){this.hasTreeColumn=!0;const e=[];if(this.options.collapseAllVisible){const t=X.getIcon("tree"),i=this.createElement("div",{class:"tg-tree-icon tg-tree-icon-all"},t);e.push(i)}else{const t=this.createElement("div",{class:"tg-tree-icon"});e.push(t)}const i=this.createElement("div",{class:"tg-tree-name"},t);e.push(i);return this.createElement("div",{class:"tg-tree"},e)},createHeaderSelectName:function(){const t=X.getIcon("checkbox");return this.createElement("div",{class:"tg-select-icon-all tg-checkbox"},t)},createColumnSort:function(t){let e;return this.isColumnSortable(t)&&(e="h"===this.options.sortIndicator?this.createSortIndicatorH(t):this.createSortIndicatorV(t)),this.createElement("div",{class:"tg-column-sort"},e)},createSortIndicatorH:function(t){const e=X.getIcon("sort-h"),i=[this.createElement("div",{class:"tg-sort-indicator-line"}),this.createElement("div",{class:"tg-sort-indicator-icon"},e)];return this.createElement("div",{class:"tg-sort-indicator"},i)},createSortIndicatorV:function(t){const e=X.getIcon("sort-v"),i=[this.createElement("div",{class:"tg-sort-indicator-icon"},e)];return this.createElement("div",{class:"tg-sort-indicator"},i)},createColumnResizing:function(){return this.createElement("div",{class:"tg-column-resizing"})},getHeaderItemClass:function(t,e){const i=["tg-header-item"];return t.tg_group&&i.push("tg-header-group-item"),t===e&&i.push("tg-header-column-last"),i.push(`tg-c-${t.tg_view_index}`),i.push(`tg-h-${t.tg_layer}`),t.tg_combination&&i.push(`tg-h-${t.tg_combination}`),i.push(d.classMap(t.headerClassMap)),d.classMap(i)},getHeaderClass:function(t){const e=["tg-column-header"];return"tree"===t.formatter&&(e.push("tg-tree-header"),this.rowsInfo.isTree&&e.push("tg-tree-header-indent")),this.isColumnSortable(t)&&e.push(`tg-column-sortable tg-column-sort-${this.options.sortIndicator}`),t.align&&e.push(`tg-align-${t.align}`),e.join(" ")},getHeaderStyle:function(t){const e=[d.styleMap(t.headerStyleMap)],i=t.tg_width;return this.isInvisible(t)||i<=0?e.push("display:none;"):e.push(`width:${i}px;`),e.join("")}},J={renderHeader:function(){this.cssRulesInvalid=!0,this.$headerL.empty(),this.$headerR.empty(),this.resetCssDisplay(),this.renderHeaderTables(),this.renderHeaderSort(),this.headerCreated=!0,this.trigger(y.onHeaderUpdated,{node:this.$headerFrame.get(0)})},initHeaderLayerHeight:function(){this.updateScrollPaneHiddenState(),this.resetCssDisplay(),this.viewAllColumns.forEach((t=>{this.updateColumnHeaderHeight(t)})),this.resetCssDisplay("none"),this.updateHeaderLayerHeight()},updateHeaderLayerHeight:function(){const t={},e=this.columnsInfo.maxLevel;for(let i=0;i<=e;i++)t[i]=0;const i=[];this.viewAllColumns.forEach((function(e){if(e.tg_combination)i.push(e);else{const i=e.tg_height,o=e.tg_layer;t[o]=Math.max(t[o],i)}})),i.forEach((function(e){let i=e.tg_height;const o=e.tg_combination.split(""),n=o.pop();o.forEach((function(e){i-=t[e]||0})),t[n]=Math.max(t[n],i)}));const o=JSON.stringify(t);this.previousHeaderLayerHeight!==o&&(this.previousHeaderLayerHeight=o,this.headerLayerHeight=t,this.cssRulesInvalid=!0)}};var Q=i(915);const Z={create:function(t){this.id=d.uid(4,"tg-"),d.isObject(t)||(t={container:t}),this.constructorOptions=t,this.createCache(),this.createView(t.container)},createView:function(t){this.createHolder(t),this.$holder?(this.createGlobalStyle(),this.createContainer()):console.error("ERROR: Grid requires a container")},createHolder:function(t){const e=w(t);if(!e.length)return;this.$holder=e,this.$holder.empty(),this.holder=this.$holder.get(0);const i=this.holder.getRootNode();this.shadowRoot=null,i&&i.host&&(this.shadowRoot=i)},createGlobalStyle:function(){const t=this.shadowRoot||document.head;if(t.querySelector(`style[context="${e.ID}"]`))return;const i=document.createElement("style");i.setAttribute("context",e.ID),i.innerHTML=Q.A.toString(),t.appendChild(i)},createContainer:function(){return this.$container=w('
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n').appendTo(this.$holder),this.$container.attr("id",this.id),this.$container.addClass(`${e.NS} ${this.id}`),this.container=this.$container.get(0),d.setInstance(this.container,this),this.$headerFrame=this.$container.find(".tg-header-frame"),this.$paneHL=this.$headerFrame.find(".tg-pane-header-left"),this.$paneHR=this.$headerFrame.find(".tg-pane-header-right"),this.$headerL=this.$paneHL.find(".tg-header-left"),this.$headerR=this.$paneHR.find(".tg-header-right"),this.$header=w().add(this.$headerL).add(this.$headerR),this.$bodyFrame=this.$container.find(".tg-body-frame"),this.$paneTL=this.$bodyFrame.find(".tg-pane-top-left"),this.$paneTR=this.$bodyFrame.find(".tg-pane-top-right"),this.$paneBL=this.$bodyFrame.find(".tg-pane-bottom-left"),this.$paneBR=this.$bodyFrame.find(".tg-pane-bottom-right"),this.$bodyTL=this.$paneTL.find(".tg-body-top-left"),this.$bodyTR=this.$paneTR.find(".tg-body-top-right"),this.$bodyBL=this.$paneBL.find(".tg-body-bottom-left"),this.$bodyBR=this.$paneBR.find(".tg-body-bottom-right"),this.$body=w().add(this.$bodyTL).add(this.$bodyTR).add(this.$bodyBL).add(this.$bodyBR),this.$columnLineContainer=this.$container.find(".tg-column-line"),this.$columnLineItem=this.$columnLineContainer.find(".tg-column-line-item"),this.$columnLineItemL=this.$columnLineContainer.find(".tg-column-line-l"),this.$columnLineItemR=this.$columnLineContainer.find(".tg-column-line-r"),this}},tt={initColumnsHandler:function(){this.columns=this.data.columns,this.columns.forEach(((t,e)=>{t&&"object"==typeof t||(this.columns[e]={})}));const t=this.getPrivateColumns();this.columnsInfo=this.initTreeInfo(t,this.frozenInfo.column);const e=[],i=[],o=(t,n)=>{if(!d.isList(t))return;let s,r=0;t.forEach((t=>{if(!this.isInvisible(t))if(t.tg_group){if(this.isEmptyGroup(t))return;i.push(t),o(t.subs,t)}else t.tg_list_index=r,r+=1,t.tg_list_last=!1,s=t,e.push(t)})),s&&(s.tg_list_last=!0)};o(t),e.forEach((t=>{this.initColumnItemHandler(t)})),i.forEach((t=>{this.initColumnGroupHandler(t)}));const n=[].concat(e).concat(i);this.initViewList(n,((t,e)=>{})),this.viewColumns=e,this.viewGroupColumns=i,this.viewAllColumns=n,this.initHeaderHandler(t),this.initSortColumn()},getPrivateColumns:function(){const t=this.options;this.selectColumn=t.selectColumn,this.rowDragColumn=t.rowDragColumn,this.rowNumberColumn=t.rowNumberColumn,this.blankColumn=t.blankColumn;let e=[];const i=()=>{t.selectVisible&&e.push(this.selectColumn),t.rowDragVisible&&e.push(this.rowDragColumn),t.rowNumberVisible&&(this.rowNumberColumn.width=t.rowNumberWidth,e.push(this.rowNumberColumn))};if(this.frozenInfo.right){const t=this.frozenInfo.column;this.columns.forEach(((o,n)=>{e.push(o),n===t&&i()}))}else i(),e=e.concat(this.columns);return e.push(this.blankColumn),e},setColumns:function(t){this.data.columns=d.toList(t),this.rerender()},getColumns:function(){return this.columns},getViewColumns:function(t){return t?this.viewAllColumns:this.viewColumns},initColumnItemHandler:function(t){this.initColumnProps(t),this.initColumnFormatter(t),this.initColumnWidth(t)},initColumnGroupHandler:function(t){this.initColumnFormatterByName(t,"headerFormatter","header")},initColumnProps:function(t){const e=this.options.columnTypes;if(!d.hasOwn(t,"type")){const i=e[t.id];"string"==typeof i&&(t.type=i)}let i=this.options.columnProps;const o=e[t.type];o&&"object"==typeof o&&(i=d.merge(i,o));for(const e in i)d.hasOwn(t,e)||(t[e]=i[e])},initColumnFormatter:function(t){this.initColumnFormatterByName(t,"headerFormatter","header");let e=t.type;const i=t.formatter;"string"==typeof i&&(e=i),this.initColumnFormatterByName(t,"formatter",e)},initColumnFormatterByName:function(t,e,i){let o=t[e];"function"!=typeof o?(o=this.getFormatter(i),t[`tg_${e}`]=o||this.getFormatter("string")):t[`tg_${e}`]=o.bind(this)},initColumnWidth:function(t){if(t!==this.blankColumn)return d.isNum(t.width)&&t.width>=0?(t.tg_width=t.width,t.minWidth=Math.min(t.minWidth,t.tg_width),void(t.maxWidth=Math.max(t.maxWidth,t.tg_width))):void this.initColumnWidthByName(t);t.tg_width=0},initColumnWidthByName:function(t){const e=this.getComputedColumnWidth(t);d.isNum(e)&&(t.tg_width=e)},getComputedColumnWidth:function(t){const e=t.name||"",i=d.getCharLen(e);let o=Math.round(10*i);return o>103&&(o=Math.max(103,Math.round(10*i/2)),o>133&&(o=Math.max(133,Math.round(10*i/3)),o>163&&(o=Math.max(163,Math.round(10*i/4))))),d.clamp(o,t.minWidth,t.maxWidth)},initSortColumn:function(){this.sortColumn=null;const t=this.options,e=t.sortField;if(!e)return;const i=this.getColumnItemById(e);return i&&this.isColumnSortable(i)?(d.hasOwn(i,"sortAsc")||(i.sortAsc=t.sortAsc),this.sortColumn=i,this):void 0}},et={initHeaderHandler:function(t){this.initHeaderRowItem(),this.viewGroupColumns.reverse(),this.initGroupColumnsWidth(),this.initGroupColumnsLayer(t)},initHeaderRowItem:function(){this.headerRowItem={tg_index:-1,tg_view_index:-1},this.viewAllColumns.forEach((t=>{d.hasOwn(t,"id")&&(this.headerRowItem[t.id]=t.name)}))},initGroupColumnsWidth:function(){this.viewGroupColumns.forEach((t=>{let e=0;t.subs.forEach((t=>{this.isInvisible(t)||(e+=t.tg_width)})),t.tg_width=e}))},initGroupColumnsLayer:function(t){const e=this.columnsInfo.maxLevel;this.viewColumns.forEach((function(t){t.tg_layer=e,t.tg_parent&&(t.tg_parent.tg_layer=e-1)})),this.viewGroupColumns.forEach((function(t){const e=t.tg_layer,i=t.tg_parent;if(i){let t=e-1;d.isNum(i.tg_layer)&&(t=Math.min(t,i.tg_layer)),i.tg_layer=t}})),this.initColumnRowspanHandler(t,0)},initColumnRowspanHandler:function(t,e){t.forEach((t=>{const i=this.initColumnCombinationHandler(t,e);t.tg_group&&this.initColumnRowspanHandler(t.subs,e+i)}))},initColumnCombinationHandler:function(t,e){const i=[],o=t.tg_layer;for(;e<=o;)i.push(e),e+=1;i.reverse();const n=i.length;let s="";return n>1&&(s=i.join("")),t.tg_combination=s,n}},it={},ot={name:"",minWidth:81,maxWidth:300},nt=function(t){return null==t},st=function(t,e){const i=nt(t),o=nt(e);return i&&o?0:i?1:o?-1:void 0},rt=function(t,e){return t.tg_index>e.tg_index?1:-1},lt=function(t,e){return rt(t,e)},ht=function(t,e){if("string"==typeof t&&"string"==typeof e){const i=t.toUpperCase(),o=e.toUpperCase();if(i!==o)return i>o?-1:1}return t>e?-1:1},at=function(t,e,i,o){return t?-1:e?1:ht(i,o)},ct=function(t,e){const i="number"==typeof t,o="number"==typeof e;return i&&o?t>e?-1:1:at(i,o,t,e)},dt=function(t,e){const i=new Date(t),o=new Date(e),n=d.isDate(i),s=d.isDate(o);if(n&&s){const t=i.getTime(),e=o.getTime();if(t===e)return;return t>e?-1:1}return at(n,s,t,e)},ut=function(t,e){const i="boolean"==typeof t,o="boolean"==typeof e;return i&&o?t>e?-1:1:at(i,o,t,e)},gt=function(t,e,i,o){const n=t[i.sortField],s=e[i.sortField],r=st(n,s);if("number"==typeof r)return 0===r?lt(t,e):i.sortBlankFactor*r;if(n!==s&&"function"==typeof o){const t=o(n,s);if(d.isNum(t))return i.sortFactor*t}return lt(t,e)},ft={blankValue:st,equal:lt,index:rt,value:gt,diffType:at,string:function(t,e,i){return gt(t,e,i,ht)},stringValue:ht,number:function(t,e,i){return gt(t,e,i,ct)},numberValue:ct,date:function(t,e,i){return gt(t,e,i,dt)},dateValue:dt,boolean:function(t,e,i){return gt(t,e,i,ut)},booleanValue:ut};const pt={initOptionsHandler:function(){return this.options=this.generateOptions(),this.initOptionsFormatters(),this.initOptionsSort(),this.initOptionsFrozen(),this.initOptionsScrollbar(),this.initOptionsContainer(),this.initBindWindowResize(),this.initBindContainerResize(),this},generateOptions(){const t={className:e.NS,theme:e.ID,headerVisible:!0,rowHeight:32,rowFilter:null,rowFilteredSort:null,rowNotFound:"",rowMoveCrossLevel:!0,rowCacheLength:0,rowProps:it,columnTypes:{tree:{type:"tree",formatter:"tree",width:230,minWidth:120,maxWidth:810},number:{type:"number",align:"right"},date:{type:"date",align:"right"},name:"tree"},columnCacheLength:0,columnProps:ot,collapseAllOnInit:null,collapseAllVisible:!0,selectAllOnInit:null,selectVisible:!1,selectAllVisible:!0,selectMultiple:!0,selectColumn:{private:!0,id:"tg-column-select",name:"",formatter:"select",headerClassMap:"tg-header-select",classMap:"tg-cell-select",width:36,align:"center",resizable:!1,sortable:!1,exportable:!1},rowDragCrossLevel:!0,rowDragVisible:!1,rowDragColumn:{private:!0,id:"tg-column-row-drag",name:"",formatter:"rowDrag",headerClassMap:"tg-header-row-drag",classMap:"tg-cell-row-drag",align:"center",width:36,resizable:!1,sortable:!1,exportable:!1},rowNumberWidth:36,rowNumberFilter:null,rowNumberVisible:!1,rowNumberColumn:{private:!0,id:"tg-column-row-number",name:"",formatter:"rowNumber",headerClassMap:"tg-header-row-number",classMap:"tg-cell-row-number",align:"center",maxWidth:100,sortable:!1,exportable:!1},blankColumn:{private:!0,id:"tg-column-blank",name:"",formatter:"blank",headerClassMap:"tg-header-blank",classMap:"tg-cell-blank",width:0,minWidth:0,maxWidth:4096,resizable:!1,sortable:!1,exportable:!1},sortField:"",sortAsc:!0,sortBlankValueBottom:!0,sortComparers:ft,sortOnInit:!1,sortIndicator:"h",highlightKeywords:{textKey:"tg_text_",textGenerator:null,highlightKey:"tg_highlight_",highlightPre:"",highlightPost:""},frozenRow:-1,frozenRowMax:10,frozenRowHoverable:!1,frozenBottom:!1,frozenColumn:-1,frozenColumnMax:10,frozenRight:!1,scrollbarSize:12,scrollbarSizeH:null,scrollbarSizeV:null,scrollbarRound:!1,scrollbarFade:!1,scrollbarFadeTimeout:1e3,scrollbarType:"auto",scrollPaneMinWidth:30,scrollPaneGradient:30,autoHeight:!1,textSelectable:!1,bindWindowResize:!1,bindContainerResize:!1,cellResizeObserver:null},i=this.generateThemeOptions();return d.merge(t,i,this.constructorOptions,this.customOptions,this.dataOptions)},generateThemeOptions(){const t=this.pickOptions("theme").pop();if(t)return this.getThemeOptions(t)},pickOptions(t){return[this.constructorOptions,this.customOptions,this.dataOptions].map((e=>e&&e[t])).filter((t=>t))},initOptionsFormatters(){let t;const e=this.pickOptions("formatters");e.length&&(t=d.merge.apply(null,e)),this.formatters=d.merge(Y,t,this.customFormatters),this.nullFormatter=this.getFormatter("null")},initOptionsSort(){"v"!==this.options.sortIndicator&&(this.options.sortIndicator="h")},initOptionsFrozen:function(){const t=this.options;this.frozenInfo={column:-1,row:-1,columns:0,rows:0,bottom:Boolean(t.frozenBottom),right:Boolean(t.frozenRight)};let e=d.toNum(t.frozenColumn,!0);e=d.clamp(e,-1,t.frozenColumnMax),e>-1&&!this.frozenInfo.right&&(t.selectVisible&&(e+=1),t.rowDragVisible&&(e+=1),t.rowNumberVisible&&(e+=1)),this.frozenInfo.column=e,e>-1?this.frozenInfo.columns=e+1:(this.frozenInfo.columns=0,this.frozenInfo.right=!1);let i=d.toNum(t.frozenRow,!0);i=d.clamp(i,-1,t.frozenRowMax),this.frozenInfo.row=i,i>-1?this.frozenInfo.rows=i+1:(this.frozenInfo.rows=0,this.frozenInfo.bottom=!1)},initOptionsScrollbar:function(){const t=this.options;("auto"===t.scrollbarType&&d.isTouchDevice()||["touch","mobile"].includes(t.scrollbarType))&&(t.scrollbarFade=!0,t.scrollbarSize=6,t.scrollbarRound=!0);const e=d.toNum(t.scrollbarSize);this.scrollbarSizeH=e,d.isNum(t.scrollbarSizeH)&&(this.scrollbarSizeH=t.scrollbarSizeH),this.scrollbarSizeV=e,d.isNum(t.scrollbarSizeV)&&(this.scrollbarSizeV=t.scrollbarSizeV)},initOptionsContainer:function(){this.$container.attr("id",this.id);const t=this.options;this.$container.removeClass();const i=[e.NS,this.id,`tg-${t.theme}`,t.className];t.textSelectable||i.push("tg-text-unselectable"),d.isTouchDevice()&&i.push("tg-touch-device"),this.$container.addClass(d.classMap(i))},setTextSelectable:function(t){this.options.textSelectable&&(t?this.$container.removeClass("tg-text-unselectable"):this.$container.addClass("tg-text-unselectable"))}},mt={initBindWindowResize:function(){this.unbindWindowResize(),this.options.bindWindowResize&&(this.windowResizeEvents={resize:{handler:t=>{this.resize()}}},d.bindEvents(this.windowResizeEvents,window))},unbindWindowResize:function(){d.unbindEvents(this.windowResizeEvents)},createResizeObserver:function(t){if("undefined"==typeof ResizeObserver)return console.error("ERROR: This browser does not support ResizeObserver"),{observe:()=>{},unobserve:()=>{},disconnect:()=>{}};return new ResizeObserver((e=>{t.call(this,e)}))},initBindContainerResize:function(){this.unbindContainerResize(),this.options.bindContainerResize&&this.holder&&(this.resizeObserver=this.createResizeObserver((t=>{Boolean(this.holder.offsetWidth||this.holder.offsetHeight||this.holder.getClientRects().length)&&this.resize()})),this.resizeObserver.observe(this.holder))},unbindContainerResize:function(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}},bt={initRowsHandler:function(){this.rows=this.data.rows,this.rowsInfo=this.initTreeInfo(this.rows,this.frozenInfo.row)},getRows:function(){return this.rows},getViewRows:function(){return this.viewRows},createViewRows:function(){this.initRowFilterHandler();const t=[],e=this.getRowNumberFilter();let i=1;const o=(t,o)=>{if(e.call(this,t,o))return t.tg_row_number=i,void(i+=1);t.tg_row_number=""},n=(e,i,s)=>{if(!d.isList(e))return;let r,l=0;e.forEach((e=>{if(this.isInvisible(e))return;e.tg_list_index=l,l+=1,e.tg_list_last=!1,r=e,this.gridRowItemHandler(e),o(e,l),s||t.push(e);const i=s||e.tg_group&&e.collapsed;n(e.subs,e,i)})),r&&(r.tg_list_last=!0)};n(this.rows);let s,r=0;return this.initViewList(t,((t,e)=>{t.tg_top=r,r+=this.getRowHeight(t),t.tg_group_line=!1,t.collapsed&&(t.tg_group_line=!0),s&&(t.tg_group||t.tg_level{if(e.tg_invisible)return;const n=!t.call(this,e,i,o);if(e.tg_filtered=n,!n){let t=e;for(;t.tg_parent;)t.tg_parent.tg_filtered=!1,t=t.tg_parent}})),this.sortColumn)return;let e=this.options.rowFilteredSort;if("function"==typeof e&&(e=e.call(this)),!e)return;"string"==typeof e&&(e={sortField:e,sortAsc:this.options.sortAsc});const i=e.sortField||e.id;i&&this.sortRows(i,e)},highlightKeywordsFilter:function(t,e,i){const{textKey:o,textGenerator:n,highlightKey:s}=this.options.highlightKeywords;if(e.forEach((e=>{t[`${s}${e}`]=null})),!i)return!0;const r=`${i}`.trim().toLowerCase().split(/\s+/g).filter((t=>t));if(!r.length)return!0;let l=!1;const h=(e,i)=>(/<\/?[a-z][\s\S]*>/i.test(e)&&(e=((e,i)=>{const n=`${o}${i}`,s=t[n];if(s)return s;const r=document.createElement("div");r.innerHTML=e;const l=r.innerText;return t[n]=l,l})(e,i)),(t=>{const e=t.toLowerCase();let i=0;for(const t of r){const o=e.indexOf(t,i);if(-1===o)return;i=o+t.length}return!0})(e));let a=function(t,e){return t[e]};return"function"==typeof n&&(a=n),e.forEach((e=>{const i=a(t,e);if(null==i)return;const o=`${i}`.trim();if(!o)return;const n=h(o,e);n&&(t[`${s}${e}`]=n,l=!0,this.highlightKeywords=r)})),l},highlightKeywordsHandler:function(){const{highlightCells:t}=this.renderSettings;if(!t.length)return;const e=this.highlightKeywords;e&&(this.asyncHighlightKeywords||(this.asyncHighlightKeywords=d.debounce(this.highlightKeywordsSync,10)),this.asyncHighlightKeywords.apply(this,[t,e]))},highlightKeywordsSync:function(t,e){t.forEach((t=>{const i=Array.from(t.querySelectorAll("svg")).concat(Array.from(t.querySelectorAll("textarea"))),o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,(t=>{if(i.length)for(const e of i)if(e.contains(t))return NodeFilter.FILTER_SKIP;return NodeFilter.FILTER_ACCEPT})),n=[];let s=o.nextNode();for(;s;)n.push(s),s=o.nextNode();n.length&&this.highlightTextNodes(n,e)}))},highlightTextNodes:function(t,e){const{highlightPre:i,highlightPost:o}=this.options.highlightKeywords;let n=0;const s=()=>(n>=e.length&&(n=0),e[n++]);let r=s();t.forEach((t=>{const e=t.textContent,n=e.toLowerCase(),l=[];let h=0;const a=e.length;let c=!1;for(;h{if(e.selected){if(t)return void(e.selected=!1);t=e}}))}const t=this.options.selectAllOnInit;!0!==t?!1===t&&this.updateAllRowsSelected(!1):this.updateAllRowsSelected(!0)},updateAllRowsSelected:function(t){this.forEachSelectableRow((e=>{e.selected=t}))},initCollapseAllOnInitHandler:function(){const t=this.options.collapseAllOnInit;!0!==t?!1===t&&this.updateAllRowsCollapsed(!1):this.updateAllRowsCollapsed(!0)},getToBeAddedItemList:function(t){const e=[];return d.toList(t).forEach((t=>{t&&"object"==typeof t?e.push(t):void 0!==t&&e.push({name:t})})),e},getToBeAddedParentSubs:function(t,e){return t?(t.subs||(t.subs=[]),t.subs):e},getToBeAddedPositionIndex:function(t,e){const i=e.length;return d.isNum(t)&&t>=0&&t<=i?Math.round(t):i},generateDataSnapshot:function(t){if(!t||"object"!=typeof t)return t;const e=this.cleanTreeList(t.rows),i=this.cleanTreeList(t.columns);return this.convertNumberType(e,i),t.rows=e,t.columns=i,t},cleanTreeList:function(t){if(!d.isList(t))return[];const e=(t,i)=>{i.forEach((i=>{if(!i||"object"!=typeof i)return void t.push({});const o=this.getItemSnapshot(i),n=i.subs;Array.isArray(n)&&(o.subs=[],e(o.subs,n)),t.push(o)}))},i=[];return e(i,t),i},convertNumberType:function(t,e){const i=[];d.forEachTree(e,(function(t){"number"===t.type&&t.id&&i.push(t.id)})),i.length&&d.forEachTree(t,(function(t){i.forEach((function(e){t[e]=d.convertNum(t[e])}))}))}},vt={setDefaultLoading:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)return;const i=t.style;e.size&&(i.width=e.size,i.height=e.size),e.color&&(i.color=e.color),e.size||e.color||t.removeAttribute("style"),e.fast?t.classList.add("tg-loading-fast"):t.classList.remove("tg-loading-fast")},getDefaultLoading:function(t){return this.setDefaultLoading(this.$defaultLoading,t),this.$defaultLoading},getLoadingHolder:function(){return this.$container?this.$container.find(".tg-loading"):w()},setLoading:function(t){if(!this.$container)return this;this.$defaultLoading||(this.$defaultLoading=this.$container.find(".tg-loading-default").get(0));const e=this.getLoadingHolder().get(0);return"function"==typeof t&&(t=t.call(this,e)),d.isObject(t)&&(t=this.getDefaultLoading(t)),t||(t=this.getDefaultLoading()),this.renderNodeContent(e,t),this},showLoading:function(){return this.getLoadingHolder().show(),this},hideLoading:function(){return this.getLoadingHolder().hide(),this}},Ht={showMask:function(t){if(!this.hasMask||t){const e=this.$container.find(".tg-mask"),i=e.get(0);if(t&&i){const e=d.styleMap(t);e&&(i.style.cssText=e)}e.show(),this.hasMask=!0}return this},hideMask:function(){return this.hasMask&&(this.$container.find(".tg-mask").hide(),this.hasMask=!1),this}},Ct={renderNodeContent:function(t,e){if(t){if(e&&e.nodeType)return this.emptyNode(t),void t.appendChild(e);if(Array.isArray(e))return this.emptyNode(t),void e.forEach((e=>{e&&e.nodeType&&t.appendChild(e)}));void 0===e&&(e=""),t.innerHTML=e}},emptyNode:function(t){if(t)for(;t.firstChild;)t.removeChild(t.firstChild)},removeNode:function(t){t&&t.parentNode&&t.parentNode.removeChild(t)},appendNode:function(t,e){t&&e&&t.appendChild(e)},createElement:function(t,e,i){const o=document.createElement(t);e&&Object.keys(e).forEach((function(t){const i=e[t];void 0!==i&&o.setAttribute(t,i)})),d.isArray(i)||(i=[i]);let n="";return i.forEach((function(t){t&&t.nodeType?o.appendChild(t):void 0!==t&&(n+=t)})),n&&(o.innerHTML=n),o},find:function(t,e){return w(e||this.$container).find(t)},getRowNodes:function(t){const e=this.getRowItem(t);if(e)return this.getRowNodesByIndex(e.tg_view_index)},getCellNode:function(t,e){const i=this.getRowItem(t);if(!i)return;const o=this.getColumnItem(e);return o?this.getCellNodeByIndex(i.tg_view_index,o.tg_view_index):void 0},getHeaderItemNode:function(t){const e=this.getColumnItem(t);if(e)return this.getHeaderCache(e.tg_view_index)},getColumnHeaderNode:function(t){const e=this.getHeaderItemNode(t);if(e)return e.querySelector(".tg-column-header")}},yt={render:function(){this.asyncRender||(this.asyncRender=d.microtask(this.renderSync)),this.asyncRender.apply(this,arguments)},renderSync:function(){this.renderStartedTimestamp=Date.now();const t=this.generateRenderSettings.apply(this,arguments);return this.renderSettings=t,"all"===t.type?(this.flushBody(),this.initHandler(),this.renderHeader(),this.updateViewRowsAndSize(),this.renderBody(),this):"columns"===t.type?(this.flushBody(),this.initColumnsHandler(),this.renderHeader(),this.updateViewRowsAndSize(),this.renderBody(),this):"rows"===t.type?(this.updateViewRowsAndSize(),this.renderBody(),this):"rows_cache"===t.type?(this.cssRulesInvalid=!0,this.updateViewRowsAndSize(),this.updateRowCacheTopAndHeight(),this.renderBody(),this):"resize"===t.type?(this.resizeHandler(),this.renderBody(),this):(this.renderBody(),this)},generateRenderSettings:function(t){const e={type:this.renderType,scrollLeft:null,scrollTop:null,scrollColumn:null,scrollRow:null,highlightCells:[]};return"string"==typeof t?e.type=t:t&&Object.assign(e,t),this.headerCreated||(e.type="all"),e},renderBody:function(){this.scrollOnInit(),this.scrollTopOffset=this.scrollPane.getScrollTopOffset();const t=this.getViewport();return this.viewport=t,this.flushWithViewport(),this.previousScrollTopOffset!==this.scrollTopOffset&&(this.previousScrollTopOffset=this.scrollTopOffset,this.updateRowCacheTopOffset()),this.renderRows(t.rows),this.renderCells(t.rows,t.columns),this.renderUpdatedTimestamp=Date.now(),this.renderDuration=this.renderUpdatedTimestamp-this.renderStartedTimestamp,this.trigger(y.onUpdated,t),this.firstUpdated||(this.firstUpdated=!0,this.trigger(y.onFirstUpdated,t)),this.layoutEventHandler(),this.resizeEventHandler(),this.highlightKeywordsHandler(),this.renderSettings=null,this.renderType=null,this},rerender:function(){return this.render("all"),this}},Rt={resize:function(){return this.asyncResize||(this.asyncResize=d.throttle(this.resizeSync,100)),this.asyncResize.apply(this,arguments),this},resizeSync:function(){return this.headerCreated?(this.resizeHolderHandler.apply(this,arguments),this.firstUpdated&&this.isHolderInvisible()||this.render("resize"),this):this},resizeHolderHandler(t,e){if(0!==arguments.length)return 1===arguments.length?t&&"object"==typeof t?void this.$holder.css(t):void this.$holder.css({width:t}):void this.$holder.css({width:t,height:e})},isHolderInvisible(){const t=this.$holder.width(),e=this.$holder.height();return!t||!e},resizeHandler:function(){this.containerWidth=this.$container.width(),this.containerHeight=this.$container.height(),this.headerWidth=this.containerWidth,this.bodyWidth=this.containerWidth,this.updateTotalColumnsWidth(),this.resizeHeaderHandler(),this.resizeBodyHandler()},layoutEventHandler:function(){const t=this.previousLayout||{},e={headerWidth:this.headerWidth,headerHeight:this.headerHeight,bodyWidth:this.bodyWidth,bodyHeight:this.bodyHeight,scrollbarWidth:this.getScrollbarWidth(),scrollbarHeight:this.getScrollbarHeight()};Object.values(e).join("")!==Object.values(t).join("")&&(this.previousLayout=e,this.trigger(y.onLayout,d.merge({previous:t},e)))},resizeEventHandler:function(){const t=this.previousSize||{},e={width:this.containerWidth,height:this.containerHeight};Object.values(e).join("")!==Object.values(t).join("")&&(this.previousSize=e,this.trigger(y.onResize,d.merge({previous:t},e)))},resizeHeaderHandler:function(){this.initHeaderLayerHeight();const t=this.options;t.autoHeight&&this.viewRows.length>5e3&&(t.autoHeight=!1),this.headerHeight=0,t.headerVisible&&(this.containerHeight>0||t.autoHeight)&&this.updateHeaderTableHeight(),this.$headerFrame.css({width:this.headerWidth,height:this.headerHeight})},updateHeaderTableHeight:function(){let t=0;Object.keys(this.headerLayerHeight).forEach((e=>{t+=this.headerLayerHeight[e]}));const e=this.$headerL.find(".tg-header-table"),i=this.$headerR.find(".tg-header-table");e.css({height:t}),i.css({height:t}),this.headerHeight=t},resizeBodyHandler:function(){this.updateScrollState(),this.bodyHeight=this.containerHeight-this.headerHeight,this.$bodyFrame.css({width:this.bodyWidth,height:this.bodyHeight}),this.updatePaneWidth(),this.updatePaneHeight(),this.updateCanvasWidth(),this.updateCanvasHeight(),this.updateScrollPane(),this.updateCssRules()},updatePaneWidth:function(){let t=this.bodyWidth,e=0;if(this.frozenInfo.columns){const i=this.getScrollbarWidth();this.frozenInfo.right?(e=this.columnsWidthR+i,t=this.bodyWidth-e):(t=this.columnsWidthL,e=this.bodyWidth-t),this.scrollPaneHidden&&(this.frozenInfo.right?(t<=0&&(t=0),e=Math.max(0,this.bodyWidth-t)):(e3&&void 0!==arguments[3])||arguments[3];const n=this.getToBeAddedItemList(t);if(!n.length)return!1;let s;if(null!=e&&(s=this.getRowItem(e),!s))return!1;const r=this.getToBeAddedParentSubs(s,this.rows),l=this.getToBeAddedPositionIndex(i,r),h=[l,0].concat(n);r.splice.apply(r,h),this.initRowsHandler(),s?(s.collapsed=!1,this.flushRowFrom(s.tg_view_index+l)):this.flushRowFrom(l),this.onNextUpdated((function(){this.trigger(y.onRowAdded,n)}));const a={type:"rows"};return o&&(a.scrollRow=n[n.length-1]),this.render(a),!0},deleteRow:function(t){const e=d.toList(t),i=[];if(e.forEach((t=>{const e=this.getRowItem(t);e&&i.push(e)})),!i.length)return!1;const o=this.removeRowsHandler(i);this.initRowsHandler();const n=this.getRemovedMinIndex(o);return this.flushRowFrom(n),this.onNextUpdated((function(){this.trigger(y.onRowRemoved,i)})),this.render("rows"),!0},getRemovedMinIndex:function(t){let e=0;const i=t[t.length-1];if(this.isInvisible(i))return e;e=i.tg_view_index,e>0&&(e-=1);let o=i.tg_parent;for(;o;)o.collapsed&&(e=o.tg_view_index),o=o.tg_parent;return e},removeRowsHandler:function(t){const e=[].concat(t);e.sort((function(t,e){return e.tg_index-t.tg_index}));const i=[];return e.forEach((t=>{this.getRowParentSubs(t).splice(t.tg_sub_index,1),i.push(t)})),i}},Tt={renderCollapseAllState:function(){this.hasTreeColumn&&(this.asyncRenderCollapseAllState||(this.asyncRenderCollapseAllState=d.microtask(this.renderCollapseAllStateSync)),this.asyncRenderCollapseAllState.apply(this,arguments))},renderCollapseAllStateSync:function(){const t=this.$header.find(".tg-tree-header");this.rowsInfo.isTree?t.addClass("tg-tree-header-indent"):t.removeClass("tg-tree-header-indent"),this.renderCollapseAllIcon()},checkCollapseAllState:function(t){if(t!==this.allRowsCollapsed){if(t){let t=0;const e=this.rows.length;for(;t{if(e.tg_group&&e.tg_subs_length&&e.collapsed)return t=!0,!1})),t)return}this.allRowsCollapsed=t,this.renderCollapseAllIcon()}},expandAllRows:function(){return this.renderAllRowsCollapsed(!1)},collapseAllRows:function(){return this.renderAllRowsCollapsed(!0)},toggleAllRows:function(){return this.allRowsCollapsed?this.expandAllRows():this.collapseAllRows()},renderAllRowsCollapsed:function(t){const e=this.updateAllRowsCollapsed(t);return e.length?(this.flushBody(),this.onNextUpdated((()=>{this.renderCollapseAllIcon(),t?this.trigger(y.onRowCollapsed,e):this.trigger(y.onRowExpanded,e)})),this.render("rows"),this):this},updateAllRowsCollapsed:function(t){this.allRowsCollapsed=t;const e=[];return this.forEachRow((i=>{i.subs&&i.tg_subs_length&&this.isCollapsedChanged(i,t)&&(i.collapsed=t,e.push(i))})),e},expandRow:function(t){const e=this.getRowItem(t);return e?this.isEmptyGroup(e)?(this.trigger(y.onRowSubsRequest,e),this):this.isCollapsedChanged(e,!1)?(e.collapsed=!1,this.flushRowFrom(e.tg_view_index),this.renderCollapseIcon(e),this.onNextUpdated((()=>{this.checkCollapseAllState(!1),this.trigger(y.onRowExpanded,e)})),this.render("rows"),this):this:this},collapseRow:function(t){const e=this.getRowItem(t);return e&&e.subs&&e.tg_subs_length&&this.isCollapsedChanged(e,!0)?(e.collapsed=!0,this.flushRowFrom(e.tg_view_index),this.renderCollapseIcon(e),this.onNextUpdated((()=>{this.checkCollapseAllState(!0),this.trigger(y.onRowCollapsed,e)})),this.render("rows"),this):this},toggleRow:function(t){const e=this.getRowItem(t);return e?(e.collapsed?this.expandRow(e):this.collapseRow(e),this):this},expandRowLevel:function(t){t=d.toNum(t,!0);const e=[],i=[];return this.forEachRow((o=>{o.subs&&o.tg_subs_length&&(o.tg_level<=t?this.isCollapsedChanged(o,!1)&&(o.collapsed=!1,i.push(o)):this.isCollapsedChanged(o,!0)&&(o.collapsed=!0,e.push(o)))})),e.length||i.length?(this.flushBody(),this.onNextUpdated((()=>{e.length&&this.trigger(y.onRowCollapsed,e),i.length&&this.trigger(y.onRowExpanded,i)})),this.render("rows"),this):this},renderCollapseAllIcon:function(){if(!this.options.collapseAllVisible||!this.hasTreeColumn)return;const t=this.$header.find(".tg-tree-icon-all");this.renderTreeIcon(t,this.allRowsCollapsed)},renderCollapseIcon:function(t){if(!this.headerCreated)return;const e=this.getRowNodesByIndex(t.tg_view_index);if(!e)return;const i=e.find(".tg-tree-icon");this.renderTreeIcon(i,t.collapsed)},renderTreeIcon:function(t,e){t&&(e?t.removeClass("tg-tree-icon-expanded").addClass("tg-tree-icon-collapsed"):t.removeClass("tg-tree-icon-collapsed").addClass("tg-tree-icon-expanded"))}},Et={rowDragStartHandler:function(t,e){this.removeSortColumn();const i=e.rowItem;if(!i)return;const o=this.getRowNodesByIndex(i.tg_view_index);if(!o)return;e.dragCloneNodes=this.getRowDragCloneNodes(o),e.dropPlaceholder=this.getRowDropPlaceholder(o),e.dragStartTop=this.getRowTop(i),e.dragRowHeight=this.getRowHeight(i),e.dragStartScrollTop=this.scrollTop,e.dragMaxScrollTop=this.scrollPane.getMaxScrollTop();const n={e:t,rowItem:i};this.trigger(y.onRowDragged,n),this.isDefaultPrevented(n)||("touch"===e.type&&d.preventDefault(e.e),this.setRowState(i,"dragging"),this.setTextSelectable(!1),this.rowDropListHandler(e),this.updateDragCloneRowPosition(e))},rowDragMoveHandler:function(t,e){"touch"===e.type&&d.preventDefault(e.e),this.updateDragCloneRowPosition(e),this.updateDragPlaceholderPosition(e),this.rowDragAutoScrollHandler(e)},rowDragEndHandler:function(t,e){"touch"===e.type&&(this.protectedItem=null,d.preventDefault(e.e)),this.autoScrollStop(),this.setRowState(e.rowItem,"dragging",!1),this.setTextSelectable(!0),e.dragCloneNodes&&(e.dragCloneNodes.remove(),e.dragCloneNodes=null),e.dropPlaceholder&&(e.dropPlaceholder.remove(),e.dropPlaceholder=null),e.changed&&this.rowDropHandler(e)},updateDragCloneRowPosition:function(t){const e=this.scrollTop-t.dragStartScrollTop,i=t.dragStartTop+t.offsetY+e,o=i-this.scrollTopOffset;t.dragCloneNodes&&t.dragCloneNodes.css("top",o).show(),t.dragCurrentPosition=i+.5*t.dragRowHeight},getRowDragCloneNodes:function(t){const e=w();return t.each((function(t){const i=w(t),o=i.clone();o.appendTo(i.parent()),e.add(o)})),e.addClass("tg-clone").hide(),e},getRowDropPlaceholder:function(t){const e=w();return t.each((function(t){const i=w(t),o=w("
    ").addClass("tg-row-placeholder").hide(),n=i.parent();n.find(".tg-row-placeholder").remove(),o.appendTo(n),e.add(o)})),e},updateDragPlaceholderPosition:function(t){this.rowDropItemHandler(t);const e=t.dropItem;if(!e)return;let i=t.dropPosition-1;t.dropBottom?e.tg_view_last&&(i=t.dropPosition-2):e.tg_view_index-this.frozenInfo.rows==0&&(i=t.dropPosition);const o=i-this.scrollTopOffset;t.dropPlaceholder&&t.dropPlaceholder.css("top",o).show()},rowDragAutoScrollHandler:function(t){const e=t.dragCurrentPosition,i=this.scrollTop,o=this.bodyHeight-this.frozenRowsHeight,n=i+o,s=this.options.rowHeight,r=Math.min(3*s,.5*o);if(!(rn-r){const i=e-(n-r),o=this.getAutoScrollOffset(i,r);this.autoScrollStart(o,t)}else this.autoScrollStop()},getAutoScrollOffset:function(t,e){return Math.floor(t/e*20)},autoScrollStop:function(){this.autoScrollMotion&&(this.autoScrollMotion.destroy(),this.autoScrollMotion=null)},autoScrollStart:function(t,e){this.autoScrollStop();const i=e.dragMaxScrollTop;this.autoScrollMotion=new B,this.autoScrollMotion.bind(B.EVENT.MOTION_MOVE,(()=>{const o=d.clamp(this.scrollTop+t,0,i);o!==this.scrollTop?(this.setScrollTop(o),this.updateDragCloneRowPosition(e),this.updateDragPlaceholderPosition(e)):this.autoScrollStop()})),this.autoScrollMotion.once(B.EVENT.MOTION_END,(()=>{this.autoScrollStart(t,e)})),this.autoScrollMotion.start({duration:200})},rowDropListHandler:function(t){const e=this.getRowDropList(t);if(!d.isList(e))return;const i=t.rowItem,o=e.filter((t=>{if(t===i)return!1;if(t.tg_frozen)return!1;let e=t.tg_parent;for(;e;){if(e===i)return!1;e=e.tg_parent}return!0}));if(!d.isList(o))return;const n=[];o.forEach((t=>{const e=this.getRowTop(t),i=this.getRowHeight(t);n.push({rowItem:t,position:e}),n.push({rowItem:t,position:e+i-1,dropBottom:!0})})),t.dropList=n},getRowDropList:function(t){const e=this.options.rowDragCrossLevel;return e?"function"==typeof e?e.call(this,t):this.viewRows:this.getRowParentSubs(t.rowItem)},rowDropItemHandler:function(t){const e=t.dropList;if(!e)return;const i=t.dragCurrentPosition;let o=Number.MAX_VALUE;for(let n=0,s=e.length;no)break;o=r,t.dropItem=s.rowItem,t.dropBottom=s.dropBottom,t.dropPosition=s.position}},rowDragDropPositionHandler:function(t,e,i){const o=this.getRowParentSubs(t),n=t.tg_sub_index;let s,r;return this.isDropIntoGroupFirstChild(e,i)?(s=e.subs,r=0):(s=this.getRowParentSubs(e),r=e.tg_sub_index,o===s&&n{this.trigger(y.onRowDropped,n)})),this.render({type:"rows",scrollRow:i})}},It={getMoveFocusRow:function(t,e){let i=t[0];return e>0&&(i=t[t.length-1]),i},getMoveLengthInList:function(t,e){let i=0;return t.forEach((t=>{this.getRowParentSubs(t)===e&&(i+=1)})),i},getMoveInfo:function(t,e,i){const o=this.getRowParentSubs(i);let n=i.tg_sub_index+e;const s=i.tg_parent;if(s&&this.options.rowMoveCrossLevel){const e=0,i=s.tg_subs_length-1;if(ni){const e=n-i;return this.getMoveInfo(t,e,s)}}if(e>0){n-=this.getMoveLengthInList(t,o)-1}return n=d.clamp(n,0,o.length),{list:o,index:n}},moveRowsHandler:function(t,e){(t=this.removeRowsHandler(t)).reverse();const i=this.getMoveFocusRow(t,e),o=this.getMoveInfo(t,e,i),n=[o.index,0].concat(t);return o.list.splice.apply(o.list,n),this.initRowsHandler(),this.onNextUpdated((function(){this.scrollRowIntoView(i),this.trigger(y.onRowMoved,t)})),this.removeSortColumn(),this.update(),!0},moveRows:function(t,e){t=d.toList(t);const i=[];return t.forEach((t=>{const e=this.getRowItem(t);e&&i.push(e)})),!!i.length&&(!(i.length>=this.getRowsLength())&&(0!==(e=d.toNum(e,!0))&&this.moveRowsHandler(i,e)))},moveRowsUp:function(t){return this.moveRows(t,-1)},moveRowsDown:function(t){return this.moveRows(t,1)},moveRowsToTop:function(t){return this.moveRows(t,-this.getRowsLength(!0))},moveRowsToBottom:function(t){return this.moveRows(t,this.getRowsLength(!0))},moveSelectedRowsUp:function(){return this.moveRows(this.getSelectedRows(),-1)},moveSelectedRowsDown:function(){return this.moveRows(this.getSelectedRows(),1)},moveSelectedRowsToTop:function(){return this.moveRows(this.getSelectedRows(),-this.getRowsLength(!0))},moveSelectedRowsToBottom:function(){return this.moveRows(this.getSelectedRows(),this.getRowsLength(!0))}},Lt={getSelectedRow:function(){let t=null;return this.forEachSelectableRow((function(e){if(e.selected)return t=e,!1})),t},getSelectedRows:function(){const t=[];return this.forEachSelectableRow((function(e){e.selected&&t.push(e)})),t.length>1&&t.sort((function(t,e){const i=t.tg_selected_index,o=e.tg_selected_index;return i>o?1:i0&&void 0!==arguments[0])||arguments[0];if(t=Boolean(t),this.globalSelectedIndex=0,t&&!this.options.selectMultiple)return this;const e=this.getAllSelectedChangedList(t);return e.length?(this.updateRowsSelectedState(e),this):this},setRowSelected:function(){return(this.options.selectMultiple?this.setRowMultipleSelected:this.setRowSingleSelected).apply(this,arguments)},setRowSingleSelected:function(t){const e=this.getRowItem(t);if(!e)return this;if(!this.isRowSelectable(e))return this;if(e.selected)return this;const i=[],o=this.getSelectedRow();return o&&o.selected&&i.push(o),e.selected||i.push(e),i.length?(this.updateRowsSelectedState(i),this):this},setRowMultipleSelected:function(t,e){if(0===arguments.length)return this;if(1===arguments.length&&!1===arguments[0])return this.selectAll(!1);const i=this.toRowItemList(t,(t=>this.isRowSelectable(t)));return i.length?!1===e?(this.setRowListUnselected(i),this):d.hasShiftKey(e)&&1===i.length?(this.setRowBetweenListSelected(i[0]),this):(this.updateRowsSelectedState(i),this):this},setRowListUnselected:function(t){const e=this.getSelectedChangedList(t,!1);e.length&&this.updateRowsSelectedState(e)},setRowBetweenListSelected:function(t){const e=this.previousSelectedRow;if(e&&e!==t){const i=this.getBetweenSelectedChangedList(e,t);if(!i.length)return;this.updateRowsSelectedState(i,!0)}else this.updateRowsSelectedState([t])},getAllSelectedChangedList:function(t){const e=[];return this.forEachSelectableRow((i=>{this.isSelectedChanged(i,t)&&e.push(i)})),e},getSelectedChangedList:function(t,e){const i=[];return t.forEach((t=>{this.isSelectedChanged(t,e)&&i.push(t)})),i},getBetweenSelectedChangedList:function(t,e){const i=t.tg_index,o=e.tg_index,n=[];if(i=o;)n.push(t),t--}return this.toRowItemList(n,(t=>this.isRowSelectable(t)&&!t.selected))},updateRowsSelectedState:function(t,e){let i;t.forEach((t=>{const e=!t.selected;t.selected=e,e&&(t.tg_selected_index=this.globalSelectedIndex++,i=t),this.renderRowSelectedState(t)})),e||(this.previousSelectedRow=i),this.renderSelectAllState(),this.onNextUpdated((()=>{this.trigger(y.onSelectChanged,t)})),this.render()},renderRowSelectedState:function(t){const e=t.tg_view_index;this.viewport.rows.includes(e)&&(this.renderRowState(t,"selected"),this.flushCell(e,this.selectColumn.tg_view_index))},renderSelectAllState:function(){this.isSelectAllVisible()&&(this.asyncRenderSelectAllState||(this.asyncRenderSelectAllState=d.microtask(this.renderSelectAllStateSync)),this.asyncRenderSelectAllState.apply(this,arguments))},renderSelectAllStateSync:function(){const t=this.getSelectAllState();if(t===this.previousSelectAllState)return;this.previousSelectAllState=t;const e=this.selectColumn,i=w(this.getColumnHeaderNode(e)).find(".tg-select-icon-all");i.length&&(i.removeClass("tg-selected tg-mixed"),t&&i.addClass(`tg-${t}`))},getSelectAllState:function(){let t=0;this.forEachSelectableRow((e=>{t+=1}));const e=this.getSelectedRows().length;let i="mixed";return 0===e?(i="",this.previousSelectedRow=null):e===t&&(i="selected"),i},isSelectAllVisible:function(){const t=this.options;return!!(t.selectVisible&&t.selectAllVisible&&t.selectMultiple)}},xt={setRowHover:function(t,e){const i=this.getRowItem(t);return i?(this.renderRowHover(i,e),this):this},renderRowHover:function(t,e){if(this.previousHover&&(this.previousHover.removeClass("tg-hover"),this.previousHover=null),!e)return this;if(!1===this.rowHoverable)return;if(!1===t.hoverable)return this;if(t.tg_frozen&&!this.options.frozenRowHoverable)return this;const i=t.tg_view_index;return this.previousHover=this.$body.find(`.tg-row[row='${i}']`).addClass("tg-hover"),this},setRowState:function(t,e){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=this.getRowItem(t);return o?(o.tg_state_names||(o.tg_state_names=new Set),o.tg_state_names.add(e),o[e]=i,this.renderRowState(o,e),this):this},renderRowState:function(t,e){const i=this.getRowNodesByIndex(t.tg_view_index);if(i){const o=`tg-${e}`;t[e]?i.addClass(o):i.removeClass(o)}}},zt={getRowItem:function(t){return d.isNum(t)?(t<0&&(t=this.rowsInfo.length+t),this.rowsInfo.indexCache[t]):t?d.isNum(t.tg_index)?t:this.getRowItemById(t.id||t):void 0},getRowItemById:function(t){return this.getRowItemBy("id",t)},getRowItemBy:function(t,e){if(void 0!==e)return this.rowsInfo.indexCache.find((i=>i[t]===e))},getRowsLength:function(t){return t?this.rowsInfo.length:this.viewRows.length},getViewRowItem:function(t){return this.viewRows[t]},getPreRenderRowInfo:function(t){const e={rows:[],rowNotFound:!1,benchmark:0};if(!t.length)return 0===this.getRowsLength()&&(e.rowNotFound=!0),e;const i=[],o=this.frozenInfo.row;return t.forEach((t=>{this.getRowCache(t)?t>o&&i.push(t):e.rows.push(t)})),i.length&&(e.benchmark=Math.min.apply(Math,i)),e.rows.sort((function(t,i){return t{this.renderRowNodes(t,e.benchmark)}))},createRowNode:function(t,e,i,o,n,s){const r=document.createElement("div");return r.setAttribute("row",t),r.className=i,o&&(r.style.cssText=o),r.style.top=`${n}px`,s!==this.options.rowHeight&&(r.style.height=`${s}px`,r.style.lineHeight=`${s}px`),this.setNodeDataCache(r,{row:t,rowItem:e,rowNode:r}),r},appendRowNode:function(t,e,i,o){ithis.frozenInfo.row))return e;e-=this.frozenRowsHeight}return e-=this.scrollTopOffset,e},getRowTop:function(t){let e=t.tg_top;return t.tg_frozen||(e-=this.frozenRowsHeight),e},getRowVPos:function(t){const e=this.frozenInfo.bottom,i=this.frozenInfo.row;let o="top";return this.frozenInfo.rows&&(t<=i?e&&(o="bottom"):e||(o="bottom")),o},getRowCanvas:function(t,e){return"top"===t?"left"===e?this.$bodyTL:this.$bodyTR:"left"===e?this.$bodyBL:this.$bodyBR}},Mt={CHANGE:"change",START:"start",END:"end"},Pt={h:{type:"h",className:"tg-scrollbar-h",offset:"left",size:"width",page:"pageX",axis:"x",offsetName:"offsetX"},v:{type:"v",className:"tg-scrollbar-v",offset:"top",size:"height",page:"pageY",axis:"y",offsetName:"offsetY"}};class Nt extends k{static EVENT=Mt;static H="h";static V="v";type="h";settings={};size=0;viewSize=0;bodySize=0;trackSize=0;position=0;scale=0;thumbPosition=0;thumbScale=0;constructor(t,e){super(),this.settings=Pt[t]||Pt.h,this.type=this.settings.type,this.id=d.uid(4,`tg-scrollbar-${this.type}-`),this.$holder=w(e),this.$holder.find(`.${this.settings.className}`).remove(),this.options=this.generateOptions()}generateOptions(t){return d.merge({size:15,round:!1,blank:!1,motionDuration:200},t)}updateOptions(t){this.options=this.generateOptions(t);let e=this.options.size;d.isNum(e)||(e=d.toNum(e)),e=Math.round(e),e=Math.max(e,0),e=Math.min(e,30),this.size=e}create(){this.$container=w('
    ').appendTo(this.$holder),this.$container.attr("id",this.id),this.$container.addClass(d.classMap(["tg-scrollbar",this.settings.className,{"tg-scrollbar-round":this.options.round}])),this.$track=this.$container.find(".tg-scrollbar-track"),this.$thumb=this.$container.find(".tg-scrollbar-thumb"),this.thumbDrag=new O,this.thumbDrag.bind(O.EVENT.DRAG_START,((t,e)=>{this.thumbDragStart(e)})).bind(O.EVENT.DRAG_MOVE,((t,e)=>{this.thumbDragMove(e)})).bind(O.EVENT.DRAG_END,((t,e)=>{this.thumbDragEnd(e)}));const t=this.$container.get(0);return this.scrollEvents={mousedown:{handler:e=>{e.target.classList.contains("tg-scrollbar-thumb")?this.thumbMouseDownHandler(e):(this.trackEvents={mouseup:{handler:t=>{this.trackMouseupHandler(t)},options:{once:!0}}},d.bindEvents(this.trackEvents,t),this.trackMousedownHandler(e))},options:!0},selectstart:{handler:t=>{d.preventDefault(t)},options:!0}},d.bindEvents(this.scrollEvents,t),this}getBlank(){return this.options.blank}getSize(){return this.size}getViewSize(){return this.viewSize}getBodySize(){return this.bodySize}getTrackMouseDirection(){let t=1;return this.trackMousePosition0){const i=this.getMaxThumbPosition();t=Math.round(i*this.position/e),t=d.clamp(t,0,i)}return this.setThumbPosition(t),this}trackMousedownHandler(t){return this.motionStop(),this.trackMousePosition=this.getTrackMousePos(t),this.motionStart(),this}trackMouseupHandler(t){return d.unbindEvents(this.trackEvents),this.motionStop(),this.motionStarted||(this.trackMousePosition=this.getTrackMousePos(t),this.trackScrollHandler(),this.triggerEvent()),this}trackScrollHandler(){const t=Math.max(0,this.viewSize-20)*this.getTrackMouseDirection();return this.setOffset(t),this}motionStop(){return this.motion&&(this.motion.destroy(),this.motion=null),this}motionStart(){const t=this.position,e=Math.round(this.trackMousePosition/this.viewSize*this.getMaxPosition());return this.motionStarted=!1,this.motion=new B,this.motion.bind(B.EVENT.MOTION_START,((t,e)=>{this.motionStarted=!0})),this.motion.bind(B.EVENT.MOTION_MOVE,((t,e)=>{this.motionUpdateHandler(t,e)})),this.motion.start({duration:this.options.motionDuration,from:t,till:e}),this}motionUpdateHandler(t,e){e!==this.position&&(this.setPosition(e),this.triggerEvent())}thumbMouseDownHandler(t){this.$thumb.addClass("tg-scrollbar-thumb-hold"),this.thumbDrag.start(t,{target:this.$thumb})}thumbDragStart(t){this.motionStop(),t.thumbPositionStart=this.thumbPosition,this.trigger(Mt.START)}thumbDragMove(t){let e=t.thumbPositionStart+t[this.settings.offsetName];const i=this.getMaxThumbPosition();e=d.clamp(e,0,i),this.setThumbPosition(e);let o=0;i>0&&(o=d.per(e/i)*this.getMaxPosition(),o=Math.round(o)),this.position=o,this.triggerEvent()}thumbDragEnd(t){this.$thumb&&this.$thumb.removeClass("tg-scrollbar-thumb-hold"),this.trigger(Mt.END)}triggerEvent(){this.trigger(Mt.CHANGE,this.position)}getPosition(){return this.position}setPosition(t){t=d.toNum(t,!0);const e=this.getMaxPosition();t=d.clamp(t,0,e),this.position=t,this.updateThumbPosition()}getMaxPosition(){return this.bodySize-this.viewSize}updatePosition(){const t=this.getMaxPosition(),e=d.clamp(this.position,0,t);this.position=e}setOffset(t){t=d.toNum(t);const e=this.position+t;return this.setPosition(e),this}getScale(){return this.scale}setScale(t){return t=d.per(t),this.scale=t,this.scaleChangeHandler(),this}scaleChangeHandler(){let t=Math.round(this.viewSize*this.scale);if(t=Math.max(t,Math.round(1.5*this.options.size)),t=Math.min(t,this.viewSize-1),this.thumbSize=t,this.$thumb){const t={};"h"===this.type?(t.height=this.size,t.width=this.thumbSize):(t.width=this.size,t.height=this.thumbSize),this.$thumb.css(t)}}updateTrackSize(){const t={};return"h"===this.type?(t.width=this.trackSize,t.height=this.size):(t.height=this.trackSize,t.width=this.size),this.$container.css(t),this}updateThumbSize(){let t=0;return this.bodySize&&(t=this.trackSize/this.bodySize),this.setScale(t),this}parseSize(t){return t=d.toNum(t),t=Math.round(t),t=Math.max(t,0)}updateSize(t,e,i){t=this.parseSize(t),this.viewSize=t,e=this.parseSize(e),this.bodySize=e,i=d.isNum(i)?this.parseSize(i):t,this.trackSize=i,this.previousFadeIn=null}fade(t){return!(!this.$container||!this.size)&&(this.previousFadeIn!==t&&(this.previousFadeIn=t,t?this.$container.hasClass("tg-fade-out")&&this.$container.removeClass("tg-fade-out").addClass("tg-fade-in"):this.$container.removeClass("tg-fade-in").addClass("tg-fade-out"),!0))}show(){if(this.updatePosition(),!this.getBlank())return!this.$container&&this.size>0&&this.create(),this.$container?(this.updateTrackSize(),this.updateThumbSize(),this):this;this.remove()}hide(){return this.updatePosition(),this.remove(),this}remove(){if(this.motionStop(),d.unbindEvents(this.scrollEvents),d.unbindEvents(this.trackEvents),this.thumbDrag&&(this.thumbDrag.destroy(),this.thumbDrag=null),!this.$container)return this;this.$thumb=null,this.$track=null,this.$container.remove(),this.$container=null}destroy(){return this.remove(),this}}const _t={CHANGE:"change",START:"start",END:"end"};class kt extends k{static EVENT=_t;visible=!0;constructor(t,e){super(),this.id=d.uid(4,`tg-scroll-pane-${e}-`),this.gradientInfo=[],this.$container=w(t).attr("id",this.id),this.$container.addClass("tg-scroll-pane"),this.$scrollView=this.$container.find(".tg-scroll-view"),this.$scrollBody=this.$scrollView.find(".tg-scroll-body"),this.scrollbarH=new Nt(Nt.H,this.$container),this.scrollbarH.bind(Nt.EVENT.CHANGE,((t,e)=>{this.scrollHChangeHandler()})).bind(Nt.EVENT.START,(t=>{this.scrollStartEndHandler(!0)})).bind(Nt.EVENT.END,(t=>{this.scrollStartEndHandler()})),this.scrollbarV=new Nt(Nt.V,this.$container),this.scrollbarV.bind(Nt.EVENT.CHANGE,((t,e)=>{this.scrollVChangeHandler()})).bind(Nt.EVENT.START,(t=>{this.scrollStartEndHandler(!0)})).bind(Nt.EVENT.END,(t=>{this.scrollStartEndHandler()})),this.options=this.generateOptions()}generateOptions(t){return d.merge({scrollbarH:{},scrollbarV:{},scrollbarFade:!1,scrollSizeOnKeyPress:20,gradient:30},t)}scrollStartEndHandler(t){t?this.trigger(_t.START):this.trigger(_t.END)}show(){return this.$container.show(),this.visible=!0,this}hide(){return this.$container.hide(),this.visible=!1,this}width(){return this.scrollPaneW}height(){return this.scrollPaneH}render(t){return this.visible?(this.options=this.generateOptions(t),this.update(),this):this}update(){this.scrollPaneW=this.options.scrollPaneW,this.scrollPaneH=this.options.scrollPaneH,this.scrollBodyW=this.options.scrollBodyW,this.scrollBodyH=this.options.scrollBodyH,this.updateScrollbar()}setGroupH(t){this.groupH=d.toList(t)}setGroupV(t){this.groupV=d.toList(t)}updateGroupH(){if(!d.isList(this.groupH))return this;const t=this.scrollbarH.getPosition();return this.groupH.forEach((function(e){e&&e.updateScrollHFromGroup(t)})),this}updateGroupV(){if(!d.isList(this.groupV))return this;const t=this.scrollbarV.getPosition();return this.groupV.forEach((function(e){e&&e.updateScrollVFromGroup(t)})),this}updateGroupList(){this.updateGroupH(),this.updateGroupV()}updateScrollHFromGroup(t){this.scrollbarH.getPosition()!==t&&(this.scrollbarH.setPosition(t),this.updateScrollLeft(),this.triggerEvent())}updateScrollVFromGroup(t){this.scrollbarV.getPosition()!==t&&(this.scrollbarV.setPosition(t),this.updateScrollTop(),this.triggerEvent())}setPosition(t,e){return this.scrollbarH.setPosition(t),this.scrollbarV.setPosition(e),this.updateScrollLeft(),this.updateScrollTop(),this.updateGroupList(),this}updateScrollbar(){this.scrollbarH.updateOptions(this.options.scrollbarH),this.scrollbarV.updateOptions(this.options.scrollbarV),this.updateScrollState(),this.updateScrollView(),this.updateScrollTrack(),this.scrollbarH.updateSize(this.scrollViewW,this.scrollBodyW,this.scrollTrackW),this.scrollbarV.updateSize(this.scrollViewH,this.scrollBodyH,this.scrollTrackH),this.hasScrollH?(this.scrollbarH.show(),this.scrollbarH.setPosition(this.scrollbarH.getPosition())):this.scrollbarH.hide(),this.hasScrollV?(this.scrollbarV.show(),this.scrollbarV.setPosition(this.scrollbarV.getPosition())):this.scrollbarV.hide(),this.updateScrollLeft(),this.updateScrollTop(),this.updateGroupList()}updateScrollState(){const t=this.scrollbarH.getSize(),e=this.scrollbarV.getSize(),i=this.scrollbarH.getBlank(),o=this.scrollbarV.getBlank(),n=this.options.scrollbarFade;let s=!1,r=0;(function(){(this.scrollPaneWe&&t.push("left"),ie&&t.push("top"),o{const i=`tg-gradient-${e}`;t.includes(e)?this.$container.addClass(i):this.$container.removeClass(i)})))}getScrollLeft(){return this.scrollbarH.getPosition()}getScrollTop(){return this.scrollbarV.getPosition()}getMaxScrollLeft(){return this.scrollbarH.getMaxPosition()}getMaxScrollTop(){return this.scrollbarV.getMaxPosition()}getScrollTopOffset(){const t=this.getScrollTop();return t-t%1e4}triggerEvent(){this.trigger(_t.CHANGE,{scrollLeft:this.getScrollLeft(),scrollTop:this.getScrollTop()})}scrollHChangeHandler(){this.updateScrollLeft(),this.updateGroupList(),this.triggerEvent()}scrollVChangeHandler(){this.updateScrollTop(),this.updateGroupList(),this.triggerEvent()}setOffsetH(t){const e=this.getScrollLeft();this.scrollbarH.setOffset(t);return this.getScrollLeft()!==e&&(this.updateScrollLeft(),this.updateGroupList(),this.triggerEvent(),!0)}setOffsetV(t){const e=this.getScrollTop();this.scrollbarV.setOffset(t);return this.getScrollTop()!==e&&(this.updateScrollTop(),this.updateGroupList(),this.triggerEvent(),!0)}mouseWheelHandler(t){const e=t.deltaX,i=t.deltaY,o=Math.abs(e);if(o>Math.abs(i)){if(this.hasScrollH)return this.setOffsetH(e)}else{if(this.hasScrollV)return this.setOffsetV(i);if(this.hasScrollH&&!o)return this.setOffsetH(i)}return!1}keyPageUpHandler(t){return this.setOffsetV(-this.scrollViewH)}keyPageDownHandler(t){return this.setOffsetV(this.scrollViewH)}keyEndHandler(t){return this.setOffsetV(this.scrollBodyH)}keyHomeHandler(t){return this.setOffsetV(-this.scrollBodyH)}keyLeftHandler(t){return this.setOffsetH(-this.options.scrollSizeOnKeyPress)}keyUpHandler(t){return this.setOffsetV(-this.options.scrollSizeOnKeyPress)}keyRightHandler(t){return this.setOffsetH(this.options.scrollSizeOnKeyPress)}keyDownHandler(t){return this.setOffsetV(this.options.scrollSizeOnKeyPress)}destroy(){return this.visible=!1,this.groupH=null,this.groupV=null,this.scrollbarV&&(this.scrollbarV.destroy(),this.scrollbarV=null),this.scrollbarH&&(this.scrollbarH.destroy(),this.scrollbarH=null),this.$container=null,this.$scrollView=null,this.$scrollBody=null,this}}const Vt={initScrollPane:function(){this.initFrozenStyle(),this.createScrollPane()},initFrozenStyle:function(){const t={HL:{container:this.$paneHL,cls:[]},HR:{container:this.$paneHR,cls:[]},TL:{container:this.$paneTL,cls:[]},TR:{container:this.$paneTR,cls:[]},BL:{container:this.$paneBL,cls:[]},BR:{container:this.$paneBR,cls:[]}},e="tg-frozen-h";this.frozenInfo.rows&&(this.frozenInfo.bottom?(t.BL.cls.push(e),t.BR.cls.push(e)):(t.TL.cls.push(e),t.TR.cls.push(e)));const i="tg-frozen-v",o="tg-frozen-line-v";this.frozenInfo.columns&&(this.frozenInfo.right?(t.HR.cls.push(i),t.TR.cls.push(i),t.BR.cls.push(i)):(t.HL.cls.push(i),t.TL.cls.push(i),t.BL.cls.push(i)),t.HL.cls.push(o),t.TL.cls.push(o),t.BL.cls.push(o));const n="tg-frozen",s=[n,e,i,o].join(" ");Object.keys(t).forEach((function(e){const i=t[e],o=i.container;o.removeClass(s);const r=i.cls;if(!r.length)return;const l=[n].concat(r).join(" ");o.addClass(l)}))},createScrollPane:function(){this.removeScrollPane(),this.scrollPaneMap={HL:new kt(this.$paneHL,"header-left"),HR:new kt(this.$paneHR,"header-right"),TL:new kt(this.$paneTL,"top-left"),TR:new kt(this.$paneTR,"top-right"),BL:new kt(this.$paneBL,"bottom-left"),BR:new kt(this.$paneBR,"bottom-right")},this.scrollPaneMap.BR.setGroupH([this.scrollPaneMap.HR,this.scrollPaneMap.TR]),this.scrollPaneMap.TR.setGroupH([this.scrollPaneMap.HR,this.scrollPaneMap.BR]),this.scrollPaneMap.BL.setGroupH([this.scrollPaneMap.HL,this.scrollPaneMap.TL]),this.scrollPaneMap.TL.setGroupH([this.scrollPaneMap.HL,this.scrollPaneMap.BL]),this.scrollPaneMap.BR.setGroupV(this.scrollPaneMap.BL),this.scrollPaneMap.BL.setGroupV(this.scrollPaneMap.BR),this.scrollPaneMap.TR.setGroupV(this.scrollPaneMap.TL),this.scrollPaneMap.TL.setGroupV(this.scrollPaneMap.TR),this.initActiveScrollPane(),this.initPaneVisibility()},initActiveScrollPane:function(){const t=this.getScrollPaneVP(),e=this.getScrollPaneHP(),i=`${t}${e}`;this.scrollPane=this.scrollPaneMap[i],this.scrollPane.bind(kt.EVENT.CHANGE,((t,e)=>{this.scrollPaneChangeHandler(t,e)})).bind(kt.EVENT.START,(t=>{this.rowHoverable=!1})).bind(kt.EVENT.END,(t=>{this.rowHoverable=!0}));let o={L:"L",R:"L"};this.frozenInfo.columns&&this.frozenInfo.right&&(o={L:"R",R:"L"});const n=`${t}${o[e]}`;this.scrollPaneFrozen=this.scrollPaneMap[n]},getScrollPaneVP:function(){return this.frozenInfo.rows&&!this.frozenInfo.bottom?"B":"T"},getScrollPaneHP:function(){return this.frozenInfo.columns&&!this.frozenInfo.right?"R":"L"},initPaneVisibility:function(){this.scrollPaneMap.HL.show(),this.scrollPaneMap.TL.show(),this.frozenInfo.columns?(this.scrollPaneMap.HR.show(),this.scrollPaneMap.TR.show(),this.frozenInfo.rows?(this.scrollPaneMap.BL.show(),this.scrollPaneMap.BR.show()):(this.scrollPaneMap.BL.hide(),this.scrollPaneMap.BR.hide())):(this.scrollPaneMap.HR.hide(),this.scrollPaneMap.TR.hide(),this.scrollPaneMap.BR.hide(),this.frozenInfo.rows?this.scrollPaneMap.BL.show():this.scrollPaneMap.BL.hide())},scrollPaneChangeHandler:function(t,e){this.hideColumnLine(),this.scrollLeft=e.scrollLeft,this.scrollTop=e.scrollTop,this.scrollRenderHandler()},scrollbarFadeInOutHandler:function(t,e){this.options.scrollbarFade&&(e?this.updateScrollPaneFade(!0):this.options.scrollbarFadeTimeout||this.updateScrollPaneFade(!1))},updateScrollPaneFade:function(t){if(!this.options.scrollbarFade)return;this.updateScrollPaneFadeSync(t);const e=this.options.scrollbarFadeTimeout;e&&(clearTimeout(this.timeout_fade),this.timeout_fade=setTimeout((()=>{this.updateScrollPaneFadeSync(!1)}),e))},updateScrollPaneFadeSync:function(t){if(this.previousScrollbarFadeIn===t)return;this.previousScrollbarFadeIn=t;const e=[];Object.keys(this.scrollPaneMap).forEach((t=>{const i=this.scrollPaneMap[t];i.hasScrollbar()&&e.push(i)})),e.length&&e.forEach((function(e){e.fade(t)}))},updateScrollPane:function(){const t=this.getScrollbarOptions();this.scrollPaneMap.HL.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthL,scrollPaneH:this.headerHeight,scrollBodyW:this.bodyWidthL,scrollBodyH:this.headerHeight,scrollbarV:t.HLV,scrollbarH:t.HLH})),this.scrollPaneMap.HR.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthR,scrollPaneH:this.headerHeight,scrollBodyW:this.bodyWidthR,scrollBodyH:this.headerHeight,scrollbarV:t.HRV,scrollbarH:t.HRH})),this.scrollPaneMap.TL.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthL,scrollPaneH:this.paneHeightT,scrollBodyW:this.bodyWidthL,scrollBodyH:this.bodyHeightT,scrollbarV:t.TLV,scrollbarH:t.TLH})),this.scrollPaneMap.TR.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthR,scrollPaneH:this.paneHeightT,scrollBodyW:this.bodyWidthR,scrollBodyH:this.bodyHeightT,scrollbarV:t.TRV,scrollbarH:t.TRH})),this.scrollPaneMap.BL.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthL,scrollPaneH:this.paneHeightB,scrollBodyW:this.bodyWidthL,scrollBodyH:this.bodyHeightB,scrollbarV:t.BLV,scrollbarH:t.BLH})),this.scrollPaneMap.BR.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthR,scrollPaneH:this.paneHeightB,scrollBodyW:this.bodyWidthR,scrollBodyH:this.bodyHeightB,scrollbarV:t.BRV,scrollbarH:t.BRH})),this.scrollLeft=this.getScrollLeft(),this.scrollTop=this.getScrollTop(),this.updateScrollPaneFade(Boolean(this.options.scrollbarFadeTimeout))},getScrollPaneOptions:function(t){const e=this.options;return t.scrollbarFade=e.scrollbarFade,t.gradient=d.clamp(d.toNum(e.scrollPaneGradient,!0),0,100),t},getScrollbarOptions:function(){const t=this.options.scrollbarRound,e={};return["HLH","HLV","HRH","HRV","TLH","TLV","TRH","TRV","BLH","BLV","BRH","BRV"].forEach((function(i){e[i]={size:0,round:t,blank:!1}})),this.scrollbarOptionsHandler(e),this.scrollbarFadeHandler(e),e},scrollbarOptionsHandler:function(t){const e=this.scrollbarSizeH,i=this.scrollbarSizeV;this.scrollbarHeaderHandler(t,e,i),this.frozenInfo.columns?this.frozenInfo.rows?this.scrollbarC1R1Handler(t,e,i):this.scrollbarC1R0Handler(t,e,i):this.frozenInfo.rows?this.scrollbarC0R1Handler(t,e,i):this.scrollbarC0R0Handler(t,e,i)},scrollbarFadeHandler:function(t){if(this.options.scrollbarFade)for(const e in t)if(d.hasOwn(t,e)){const i=t[e];i.size>0&&i.blank&&(i.blank=!1,i.size=0)}},scrollbarHeaderHandler:function(t,e,i){this.hasVScroll&&(this.frozenInfo.columns?(t.HRV.size=i,t.HRV.blank=1):(t.HLV.size=i,t.HLV.blank=1))},scrollbarC0R0Handler:function(t,e,i){t.TLH.size=e,t.TLV.size=i},scrollbarC0R1Handler:function(t,e,i){this.frozenInfo.bottom?this.scrollbarC0R1B1Handler(t,e,i):this.scrollbarC0R1B0Handler(t,e,i)},scrollbarC0R1B1Handler:function(t,e,i){t.BLH.size=e,t.TLV.size=i,this.hasVScroll&&(t.BLV.size=i,t.BLV.blank=1)},scrollbarC0R1B0Handler:function(t,e,i){t.BLH.size=e,t.BLV.size=i,this.hasVScroll&&(t.TLV.size=i,t.TLV.blank=1)},scrollbarC1R0Handler:function(t,e,i){this.frozenInfo.right?this.scrollbarC1R0R1Handler(t,e,i):this.scrollbarC1R0R0Handler(t,e,i)},scrollbarC1R0R1Handler:function(t,e,i){this.hasHScroll&&(t.TLH.size=e,this.scrollPaneHidden?(t.TRH.size=e,t.TLH.blank=!0):(t.TRH.size=e,t.TRH.blank=!0)),t.TRV.size=i},scrollbarC1R0R0Handler:function(t,e,i){this.hasHScroll&&(t.TRH.size=e,this.scrollPaneHidden?(t.TLH.size=e,t.TRH.blank=!0):(t.TLH.size=e,t.TLH.blank=!0)),t.TRV.size=i},scrollbarC1R1Handler:function(t,e,i){this.frozenInfo.right?this.frozenInfo.bottom?this.scrollbarC1R1R1B1Handler(t,e,i):this.scrollbarC1R1R1B0Handler(t,e,i):this.frozenInfo.bottom?this.scrollbarC1R1R0B1Handler(t,e,i):this.scrollbarC1R1R0B0Handler(t,e,i)},scrollbarC1R1R1B1Handler:function(t,e,i){this.hasHScroll&&(t.BLH.size=e,this.scrollPaneHidden&&(t.BRH.size=e,t.BLH.blank=!0)),t.TRV.size=i,this.hasVScroll&&(t.BRV.size=i,t.BRV.blank=1)},scrollbarC1R1R1B0Handler:function(t,e,i){this.hasHScroll&&(t.BLH.size=e,this.scrollPaneHidden?(t.BRH.size=e,t.BLH.blank=!0):(t.BRH.size=e,t.BRH.blank=!0)),t.BRV.size=i,this.hasVScroll&&(t.TRV.size=i,t.TRV.blank=1)},scrollbarC1R1R0B1Handler:function(t,e,i){this.hasHScroll&&(t.BRH.size=e,this.scrollPaneHidden&&(t.BLH.size=e,t.BRH.blank=!0)),t.TRV.size=i,this.hasVScroll&&(t.BRV.size=i,t.BRV.blank=1)},scrollbarC1R1R0B0Handler:function(t,e,i){this.hasHScroll&&(t.BRH.size=e,this.scrollPaneHidden?(t.BLH.size=e,t.BRH.blank=!0):(t.BLH.size=e,t.BLH.blank=!0)),t.BRV.size=i,this.hasVScroll&&(t.TRV.size=i,t.TRV.blank=1)},removeScrollPane:function(){clearTimeout(this.timeout_fade),this.previousScrollbarFadeIn=null,this.scrollPaneMap&&(Object.keys(this.scrollPaneMap).forEach((t=>{const e=this.scrollPaneMap[t];e&&e.destroy()})),this.scrollPaneMap=null,this.scrollPane=null,this.scrollPaneFrozen=null)}},Ot={updateScrollState:function(){this.updateGlobalScrollInfo(),this.updateHScrollState(),this.updateVScrollState(),this.updateBlankColumnWidth(),this.scrollStateChanged=!1,this.previousHasHScroll===this.hasHScroll&&this.previousHasVScroll===this.hasVScroll||(this.scrollStateChanged=!0,this.previousHasHScroll=this.hasHScroll,this.previousHasVScroll=this.hasVScroll,this.trigger(y.onScrollStateChanged,{hasHScroll:this.hasHScroll,hasVScroll:this.hasVScroll}))},updateGlobalScrollInfo:function(){this.totalRowsLength=this.getRowsLength(),this.totalRowsHeight=this.getRowsHeight(),this.frozenRowsHeight=this.getFrozenRowsHeight(),this.scrollRowsHeight=this.totalRowsHeight-this.frozenRowsHeight,this.totalRowsHeight=Math.max(this.totalRowsHeight,1),this.scrollRowsHeight=Math.max(this.scrollRowsHeight,1),this.flushRowFrom(this.totalRowsLength)},updateHScrollState:function(){if(this.hasHScroll=!0,this.updateScrollPaneHiddenState(),this.updateHScrollByScrollPaneHidden(),this.scrollPaneHidden)return;this.containerWidth-this.columnsWidth>=0&&(this.hasHScroll=!1)},getScrollPaneCurrentWidth:function(){return this.frozenInfo.right?this.bodyWidth-this.columnsWidthR:this.bodyWidth-this.columnsWidthL},updateHScrollByScrollPaneHidden:function(){if(this.scrollPaneHidden){this.hasHScroll=!1;this.getScrollPaneCurrentWidth()=this.totalRowsHeight&&(this.hasVScroll=!1)}},updateBlankColumnWidth:function(){let t=this.containerWidth-this.columnsWidth;!this.hasVScroll||this.hasHScroll||this.options.scrollbarFade||(t-=this.scrollbarSizeV),this.scrollPaneHidden&&(t=0),this.hasHScroll||(t>=0?(this.frozenInfo.columns?this.columnsWidthR+=t:this.columnsWidthL+=t,this.blankColumn.tg_width=t):this.hasHScroll=!0)}},$t={scrollToRow:function(t){const e=this.getRowItem(t);return this.scrollToItem(e,null),this},scrollToColumn:function(t){const e=this.getColumnItem(t);return this.scrollToItem(null,e),this},scrollToCell:function(t,e){const i=this.getRowItem(t),o=this.getColumnItem(e);return this.scrollToItem(i,o),this},scrollToFirstRow:function(){return this.setScrollTop(0),this},scrollToLastRow:function(){const t=this.getViewRows(),e=t[t.length-1],i=this.getScrollRowPosition(e);if(d.isNum(i))return this.setScrollTop(i),this},scrollToFirstColumn:function(){return this.setScrollLeft(0),this},scrollToLastColumn:function(t){const e=this.getViewColumns();let i=e[e.length-2];t&&(i=e[e.length-1]);const o=this.getScrollColumnPosition(i);if(d.isNum(o))return this.setScrollLeft(o),this},scrollRowIntoView:function(t){const e=this.getRowItem(t);return this.scrollItemIntoView(e,null),this},scrollColumnIntoView:function(t){const e=this.getColumnItem(t);return this.scrollItemIntoView(null,e),this},scrollCellIntoView:function(t,e){const i=this.getRowItem(t),o=this.getColumnItem(e);return this.scrollItemIntoView(i,o),this},setScroll:function(t,e){return t===this.scrollLeft&&e===this.scrollTop||(this.scrollLeft=t,this.scrollTop=e,this.scrollHandler()),this},setScrollLeft:function(t){return t===this.scrollLeft||(this.scrollLeft=t,this.scrollHandler()),this},setScrollTop:function(t){return t===this.scrollTop||(this.scrollTop=t,this.scrollHandler()),this},getScrollRowPosition:function(t){if(!t)return;let e=t.tg_view_index;return e-=this.frozenInfo.rows,e>=0?this.getRowTop(t):void 0},getScrollColumnPosition:function(t){if(!t)return;let e=t.tg_left;return this.frozenInfo.columns&&(e-=this.bodyWidthL),e>=0?e:void 0},scrollToItem:function(t,e){return this.scrollToChanged=!1,this.scrollToRowHandler(t),this.scrollToColumnHandler(e),this.scrollToChanged?(this.scrollHandler(),this):this},scrollToRowHandler:function(t){if(!t)return;const e=this.getScrollRowPosition(t);d.isNum(e)&&e!==this.scrollTop&&(this.scrollTop=e,this.scrollToChanged=!0)},scrollToColumnHandler:function(t){if(!t)return;const e=this.getScrollColumnPosition(t);d.isNum(e)&&e!==this.scrollLeft&&(this.scrollLeft=e,this.scrollToChanged=!0)},scrollItemIntoView:function(t,e){return this.scrollIntoViewChanged=!1,this.scrollRowIntoViewHandler(t),this.scrollColumnIntoViewHandler(e),this.scrollIntoViewChanged?(this.scrollHandler(),this):this},scrollRowIntoViewHandler:function(t){if(!t)return;const e=this.getScrollRowPosition(t);if(!d.isNum(e))return;if(ethis.scrollTop+o){const t=e-(o-i);this.scrollTop=t,this.scrollIntoViewChanged=!0}},scrollColumnIntoViewHandler:function(t){if(!t)return;const e=this.getScrollColumnPosition(t);if(!d.isNum(e))return;if(ethis.scrollLeft+o){const t=e-(o-i);this.scrollLeft=t,this.scrollIntoViewChanged=!0}},scrollOnInit:function(){const{scrollLeft:t,scrollTop:e,scrollColumn:i,scrollRow:o}=this.renderSettings;this.scrollIntoViewChanged=!1,Number.isInteger(t)&&t!==this.scrollLeft&&(this.scrollLeft=t,this.scrollIntoViewChanged=!0),Number.isInteger(e)&&e!==this.scrollTop&&(this.scrollTop=e,this.scrollIntoViewChanged=!0),i&&this.scrollColumnIntoViewHandler(i),o&&this.scrollRowIntoViewHandler(o),this.scrollIntoViewChanged&&this.scrollPane.setPosition(this.scrollLeft,this.scrollTop)},scrollHandler:function(){this.scrollPane.setPosition(this.scrollLeft,this.scrollTop),this.scrollRenderHandler()},scrollRenderHandler:function(){this.previousScrollLeft===this.scrollLeft&&this.previousScrollTop===this.scrollTop||(this.previousScrollLeft=this.scrollLeft,this.previousScrollTop=this.scrollTop,this.onNextUpdated((()=>{this.updateScrollPaneFade(!0),this.trigger(y.onScroll,{scrollLeft:this.scrollLeft,scrollTop:this.scrollTop})})),this.render())},scrollTouchStartHandler:function(t,e){this.hideColumnLine(),this.scrollTouchLeft=this.getScrollLeft(),this.scrollTouchTop=this.getScrollTop(),this.scrollMaxTouchLeft=this.getMaxScrollLeft(),this.scrollMaxTouchTop=this.getMaxScrollTop()},getTouchOrientation:function(t){return t.orientation?t.orientation:[e.LEFT,e.RIGHT].includes(t.direction)?(t.orientation||(t.orientation="Y"),t.orientation):[e.UP,e.DOWN].includes(t.direction)?(t.orientation||(t.orientation="X"),t.orientation):void 0},scrollTouchMoveHandler:function(t,e){if(e.touchLength>1)return;let i=e.offsetX,o=e.offsetY;const n=this.getTouchOrientation(e);"X"===n?i=0:"Y"===n&&(o=0);let s=this.scrollTouchLeft-i,r=this.scrollTouchTop-o;s=d.clamp(s,0,this.scrollMaxTouchLeft),r=d.clamp(r,0,this.scrollMaxTouchTop);let l=!1;this.scrollPaneHidden&&(l=this.scrollPaneFrozen.setOffsetH(-e.moveX),s=0);const h=this.getScrollLeft(),a=this.getScrollTop();(s!==h||r!==a||l)&&(d.preventDefault(e.e),this.setScroll(s,r))},scrollTouchEndHandler:function(){this.protectedItem=null},scrollTouchInertiaHandler:function(t,e){const i=this.getScrollLeft(),o=this.getScrollTop(),n=i-e.touchInertiaX,s=o-e.touchInertiaY;this.setScroll(n,s)},getScrollViewWidth:function(){let t=this.getScrollPaneWidth();return this.frozenInfo.right||(t-=this.getScrollbarWidth()),t},getScrollViewHeight:function(){let t=this.getScrollPaneHeight();return this.frozenInfo.bottom||(t-=this.getScrollbarHeight()),t},getScrollPaneWidth:function(){return this.scrollPane.width()},getScrollPaneHeight:function(){return this.scrollPane.height()},getScrollbarWidth:function(){return this.hasVScroll&&!this.options.scrollbarFade?this.scrollbarSizeV:0},getScrollbarHeight:function(){return this.hasHScroll&&!this.options.scrollbarFade?this.scrollbarSizeH:0},getScrollLeft:function(){return this.scrollPane.getScrollLeft()},getScrollTop:function(){return this.scrollPane.getScrollTop()},getMaxScrollLeft:function(){return this.scrollPane.getMaxScrollLeft()},getMaxScrollTop:function(){return this.scrollPane.getMaxScrollTop()}};class Dt{constructor(t){this.options=this.generateOptions(t)}generateOptions(t){return d.merge({ignore:null,sortField:"",sortFactor:1,sortBlankFactor:1,sortComparer:null},t)}sortList(t){if(!d.isList(t)||1===t.length)return!1;this.ignoreExcludeHandler(t);const e=this.comparerHandler(t);return this.ignoreIncludeHandler(t),e}getDefaultComparer(t){return(ft[t]||ft.string).bind(this)}comparerHandler(t){const e=this.options,i=e.sortField,o=e.sortFactor,n=e.sortBlankFactor,s=e.sortComparer;return"function"==typeof s&&(t.sort(((t,e)=>s.call(this,t,e,{sortField:i,sortFactor:o,sortBlankFactor:n}))),!0)}ignoreExcludeHandler(t){const e=this.options.ignore;this.ignoreListTop=[],this.ignoreListBottom=[];const i=[];for(let o=0,n=t.length;o{t.unshift(e.item)})),this.ignoreListBottom.forEach((e=>{t.push(e.item)}))}}const Bt={removeSortColumn:function(){return this.sortColumn=null,this.$header&&this.$header.find(".tg-column-sorted").removeClass("tg-column-sorted"),this},setSortColumn:function(t){if(!(t=this.getColumnItem(t)))return;if(!this.isColumnSortable(t))return;t===this.sortColumn?t.sortAsc=!t.sortAsc:d.hasOwn(t,"sortAsc")||(t.sortAsc=this.options.sortAsc),this.sortColumn=t;if(this.getRowsLength()-this.frozenInfo.rows<2)return;if(!this.headerCreated)return;this.updateRowsSort()&&(this.renderHeaderSort(),this.flushSort(),this.render("rows"))},renderHeaderSort:function(){const t=this.sortColumn;if(!t)return this;if(!this.isColumnSortable(t))return this;this.$header.find(".tg-column-sorted").removeClass("tg-column-sorted");const e=t.tg_view_index,i=this.$header.find(`.tg-header-item[column='${e}']`).find(".tg-column-header").addClass("tg-column-sorted");return t.sortAsc?i.removeClass("tg-sort-desc").addClass("tg-sort-asc"):i.removeClass("tg-sort-asc").addClass("tg-sort-desc"),this},getSortComparer:function(t){const e=t.comparer;if("function"==typeof e)return e;const i=this.options.sortComparers,o=i[e||t.type];return"function"==typeof o?o:i.string},updateRowsSort:function(){const t=this.sortColumn;if(!t)return!1;const e=t.id;return!!e&&this.sortRows(e,t)},sortRows:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=e.sortAsc?-1:1,o=this.options.sortBlankValueBottom?1:i,n=this.getSortComparer(e);let s=!1;const r=new Dt({ignore:function(t){return t.tg_frozen?{item:t,top:!0}:t.sortFixed?{item:t,top:"top"===t.sortFixed}:void 0},sortField:t,sortFactor:i,sortBlankFactor:o,sortComparer:n}),l=function(t){r.sortList(t)&&(s=!0),t.forEach((function(t,e){t.tg_sub_index=e,t.subs&&l(t.subs)}))};return l(this.rows),s&&this.initRowsHandler(),s}},At={default:{},lightblue:{rowHeight:35,scrollbarSize:10,scrollbarRound:!0},dark:{}},Wt={getAllThemes:function(){return Object.keys(At)},getThemeOptions:function(t){return At[t]}},Ft={update:function(){return this.flushBody(),this.render("rows"),this},updateRow:function(t,e){const i=this.getRowItem(t);if(!i)return this;if(e&&"object"==typeof e){const t=this.getItemSnapshot(e);Object.keys(t).forEach((function(e){i[e]=t[e]}))}return this.flushRow(i.tg_view_index),this.render("rows"),this},updateCell:function(t,e,i){const o=this.getRowItem(t);if(!o)return this;const n=this.getColumnItem(e);return n?(arguments.length>2&&(o[n.id]=i),this.flushCell(o.tg_view_index,n.tg_view_index),this.render("rows"),this):this},onNextUpdated:function(t){return"function"!=typeof t||this.once(y.onUpdated,t),this}},Gt={getViewport:function(){this.scrollLeft=this.getScrollLeft(),this.scrollTop=this.getScrollTop();return{rows:this.getViewportRows(),columns:this.getViewportColumns()}},getViewportRows:function(){const t=[],e=this.viewRows,i=e.length;if(!i)return t;let o=this.options.rowCacheLength;o=d.clamp(d.toNum(o,!0),0,i);const n=this.frozenInfo.rows;if(n){let e=0;for(;e1;){const n=Math.floor(.5*(e+i)),s=t[n],r=this.getRowTop(s),l=this.getRowHeight(s);if(or+l))return n;e=n}}const n=t[i];return o=e)return[];const i=[],o=this.frozenInfo.columns,n=this.viewColumns;for(let s=o,r=n.length;s0;){const n=t[0]-1;n>o&&t.unshift(n);const s=t[t.length-1]+1;si)&&!(n0&&(e.rows.length=o),i=t.options}return this.data=e,this.dataOptions=i,this}setDataSnapshot(t){return this.setData(this.generateDataSnapshot(t)),this}getData(){return this.data}toString(){return"[object Grid]"}}var Ut;Ut=jt.prototype,[v,R,S,T,E,I,L,x,z,F,G,j,K,q,J,Z,tt,et,pt,mt,bt,wt,vt,Ht,{keyTabHandler:function(t){},keyEnterHandler:function(t){},keyEscHandler:function(t){},keyPageUpHandler:function(t){return this.scrollPane.keyPageUpHandler(t)},keyPageDownHandler:function(t){return this.scrollPane.keyPageDownHandler(t)},keyEndHandler:function(t){return this.scrollPane.keyEndHandler(t)},keyHomeHandler:function(t){return this.scrollPane.keyHomeHandler(t)},keyLeftHandler:function(t){return this.scrollPaneHidden?this.scrollPaneFrozen.keyLeftHandler(t):this.scrollPane.keyLeftHandler(t)},keyUpHandler:function(t){return this.scrollPane.keyUpHandler(t)},keyRightHandler:function(t){return this.scrollPaneHidden?this.scrollPaneFrozen.keyRightHandler(t):this.scrollPane.keyRightHandler(t)},keyDownHandler:function(t){return this.scrollPane.keyDownHandler(t)}},Ct,yt,Rt,St,Tt,{showRow:function(t){return this.updateRowsInvisible(this.toRowItemList(t),!1)},hideRow:function(t){return this.updateRowsInvisible(this.toRowItemList(t),!0)},updateRowsInvisible:function(t,e){if(!t.length)return!1;const i=[];return t.forEach((t=>{t.invisible!==e&&(t.invisible=e,t.tg_invisible=e,i.push(t))})),!!i.length&&(this.update(),!0)}},Et,It,Lt,xt,zt,Vt,Ot,$t,Bt,Wt,Ft,Gt].forEach((t=>{for(const e in t){if(d.hasOwn(Ut,e))throw new Error(`ERROR: extends with an existing key: "${e}"`);Ut[e]=t[e]}}));const Xt=jt,Yt=e.VERSION,Kt=e.TIMESTAMP,qt={VERSION:Yt,TIMESTAMP:Kt,Grid:Xt,$:w,CONST:e,EventBase:k,Icon:X,Motion:B,ScrollPane:kt,Util:d}})();var n=o.$,s=o.MP,r=o._d,l=o.xA,h=o.In,a=o.T8,c=o.Gr,d=o.ht,u=o.J0,g=o.xv,f=o.Ay;export{n as $,s as CONST,r as EventBase,l as Grid,h as Icon,a as Motion,c as ScrollPane,d as TIMESTAMP,u as Util,g as VERSION,f as default}; \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/js/workflow-metadata.js b/custom_nodes/comfyui-manager/js/workflow-metadata.js deleted file mode 100644 index 485dbd930b070a763b1e04335273482eefd351fa..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/js/workflow-metadata.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Attaches metadata to the workflow on save - * - custom node pack version to all custom nodes used in the workflow - * - * Example metadata: - "extra": { - "node_versions": { - "comfy-core": "v0.3.8-4-g0b2eb7f", - "comfyui-easy-use": "1.2.5" - } - }, - */ - -import { app } from "../../scripts/app.js"; -import { api } from "../../scripts/api.js"; - -class WorkflowMetadataExtension { - constructor() { - this.name = "Comfy.CustomNodesManager.WorkflowMetadata"; - this.installedNodes = {}; - this.comfyCoreVersion = null; - } - - /** - * Get the installed nodes info - * @returns {Promise>} The mapping from node name to its info. - * ver can either be a git commit hash or a semantic version such as "1.0.0" - * cnr_id is the id of the node in the ComfyRegistry - * enabled is true if the node is enabled, false if it is disabled - */ - async getInstalledNodes() { - const res = await api.fetchApi("/customnode/installed"); - return await res.json(); - } - - /** - * Get the node versions for the given graph - * @param {LGraph} graph The graph to get the node versions for - * @returns {Promise>} The mapping from node name to version - */ - getGraphNodeVersions(graph) { - const nodeVersions = {}; - for (const node of graph.nodes) { - const nodeData = node.constructor.nodeData; - // Frontend only nodes don't have nodeData - if (!nodeData) { - continue; - } - const modules = nodeData.python_module.split("."); - - if (modules[0] === "custom_nodes") { - const nodePackageName = modules[1]; - const nodeInfo = - this.installedNodes[nodePackageName] ?? - this.installedNodes[nodePackageName.toLowerCase()]; - if (nodeInfo) { - nodeVersions[nodePackageName] = nodeInfo.ver; - } - } else if (["nodes", "comfy_extras"].includes(modules[0])) { - nodeVersions["comfy-core"] = this.comfyCoreVersion; - } else { - console.warn(`Unknown node source: ${nodeData.python_module}`); - } - } - return nodeVersions; - } - - async init() { - const extension = this; - this.installedNodes = await this.getInstalledNodes(); - this.comfyCoreVersion = (await api.getSystemStats()).system.comfyui_version; - - // Attach metadata when app.graphToPrompt is called. - const originalSerialize = LGraph.prototype.serialize; - LGraph.prototype.serialize = function () { - const workflow = originalSerialize.apply(this, arguments); - - // Add metadata to the workflow - if (!workflow.extra) { - workflow.extra = {}; - } - const graph = this; - try { - workflow.extra["node_versions"] = extension.getGraphNodeVersions(graph); - } catch (e) { - console.error(e); - } - - return workflow; - }; - } -} - -app.registerExtension(new WorkflowMetadataExtension()); diff --git a/custom_nodes/comfyui-manager/json-checker.py b/custom_nodes/comfyui-manager/json-checker.py deleted file mode 100644 index 73ad7c811d50340446d59c2fca9ef411c6e4dc36..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/json-checker.py +++ /dev/null @@ -1,25 +0,0 @@ -import json -import argparse - -def check_json_syntax(file_path): - try: - with open(file_path, 'r', encoding='utf-8') as file: - json_str = file.read() - json.loads(json_str) - print(f"[ OK ] {file_path}") - except UnicodeDecodeError as e: - print(f"Unicode decode error: {e}") - except json.JSONDecodeError as e: - print(f"[FAIL] {file_path}\n\n {e}\n") - except FileNotFoundError: - print(f"[FAIL] {file_path}\n\n File not found\n") - -def main(): - parser = argparse.ArgumentParser(description="JSON File Syntax Checker") - parser.add_argument("file_path", type=str, help="Path to the JSON file for syntax checking") - - args = parser.parse_args() - check_json_syntax(args.file_path) - -if __name__ == "__main__": - main() diff --git a/custom_nodes/comfyui-manager/misc/Impact.pack b/custom_nodes/comfyui-manager/misc/Impact.pack deleted file mode 100644 index 16b41fe017ed0c6c28e8d68064b6a0bc344cdfd2..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/misc/Impact.pack +++ /dev/null @@ -1,444 +0,0 @@ -{ - "Impact::MAKE_BASIC_PIPE": { - "category": "", - "config": { - "1": { - "input": { - "text": { - "name": "Positive prompt" - } - } - }, - "2": { - "input": { - "text": { - "name": "Negative prompt" - } - } - } - }, - "datetime": 1705418802481, - "external": [], - "links": [ - [ - 0, - 1, - 1, - 0, - 1, - "CLIP" - ], - [ - 0, - 1, - 2, - 0, - 1, - "CLIP" - ], - [ - 0, - 0, - 3, - 0, - 1, - "MODEL" - ], - [ - 0, - 1, - 3, - 1, - 1, - "CLIP" - ], - [ - 0, - 2, - 3, - 2, - 1, - "VAE" - ], - [ - 1, - 0, - 3, - 3, - 3, - "CONDITIONING" - ], - [ - 2, - 0, - 3, - 4, - 4, - "CONDITIONING" - ] - ], - "nodes": [ - { - "flags": {}, - "index": 0, - "mode": 0, - "order": 0, - "outputs": [ - { - "links": [], - "name": "MODEL", - "shape": 3, - "slot_index": 0, - "type": "MODEL" - }, - { - "links": [], - "name": "CLIP", - "shape": 3, - "slot_index": 1, - "type": "CLIP" - }, - { - "links": [], - "name": "VAE", - "shape": 3, - "slot_index": 2, - "type": "VAE" - } - ], - "pos": [ - 550, - 360 - ], - "properties": { - "Node name for S&R": "CheckpointLoaderSimple" - }, - "size": { - "0": 315, - "1": 98 - }, - "type": "CheckpointLoaderSimple", - "widgets_values": [ - "SDXL/sd_xl_base_1.0_0.9vae.safetensors" - ] - }, - { - "flags": {}, - "index": 1, - "inputs": [ - { - "link": null, - "name": "clip", - "type": "CLIP" - } - ], - "mode": 0, - "order": 1, - "outputs": [ - { - "links": [], - "name": "CONDITIONING", - "shape": 3, - "slot_index": 0, - "type": "CONDITIONING" - } - ], - "pos": [ - 940, - 480 - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "size": { - "0": 263, - "1": 99 - }, - "title": "Positive", - "type": "CLIPTextEncode", - "widgets_values": [ - "" - ] - }, - { - "flags": {}, - "index": 2, - "inputs": [ - { - "link": null, - "name": "clip", - "type": "CLIP" - } - ], - "mode": 0, - "order": 2, - "outputs": [ - { - "links": [], - "name": "CONDITIONING", - "shape": 3, - "slot_index": 0, - "type": "CONDITIONING" - } - ], - "pos": [ - 940, - 640 - ], - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "size": { - "0": 263, - "1": 99 - }, - "title": "Negative", - "type": "CLIPTextEncode", - "widgets_values": [ - "" - ] - }, - { - "flags": {}, - "index": 3, - "inputs": [ - { - "link": null, - "name": "model", - "type": "MODEL" - }, - { - "link": null, - "name": "clip", - "type": "CLIP" - }, - { - "link": null, - "name": "vae", - "type": "VAE" - }, - { - "link": null, - "name": "positive", - "type": "CONDITIONING" - }, - { - "link": null, - "name": "negative", - "type": "CONDITIONING" - } - ], - "mode": 0, - "order": 3, - "outputs": [ - { - "links": null, - "name": "basic_pipe", - "shape": 3, - "slot_index": 0, - "type": "BASIC_PIPE" - } - ], - "pos": [ - 1320, - 360 - ], - "properties": { - "Node name for S&R": "ToBasicPipe" - }, - "size": { - "0": 241.79998779296875, - "1": 106 - }, - "type": "ToBasicPipe" - } - ], - "packname": "Impact", - "version": "1.0" - }, - "Impact::SIMPLE_DETAILER_PIPE": { - "category": "", - "config": { - "0": { - "output": { - "0": { - "visible": false - }, - "1": { - "visible": false - } - } - }, - "2": { - "input": { - "Select to add LoRA": { - "visible": false - }, - "Select to add Wildcard": { - "visible": false - }, - "wildcard": { - "visible": false - } - } - } - }, - "datetime": 1705419147116, - "external": [], - "links": [ - [ - null, - 0, - 2, - 0, - 6, - "BASIC_PIPE" - ], - [ - 0, - 0, - 2, - 1, - 13, - "BBOX_DETECTOR" - ], - [ - 1, - 0, - 2, - 2, - 15, - "SAM_MODEL" - ] - ], - "nodes": [ - { - "flags": {}, - "index": 0, - "mode": 0, - "order": 2, - "outputs": [ - { - "links": [], - "name": "BBOX_DETECTOR", - "shape": 3, - "type": "BBOX_DETECTOR" - }, - { - "links": null, - "name": "SEGM_DETECTOR", - "shape": 3, - "type": "SEGM_DETECTOR" - } - ], - "pos": [ - 590, - 830 - ], - "properties": { - "Node name for S&R": "UltralyticsDetectorProvider" - }, - "size": { - "0": 315, - "1": 78 - }, - "type": "UltralyticsDetectorProvider", - "widgets_values": [ - "bbox/Eyeful_v1.pt" - ] - }, - { - "flags": {}, - "index": 1, - "mode": 0, - "order": 3, - "outputs": [ - { - "links": [], - "name": "SAM_MODEL", - "shape": 3, - "type": "SAM_MODEL" - } - ], - "pos": [ - 590, - 960 - ], - "properties": { - "Node name for S&R": "SAMLoader" - }, - "size": { - "0": 315, - "1": 82 - }, - "type": "SAMLoader", - "widgets_values": [ - "sam_vit_b_01ec64.pth", - "AUTO" - ] - }, - { - "flags": {}, - "index": 2, - "inputs": [ - { - "link": null, - "name": "basic_pipe", - "type": "BASIC_PIPE" - }, - { - "link": null, - "name": "bbox_detector", - "slot_index": 1, - "type": "BBOX_DETECTOR" - }, - { - "link": null, - "name": "sam_model_opt", - "slot_index": 2, - "type": "SAM_MODEL" - }, - { - "link": null, - "name": "segm_detector_opt", - "type": "SEGM_DETECTOR" - }, - { - "link": null, - "name": "detailer_hook", - "type": "DETAILER_HOOK" - } - ], - "mode": 0, - "order": 5, - "outputs": [ - { - "links": null, - "name": "detailer_pipe", - "shape": 3, - "type": "DETAILER_PIPE" - } - ], - "pos": [ - 1044, - 812 - ], - "properties": { - "Node name for S&R": "BasicPipeToDetailerPipe" - }, - "size": { - "0": 400, - "1": 204 - }, - "type": "BasicPipeToDetailerPipe", - "widgets_values": [ - "", - "Select the LoRA to add to the text", - "Select the Wildcard to add to the text" - ] - } - ], - "packname": "Impact", - "version": "1.0" - } -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/model-list.json b/custom_nodes/comfyui-manager/model-list.json deleted file mode 100644 index 52d6a07199ad395233f9df70551af6460eedfa64..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/model-list.json +++ /dev/null @@ -1,4798 +0,0 @@ -{ - "models": [ - { - "name": "TAEF1 Decoder", - "type": "TAESD", - "base": "FLUX.1", - "save_path": "vae_approx", - "description": "(FLUX.1 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", - "reference": "https://github.com/madebyollin/taesd", - "filename": "taef1_decoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taef1_decoder.pth", - "size": "4.71MB" - }, - { - "name": "TAEF1 Encoder", - "type": "TAESD", - "base": "FLUX.1", - "save_path": "vae_approx", - "description": "(FLUX.1 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", - "reference": "https://github.com/madebyollin/taesd", - "filename": "taef1_encoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taef1_encoder.pth", - "size": "4.71MB" - }, - { - "name": "TAESD3 Decoder", - "type": "TAESD", - "base": "SD3", - "save_path": "vae_approx", - "description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", - "reference": "https://github.com/madebyollin/taesd", - "filename": "taesd3_decoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_decoder.pth", - "size": "4.94MB" - }, - { - "name": "TAESD3 Encoder", - "type": "TAESD", - "base": "SD3", - "save_path": "vae_approx", - "description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", - "reference": "https://github.com/madebyollin/taesd", - "filename": "taesd3_encoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_encoder.pth", - "size": "4.94MB" - }, - { - "name": "TAESDXL Decoder", - "type": "TAESD", - "base": "SDXL", - "save_path": "vae_approx", - "description": "(SDXL Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", - "reference": "https://github.com/madebyollin/taesd", - "filename": "taesdxl_decoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesdxl_decoder.pth", - "size": "4.91MB" - }, - { - "name": "TAESDXL Encoder", - "type": "TAESD", - "base": "SDXL", - "save_path": "vae_approx", - "description": "(SDXL Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", - "reference": "https://github.com/madebyollin/taesd", - "filename": "taesdxl_encoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesdxl_encoder.pth", - "size": "4.91MB" - }, - { - "name": "TAESD Decoder", - "type": "TAESD", - "base": "SD1.x", - "save_path": "vae_approx", - "description": "To view the preview in high quality while running samples in ComfyUI, you will need this model.", - "reference": "https://github.com/madebyollin/taesd", - "filename": "taesd_decoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd_decoder.pth", - "size": "4.91MB" - }, - { - "name": "TAESD Encoder", - "type": "TAESD", - "base": "SD1.x", - "save_path": "vae_approx", - "description": "To view the preview in high quality while running samples in ComfyUI, you will need this model.", - "reference": "https://github.com/madebyollin/taesd", - "filename": "taesd_encoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd_encoder.pth", - "size": "4.91MB" - }, - { - "name": "RealESRGAN x2", - "type": "upscale", - "base": "upscale", - "save_path": "default", - "description": "RealESRGAN x2 upscaler model", - "reference": "https://huggingface.co/ai-forever/Real-ESRGAN", - "filename": "RealESRGAN_x2.pth", - "url": "https://huggingface.co/ai-forever/Real-ESRGAN/resolve/main/RealESRGAN_x2.pth", - "size": "67.1MB" - }, - { - "name": "RealESRGAN x4", - "type": "upscale", - "base": "upscale", - "save_path": "default", - "description": "RealESRGAN x4 upscaler model", - "reference": "https://huggingface.co/ai-forever/Real-ESRGAN", - "filename": "RealESRGAN_x4.pth", - "url": "https://huggingface.co/ai-forever/Real-ESRGAN/resolve/main/RealESRGAN_x4.pth", - "size": "67.0MB" - }, - { - "name": "ESRGAN x4", - "type": "upscale", - "base": "upscale", - "save_path": "default", - "description": "ESRGAN x4 upscaler model", - "reference": "https://huggingface.co/Afizi/ESRGAN_4x.pth", - "filename": "ESRGAN_4x.pth", - "url": "https://huggingface.co/Afizi/ESRGAN_4x.pth/resolve/main/ESRGAN_4x.pth", - "size": "66.9MB" - }, - { - "name": "4x_foolhardy_Remacri", - "type": "upscale", - "base": "upscale", - "save_path": "default", - "description": "4x_foolhardy_Remacri upscaler model", - "reference": "https://huggingface.co/FacehugmanIII/4x_foolhardy_Remacri", - "filename": "4x_foolhardy_Remacri.pth", - "url": "https://huggingface.co/FacehugmanIII/4x_foolhardy_Remacri/resolve/main/4x_foolhardy_Remacri.pth", - "size": "67.0MB" - }, - { - "name": "4x-AnimeSharp", - "type": "upscale", - "base": "upscale", - "save_path": "default", - "description": "4x-AnimeSharp upscaler model", - "reference": "https://huggingface.co/Kim2091/AnimeSharp/", - "filename": "4x-AnimeSharp.pth", - "url": "https://huggingface.co/Kim2091/AnimeSharp/resolve/main/4x-AnimeSharp.pth", - "size": "67.0MB" - }, - { - "name": "4x-UltraSharp", - "type": "upscale", - "base": "upscale", - "save_path": "default", - "description": "4x-UltraSharp upscaler model", - "reference": "https://huggingface.co/Kim2091/UltraSharp/", - "filename": "4x-UltraSharp.pth", - "url": "https://huggingface.co/Kim2091/UltraSharp/resolve/main/4x-UltraSharp.pth", - "size": "67.0MB" - }, - { - "name": "4x_NMKD-Siax_200k", - "type": "upscale", - "base": "upscale", - "save_path": "default", - "description": "4x_NMKD-Siax_200k upscaler model", - "reference": "https://huggingface.co/gemasai/4x_NMKD-Siax_200k", - "filename": "4x_NMKD-Siax_200k.pth", - "url": "https://huggingface.co/gemasai/4x_NMKD-Siax_200k/resolve/main/4x_NMKD-Siax_200k.pth", - "size": "67.0MB" - }, - { - "name": "8x_NMKD-Superscale_150000_G", - "type": "upscale", - "base": "upscale", - "save_path": "default", - "description": "8x_NMKD-Superscale_150000_G upscaler model", - "reference": "https://huggingface.co/uwg/upscaler", - "filename": "8x_NMKD-Superscale_150000_G.pth", - "url": "https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/8x_NMKD-Superscale_150000_G.pth", - "size": "67.1MB" - }, - { - "name": "8x_NMKD-Faces_160000_G", - "type": "upscale", - "base": "upscale", - "save_path": "default", - "description": "8x_NMKD-Faces_160000_G upscaler model", - "reference": "https://huggingface.co/gemasai/8x_NMKD-Faces_160000_G/tree/main", - "filename": "8x_NMKD-Faces_160000_G.pth", - "url": "https://huggingface.co/gemasai/8x_NMKD-Faces_160000_G/resolve/main/8x_NMKD-Faces_160000_G.pth", - "size": "67.2MB" - }, - { - "name": "LDSR(Latent Diffusion Super Resolution)", - "type": "upscale", - "base": "upscale", - "save_path": "upscale_models/ldsr", - "description": "LDSR upscale model. Through the [a/ComfyUI-Flowty-LDSR](https://github.com/flowtyone/ComfyUI-Flowty-LDSR) extension, the upscale model can be utilized.", - "reference": "https://github.com/CompVis/latent-diffusion", - "filename": "last.ckpt", - "url": "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1", - "size": "2.04GB" - }, - { - "name": "stabilityai/stable-diffusion-x4-upscaler", - "type": "checkpoint", - "base": "upscale", - "save_path": "checkpoints/upscale", - "description": "This upscaling model is a latent text-guided diffusion model and should be used with SD_4XUpscale_Conditioning and KSampler.", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-x4-upscaler", - "filename": "x4-upscaler-ema.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-x4-upscaler/resolve/main/x4-upscaler-ema.safetensors", - "size": "3.53GB" - }, - { - "name": "Inswapper-fp16 (face swap)", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface", - "description": "Checkpoint of the insightface swapper model\n(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,\nComfyUI roop and comfy_mtb)", - "reference": "https://github.com/facefusion/facefusion-assets", - "filename": "inswapper_128_fp16.onnx", - "url": "https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128_fp16.onnx", - "size": "277.7MB" - }, - { - "name": "Inswapper (face swap)", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface", - "description": "Checkpoint of the insightface swapper model\n(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,\nComfyUI roop and comfy_mtb)", - "reference": "https://github.com/facefusion/facefusion-assets", - "filename": "inswapper_128.onnx", - "url": "https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128.onnx", - "size": "555.3MB" - }, - { - "name": "Deepbump", - "type": "deepbump", - "base": "deepbump", - "save_path": "deepbump", - "description": "Checkpoint of the deepbump model to generate height and normal maps textures from an image (requires comfy_mtb)", - "reference": "https://github.com/HugoTini/DeepBump", - "filename": "deepbump256.onnx", - "url": "https://github.com/HugoTini/DeepBump/raw/master/deepbump256.onnx", - "size": "26.7MB" - }, - { - "name": "GFPGAN 1.3", - "type": "face_restore", - "base": "face_restore", - "save_path": "face_restore", - "description": "Face restoration", - "reference": "https://github.com/TencentARC/GFPGAN", - "filename": "GFPGANv1.3.pth", - "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth", - "size": "348.6MB" - }, - { - "name": "GFPGAN 1.4", - "type": "face_restore", - "base": "face_restore", - "save_path": "face_restore", - "description": "Face restoration", - "reference": "https://github.com/TencentARC/GFPGAN", - "filename": "GFPGANv1.4.pth", - "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.4.pth", - "size": "348.6MB" - }, - { - "name": "RestoreFormer", - "type": "face_restore", - "base": "face_restore", - "save_path": "face_restore", - "description": "Face restoration", - "reference": "https://github.com/TencentARC/GFPGAN", - "filename": "RestoreFormer.pth", - "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.4/RestoreFormer.pth", - "size": "290.8MB" - }, - { - "name": "Stable Video Diffusion Image-to-Video", - "type": "checkpoint", - "base": "SVD", - "save_path": "checkpoints/SVD", - "description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.\nNOTE: 14 frames @ 576x1024", - "reference": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid", - "filename": "svd.safetensors", - "url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid/resolve/main/svd.safetensors", - "size": "9.56GB" - }, - { - "name": "stabilityai/Stable Zero123", - "type": "zero123", - "base": "zero123", - "save_path": "checkpoints/zero123", - "description": "Stable Zero123 is a model for view-conditioned image generation based on [a/Zero123](https://github.com/cvlab-columbia/zero123).", - "reference": "https://huggingface.co/stabilityai/stable-zero123", - "filename": "stable_zero123.ckpt", - "url": "https://huggingface.co/stabilityai/stable-zero123/resolve/main/stable_zero123.ckpt", - "size": "8.58GB" - }, - { - "name": "Stable Video Diffusion Image-to-Video (XT)", - "type": "checkpoint", - "base": "SVD", - "save_path": "checkpoints/SVD", - "description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.\nNOTE: 25 frames @ 576x1024 ", - "reference": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt", - "filename": "svd_xt.safetensors", - "url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors", - "size": "9.56GB" - }, - { - "name": "negative_hand Negative Embedding", - "type": "embeddings", - "base": "SD1.5", - "save_path": "embeddings/SD1.5", - "description": "If you use this embedding with negatives, you can solve the issue of damaging your hands.", - "reference": "https://civitai.com/models/56519/negativehand-negative-embedding", - "filename": "negative_hand-neg.pt", - "url": "https://civitai.com/api/download/models/60938", - "size": "25KB" - }, - { - "name": "bad_prompt Negative Embedding", - "type": "embeddings", - "base": "SD1.5", - "save_path": "embeddings/SD1.5", - "description": "The idea behind this embedding was to somehow train the negative prompt as an embedding, thus unifying the basis of the negative prompt into one word or embedding.", - "reference": "https://civitai.com/models/55700/badprompt-negative-embedding", - "filename": "bad_prompt_version2-neg.pt", - "url": "https://civitai.com/api/download/models/60095", - "size": "25KB" - }, - { - "name": "Deep Negative V1.75", - "type": "embeddings", - "base": "SD1.5", - "save_path": "embeddings/SD1.5", - "description": "These embedding learn what disgusting compositions and color patterns are, including faulty human anatomy, offensive color schemes, upside-down spatial structures, and more. Placing it in the negative can go a long way to avoiding these things.", - "reference": "https://civitai.com/models/4629/deep-negative-v1x", - "filename": "ng_deepnegative_v1_75t.pt", - "url": "https://civitai.com/api/download/models/5637", - "size": "226KB" - }, - { - "name": "EasyNegative", - "type": "embeddings", - "base": "SD1.5", - "save_path": "embeddings/SD1.5", - "description": "This embedding should be used in your NEGATIVE prompt. Adjust the strength as desired (seems to scale well without any distortions), the strength required may vary based on positive and negative prompts.", - "reference": "https://civitai.com/models/7808/easynegative", - "filename": "easynegative.safetensors", - "url": "https://civitai.com/api/download/models/9208", - "size": "25KB" - }, - { - "name": "stabilityai/comfyui_checkpoints/stable_cascade_stage_b.safetensors", - "type": "checkpoint", - "base": "Stable Cascade", - "save_path": "checkpoints/Stable-Cascade", - "description": "Stable Cascade stage_b checkpoints", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stable_cascade_stage_b.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/comfyui_checkpoints/stable_cascade_stage_b.safetensors", - "size": "4.55GB" - }, - { - "name": "stabilityai/comfyui_checkpoints/stable_cascade_stage_c.safetensors", - "type": "checkpoint", - "base": "Stable Cascade", - "save_path": "checkpoints/Stable-Cascade", - "description": "Stable Cascade stage_c checkpoints", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stable_cascade_stage_c.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/comfyui_checkpoints/stable_cascade_stage_c.safetensors", - "size": "9.22GB" - }, - { - "name": "stabilityai/Stable Cascade: stage_a.safetensors (VAE)", - "type": "VAE", - "base": "Stable Cascade", - "save_path": "vae/Stable-Cascade", - "description": "Stable Cascade: stage_a", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stage_a.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_a.safetensors", - "size": "73.7MB" - }, - { - "name": "stabilityai/Stable Cascade: effnet_encoder.safetensors (VAE)", - "type": "VAE", - "base": "Stable Cascade", - "save_path": "vae/Stable-Cascade", - "description": "Stable Cascade: effnet_encoder.\nVAE encoder for stage_c latent.", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "effnet_encoder.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/effnet_encoder.safetensors", - "size": "81.5MB" - }, - { - "name": "stabilityai/Stable Cascade: stage_b.safetensors (UNET)", - "type": "diffusion_model", - "base": "Stable Cascade", - "save_path": "diffusion_models/Stable-Cascade", - "description": "Stable Cascade: stage_b", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stage_b.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b.safetensors", - "size": "6.25GB" - }, - { - "name": "stabilityai/Stable Cascade: stage_b_bf16.safetensors (UNET)", - "type": "diffusion_model", - "base": "Stable Cascade", - "save_path": "diffusion_models/Stable-Cascade", - "description": "Stable Cascade: stage_b/bf16", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stage_b_bf16.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b_bf16.safetensors", - "size": "3.13GB" - }, - { - "name": "stabilityai/Stable Cascade: stage_b_lite.safetensors (UNET)", - "type": "diffusion_model", - "base": "Stable Cascade", - "save_path": "diffusion_models/Stable-Cascade", - "description": "Stable Cascade: stage_b/lite", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stage_b_lite.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b_lite.safetensors", - "size": "2.80GB" - }, - { - "name": "stabilityai/Stable Cascade: stage_b_lite.safetensors (UNET)", - "type": "diffusion_model", - "base": "Stable Cascade", - "save_path": "diffusion_models/Stable-Cascade", - "description": "Stable Cascade: stage_b/bf16,lite", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stage_b_lite_bf16.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b_lite_bf16.safetensors", - "size": "1.40GB" - }, - { - "name": "stabilityai/Stable Cascade: stage_c.safetensors (UNET)", - "type": "diffusion_model", - "base": "Stable Cascade", - "save_path": "diffusion_models/Stable-Cascade", - "description": "Stable Cascade: stage_c", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stage_c.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c.safetensors", - "size": "14.4GB" - }, - { - "name": "stabilityai/Stable Cascade: stage_c_bf16.safetensors (UNET)", - "type": "diffusion_model", - "base": "Stable Cascade", - "save_path": "diffusion_models/Stable-Cascade", - "description": "Stable Cascade: stage_c/bf16", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stage_c_bf16.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors", - "size": "7.18GB" - }, - { - "name": "stabilityai/Stable Cascade: stage_c_lite.safetensors (UNET)", - "type": "diffusion_model", - "base": "Stable Cascade", - "save_path": "diffusion_models/Stable-Cascade", - "description": "Stable Cascade: stage_c/lite", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stage_c_lite.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_lite.safetensors", - "size": "4.12GB" - }, - { - "name": "stabilityai/Stable Cascade: stage_c_lite.safetensors (UNET)", - "type": "diffusion_model", - "base": "Stable Cascade", - "save_path": "diffusion_models/Stable-Cascade", - "description": "Stable Cascade: stage_c/bf16,lite", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "stage_c_lite_bf16.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_lite_bf16.safetensors", - "size": "2.06GB" - }, - { - "name": "stabilityai/Stable Cascade: text_encoder (CLIP)", - "type": "clip", - "base": "Stable Cascade", - "save_path": "clip/Stable-Cascade", - "description": "Stable Cascade: text_encoder", - "reference": "https://huggingface.co/stabilityai/stable-cascade", - "filename": "model.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/text_encoder/model.safetensors", - "size": "1.39GB" - }, - { - "name": "SDXL-Turbo 1.0 (fp16)", - "type": "checkpoint", - "base": "SDXL", - "save_path": "checkpoints/SDXL-TURBO", - "description": "SDXL-Turbo 1.0 fp16", - "reference": "https://huggingface.co/stabilityai/sdxl-turbo", - "filename": "sd_xl_turbo_1.0_fp16.safetensors", - "url": "https://huggingface.co/stabilityai/sdxl-turbo/resolve/main/sd_xl_turbo_1.0_fp16.safetensors", - "size": "6.94GB" - }, - { - "name": "SDXL-Turbo 1.0", - "type": "checkpoint", - "base": "SDXL", - "save_path": "checkpoints/SDXL-TURBO", - "description": "SDXL-Turbo 1.0", - "reference": "https://huggingface.co/stabilityai/sdxl-turbo", - "filename": "sd_xl_turbo_1.0.safetensors", - "url": "https://huggingface.co/stabilityai/sdxl-turbo/resolve/main/sd_xl_turbo_1.0.safetensors", - "size": "13.9GB" - }, - { - "name": "sd_xl_base_1.0_0.9vae.safetensors", - "type": "checkpoint", - "base": "SDXL", - "save_path": "checkpoints/SDXL", - "description": "Stable Diffusion XL base model (VAE 0.9)", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0", - "filename": "sd_xl_base_1.0_0.9vae.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0_0.9vae.safetensors", - "size": "6.94GB" - }, - { - "name": "sd_xl_base_1.0.safetensors", - "type": "checkpoint", - "base": "SDXL", - "save_path": "checkpoints/SDXL", - "description": "Stable Diffusion XL base model", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0", - "filename": "sd_xl_base_1.0.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors", - "size": "6.94GB" - }, - { - "name": "sd_xl_refiner_1.0_0.9vae.safetensors", - "type": "checkpoint", - "base": "SDXL", - "save_path": "checkpoints/SDXL", - "description": "Stable Diffusion XL refiner model (VAE 0.9)", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0", - "filename": "sd_xl_refiner_1.0_0.9vae.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0_0.9vae.safetensors", - "size": "6.08GB" - }, - { - "name": "stable-diffusion-xl-refiner-1.0", - "type": "checkpoint", - "base": "SDXL", - "save_path": "checkpoints/SDXL", - "description": "Stable Diffusion XL refiner model", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0", - "filename": "sd_xl_refiner_1.0.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors", - "size": "6.08GB" - }, - { - "name": "diffusers/stable-diffusion-xl-1.0-inpainting-0.1 (diffusion_models/fp16)", - "type": "diffusion_model", - "base": "SDXL", - "save_path": "diffusion_models/xl-inpaint-0.1", - "description": "Stable Diffusion XL inpainting model 0.1. You need UNETLoader instead of CheckpointLoader.", - "reference": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1", - "filename": "diffusion_pytorch_model.fp16.safetensors", - "url": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1/resolve/main/unet/diffusion_pytorch_model.fp16.safetensors", - "size": "5.14GB" - }, - { - "name": "diffusers/stable-diffusion-xl-1.0-inpainting-0.1 (UNET)", - "type": "diffusion_model", - "base": "SDXL", - "save_path": "diffusion_models/xl-inpaint-0.1", - "description": "Stable Diffusion XL inpainting model 0.1. You need UNETLoader instead of CheckpointLoader.", - "reference": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1/resolve/main/unet/diffusion_pytorch_model.safetensors", - "size": "10.3GB" - }, - { - "name": "sd_xl_offset_example-lora_1.0.safetensors", - "type": "lora", - "base": "SDXL", - "save_path": "loras/SDXL", - "description": "Stable Diffusion XL offset LoRA", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0", - "filename": "sd_xl_offset_example-lora_1.0.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_offset_example-lora_1.0.safetensors", - "size": "49.6MB" - }, - - { - "name": "SDXL Lightning LoRA (2steps)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/SDXL-Lightning", - "description": "SDXL Lightning LoRA (2steps)", - "reference": "https://huggingface.co/ByteDance/SDXL-Lightning", - "filename": "sdxl_lightning_2step_lora.safetensors", - "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_2step_lora.safetensors", - "size": "393.9MB" - }, - { - "name": "SDXL Lightning LoRA (4steps)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/SDXL-Lightning", - "description": "SDXL Lightning LoRA (4steps)", - "reference": "https://huggingface.co/ByteDance/SDXL-Lightning", - "filename": "sdxl_lightning_4step_lora.safetensors", - "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_4step_lora.safetensors", - "size": "393.9MB" - }, - { - "name": "SDXL Lightning LoRA (8steps)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/SDXL-Lightning", - "description": "SDXL Lightning LoRA (8steps)", - "reference": "https://huggingface.co/ByteDance/SDXL-Lightning", - "filename": "sdxl_lightning_8step_lora.safetensors", - "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_8step_lora.safetensors", - "size": "393.9MB" - }, - - { - "name": "DMD2 LoRA (4steps)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/DMD2", - "description": "DMD2 LoRA (4steps)", - "reference": "https://huggingface.co/tianweiy/DMD2", - "filename": "dmd2_sdxl_4step_lora.safetensors", - "url": "https://huggingface.co/tianweiy/DMD2/resolve/main/dmd2_sdxl_4step_lora.safetensors", - "size": "787MB" - }, - { - "name": "DMD2 LoRA (4steps/fp16)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/DMD2", - "description": "DMD2 LoRA (4steps/fp16)", - "reference": "https://huggingface.co/tianweiy/DMD2", - "filename": "dmd2_sdxl_4step_lora_fp16.safetensors", - "url": "https://huggingface.co/tianweiy/DMD2/resolve/main/dmd2_sdxl_4step_lora_fp16.safetensors", - "size": "394MB" - }, - - { - "name": "Hyper-SD LoRA (8steps) - FLUX.1 [Dev]", - "type": "lora", - "base": "FLUX.1", - "save_path": "loras/HyperSD/FLUX.1", - "description": "Hyper-SD LoRA (8steps) - FLUX.1 [Dev]", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-FLUX.1-dev-8steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-FLUX.1-dev-8steps-lora.safetensors", - "size": "1.39GB" - }, - { - "name": "Hyper-SD LoRA (16steps) - FLUX.1 [Dev]", - "type": "lora", - "base": "FLUX.1", - "save_path": "loras/HyperSD/FLUX.1", - "description": "Hyper-SD LoRA (16steps) - FLUX.1 [Dev]", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-FLUX.1-dev-16steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-FLUX.1-dev-16steps-lora.safetensors", - "size": "1.39GB" - }, - - { - "name": "Hyper-SD LoRA (1step) - SD1.5", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/HyperSD/SD15", - "description": "Hyper-SD LoRA (1step) - SD1.5", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD15-1step-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-1step-lora.safetensors", - "size": "269MB" - }, - { - "name": "Hyper-SD LoRA (2steps) - SD1.5", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/HyperSD/SD15", - "description": "Hyper-SD LoRA (2steps) - SD1.5", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD15-2steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-2steps-lora.safetensors", - "size": "269MB" - }, - { - "name": "Hyper-SD LoRA (4steps) - SD1.5", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/HyperSD/SD15", - "description": "Hyper-SD LoRA (4steps)", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD15-4steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-4steps-lora.safetensors", - "size": "269MB" - }, - { - "name": "Hyper-SD LoRA (8steps) - SD1.5", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/HyperSD/SD15", - "description": "Hyper-SD LoRA (8steps)", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD15-8steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-8steps-lora.safetensors", - "size": "269MB" - }, - { - "name": "Hyper-SD CFG LoRA (8steps) - SD1.5", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/HyperSD/SD15", - "description": "Hyper-SD CFG LoRA (8steps)", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD15-8steps-CFG-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-8steps-CFG-lora.safetensors", - "size": "269MB" - }, - { - "name": "Hyper-SD CFG LoRA (12steps) - SD1.5", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/HyperSD/SD15", - "description": "Hyper-SD CFG LoRA (12steps)", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD15-12steps-CFG-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-12steps-CFG-lora.safetensors", - "size": "269MB" - }, - - { - "name": "Hyper-SD LoRA (1step) - SDXL", - "type": "lora", - "base": "SDXL", - "save_path": "loras/HyperSD/SDXL", - "description": "Hyper-SD LoRA (1step) - SDXL", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SDXL-1step-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-1step-lora.safetensors", - "size": "787MB" - }, - { - "name": "Hyper-SD LoRA (2steps) - SDXL", - "type": "lora", - "base": "SDXL", - "save_path": "loras/HyperSD/SDXL", - "description": "Hyper-SD LoRA (2steps) - SDXL", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SDXL-2steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-2steps-lora.safetensors", - "size": "787MB" - }, - { - "name": "Hyper-SD LoRA (4steps) - SDXL", - "type": "lora", - "base": "SDXL", - "save_path": "loras/HyperSD/SDXL", - "description": "Hyper-SD LoRA (4steps) - SDXL", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD15-4steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-4steps-lora.safetensors", - "size": "787MB" - }, - { - "name": "Hyper-SD LoRA (8steps) - SDXL", - "type": "lora", - "base": "SDXL", - "save_path": "loras/HyperSD/SDXL", - "description": "Hyper-SD LoRA (8steps) - SDXL", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SDXL-8steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-8steps-lora.safetensors", - "size": "787MB" - }, - { - "name": "Hyper-SD CFG LoRA (8steps) - SDXL", - "type": "lora", - "base": "SDXL", - "save_path": "loras/HyperSD/SDXL", - "description": "Hyper-SD CFG LoRA (8steps) - SDXL", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SDXL-8steps-CFG-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-8steps-CFG-lora.safetensors", - "size": "787MB" - }, - { - "name": "Hyper-SD CFG LoRA (12steps) - SDXL", - "type": "lora", - "base": "SDXL", - "save_path": "loras/HyperSD/SDXL", - "description": "Hyper-SD CFG LoRA (12steps) - SDXL", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SDXL-12steps-CFG-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-12steps-CFG-lora.safetensors", - "size": "787MB" - }, - - { - "name": "Hyper-SD CFG LoRA (4steps) - SD3", - "type": "lora", - "base": "SD3", - "save_path": "loras/HyperSD/SD3", - "description": "Hyper-SD CFG LoRA (4steps) - SD3", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD3-4steps-CFG-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD3-4steps-CFG-lora.safetensors", - "size": "472MB" - }, - { - "name": "Hyper-SD CFG LoRA (8steps) - SD3", - "type": "lora", - "base": "SD3", - "save_path": "loras/HyperSD/SD3", - "description": "Hyper-SD CFG LoRA (8steps) - SD3", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD3-8steps-CFG-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD3-8steps-CFG-lora.safetensors", - "size": "472MB" - }, - { - "name": "Hyper-SD CFG LoRA (16steps) - SD3", - "type": "lora", - "base": "SD3", - "save_path": "loras/HyperSD/SD3", - "description": "Hyper-SD CFG LoRA (16steps) - SD3", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-SD3-16steps-CFG-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD3-16steps-CFG-lora.safetensors", - "size": "472MB" - }, - - { - "name": "comfyanonymous/flux_text_encoders - t5xxl (fp16)", - "type": "clip", - "base": "t5", - "save_path": "text_encoders/t5", - "description": "Text Encoders for FLUX (fp16)", - "reference": "https://huggingface.co/comfyanonymous/flux_text_encoders", - "filename": "t5xxl_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp16.safetensors", - "size": "9.79GB" - }, - { - "name": "comfyanonymous/flux_text_encoders - t5xxl (fp8_e4m3fn)", - "type": "clip", - "base": "t5", - "save_path": "text_encoders/t5", - "description": "Text Encoders for FLUX (fp8_e4m3fn)", - "reference": "https://huggingface.co/comfyanonymous/flux_text_encoders", - "filename": "t5xxl_fp8_e4m3fn.safetensors", - "url": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn.safetensors", - "size": "4.89GB" - }, - { - "name": "comfyanonymous/flux_text_encoders - t5xxl (fp8_e4m3fn_scaled)", - "type": "clip", - "base": "t5", - "save_path": "text_encoders/t5", - "description": "Text Encoders for FLUX (fp16)", - "reference": "https://huggingface.co/comfyanonymous/flux_text_encoders", - "filename": "t5xxl_fp8_e4m3fn_scaled.safetensors", - "url": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn_scaled.safetensors", - "size": "5.16GB" - }, - - { - "name": "comfyanonymous/cosmos_cv8x8x8_1.0.safetensors", - "type": "VAE", - "base": "Cosmos-1.0", - "save_path": "default", - "description": "VAE model for Cosmos 1.0", - "reference": "https://huggingface.co/comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI/tree/main", - "filename": "cosmos_cv8x8x8_1.0.safetensors", - "url": "https://huggingface.co/comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI/resolve/main/vae/cosmos_cv8x8x8_1.0.safetensors", - "size": "211MB" - }, - { - "name": "mcmonkey/Cosmos-1_0-Diffusion-7B-Text2World.safetensors", - "type": "diffusion_model", - "base": "Cosmos-1.0", - "save_path": "diffusion_models/cosmos-1.0", - "description": "Cosmos 1.0 Text2World Diffusion Model (7B)", - "reference": "https://huggingface.co/mcmonkey/cosmos-1.0", - "filename": "Cosmos-1_0-Diffusion-7B-Text2World.safetensors", - "url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-7B-Text2World.safetensors", - "size": "14.5GB" - }, - { - "name": "mcmonkey/Cosmos-1_0-Diffusion-7B-Video2World.safetensors", - "type": "diffusion_model", - "base": "Cosmos-1.0", - "save_path": "diffusion_models/cosmos-1.0", - "description": "Cosmos 1.0 Video2World Diffusion Model (7B)", - "reference": "https://huggingface.co/mcmonkey/cosmos-1.0", - "filename": "Cosmos-1_0-Diffusion-7B-Video2World.safetensors", - "url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-7B-Video2World.safetensors", - "size": "14.5GB" - }, - { - "name": "mcmonkey/Cosmos-1_0-Diffusion-14B-Text2World.safetensors", - "type": "diffusion_model", - "base": "Cosmos-1.0", - "save_path": "diffusion_models/cosmos-1.0", - "description": "Cosmos 1.0 Text2World Diffusion Model (14B)", - "reference": "https://huggingface.co/mcmonkey/cosmos-1.0", - "filename": "Cosmos-1_0-Diffusion-14B-Text2World.safetensors", - "url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-14B-Text2World.safetensors", - "size": "28.5GB" - }, - { - "name": "mcmonkey/Cosmos-1_0-Diffusion-14B-Video2World.safetensors", - "type": "diffusion_model", - "base": "Cosmos-1.0", - "save_path": "diffusion_models/cosmos-1.0", - "description": "Cosmos 1.0 Video2World Diffusion Model (14B)", - "reference": "https://huggingface.co/mcmonkey/cosmos-1.0", - "filename": "Cosmos-1_0-Diffusion-14B-Video2World.safetensors", - "url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-14B-Video2World.safetensors", - "size": "28.5GB" - }, - - { - "name": "google-t5/t5-base", - "type": "clip", - "base": "t5-base", - "save_path": "clip/t5-base", - "description": "T5 Base: Text-To-Text Transfer Transformer. This model can be loaded via CLIPLoader for Stable Audio workflow.", - "reference": "https://huggingface.co/google-t5/t5-base", - "filename": "model.safetensors", - "url": "https://huggingface.co/google-t5/t5-base/resolve/main/model.safetensors", - "size": "892MB" - }, - { - "name": "google-t5/t5-v1_1-xxl_encoderonly-fp16", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "The encoder part of https://huggingface.co/google/t5-v1_1-xxl, used with SD3 and Flux1", - "reference": "https://huggingface.co/mcmonkey/google_t5-v1_1-xxl_encoderonly", - "filename": "google_t5-v1_1-xxl_encoderonly-fp16.safetensors", - "url": "https://huggingface.co/mcmonkey/google_t5-v1_1-xxl_encoderonly/resolve/main/model.safetensors", - "size": "10.1GB" - }, - { - "name": "google-t5/t5-v1_1-xxl_encoderonly-fp8_e4m3fn", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "The encoder part of https://huggingface.co/google/t5-v1_1-xxl, used with SD3 and Flux1", - "reference": "https://huggingface.co/mcmonkey/google_t5-v1_1-xxl_encoderonly", - "filename": "google_t5-v1_1-xxl_encoderonly-fp8_e4m3fn.safetensors", - "url": "https://huggingface.co/mcmonkey/google_t5-v1_1-xxl_encoderonly/resolve/main/t5xxl_fp8_e4m3fn.safetensors", - "size": "4.89GB" - }, - - - { - "name": "city96/t5-v1_1-xxl-encoder-Q3_K_L.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (Q3_K_L quantized)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-Q3_K_L.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q3_K_L.gguf", - "size": "2.46GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-Q3_K_M.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (Q3_K_M quantized)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-Q3_K_M.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q3_K_M.gguf", - "size": "2.3GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-Q3_K_S.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (Q3_K_S quantized)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-Q3_K_S.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q3_K_S.gguf", - "size": "2.1GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-Q4_K_M.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (Q4_K_M quantized)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-Q4_K_M.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q4_K_M.gguf", - "size": "2.9GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-Q4_K_S.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (Q4_K_S quantized)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-Q4_K_S.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q4_K_S.gguf", - "size": "2.74GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-Q5_K_M.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (Q5_K_M quantized)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-Q5_K_M.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q5_K_M.gguf", - "size": "3.39GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-Q5_K_S.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (Q5_K_S quantized)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-Q5_K_S.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q5_K_S.gguf", - "size": "3.29GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-Q6_K.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (Q6_K quantized)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-Q6_K.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q6_K.gguf", - "size": "3.91GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-Q8_0.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (Q8_0 quantized)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-Q8_0.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q8_0.gguf", - "size": "5.06GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-f16.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (float 16)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-f16.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-f16.gguf", - "size": "9.53GB" - }, - { - "name": "city96/t5-v1_1-xxl-encoder-f32.gguf", - "type": "clip", - "base": "t5", - "save_path": "clip/t5", - "description": "t5xxl Text Encoder GGUF model. (float 32)", - "reference": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf", - "filename": "t5-v1_1-xxl-encoder-f32.gguf", - "url": "https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-f32.gguf", - "size": "19.1GB" - }, - - - { - "name": "comfyanonymous/clip_l", - "type": "clip", - "base": "clip", - "save_path": "default", - "description": "clip_l model", - "reference": "https://huggingface.co/comfyanonymous/flux_text_encoders/tree/main", - "filename": "clip_l.safetensors", - "url": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors", - "size": "246MB" - }, - - { - "name": "v1-5-pruned-emaonly.ckpt", - "type": "checkpoint", - "base": "SD1.5", - "save_path": "checkpoints/SD1.5", - "description": "Stable Diffusion 1.5 base model", - "reference": "https://huggingface.co/runwayml/stable-diffusion-v1-5", - "filename": "v1-5-pruned-emaonly.ckpt", - "url": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt", - "size": "4.27GB" - }, - { - "name": "v2-1_512-ema-pruned.safetensors", - "type": "checkpoint", - "base": "SD2", - "save_path": "checkpoints/SD2.1", - "description": "Stable Diffusion 2 base model (512)", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-2-1-base", - "filename": "v2-1_512-ema-pruned.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.safetensors", - "size": "5.21GB" - }, - { - "name": "v2-1_768-ema-pruned.safetensors", - "type": "checkpoint", - "base": "SD2", - "save_path": "checkpoints/SD2.1", - "description": "Stable Diffusion 2 base model (768)", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-2-1", - "filename": "v2-1_768-ema-pruned.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.safetensors", - "size": "5.21GB" - }, - { - "name": "AbyssOrangeMix2 (hard)", - "type": "checkpoint", - "base": "SD1.5", - "save_path": "checkpoints/SD1.5", - "description": "AbyssOrangeMix2 - hard version (anime style)", - "reference": "https://huggingface.co/WarriorMama777/OrangeMixs", - "filename": "AbyssOrangeMix2_hard.safetensors", - "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix2/AbyssOrangeMix2_hard.safetensors", - "size": "5.57GB" - }, - { - "name": "AbyssOrangeMix3 A1", - "type": "checkpoint", - "base": "SD1.5", - "save_path": "checkpoints/SD1.5", - "description": "AbyssOrangeMix3 - A1 (anime style)", - "reference": "https://huggingface.co/WarriorMama777/OrangeMixs", - "filename": "AOM3A1_orangemixs.safetensors", - "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A1_orangemixs.safetensors", - "size": "2.13GB" - }, - { - "name": "AbyssOrangeMix3 A3", - "type": "checkpoint", - "base": "SD1.5", - "save_path": "checkpoints/SD1.5", - "description": "AbyssOrangeMix - A3 (anime style)", - "reference": "https://huggingface.co/WarriorMama777/OrangeMixs", - "filename": "AOM3A3_orangemixs.safetensors", - "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A3_orangemixs.safetensors", - "size": "2.13GB" - }, - { - "name": "Waifu Diffusion 1.5 Beta3 (fp16)", - "type": "checkpoint", - "base": "SD2.1", - "save_path": "checkpoints/SD2.1", - "description": "Waifu Diffusion 1.5 Beta3", - "reference": "https://huggingface.co/waifu-diffusion/wd-1-5-beta3", - "filename": "wd-illusion-fp16.safetensors", - "url": "https://huggingface.co/waifu-diffusion/wd-1-5-beta3/resolve/main/wd-illusion-fp16.safetensors", - "size": "2.58GB" - }, - { - "name": "illuminatiDiffusionV1_v11 unCLIP model", - "type": "unclip", - "base": "SD2.1", - "save_path": "checkpoints/SD2.1", - "description": "Mix model (SD2.1 unCLIP + illuminatiDiffusionV1_v11)", - "reference": "https://huggingface.co/comfyanonymous/illuminatiDiffusionV1_v11_unCLIP", - "filename": "illuminatiDiffusionV1_v11-unclip-h-fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/illuminatiDiffusionV1_v11_unCLIP/resolve/main/illuminatiDiffusionV1_v11-unclip-h-fp16.safetensors", - "size": "3.98GB" - }, - { - "name": "Waifu Diffusion 1.5 unCLIP model", - "type": "unclip", - "base": "SD2.1", - "save_path": "checkpoints/SD2.1", - "description": "Mix model (SD2.1 unCLIP + Waifu Diffusion 1.5)", - "reference": "https://huggingface.co/comfyanonymous/wd-1.5-beta2_unCLIP", - "filename": "wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/wd-1.5-beta2_unCLIP/resolve/main/wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors", - "size": "3.98GB" - }, - { - "name": "sdxl_vae.safetensors", - "type": "VAE", - "base": "SDXL", - "save_path": "vae/SDXL", - "description": "SDXL-VAE", - "reference": "https://huggingface.co/stabilityai/sdxl-vae", - "filename": "sdxl_vae.safetensors", - "url": "https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors", - "size": "334.6MB" - }, - { - "name": "vae-ft-mse-840000-ema-pruned", - "type": "VAE", - "base": "SD1.5", - "save_path": "vae/SD1.5", - "description": "vae-ft-mse-840000-ema-pruned", - "reference": "https://huggingface.co/stabilityai/sd-vae-ft-mse-original", - "filename": "vae-ft-mse-840000-ema-pruned.safetensors", - "url": "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors", - "size": "334.6MB" - }, - { - "name": "orangemix.vae", - "type": "VAE", - "base": "SD1.5", - "save_path": "vae/SD1.5", - "description": "orangemix vae model", - "reference": "https://huggingface.co/WarriorMama777/OrangeMixs", - "filename": "orangemix.vae.pt", - "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt", - "size": "822.8MB" - }, - { - "name": "kl-f8-anime2", - "type": "VAE", - "base": "SD2.1", - "save_path": "vae/SD2.1", - "description": "kl-f8-anime2 vae model", - "reference": "https://huggingface.co/hakurei/waifu-diffusion-v1-4", - "filename": "kl-f8-anime2.ckpt", - "url": "https://huggingface.co/hakurei/waifu-diffusion-v1-4/resolve/main/vae/kl-f8-anime2.ckpt", - "size": "404.7MB" - }, - { - "name": "OpenAI Consistency Decoder", - "type": "VAE", - "base": "SD1.5", - "save_path": "vae/SD1.5/openai_consistency_decoder", - "description": "OpenAI Consistency Decoder. Improved decoding for stable diffusion vaes.", - "reference": "https://github.com/openai/consistencydecoder", - "filename": "decoder.pt", - "url": "https://openaipublic.azureedge.net/diff-vae/c9cebd3132dd9c42936d803e33424145a748843c8f716c0814838bdc8a2fe7cb/decoder.pt", - "size": "2.49GB" - }, - { - "name": "LCM LoRA SD1.5", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/SD1.5/lcm", - "description": "Latent Consistency LoRA for SD1.5", - "reference": "https://huggingface.co/latent-consistency/lcm-lora-sdv1-5", - "filename": "pytorch_lora_weights.safetensors", - "url": "https://huggingface.co/latent-consistency/lcm-lora-sdv1-5/resolve/main/pytorch_lora_weights.safetensors", - "size": "134.6MB" - }, - { - "name": "LCM LoRA SSD-1B", - "type": "lora", - "base": "SSD-1B", - "save_path": "loras/SSD-1B/lcm", - "description": "Latent Consistency LoRA for SSD-1B", - "reference": "https://huggingface.co/latent-consistency/lcm-lora-ssd-1b", - "filename": "pytorch_lora_weights.safetensors", - "url": "https://huggingface.co/latent-consistency/lcm-lora-ssd-1b/resolve/main/pytorch_lora_weights.safetensors", - "size": "210.0MB" - }, - { - "name": "LCM LoRA SDXL", - "type": "lora", - "base": "SDXL", - "save_path": "loras/SDXL/lcm", - "description": "Latent Consistency LoRA for SDXL", - "reference": "https://huggingface.co/latent-consistency/lcm-lora-sdxl", - "filename": "pytorch_lora_weights.safetensors", - "url": "https://huggingface.co/latent-consistency/lcm-lora-sdxl/resolve/main/pytorch_lora_weights.safetensors", - "size": "393.9MB" - }, - { - "name": "Segmind-Vega", - "type": "checkpoint", - "base": "segmind-vega", - "save_path": "checkpoints/segmind-vega", - "description": "The Segmind-Vega Model is a distilled version of the Stable Diffusion XL (SDXL), offering a remarkable 70% reduction in size and an impressive 100% speedup while retaining high-quality text-to-image generation capabilities.", - "reference": "https://huggingface.co/segmind/Segmind-Vega", - "filename": "segmind-vega.safetensors", - "url": "https://huggingface.co/segmind/Segmind-Vega/resolve/main/segmind-vega.safetensors", - "size": "3.29GB" - }, - { - "name": "Segmind-VegaRT - Latent Consistency Model (LCM) LoRA of Segmind-Vega", - "type": "lora", - "base": "segmind-vega", - "save_path": "loras/segmind-vega", - "description": "Segmind-VegaRT a distilled consistency adapter for Segmind-Vega that allows to reduce the number of inference steps to only between 2 - 8 steps.", - "reference": "https://huggingface.co/segmind/Segmind-VegaRT", - "filename": "pytorch_lora_weights.safetensors", - "url": "https://huggingface.co/segmind/Segmind-VegaRT/resolve/main/pytorch_lora_weights.safetensors", - "size": "239.2MB" - }, - { - "name": "Theovercomer8's Contrast Fix (SD2.1)", - "type": "lora", - "base": "SD2.1", - "save_path": "loras/SD2.1", - "description": "LORA: Theovercomer8's Contrast Fix (SD2.1)", - "reference": "https://civitai.com/models/8765/theovercomer8s-contrast-fix-sd15sd21-768", - "filename": "theovercomer8sContrastFix_sd21768.safetensors", - "url": "https://civitai.com/api/download/models/10350", - "size": "163MB" - }, - { - "name": "Theovercomer8's Contrast Fix (SD1.5)", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/SD1.5", - "description": "LORA: Theovercomer8's Contrast Fix (SD1.5)", - "reference": "https://civitai.com/models/8765/theovercomer8s-contrast-fix-sd15sd21-768", - "filename": "theovercomer8sContrastFix_sd15.safetensors", - "url": "https://civitai.com/api/download/models/10638", - "size": "113MB" - }, - { - "name": "T2I-Adapter (depth)", - "type": "T2I-Adapter", - "base": "SD1.5", - "save_path": "controlnet/SD1.5", - "description": "ControlNet T2I-Adapter for depth", - "reference": "https://huggingface.co/TencentARC/T2I-Adapter", - "filename": "t2iadapter_depth_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_depth_sd14v1.pth", - "size": "309.5MB" - }, - { - "name": "T2I-Adapter (seg)", - "type": "T2I-Adapter", - "base": "SD1.5", - "save_path": "controlnet/SD1.5", - "description": "ControlNet T2I-Adapter for seg", - "reference": "https://huggingface.co/TencentARC/T2I-Adapter", - "filename": "t2iadapter_seg_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_seg_sd14v1.pth", - "size": "309.5MB" - }, - { - "name": "T2I-Adapter (sketch)", - "type": "T2I-Adapter", - "base": "SD1.5", - "save_path": "controlnet/SD1.5", - "description": "ControlNet T2I-Adapter for sketch", - "reference": "https://huggingface.co/TencentARC/T2I-Adapter", - "filename": "t2iadapter_sketch_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_sketch_sd14v1.pth", - "size": "308.0MB" - }, - { - "name": "T2I-Adapter (keypose)", - "type": "T2I-Adapter", - "base": "SD1.5", - "save_path": "controlnet/SD1.5", - "description": "ControlNet T2I-Adapter for keypose", - "reference": "https://huggingface.co/TencentARC/T2I-Adapter", - "filename": "t2iadapter_keypose_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_keypose_sd14v1.pth", - "size": "309.5MB" - }, - { - "name": "T2I-Adapter (openpose)", - "type": "T2I-Adapter", - "base": "SD1.5", - "save_path": "controlnet/SD1.5", - "description": "ControlNet T2I-Adapter for openpose", - "reference": "https://huggingface.co/TencentARC/T2I-Adapter", - "filename": "t2iadapter_openpose_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_openpose_sd14v1.pth", - "size": "309.5MB" - }, - { - "name": "T2I-Adapter (color)", - "type": "T2I-Adapter", - "base": "SD1.5", - "save_path": "controlnet/SD1.5", - "description": "ControlNet T2I-Adapter for color", - "reference": "https://huggingface.co/TencentARC/T2I-Adapter", - "filename": "t2iadapter_color_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_color_sd14v1.pth", - "size": "74.8MB" - }, - { - "name": "T2I-Adapter (canny)", - "type": "T2I-Adapter", - "base": "SD1.5", - "save_path": "controlnet/SD1.5", - "description": "ControlNet T2I-Adapter for canny", - "reference": "https://huggingface.co/TencentARC/T2I-Adapter", - "filename": "t2iadapter_canny_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_canny_sd14v1.pth", - "size": "308.0MB" - }, - { - "name": "T2I-Style model", - "type": "T2I-Style", - "base": "SD1.5", - "save_path": "controlnet/SD1.5", - "description": "ControlNet T2I-Adapter style model. Need to download CLIPVision model.", - "reference": "https://huggingface.co/TencentARC/T2I-Adapter", - "filename": "t2iadapter_style_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_style_sd14v1.pth", - "size": "154.4MB" - }, - { - "name": "T2I-Adapter XL (lineart) FP16", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for lineart", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0", - "filename": "t2i-adapter-lineart-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", - "size": "158.1MB" - }, - { - "name": "T2I-Adapter XL (canny) FP16", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for canny", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0", - "filename": "t2i-adapter-canny-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", - "size": "158.1MB" - }, - { - "name": "T2I-Adapter XL (depth-zoe) FP16", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for depth-zoe", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0", - "filename": "t2i-adapter-depth-zoe-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", - "size": "158.1MB" - }, - { - "name": "T2I-Adapter XL (depth-midas) FP16", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for depth-midas", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0", - "filename": "t2i-adapter-depth-midas-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", - "size": "158.1MB" - }, - { - "name": "T2I-Adapter XL (sketch) FP16", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for sketch", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0", - "filename": "t2i-adapter-sketch-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", - "size": "158.1MB" - }, - { - "name": "T2I-Adapter XL (lineart)", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for lineart", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0", - "filename": "t2i-adapter-lineart-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "316.1MB" - }, - { - "name": "T2I-Adapter XL (canny)", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for canny", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0", - "filename": "t2i-adapter-canny-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "316.1MB" - }, - { - "name": "T2I-Adapter XL (depth-zoe)", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for depth-zoe", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0", - "filename": "t2i-adapter-depth-zoe-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "316.1MB" - }, - { - "name": "T2I-Adapter XL (depth-midas)", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for depth-midas", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0", - "filename": "t2i-adapter-depth-midas-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "316.1MB" - }, - { - "name": "T2I-Adapter XL (sketch)", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for sketch", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0", - "filename": "t2i-adapter-sketch-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "316.1MB" - }, - { - "name": "T2I-Adapter XL (openpose)", - "type": "T2I-Adapter", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet T2I-Adapter XL for openpose", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-openpose-sdxl-1.0", - "filename": "t2i-adapter-openpose-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "316.1MB" - }, - { - "name": "CiaraRowles/TemporalNet2", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/SD1.5", - "description": "TemporalNet was a ControlNet model designed to enhance the temporal consistency of generated outputs", - "reference": "https://huggingface.co/CiaraRowles/TemporalNet2", - "filename": "temporalnetversion2.safetensors", - "url": "https://huggingface.co/CiaraRowles/TemporalNet2/resolve/main/temporalnetversion2.safetensors", - "size": "5.71GB" - }, - { - "name": "CiaraRowles/TemporalNet1XL (1.0)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/TemporalNet1XL", - "description": "This is TemporalNet1XL, it is a re-train of the controlnet TemporalNet1 with Stable Diffusion XL.", - "reference": "https://huggingface.co/CiaraRowles/controlnet-temporalnet-sdxl-1.0", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/CiaraRowles/controlnet-temporalnet-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "5.00GB" - }, - - { - "name": "Comfy-Org/sigclip_vision_384 (patch14_384)", - "type": "clip_vision", - "base": "sigclip", - "save_path": "clip_vision", - "description": "This clip vision model is required for FLUX.1 Redux.", - "reference": "https://huggingface.co/Comfy-Org/sigclip_vision_384/tree/main", - "filename": "sigclip_vision_patch14_384.safetensors", - "url": "https://huggingface.co/Comfy-Org/sigclip_vision_384/resolve/main/sigclip_vision_patch14_384.safetensors", - "size": "857MB" - }, - - { - "name": "CLIPVision model (stabilityai/clip_vision_g)", - "type": "clip_vision", - "base": "ViT-G", - "save_path": "clip_vision", - "description": "clip_g vision model", - "reference": "https://huggingface.co/stabilityai/control-lora", - "filename": "clip_vision_g.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/revision/clip_vision_g.safetensors", - "size": "3.69GB" - }, - { - "name": "CLIPVision model (openai/clip-vit-large)", - "type": "clip_vision", - "base": "ViT-L", - "save_path": "clip_vision", - "description": "CLIPVision model (needed for styles model)", - "reference": "https://huggingface.co/openai/clip-vit-large-patch14", - "filename": "clip-vit-large-patch14.safetensors", - "url": "https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/model.safetensors", - "size": "1.71GB" - }, - { - "name": "CLIPVision model (Kwai-Kolors/Kolors-IP-Adapter-Plus/clip-vit-large)", - "type": "clip_vision", - "base": "ViT-L", - "save_path": "clip_vision", - "description": "CLIPVision model (needed for IP-Adapter)", - "reference": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-Plus", - "filename": "clip-vit-large-patch14-336.bin", - "url": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-Plus/resolve/main/image_encoder/pytorch_model.bin", - "size": "1.71GB" - }, - { - "name": "CLIPVision model (IP-Adapter) CLIP-ViT-H-14-laion2B-s32B-b79K", - "type": "clip_vision", - "base": "ViT-H", - "save_path": "clip_vision", - "description": "CLIPVision model (needed for IP-Adapter)", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/image_encoder/model.safetensors", - "size": "2.53GB" - }, - { - "name": "CLIPVision model (IP-Adapter) CLIP-ViT-bigG-14-laion2B-39B-b160k", - "type": "clip_vision", - "base": "ViT-G", - "save_path": "clip_vision", - "description": "CLIPVision model (needed for IP-Adapter)", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/image_encoder/model.safetensors", - "size": "3.69GB" - }, - { - "name": "stabilityai/control-lora-canny-rank128.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Control-LoRA: canny rank128", - "reference": "https://huggingface.co/stabilityai/control-lora", - "filename": "control-lora-canny-rank128.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-canny-rank128.safetensors", - "size": "395.7MB" - }, - { - "name": "stabilityai/control-lora-depth-rank128.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Control-LoRA: depth rank128", - "reference": "https://huggingface.co/stabilityai/control-lora", - "filename": "control-lora-depth-rank128.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-depth-rank128.safetensors", - "size": "395.7MB" - }, - { - "name": "stabilityai/control-lora-recolor-rank128.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Control-LoRA: recolor rank128", - "reference": "https://huggingface.co/stabilityai/control-lora", - "filename": "control-lora-recolor-rank128.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-recolor-rank128.safetensors", - "size": "395.7MB" - }, - { - "name": "stabilityai/control-lora-sketch-rank128-metadata.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Control-LoRA: sketch rank128 metadata", - "reference": "https://huggingface.co/stabilityai/control-lora", - "filename": "control-lora-sketch-rank128-metadata.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-sketch-rank128-metadata.safetensors", - "size": "395.7MB" - }, - { - "name": "stabilityai/control-lora-canny-rank256.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Control-LoRA: canny rank256", - "reference": "https://huggingface.co/stabilityai/control-lora", - "filename": "control-lora-canny-rank256.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-canny-rank256.safetensors", - "size": "774.5MB" - }, - { - "name": "stabilityai/control-lora-depth-rank256.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Control-LoRA: depth rank256", - "reference": "https://huggingface.co/stabilityai/control-lora", - "filename": "control-lora-depth-rank256.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-depth-rank256.safetensors", - "size": "774.4MB" - }, - { - "name": "stabilityai/control-lora-recolor-rank256.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Control-LoRA: recolor rank256", - "reference": "https://huggingface.co/stabilityai/control-lora", - "filename": "control-lora-recolor-rank256.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-recolor-rank256.safetensors", - "size": "774.4MB" - }, - { - "name": "stabilityai/control-lora-sketch-rank256.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Control-LoRA: sketch rank256", - "reference": "https://huggingface.co/stabilityai/control-lora", - "filename": "control-lora-sketch-rank256.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-sketch-rank256.safetensors", - "size": "774.5MB" - }, - { - "name": "kohya-ss/ControlNet-LLLite: SDXL Canny Anime", - "type": "controlnet", - "base": "SDXL", - "save_path": "custom_nodes/ControlNet-LLLite-ComfyUI/models", - "description": "An extremely compactly designed controlnet model (a.k.a. ControlNet-LLLite). Note: The model structure is highly experimental and may be subject to change in the future.", - "reference": "https://huggingface.co/kohya-ss/controlnet-lllite", - "filename": "controllllite_v01032064e_sdxl_canny_anime.safetensors", - "url": "https://huggingface.co/kohya-ss/controlnet-lllite/resolve/main/controllllite_v01032064e_sdxl_canny_anime.safetensors", - "size": "46.2MB" - }, - { - "name": "SDXL-controlnet: OpenPose (v2)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet openpose model for SDXL", - "reference": "https://huggingface.co/thibaud/controlnet-openpose-sdxl-1.0", - "filename": "OpenPoseXL2.safetensors", - "url": "https://huggingface.co/thibaud/controlnet-openpose-sdxl-1.0/resolve/main/OpenPoseXL2.safetensors", - "size": "5.00GB" - }, - { - "name": "controlnet-SargeZT/controlnet-sd-xl-1.0-softedge-dexined", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet softedge model for SDXL", - "reference": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-softedge-dexined", - "filename": "controlnet-sd-xl-1.0-softedge-dexined.safetensors", - "url": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-softedge-dexined/resolve/main/controlnet-sd-xl-1.0-softedge-dexined.safetensors", - "size": "5.00GB" - }, - { - "name": "controlnet-SargeZT/controlnet-sd-xl-1.0-depth-16bit-zoe", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "ControlNet depth-zoe model for SDXL", - "reference": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-depth-16bit-zoe", - "filename": "depth-zoe-xl-v1.0-controlnet.safetensors", - "url": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-depth-16bit-zoe/resolve/main/depth-zoe-xl-v1.0-controlnet.safetensors", - "size": "5.00GB" - }, - { - "name": "ControlNet-v1-1 (ip2p; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (ip2p)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11e_sd15_ip2p_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_ip2p_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (shuffle; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (shuffle)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11e_sd15_shuffle_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_shuffle_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (canny; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (canny)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15_canny_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_canny_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (depth; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (depth)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11f1p_sd15_depth_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1p_sd15_depth_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (inpaint; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (inpaint)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15_inpaint_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_inpaint_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (lineart; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (lineart)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15_lineart_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_lineart_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (mlsd; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (mlsd)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15_mlsd_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_mlsd_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (normalbae; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (normalbae)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15_normalbae_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_normalbae_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (openpose; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (openpose)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15_openpose_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_openpose_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (scribble; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (scribble)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15_scribble_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_scribble_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (seg; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (seg)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15_seg_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_seg_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (softedge; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (softedge)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15_softedge_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_softedge_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (anime; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (anime)", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11p_sd15s2_lineart_anime_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15s2_lineart_anime_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (tile; fp16; v11u)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (tile) / v11u", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11u_sd15_tile_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11u_sd15_tile_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-v1-1 (tile; fp16; v11f1e)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (tile) / v11f1e\nYou need to this model for Tiled Resample", - "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", - "filename": "control_v11f1e_sd15_tile_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1e_sd15_tile_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "ControlNet-HandRefiner-pruned (inpaint-depth-hand; fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "This inpaint-depth controlnet model is specialized for the hand refiner.", - "reference": "https://huggingface.co/hr16/ControlNet-HandRefiner-pruned", - "filename": "control_sd15_inpaint_depth_hand_fp16.safetensors", - "url": "https://huggingface.co/hr16/ControlNet-HandRefiner-pruned/resolve/main/control_sd15_inpaint_depth_hand_fp16.safetensors", - "size": "722.6MB" - }, - { - "name": "control_boxdepth_LooseControlfp16 (fp16)", - "type": "controlnet", - "base": "SD1.5", - "save_path": "controlnet/1.5", - "description": "Loose ControlNet model", - "reference": "https://huggingface.co/ioclab/LooseControl_WebUICombine", - "filename": "control_boxdepth_LooseControlfp16.safetensors", - "url": "https://huggingface.co/ioclab/LooseControl_WebUICombine/resolve/main/control_boxdepth_LooseControlfp16.safetensors", - "size": "722.6MB" - }, - { - "name": "GLIGEN textbox (fp16; pruned)", - "type": "gligen", - "base": "SD1.5", - "save_path": "gligen/SD1.5", - "description": "GLIGEN textbox model", - "reference": "https://huggingface.co/comfyanonymous/GLIGEN_pruned_safetensors", - "filename": "gligen_sd14_textbox_pruned_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/GLIGEN_pruned_safetensors/resolve/main/gligen_sd14_textbox_pruned_fp16.safetensors", - "size": "418.2MB" - }, - { - "name": "ViT-H SAM model", - "type": "sam", - "base": "SAM", - "save_path": "sams", - "description": "Segmenty Anything SAM model (ViT-H)", - "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", - "filename": "sam_vit_h_4b8939.pth", - "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth", - "size": "2.56GB" - }, - { - "name": "ViT-L SAM model", - "type": "sam", - "base": "SAM", - "save_path": "sams", - "description": "Segmenty Anything SAM model (ViT-L)", - "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", - "filename": "sam_vit_l_0b3195.pth", - "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth", - "size": "1.25GB" - }, - { - "name": "ViT-B SAM model", - "type": "sam", - "base": "SAM", - "save_path": "sams", - "description": "Segmenty Anything SAM model (ViT-B)", - "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", - "filename": "sam_vit_b_01ec64.pth", - "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth", - "size": "375.0MB" - }, - { - "name": "seecoder v1.0", - "type": "seecoder", - "base": "SEECODER", - "save_path": "seecoders", - "description": "SeeCoder model", - "reference": "https://huggingface.co/shi-labs/prompt-free-diffusion/tree/main/pretrained/pfd/seecoder", - "filename": "seecoder-v1-0.safetensors", - "url": "https://huggingface.co/shi-labs/prompt-free-diffusion/resolve/main/pretrained/pfd/seecoder/seecoder-v1-0.safetensors", - "size": "1.18GB" - }, - { - "name": "seecoder pa v1.0", - "type": "seecoder", - "base": "SEECODER", - "save_path": "seecoders", - "description": "SeeCoder model", - "reference": "https://huggingface.co/shi-labs/prompt-free-diffusion/tree/main/pretrained/pfd/seecoder", - "filename": "seecoder-pa-v1-0.safetensors", - "url": "https://huggingface.co/shi-labs/prompt-free-diffusion/resolve/main/pretrained/pfd/seecoder/seecoder-pa-v1-0.safetensors", - "size": "1.19GB" - }, - { - "name": "seecoder anime v1.0", - "type": "seecoder", - "base": "SEECODER", - "save_path": "seecoders", - "description": "SeeCoder model", - "reference": "https://huggingface.co/shi-labs/prompt-free-diffusion/tree/main/pretrained/pfd/seecoder", - "filename": "seecoder-anime-v1-0.safetensors", - "url": "https://huggingface.co/shi-labs/prompt-free-diffusion/resolve/main/pretrained/pfd/seecoder/seecoder-anime-v1-0.safetensors", - "size": "1.18GB" - }, - { - "name": "face_yolov8m (bbox)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/bbox", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "face_yolov8m.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8m.pt", - "size": "52.0MB" - }, - { - "name": "face_yolov8n (bbox)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/bbox", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "face_yolov8n.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8n.pt", - "size": "6.23MB" - }, - { - "name": "face_yolov8n_v2 (bbox)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/bbox", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "face_yolov8n_v2.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8n_v2.pt", - "size": "6.24MB" - }, - { - "name": "face_yolov8s (bbox)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/bbox", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "face_yolov8s.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8s.pt", - "size": "22.5MB" - }, - { - "name": "hand_yolov8n (bbox)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/bbox", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "hand_yolov8n.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/hand_yolov8n.pt", - "size": "6.24MB" - }, - { - "name": "hand_yolov8s (bbox)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/bbox", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "hand_yolov8s.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/hand_yolov8s.pt", - "size": "22.5MB" - }, - { - "name": "person_yolov8m (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "person_yolov8m-seg.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/person_yolov8m-seg.pt", - "size": "54.8MB" - }, - { - "name": "person_yolov8n (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "person_yolov8n-seg.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/person_yolov8n-seg.pt", - "size": "6.78MB" - }, - { - "name": "person_yolov8s (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "person_yolov8s-seg.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/person_yolov8s-seg.pt", - "size": "23.9MB" - }, - { - "name": "deepfashion2_yolov8s (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", - "filename": "deepfashion2_yolov8s-seg.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/deepfashion2_yolov8s-seg.pt", - "size": "23.9MB" - }, - { - "name": "face_yolov8m-seg_60.pt (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", - "filename": "face_yolov8m-seg_60.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/face_yolov8m-seg_60.pt", - "size": "54.8MB" - }, - { - "name": "face_yolov8n-seg2_60.pt (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", - "filename": "face_yolov8n-seg2_60.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/face_yolov8n-seg2_60.pt", - "size": "6.77MB" - }, - { - "name": "hair_yolov8n-seg_60.pt (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", - "filename": "hair_yolov8n-seg_60.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/hair_yolov8n-seg_60.pt", - "size": "6.77MB" - }, - { - "name": "skin_yolov8m-seg_400.pt (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", - "filename": "skin_yolov8m-seg_400.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/skin_yolov8m-seg_400.pt", - "size": "54.9MB" - }, - { - "name": "skin_yolov8n-seg_400.pt (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", - "filename": "skin_yolov8n-seg_400.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/skin_yolov8n-seg_400.pt", - "size": "6.83MB" - }, - { - "name": "skin_yolov8n-seg_800.pt (segm)", - "type": "Ultralytics", - "base": "Ultralytics", - "save_path": "ultralytics/segm", - "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", - "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", - "filename": "skin_yolov8n-seg_800.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/skin_yolov8n-seg_800.pt", - "size": "6.84MB" - }, - { - "name": "animatediff/mmd_sd_v14.ckpt (comfyui-animatediff) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "AnimateDiff", - "description": "Pressing 'install' directly downloads the model from the ArtVentureX/AnimateDiff extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "mm_sd_v14.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt", - "size": "1.67GB" - }, - { - "name": "animatediff/mm_sd_v15.ckpt (comfyui-animatediff) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "AnimateDiff", - "description": "Pressing 'install' directly downloads the model from the ArtVentureX/AnimateDiff extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "mm_sd_v15.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt", - "size": "1.67GB" - }, - { - "name": "animatediff/mmd_sd_v14.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "mm_sd_v14.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt", - "size": "1.67GB" - }, - { - "name": "animatediff/mm_sd_v15.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "mm_sd_v15.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt", - "size": "1.67GB" - }, - { - "name": "animatediff/mm_sd_v15_v2.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "mm_sd_v15_v2.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15_v2.ckpt", - "size": "1.82GB" - }, - { - "name": "animatediff/v3_sd15_mm.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v3_sd15_mm.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_mm.ckpt", - "size": "1.67GB" - }, - { - "name": "animatediff/mm_sdxl_v10_beta.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SDXL", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "mm_sdxl_v10_beta.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sdxl_v10_beta.ckpt", - "size": "950.1MB" - }, - { - "name": "AD_Stabilized_Motion/mm-Stabilized_high.pth (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/manshoety/AD_Stabilized_Motion", - "filename": "mm-Stabilized_high.pth", - "url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_high.pth", - "size": "1.67GB" - }, - { - "name": "AD_Stabilized_Motion/mm-Stabilized_mid.pth (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/manshoety/AD_Stabilized_Motion", - "filename": "mm-Stabilized_mid.pth", - "url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_mid.pth", - "size": "1.67GB" - }, - { - "name": "CiaraRowles/temporaldiff-v1-animatediff.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/CiaraRowles/TemporalDiff", - "filename": "temporaldiff-v1-animatediff.ckpt", - "url": "https://huggingface.co/CiaraRowles/TemporalDiff/resolve/main/temporaldiff-v1-animatediff.ckpt", - "size": "1.67GB" - }, - { - "name": "Leoxing/pia.ckpt", - "type": "animatediff-pia", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "AnimateDiff-PIA Model", - "reference": "https://huggingface.co/Leoxing/PIA/tree/main", - "filename": "pia.ckpt", - "url": "https://huggingface.co/Leoxing/PIA/resolve/main/pia.ckpt", - "size": "1.67GB" - }, - - { - "name": "animatediff/v2_lora_PanLeft.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "motion lora", - "base": "SD1.x", - "save_path": "animatediff_motion_lora", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v2_lora_PanLeft.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanLeft.ckpt", - "size": "77.5MB" - }, - { - "name": "animatediff/v2_lora_PanRight.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "motion lora", - "base": "SD1.x", - "save_path": "animatediff_motion_lora", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v2_lora_PanRight.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanRight.ckpt", - "size": "77.5MB" - }, - { - "name": "animatediff/v2_lora_RollingAnticlockwise.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "motion lora", - "base": "SD1.x", - "save_path": "animatediff_motion_lora", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v2_lora_RollingAnticlockwise.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingAnticlockwise.ckpt", - "size": "77.5MB" - }, - { - "name": "animatediff/v2_lora_RollingClockwise.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "motion lora", - "base": "SD1.x", - "save_path": "animatediff_motion_lora", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v2_lora_RollingClockwise.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingClockwise.ckpt", - "size": "77.5MB" - }, - { - "name": "animatediff/v2_lora_TiltDown.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "motion lora", - "base": "SD1.x", - "save_path": "animatediff_motion_lora", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v2_lora_TiltDown.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltDown.ckpt", - "size": "77.5MB" - }, - { - "name": "animatediff/v2_lora_TiltUp.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "motion lora", - "base": "SD1.x", - "save_path": "animatediff_motion_lora", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v2_lora_TiltUp.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltUp.ckpt", - "size": "77.5MB" - }, - { - "name": "animatediff/v2_lora_ZoomIn.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "motion lora", - "base": "SD1.x", - "save_path": "animatediff_motion_lora", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v2_lora_ZoomIn.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomIn.ckpt", - "size": "77.5MB" - }, - { - "name": "animatediff/v2_lora_ZoomOut.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "motion lora", - "base": "SD1.x", - "save_path": "animatediff_motion_lora", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v2_lora_ZoomOut.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomOut.ckpt", - "size": "77.5MB" - }, - { - "name": "LongAnimatediff/lt_long_mm_32_frames.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/Lightricks/LongAnimateDiff", - "filename": "lt_long_mm_32_frames.ckpt", - "url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_32_frames.ckpt", - "size": "1.82GB" - }, - { - "name": "LongAnimatediff/lt_long_mm_16_64_frames.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/Lightricks/LongAnimateDiff", - "filename": "lt_long_mm_16_64_frames.ckpt", - "url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames.ckpt", - "size": "1.83GB" - }, - { - "name": "LongAnimatediff/lt_long_mm_16_64_frames_v1.1.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", - "type": "animatediff", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", - "reference": "https://huggingface.co/Lightricks/LongAnimateDiff", - "filename": "lt_long_mm_16_64_frames_v1.1.ckpt", - "url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames_v1.1.ckpt", - "size": "1.83GB" - }, - { - "name": "animatediff/v3_sd15_sparsectrl_rgb.ckpt (ComfyUI-AnimateDiff-Evolved)", - "type": "controlnet", - "base": "SD1.x", - "save_path": "controlnet/SD1.5/animatediff", - "description": "AnimateDiff SparseCtrl RGB ControlNet model", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v3_sd15_sparsectrl_rgb.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_sparsectrl_rgb.ckpt", - "size": "1.99GB" - }, - { - "name": "animatediff/v3_sd15_sparsectrl_scribble.ckpt", - "type": "controlnet", - "base": "SD1.x", - "save_path": "controlnet/SD1.5/animatediff", - "description": "AnimateDiff SparseCtrl Scribble ControlNet model", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v3_sd15_sparsectrl_scribble.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_sparsectrl_scribble.ckpt", - "size": "1.99GB" - }, - { - "name": "animatediff/v3_sd15_adapter.ckpt", - "type": "lora", - "base": "SD1.x", - "save_path": "loras/SD1.5/animatediff", - "description": "AnimateDiff Adapter LoRA (SD1.5)", - "reference": "https://huggingface.co/guoyww/animatediff", - "filename": "v3_sd15_adapter.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_adapter.ckpt", - "size": "102.1MB" - }, - { - "name": "TencentARC/motionctrl.pth", - "type": "checkpoint", - "base": "MotionCtrl", - "save_path": "checkpoints/motionctrl", - "description": "To use the ComfyUI-MotionCtrl extension, downloading this model is required.", - "reference": "https://huggingface.co/TencentARC/MotionCtrl", - "filename": "motionctrl.pth", - "url": "https://huggingface.co/TencentARC/MotionCtrl/resolve/main/motionctrl.pth", - "size": "4.02GB" - }, - { - "name": "ip-adapter_sd15.safetensors", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter_sd15.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.safetensors", - "size": "44.6MB" - }, - { - "name": "ip-adapter_sd15_light_v11.bin", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter_sd15_light_v11.bin", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light_v11.bin", - "size": "44.6MB" - }, - { - "name": "ip-adapter_sd15_light.safetensors [DEPRECATED]", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter_sd15_light.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light.safetensors", - "size": "44.6MB" - }, - { - "name": "ip-adapter-plus_sd15.safetensors", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter-plus_sd15.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus_sd15.safetensors", - "size": "98.2MB" - }, - { - "name": "ip-adapter-plus-face_sd15.safetensors", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter-plus-face_sd15.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus-face_sd15.safetensors", - "size": "98.2MB" - }, - { - "name": "ip-adapter-full-face_sd15.safetensors", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter-full-face_sd15.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-full-face_sd15.safetensors", - "size": "43.6MB" - }, - { - "name": "ip-adapter_sd15_vit-G.safetensors", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter_sd15_vit-G.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_vit-G.safetensors", - "size": "46.2MB" - }, - { - "name": "ip-adapter-faceid_sd15.bin", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "IP-Adapter-FaceID Model (SD1.5) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15.bin", - "size": "96.7MB" - }, - { - "name": "ip-adapter-faceid-plusv2_sd15.bin", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "IP-Adapter-FaceID Plus V2 Model (SD1.5) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-plusv2_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15.bin", - "size": "156.6MB" - }, - { - "name": "ip-adapter-faceid-plus_sd15.bin [DEPRECATED]", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "IP-Adapter-FaceID Plus Model (SD1.5) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-plus_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15.bin", - "size": "156.6MB" - }, - { - "name": "ip-adapter-faceid-portrait-v11_sd15.bin", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "IP-Adapter-FaceID Portrait V11 Model (SD1.5) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-portrait-v11_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait-v11_sd15.bin", - "size": "64.6MB" - }, - { - "name": "ip-adapter-faceid-portrait_sd15.bin [DEPRECATED]", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "IP-Adapter-FaceID Portrait Model (SD1.5) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-portrait_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sd15.bin", - "size": "64.6MB" - }, - { - "name": "ip-adapter-faceid_sdxl.bin", - "type": "IP-Adapter", - "base": "SDXL", - "save_path": "ipadapter", - "description": "IP-Adapter-FaceID Model (SDXL) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid_sdxl.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl.bin", - "size": "1.07GB" - }, - { - "name": "ip-adapter-faceid-plusv2_sdxl.bin", - "type": "IP-Adapter", - "base": "SDXL", - "save_path": "ipadapter", - "description": "IP-Adapter-FaceID Plus Model (SDXL) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-plusv2_sdxl.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl.bin", - "size": "1.49GB" - }, - { - "name": "ip-adapter-faceid-portrait_sdxl.bin", - "type": "IP-Adapter", - "base": "SDXL", - "save_path": "ipadapter", - "description": "IP-Adapter-FaceID Portrait Model (SDXL) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-portrait_sdxl.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl.bin", - "size": "749.8MB" - }, - { - "name": "ip-adapter-faceid-portrait_sdxl_unnorm.bin", - "type": "IP-Adapter", - "base": "SDXL", - "save_path": "ipadapter", - "description": "IP-Adapter-FaceID Portrait Model (SDXL/unnorm) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-portrait_sdxl_unnorm.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl_unnorm.bin", - "size": "1.01GB" - }, - { - "name": "ip-adapter-faceid_sd15_lora.safetensors", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/ipadapter", - "description": "IP-Adapter-FaceID LoRA Model (SD1.5) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid_sd15_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15_lora.safetensors", - "size": "51.1MB" - }, - { - "name": "ip-adapter-faceid-plus_sd15_lora.safetensors [DEPRECATED]", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/ipadapter", - "description": "IP-Adapter-FaceID Plus LoRA Model (SD1.5) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-plus_sd15_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15_lora.safetensors", - "size": "51.1MB" - }, - { - "name": "ip-adapter-faceid-plusv2_sd15_lora.safetensors", - "type": "lora", - "base": "SD1.5", - "save_path": "loras/ipadapter", - "description": "IP-Adapter-FaceID-Plus V2 LoRA Model (SD1.5) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-plusv2_sd15_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15_lora.safetensors", - "size": "51.1MB" - }, - { - "name": "ip-adapter-faceid_sdxl_lora.safetensors", - "type": "lora", - "base": "SDXL", - "save_path": "loras/ipadapter", - "description": "IP-Adapter-FaceID LoRA Model (SDXL) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid_sdxl_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl_lora.safetensors", - "size": "371.8MB" - }, - { - "name": "ip-adapter-faceid-plusv2_sdxl_lora.safetensors", - "type": "lora", - "base": "SDXL", - "save_path": "loras/ipadapter", - "description": "IP-Adapter-FaceID-Plus V2 LoRA Model (SDXL) [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", - "filename": "ip-adapter-faceid-plusv2_sdxl_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl_lora.safetensors", - "size": "371.8MB" - }, - { - "name": "ip-adapter_sdxl.safetensors", - "type": "IP-Adapter", - "base": "SDXL", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter_sdxl.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl.safetensors", - "size": "702.6MB" - }, - { - "name": "ip-adapter_sdxl_vit-h.safetensors", - "type": "IP-Adapter", - "base": "SDXL", - "save_path": "ipadapter", - "description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter_sdxl_vit-h.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl_vit-h.safetensors", - "size": "698.4MB" - }, - { - "name": "ip-adapter-plus_sdxl_vit-h.safetensors", - "type": "IP-Adapter", - "base": "SDXL", - "save_path": "ipadapter", - "description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter-plus_sdxl_vit-h.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus_sdxl_vit-h.safetensors", - "size": "847.5MB" - }, - { - "name": "ip-adapter-plus-face_sdxl_vit-h.safetensors", - "type": "IP-Adapter", - "base": "SDXL", - "save_path": "ipadapter", - "description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints [ipadapter]", - "reference": "https://huggingface.co/h94/IP-Adapter", - "filename": "ip-adapter-plus-face_sdxl_vit-h.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus-face_sdxl_vit-h.safetensors", - "size": "847.5MB" - }, - { - "name": "ip_plus_composition_sd15.safetensors", - "type": "IP-Adapter", - "base": "SD1.5", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/ostris/ip-composition-adapter", - "filename": "ip_plus_composition_sd15.safetensors", - "url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sd15.safetensors", - "size": "98.2MB" - }, - { - "name": "ip_plus_composition_sdxl.safetensors", - "type": "IP-Adapter", - "base": "SDXL", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/ostris/ip-composition-adapter", - "filename": "ip_plus_composition_sdxl.safetensors", - "url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sdxl.safetensors", - "size": "847.5MB" - }, - { - "name": "Kolors-IP-Adapter-Plus.bin (Kwai-Kolors/Kolors-IP-Adapter-Plus)", - "type": "IP-Adapter", - "base": "Kolors", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-Plus", - "filename": "Kolors-IP-Adapter-Plus.bin", - "url": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-Plus/resolve/main/ip_adapter_plus_general.bin", - "size": "1.01GB" - }, - { - "name": "Kolors-IP-Adapter-FaceID-Plus.bin (Kwai-Kolors/Kolors-IP-Adapter-Plus)", - "type": "IP-Adapter", - "base": "Kolors", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-FaceID-Plus", - "filename": "Kolors-IP-Adapter-FaceID-Plus.bin", - "url": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-FaceID-Plus/resolve/main/ipa-faceid-plus.bin", - "size": "2.39GB" - }, - - - - { - "name": "pfg-novel-n10.pt", - "type": "PFG", - "base": "SD1.5", - "save_path": "custom_nodes/pfg-ComfyUI/models", - "description": "Pressing 'install' directly downloads the model from the pfg-ComfyUI/models extension node. (Note: Requires ComfyUI-Manager V0.24 or above)", - "reference": "https://huggingface.co/furusu/PFG", - "filename": "pfg-novel-n10.pt", - "url": "https://huggingface.co/furusu/PFG/resolve/main/pfg-novel-n10.pt", - "size": "23.6MB" - }, - { - "name": "pfg-wd14-n10.pt", - "type": "PFG", - "base": "SD1.5", - "save_path": "custom_nodes/pfg-ComfyUI/models", - "description": "Pressing 'install' directly downloads the model from the pfg-ComfyUI/models extension node. (Note: Requires ComfyUI-Manager V0.24 or above)", - "reference": "https://huggingface.co/furusu/PFG", - "filename": "pfg-wd14-n10.pt", - "url": "https://huggingface.co/furusu/PFG/resolve/main/pfg-wd14-n10.pt", - "size": "31.5MB" - }, - { - "name": "pfg-wd15beta2-n10.pt", - "type": "PFG", - "base": "SD1.5", - "save_path": "custom_nodes/pfg-ComfyUI/models", - "description": "Pressing 'install' directly downloads the model from the pfg-ComfyUI/models extension node. (Note: Requires ComfyUI-Manager V0.24 or above)", - "reference": "https://huggingface.co/furusu/PFG", - "filename": "pfg-wd15beta2-n10.pt", - "url": "https://huggingface.co/furusu/PFG/resolve/main/pfg-wd15beta2-n10.pt", - "size": "31.5MB" - }, - { - "name": "GFPGANv1.4.pth", - "type": "GFPGAN", - "base": "GFPGAN", - "save_path": "facerestore_models", - "description": "Face Restoration Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", - "reference": "https://github.com/TencentARC/GFPGAN/releases", - "filename": "GFPGANv1.4.pth", - "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.4/GFPGANv1.4.pth", - "size": "348.6MB" - }, - { - "name": "codeformer.pth", - "type": "CodeFormer", - "base": "CodeFormer", - "save_path": "facerestore_models", - "description": "Face Restoration Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", - "reference": "https://github.com/sczhou/CodeFormer/releases", - "filename": "codeformer.pth", - "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth", - "size": "376.6MB" - }, - { - "name": "detection_Resnet50_Final.pth", - "type": "facexlib", - "base": "facexlib", - "save_path": "facerestore_models", - "description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", - "reference": "https://github.com/xinntao/facexlib", - "filename": "detection_Resnet50_Final.pth", - "url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth", - "size": "109.5MB" - }, - { - "name": "detection_mobilenet0.25_Final.pth", - "type": "facexlib", - "base": "facexlib", - "save_path": "facerestore_models", - "description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", - "reference": "https://github.com/xinntao/facexlib", - "filename": "detection_mobilenet0.25_Final.pth", - "url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_mobilenet0.25_Final.pth", - "size": "1.79MB" - }, - { - "name": "yolov5l-face.pth", - "type": "facexlib", - "base": "facexlib", - "save_path": "facedetection", - "description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", - "reference": "https://github.com/xinntao/facexlib", - "filename": "yolov5l-face.pth", - "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/yolov5l-face.pth", - "size": "187.0MB" - }, - { - "name": "yolov5n-face.pth", - "type": "facexlib", - "base": "facexlib", - "save_path": "facedetection", - "description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", - "reference": "https://github.com/xinntao/facexlib", - "filename": "yolov5n-face.pth", - "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/yolov5n-face.pth", - "size": "7.15MB" - }, - { - "name": "photomaker-v1.bin", - "type": "photomaker", - "base": "SDXL", - "save_path": "photomaker", - "description": "PhotoMaker model. This model is compatible with SDXL.", - "reference": "https://huggingface.co/TencentARC/PhotoMaker", - "filename": "photomaker-v1.bin", - "url": "https://huggingface.co/TencentARC/PhotoMaker/resolve/main/photomaker-v1.bin", - "size": "934.1MB" - }, - { - "name": "photomaker-v2.bin", - "type": "photomaker", - "base": "SDXL", - "save_path": "photomaker", - "description": "PhotoMaker model. This model is compatible with SDXL.", - "reference": "https://huggingface.co/TencentARC/PhotoMaker-V2", - "filename": "photomaker-v2.bin", - "url": "https://huggingface.co/TencentARC/PhotoMaker-V2/resolve/main/photomaker-v2.bin", - "size": "1.8GB" - }, - { - "name": "1k3d68.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/antelopev2", - "description": "Antelopev2 1k3d68.onnx model for InstantId. (InstantId needs all Antelopev2 models)", - "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", - "filename": "1k3d68.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/1k3d68.onnx", - "size": "143.6MB" - }, - { - "name": "2d106det.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/antelopev2", - "description": "Antelopev2 2d106det.onnx model for InstantId. (InstantId needs all Antelopev2 models)", - "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", - "filename": "2d106det.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/2d106det.onnx", - "size": "5.03MB" - }, - { - "name": "genderage.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/antelopev2", - "description": "Antelopev2 genderage.onnx model for InstantId. (InstantId needs all Antelopev2 models)", - "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", - "filename": "genderage.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/genderage.onnx", - "size": "1.32MB" - }, - { - "name": "glintr100.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/antelopev2", - "description": "Antelopev2 glintr100.onnx model for InstantId. (InstantId needs all Antelopev2 models)", - "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", - "filename": "glintr100.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/glintr100.onnx", - "size": "260.7MB" - }, - { - "name": "scrfd_10g_bnkps.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/antelopev2", - "description": "Antelopev2 scrfd_10g_bnkps.onnx model for InstantId. (InstantId needs all Antelopev2 models)", - "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", - "filename": "scrfd_10g_bnkps.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/scrfd_10g_bnkps.onnx", - "size": "16.9MB" - }, - { - "name": "ip-adapter.bin", - "type": "instantid", - "base": "SDXL", - "save_path": "instantid", - "description": "InstantId main model based on IpAdapter", - "reference": "https://huggingface.co/InstantX/InstantID", - "filename": "ip-adapter.bin", - "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ip-adapter.bin", - "size": "1.69GB" - }, - { - "name": "diffusion_pytorch_model.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/instantid", - "description": "InstantId controlnet model", - "reference": "https://huggingface.co/InstantX/InstantID", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ControlNetModel/diffusion_pytorch_model.safetensors", - "size": "2.50GB" - }, - { - "name": "efficient_sam_s_cpu.jit [ComfyUI-YoloWorld-EfficientSAM]", - "type": "efficient_sam", - "base": "efficient_sam", - "save_path": "custom_nodes/ComfyUI-YoloWorld-EfficientSAM", - "description": "Install efficient_sam_s_cpu.jit into ComfyUI-YoloWorld-EfficientSAM", - "reference": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/tree/main", - "filename": "efficient_sam_s_cpu.jit", - "url": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/resolve/main/efficient_sam_s_cpu.jit", - "size": "106.0MB" - }, - { - "name": "efficient_sam_s_gpu.jit [ComfyUI-YoloWorld-EfficientSAM]", - "type": "efficient_sam", - "base": "efficient_sam", - "save_path": "custom_nodes/ComfyUI-YoloWorld-EfficientSAM", - "description": "Install efficient_sam_s_gpu.jit into ComfyUI-YoloWorld-EfficientSAM", - "reference": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/tree/main", - "filename": "efficient_sam_s_gpu.jit", - "url": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/resolve/main/efficient_sam_s_gpu.jit", - "size": "106.0MB" - }, - { - "name": "shape_predictor_68_face_landmarks.dat [Face Analysis]", - "type": "Shape Predictor", - "base": "DLIB", - "save_path": "custom_nodes/ComfyUI_FaceAnalysis/dlib", - "description": "To use the Face Analysis for ComfyUI custom node, installation of this model is needed.", - "reference": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/tree/main", - "filename": "shape_predictor_68_face_landmarks.dat", - "url": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/resolve/main/shape_predictor_68_face_landmarks.dat", - "size": "99.7MB" - }, - { - "name": "dlib_face_recognition_resnet_model_v1.dat [Face Analysis]", - "type": "Face Recognition", - "base": "DLIB", - "save_path": "custom_nodes/ComfyUI_FaceAnalysis/dlib", - "description": "To use the Face Analysis for ComfyUI custom node, installation of this model is needed.", - "reference": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/tree/main", - "filename": "dlib_face_recognition_resnet_model_v1.dat", - "url": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/resolve/main/dlib_face_recognition_resnet_model_v1.dat", - "size": "22.5MB" - }, - { - "name": "InstanceDiffusion/fusers", - "type": "InstanceDiffusion", - "base": "SD1.5", - "save_path": "instance_models/fuser_models", - "description": "Fusers checkpoints for multi-object prompting with InstanceDiffusion.", - "reference": "https://huggingface.co/logtd/instance_diffusion", - "filename": "fusers.ckpt", - "url": "https://huggingface.co/logtd/instance_diffusion/resolve/main/fusers.ckpt", - "size": "832.1MB" - }, - { - "name": "InstanceDiffusion/position_net", - "type": "InstanceDiffusion", - "base": "SD1.5", - "save_path": "instance_models/positionnet_models", - "description": "PositionNet checkpoints for multi-object prompting with InstanceDiffusion.", - "reference": "https://huggingface.co/logtd/instance_diffusion", - "filename": "position_net.ckpt", - "url": "https://huggingface.co/logtd/instance_diffusion/resolve/main/position_net.ckpt", - "size": "643.2MB" - }, - { - "name": "InstanceDiffusion/scaleu", - "type": "InstanceDiffusion", - "base": "SD1.5", - "save_path": "instance_models/scaleu_models", - "description": "ScaleU checkpoints for multi-object prompting with InstanceDiffusion.", - "reference": "https://huggingface.co/logtd/instance_diffusion", - "filename": "scaleu.ckpt", - "url": "https://huggingface.co/logtd/instance_diffusion/resolve/main/scaleu.ckpt", - "size": "53.1KB" - }, - { - "name": "1k3d68.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/buffalo_l", - "description": "Buffalo_l 1k3d68.onnx model for IpAdapterPlus", - "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", - "filename": "1k3d68.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/1k3d68.onnx", - "size": "143.6MB" - }, - { - "name": "2d106det.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/buffalo_l", - "description": "Buffalo_l 2d106det.onnx model for IpAdapterPlus", - "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", - "filename": "2d106det.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/2d106det.onnx", - "size": "5.03MB" - }, - { - "name": "det_10g.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/buffalo_l", - "description": "Buffalo_l det_10g.onnx model for IpAdapterPlus", - "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", - "filename": "det_10g.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/det_10g.onnx", - "size": "16.9MB" - }, - { - "name": "genderage.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/buffalo_l", - "description": "Buffalo_l genderage.onnx model for IpAdapterPlus", - "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", - "filename": "genderage.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/genderage.onnx", - "size": "1.32MB" - }, - { - "name": "w600k_r50.onnx", - "type": "insightface", - "base": "inswapper", - "save_path": "insightface/models/buffalo_l", - "description": "Buffalo_l w600k_r50.onnx model for IpAdapterPlus", - "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", - "filename": "w600k_r50.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/w600k_r50.onnx", - "size": "174.4MB" - }, - { - "name": "BLIP ImageCaption (COCO) w/ ViT-B and CapFilt-L", - "type": "BLIP_MODEL", - "base": "blip_model", - "save_path": "blip", - "description": "BLIP ImageCaption (COCO) w/ ViT-B and CapFilt-L", - "reference": "https://github.com/salesforce/BLIP", - "filename": "model_base_capfilt_large.pth", - "url": "https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_capfilt_large.pth", - "size": "2.12GB" - }, - { - "name": "GroundingDINO SwinT OGC - Model", - "type": "GroundingDINO", - "base": "DINO", - "save_path": "groundingdino", - "description": "GroundingDINO SwinT OGC Model", - "reference": "https://huggingface.co/ShilongLiu/GroundingDINO", - "filename": "groundingdino_swint_ogc.pth", - "url": "https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/groundingdino_swint_ogc.pth", - "size": "694.0MB" - }, - { - "name": "GroundingDINO SwinT OGC - CFG File", - "type": "GroundingDINO", - "base": "DINO", - "save_path": "groundingdino", - "description": "GroundingDINO SwinT OGC CFG File", - "reference": "https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/GroundingDINO_SwinT_OGC.cfg.py", - "filename": "GroundingDINO_SwinT_OGC.cfg.py", - "url": "https://huggingface.co/ShilongLiu/GroundingDINO/raw/main/GroundingDINO_SwinT_OGC.cfg.py", - "size": "1.01KB" - }, - { - "name": "MobileSAM", - "type": "sam", - "base": "SAM", - "save_path": "sams", - "description": "MobileSAM", - "reference": "https://github.com/ChaoningZhang/MobileSAM/", - "filename": "mobile_sam.pt", - "url": "https://github.com/ChaoningZhang/MobileSAM/blob/master/weights/mobile_sam.pt", - "size": "38.8MB" - }, - { - "name": "DynamiCrafter 1024 bf16 safetensors", - "type": "checkpoint", - "base": "DynamiCrafter", - "save_path": "checkpoints/dynamicrafter", - "description": "DynamiCrafter image2video model 1024x575", - "reference": "https://huggingface.co/Kijai/DynamiCrafter_pruned/", - "filename": "dynamicrafter_1024_v1_bf16.safetensors", - "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/dynamicrafter_1024_v1_bf16.safetensors", - "size": "5.22GB" - }, - { - "name": "DynamiCrafter 512 interpolation bf16 safetensors", - "type": "checkpoint", - "base": "DynamiCrafter", - "save_path": "checkpoints/dynamicrafter", - "description": "DynamiCrafter image2video interpolation model 512", - "reference": "https://huggingface.co/Kijai/DynamiCrafter_pruned/", - "filename": "dynamicrafter_512_interp_v1_bf16.safetensors", - "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/dynamicrafter_512_interp_v1_bf16.safetensors", - "size": "5.22GB" - }, - { - "name": "monster-labs - Controlnet QR Code Monster v1 For SDXL", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "monster-labs - Controlnet QR Code Monster v1 For SDXL", - "reference": "https://huggingface.co/monster-labs/control_v1p_sdxl_qrcode_monster", - "filename": "control_v1p_sdxl_qrcode_monster.safetensors", - "url": "https://huggingface.co/monster-labs/control_v1p_sdxl_qrcode_monster/resolve/main/diffusion_pytorch_model.safetensors", - "size": "5.00GB" - }, - { - "name": "Depth-FM-v1 fp16 safetensors", - "type": "checkpoint", - "base": "Depth-FM", - "save_path": "checkpoints/depthfm", - "description": "Depth-FM monocular depth estimation model", - "reference": "https://huggingface.co/Kijai/depth-fm-pruned", - "filename": "depthfm-v1_fp16.safetensors", - "url": "https://huggingface.co/Kijai/depth-fm-pruned/resolve/main/depthfm-v1_fp16.safetensors", - "size": "1.73GB" - }, - { - "name": "Depth-FM-v1 fp32 safetensors", - "type": "checkpoint", - "base": "Depth-FM", - "save_path": "checkpoints/depthfm", - "description": "Depth-FM monocular depth estimation model", - "reference": "https://huggingface.co/Kijai/depth-fm-pruned", - "filename": "depthfm-v1_fp32.safetensors", - "url": "https://huggingface.co/Kijai/depth-fm-pruned/resolve/main/depthfm-v1_fp32.safetensors", - "size": "3.46GB" - }, - { - "name": "SUPIR-v0F.ckpt", - "type": "checkpoint", - "base": "SUPIR", - "save_path": "checkpoints/SUPIR", - "description": "SUPIR checkpoint model", - "reference": "https://huggingface.co/camenduru/SUPIR/tree/main", - "filename": "SUPIR-v0F.ckpt", - "url": "https://huggingface.co/camenduru/SUPIR/resolve/main/SUPIR-v0F.ckpt", - "size": "5.33GB" - }, - { - "name": "SUPIR-v0Q.ckpt", - "type": "checkpoint", - "base": "SUPIR", - "save_path": "checkpoints/SUPIR", - "description": "SUPIR checkpoint model", - "reference": "https://huggingface.co/camenduru/SUPIR/tree/main", - "filename": "SUPIR-v0Q.ckpt", - "url": "https://huggingface.co/camenduru/SUPIR/resolve/main/SUPIR-v0Q.ckpt", - "size": "5.33GB" - }, - { - "name": "Kijai/SUPIR-v0F_fp16.safetensors (pruned)", - "type": "checkpoint", - "base": "SUPIR", - "save_path": "checkpoints/SUPIR", - "description": "SUPIR checkpoint model", - "reference": "https://huggingface.co/Kijai/SUPIR_pruned/tree/main", - "filename": "SUPIR-v0F_fp16.safetensors", - "url": "https://huggingface.co/Kijai/SUPIR_pruned/resolve/main/SUPIR-v0F_fp16.safetensors", - "size": "2.66GB" - }, - { - "name": "Kijai/SUPIR-v0Q_fp16.safetensors (pruned)", - "type": "checkpoint", - "base": "SUPIR", - "save_path": "checkpoints/SUPIR", - "description": "SUPIR checkpoint model", - "reference": "https://huggingface.co/Kijai/SUPIR_pruned/tree/main", - "filename": "SUPIR-v0Q_fp16.safetensors", - "url": "https://huggingface.co/Kijai/SUPIR_pruned/resolve/main/SUPIR-v0Q_fp16.safetensors", - "size": "2.66GB" - }, - { - "name": "RAM", - "type": "RAM", - "base": "RAM", - "save_path": "rams", - "description": "RAM Recognize Anything Model", - "reference": "https://huggingface.co/xinyu1205/recognize_anything_model", - "filename": "ram_swin_large_14m.pth", - "url": "https://huggingface.co/xinyu1205/recognize_anything_model/resolve/main/ram_swin_large_14m.pth", - "size": "5.63GB" - }, - { - "name": "RAM++", - "type": "RAM", - "base": "RAM", - "save_path": "rams", - "description": "RAM++ Recognize Anything Model", - "reference": "https://huggingface.co/xinyu1205/recognize-anything-plus-model", - "filename": "ram_plus_swin_large_14m.pth", - "url": "https://huggingface.co/xinyu1205/recognize-anything-plus-model/resolve/main/ram_plus_swin_large_14m.pth", - "size": "3.01GB" - }, - { - "name": "tag2text", - "type": "RAM", - "base": "RAM", - "save_path": "rams", - "description": "tag2text Recognize Anything Model", - "reference": "https://huggingface.co/xinyu1205/recognize_anything_model", - "filename": "tag2text_swin_14m.pth", - "url": "https://huggingface.co/xinyu1205/recognize_anything_model/resolve/main/tag2text_swin_14m.pth", - "size": "4.48GB" - }, - { - "name": "Zero123 3D object Model", - "type": "zero123", - "base": "zero123", - "save_path": "checkpoints/zero123", - "description": "model that been trained on 10M+ 3D objects from Objaverse-XL, used for generated rotated CamView", - "reference": "https://objaverse.allenai.org/docs/zero123-xl/", - "filename": "zero123-xl.ckpt", - "url": "https://huggingface.co/kealiu/zero123-xl/resolve/main/zero123-xl.ckpt", - "size": "15.5GB" - }, - { - "name": "Zero123 3D object Model", - "type": "zero123", - "base": "zero123", - "save_path": "checkpoints/zero123", - "description": "Stable Zero123 is a model for view-conditioned image generation based on [a/Zero123](https://github.com/cvlab-columbia/zero123).", - "reference": "https://huggingface.co/stabilityai/stable-zero123", - "filename": "stable_zero123.ckpt", - "url": "https://huggingface.co/stabilityai/stable-zero123/resolve/main/stable_zero123.ckpt", - "size": "8.58GB" - }, - { - "name": "Zero123 3D object Model", - "type": "zero123", - "base": "zero123", - "save_path": "checkpoints/zero123", - "description": "Zero123 original checkpoints in 105000 steps.", - "reference": "https://huggingface.co/cvlab/zero123-weights", - "filename": "zero123-105000.ckpt", - "url": "https://huggingface.co/cvlab/zero123-weights/resolve/main/105000.ckpt", - "size": "15.5GB" - }, - { - "name": "Zero123 3D object Model", - "type": "zero123", - "base": "zero123", - "save_path": "checkpoints/zero123", - "description": "Zero123 original checkpoints in 165000 steps.", - "reference": "https://huggingface.co/cvlab/zero123-weights", - "filename": "zero123-165000.ckpt", - "url": "https://huggingface.co/cvlab/zero123-weights/resolve/main/165000.ckpt", - "size": "15.5GB" - }, - { - "name": "InstantID/ip-adapter", - "type": "instantid", - "base": "SDXL", - "save_path": "instantid/SDXL", - "description": "ip-adapter model for cubiq/InstantID", - "reference": "https://huggingface.co/InstantX/InstantID", - "filename": "ip-adapter.bin", - "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ip-adapter.bin", - "size": "1.69GB" - }, - { - "name": "InstantID/ControlNet", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/instantid", - "description": "instantid controlnet model for cubiq/InstantID", - "reference": "https://huggingface.co/InstantX/InstantID", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ControlNetModel/diffusion_pytorch_model.safetensors", - "size": "2.50GB" - }, - { - "name": "MonsterMMORPG/insightface (for InstantID)", - "type": "insightface", - "base": "SDXL", - "save_path": "insightface/models", - "description": "MonsterMMORPG insightface model for cubiq/InstantID", - "reference": "https://huggingface.co/MonsterMMORPG/tools/tree/main", - "filename": "antelopev2.zip", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/antelopev2.zip", - "size": "360.7MB" - }, - { - "name": "IC-Light/fc", - "type": "IC-Light", - "base": "SD1.5", - "save_path": "diffusion_models/IC-Light", - "description": "The default relighting model, conditioned on text and foreground", - "reference": "https://huggingface.co/lllyasviel/ic-light", - "filename": "iclight_sd15_fc.safetensors", - "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fc.safetensors", - "size": "1.72GB" - }, - { - "name": "IC-Light/fbc", - "type": "IC-Light", - "base": "SD1.5", - "save_path": "diffusion_models/IC-Light", - "description": "Relighting model conditioned with text, foreground, and background", - "reference": "https://huggingface.co/lllyasviel/ic-light", - "filename": "iclight_sd15_fbc.safetensors", - "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fbc.safetensors", - "size": "1.72GB" - }, - { - "name": "IC-Light/fcon", - "type": "IC-Light", - "base": "SD1.5", - "save_path": "diffusion_models/IC-Light", - "description": "Same as iclight_sd15_fc.safetensors, but trained with offset noise", - "reference": "https://huggingface.co/lllyasviel/ic-light", - "filename": "iclight_sd15_fcon.safetensors", - "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fcon.safetensors", - "size": "1.72GB" - }, - { - "name": "ID-Animator/animator.ckpt", - "type": "ID-Animator", - "base": "SD1.5", - "save_path": "custom_nodes/ComfyUI_ID_Animator/models", - "description": "ID-Animator checkpoint", - "reference": "https://huggingface.co/spaces/ID-Animator/ID-Animator", - "filename": "animator.ckpt", - "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/animator.ckpt", - "size": "247.3MB" - }, - { - "name": "ID-Animator/mm_sd_v15_v2.ckpt", - "type": "ID-Animator", - "base": "SD1.5", - "save_path": "custom_nodes/ComfyUI_ID_Animator/models/animatediff_models", - "description": "AnimateDiff checkpoint for ID-Animator", - "reference": "https://huggingface.co/spaces/ID-Animator/ID-Animator", - "filename": "mm_sd_v15_v2.ckpt", - "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/mm_sd_v15_v2.ckpt", - "size": "1.82GB" - }, - { - "name": "ID-Animator/image_encoder", - "type": "ID-Animator", - "base": "SD1.5", - "save_path": "custom_nodes/ComfyUI_ID_Animator/models/image_encoder", - "description": "CLIP Image encoder for ID-Animator", - "reference": "https://huggingface.co/spaces/ID-Animator/ID-Animator", - "filename": "model.safetensors", - "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/image_encoder/model.safetensors", - "size": "2.53GB" - }, - { - "name": "TencentARC/CustomNet", - "type": "CustomNet", - "base": "CustomNet", - "save_path": "custom_nodes/ComfyUI_CustomNet/pretrain", - "description": "CustomNet pretrained model for ComfyUI_CustomNet", - "reference": "https://huggingface.co/TencentARC/CustomNet/tree/main", - "filename": "customnet_v1.pt", - "url": "https://huggingface.co/TencentARC/CustomNet/resolve/main/customnet_v1.pt", - "size": "5.71GB" - }, - { - "name": "TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic v2 (fp16)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Controlnet SDXL Tile model realistic version.", - "reference": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic", - "filename": "TTPLANET_Controlnet_Tile_realistic_v2_fp16.safetensors", - "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_fp16.safetensors", - "size": "2.50GB" - }, - { - "name": "TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic v2 (rank256)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "Controlnet SDXL Tile model realistic version.", - "reference": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic", - "filename": "TTPLANET_Controlnet_Tile_realistic_v2_rank256.safetensors", - "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_rank256.safetensors", - "size": "774.4MB" - }, - { - "name": "ViperYX/RGT_x2.pth", - "type": "RGT", - "base": "RGT", - "save_path": "RGT/RGT", - "description": "RGT x2 upscale model for ComfyUI-RGT", - "reference": "https://huggingface.co/ViperYX/RGT/tree/main", - "filename": "RGT_x2.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x2.pth", - "size": "179.8MB" - }, - { - "name": "ViperYX/RGT_x3.pth", - "type": "RGT", - "base": "RGT", - "save_path": "RGT/RGT", - "description": "RGT x3 upscale model for ComfyUI-RGT", - "reference": "https://huggingface.co/ViperYX/RGT/tree/main", - "filename": "RGT_x3.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x3.pth", - "size": "180.5MB" - }, - { - "name": "ViperYX/RGT_x4.pth", - "type": "RGT", - "base": "RGT", - "save_path": "RGT/RGT", - "description": "RGT_S x4 upscale model for ComfyUI-RGT", - "reference": "https://huggingface.co/ViperYX/RGT/tree/main", - "filename": "RGT_x4.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x4.pth", - "size": "180.4MB" - }, - { - "name": "ViperYX/RGT_S_x2.pth", - "type": "RGT", - "base": "RGT", - "save_path": "RGT/RGT_S", - "description": "RGT_S x2 upscale model for ComfyUI-RGT", - "reference": "https://huggingface.co/ViperYX/RGT/tree/main", - "filename": "RGT_S_x2.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x2.pth", - "size": "135.4MB" - }, - { - "name": "ViperYX/RGT_S_x3.pth", - "type": "RGT", - "base": "RGT", - "save_path": "RGT/RGT_S", - "description": "RGT_S x3 upscale model for ComfyUI-RGT", - "reference": "https://huggingface.co/ViperYX/RGT/tree/main", - "filename": "RGT_S_x3.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x3.pth", - "size": "136.1MB" - }, - { - "name": "ViperYX/RGT_S_x4.pth", - "type": "RGT", - "base": "RGT", - "save_path": "RGT/RGT_S", - "description": "RGT_S x4 upscale model for ComfyUI-RGT", - "reference": "https://huggingface.co/ViperYX/RGT/tree/main", - "filename": "RGT_S_x4.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x4.pth", - "size": "136.0MB" - }, - { - "name": "Doubiiu/ToonCrafter model checkpoint", - "type": "checkpoint", - "base": "ToonCrafter", - "save_path": "custom_nodes/ComfyUI-ToonCrafter/ToonCrafter/checkpoints/tooncrafter_512_interp_v1", - "description": "ToonCrafter checkpoint model for ComfyUI-ToonCrafter", - "reference": "https://huggingface.co/Doubiiu/ToonCrafter/tree/main", - "filename": "model.ckpt", - "url": "https://huggingface.co/Doubiiu/ToonCrafter/resolve/main/model.ckpt", - "size": "10.5GB" - }, - - { - "name": "InstantX/FLUX.1-dev Controlnet (Union)", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1/InstantX-FLUX1-Dev-Union", - "description": "FLUX.1 [Dev] Union Controlnet. Supports Canny, Depth, Pose, Tile, Blur, Gray Low Quality.", - "reference": "https://huggingface.co/InstantX/FLUX.1-dev-Controlnet-Union", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/InstantX/FLUX.1-dev-Controlnet-Union/resolve/main/diffusion_pytorch_model.safetensors", - "size": "6.6GB" - }, - - - { - "name": "InstantX/FLUX.1-dev-IP-Adapter", - "type": "IP-Adapter", - "base": "FLUX.1", - "save_path": "ipadapter-flux", - "description": "FLUX.1-dev-IP-Adapter", - "reference": "https://huggingface.co/InstantX/FLUX.1-dev-IP-Adapter", - "filename": "ip-adapter.bin", - "url": "https://huggingface.co/InstantX/FLUX.1-dev-IP-Adapter/resolve/main/ip-adapter.bin", - "size": "5.29GB" - }, - { - "name": "Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1/Shakker-Labs-ControlNet-Union-Pro", - "description": "FLUX.1 [Dev] Union Controlnet. Supports Canny, Tile, Depth, Blur, Pose, Gray, Low Quality", - "reference": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro/resolve/main/diffusion_pytorch_model.safetensors", - "size": "6.6GB" - }, - { - "name": "Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro (fp8_e4m3fn) by Kijai", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1", - "description": "FLUX.1 [Dev] Union Controlnet. Supports Canny, Tile, Depth, Blur, Pose, Gray, Low Quality\nVersion quantized to fp8_e4m3fn by Kijai", - "reference": "https://huggingface.co/Kijai/flux-fp8", - "filename": "flux_shakker_labs_union_pro-fp8_e4m3fn.safetensors", - "url": "https://huggingface.co/Kijai/flux-fp8/resolve/main/flux_shakker_labs_union_pro-fp8_e4m3fn.safetensors", - "size": "3.3GB" - }, - - { - "name": "jasperai/FLUX.1-dev-Controlnet-Upscaler", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1/jasperai-dev-Upscaler", - "description": "This is Flux.1-dev ControlNet for low resolution images developed by Jasper research team.", - "reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Upscaler", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Upscaler/resolve/main/diffusion_pytorch_model.safetensors", - "size": "3.58GB" - }, - { - "name": "jasperai/FLUX.1-dev-Controlnet-Depth", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1/jasperai-dev-Depth", - "description": "This is Flux.1-dev ControlNet for Depth map developed by Jasper research team.", - "reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Depth", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Depth/resolve/main/diffusion_pytorch_model.safetensors", - "size": "3.58GB" - }, - { - "name": "jasperai/Flux.1-dev-Controlnet-Surface-Normals", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1/jasperai-dev-Surface-Normals", - "description": "This is Flux.1-dev ControlNet for Surface Normals map developed by Jasper research team.", - "reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Surface-Normals", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Surface-Normals/resolve/main/diffusion_pytorch_model.safetensors", - "size": "3.58GB" - }, - - { - "name": "xinsir/ControlNet++: All-in-one ControlNet", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/controlnet-union-sdxl-1.0", - "description": "All-in-one ControlNet for image generations and editing!", - "reference": "https://huggingface.co/xinsir/controlnet-union-sdxl-1.0", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-union-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "2.50GB" - }, - { - "name": "xinsir/ControlNet++: All-in-one ControlNet (ProMax model)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/controlnet-union-sdxl-1.0", - "description": "All-in-one ControlNet for image generations and editing! (ProMax model)", - "reference": "https://huggingface.co/xinsir/controlnet-union-sdxl-1.0", - "filename": "diffusion_pytorch_model_promax.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-union-sdxl-1.0/resolve/main/diffusion_pytorch_model_promax.safetensors", - "size": "2.50GB" - }, - { - "name": "xinsir/Controlnet-Scribble-Sdxl-1.0", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/controlnet-scribble-sdxl-1.0", - "description": "Controlnet SDXL Scribble model.", - "reference": "https://huggingface.co/xinsir/controlnet-scribble-sdxl-1.0", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-scribble-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "2.50GB" - }, - { - "name": "xinsir/Controlnet-Canny-Sdxl-1.0 (V2)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/controlnet-canny-sdxl-1.0", - "description": "Controlnet SDXL Canny model.", - "reference": "https://huggingface.co/xinsir/controlnet-canny-sdxl-1.0", - "filename": "diffusion_pytorch_model_V2.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model_V2.safetensors", - "size": "2.50GB" - }, - { - "name": "xinsir/Controlnet-Openpose-Sdxl-1.0", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/controlnet-openpose-sdxl-1.0", - "description": "Controlnet SDXL Openpose model.", - "reference": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "2.50GB" - }, - { - "name": "xinsir/Controlnet-Openpose-Sdxl-1.0 (Ver. twins)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/controlnet-openpose-sdxl-1.0", - "description": "Controlnet SDXL Openpose model. (Ver. twins)", - "reference": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0", - "filename": "diffusion_pytorch_model_twins.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model_twins.safetensors", - "size": "2.50GB" - }, - { - "name": "xinsir/Controlnet-Scribble-Sdxl-1.0-Anime", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/controlnet-scribble-sdxl-1.0-anime", - "description": "Controlnet SDXL Scribble model. (Ver. anime)", - "reference": "https://huggingface.co/xinsir/anime-painter", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/anime-painter/resolve/main/diffusion_pytorch_model.safetensors", - "size": "2.50GB" - }, - { - "name": "xinsir/ControlNet Depth SDXL, support zoe, midias", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/controlnet-depth-sdxl-1.0", - "description": "Controlnet SDXL Depth model.", - "reference": "https://huggingface.co/xinsir/controlnet-depth-sdxl-1.0", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-depth-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "2.50GB" - }, - { - "name": "xinsir/ControlNet Tile SDXL", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL/controlnet-tile-sdxl-1.0", - "description": "Controlnet SDXL Tile model.", - "reference": "https://huggingface.co/xinsir/controlnet-tile-sdxl-1.0", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-tile-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", - "size": "2.50GB" - }, - - { - "name": "InstantX/SD3-Controlnet-Canny", - "type": "controlnet", - "base": "SD3", - "save_path": "controlnet/SD3/InstantX-Controlnet-Canny", - "description": "Controlnet SD3 Canny model.", - "reference": "https://huggingface.co/InstantX/SD3-Controlnet-Canny", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/InstantX/SD3-Controlnet-Canny/resolve/main/diffusion_pytorch_model.safetensors", - "size": "1.19GB" - }, - { - "name": "InstantX/SD3-Controlnet-Pose", - "type": "controlnet", - "base": "SD3", - "save_path": "controlnet/SD3/InstantX-Controlnet-Pose", - "description": "Controlnet SD3 Pose model.", - "reference": "https://huggingface.co/InstantX/SD3-Controlnet-Pose", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/InstantX/SD3-Controlnet-Pose/resolve/main/diffusion_pytorch_model.safetensors", - "size": "1.19GB" - }, - { - "name": "InstantX/SD3-Controlnet-Tile", - "type": "controlnet", - "base": "SD3", - "save_path": "controlnet/SD3/InstantX-Controlnet-Tile", - "description": "Controlnet SD3 Tile model.", - "reference": "https://huggingface.co/InstantX/SD3-Controlnet-Tile", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/InstantX/SD3-Controlnet-Tile/resolve/main/diffusion_pytorch_model.safetensors", - "size": "1.19GB" - }, - - - { - "name": "stabilityai/SD3.5-Large-Controlnet-Blur", - "type": "controlnet", - "base": "SD3.5", - "save_path": "controlnet/SD3.5", - "description": "Blur Controlnet model for SD3.5 Large", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets", - "filename": "sd3.5_large_controlnet_blur.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_blur.safetensors", - "size": "8.65GB" - }, - { - "name": "stabilityai/SD3.5-Large-Controlnet-Canny", - "type": "controlnet", - "base": "SD3.5", - "save_path": "controlnet/SD3.5", - "description": "Canny Controlnet model for SD3.5 Large", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets", - "filename": "sd3.5_large_controlnet_canny.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_canny.safetensors", - "size": "8.65GB" - }, - { - "name": "stabilityai/SD3.5-Large-Controlnet-Depth", - "type": "controlnet", - "base": "SD3.5", - "save_path": "controlnet/SD3.5", - "description": "Depth Controlnet model for SD3.5 Large", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets", - "filename": "sd3.5_large_controlnet_depth.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_depth.safetensors", - "size": "8.65GB" - }, - - { - "name": "Kijai/ToonCrafter model checkpoint (interpolation fp16)", - "type": "checkpoint", - "base": "ToonCrafter", - "save_path": "checkpoints/ToonCrafter", - "description": "ToonCrafter checkpoint model for ComfyUI-DynamiCrafterWrapper", - "reference": "https://huggingface.co/Kijai/DynamiCrafter_pruned", - "filename": "tooncrafter_512_interp-fp16.safetensors", - "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/tooncrafter_512_interp-fp16.safetensors", - "size": "5.25GB" - }, - { - "name": "CN-anytest_v4-marged.safetensors", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet. A model for style transfer.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v4-marged.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged.safetensors", - "size": "2.50GB" - }, - { - "name": "CN-anytest_v4-marged_am_dim256.safetensors (dim256/Animagine)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet Lora (dim256) for Animagine. A model for style transfer.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v4-marged_am_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim256.safetensors", - "size": "774.4MB" - }, - { - "name": "CN-anytest_v4-marged_am_dim128.safetensors (dim128/Animagine)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet Lora (dim128) for Animagine. A model for style transfer.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v4-marged_am_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim128.safetensors", - "size": "395.7MB" - }, - { - "name": "CN-anytest_v4-marged_pn_dim256.safetensors (dim256/Pony)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet Lora (dim256) for Pony. A model for style transfer.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v4-marged_pn_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim256.safetensors", - "size": "774.4MB" - }, - { - "name": "CN-anytest_v4-marged_pn_dim128.safetensors (dim128/Pony)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet Lora (dim128) for Pony. A model for style transfer.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v4-marged_pn_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim128.safetensors", - "size": "395.7MB" - }, - { - "name": "CN-anytest_v3-50000_fp16.safetensors (fp16)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet. A strict control model.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v3-50000_fp16.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_fp16.safetensors", - "size": "2.50GB" - }, - { - "name": "CN-anytest_v3-50000_am_dim256.safetensors (dim256/Animagine)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet Lora (dim256) for Animagine. A strict control model.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v3-50000_am_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim256.safetensors", - "size": "774.4MB" - }, - { - "name": "CN-anytest_v3-50000_am_dim128.safetensors (dim128/Animagine)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet Lora (dim128) for Animagine. A strict control model.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v3-50000_am_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim128.safetensors", - "size": "395.7MB" - }, - { - "name": "CN-anytest_v3-50000_pn_dim256.safetensors (dim256/Pony)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet Lora (dim256) for Pony. A strict control model.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v3-50000_pn_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim256.safetensors", - "size": "774.4MB" - }, - { - "name": "CN-anytest_v3-50000_pn_dim128.safetensors (dim128/Pony)", - "type": "controlnet", - "base": "SDXL", - "save_path": "controlnet/SDXL", - "description": "AnyTest Controlnet Lora (dim128) for Pony. A strict control model.", - "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", - "filename": "CN-anytest_v3-50000_pn_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim128.safetensors", - "size": "395.7MB" - }, - { - "name": "kijai/DepthAnythingV2 (vitb/fp16)", - "type": "depthanything", - "base": "depthanything", - "save_path": "depthanything", - "description": "DepthAnythingV2 model", - "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", - "filename": "depth_anything_v2_vitb_fp16.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp16.safetensors", - "size": "195.0MB" - }, - { - "name": "kijai/DepthAnythingV2 (vitb/fp32)", - "type": "depthanything", - "base": "depthanything", - "save_path": "depthanything", - "description": "DepthAnythingV2 model", - "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", - "filename": "depth_anything_v2_vitb_fp32.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp32.safetensors", - "size": "389.9MB" - }, - { - "name": "kijai/DepthAnythingV2 (vitl/fp16)", - "type": "depthanything", - "base": "depthanything", - "save_path": "depthanything", - "description": "DepthAnythingV2 model", - "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", - "filename": "depth_anything_v2_vitl_fp16.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp16.safetensors", - "size": "670.7MB" - }, - { - "name": "kijai/DepthAnythingV2 (vitl/fp32)", - "type": "depthanything", - "base": "depthanything", - "save_path": "depthanything", - "description": "DepthAnythingV2 model", - "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", - "filename": "depth_anything_v2_vitl_fp32.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp32.safetensors", - "size": "1.34GB" - }, - { - "name": "kijai/DepthAnythingV2 (vits/fp16)", - "type": "depthanything", - "base": "depthanything", - "save_path": "depthanything", - "description": "DepthAnythingV2 model", - "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", - "filename": "depth_anything_v2_vits_fp16.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp16.safetensors", - "size": "49.6MB" - }, - { - "name": "kijai/DepthAnythingV2 (vitb/fp32)", - "type": "depthanything", - "base": "depthanything", - "save_path": "depthanything", - "description": "DepthAnythingV2 model", - "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", - "filename": "depth_anything_v2_vits_fp32.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp32.safetensors", - "size": "99.2MB" - }, - - { - "name": "PixArt-Sigma-XL-2-1024-MS.pth (checkpoint)", - "type": "checkpoint", - "base": "pixart-sigma", - "save_path": "checkpoints/PixArt-Sigma", - "description": "PixArt-Sigma Checkpoint model", - "reference": "https://huggingface.co/PixArt-alpha/PixArt-Sigma/tree/main", - "filename": "PixArt-Sigma-XL-2-1024-MS.pth", - "url": "https://huggingface.co/PixArt-alpha/PixArt-Sigma/resolve/main/PixArt-Sigma-XL-2-1024-MS.pth", - "size": "2.47GB" - }, - - { - "name": "PixArt-Sigma-XL-2-512-MS.safetensors (diffusion)", - "type": "diffusion_model", - "base": "pixart-sigma", - "save_path": "diffusion_models/PixArt-Sigma", - "description": "PixArt-Sigma Diffusion model", - "reference": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-512-MS", - "filename": "PixArt-Sigma-XL-2-512-MS.safetensors", - "url": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-512-MS/resolve/main/transformer/diffusion_pytorch_model.safetensors", - "size": "2.44GB" - }, - { - "name": "PixArt-Sigma-XL-2-1024-MS.safetensors (diffusion)", - "type": "diffusion_model", - "base": "pixart-sigma", - "save_path": "diffusion_models/PixArt-Sigma", - "description": "PixArt-Sigma Diffusion model", - "reference": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-1024-MS", - "filename": "PixArt-Sigma-XL-2-1024-MS.safetensors", - "url": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-1024-MS/resolve/main/transformer/diffusion_pytorch_model.safetensors", - "size": "2.44GB" - }, - { - "name": "PixArt-XL-2-1024-MS.safetensors (diffusion)", - "type": "diffusion_model", - "base": "pixart-alpha", - "save_path": "diffusion_models/PixArt-Alpha", - "description": "PixArt-Alpha Diffusion model", - "reference": "https://huggingface.co/PixArt-alpha/PixArt-XL-2-1024-MS", - "filename": "PixArt-XL-2-1024-MS.safetensors", - "url": "https://huggingface.co/PixArt-alpha/PixArt-XL-2-1024-MS/resolve/main/transformer/diffusion_pytorch_model.safetensors", - "size": "2.45GB" - }, - - - { - "name": "hunyuan_dit_1.2.safetensors", - "type": "checkpoint", - "base": "Hunyuan-DiT", - "save_path": "checkpoints/hunyuan_dit_comfyui", - "description": "Different versions of HunyuanDIT packaged for ComfyUI use.", - "reference": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui", - "filename": "hunyuan_dit_1.2.safetensors", - "url": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui/resolve/main/hunyuan_dit_1.2.safetensors", - "size": "8.24GB" - }, - { - "name": "hunyuan_dit_1.1.safetensors", - "type": "checkpoint", - "base": "Hunyuan-DiT", - "save_path": "checkpoints/hunyuan_dit_comfyui", - "description": "Different versions of HunyuanDIT packaged for ComfyUI use.", - "reference": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui", - "filename": "hunyuan_dit_1.1.safetensors", - "url": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui/resolve/main/hunyuan_dit_1.1.safetensors", - "size": "8.24GB" - }, - { - "name": "hunyuan_dit_1.0.safetensors", - "type": "checkpoint", - "base": "Hunyuan-DiT", - "save_path": "checkpoints/hunyuan_dit_comfyui", - "description": "Different versions of HunyuanDIT packaged for ComfyUI use.", - "reference": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui", - "filename": "hunyuan_dit_1.0.safetensors", - "url": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui/resolve/main/hunyuan_dit_1.0.safetensors", - "size": "8.24GB" - }, - - { - "name": "Comfy-Org/hunyuan_video_t2v_720p_bf16.safetensors", - "type": "diffusion_model", - "base": "Hunyuan Video", - "save_path": "diffusion_models/hunyuan_video", - "description": "Huyuan Video diffusion model. repackaged version.", - "reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged", - "filename": "hunyuan_video_t2v_720p_bf16.safetensors", - "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/diffusion_models/hunyuan_video_t2v_720p_bf16.safetensors", - "size": "25.6GB" - }, - { - "name": "Comfy-Org/hunyuan_video_vae_bf16.safetensors", - "type": "VAE", - "base": "Hunyuan Video", - "save_path": "default", - "description": "Huyuan Video VAE model. repackaged version.", - "reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged", - "filename": "hunyuan_video_vae_bf16.safetensors", - "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/vae/hunyuan_video_vae_bf16.safetensors", - "size": "493MB" - }, - - { - "name": "Comfy-Org/llava_llama3_fp8_scaled.safetensors", - "type": "clip", - "base": "LLaVA-Llama-3", - "save_path": "text_encoders", - "description": "llava_llama3_fp8_scaled text encoder model. This is required for using Hunyuan Video.", - "reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged", - "filename": "llava_llama3_fp8_scaled.safetensors", - "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/text_encoders/llava_llama3_fp8_scaled.safetensors", - "size": "9.09GB" - }, - { - "name": "Comfy-Org/llava_llama3_fp16.safetensors", - "type": "clip", - "base": "LLaVA-Llama-3", - "save_path": "text_encoders", - "description": "llava_llama3_fp16 text encoder model. This is required for using Hunyuan Video.", - "reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged", - "filename": "llava_llama3_fp16.safetensors", - "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/text_encoders/llava_llama3_fp16.safetensors", - "size": "16.1GB" - }, - - { - "name": "FLUX.1 [Schnell] Diffusion model", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Schnell] Diffusion model (a.k.a. FLUX.1 turbo model)[w/Due to the large size of the model, it is recommended to download it through a browser if possible.]", - "reference": "https://huggingface.co/black-forest-labs/FLUX.1-schnell", - "filename": "flux1-schnell.safetensors", - "url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell/resolve/main/flux1-schnell.safetensors", - "size": "23.8GB" - }, - - { - "name": "FLUX.1 VAE model", - "type": "VAE", - "base": "FLUX.1", - "save_path": "vae/FLUX1", - "description": "FLUX.1 VAE model", - "reference": "https://huggingface.co/black-forest-labs/FLUX.1-schnell", - "filename": "ae.safetensors", - "url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell/resolve/main/ae.safetensors", - "size": "335MB" - }, - - { - "name": "kijai/FLUX.1 [schnell] Diffusion model (float8_e4m3fn)", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Schnell] Diffusion model (float8_e4m3fn)", - "reference": "https://huggingface.co/Kijai/flux-fp8", - "filename": "flux1-schnell-fp8.safetensors", - "url": "https://huggingface.co/Kijai/flux-fp8/resolve/main/flux1-schnell-fp8.safetensors", - "size": "11.9GB" - }, - - { - "name": "FLUX.1 [Dev] Diffusion model (scaled fp8)", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (scaled fp8)[w/Due to the large size of the model, it is recommended to download it through a browser if possible.]", - "reference": "https://huggingface.co/comfyanonymous/flux_dev_scaled_fp8_test", - "filename": "flux_dev_fp8_scaled_diffusion_model.safetensors", - "url": "https://huggingface.co/comfyanonymous/flux_dev_scaled_fp8_test/resolve/main/flux_dev_fp8_scaled_diffusion_model.safetensors", - "size": "11.9GB" - }, - { - "name": "kijai/FLUX.1 [dev] Diffusion model (float8_e4m3fn)", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [dev] Diffusion model (float8_e4m3fn)", - "reference": "https://huggingface.co/Kijai/flux-fp8", - "filename": "flux1-dev-fp8.safetensors", - "url": "https://huggingface.co/Kijai/flux-fp8/resolve/main/flux1-dev-fp8.safetensors", - "size": "11.9GB" - }, - - { - "name": "Comfy Org/FLUX.1 [dev] Checkpoint model (fp8)", - "type": "checkpoint", - "base": "FLUX.1", - "save_path": "checkpoints/FLUX1", - "description": "FLUX.1 [dev] Checkpoint model (fp8)", - "reference": "https://huggingface.co/Comfy-Org/flux1-dev/tree/main", - "filename": "flux1-dev-fp8.safetensors", - "url": "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors", - "size": "17.2GB" - }, - { - "name": "Comfy Org/FLUX.1 [schnell] Checkpoint model (fp8)", - "type": "checkpoint", - "base": "FLUX.1", - "save_path": "checkpoints/FLUX1", - "description": "FLUX.1 [schnell] Checkpoint model (fp8)", - "reference": "https://huggingface.co/Comfy-Org/flux1-dev/tree/main", - "filename": "flux1-schnell-fp8.safetensors", - "url": "https://huggingface.co/Comfy-Org/flux1-schnell/resolve/main/flux1-schnell-fp8.safetensors", - "size": "17.2GB" - }, - - { - "name": "city96/flux1-dev-F16.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (f16/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-F16.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-F16.gguf", - "size": "23.8GB" - }, - { - "name": "city96/flux1-dev-Q2_K.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q2_K/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q2_K.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q2_K.gguf", - "size": "4.03GB" - }, - { - "name": "city96/flux1-dev-Q3_K_S.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q3_K_S/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q3_K_S.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q3_K_S.gguf", - "size": "5.23GB" - }, - { - "name": "city96/flux1-dev-Q4_0.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q4_0/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q4_0.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q4_0.gguf", - "size": "6.79GB" - }, - { - "name": "city96/flux1-dev-Q4_1.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q4_1/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q4_1.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q4_1.gguf", - "size": "7.53GB" - }, - { - "name": "city96/flux1-dev-Q4_K_S.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q4_K_S/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q4_K_S.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q4_K_S.gguf", - "size": "6.81GB" - }, - { - "name": "city96/flux1-dev-Q5_0.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q5_0/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q5_0.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q5_0.gguf", - "size": "8.27GB" - }, - { - "name": "city96/flux1-dev-Q5_1.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q5_1/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q5_1.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q5_1.gguf", - "size": "9.01GB" - }, - { - "name": "city96/flux1-dev-Q5_K_S.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q5_K_S/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q5_K_S.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q5_K_S.gguf", - "size": "8.29GB" - }, - { - "name": "city96/flux1-dev-Q6_K.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q6_K/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q6_K.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q6_K.gguf", - "size": "9.86GB" - }, - { - "name": "city96/flux1-dev-Q8_0.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q8_0/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-dev-gguf", - "filename": "flux1-dev-Q8_0.gguf", - "url": "https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q8_0.gguf", - "size": "12.7GB" - }, - - { - "name": "city96/flux1-schnell-F16.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (f16/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-F16.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-F16.gguf", - "size": "23.8GB" - }, - { - "name": "city96/flux1-schnell-Q2_K.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q2_K/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q2_K.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q2_K.gguf", - "size": "4.01GB" - }, - { - "name": "city96/flux1-schnell-Q3_K_S.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q3_K_S/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q3_K_S.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q3_K_S.gguf", - "size": "5.21GB" - }, - { - "name": "city96/flux1-schnell-Q4_0.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q4_0/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q4_0.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q4_0.gguf", - "size": "6.77GB" - }, - { - "name": "city96/flux1-schnell-Q4_1.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q4_1/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q4_1.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q4_1.gguf", - "size": "7.51GB" - }, - { - "name": "city96/flux1-schnell-Q4_K_S.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q4_K_S/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q4_K_S.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q4_K_S.gguf", - "size": "6.78GB" - }, - { - "name": "city96/flux1-schnell-Q5_0.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q5_0/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q5_0.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q5_0.gguf", - "size": "8.25GB" - }, - { - "name": "city96/flux1-schnell-Q5_1.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q5_1/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q5_1.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q5_1.gguf", - "size": "8.99GB" - }, - { - "name": "city96/flux1-schnell-Q5_K_S.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q5_K_S/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q5_K_S.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q5_K_S.gguf", - "size": "8.26GB" - }, - { - "name": "city96/flux1-schnell-Q6_K.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q6_K/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q6_K.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q6_K.gguf", - "size": "9.83GB" - }, - { - "name": "city96/flux1-schnell-Q8_0.gguf", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (Q8_0/.gguf)", - "reference": "https://huggingface.co/city96/FLUX.1-schnell-gguf", - "filename": "flux1-schnell-Q8_0.gguf", - "url": "https://huggingface.co/city96/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-Q8_0.gguf", - "size": "12.7GB" - }, - - { - "name": "BAAI/SegGPT", - "type": "SegGPT", - "base": "SegGPT", - "save_path": "custom_nodes/comfyui-SegGPT", - "description": "SegGPT", - "reference": "https://huggingface.co/BAAI/SegGPT", - "filename": "seggpt_vit_large.pth", - "url": "https://huggingface.co/BAAI/SegGPT/resolve/main/seggpt_vit_large.pth", - "size": "1.48GB" - }, - - { - "name": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors [Long CLIP L]", - "type": "clip", - "base": "clip", - "save_path": "clip/long_clip", - "description": "Greatly improved TEXT + Detail (as CLIP-L for Flux.1)", - "reference": "https://huggingface.co/zer0int", - "filename": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors", - "url": "https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14/resolve/main/ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors", - "size": "931MB" - }, - { - "name": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors [Long CLIP L]", - "type": "clip", - "base": "clip", - "save_path": "clip/long_clip", - "description": "Greatly improved TEXT + Detail (as CLIP-L for Flux.1)", - "reference": "https://huggingface.co/zer0int", - "filename": "ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors", - "url": "https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14/resolve/main/ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors", - "size": "323MB" - }, - - { - "name": "Depth Pro model", - "type": "depth-pro", - "base": "depth-pro", - "save_path": "depth/ml-depth-pro", - "description": "Depth pro model for [a/ComfyUI-Depth-Pro](https://github.com/spacepxl/ComfyUI-Depth-Pro)", - "reference": "https://huggingface.co/spacepxl/ml-depth-pro", - "filename": "depth_pro.fp16.safetensors", - "url": "https://huggingface.co/spacepxl/ml-depth-pro/resolve/main/depth_pro.fp16.safetensors", - "size": "1.9GB" - }, - - { - "name": "kijai/lotus depth d model v1.1 (fp16)", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus depth d model v1.1 (fp16). This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-depth-d-v-1-1-fp16.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-depth-d-v-1-1-fp16.safetensors", - "size": "1.74GB" - }, - { - "name": "kijai/lotus depth g model v1.0 (fp16)", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus depth g model v1.0 (fp16). This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-depth-g-v1-0-fp16.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-depth-g-v1-0-fp16.safetensors", - "size": "1.74GB" - }, - { - "name": "kijai/lotus depth g model v1.0", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus depth g model v1.0. This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-depth-g-v1-0.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-depth-g-v1-0.safetensors", - "size": "3.47GB" - }, - { - "name": "kijai/lotus normal d model v1.0 (fp16)", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus normal d model v1.0 (fp16). This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-normal-d-v1-0-fp16.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-normal-d-v1-0-fp16.safetensors", - "size": "1.74GB" - }, - { - "name": "kijai/lotus normal d model v1.0", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus normal d model v1.0. This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-normal-d-v1-0.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-normal-d-v1-0.safetensors", - "size": "3.47GB" - }, - { - "name": "kijai/lotus normal g model v1.0 (fp16)", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus normal g model v1.0 (fp16). This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-normal-g-v1-0-fp16.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-normal-g-v1-0-fp16.safetensors", - "size": "1.74GB" - }, - { - "name": "kijai/lotus normal g model v1.0", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus normal g model v1.0. This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-normal-g-v1-0.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-normal-g-v1-0.safetensors", - "size": "3.47GB" - }, - - { - "name": "Kolors UNet model", - "type": "diffusion_model", - "base": "Kolors", - "save_path": "diffusion_models/kolors", - "description": "Kolors UNet model", - "reference": "https://huggingface.co/Kwai-Kolors/Kolors", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/Kwai-Kolors/Kolors/resolve/main/unet/diffusion_pytorch_model.safetensors", - "size": "10.3GB" - }, - { - "name": "Kolors UNet model (fp16)", - "type": "diffusion_model", - "base": "Kolors", - "save_path": "diffusion_models/kolors", - "description": "Kolors UNet model", - "reference": "https://huggingface.co/Kwai-Kolors/Kolors", - "filename": "diffusion_pytorch_model.fp16.safetensors", - "url": "https://huggingface.co/Kwai-Kolors/Kolors/resolve/main/unet/diffusion_pytorch_model.fp16.safetensors", - "size": "5.16GB" - }, - { - "name": "Kijai/ChatGLM3 (4bit)", - "type": "LLM", - "base": "ChatGLM3", - "save_path": "LLM", - "description": "This is required for Kolors", - "reference": "https://huggingface.co/Kijai/ChatGLM3-safetensors/tree/main", - "filename": "chatglm3-4bit.safetensors", - "url": "https://huggingface.co/Kijai/ChatGLM3-safetensors/resolve/main/chatglm3-4bit.safetensors", - "size": "3.92GB" - }, - { - "name": "Kijai/ChatGLM3 (8bit)", - "type": "LLM", - "base": "ChatGLM3", - "save_path": "LLM", - "description": "This is required for Kolors", - "reference": "https://huggingface.co/Kijai/ChatGLM3-safetensors/tree/main", - "filename": "chatglm3-8bit.safetensors", - "url": "https://huggingface.co/Kijai/ChatGLM3-safetensors/resolve/main/chatglm3-8bit.safetensors", - "size": "3.92GB" - }, - { - "name": "Kijai/ChatGLM3 (16bit)", - "type": "LLM", - "base": "ChatGLM3", - "save_path": "LLM", - "description": "This is required for Kolors", - "reference": "https://huggingface.co/Kijai/ChatGLM3-safetensors/tree/main", - "filename": "chatglm3-fp16.safetensors", - "url": "https://huggingface.co/Kijai/ChatGLM3-safetensors/resolve/main/chatglm3-fp16.safetensors", - "size": "12.52GB" - }, - - { - "name": "pulid_flux_v0.9.1.safetensors", - "type": "PuLID", - "base": "FLUX.1", - "save_path": "pulid", - "description": "This is required for PuLID (FLUX)", - "reference": "https://huggingface.co/guozinan/PuLID", - "filename": "pulid_flux_v0.9.1.safetensors", - "url": "https://huggingface.co/guozinan/PuLID/resolve/main/pulid_flux_v0.9.1.safetensors", - "size": "1.14GB" - }, - { - "name": "pulid_v1.1.safetensors", - "type": "PuLID", - "base": "SDXL", - "save_path": "pulid", - "description": "This is required for PuLID (SDXL)", - "reference": "https://huggingface.co/guozinan/PuLID", - "filename": "pulid_v1.1.safetensors", - "url": "https://huggingface.co/guozinan/PuLID/resolve/main/pulid_v1.1.safetensors", - "size": "984MB" - }, - - { - "name": "kijai/MoGe_ViT_L_fp16.safetensors", - "type": "MoGe", - "base": "MoGe", - "save_path": "MoGe", - "description": "Safetensors versions of [a/https://github.com/microsoft/MoGe](https://github.com/microsoft/MoGe)", - "reference": "https://huggingface.co/Kijai/MoGe_safetensors", - "filename": "MoGe_ViT_L_fp16.safetensors", - "url": "https://huggingface.co/Kijai/MoGe_safetensors/resolve/main/MoGe_ViT_L_fp16.safetensors", - "size": "628MB" - }, - { - "name": "kijai/MoGe_ViT_L_fp16.safetensors", - "type": "MoGe", - "base": "MoGe", - "save_path": "MoGe", - "description": "Safetensors versions of [a/https://github.com/microsoft/MoGe](https://github.com/microsoft/MoGe)", - "reference": "https://huggingface.co/Kijai/MoGe_safetensors", - "filename": "MoGe_ViT_L_fp16.safetensors", - "url": "https://huggingface.co/Kijai/MoGe_safetensors/resolve/main/MoGe_ViT_L_fp16.safetensors", - "size": "1.26GB" - }, - - { - "name": "LTX-Video 2B v0.9 Checkpoint", - "type": "checkpoint", - "base": "LTX-Video", - "save_path": "checkpoints/LTXV", - "description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched. Trained on a large-scale dataset of diverse videos, the model generates high-resolution videos with realistic and varied content.", - "reference": "https://huggingface.co/Lightricks/LTX-Video", - "filename": "ltx-video-2b-v0.9.safetensors", - "url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.safetensors", - "size": "9.37GB" - }, - { - "name": "LTX-Video 2B v0.9.1 Checkpoint", - "type": "checkpoint", - "base": "LTX-Video", - "save_path": "checkpoints/LTXV", - "description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched. Trained on a large-scale dataset of diverse videos, the model generates high-resolution videos with realistic and varied content.", - "reference": "https://huggingface.co/Lightricks/LTX-Video", - "filename": "ltx-video-2b-v0.9.1.safetensors", - "url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.1.safetensors", - "size": "5.72GB" - }, - - { - "name": "XLabs-AI/flux-canny-controlnet-v3.safetensors", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "xlabs/controlnets", - "description": "ControlNet checkpoints for FLUX.1-dev model by Black Forest Labs.", - "reference": "https://huggingface.co/XLabs-AI/flux-controlnet-collections", - "filename": "flux-canny-controlnet-v3.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-canny-controlnet-v3.safetensors", - "size": "1.49GB" - }, - { - "name": "XLabs-AI/flux-depth-controlnet-v3.safetensors", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "xlabs/controlnets", - "description": "ControlNet checkpoints for FLUX.1-dev model by Black Forest Labs.", - "reference": "https://huggingface.co/XLabs-AI/flux-controlnet-collections", - "filename": "flux-depth-controlnet-v3.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-depth-controlnet-v3.safetensors", - "size": "1.49GB" - }, - { - "name": "XLabs-AI/flux-hed-controlnet-v3.safetensors", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "xlabs/controlnets", - "description": "ControlNet checkpoints for FLUX.1-dev model by Black Forest Labs.", - "reference": "https://huggingface.co/XLabs-AI/flux-controlnet-collections", - "filename": "flux-hed-controlnet-v3.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-hed-controlnet-v3.safetensors", - "size": "1.49GB" - }, - - { - "name": "XLabs-AI/realism_lora.safetensors", - "type": "lora", - "base": "FLUX.1", - "save_path": "xlabs/loras", - "description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs", - "reference": "https://huggingface.co/XLabs-AI/flux-lora-collection", - "filename": "realism_lora.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/realism_lora.safetensors", - "size": "44.8MB" - }, - { - "name": "XLabs-AI/art_lora.safetensors", - "type": "lora", - "base": "FLUX.1", - "save_path": "xlabs/loras", - "description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs", - "reference": "https://huggingface.co/XLabs-AI/flux-lora-collection", - "filename": "art_lora.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/scenery_lora.safetensors", - "size": "44.8MB" - }, - { - "name": "XLabs-AI/mjv6_lora.safetensors", - "type": "lora", - "base": "FLUX.1", - "save_path": "xlabs/loras", - "description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs", - "reference": "https://huggingface.co/XLabs-AI/flux-lora-collection", - "filename": "mjv6_lora.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/mjv6_lora.safetensors", - "size": "44.8MB" - }, - - { - "name": "XLabs-AI/flux-ip-adapter", - "type": "lora", - "base": "FLUX.1", - "save_path": "xlabs/ipadapters", - "description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs", - "reference": "https://huggingface.co/XLabs-AI/flux-ip-adapter", - "filename": "ip_adapter.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-ip-adapter/resolve/main/ip_adapter.safetensors", - "size": "982MB" - } - ] -} diff --git a/custom_nodes/comfyui-manager/node_db/dev/custom-node-list.json b/custom_nodes/comfyui-manager/node_db/dev/custom-node-list.json deleted file mode 100644 index f6d768d256463cbab51ee16f3ee5493ac1b68d6d..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/dev/custom-node-list.json +++ /dev/null @@ -1,3880 +0,0 @@ -{ - "custom_nodes": [ - { - "author": "#NOTICE_1.13", - "title": "NOTICE: This channel is not the default channel.", - "reference": "https://github.com/ltdrdata/ComfyUI-Manager", - "files": [], - "install_type": "git-clone", - "description": "If you see this message, your ComfyUI-Manager is outdated.\nDev channel provides only the list of the developing nodes. If you want to find the complete node list, please go to the Default channel." - }, - - - - { - "author": "7BEII", - "title": "comfyui-promptbymood [WIP]", - "reference": "https://github.com/7BEII/Comfyui_PDuse", - "files": [ - "https://github.com/7BEII/Comfyui_PDuse" - ], - "install_type": "git-clone", - "description": "NODES:PD_groupfontsize unnify, PD_grownumber-JSON, PD_add or delete words, PD_Image Crop Location, PD_Image centerCrop, PD_GetImageSize\nNOTE: The files in the repo are not organized." - }, - { - "author": "RLW-Chars", - "title": "comfyui-promptbymood [WIP]", - "reference": "https://github.com/RLW-Chars/comfyui-promptbymood", - "files": [ - "https://github.com/RLW-Chars/comfyui-promptbymood" - ], - "install_type": "git-clone", - "description": "A plugin for ComfyUI to create random prompts.\nNOTE: The files in the repo are not organized." - }, - { - "author": "mohamedsobhi777", - "title": "ComfyUI-FramerComfy [WIP]", - "reference": "https://github.com/mohamedsobhi777/ComfyUI-FramerComfy", - "files": [ - "https://github.com/mohamedsobhi777/ComfyUI-FramerComfy" - ], - "install_type": "git-clone", - "description": "NODES: FramerComfy Input String/Number/Image/Float/Boolean/Image, ...\nNOTE: The files in the repo are not organized." - }, - { - "author": "naderzare", - "title": "comfyui-inodes", - "reference": "https://github.com/naderzare/comfyui-inodes", - "files": [ - "https://github.com/naderzare/comfyui-inodes" - ], - "install_type": "git-clone", - "description": "NODES: If-Else, Multiline Split, Azure AI API" - }, - { - "author": "sizzlebop", - "title": "ComfyUI LLM Prompt Enhancer [WIP]", - "reference": "https://github.com/sizzlebop/comfyui-llm-prompt-enhancer", - "files": [ - "https://github.com/sizzlebop/comfyui-llm-prompt-enhancer" - ], - "install_type": "git-clone", - "description": "A powerful custom node for ComfyUI that enhances your prompts using various Language Learning Models (LLMs). This node supports multiple LLM providers and offers various enhancement styles to help you create better, more detailed prompts for image generation." - }, - { - "author": "a-One-Fan", - "title": "ComfyUI-Blenderesque-Nodes [WIP]", - "reference": "https://github.com/a-One-Fan/ComfyUI-Blenderesque-Nodes", - "files": [ - "https://github.com/a-One-Fan/ComfyUI-Blenderesque-Nodes" - ], - "install_type": "git-clone", - "description": "Blender-like nodes for ComfyUI." - }, - { - "author": "yanhuifair", - "title": "comfyui-deepseek [WIP]", - "reference": "https://github.com/yanhuifair/comfyui-deepseek", - "files": [ - "https://github.com/yanhuifair/comfyui-deepseek" - ], - "install_type": "git-clone", - "description": "Implement deepseek API call [a/https://api-docs.deepseek.com/](Implement deepseek API call https://api-docs.deepseek.com/)\nNOTE: The files in the repo are not organized." - }, - { - "author": "807502278", - "title": "ComfyUI_TensorRT_Merge [WIP]", - "reference": "https://github.com/807502278/ComfyUI_TensorRT_Merge", - "files": [ - "https://github.com/807502278/ComfyUI_TensorRT_Merge" - ], - "install_type": "git-clone", - "description": "Non diffusion models supported by TensorRT, merged Comfyui plugin, added onnx automatic download and trt model conversion nodes." - }, - { - "author": "IfnotFr", - "title": "ComfyUI-Ifnot-Pack", - "reference": "https://github.com/IfnotFr/ComfyUI-Ifnot-Pack", - "files": [ - "https://github.com/IfnotFr/ComfyUI-Ifnot-Pack" - ], - "install_type": "git-clone", - "description": "NODES: Face Crop, [w/A pack of custom nodes used in my projects. Not intended to be used by other persons as the usage is not documented. But if something interests you in this repository, go for it !]" - }, - { - "author": "zmwv823", - "title": "ComfyUI-VideoDiffusion", - "reference": "https://github.com/zmwv823/ComfyUI-VideoDiffusion", - "files": [ - "https://github.com/zmwv823/ComfyUI-VideoDiffusion" - ], - "install_type": "git-clone", - "description": "[a/LatentSync](https://github.com/bytedance/LatentSync) and [a/Sonic](https://github.com/jixiaozhong/Sonic). [w/Just for study purpose. It's not for directly use, u should know how to fix issues.]" - }, - { - "author": "KihongK", - "title": "ComfyUI-RoysNodes [WIP]", - "reference": "https://github.com/KihongK/comfyui-roysnodes", - "files": [ - "https://github.com/KihongK/comfyui-roysnodes" - ], - "install_type": "git-clone", - "description": "WIP custom nodes for Creation of AI images & videos" - }, - { - "author": "catboxanon", - "title": "ComfyUI-Pixelsmith [WIP]", - "reference": "https://github.com/catboxanon/ComfyUI-Pixelsmith", - "files": [ - "https://github.com/catboxanon/ComfyUI-Pixelsmith" - ], - "install_type": "git-clone", - "description": "NODES: Pixelsmith" - }, - { - "author": "smthemex", - "title": "ComfyUI_MangaNinjia [WIP]", - "reference": "https://github.com/smthemex/ComfyUI_MangaNinjia", - "files": [ - "https://github.com/smthemex/ComfyUI_MangaNinjia" - ], - "install_type": "git-clone", - "description": "ComfyUI_MangaNinjia is a ComfyUI node of MangaNinja which is a Line Art Colorization with Precise Reference Following method.\nNOTE: invalid pyproject.toml file." - }, - { - "author": "hunterssl", - "title": "ComfyUI_SSLNodes", - "reference": "https://github.com/hunterssl/ComfyUI_SSLNodes", - "files": [ - "https://github.com/hunterssl/ComfyUI_SSLNodes" - ], - "install_type": "git-clone", - "description": "NODES: SSL Load Json, SSL Get Json Keys Count, SSL Load Checkpoint By Name, SSL Random Num In Loop, SSL Save Image Outside" - }, - { - "author": "ammahmoudi", - "title": "ComfyUI-Legendary-Nodes", - "reference": "https://github.com/ammahmoudi/ComfyUI-Legendary-Nodes", - "files": [ - "https://github.com/ammahmoudi/ComfyUI-Legendary-Nodes" - ], - "install_type": "git-clone", - "description": "NODES: Legendary Lora URL Loader, Legendary Lora URL Loader" - }, - { - "author": "yichengup", - "title": "Comfyui-NodeSpark", - "reference": "https://github.com/yichengup/Comfyui-NodeSpark", - "files": [ - "https://github.com/yichengup/Comfyui-NodeSpark" - ], - "install_type": "git-clone", - "description": "NODES: Image Circle Warp, Image Stretch, Image Wave Warp, Liquify Effect" - }, - { - "author": "kijai", - "title": "ComfyUI-VideoNoiseWarp [WIP]", - "reference": "https://github.com/kijai/ComfyUI-VideoNoiseWarp", - "files": [ - "https://github.com/kijai/ComfyUI-VideoNoiseWarp" - ], - "install_type": "git-clone", - "description": "ComfyUI node to create warped noise from vide\nNOTE:Raft optical flow model is automatically downloaded upon execution." - }, - { - "author": "muvich3n", - "title": "ComfyUI-Claude-I2T", - "reference": "https://github.com/muvich3n/ComfyUI-Claude-I2T", - "files": [ - "https://github.com/muvich3n/ComfyUI-Claude-I2T" - ], - "install_type": "git-clone", - "description": "NODES: Claude Image to Prompt Generator" - }, - { - "author": "maekawataiki", - "title": "ComfyUI-ALB-Login", - "reference": "https://github.com/maekawataiki/ComfyUI-ALB-Login", - "files": [ - "https://github.com/maekawataiki/ComfyUI-ALB-Login" - ], - "install_type": "git-clone", - "description": "Auth library to inspect token provided by ALB to protect ComfyUI." - }, - { - "author": "ArmandAlbert", - "title": "Kwai_font_comfyui", - "reference": "https://github.com/ArmandAlbert/Kwai_font_comfyui", - "files": [ - "https://github.com/ArmandAlbert/Kwai_font_comfyui" - ], - "install_type": "git-clone", - "description": "NODES: Kwaifont_Resnet50_Runner, Kwaifont_Resnet50_Loader, Kwaifont_Resnet101_Runner, Kwaifont_Resnet101_Loader, Kwaifont_Image_Cropper" - }, - { - "author": "SpatialDeploy", - "title": "ComfyUI-Voxels [WIP]", - "reference": "https://github.com/SpatialDeploy/ComfyUI-Voxels", - "files": [ - "https://github.com/SpatialDeploy/ComfyUI-Voxels" - ], - "install_type": "git-clone", - "description": "Tools for creating voxel based videos" - }, - { - "author": "Njbx", - "title": "ComfyUI-blockswap", - "reference": "https://github.com/Njbx/ComfyUI-blockswap", - "files": [ - "https://github.com/Njbx/ComfyUI-blockswap" - ], - "install_type": "git-clone", - "description": "NODES: Block Swap" - }, - { - "author": "PATATAJEC", - "title": "Patatajec-Nodes [WIP]", - "reference": "https://github.com/PATATAJEC/Patatajec-Nodes", - "files": [ - "https://github.com/PATATAJEC/Patatajec-Nodes" - ], - "install_type": "git-clone", - "description": "NODES: HyVid Switcher\nNOTE: The files in the repo are not organized." - }, - { - "author": "sourceful-official", - "title": "comfyui-sourceful-official", - "reference": "https://github.com/sourceful-official/comfyui-sourceful-official", - "files": [ - "https://github.com/sourceful-official/comfyui-sourceful-official" - ], - "description": "NODES: SourcefulOfficialComfyuiIncontextThreePanels, FalFluxLoraSourcefulOfficial, FalIcLightV2SourcefulOfficial", - "install_type": "git-clone" - }, - { - "author": "Alvaroeai", - "title": "ComfyUI-SunoAI-Mds", - "reference": "https://github.com/Alvaroeai/ComfyUI-SunoAI-Mds", - "files": [ - "https://github.com/Alvaroeai/ComfyUI-SunoAI-Mds" - ], - "install_type": "git-clone", - "description": "NODES: Suno Generate, Suno Download, Suno Proxy Generate, Suno Proxy Download" - }, - { - "author": "parmarjh", - "title": "ComfyUI-MochiWrapper-I2V [WIP]", - "reference": "https://github.com/parmarjh/ComfyUI-MochiWrapper-I2V", - "files": [ - "https://github.com/parmarjh/ComfyUI-MochiWrapper-I2V" - ], - "install_type": "git-clone", - "description": "ComfyUI wrapper nodes for [a/Mochi](https://github.com/genmoai/models) video generator" - }, - { - "author": "Symbiomatrix", - "title": "Comfyui-Sort-Files", - "reference": "https://github.com/Symbiomatrix/Comfyui-Sort-Files", - "files": [ - "https://github.com/Symbiomatrix/Comfyui-Sort-Files" - ], - "install_type": "git-clone", - "description": "Monkeypatch file sort to date modified or custom instead of lexicographic." - }, - { - "author": "x3bits", - "title": "ComfyUI-Power-Flow [UNSAFE]", - "reference": "https://github.com/x3bits/ComfyUI-Power-Flow", - "files": [ - "https://github.com/x3bits/ComfyUI-Power-Flow" - ], - "install_type": "git-clone", - "description": "A ComfyUI node package that introduces common programming logic to enhance the flexibility of ComfyUI workflows. It supports features such as function definition and execution, 'for' loops, 'while' loops, and Python code execution.\n[w/This extension allows the execution of arbitrary Python code from a workflow.]" - }, - { - "author": "EmilioPlumed", - "title": "ComfyUI-Math [WIP]", - "reference": "https://github.com/EmilioPlumed/ComfyUI-Math", - "files": [ - "https://github.com/EmilioPlumed/ComfyUI-Math" - ], - "install_type": "git-clone", - "description": "Custom nodes that take 2 float inputs and calculates greatest common denominator and least common multiple, returning them as ints.\nNOTE: The files in the repo are not organized." - }, - { - "author": "mliand", - "title": "ComfyUI-Calendar-Node [WIP]", - "reference": "https://github.com/mliand/ComfyUI-Calendar-Node", - "files": [ - "https://github.com/mliand/ComfyUI-Calendar-Node" - ], - "install_type": "git-clone", - "description": "A custom node for Comfyui to create a Calendar like grid\nNOTE: The files in the repo are not organized." - }, - { - "author": "phamngoctukts", - "title": "ComyUI-Tupham", - "reference": "https://github.com/phamngoctukts/ComyUI-Tupham", - "files": [ - "https://github.com/phamngoctukts/ComyUI-Tupham" - ], - "install_type": "git-clone", - "description": "NODES: Ghép Ảnh, Multi Prompt v2.0, Condition Upscale, Multi sampler, Run node selected" - }, - { - "author": "5x00", - "title": "ComfyUI-Prompt-Plus [WIP]", - "reference": "https://github.com/5x00/ComfyUI-Prompt-Plus", - "files": [ - "https://github.com/5x00/ComfyUI-Prompt-Plus" - ], - "install_type": "git-clone", - "description": "Prompt Plus is a collection of LLM and VLM nodes that make prompting easier for image and video generation.\nNOTE: The files in the repo are not organized." - }, - { - "author": "aria1th", - "title": "ComfyUI-CairoSVG", - "reference": "https://github.com/aria1th/ComfyUI-CairoSVG", - "files": [ - "https://github.com/aria1th/ComfyUI-CairoSVG" - ], - "install_type": "git-clone", - "description": "NODES: VectorizedUpscaleScaling, VectorizedUpscaleSize" - }, - { - "author": "gitmylo", - "title": "FlowNodes [WIP]", - "reference": "https://github.com/gitmylo/FlowNodes", - "files": [ - "https://github.com/gitmylo/FlowNodes" - ], - "install_type": "git-clone", - "description": "A ComfyUI node pack containing nodes for basic programming logic." - }, - { - "author": "chengzeyi", - "title": "Comfy-WaveSpeed [WIP]", - "reference": "https://github.com/chengzeyi/Comfy-WaveSpeed", - "files": [ - "https://github.com/chengzeyi/Comfy-WaveSpeed" - ], - "install_type": "git-clone", - "description": "The all in one inference optimization solution for ComfyUI, universal, flexible, and fast." - }, - { - "author": "zyd232", - "title": "ComfyUI-zyd232-Nodes", - "reference": "https://github.com/zyd232/ComfyUI-zyd232-Nodes", - "files": [ - "https://github.com/zyd232/ComfyUI-zyd232-Nodes" - ], - "install_type": "git-clone", - "description": "NODES: Image Pixels Compare" - }, - { - "author": "yanhuifair", - "title": "ComfyUI-FairLab", - "reference": "https://github.com/yanhuifair/ComfyUI-FairLab", - "files": [ - "https://github.com/yanhuifair/ComfyUI-FairLab" - ], - "install_type": "git-clone", - "description": "NODES: CLIP Text Encode Translated, Translate String, Load Image From Folder, Save String To Folder, Fix UTF-8 String, String Combine, String Field, Download Image, Save Images To Folder, Save Image To Folder, Image Resize" - }, - { - "author": "nomcycle", - "title": "ComfyUI_Cluster [WIP]", - "reference": "https://github.com/nomcycle/ComfyUI_Cluster", - "files": [ - "https://github.com/nomcycle/ComfyUI_Cluster" - ], - "install_type": "git-clone", - "description": "Very early W.I.P of clustered ComfyUI inference." - }, - { - "author": "waynepimpzhang", - "title": "FindBrightestSpot [WIP]", - "reference": "https://github.com/waynepimpzhang/comfyui-opencv-brightestspot", - "files": [ - "https://github.com/waynepimpzhang/comfyui-opencv-brightestspot" - ], - "install_type": "git-clone", - "description": "Analyze the image to find the x and y coordinates of the brightest point.\nNOTE: The files in the repo are not organized." - }, - { - "author": "power88", - "title": "ComfyUI-PDiD-Nodes [WIP]", - "reference": "https://github.com/power88/ComfyUI-PDiD-Nodes", - "files": [ - "https://github.com/power88/ComfyUI-PDiD-Nodes" - ], - "install_type": "git-clone", - "description": "NODES: Get Image Size, Check Character Tag, Nearest SDXL Resolution divided by 64, Get Image Main Color, Blend Images, List Operations, Make Image Gray.\nNOTE: not working" - }, - { - "author": "FinetunersAI", - "title": "ComfyUI Finetuners [WIP]", - "reference": "https://github.com/FinetunersAI/finetuners", - "files": [ - "https://github.com/FinetunersAI/finetuners" - ], - "install_type": "git-clone", - "description": "A collection of utility nodes for ComfyUI to enhance your workflow.\nNOTE: The files in the repo are not organized." - }, - { - "author": "sourceful-official", - "title": "ComfyUI_InstructPixToPixConditioningLatent [WIP]", - "reference": "https://github.com/sourceful-official/ComfyUI_InstructPixToPixConditioningLatent", - "files": [ - "https://github.com/sourceful-official/ComfyUI_InstructPixToPixConditioningLatent" - ], - "description": "ComfyUI-ComfyUI_InstructPixToPixConditioningLatent\nNOTE:invalid pyproject.toml", - "install_type": "git-clone" - }, - { - "author": "fritzprix", - "title": "ComfyUI-LLM-Utils [WIP]", - "reference": "https://github.com/fritzprix/ComfyUI-LLM-Utils", - "files": [ - "https://github.com/fritzprix/ComfyUI-LLM-Utils" - ], - "install_type": "git-clone", - "description": "A collection of utility nodes for ComfyUI focused on text and LLM-related operations\nNOTE: The files in the repo are not organized." - }, - { - "author": "ciga2011", - "title": "ComfyUI-AppGen [UNSAFE]", - "reference": "https://github.com/ciga2011/ComfyUI-AppGen", - "files": [ - "https://github.com/ciga2011/ComfyUI-AppGen" - ], - "install_type": "git-clone", - "description": "A ComfyUI node pack designed to generate and edit Single Page Applications (SPAs) using natural language.[w/This extension allows arbitrary JavaScript code to be executed through the execution of workflows.]" - }, - { - "author": "DraconicDragon", - "title": "ComfyUI e621 booru Toolkit", - "reference": "https://github.com/DraconicDragon/ComfyUI_e621_booru_toolkit", - "files": [ - "https://github.com/DraconicDragon/ComfyUI_e621_booru_toolkit" - ], - "install_type": "git-clone", - "description": "for now: just custom node(s) to fetch tags from a given danbooru (soon e621 too) post link\ncurrently only supports danbooru-style urls + api response formats\nthis repo is a rewrite of: [a/https://github.com/yffyhk/comfyui_auto_danbooru](https://github.com/yffyhk/comfyui_auto_danbooru)" - }, - { - "author": "Grey3016", - "title": "Save2Icon", - "reference": "https://github.com/Grey3016/Save2Icon", - "files": [ - "https://github.com/Grey3016/Save2Icon" - ], - "install_type": "git-clone", - "description": "NODES: Save2Icon" - }, - { - "author": "Chargeuk", - "title": "ComfyUI-vts-nodes [WIP]", - "reference": "https://github.com/Chargeuk/ComfyUI-vts-nodes", - "files": [ - "https://github.com/Chargeuk/ComfyUI-vts-nodes" - ], - "install_type": "git-clone", - "description": "NODES: Clean Text, Color Mask To Mask, Conditioning Set Batch Mask, Merge Delimited Text, Reduce Batch Size, Text To Batch Prompt, To Text, " - }, - { - "author": "ryanontheinside", - "title": "ComfyUI_YoloNasObjectDetection_Tensorrt [WIP]", - "reference": "https://github.com/ryanontheinside/ComfyUI_YoloNasObjectDetection_Tensorrt", - "files": [ - "https://github.com/ryanontheinside/ComfyUI_YoloNasObjectDetection_Tensorrt" - ], - "install_type": "git-clone", - "description": "ComfyUI YOLO NAS Object Detection with TensorRT" - }, - { - "author": "steelan9199", - "title": "ComfyUI-Teeth [UNSAFE]", - "reference": "https://github.com/steelan9199/ComfyUI-Teeth", - "files": [ - "https://github.com/steelan9199/ComfyUI-Teeth" - ], - "install_type": "git-clone", - "description": "Run Python code, Outline, List, Four-quadrant grid, Nine-square grid[w/This extension poses a risk of executing arbitrary commands through workflow execution. Please be cautious.]" - }, - { - "author": "aiden1020", - "title": "ComfyUI_Artcoder [WIP]", - "reference": "https://github.com/aiden1020/ComfyUI_Artcoder", - "files": [ - "https://github.com/aiden1020/ComfyUI_Artcoder" - ], - "install_type": "git-clone", - "description": "This project is a custom node for ComfyUI that uses [a/ArtCoder](https://arxiv.org/abs/2011.07815) [CVPR 2021] to refine videos generated by [a/AnimateDiff](https://arxiv.org/abs/2307.04725) [ICLR2024 Spotlight] or the other video. The node is to transform these videos into functional QR code videos that can be scanned.\nNOTE: The files in the repo are not organized." - }, - { - "author": "A4P7J1N7M05OT", - "title": "ComfyUI-ManualSigma", - "reference": "https://github.com/A4P7J1N7M05OT/ComfyUI-ManualSigma", - "files": [ - "https://github.com/A4P7J1N7M05OT/ComfyUI-ManualSigma" - ], - "install_type": "git-clone", - "description": "NODES: Manual Sigma" - }, - { - "author": "neverbiasu", - "title": "ComfyUI-StereoCrafter [WIP]", - "reference": "https://github.com/neverbiasu/ComfyUI-StereoCrafter", - "files": [ - "https://github.com/neverbiasu/ComfyUI-StereoCrafter" - ], - "install_type": "git-clone", - "description": "NODES: Depth Splatting Model Loader, Depth Splatting Node, Inpainting Inference Node" - }, - { - "author": "watarika", - "title": "ComfyUI-exit [UNSAFE]", - "reference": "https://github.com/watarika/ComfyUI-exit", - "files": [ - "https://github.com/watarika/ComfyUI-exit" - ], - "install_type": "git-clone", - "description": "Custom node to handle text.[w/This custom node includes a custom node that can terminate ComfyUI.]" - }, - { - "author": "watarika", - "title": "ComfyUI-Text-Utility [UNSAFE]", - "reference": "https://github.com/watarika/ComfyUI-Text-Utility", - "files": [ - "https://github.com/watarika/ComfyUI-Text-Utility" - ], - "install_type": "git-clone", - "description": "Custom node to handle text.[w/This node pack contains a custom node that poses a security risk by providing the ability to read text from arbitrary paths.]" - }, - { - "author": "mehbebe", - "title": "ComfyLoraGallery [WIP]", - "reference": "https://github.com/mehbebe/ComfyLoraGallery", - "files": [ - "https://github.com/mehbebe/ComfyLoraGallery" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that will provide a gallery style lora selector similar to the 'lora' tab in Automatic1111." - }, - { - "author": "karthikg-09", - "title": "ComfyUI-KG09 [WIP]", - "reference": "https://github.com/karthikg-09/ComfyUI-3ncrypt", - "files": [ - "https://github.com/karthikg-09/ComfyUI-3ncrypt" - ], - "install_type": "git-clone", - "description": "NODES: Save Image+[w/The web extension of this node pack modifies part of ComfyUI's asset files.]" - }, - { - "author": "AustinMroz", - "title": "ComfyUI-MinCache", - "id": "comfyui-mincache", - "reference": "https://github.com/AustinMroz/ComfyUI-MinCache", - "files": [ - "https://github.com/AustinMroz/ComfyUI-MinCache" - ], - "install_type": "git-clone", - "description": "Modifies execution to minimize RAM at the cost of performance" - }, - { - "author": "glamorfleet0i", - "title": "ComfyUI Firewall", - "reference": "https://github.com/glamorfleet0i/ComfyUI-Firewall", - "files": [ - "https://github.com/glamorfleet0i/ComfyUI-Firewall" - ], - "install_type": "git-clone", - "description": "A very basic firewall-like middleware that restricts access to your ComfyUI server based on a list of specified IP addresses. As this is configured as middleware, the firewall will restrict both the web UI and any API endpoints." - }, - { - "author": "warshanks", - "title": "Shank-Tools", - "reference": "https://github.com/warshanks/Shank-Tools", - "files": [ - "https://github.com/warshanks/Shank-Tools" - ], - "install_type": "git-clone", - "description": "NODES: Tile Calculator, Resolution Divider, Height & Width" - }, - { - "author": "BaronVonBoolean", - "title": "ComfyUI-FileOps [UNSAFE]", - "reference": "https://github.com/BaronVonBoolean/ComfyUI-FileOps", - "files": [ - "https://github.com/BaronVonBoolean/ComfyUI-FileOps" - ], - "install_type": "git-clone", - "description": "NODES: File Mv, File Path, File Dir.\n[w/This is dangerous as it provides the ability to manipulate arbitrary user files.]" - }, - { - "author": "scottmudge", - "title": "ComfyUI_BiscuitNodes", - "reference": "https://github.com/scottmudge/ComfyUI_BiscuitNodes", - "files": [ - "https://github.com/scottmudge/ComfyUI_BiscuitNodes" - ], - "install_type": "git-clone", - "description": "Load Image From Path Using File Selector" - }, - { - "author": "JissiChoi", - "title": "ComfyUI-Jissi-List [WIP]", - "reference": "https://github.com/JissiChoi/ComfyUI-Jissi-List", - "files": [ - "https://github.com/JissiChoi/ComfyUI-Jissi-List" - ], - "install_type": "git-clone", - "description": "Data List Management for ComfyUI\nNOTE: The files in the repo are not organized." - }, - { - "author": "Maxim-Dey", - "title": "ComfyUI-MS_Tools [WIP]", - "reference": "https://github.com/Maxim-Dey/ComfyUI-MaksiTools", - "files": [ - "https://github.com/Maxim-Dey/ComfyUI-MaksiTools" - ], - "install_type": "git-clone", - "description": "NODES: MS Time Measure NodeMaksiTools" - }, - { - "author": "jammyfu", - "title": "ComfyUI PaintingCoderUtils Nodes [WIP]", - "reference": "https://github.com/jammyfu/ComfyUI_PaintingCoderUtils", - "files": [ - "https://github.com/jammyfu/ComfyUI_PaintingCoderUtils" - ], - "install_type": "git-clone", - "description": "A collection of utility nodes designed for ComfyUI, offering convenient image processing tools.\nNOTE: The files in the repo are not organized.\nNOTE: The files in the repo are not organized." - }, - { - "author": "krich-cto", - "title": "ComfyUI Flow Control [UNSTABLE]", - "reference": "https://github.com/krich-cto/ComfyUI-Flow-Control", - "files": [ - "https://github.com/krich-cto/ComfyUI-Flow-Control" - ], - "install_type": "git-clone", - "description": "This is an Extension for ComfyUI. This project will help you control the flow logic via many controls.[w/Installing this custom node currently causes a conflict with the UnetLoaderGGUF of ComfyUI-GGUF.]" - }, - { - "author": "dihan", - "title": "ComfyUI Random Keypoints for InstantID [WIP]", - "reference": "https://github.com/dihan/comfyui-random-kps", - "files": [ - "https://github.com/dihan/comfyui-random-kps" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that generates random facial keypoints compatible with InstantID.\nNOTE: The files in the repo are not organized." - }, - { - "author": "emranemran", - "title": "ComfyUI-FasterLivePortrait", - "reference": "https://github.com/emranemran/ComfyUI-FasterLivePortrait", - "files": [ - "https://github.com/emranemran/ComfyUI-FasterLivePortrait" - ], - "install_type": "git-clone", - "description": "NODES: Load FasterLivePortrait Models, FasterLivePortrait Process" - }, - { - "author": "kandy", - "title": "ComfyUI-KAndy", - "reference": "https://github.com/kandy/ComfyUI-KAndy", - "files": [ - "https://github.com/kandy/ComfyUI-KAndy" - ], - "install_type": "git-clone", - "description": "NODES: Civit Prompt API, Load Image From Url, Civit Images API, KAndyNoiseCondition, KAndyImagesByCss" - }, - { - "author": "StartHua", - "title": "Comfyui_leffa", - "reference": "https://github.com/StartHua/Comfyui_leffa", - "files": [ - "https://github.com/StartHua/Comfyui_leffa" - ], - "install_type": "git-clone", - "description": "NODES: CXH_Leffa_Viton_Load, CXH_Leffa_Viton_Run" - }, - { - "author": "logtd", - "title": "ComfyUI-HunyuanLoom [WIP]", - "id": "comfyui-42lux", - "reference": "https://github.com/logtd/ComfyUI-HunyuanLoom", - "files": [ - "https://github.com/logtd/ComfyUI-HunyuanLoom" - ], - "install_type": "git-clone", - "description": "A set of nodes to edit videos using the Hunyuan Video model" - }, - { - "author": "jonnydolake", - "title": "ComfyUI-AIR-Nodes", - "reference": "https://github.com/jonnydolake/ComfyUI-AIR-Nodes", - "files": [ - "https://github.com/jonnydolake/ComfyUI-AIR-Nodes" - ], - "install_type": "git-clone", - "description": "NODES: String List To Prompt Schedule, Force Minimum Batch Size, Target Location (Crop), Target Location (Paste)" - }, - { - "author": "watarika", - "title": "ComfyUI-exit [UNSAFE]", - "reference": "https://github.com/watarika/ComfyUI-exit", - "files": [ - "https://github.com/watarika/ComfyUI-exit" - ], - "install_type": "git-clone", - "description": "A custom node that terminates ComfyUI after a specified number of seconds. Use this node if you want Google Colab to automatically terminate after mass generation. It is necessary to disconnect and delete the Google Colab runtime on the Notebook side." - }, - { - "author": "Eagle-CN", - "title": "ComfyUI-Addoor [UNSAFE]", - "reference": "https://github.com/Eagle-CN/ComfyUI-Addoor", - "files": [ - "https://github.com/Eagle-CN/ComfyUI-Addoor" - ], - "install_type": "git-clone", - "description": "NODES: AD_BatchImageLoadFromDir, AD_DeleteLocalAny, AD_TextListToString, AD_AnyFileList, AD_ZipSave, AD_ImageSaver, AD_FluxTrainStepMath, AD_TextSaver, AD_PromptReplace.\nNOTE: This node pack includes nodes that can delete arbitrary files." - }, - { - "author": "backearth1", - "title": "Comfyui-MiniMax-Video [WIP]", - "reference": "https://github.com/backearth1/Comfyui-MiniMax-Video", - "files": [ - "https://github.com/backearth1/Comfyui-MiniMax-Video" - ], - "install_type": "git-clone", - "description": "A ComfyUI extension that integrates MiniMax AI's image-to-video and text-to-video generation capabilities, allowing users to easily convert static images into dynamic videos.\nNOTE: The files in the repo are not organized." - }, - { - "author": "FinetunersAI", - "title": "Fast Group Link [WIP]", - "id": "fast-group-link", - "reference": "https://github.com/FinetunersAI/comfyui-fast-group-link", - "files": [ - "https://github.com/FinetunersAI/comfyui-fast-group-link" - ], - "install_type": "git-clone", - "description": "Link and control ComfyUI groups with a simple ON/OFF toggle. Control multiple groups at once with an easy-to-use interface.\nNOTE: The files in the repo are not organized." - }, - { - "author": "kijai", - "title": "ComfyUI-MMAudio", - "reference": "https://github.com/kijai/ComfyUI-MMAudio", - "files": [ - "https://github.com/kijai/ComfyUI-MMAudio" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use [a/MMAudio](https://github.com/hkchengrex/MMAudio)" - }, - { - "author": "kuschanow", - "title": "ComfyUI-SD-Slicer", - "reference": "https://github.com/kuschanow/ComfyUI-SD-Slicer", - "files": [ - "https://github.com/kuschanow/ComfyUI-SD-Slicer" - ], - "install_type": "git-clone", - "description": "NODES: Slicer" - }, - { - "author": "ralonsobeas", - "title": "ComfyUI-HDRConversion [WIP]", - "reference": "https://github.com/ralonsobeas/ComfyUI-HDRConversion", - "files": [ - "https://github.com/ralonsobeas/ComfyUI-HDRConversion" - ], - "install_type": "git-clone", - "description": "NODES: Generate HDR image" - }, - { - "author": "Matrix-King-Studio", - "title": "ComfyUI-MoviePy", - "reference": "https://github.com/Matrix-King-Studio/ComfyUI-MoviePy", - "files": [ - "https://github.com/Matrix-King-Studio/ComfyUI-MoviePy" - ], - "install_type": "git-clone", - "description": "NODES: Image Clip Node, Audio Duration Node, Save Video Node" - }, - { - "author": "oxysoft", - "title": "ComfyUI-uiapi", - "reference": "https://github.com/oxysoft/ComfyUI-uiapi", - "files": [ - "https://github.com/oxysoft/ComfyUI-uiapi" - ], - "install_type": "git-clone", - "description": "UIAPI is an intermediate and frontend plugin which allow communicating with the Comfy webui through server connection. This saves the need to export a workflow.json and instead directly sending a queue command to the frontend. This way, the user can experiment in realtime as they are running some professional industry or rendering software which uses UIAPI / ComfyUI as a backend. There is no way to switch seamlessly between UIAPI and regular server connection - though as of late summer 2023 it was inferior to use the server connection because the server would constantly unload models and start from scratch, and the schema of the workfow json was completely different and much less convenient, losing crucial information for efficient querying of nodes and assigning data dynamically." - }, - { - "author": "esciron", - "title": "ComfyUI-HunyuanVideoWrapper-Extended [WIP]", - "reference": "https://github.com/esciron/ComfyUI-HunyuanVideoWrapper-Extended", - "files": [ - "https://github.com/esciron/ComfyUI-HunyuanVideoWrapper-Extended" - ], - "install_type": "git-clone", - "description": "Extended ComfyUI wrapper nodes for [a/HunyuanVideo](https://github.com/Tencent/HunyuanVideo)" - }, - { - "author": "hotpot-killer", - "title": "ComfyUI_AlexNodes", - "reference": "https://github.com/hotpot-killer/ComfyUI_AlexNodes", - "files": [ - "https://github.com/hotpot-killer/ComfyUI_AlexNodes" - ], - "install_type": "git-clone", - "description": "NODES: InstructPG - editing images with text prompt, ...\nNOTE: The files in the repo are not organized." - }, - { - "author": "pschroedl", - "title": "ComfyUI-StreamDiffusion", - "reference": "https://github.com/pschroedl/ComfyUI-StreamDiffusion", - "files": [ - "https://github.com/pschroedl/ComfyUI-StreamDiffusion" - ], - "install_type": "git-clone", - "description": "NODES: StreamDiffusionConfig, StreamDiffusionAccelerationSampler, StreamDiffusionLoraLoader, StreamDiffusionAccelerationConfig, StreamDiffusionSimilarityFilterConfig, StreamDiffusionModelLoader, ..." - }, - { - "author": "c0ffymachyne", - "title": "ComfyUI Signal Processing [WIP]", - "reference": "https://github.com/c0ffymachyne/ComfyUI_SignalProcessing", - "files": [ - "https://github.com/c0ffymachyne/ComfyUI_SignalProcessing" - ], - "install_type": "git-clone", - "description": "This repo contains signal processing nodes for ComfyUI allowing for audio manipulation." - }, - { - "author": "Junst", - "title": "ComfyUI-PNG2SVG2PNG", - "reference": "https://github.com/Junst/ComfyUI-PNG2SVG2PNG", - "files": [ - "https://github.com/Junst/ComfyUI-PNG2SVG2PNG" - ], - "description": "NODES:PNG2SVG2PNG", - "install_type": "git-clone" - }, - { - "author": "animEEEmpire", - "title": "ComfyUI-Animemory-Loader", - "reference": "https://github.com/animEEEmpire/ComfyUI-Animemory-Loader", - "files": [ - "https://github.com/animEEEmpire/ComfyUI-Animemory-Loader" - ], - "install_type": "git-clone", - "description": "AniMemory-alpha Custom Node for ComfyUI" - }, - { - "author": "ShahFaisalWani", - "title": "ComfyUI-Mojen-Nodeset", - "reference": "https://github.com/ShahFaisalWani/ComfyUI-Mojen-Nodeset", - "files": [ - "https://github.com/ShahFaisalWani/ComfyUI-Mojen-Nodeset" - ], - "install_type": "git-clone", - "description": "A collection of powerful, versatile, and community-driven custom nodes for ComfyUI, designed to elevate AI workflows!" - }, - { - "author": "kijai", - "title": "ComfyUI-HunyuanVideoWrapper [WIP]", - "reference": "https://github.com/kijai/ComfyUI-HunyuanVideoWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-HunyuanVideoWrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI wrapper nodes for [a/HunyuanVideo](https://github.com/Tencent/HunyuanVideo)" - }, - { - "author": "grimli333", - "title": "ComfyUI_Grim", - "reference": "https://github.com/grimli333/ComfyUI_Grim", - "files": [ - "https://github.com/grimli333/ComfyUI_Grim" - ], - "install_type": "git-clone", - "description": "NODES: Generate a unique filename and folder name, Format Strings with Two Inputs" - }, - { - "author": "risunobushi", - "title": "ComfyUI_FocusMask", - "reference": "https://github.com/risunobushi/ComfyUI_FocusMask", - "files": [ - "https://github.com/risunobushi/ComfyUI_FocusMask" - ], - "install_type": "git-clone", - "description": "NODES: Extract Focus Mask" - }, - { - "author": "RicherdLee", - "title": "comfyui-oss-image-save [WIP]", - "reference": "https://github.com/RicherdLee/comfyui-oss-image-save", - "files": [ - "https://github.com/RicherdLee/comfyui-oss-image-save" - ], - "install_type": "git-clone", - "description": "NODES: SaveImageOSS." - }, - { - "author": "Matrix-King-Studio", - "title": "ComfyUI-MoviePy", - "reference": "https://github.com/Matrix-King-Studio/ComfyUI-MoviePy", - "files": [ - "https://github.com/Matrix-King-Studio/ComfyUI-MoviePy" - ], - "install_type": "git-clone", - "description": "NODES: Image Clip Node, Audio Duration Node, Save Video Node,..." - }, - { - "author": "Big Idea Technology", - "title": "ComfyUI-Movie-Tools [WIP]", - "reference": "https://github.com/Big-Idea-Technology/ComfyUI-Movie-Tools", - "files": [ - "https://github.com/Big-Idea-Technology/ComfyUI-Movie-Tools" - ], - "install_type": "git-clone", - "description": "Movie Tools is a set of custom nodes, designed to simplify saving and loading batches of images with enhanced functionality like subfolder management and batch image handling." - }, - { - "author": "ArthusLiang", - "title": "comfyui-face-remap [WIP]", - "reference": "https://github.com/ArthusLiang/comfyui-face-remap", - "files": [ - "https://github.com/ArthusLiang/comfyui-face-remap" - ], - "install_type": "git-clone", - "description": "NODES: FaceRemap\nNOTE: The files in the repo are not organized." - }, - { - "author": "trithemius", - "title": "ComfyUI-SmolVLM [WIP]", - "reference": "https://github.com/mamorett/ComfyUI-SmolVLM", - "files": [ - "https://github.com/mamorett/ComfyUI-SmolVLM" - ], - "install_type": "git-clone", - "description": "Nodes to use SmolVLM for image tagging and captioning.\nNOTE: The files in the repo are not organized." - }, - { - "author": "anze", - "title": "ComfyUI-OIDN [WIP]", - "reference": "https://github.com/Anze-/ComfyUI-OIDN", - "files": [ - "https://github.com/Anze-/ComfyUI-OIDN" - ], - "install_type": "git-clone", - "description": "ComyUI wrapper for Intel OIDN image denoising\nWARNING! : this is a development repo, usage in production environments is not advised! Bugs are to be expected." - }, - { - "author": "techzuhaib", - "title": "ComfyUI-CacheImageNode", - "reference": "https://github.com/techzuhaib/ComfyUI-CacheImageNode", - "files": [ - "https://github.com/techzuhaib/ComfyUI-CacheImageNode" - ], - "install_type": "git-clone", - "description": "NODES: CacheImageNode" - }, - { - "author": "hay86", - "title": "ComfyUI AceNodes [UNSAFE]", - "reference": "https://github.com/hay86/ComfyUI_AceNodes", - "files": [ - "https://github.com/hay86/ComfyUI_AceNodes" - ], - "install_type": "git-clone", - "description": "Some useful custom nodes that are not included in ComfyUI core yet.\nNOTE: Vulnerability discovered. Not being managed." - }, - { - "author": "dowands", - "title": "AddMaskForICLora", - "reference": "https://github.com/dowands/ComfyUI-AddMaskForICLora", - "files": [ - "https://github.com/dowands/ComfyUI-AddMaskForICLora" - ], - "install_type": "git-clone", - "description": "NODES: Add Mask For IC Lora x" - }, - { - "author": "exectails", - "title": "Scripting", - "id": "et_scripting [UNSAFE]", - "reference": "https://github.com/exectails/comfyui-et_scripting", - "files": [ - "https://github.com/exectails/comfyui-et_scripting" - ], - "install_type": "git-clone", - "description": "Nodes that can be used to write Python scripts directly on a node. Useful for quick prototyping and testing, at the cost of security.[w/This extension allows the execution of arbitrary Python code from a workflow.]" - }, - { - "author": "AIFSH", - "title": "UltralightDigitalHuman-ComfyUI", - "reference": "https://github.com/AIFSH/UltralightDigitalHuman-ComfyUI", - "files": [ - "https://github.com/AIFSH/UltralightDigitalHuman-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/Ultralight-Digital-Human](https://github.com/anliyuan/Ultralight-Digital-Human)\nNOTE: The files in the repo are not organized." - }, - { - "author": "vahidzxc", - "title": "ComfyUI-My-Handy-Nodes", - "reference": "https://github.com/vahidzxc/ComfyUI-My-Handy-Nodes", - "files": [ - "https://github.com/vahidzxc/ComfyUI-My-Handy-Nodes" - ], - "install_type": "git-clone", - "description": "NODES:VahCropImage" - }, - { - "author": "StartHua", - "title": "Comfyui_Flux_Style_Ctr [WIP]", - "reference": "https://github.com/StartHua/Comfyui_Flux_Style_Ctr", - "files": [ - "https://github.com/StartHua/Comfyui_Flux_Style_Ctr" - ], - "install_type": "git-clone", - "description": "NODES:CXH_StyleModelApply\nNOTE: The files in the repo are not organized." - }, - { - "author": "miragecoa", - "title": "ComfyUI-LLM-Evaluation [WIP]", - "reference": "https://github.com/miragecoa/ComfyUI-LLM-Evaluation", - "files": [ - "https://github.com/miragecoa/ComfyUI-LLM-Evaluation" - ], - "install_type": "git-clone", - "description": "NODES:Load File, Select Item by Index, Select Item by Key, JSONToListNode, MathOperationNode, F1ScoreNode, AccuracyNode, ..." - }, - { - "author": "WASasquatch", - "title": "ASTERR [UNSAFE]", - "id": "asterr", - "reference": "https://github.com/WASasquatch/ASTERR", - "files": [ - "https://github.com/WASasquatch/ASTERR" - ], - "install_type": "git-clone", - "description": "Abstract Syntax Trees Evaluated Restricted Run (ASTERR) is a Python Script executor for ComfyUI. [w/Warning:ASTERR runs Python Code from a Web Interface! It is highly recommended to run this in a closed-off environment, as it could have potential security risks.]" - }, - { - "author": "BenjaMITM", - "title": "ComfyUI_On_The_Fly_Wildcards [WIP]", - "reference": "https://github.com/BenjaMITM/ComfyUI_On_The_Fly_Wildcards", - "files": [ - "https://github.com/BenjaMITM/ComfyUI_On_The_Fly_Wildcards" - ], - "install_type": "git-clone", - "description": "NODES:Wildcard Creator, Wildcard Loader, Wildcard Selector, Display String.\nNOTE: The files in the repo are not organized." - }, - { - "author": "celll1", - "title": "cel_sampler [WIP]", - "reference": "https://github.com/celll1/cel_sampler", - "files": [ - "https://github.com/celll1/cel_sampler" - ], - "install_type": "git-clone", - "description": "NODES:Latent Value Tracker\nNOTE: The files in the repo are not organized." - }, - { - "author": "DataCTE", - "title": "ComfyUI-DataVoid-nodes [WIP]", - "reference": "https://github.com/DataCTE/ComfyUI-DataVoid-nodes", - "files": [ - "https://github.com/DataCTE/ComfyUI-DataVoid-nodes" - ], - "install_type": "git-clone", - "description": "A collection of custom nodes for ComfyUI focused on model merging and style adaptation.[w/It may cause a lot of node conflicts with comfyui_ipadapter_plus.]" - }, - { - "author": "minhtuannhn", - "title": "comfyui-gemini-studio [WIP]", - "reference": "https://github.com/minhtuannhn/comfyui-gemini-studio", - "files": [ - "https://github.com/minhtuannhn/comfyui-gemini-studio" - ], - "install_type": "git-clone", - "description": "comfyui-gemini-studio[w/This extension uses the legacy method of copying JS.]" - }, - { - "author": "artem-konevskikh", - "title": "ComfyUI Video Processing Nodes [WIP]", - "reference": "https://github.com/artem-konevskikh/comfyui-split-merge-video", - "files": [ - "https://github.com/artem-konevskikh/comfyui-split-merge-video" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI that add video splitting and merging capabilities with crossfade transitions." - }, - { - "author": "Poseidon-fan", - "title": "ComfyUI-fileCleaner [UNSAFE]", - "reference": "https://github.com/Poseidon-fan/ComfyUI-fileCleaner", - "files": [ - "https://github.com/Poseidon-fan/ComfyUI-fileCleaner" - ], - "install_type": "git-clone", - "description": "In production environments, images are usually saved on storage servers such as S3, rather than local folders. So the method of placing images in local folders using ComfyUI's native LoadImage and SaveImage nodes cannot be used as a deployment service method, but can only be used as a temporary storage place for images. This requires a way to delete images from the input and output folders.\nThis node is used to delete images from the input and output folders. It is recommended to use this node through api call in the backend after the image processing is completed.[w/Users can use the file deletion feature through the workflow.]" - }, - { - "author": "yorkane", - "title": "Comfy UI Robe Nodes [UNSAFE]", - "reference": "https://github.com/RobeSantoro/ComfyUI-RobeNodes", - "files": [ - "https://github.com/RobeSantoro/ComfyUI-RobeNodes" - ], - "install_type": "git-clone", - "description": "NODES: List Video Path Node, List Image Path Node\nThis is a collection of utility nodes for the ComfyUI stable diffusion client that provides enhanced file path handling capabilities.[w/Users will be able to access images from arbitrary paths through the workflow.]" - }, - { - "author": "Kimara.ai", - "title": "Advanced Watermarking Tools [WIP]", - "reference": "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks", - "files": [ - "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks" - ], - "install_type": "git-clone", - "description": "The KimaraAIWatermarker custom node allows you to apply watermark text and logo overlays to images (or a batch of images). It provides features like customizable watermark movement, rotation, and opacity. You can also apply both text and logo watermarks simultaneously, with fine-tuned control over positioning and scaling." - }, - { - "author": "Clybius", - "title": "ComfyUI-FluxDeCLIP", - "reference": "https://github.com/Clybius/ComfyUI-FluxDeCLIP", - "files": [ - "https://github.com/Clybius/ComfyUI-FluxDeCLIP" - ], - "install_type": "git-clone", - "description": "NODES:FluxDeCLIPCheckpointLoader" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-BiRefNet-ZHO [BROKEN]", - "id": "birefnet", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BiRefNet-ZHO", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BiRefNet-ZHO" - ], - "install_type": "git-clone", - "description": "Better version for [a/BiRefNet](https://github.com/zhengpeng7/birefnet) in ComfyUI | Both img and video.\nNOTE: You need to do [a/manual patch](https://github.com/ZHO-ZHO-ZHO/ComfyUI-BiRefNet-ZHO/issues/20)" - }, - { - "author": "trashgraphicard", - "title": "Albedo-Sampler-for-ComfyUI", - "reference": "https://github.com/trashgraphicard/Albedo-Sampler-for-ComfyUI", - "files": [ - "https://github.com/trashgraphicard/Albedo-Sampler-for-ComfyUI" - ], - "install_type": "git-clone", - "description": "NODES:Sample Image, Make Seamless Tile" - }, - { - "author": "Anze-", - "title": "ComfyUI_deepDeband [WIP]", - "reference": "https://github.com/Anze-/ComfyUI_deepDeband", - "files": [ - "https://github.com/Anze-/ComfyUI_deepDeband" - ], - "install_type": "git-clone", - "description": "ComyUI wrapper for RaymondLZhou/deepDeband image and video debanding\nNOTE: The files in the repo are not organized." - }, - { - "author": "bmad4ever", - "title": "Bmad Nodes [UNSAFE]", - "id": "bmad", - "reference": "https://github.com/bmad4ever/comfyui_bmad_nodes", - "files": [ - "https://github.com/bmad4ever/comfyui_bmad_nodes" - ], - "install_type": "git-clone", - "description": "This custom node offers the following functionalities: API support for setting up API requests, computer vision primarily for masking or collages, and general utility to streamline workflow setup or implement essential missing features.\nNOTE: Vulnerability discovered. Not being managed." - }, - { - "author": "suncat2ps", - "title": "ComfyUI-SaveImgNextcloud", - "reference": "https://github.com/suncat2ps/ComfyUI-SaveImgNextcloud", - "files": [ - "https://github.com/suncat2ps/ComfyUI-SaveImgNextcloud" - ], - "description": "NODES:Save Image to Nextcloud", - "install_type": "git-clone" - }, - { - "author": "KoreTeknology", - "title": "ComfyUI Production Nodes Pack [WIP]", - "reference": "https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack", - "files": [ - "https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack" - ], - "description": "This is set of custom nodes for your ComfyUI1 production setup. It offers the very basic nodes that are missing in the official 'Vanilla' package. It is a research Node based project on Artificial Intelligence using ComfyUI visual editor. This repository also includes a set of workflows to test the nodes.", - "install_type": "git-clone" - }, - { - "author": "DoctorDiffusion", - "title": "ComfyUI-Flashback", - "reference": "https://github.com/DoctorDiffusion/ComfyUI-Flashback", - "files": [ - "https://github.com/DoctorDiffusion/ComfyUI-Flashback" - ], - "description": "NODES:Latent Export, Latent Import, Latent Loop", - "install_type": "git-clone" - }, - { - "author": "sswink", - "title": "comfyui-lingshang", - "reference": "https://github.com/sswink/comfyui-lingshang", - "files": [ - "https://github.com/sswink/comfyui-lingshang" - ], - "description": "NODES:LS_SaveImageToOss, LS_LoadMaskFromUrl, LS_DigImageByMask, LS_ALY_Seg_Utils, LS_ALY_UploadToOssAndGetUrl, LS_GrowMaskWithBlur, LS_ALY_Seg_Body_Utils, LS_ALY_Seg_Common_Utils, LS_ALY_Seg_Clothes_Utils, LS_ALY_Seg_Body_Utils_Return_crop, ...", - "install_type": "git-clone" - }, - { - "author": "AICodeFactory", - "title": "ComfyUI-Viva", - "reference": "https://github.com/AICodeFactory/ComfyUI-Viva", - "files": [ - "https://github.com/AICodeFactory/ComfyUI-Viva" - ], - "description": "NODES:HttpTrigger (Viva), HttpTrigger (Image), HttpTrigger (Common)", - "install_type": "git-clone" - }, - { - "author": "LogicAI", - "title": "ComfyUI-MagicAI [UNSAFE]", - "reference": "https://github.com/lcolok/ComfyUI-MagicAI", - "files": [ - "https://github.com/lcolok/ComfyUI-MagicAI" - ], - "install_type": "git-clone", - "description": "NODES:Mask Size Calculator (MagicAI), Universal Mask Converter (MagicAI), Python Execution (MagicAI), Extract JSON From Text Node(MagicAI)\n[w/This extension allows the execution of arbitrary Python code from a workflow.]" - }, - { - "author": "T8star1984", - "title": "comfyui-purgevram", - "reference": "https://github.com/T8star1984/comfyui-purgevram", - "files": [ - "https://github.com/T8star1984/comfyui-purgevram" - ], - "install_type": "git-clone", - "description": "NODES:PurgeVRAM.\nCan be added after any node to clean up vram and memory" - }, - { - "author": "Laser-one", - "title": "ComfyUI-align-pose", - "reference": "https://github.com/Laser-one/ComfyUI-align-pose", - "files": [ - "https://github.com/Laser-one/ComfyUI-align-pose" - ], - "install_type": "git-clone", - "description": "NODES:align pose" - }, - { - "author": "chenbaiyujason", - "title": "ComfyUI_StepFun", - "reference": "https://github.com/chenbaiyujason/ComfyUI_StepFun", - "files": [ - "https://github.com/chenbaiyujason/ComfyUI_StepFun" - ], - "install_type": "git-clone", - "description": "To use stepfun's library, you need an official api that supports multimodal inputs such as video and pictures [a/https://platform.stepfun.com/request-restriction](https://platform.stepfun.com/request-restriction)" - }, - { - "author": "attashe", - "title": "ComfyUI-FluxRegionAttention [WIP]", - "reference": "https://github.com/attashe/ComfyUI-FluxRegionAttention", - "files": [ - "https://github.com/attashe/ComfyUI-FluxRegionAttention" - ], - "install_type": "git-clone", - "description": "Implement Region Attention for Flux model" - }, - { - "author": "aria1th", - "title": "ComfyUI-SkipCFGSigmas", - "reference": "https://github.com/aria1th/ComfyUI-SkipCFGSigmas", - "files": [ - "https://github.com/aria1th/ComfyUI-SkipCFGSigmas" - ], - "install_type": "git-clone", - "description": "NODES:CFGControl_SKIPCFG" - }, - { - "author": "Clelstyn", - "title": "ComfyUI-Inpaint_with_Detailer", - "reference": "https://github.com/Clelstyn/ComfyUI-Inpaint_with_Detailer", - "files": [ - "https://github.com/Clelstyn/ComfyUI-Inpaint_with_Detailer" - ], - "install_type": "git-clone", - "description": "NODES:Masked Resize Image, Paste Masked Image, Filter And Blur Mask" - }, - { - "author": "Looking-Glass", - "title": "LKG-ComfyUI", - "reference": "https://github.com/Looking-Glass/LKG-ComfyUI", - "files": [ - "https://github.com/Looking-Glass/LKG-ComfyUI" - ], - "install_type": "git-clone", - "description": "NODES:Side by Side Node, Bridge Preview Node, Load Folder, Scale Maintain Aspect Ratio Node, " - }, - { - "author": "xiaoyumu", - "title": "ComfyUI-XYNodes", - "reference": "https://github.com/xiaoyumu/ComfyUI-XYNodes", - "files": [ - "https://github.com/xiaoyumu/ComfyUI-XYNodes" - ], - "install_type": "git-clone", - "description": "Nodes:PrimitiveBBOX." - }, - { - "author": "ainanoha", - "title": "etm_comfyui_nodes", - "reference": "https://github.com/ainanoha/etm_comfyui_nodes", - "files": [ - "https://github.com/ainanoha/etm_comfyui_nodes" - ], - "install_type": "git-clone", - "description": "NODES:LETM Save Image, ETM Load Image From Local" - }, - { - "author": "oshtz", - "title": "ComfyUI-oshtz-nodes [WIP]", - "reference": "https://github.com/oshtz/ComfyUI-oshtz-nodes", - "files": [ - "https://github.com/oshtz/ComfyUI-oshtz-nodes" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI created for some of my workflows.\nLLM All-in-One Node, String Splitter Node, LoRA Switcher Node, Image Overlay Node" - }, - { - "author": "m-ai-studio", - "title": "mai-prompt-progress", - "reference": "https://github.com/m-ai-studio/mai-prompt-progress", - "files": [ - "https://github.com/m-ai-studio/mai-prompt-progress" - ], - "install_type": "git-clone", - "description": "ComfyUI extensions for sending prompt progress to webhook" - }, - { - "author": "neeltheninja", - "title": "ComfyUI-TempFileDeleter [UNSAFE]", - "reference": "https://github.com/neeltheninja/ComfyUI-TempFileDeleter", - "files": [ - "https://github.com/neeltheninja/ComfyUI-TempFileDeleter" - ], - "install_type": "git-clone", - "description": "This node is designed to streamline your workflow in ComfyUI by efficiently cleaning up temporary files on each run. This node takes no input. You can specify 'on' or 'off' in the node itself, or just bypass to not use use it.[w/This node can delete any files in the folder mentioned in 'folder_path' in the node. Be aware of this and change the folder path correctly before running any workflow with this node. I will NOT be responsible for wrongly deleted files because you didn't read this beforehand.]" - }, - { - "author": "kylegrover", - "title": "comfyui-python-cowboy [UNSAFE]", - "reference": "https://github.com/kylegrover/comfyui-python-cowboy", - "files": [ - "https://github.com/kylegrover/comfyui-python-cowboy" - ], - "install_type": "git-clone", - "description": "run python code in comfyui\nuses codemirror for nice syntax highlighting\nNOTE: based on ComfyUI-nidefawl[w/This node is an unsafe node that includes the capability to execute arbitrary python script.]" - }, - { - "author": "kijai", - "title": "ComfyUI-MochiWrapper [WIP]", - "reference": "https://github.com/kijai/ComfyUI-MochiWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-MochiWrapper" - ], - "install_type": "git-clone", - "description": "ComfyUI wrapper nodes for [a/Mochi](https://github.com/genmoai/models) video generator" - }, - { - "author": "kk8bit", - "title": "KayTool", - "reference": "https://github.com/kk8bit/KayTool", - "files": [ - "https://github.com/kk8bit/KayTool" - ], - "install_type": "git-clone", - "description": "KayTool is a custom node utility package developed for ComfyUI. I plan to add more features in the future." - }, - { - "author": "leadbreak", - "title": "Face Aging [WIP]", - "reference": "https://github.com/leadbreak/comfyui-faceaging", - "files": [ - "https://github.com/leadbreak/comfyui-faceaging" - ], - "install_type": "git-clone", - "description": "This is a comfyui custom node version of [a/Age Transformation](https://github.com/yuval-alaluf/SAM).\nNOTE: The files in the repo are not organized." - }, - { - "author": "downlifted", - "title": "ComfyUI_BWiZ_Nodes [WIP]", - "reference": "https://github.com/downlifted/ComfyUI_BWiZ_Nodes", - "files": [ - "https://github.com/downlifted/ComfyUI_BWiZ_Nodes" - ], - "install_type": "git-clone", - "description": "NODES:CaptainWebhook, CaptainWebhook-Email, CaptainWebhook-Push, BWIZ_AdvancedLoadImageBatch, BWIZ_ErrorDetector, BWIZ_HFRepoBatchLoader, BWIZ_NotificationSound.\nNOTE: The files in the repo are not organized." - }, - { - "author": "Poukpalaova", - "title": "ComfyUI-FRED-Nodes [WIP]", - "reference": "https://github.com/Poukpalaova/ComfyUI-FRED-Nodes", - "files": [ - "https://github.com/Poukpalaova/ComfyUI-FRED-Nodes" - ], - "install_type": "git-clone", - "description": "Multiple nodes that ease the process.\nNOTE: The files in the repo are not organized." - }, - { - "author": "blurymind", - "title": "cozy-fireplace [WIP]", - "reference": "https://github.com/blurymind/cozy-fireplace", - "files": [ - "https://github.com/blurymind/cozy-fireplace" - ], - "install_type": "git-clone", - "description": "Cozy fireplace is a ComfyUI workflow prompter that brings a localhost server frontend for existing workflows created in ComfyUi. Just place your favorite or lovingly crafted workflows in a folder and cozy fireplace will let you select and run any of them (export them as API type in comfyui) It's a cozy UI that scales all the way down to mobile phone devices - to let you prompt your beefy pc at home with your smartphone." - }, - { - "author": "lordwedggie", - "title": "xcpNodes [WIP]", - "reference": "https://github.com/lordwedggie/xcpNodes", - "files": [ - "https://github.com/lordwedggie/xcpNodes" - ], - "install_type": "git-clone", - "description": "Slider nodes based on Smirnov75's codes [a/https://github.com/Smirnov75/ComfyUI-mxToolkit](https://github.com/Smirnov75/ComfyUI-mxToolkit)\nNOTE: The files in the repo are not organized." - }, - { - "author": "kxh", - "title": "ComfyUI-ImageUpscaleWithModelMultipleTimes", - "reference": "https://github.com/kxh/ComfyUI-ImageUpscaleWithModelMultipleTimes", - "files": [ - "https://github.com/kxh/ComfyUI-ImageUpscaleWithModelMultipleTimes" - ], - "install_type": "git-clone", - "description": "Upscale image with model multiple times !" - }, - { - "author": "rouxianmantou", - "title": "comfyui-rxmt-nodes", - "reference": "https://github.com/rouxianmantou/comfyui-rxmt-nodes", - "files": [ - "https://github.com/rouxianmantou/comfyui-rxmt-nodes" - ], - "install_type": "git-clone", - "description": "NODES:Check Value Type" - }, - { - "author": "SirVeggie", - "title": "SirVeggie/Custom nodes for ComfyUI", - "reference": "https://github.com/SirVeggie/comfyui-sv-nodes", - "files": [ - "https://github.com/SirVeggie/comfyui-sv-nodes" - ], - "install_type": "git-clone", - "description": "NODES:SV-SimpleText, SV-PromptProcessing, SV-PromptProcessingRecursive, SV-PromptProcessingAdvanced, SV-PromptProcessingEncode,..." - }, - { - "author": "artisanalcomputing", - "title": "artcpu-custom-nodes", - "reference": "https://github.com/artisanalcomputing/ComfyUI-Custom-Nodes", - "files": [ - "https://github.com/artisanalcomputing/ComfyUI-Custom-Nodes" - ], - "install_type": "git-clone", - "description": "NODES:Random Video Mixer, Spotify Canvas Generator, Video Writer\ncustom comfyui nodes for audio/visual purposes# ComfyUI-Custom-Nodes" - }, - { - "author": "kxh", - "title": "ComfyUI-sam2", - "reference": "https://github.com/kxh/ComfyUI-sam2", - "files": [ - "https://github.com/kxh/ComfyUI-sam2" - ], - "install_type": "git-clone", - "description": "use semantic tag to segment any element in an image, output a mask.\nNOTE: Repo name is conflicting with neverbiasu/ComfyUI-SAM2" - }, - { - "author": "AIFSH", - "title": "UtilNodes-ComfyUI [WIP]", - "reference": "https://github.com/AIFSH/UtilNodes-ComfyUI", - "files": [ - "https://github.com/AIFSH/UtilNodes-ComfyUI" - ], - "install_type": "git-clone", - "description": "here put custom input nodes such as text,video...\nNOTE: The files in the repo are not organized." - }, - { - "author": "fablestudio", - "title": "ComfyUI-Showrunner-Utils", - "reference": "https://github.com/fablestudio/ComfyUI-Showrunner-Utils", - "files": [ - "https://github.com/fablestudio/ComfyUI-Showrunner-Utils" - ], - "install_type": "git-clone", - "description": "NODES:Align Face, Generate Timestamp" - }, - { - "author": "monate0615", - "title": "ComfyUI-Simple-Image-Tools [WIP]", - "reference": "https://github.com/monate0615/ComfyUI-Simple-Image-Tools", - "files": [ - "https://github.com/monate0615/ComfyUI-Simple-Image-Tools" - ], - "install_type": "git-clone", - "description": "Get mask from image based on alpha (Get Mask From Alpha)\nNOTE: The files in the repo are not organized." - }, - { - "author": "galoreware", - "title": "ComfyUI-GaloreNodes [WIP]", - "reference": "https://github.com/galoreware/ComfyUI-GaloreNodes", - "files": [ - "https://github.com/galoreware/ComfyUI-GaloreNodes" - ], - "install_type": "git-clone", - "description": "Color and Image related nodes for ComfyUI." - }, - { - "author": "lgldlk", - "title": "ComfyUI-img-tiler", - "reference": "https://github.com/lgldlk/ComfyUI-img-tiler", - "files": [ - "https://github.com/lgldlk/ComfyUI-img-tiler" - ], - "install_type": "git-clone", - "description": "NODES:TilerImage, TilerSelect, TileMaker, ImageListTileMaker" - }, - { - "author": "SSsnap", - "title": "Snap Processing for Comfyui", - "reference": "https://github.com/SS-snap/ComfyUI-Snap_Processing", - "files": [ - "https://github.com/SS-snap/ComfyUI-Snap_Processing" - ], - "install_type": "git-clone", - "description": "for preprocessing images, presented in a visual way. It also calculates the corresponding image area." - }, - { - "author": "cwebbi1", - "title": "VoidCustomNodes", - "reference": "https://github.com/cwebbi1/VoidCustomNodes", - "files": [ - "https://github.com/cwebbi1/VoidCustomNodes" - ], - "install_type": "git-clone", - "description": "NODES:Prompt Parser, String Combiner" - }, - { - "author": "wilzamguerrero", - "title": "Comfyui-zZzZz [UNSAFE]", - "reference": "https://github.com/wilzamguerrero/Comfyui-zZzZz", - "files": [ - "https://github.com/wilzamguerrero/Comfyui-zZzZz" - ], - "install_type": "git-clone", - "description": "NODES:Download Z, Compress Z, Move Z, Delete Z, Rename Z, Create Z, Infinite Z, Share Screen Z" - }, - { - "author": "monate0615", - "title": "Affine Transform ComfyUI Node [WIP]", - "reference": "https://github.com/monate0615/ComfyUI-Affine-Transform", - "files": [ - "https://github.com/monate0615/ComfyUI-Affine-Transform" - ], - "install_type": "git-clone", - "description": "This node output the image that are transfromed by affine matrix what is made according to 4 points of output.\nNOTE: The files in the repo are not organized." - }, - { - "author": "ComfyUI-Workflow", - "title": "ComfyUI OpenAI Nodes", - "reference": "https://github.com/ComfyUI-Workflow/ComfyUI-OpenAI", - "files": [ - "https://github.com/ComfyUI-Workflow/ComfyUI-OpenAI" - ], - "install_type": "git-clone", - "description": "By utilizing OpenAI's powerful vision models, this node enables you to incorporate state-of-the-art image understanding into your ComfyUI projects with minimal setup." - }, - { - "author": "ruka-game", - "title": "ComfyUI RukaLib [WIP]", - "reference": "https://github.com/ruka-game/rukalib_comfyui", - "files": [ - "https://github.com/ruka-game/rukalib_comfyui" - ], - "install_type": "git-clone", - "description": "NODES: Ruka Prompt Enhancer, Ruka Debug Probe.\nMy utilities for comfy (WIP / ollama is required for LLM nodes)" - }, - { - "author": "MythicalChu", - "title": "ComfyUI-APG_ImYourCFGNow", - "reference": "https://github.com/MythicalChu/ComfyUI-APG_ImYourCFGNow", - "files": [ - "https://github.com/MythicalChu/ComfyUI-APG_ImYourCFGNow" - ], - "install_type": "git-clone", - "description": "Use this node like a RescaleCFG node, ... modelIn -> ThisNode -> ModelOut ... -> KSampler\n'scale' acts like your CFG, your CFG doesn't do anything anymore white this node is active. See paper [a/https://arxiv.org/pdf/2410.02416](https://arxiv.org/pdf/2410.02416) for instructions about the other parameters. (Pages 20-21)" - }, - { - "author": "okg21", - "title": "VLLMVisionChatNode", - "reference": "https://github.com/okg21/VLLMVisionChatNode", - "files": [ - "https://raw.githubusercontent.com/okg21/VLLMVisionChatNode/refs/heads/main/VLLMVisionChatNode.py" - ], - "pip": ["openai", "numpy"], - "install_type": "copy", - "description": "This platform extension provides ZhipuAI nodes, enabling you to configure a workflow for online video generation." - }, - { - "author": "HavocsCall", - "title": "comfyui_HavocsCall_Custom_Nodes", - "reference": "https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes", - "files": [ - "https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes" - ], - "install_type": "git-clone", - "description": "NODES:Prompt Combiner, Sampler Config, Text Box, Int to Float, Clip Switch, Conditioning Switch, Image Switch, Latent Switch, Model Switch, String Switch, VAE Switch" - }, - { - "author": "mfg637", - "title": "ComfyUI-ScheduledGuider-Ext", - "reference": "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext", - "files": [ - "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext" - ], - "install_type": "git-clone", - "description": "NODES:SheduledCFGGuider, CosineScheduler, InvertSigmas, ConcatSigmas." - }, - { - "author": "netanelben", - "title": "comfyui-photobooth-customnode", - "reference": "https://github.com/netanelben/comfyui-photobooth-customnode", - "files": [ - "https://github.com/netanelben/comfyui-photobooth-customnode" - ], - "install_type": "git-clone", - "description": "comfyui-photobooth-customnode" - }, - { - "author": "netanelben", - "title": "comfyui-text2image-customnode", - "reference": "https://github.com/netanelben/comfyui-text2image-customnode", - "files": [ - "https://github.com/netanelben/comfyui-text2image-customnode" - ], - "install_type": "git-clone", - "description": "comfyui-text2image-customnode" - }, - { - "author": "netanelben", - "title": "comfyui-camera2image-customnode", - "reference": "https://github.com/netanelben/comfyui-camera2image-customnode", - "files": [ - "https://github.com/netanelben/comfyui-camera2image-customnode" - ], - "install_type": "git-clone", - "description": "comfyui-camera2image-customnode" - }, - { - "author": "netanelben", - "title": "comfyui-image2image-customnode", - "reference": "https://github.com/netanelben/comfyui-image2image-customnode", - "files": [ - "https://github.com/netanelben/comfyui-image2image-customnode" - ], - "install_type": "git-clone", - "description": "comfyui-image2image-customnode" - }, - { - "author": "JayLyu", - "title": "ComfyUI_BaiKong_Node", - "id": "baikong", - "reference": "https://github.com/JayLyu/ComfyUI_BaiKong_Node", - "files": [ - "https://github.com/JayLyu/ComfyUI_BaiKong_Node" - ], - "install_type": "git-clone", - "description": "Nodes for advanced color manipulation and image processing: BK Img To Color, BK Color Selector, BK Color Contrast, BK Color Limit, BK Color Luminance, BK Gradient Image, and BK Image Aspect Filter.\n[w/requirements.txt is broken.]" - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI-FreeMemory", - "reference": "https://github.com/ShmuelRonen/ComfyUI-FreeMemory", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI-FreeMemory" - ], - "install_type": "git-clone", - "description": "ComfyUI-FreeMemory is a custom node extension for ComfyUI that provides advanced memory management capabilities within your image generation workflows." - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI Llama 3.1 [WIP]", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Llama-3-2", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Llama-3-2" - ], - "install_type": "git-clone", - "description": "Using Llama-3-1 in ComfyUI" - }, - { - "author": "netanelben", - "title": "comfyui-text2image-customnode [WIP]", - "reference": "https://github.com/netanelben/comfyui-text2image-customnode", - "files": [ - "https://github.com/netanelben/comfyui-text2image-customnode" - ], - "install_type": "git-clone", - "description": "text2image web extension" - }, - { - "author": "leeguandong", - "title": "ComfyUI_AliControlnetInpainting [WIP]", - "reference": "https://github.com/leeguandong/ComfyUI_AliControlnetInpainting", - "files": [ - "https://github.com/leeguandong/ComfyUI_AliControlnetInpainting" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes to use AliControlnetInpainting" - }, - { - "author": "jordancoult", - "title": "ComfyUI_HelpfulNodes", - "reference": "https://github.com/jordancoult/ComfyUI_HelpfulNodes", - "files": [ - "https://github.com/jordancoult/ComfyUI_HelpfulNodes" - ], - "install_type": "git-clone", - "description": "NODES: Prep Crop Around Keypoints" - }, - { - "author": "ashishsaini", - "title": "comfyui_segformer_b2_sleeves", - "reference": "https://github.com/ashishsaini/comfyui-segment-clothing-sleeves", - "files": [ - "https://github.com/ashishsaini/comfyui-segment-clothing-sleeves" - ], - "install_type": "git-clone", - "description": "NODES:segformer_b2_sleeves" - }, - { - "author": "io-club", - "title": "ComfyUI-LuminaNext [WIP]", - "reference": "https://github.com/io-club/ComfyUI-LuminaNext", - "files": [ - "https://github.com/io-club/ComfyUI-LuminaNext" - ], - "install_type": "git-clone", - "description": "NODES: GemmaClipLoader" - }, - { - "author": "shadowcz007", - "title": "Comfyui-EzAudio [WIP]", - "reference": "https://github.com/shadowcz007/Comfyui-EzAudio", - "files": [ - "https://github.com/shadowcz007/Comfyui-EzAudio" - ], - "install_type": "git-clone", - "description": "NODES: EZ Generate Audio, EZ Load Model\nNOTE: The files in the repo are not organized." - }, - { - "author": "neo0801", - "title": "my-comfy-node", - "reference": "https://github.com/neo0801/my-comfy-node", - "files": [ - "https://github.com/neo0801/my-comfy-node" - ], - "install_type": "git-clone", - "description": "NODES:Deep Mosaic Get Image Mosaic Mask, Deep Mosaic Get Video Mosaic Mask, Deep Mosaic Remove Image Mosaic, Deep Mosaic Remove Video Mosaic" - }, - { - "author": "nikkuexe", - "title": "List Data Helper Nodes", - "reference": "https://github.com/paulhoux/Smart-Prompting", - "files": [ - "https://github.com/paulhoux/Smart-Prompting" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI, allowing you to more easily manipulate text and create good prompts.[w/The use of outdated front extension techniques results in remnants being left behind during uninstallation.]" - }, - { - "author": "nikkuexe", - "title": "List Data Helper Nodes", - "reference": "https://github.com/nikkuexe/ComfyUI-ListDataHelpers", - "files": [ - "https://github.com/nikkuexe/ComfyUI-ListDataHelpers" - ], - "install_type": "git-clone", - "description": "A set of custom nodes for handling lists in ComfyUI." - }, - { - "author": "Fannovel16", - "title": "ComfyUI-AppIO", - "reference": "https://github.com/Fannovel16/ComfyUI-AppIO", - "files": [ - "https://github.com/Fannovel16/ComfyUI-AppIO" - ], - "install_type": "git-clone", - "description": "NODES:AppIO_StringInput, AppIO_ImageInput, AppIO_StringOutput, AppIO_ImageOutput" - }, - { - "author": "SoftMeng", - "title": "ComfyUI-PIL", - "reference": "https://github.com/SoftMeng/ComfyUI-PIL", - "files": [ - "https://github.com/SoftMeng/ComfyUI-PIL" - ], - "install_type": "git-clone", - "description": "PIL Nodes" - }, - { - "author": "seancheung", - "title": "comfyui-creative-nodes", - "reference": "https://github.com/seancheung/comfyui-creative-nodes", - "files": [ - "https://github.com/seancheung/comfyui-creative-nodes" - ], - "install_type": "git-clone", - "description": "NODES:Stop Flow, Skip From Flow, Skip To Flow, Resolution Selector, ResolutionXL Selector" - }, - { - "author": "AlexXi19", - "title": "ComfyUI-OpenAINode", - "reference": "https://github.com/AlexXi19/ComfyUI-OpenAINode", - "files": [ - "https://github.com/AlexXi19/ComfyUI-OpenAINode" - ], - "install_type": "git-clone", - "description": "ComfyUI-OpenAINode is a user-friendly node that serves as an interface to the OpenAI Models.[w/Repo name conflict with Electrofried/ComfyUI-OpenAINode]" - }, - { - "author": "hgabha", - "title": "WWAA-CustomNodes", - "reference": "https://github.com/hgabha/WWAA-CustomNodes", - "files": [ - "https://github.com/hgabha/WWAA-CustomNodes" - ], - "install_type": "git-clone", - "description": "Custom Nodes for ComfyUI made by the team at [a/WeirdWonderfulAI.Art](https://weirdwonderfulai.art/). Line Count, Join String, Dither Image, Image Batch Loader" - }, - { - "author": "IgPoly", - "title": "ComfyUI-igTools", - "reference": "https://github.com/IgPoly/ComfyUI-igTools", - "files": [ - "https://github.com/IgPoly/ComfyUI-igTools" - ], - "install_type": "git-clone", - "description": "NODES:IGT Simple Tiles Calc" - }, - { - "author": "Ryota", - "title": "Ryota's Nodes", - "reference": "https://github.com/lichenhao/Comfyui_Ryota", - "files": [ - "https://github.com/lichenhao/Comfyui_Ryota" - ], - "install_type": "git-clone", - "description": "NODES:CombineTexts, FontLoader, DrawText, TxtFileLoader, SaveTxtFile, SwitchModelClip, SwitchAnyInputs, Reroute2, Reroute3" - }, - { - "author": "Soppatorsk", - "title": "comfyui_img_to_ascii [WIP]", - "reference": "https://github.com/Soppatorsk/comfyui_img_to_ascii", - "files": [ - "https://github.com/Soppatorsk/comfyui_img_to_ascii" - ], - "install_type": "git-clone", - "description": "Basic functionality for converting an image to ASCII art returned as a png image based on [a/ascii_magic](https://github.com/LeandroBarone/python-ascii_magic)" - }, - { - "author": "AIFSH", - "title": "HivisionIDPhotos-ComfyUI", - "reference": "https://github.com/AIFSH/HivisionIDPhotos-ComfyUI", - "files": [ - "https://github.com/AIFSH/HivisionIDPhotos-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/HivisionIDPhotos](https://github.com/Zeyi-Lin/HivisionIDPhotos).\nNOTE: Unsuitable for international users" - }, - { - "author": "lu64k", - "title": "SK-Nodes", - "reference": "https://github.com/lu64k/SK-Nodes", - "files": [ - "https://github.com/lu64k/SK-Nodes" - ], - "install_type": "git-clone", - "description": "NODES:image select, Load AnyLLM, Ask LLM, OpenAI DAlle Node, SK Text_String, SK Random File Name" - }, - { - "author": "Lilien86", - "title": "lauger NodePack for ComfyUI [WIP]", - "reference": "https://github.com/Lilien86/Comfyui_Lilien", - "files": [ - "https://github.com/Lilien86/Comfyui_Lilien" - ], - "install_type": "git-clone", - "description": "Hey everyone it's my Custom ComfyUI Nodes Pack repository! This project contains a collection of custom nodes designed to extend the functionality of ComfyUI. These nodes offer capabilities and new creative possibilities, especially in the realms of latent space manipulation and interpolation.\nNOTE: The files in the repo are not organized." - }, - { - "author": "haodman", - "title": "ComfyUI_Rain", - "reference": "https://github.com/haodman/ComfyUI_Rain", - "files": [ - "https://github.com/haodman/ComfyUI_Rain" - ], - "install_type": "git-clone", - "description": "NODES:Rain_ValueSwitch, Rain_Math, Rain_IntToFloat, Rain_ImageSize." - }, - { - "author": "bananasss00", - "title": "Comfyui-PyExec [UNSAFE]", - "reference": "https://github.com/bananasss00/Comfyui-PyExec", - "files": [ - "https://github.com/bananasss00/Comfyui-PyExec" - ], - "install_type": "git-clone", - "description": "Nodes:PyExec.[w/This node allows access to arbitrary files through the workflow, which could pose a security threat.]" - }, - { - "author": "jgbrblmd", - "title": "ComfyUI-ComfyFluxSize [WIP]", - "reference": "https://github.com/jgbrblmd/ComfyUI-ComfyFluxSize", - "files": [ - "https://github.com/jgbrblmd/ComfyUI-ComfyFluxSize" - ], - "install_type": "git-clone", - "description": "Nodes:ComfyFlux Size\nNOTE: The files in the repo are not organized." - }, - { - "author": "yojimbodayne", - "title": "ComfyUI-Dropbox-API [WIP]", - "reference": "https://github.com/yojimbodayne/ComfyUI-Dropbox-API", - "files": [ - "https://github.com/yojimbodayne/ComfyUI-Dropbox-API" - ], - "install_type": "git-clone", - "description": "This custom node package for ComfyUI allows users to interact with Dropbox API, enabling image, text, and video uploads, downloads, and management directly from ComfyUI workflows.\nNOTE: The files in the repo are not organized." - }, - { - "author": "ilovejohnwhite", - "title": "Kolors Awesome Prompts [WIP]", - "reference": "https://github.com/ilovejohnwhite/Tracer", - "files": [ - "https://github.com/ilovejohnwhite/Tracer" - ], - "install_type": "git-clone", - "description": "Nodes:Image Load TTK, SuckerPunch, LinkMasterNode, PixelPerfectResolution, ImageGenResolutionFromImage, ImageGenResolutionFromLatent, HintImageEnchance\nNOTE: The files in the repo are not organized." - }, - { - "author": "shuanshtalon468uan", - "title": "ComfyUI-Rpg-Architect [WIP]", - "reference": "https://github.com/talon468/ComfyUI-Rpg-Architect", - "files": [ - "https://github.com/talon468/ComfyUI-Rpg-Architect" - ], - "install_type": "git-clone", - "description": "Custom Node for ComfyUI to create RPG Characters\nNOTE: The files in the repo are not organized." - }, - { - "author": "shuanshuan", - "title": "ComfyUI_CheckPointLoader_Ext [WIP]", - "reference": "https://github.com/shuanshuan/ComfyUI_CheckPointLoader_Ext", - "files": [ - "https://github.com/shuanshuan/ComfyUI_CheckPointLoader_Ext" - ], - "install_type": "git-clone", - "description": "NODES:Checkpoint Loader Ext" - }, - { - "author": "123jimin", - "title": "ComfyUI MobileForm [WIP]", - "reference": "https://github.com/123jimin/ComfyUI-MobileForm", - "files": [ - "https://github.com/123jimin/ComfyUI-MobileForm" - ], - "install_type": "git-clone", - "description": "MobileForm is an extension for ComfyUI, providing simple form for any workflows, suitable for use on mobile phones.[w/Currently MobileForm is in a PoC state; expect bugs and breaking changes.]" - }, - { - "author": "go-package-lab", - "title": "ComfyUI-Tools-Video-Combine [WIP]", - "reference": "https://github.com/go-package-lab/ComfyUI-Tools-Video-Combine", - "files": [ - "https://github.com/go-package-lab/ComfyUI-Tools-Video-Combine" - ], - "install_type": "git-clone", - "description": "NODES:LoadAudioUrl, VideoWatermark" - }, - { - "author": "zhongpei", - "title": "Comfyui_image2prompt", - "id": "img2prompt", - "reference": "https://github.com/zhongpei/Comfyui_image2prompt", - "files": [ - "https://github.com/zhongpei/Comfyui_image2prompt" - ], - "install_type": "git-clone", - "description": "Nodes:Image to Text, Loader Image to Text Model.[w/This custom node may break dependencies by reinstalling the torch package.]" - }, - { - "author": "APZmedia", - "title": "comfyui-textools [WIP]", - "reference": "https://github.com/APZmedia/comfyui-textools", - "files": [ - "https://github.com/APZmedia/comfyui-textools" - ], - "install_type": "git-clone", - "description": "ComfyUI-textools is a collection of custom nodes designed for use with ComfyUI. These nodes enhance text processing capabilities, including applying rich text overlays on images and cleaning file names for safe and consistent file management.\nNOTE: The files in the repo are not organized." - }, - { - "author": "shinich39", - "title": "comfyui-event-handler [USAFE]", - "reference": "https://github.com/shinich39/comfyui-event-handler", - "files": [ - "https://github.com/shinich39/comfyui-event-handler" - ], - "install_type": "git-clone", - "description": "Javascript code will run when an event fires. [w/This node allows you to execute arbitrary JavaScript code as input for the workflow.]" - }, - { - "author": "Comfy Org", - "title": "ComfyUI_devtools [WIP]", - "reference": "https://github.com/Comfy-Org/ComfyUI_devtools", - "files": [ - "https://github.com/Comfy-Org/ComfyUI_devtools" - ], - "install_type": "git-clone", - "description": "ComfyUI developer tools (Custom Node)" - }, - { - "author": "Sakura-nee", - "title": "ComfyUI_Save2Discord", - "reference": "https://github.com/Sakura-nee/ComfyUI_Save2Discord", - "files": [ - "https://github.com/Sakura-nee/ComfyUI_Save2Discord" - ], - "install_type": "git-clone", - "description": "Nodes:Send Generated Image To Discord Webhook.\nNOTE: The files in the repo are not organized." - }, - { - "author": "ThisModernDay", - "title": "ComfyUI Instructor Ollama", - "reference": "https://github.com/ThisModernDay/ComfyUI-InstructorOllama", - "files": [ - "https://github.com/ThisModernDay/ComfyUI-InstructorOllama" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI Nodes for interacting with Ollama using the Instructor. Library to provide structured output from your LLM. To use this properly, you would need a running Ollama server reachable from the host that is running ComfyUI.\nNOTE: The files in the repo are not organized, which may lead to update issues." - }, - { - "author": "gioferreira", - "title": "ComfyUI-Molde-Utils", - "reference": "https://github.com/gioferreira/ComfyUI-Molde-Utils", - "files": [ - "https://github.com/gioferreira/ComfyUI-Molde-Utils" - ], - "install_type": "git-clone", - "description": "ComfyUI-Molde-Utils is a utility library designed to provide various helper functions for working with UI elements. This project includes modules for handling bezier curves and color conversions.\nNOTE: The files in the repo are not organized, which may lead to update issues." - }, - { - "author": "kijai", - "title": "ComfyUI nodes for VEnhancer [WIP]", - "reference": "https://github.com/kijai/ComfyUI-VEnhancer", - "files": [ - "https://github.com/kijai/ComfyUI-VEnhancer" - ], - "install_type": "git-clone", - "description": "Original repo: [a/https://github.com/Vchitect/VEnhancer](https://github.com/Vchitect/VEnhancer)" - }, - { - "author": "jimstudt", - "title": "Jim's ComfyUI Nodes [WIP]", - "reference": "https://github.com/jimstudt/ComfyUI-Jims-Nodes", - "files": [ - "https://github.com/jimstudt/ComfyUI-Jims-Nodes" - ], - "install_type": "git-clone", - "description": "NODES: Zoom and Enhance Nodes, Text To String List, Choose String, Define Word, Lookup Word, Substitute Words, Dictionary to JSON, JSON file to Dictionary, JSON to Dictionary, Load Image And Info From Path, CubbyHack, Image to Solid Background" - }, - { - "author": "hananbeer", - "title": "node_dev - ComfyUI Node Development Helper", - "reference": "https://github.com/hananbeer/node_dev", - "files": [ - "https://github.com/hananbeer/node_dev" - ], - "install_type": "git-clone", - "description": "Browse to this endpoint to reload custom nodes for more streamlined development:\nhttp://127.0.0.1:8188/node_dev/reload/" - }, - { - "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]", - "reference": "https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4", - "files": [ - "https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4" - ], - "install_type": "git-clone", - "description": "A quickly written custom node that uses code from Forge to support the nf4 flux dev checkpoint and nf4 flux schnell checkpoint.\nRequires installing bitsandbytes.\nMake sure your ComfyUI is updated.\nThe node is: CheckpointLoaderNF4, just plug it in your flux workflow instead of the regular one.[w/NF4 checckpoint doesn't support LoRA.]" - }, - { - "author": "kijai", - "title": "ComfyUI-EasyAnimateWrapper [WIP]", - "reference": "https://github.com/kijai/ComfyUI-EasyAnimateWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-EasyAnimateWrapper" - ], - "install_type": "git-clone", - "description": "EasyAnimateWrapper for ComfyUI" - }, - { - "author": "logtd", - "title": "ComfyUI-Veevee [WIP]", - "reference": "https://github.com/logtd/ComfyUI-Veevee", - "files": [ - "https://github.com/logtd/ComfyUI-Veevee" - ], - "install_type": "git-clone", - "description": "A Video2Video framework for text2image models in ComfyUI. Supports SD1.5 and SDXL." - }, - { - "author": "IuvenisSapiens", - "title": "ComfyUI_MiniCPM-V-2_6-int4", - "id": "minicpm-v-2_6-int4", - "reference": "https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4", - "files": [ - "https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4" - ], - "install_type": "git-clone", - "description": "This is an implementation of [a/MiniCPM-V-2_6-int4](https://github.com/OpenBMB/MiniCPM-V) by [a/ComfyUI](https://github.com/comfyanonymous/ComfyUI), including support for text-based queries, video queries, single-image queries, and multi-image queries to generate captions or responses." - }, - { - "author": "chrisdreid", - "title": "ComfyUI_EnvAutopsyAPI [UNSAFE]", - "reference": "https://github.com/chrisdreid/ComfyUI_EnvAutopsyAPI", - "files": [ - "https://github.com/chrisdreid/ComfyUI_EnvAutopsyAPI" - ], - "install_type": "git-clone", - "description": "ComfyUI_EnvAutopsyAPI is a powerful debugging tool designed for ComfyUI that provides in-depth analysis of your environment and dependencies through an API interface. This tool allows you to inspect environment variables, pip packages, and dependency trees, making it easier to diagnose and resolve issues in your ComfyUI setup.[w/This tool may expose sensitive system information if used on a public server. MUST READ [a/THIS](https://github.com/chrisdreid/ComfyUI_EnvAutopsyAPI#%EF%B8%8F-warning-security-risk-%EF%B8%8F) before install.]" - }, - { - "author": "Futureversecom", - "title": "ComfyUI-JEN", - "reference": "https://github.com/futureversecom/ComfyUI-JEN", - "files": [ - "https://github.com/futureversecom/ComfyUI-JEN" - ], - "install_type": "git-clone", - "description": "Comfy UI custom nodes for JEN music generation powered by Futureverse" - }, - { - "author": "denislov", - "title": "Comfyui_AutoSurvey", - "reference": "https://github.com/denislov/Comfyui_AutoSurvey", - "files": [ - "https://github.com/denislov/Comfyui_AutoSurvey" - ], - "install_type": "git-clone", - "description": "Nodes:AutoSurvey, WriteOutline, WriteSection, ChatModel, QueryKnowledge, ManageDatabase, AddDoc2Knowledge" - }, - { - "author": "leoleelxh", - "title": "ComfyUI-MidjourneyNode-leoleexh", - "reference": "https://github.com/leoleelxh/ComfyUI-MidjourneyNode-leoleexh", - "files": [ - "https://github.com/leoleelxh/ComfyUI-MidjourneyNode-leoleexh" - ], - "install_type": "git-clone", - "description": "This node allows ComfyUI to easily integrate with Midjourney, utilizing the ultra-high quality of Midjourney and the powerful control of SD to provide more convenient capabilities for AIGC.\nNOTE: This node relies on the midjourney proxy project and requires API deployment in advance. For detailed installation, please refer to the instructions of the project. https://github.com/novicezk/midjourney-proxy" - }, - { - "author": "kijai", - "title": "ComfyUI-FollowYourEmojiWrapper [WIP]", - "reference": "https://github.com/kijai/ComfyUI-FollowYourEmojiWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-FollowYourEmojiWrapper" - ], - "install_type": "git-clone", - "description": "Original repo: [a/https://github.com/mayuelala/FollowYourEmoji](https://github.com/mayuelala/FollowYourEmoji)" - }, - { - "author": "haomole", - "title": "Comfyui-SadTalker", - "reference": "https://github.com/haomole/Comfyui-SadTalker", - "files": [ - "https://github.com/haomole/Comfyui-SadTalker" - ], - "install_type": "git-clone", - "description": "[a/SadTalker](https://github.com/OpenTalker/SadTalker) for ComfyUI" - }, - { - "author": "hotpizzatactics", - "title": "ComfyUI-WaterMark-Detector", - "id": "watermark-detector", - "reference": "https://github.com/hotpizzatactics/ComfyUI-WaterMark-Detector", - "files": [ - "https://github.com/hotpizzatactics/ComfyUI-WaterMark-Detector" - ], - "install_type": "git-clone", - "description": "Nodes:CLAHE Enhancement, High Pass Filter, Edge Detection, Combine Enhancements, Adaptive Thresholding, Morphological Operations, Gray Color Enhancement, Improved Gray Color Enhancement, Texture Enhancement, Denoising Filter, Flexible Combine Enhancements." - }, - { - "author": "AIFSH", - "title": "IMAGDressing-ComfyUI", - "id": "imagdressing", - "reference": "https://github.com/AIFSH/IMAGDressing-ComfyUI", - "files": [ - "https://github.com/AIFSH/IMAGDressing-ComfyUI" - ], - "install_type": "git-clone", - "description": "Nodes:IMAGDressingNode, TextNode" - }, - { - "author": "BetaDoggo", - "title": "ComfyUI-LogicGates", - "id": "logicgates", - "reference": "https://github.com/BetaDoggo/ComfyUI-LogicGates", - "files": [ - "https://github.com/BetaDoggo/ComfyUI-LogicGates" - ], - "install_type": "git-clone", - "description": "Binary Nodes, Byte Nodes, ..." - }, - { - "author": "shadowcz007", - "title": "comfyui-hydit", - "reference": "https://github.com/shadowcz007/comfyui-hydit-lowvram", - "files": [ - "https://github.com/shadowcz007/comfyui-hydit-lowvram" - ], - "install_type": "git-clone", - "description": "HunYuan Diffusers Nodes" - }, - { - "author": "walterFeng", - "title": "ComfyUI-Image-Utils", - "reference": "https://github.com/walterFeng/ComfyUI-Image-Utils", - "files":[ - "https://github.com/walterFeng/ComfyUI-Image-Utils" - ], - "install_type":"git-clone", - "description":"Nodes: Calculate Image Brightness" - }, - { - "author": "zml-ai", - "title": "comfyui-hydit", - "reference": "https://github.com/zml-ai/comfyui-hydit", - "files":[ - "https://github.com/zml-ai/comfyui-hydit" - ], - "install_type":"git-clone", - "description":"The ComfyUI code is under review in the official repository. Meanwhile, a temporary version is available below for immediate community use. We welcome users to try our workflow and appreciate any inquiries or suggestions." - }, - { - "author": "JichaoLiang", - "title": "Immortal_comfyUI", - "reference": "https://github.com/JichaoLiang/Immortal_comfyUI", - "files":[ - "https://github.com/JichaoLiang/Immortal_comfyUI" - ], - "install_type":"git-clone", - "description":"Nodes: NewNode, AppendNode, MergeNode, SetProperties, SaveToDirectory, ..." - }, - { - "author": "melMass", - "title": "ComfyUI-Lygia", - "id": "lygia", - "reference": "https://github.com/melMass/ComfyUI-Lygia", - "files": [ - "https://github.com/melMass/ComfyUI-Lygia" - ], - "install_type": "git-clone", - "description": "NODES: LygiaProgram, LygiaUniforms" - }, - { - "author": "SpaceWarpStudio", - "title": "ComfyUI_Remaker_FaceSwap", - "reference": "https://github.com/SpaceWarpStudio/ComfyUI_Remaker_FaceSwap", - "files": [ - "https://github.com/SpaceWarpStudio/ComfyUI_Remaker_FaceSwap" - ], - "install_type": "git-clone", - "description": "Nodes:Remaker Face Swap" - }, - { - "author": "VisionExp", - "title": "ve_custom_comfyui_nodes", - "reference": "https://github.com/VisionExp/ve_custom_comfyui_nodes", - "files": [ - "https://github.com/VisionExp/ve_custom_comfyui_nodes" - ], - "install_type": "git-clone", - "description": "Nodes:LoadImgFromInputUrl" - }, - { - "author": "StartHua", - "title": "Comfyui_CXH_CRM", - "id": "csdmt-cxh", - "reference": "https://github.com/StartHua/Comfyui_CSDMT_CXH", - "files": [ - "https://github.com/StartHua/Comfyui_CSDMT_CXH" - ], - "install_type": "git-clone", - "description": "Node:CSD_Makeup\nNOTE:You need to download [a/pre-trained model file](https://github.com/StartHua/Comfyui_CSDMT_CXH)." - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-AuraSR-ZHO", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AuraSR-ZHO", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AuraSR-ZHO" - ], - "install_type": "git-clone", - "description": "AuraSR in ComfyUI for img & video\n[w/If the custom_nodes path is not under ComfyUI, be careful as it may not install properly.]" - }, - { - "author": "tom-doerr", - "title": "DSPy Nodes [WIP]", - "reference": "https://github.com/tom-doerr/dspy_nodes", - "files": [ - "https://github.com/tom-doerr/dspy_nodes" - ], - "install_type": "git-clone", - "description": "This is an attempt to make all DSPy features available in ComfyUI. Using an UI to devlop DSPy programs should be way faster since it makes it easier to see what is happening and allows to quickly iterate on the DSPy program structure." - }, - { - "author": "Grant-CP", - "title": "ComfyUI-LivePortraitKJ-MPS", - "reference": "https://github.com/Grant-CP/ComfyUI-LivePortraitKJ-MPS", - "files": [ - "https://github.com/Grant-CP/ComfyUI-LivePortraitKJ-MPS" - ], - "install_type": "git-clone", - "description": "If you wish to incorporate these changes into your repo, feel free to open an issue and ask. The commits should be pretty clear, and I also label almost all changes with #HACK so a full text search will work too.\nPlease let me know if you decide to incorporate any of these changes into your LivePortrait implementation so I can direct people to you repository. I do not intend to maintain this repo.\nSome operations are simply not supported on MPS and I didn't rewrite them. Most of my changes are just to .cuda calls and that sort of thing. Many operations are still done on CPU, so don't expect awesome performance." - }, - { - "author": "thderoo", - "title": "_topfun_s_nodes", - "reference": "https://github.com/thderoo/ComfyUI-_topfun_s_nodes", - "files": [ - "https://github.com/thderoo/ComfyUI-_topfun_s_nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Conditioning Perturbation" - }, - { - "author": "willblaschko", - "title": "ComfyUI-Unload-Models", - "reference": "https://github.com/willblaschko/ComfyUI-Unload-Models", - "files": [ - "https://github.com/willblaschko/ComfyUI-Unload-Models" - ], - "install_type": "git-clone", - "description": "This repository provides developers with a way to better manage their ComfyUI model memory. It includes nodes that allow developers to either unload all models or unload one model at a time. These nodes are designed as pass-through nodes, so they can be used anywhere in the flow. The nodes can be found in the 'Unload Model' section.[w/These are massive hammers, and it could be possible to break things, please don't use them if you need finesse.]" - }, - { - "author": "AIFSH", - "title": "ComfyUI-OpenDIT [WIP]", - "id": "opendit", - "reference": "https://github.com/AIFSH/ComfyUI-OpenDIT", - "files": [ - "https://github.com/AIFSH/ComfyUI-OpenDIT" - ], - "install_type": "git-clone", - "description": "make [a/OpenDIT](https://github.com/NUS-HPC-AI-Lab/OpenDiT) avaliable in ComfyUI" - }, - { - "author": "alexisrolland", - "title": "alexisrolland/ComfyUI-AuraSR", - "id": "aurasr-alexisrolland", - "reference": "https://github.com/alexisrolland/ComfyUI-AuraSR", - "files": [ - "https://github.com/alexisrolland/ComfyUI-AuraSR" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI nodes to run [a/fal-ai/AuraSR](https://huggingface.co/fal-ai/AuraSR) model.[w/This node cannot be installed simultaneously with AIFSH/ComfyUI-AuraSR due to overlapping repository names.]" - }, - { - "author": "linhusyung", - "title": "ComfyUI Build and Train Your Network [WIP]", - "id": "cfgpp", - "reference": "https://github.com/linhusyung/comfyui-Build-and-train-your-network", - "files": [ - "https://github.com/linhusyung/comfyui-Build-and-train-your-network" - ], - "install_type": "git-clone", - "description": "Stable Diffusion is an image generation technique based on diffusion models. Its core idea involves simulating diffusion processes by iteratively adding noise and using neural networks to predict and remove the noise, thereby generating high-quality images. This approach is not limited to image generation; with appropriate network architecture and training data, it can be adapted for various other tasks. The application of neural networks extends beyond image generation. By adjusting network structures and loss functions, neural networks can also perform tasks such as classification and regression. This flexibility makes neural networks a powerful tool for handling a wide range of machine learning tasks. This project aims to expand custom neural network layers (such as linear layers, convolutional layers, etc.) within ComfyUI and provide simplified task training functionalities. Through this project, users can easily construct custom neural network layers and perform training in ComfyUI using a graphical interface." - }, - { - "author": "Fucci-Mateo", - "title": "ComfyUI-Airtable [WIP]", - "id": "airtable", - "reference": "https://github.com/Fucci-Mateo/ComfyUI-Airtable", - "files": [ - "https://github.com/Fucci-Mateo/ComfyUI-Airtable" - ], - "install_type": "git-clone", - "description": "A simple node to load image from local path or http url. You can find this node from 'image' category." - }, - { - "author": "majorsauce", - "title": "comfyui_indieTools [WIP]", - "id": "indie-tools", - "reference": "https://github.com/majorsauce/comfyui_indieTools", - "files": [ - "https://github.com/majorsauce/comfyui_indieTools" - ], - "install_type": "git-clone", - "description": "Nodes:[Indie] Cut by Mask, [Indie] Paste Image, [Indie] Local Scale, [Indie] Solidify, [Indie] Yolo Detector.[w/Install may fail due to invliad requirements.txt file]" - }, - { - "author": "AIFSH", - "title": "ComfyUI-ViViD", - "id": "vivid", - "reference": "https://github.com/AIFSH/ComfyUI-ViViD", - "files": [ - "https://github.com/AIFSH/ComfyUI-ViViD" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for ViViD" - }, - { - "author": "NeuralNotW0rk", - "title": "ComfyUI-Waveform-Extensions", - "reference": "https://github.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions", - "files": [ - "https://raw.githubusercontent.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/main/EXT_VariationUtils.py", - "https://raw.githubusercontent.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/main/EXT_AudioManipulation.py" - ], - "install_type": "copy", - "description": "Some additional audio utilites for use on top of Sample Diffusion ComfyUI Extension" - }, - { - "author": "nat-chan", - "title": "comfyui-paint", - "reference": "https://github.com/nat-chan/comfyui-paint", - "files": [ - "https://github.com/nat-chan/comfyui-paint" - ], - "install_type": "git-clone", - "description": "comfyui-paint\n[w/You need to clone submodule manually after clone. There is permission issue.]" - }, - { - "author": "prabinpebam", - "title": "anyPython [UNSAFE]", - "reference": "https://github.com/prabinpebam/anyPython", - "files": [ - "https://github.com/prabinpebam/anyPython" - ], - "install_type": "git-clone", - "description": "This node was inspired by AnyNode. I wanted to have a node where I can paste any python script and execute it. That way I can use this node in combination with a Custom node like the Ollama node that can generate the python code and feed into this node. This also makes it much easier to debug or modify the code iteratively. As of the current version, I've created separate nodes for no input, 1 input and 2 inputs. The input also currently takes only sting as input. Let me know in the discussion how you would use this node.\n[w/This extension allows the execution of arbitrary Python code from a workflow.]" - }, - { - "author": "kijai", - "title": "ComfyUI DiffSynth wrapper nodes", - "id": "diffsynth-wrapper", - "reference": "https://github.com/kijai/ComfyUI-DiffSynthWrapper", - "files": [ - "https://github.com/kijai/ComfyUI-DiffSynthWrapper" - ], - "install_type": "git-clone", - "description": "Currently only the new extended SVD model 'ExVideo' is supported.\nOriginal repo:[a/https://github.com/modelscope/DiffSynth-Studio](https://github.com/modelscope/DiffSynth-Studio)" - }, - { - "author": "AllenEdgarPoe", - "title": "ComfyUI-Xorbis-nodes [WIP]", - "id": "xorbis", - "reference": "https://github.com/AllenEdgarPoe/ComfyUI-Xorbis-nodes", - "files": [ - "https://github.com/AllenEdgarPoe/ComfyUI-Xorbis-nodes" - ], - "install_type": "git-clone", - "description": "This repository is for MuseumX Update. We use ComfyUI as our framework, and the nodes are built for my comfort.\nNOTE: The files in the repo are not organized." - }, - { - "author": "mikeymcfish", - "title": "LaserCutterFull and Deptherize Nodes", - "id": "fishtools", - "reference": "https://github.com/mikeymcfish/FishTools", - "files": [ - "https://github.com/mikeymcfish/FishTools" - ], - "install_type": "git-clone", - "description": "This repository contains two custom nodes, LaserCutterFull and Deptherize, designed for use in image processing workflows. The LaserCutterFull node processes input images to generate layers for laser cutting, while the Deptherize node converts SVG data into a depth map image." - }, - { - "author": "pzzmyc", - "title": "comfyui-sd3-simple-simpletuner", - "id": "simpletuner", - "reference": "https://github.com/pzzmyc/comfyui-sd3-simple-simpletuner", - "files": [ - "https://github.com/pzzmyc/comfyui-sd3-simple-simpletuner" - ], - "install_type": "git-clone", - "description": "Nodes:sd3 simple simpletuner by hhy." - }, - { - "author": "horidream", - "title": "ComfyUI-Horidream", - "id": "horidream", - "reference": "https://github.com/horidream/ComfyUI-Horidream", - "files": [ - "https://github.com/horidream/ComfyUI-Horidream" - ], - "install_type": "git-clone", - "description": "Nodes:Pass Through With Sound." - }, - { - "author": "kijai", - "title": "ComfyUI-DiffusersSD3Wrapper", - "id": "diffusers-sd3-wrapper", - "reference": "https://github.com/kijai/ComfyUI-DiffusersSD3Wrapper", - "files": [ - "https://github.com/kijai/ComfyUI-DiffusersSD3Wrapper" - ], - "install_type": "git-clone", - "description": "Nodes:Load SD3DiffusersPipeline, SD3 ControlNet Sampler" - }, - { - "author": "AustinMroz", - "title": "ComfyUI-SD3-Medium-CN-Diffusers [WIP]", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SD3-Medium-CN-Diffusers", - "files": [ - "https://github.com/AustinMroz/ComfyUI-WorkflowCheckpointing" - ], - "install_type": "git-clone", - "description": "ComfyUI SD3-Medium ControlNet (Diffusers)" - }, - { - "author": "redhottensors", - "title": "ComfyUI-ODE", - "id": "ode", - "reference": "https://github.com/redhottensors/ComfyUI-ODE", - "files": [ - "https://github.com/redhottensors/ComfyUI-ODE" - ], - "install_type": "git-clone", - "description": "ODE Solvers for ComfyUI\nThis node enables use of torchdiffeq ODE solvers with models. Intended for use with Stable Diffusion 3 and similar flow models." - }, - { - "author": "maruhidd", - "title": "Transparent Background for ComfyUI", - "id": "transparent-bg", - "reference": "https://github.com/maruhidd/ComfyUI_Transparent-Background", - "files": [ - "https://github.com/maruhidd/ComfyUI_Transparent-Background" - ], - "install_type": "git-clone", - "description": "Nodes:Remove Background, Fill Transparent" - }, - { - "author": "baicai99", - "title": "ComfyUI-FrameSkipping", - "id": "frame-skipping", - "reference": "https://github.com/baicai99/ComfyUI-FrameSkipping", - "files": [ - "https://github.com/baicai99/ComfyUI-FrameSkipping" - ], - "install_type": "git-clone", - "description": "This plugin can precisely control the rendering between frames, completing the synthesis of multiple frames in a single load. My homepage includes my attached workflow." - }, - { - "author": "ejektaflex", - "title": "ComfyUI - Ty", - "id": "ty-nodes", - "reference": "https://github.com/ejektaflex/ComfyUI-Ty", - "files": [ - "https://github.com/ejektaflex/ComfyUI-Ty" - ], - "install_type": "git-clone", - "description": "Nodes:Lora Block Weight Regex Loader" - }, - { - "author": "jtydhr88", - "title": "ComfyUI-Unique3D [WIP]", - "id": "unique3d", - "reference": "https://github.com/jtydhr88/ComfyUI-Unique3D", - "files": [ - "https://github.com/jtydhr88/ComfyUI-Unique3D" - ], - "install_type": "git-clone", - "description": "ComfyUI Unique3D is custom nodes that running [a/AiuniAI/Unique3D](https://github.com/AiuniAI/Unique3D) into ComfyUI." - }, - { - "author": "kycg", - "title": "comfyui-Kwtoolset", - "id": "kwtoolset", - "reference": "https://github.com/kycg/comfyui-Kwtoolset", - "files": [ - "https://github.com/kycg/comfyui-Kwtoolset" - ], - "install_type": "git-clone", - "description": "Nodes:KwtoolsetLoraLoaderwithpreview, KwtoolsetCheckpointLoaderwithpreview, KwtoolsetLoadCheckpointsBatch, KwtoolsetGrowMaskPlus, KwtoolsetGetHipMask, KwtoolsetGetHipMasktest, KwtoolsetGetImageSize, KWPositiveString, KWNagetiveString, KWanywhereString, KwtoolsetChangeOpenpose, ..." - }, - { - "author": "mashb1t", - "title": "ComfyUI mashb1t nodes", - "id": "mashb1t", - "reference": "https://github.com/mashb1t/comfyui-nodes-mashb1t", - "files": [ - "https://github.com/mashb1t/comfyui-nodes-mashb1t" - ], - "install_type": "git-clone", - "description": "This Python script is an optional add-on to the Comfy UI stable diffusion client." - }, - { - "author": "immersiveexperience", - "title": "ie-comfyui-color-nodes", - "reference": "https://github.com/immersiveexperience/ie-comfyui-color-nodes", - "files": [ - "https://github.com/immersiveexperience/ie-comfyui-color-nodes" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI nodes for simple color correction." - }, - { - "author": "LZpenguin", - "title": "ComfyUI-Text", - "id": "comfy-text", - "reference": "https://github.com/LZpenguin/ComfyUI-Text", - "files": [ - "https://github.com/LZpenguin/ComfyUI-Text" - ], - "install_type": "git-clone", - "description": "Nodes:Add_text_by_mask.[w/This custom node cannot be installed simultaneously as it has the same repository name as MarkoCa1/ComfyUI-Text.]" - }, - { - "author": "norgeous", - "title": "UI Builder [WIP]", - "id": "norgeous", - "reference": "https://github.com/norgeous/ComfyUI-UI-Builder", - "files": [ - "https://github.com/norgeous/ComfyUI-UI-Builder" - ], - "install_type": "git-clone", - "description": "Alternative configurable React UI overlay for Comfy UI." - }, - { - "author": "Shinsplat", - "title": "ComfyUI-Shinsplat [UNSAFE]", - "id": "shinsplat", - "reference": "https://github.com/Shinsplat/ComfyUI-Shinsplat", - "files": [ - "https://github.com/Shinsplat/ComfyUI-Shinsplat" - ], - "install_type": "git-clone", - "description": "Nodes: Clip Text Encode (Shinsplat), Clip Text Encode SDXL (Shinsplat), Lora Loader (Shinsplat).\n[w/This extension poses a risk of executing arbitrary commands through workflow execution. Please be cautious.]" - }, - { - "author": "hy134300", - "title": "comfyui-hydit", - "reference": "https://github.com/hy134300/comfyui-hydit", - "files": [ - "https://github.com/hy134300/comfyui-hydit" - ], - "install_type": "git-clone", - "description": "This repository contains a customized node and workflow designed specifically for HunYuan DIT. The official tests conducted on DDPM, DDIM, and DPMMS have consistently yielded results that align with those obtained through the Diffusers library. However, it's important to note that we cannot assure the consistency of results from other ComfyUI native samplers with the Diffusers inference. We cordially invite users to explore our workflow and are open to receiving any inquiries or suggestions you may have." - }, - { - "author": "corbin-hayden13", - "title": "ComfyUI-Better-Dimensions", - "id": "better-dim", - "reference": "https://github.com/corbin-hayden13/ComfyUI-Better-Dimensions", - "files": [ - "https://github.com/corbin-hayden13/ComfyUI-Better-Dimensions" - ], - "install_type": "git-clone", - "description": "Nodes:BetterImageDimensions, SDXLDimensions, PureRatio" - }, - { - "author": "endman100", - "title": "ComfyUI-augmentation", - "id": "augmentation", - "reference": "https://github.com/endman100/ComfyUI-augmentation", - "files": [ - "https://github.com/endman100/ComfyUI-augmentation" - ], - "install_type": "git-clone", - "description": "Nodes:RamdomFlipImage (endman100)" - }, - { - "author": "endman100", - "title": "ComfyUI Nodes: SaveConditioning and LoadConditioning", - "id": "save-load-conditioning", - "reference": "https://github.com/endman100/ComfyUI-SaveAndLoadPromptCondition", - "files": [ - "https://github.com/endman100/ComfyUI-SaveAndLoadPromptCondition" - ], - "install_type": "git-clone", - "description": "The SaveConditioning node is designed to save conditioning data to binary files. This is useful for storing and reusing conditioning information across different sessions or applications.\n[w/This node can only handle very limited conditioning at the text prompt level.]" - }, - { - "author": "marduk191", - "title": "comfyui-marnodes", - "id": "marnodes", - "reference": "https://github.com/marduk191/comfyui-marnodes", - "files": [ - "https://github.com/marduk191/comfyui-marnodes" - ], - "install_type": "git-clone", - "description": "Nodes:marduk191_workflow_settings" - }, - { - "author": "kijai", - "title": "ComfyUI-CV-VAE", - "id": "cv-vae", - "reference": "https://github.com/kijai/ComfyUI-CV-VAE", - "files": [ - "https://github.com/kijai/ComfyUI-CV-VAE" - ], - "install_type": "git-clone", - "description": "Nodes:CV_VAE_Load, CV_VAE_Encode, CV_VAE_Decode" - }, - { - "author": "GentlemanHu", - "title": "ComfyUI Notifier", - "id": "notifier", - "reference": "https://github.com/GentlemanHu/ComfyUI-Notifier", - "files": [ - "https://github.com/GentlemanHu/ComfyUI-Notifier" - ], - "install_type": "git-clone", - "description": "Nodes:GentlemanHu_Notifier" - }, - { - "author": "jimmm-ai", - "title": "TimeUi a ComfyUI Timeline Node System [WIP]", - "id": "timeline", - "reference": "https://github.com/jimmm-ai/TimeUi-a-ComfyUi-Timeline-Node", - "files": [ - "https://github.com/jimmm-ai/TimeUi-a-ComfyUi-Timeline-Node" - ], - "install_type": "git-clone", - "description": "I've been working on the UX/UI of a timeline custom node system for ComfyUI over the past two weeks. The goal is to create a timeline similar to video/animation editing tools, without relying on traditional timeframe code. You can effortlessly add, delete, or rearrange rows, providing a streamlined user experience." - }, - { - "author": "StartHua", - "title": "Comfyui_CXH_CRM", - "id": "cxh-crm", - "reference": "https://github.com/StartHua/Comfyui_CXH_CRM", - "files": [ - "https://github.com/StartHua/Comfyui_CXH_CRM" - ], - "install_type": "git-clone", - "description": "Nodes:CRM" - }, - { - "author": "comfypod", - "title": "ComfyUI-Comflow", - "id": "comflow", - "reference": "https://github.com/comfypod/ComfyUI-Comflow", - "files": [ - "https://github.com/comfypod/ComfyUI-Comflow" - ], - "install_type": "git-clone", - "description": "ComfyUI-Comflow." - }, - { - "author": "pamparamm", - "title": "ComfyUI-ppm", - "id": "comfyui-ppm", - "reference": "https://github.com/pamparamm/ComfyUI-ppm", - "files": [ - "https://github.com/pamparamm/ComfyUI-ppm" - ], - "install_type": "git-clone", - "description": "Fixed AttentionCouple/NegPip(negative weights in prompts), more CFG++ samplers, etc." - }, - { - "author": "FoundD-oka", - "title": "ComfyUI KISEKAE-OOTD", - "id": "kisekae-ootd", - "reference": "https://github.com/FoundD-oka/ComfyUI-kisekae-OOTD", - "files": [ - "https://github.com/FoundD-oka/ComfyUI-kisekae-OOTD" - ], - "install_type": "git-clone", - "description": "Nodes:LoadOOTDPipeline, LoadOOTDPipelineHub, LoadOOTDPipelineHub." - }, - { - "author": "bruce007lee", - "title": "comfyui-tiny-utils", - "id": "tiny-utils", - "reference": "https://github.com/bruce007lee/comfyui-tiny-utils", - "files": [ - "https://github.com/bruce007lee/comfyui-tiny-utils" - ], - "install_type": "git-clone", - "description": "Nodes:FaceAlign, FaceAlignImageProcess, FaceAlignMaskProcess, ImageFillColorByMask, CropImageByMask, LoadImageAdvance, ImageTransposeAdvance, ImageSAMMask" - }, - { - "author": "brycegoh", - "title": "brycegoh/comfyui-custom-nodes", - "reference": "https://github.com/brycegoh/comfyui-custom-nodes", - "files": [ - "https://github.com/brycegoh/comfyui-custom-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:MaskAreaComparisonSegment, FillMaskedArea, OCRAndMask, CombineTwoImageIntoOne" - }, - { - "author": "LykosAI", - "title": "ComfyUI Nodes for Inference.Core", - "id": "inference-core", - "reference": "https://github.com/LykosAI/ComfyUI-Inference-Core-Nodes", - "files": [ - "https://github.com/LykosAI/ComfyUI-Inference-Core-Nodes" - ], - "install_type": "git-clone", - "description": "Primary Nodes for Inference.Core and Stability Matrix. With a focus on not impacting startup performance and using fully qualified Node names. [w/This custom node is likely to conflict with many other nodes.]" - }, - { - "author": "tracerstar", - "title": "comfyui-p5js-node", - "id": "p5js", - "reference": "https://github.com/tracerstar/comfyui-p5js-node", - "files": [ - "https://github.com/tracerstar/comfyui-p5js-node" - ], - "install_type": "git-clone", - "description": "A simple proof of concept node to pass a p5js canvas through ComfyUI for img2img generation use." - }, - { - "author": "chaojie", - "title": "ComfyUI-mobvoi-openapi", - "id": "mobvoi-openapi", - "reference": "https://github.com/chaojie/ComfyUI-mobvoi-openapi", - "files": [ - "https://github.com/chaojie/ComfyUI-mobvoi-openapi" - ], - "install_type": "git-clone", - "description": "Nodes:MobvoiOpenapiMetamanText, MobvoiOpenapiMetamanAudio, MobvoiOpenapiTts, HtmlViewer, OssUploadImage, OssUploadAudio" - }, - { - "author": "immersiveexperience", - "title": "ie-comfyui-color-nodes", - "id": "ie-color-nodes", - "reference": "https://github.com/immersiveexperience/ie-comfyui-color-nodes", - "files": [ - "https://github.com/immersiveexperience/ie-comfyui-color-nodes" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI nodes for simple color correction." - }, - { - "author": "beyastard", - "title": "ComfyUI_BeySoft", - "reference": "https://github.com/beyastard/ComfyUI_BeySoft", - "files": [ - "https://github.com/beyastard/ComfyUI_BeySoft" - ], - "install_type": "git-clone", - "description": "Nodes:BeySoft" - }, - { - "author": "christian-byrne", - "title": "🌌 Infinite Parallax Nodes [WIP]", - "reference": "https://github.com/christian-byrne/infinite-zoom-parallax-nodes", - "files": [ - "https://github.com/christian-byrne/infinite-zoom-parallax-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Parallax Config, Load Parallax Frame, Save Parallax Object Layers, Layer Shifter for Parallax Outpainting, Save Parallax Frame, Shrink and Pad for Outpainting, Create Infinite Zoom Video" - }, - { - "author": "flyingdogsoftware", - "title": "Gyre for ComfyUI", - "id": "gyre", - "reference": "https://github.com/flyingdogsoftware/gyre_for_comfyui", - "files": [ - "https://github.com/flyingdogsoftware/gyre_for_comfyui" - ], - "install_type": "git-clone", - "description": "Nodes:BackgroundRemoval, GyreLoopStart, GyreLoopEnd, GyreIfElse" - }, - { - "author": "githubYiheng", - "title": "comfyui_median_filter", - "id": "median-filter", - "reference": "https://github.com/githubYiheng/comfyui_median_filter", - "files": [ - "https://github.com/githubYiheng/comfyui_median_filter" - ], - "install_type": "git-clone", - "description": "Nodes:Apply Median Filter. [w/This has been updated to be equivalent to the comfyui_kmeans_filter node. Mistake?]" - }, - { - "author": "nat-chan", - "title": "comfyui-exec [UNSAFE]", - "id": "evalnode", - "reference": "https://github.com/nat-chan/comfyui-exec", - "files": [ - "https://github.com/nat-chan/comfyui-exec" - ], - "install_type": "git-clone", - "description": "Nodes:EvalNode [w/Please do not use the node that executes arbitrary code and outputs in any type, as it is dangerous.]" - }, - { - "author": "haofanwang", - "title": "ComfyUI-InstantStyle", - "id": "instantstyle", - "reference": "https://github.com/haofanwang/ComfyUI-InstantStyle", - "files": [ - "https://github.com/haofanwang/ComfyUI-InstantStyle" - ], - "install_type": "git-clone", - "description": "Nodes:PromptLoader, BaseModelLoader, InstantStyleLoader, InstantStyleGenerationNode" - }, - { - "author": "jp0215", - "title": "comfyUI_padding-resize_node", - "reference": "https://github.com/jp0215/comfyUI_padding-resize_node", - "files": [ - "https://raw.githubusercontent.com/jp0215/comfyUI_padding-resize_node/main/PaddingNode.py", - "https://raw.githubusercontent.com/jp0215/comfyUI_padding-resize_node/main/ResizeNode.py" - ], - "install_type": "copy", - "description": "Padding image to 8x: input image and mask, if the side length is not an integer multiple of 8, expand the side length to the smallest multiple of 8 greater than the original side length. Output padding image and mask. Resize to the origin: input the generated image and the original image, crop the generated image to the size of the original image, output the cropped image." - }, - { - "author": "Quasimondo", - "title": "ComfyUI-QuasimondoNodes [WIP]", - "id": "quasimondo-nodes", - "reference": "https://github.com/Quasimondo/ComfyUI-QuasimondoNodes", - "files": [ - "https://github.com/Quasimondo/ComfyUI-QuasimondoNodes" - ], - "install_type": "git-clone", - "description": "Nodes:Custom Shader, Spring Mesh" - }, - { - "author": "TSFSean", - "title": "ComfyUI-TSFNodes", - "id": "tsfnodes", - "reference": "https://github.com/TSFSean/ComfyUI-TSFNodes", - "files": [ - "https://github.com/TSFSean/ComfyUI-TSFNodes" - ], - "install_type": "git-clone", - "description": "Nodes:GyroOSC" - }, - { - "author": "blib-la", - "title": "ComfyUI-Captain-Extensions", - "id": "captain", - "reference": "https://github.com/blib-la/ComfyUI-Captain-Extensions", - "files": [ - "https://github.com/blib-la/ComfyUI-Captain-Extensions" - ], - "install_type": "git-clone", - "description": "ComfyUI extensions for better [a/Captain](https://github.com/blib-la/captain) integration." - }, - { - "author": "ejektaflex", - "title": "ComfyUI-Ty", - "reference": "https://github.com/ejektaflex/ComfyUI-Ty", - "files": [ - "https://github.com/ejektaflex/ComfyUI-Ty" - ], - "install_type": "git-clone", - "description": "Nodes:Lora Block Weight Regex Loader" - }, - { - "author": "christian-byrne", - "title": "Python Interpreter ComfyUI Node [UNSAFE]", - "reference": "https://github.com/christian-byrne/python-interpreter-node", - "files": [ - "https://github.com/christian-byrne/python-interpreter-node" - ], - "install_type": "git-clone", - "description": "For debugging, parsing data, generating random values, converting types, testing custom nodes faster.\nReference and use variables in the code using the same names as the inputs in the UI\nWrapper class around tensors with operator overloading for doing common image manipulation tasks.I might remove this aspect\n[w/This extension allows you to run programs through Python code in your workflow, which may not be secure. Use with caution.]" - }, - { - "author": "sofakid", - "title": "dandy [UNSAFE]", - "reference": "https://github.com/sofakid/dandy", - "files": [ - "https://github.com/sofakid/dandy" - ], - "install_type": "git-clone", - "description": "Dandy is a JavaScript bridge for ComfyUI. It includes everything you need to make JavaScript enabled extensions, or just load and code in little editor nodes right in ComfyUI.[w/This code can cause security issues because it allows for the execution of arbitrary JavaScript input.]" - }, - { - "author": "shadowcz007", - "title": "ComfyUI-PuLID [TEST]", - "reference": "https://github.com/shadowcz007/ComfyUI-PuLID-Test", - "files": [ - "https://github.com/shadowcz007/ComfyUI-PuLID-Test" - ], - "install_type": "git-clone", - "description": "[a/PuLID](https://github.com/ToTheBeginning/PuLID) ComfyUI native implementation." - }, - { - "author": "sangeet", - "title": "Simple Frontend For ComfyUI workflow [TEST]", - "reference": "https://github.com/sangeet/testui", - "files": [ - "https://github.com/sangeet/testui" - ], - "install_type": "git-clone", - "description": "A simple base front-end for text-to-image workflow in ComfyUI. Meant to serve as a base to be modified for future complex workflows" - }, - { - "author": "Elawphant", - "title": "ComfyUI-MusicGen [WIP]", - "id": "musicgen", - "reference": "https://github.com/Elawphant/ComfyUI-MusicGen", - "files": [ - "https://github.com/Elawphant/ComfyUI-MusicGen" - ], - "install_type": "git-clone", - "description": "ComfyUI for Meta MusicGen." - }, - { - "author": "jtscmw01", - "title": "ComfyUI-DiffBIR", - "id": "diffbir", - "reference": "https://github.com/jtscmw01/ComfyUI-DiffBIR", - "files": [ - "https://github.com/jtscmw01/ComfyUI-DiffBIR" - ], - "install_type": "git-clone", - "description": "This extension provides [a/DiffBIR](https://github.com/XPixelGroup/DiffBIR) feature." - }, - { - "author": "ericbeyer", - "title": "guidance_interval", - "reference": "https://github.com/ericbeyer/guidance_interval", - "files": [ - "https://github.com/ericbeyer/guidance_interval" - ], - "install_type": "git-clone", - "description": "Nodes:Guidance Interval\nNOTE: Because the sampling function is replaced, you must restart after executing this custom node to restore the original state." - }, - { - "author": "oztrkoguz", - "title": "Kosmos2_BBox_Cutter Models", - "reference": "https://github.com/oztrkoguz/ComfyUI_Kosmos2_BBox_Cutter", - "files": [ - "https://github.com/oztrkoguz/ComfyUI_Kosmos2_BBox_Cutter" - ], - "install_type": "git-clone", - "description": "Nodes:KosmosLoader, Kosmos2SamplerSimple, Write" - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-PuLID-ZHO [WIP]", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PuLID-ZHO", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PuLID-ZHO" - ], - "install_type": "git-clone", - "description": "Unofficial implementation of [a/PuLID](https://github.com/ToTheBeginning/PuLID)(diffusers) for ComfyUI" - }, - { - "author": "longgui0318", - "title": "comfyui-one-more-step [WIP]", - "reference": "https://github.com/longgui0318/comfyui-one-more-step", - "files": [ - "https://github.com/longgui0318/comfyui-one-more-step" - ], - "install_type": "git-clone", - "description": "[a/(OMS)mhh0318/OneMoreStep](https://github.com/mhh0318/OneMoreStep) comfyui support ." - }, - { - "author": "unknown", - "title": "CLIPTextEncodeAndEnhancev4 (shirazdesigner)", - "reference": "https://github.com/shirazdesigner/CLIPTextEncodeAndEnhancev4", - "files": [ - "https://github.com/shirazdesigner/CLIPTextEncodeAndEnhancev4" - ], - "install_type": "git-clone", - "description": "Nodes:CLIPTextEncodeAndEnhance.\nNOTE:Translation:This is a wrapper that simply makes it easy to install an existing node via git." - }, - { - "author": "umisetokikaze", - "title": "comfyui_mergekit [WIP]", - "reference": "https://github.com/umisetokikaze/comfyui_mergekit", - "files": [ - "https://github.com/umisetokikaze/comfyui_mergekit" - ], - "install_type": "git-clone", - "description": "Nodes:DefineSaveName, SetModels, get_skip, LoadLR, LoadTarget, SetTokenizer, Merge, SetLayer, SetModels" - }, - { - "author": "Video3DGenResearch", - "title": "ComfyUI Batch Input Node", - "reference": "https://github.com/Video3DGenResearch/comfyui-batch-input-node", - "files": [ - "https://github.com/Video3DGenResearch/comfyui-batch-input-node" - ], - "install_type": "git-clone", - "description": "Nodes:BatchInputText" - }, - { - "author": "kijai", - "title": "ComfyUI nodes to use DeepSeek-VL", - "reference": "https://github.com/kijai/ComfyUI-DeepSeek-VL", - "files": [ - "https://github.com/kijai/ComfyUI-DeepSeek-VL" - ], - "install_type": "git-clone", - "description": "[a/https://huggingface.co/deepseek-ai](https://huggingface.co/deepseek-ai)" - }, - { - "author": "GentlemanHu", - "title": "ComfyUI-Notifier", - "reference": "https://github.com/GentlemanHu/ComfyUI-Notifier", - "files": [ - "https://github.com/GentlemanHu/ComfyUI-Notifier" - ], - "install_type": "git-clone", - "description": "Nodes:GentlemanHu_Notifier" - }, - { - "author": "nat-chan", - "title": "Transceiver📡", - "reference": "https://github.com/nat-chan/transceiver", - "files": [ - "https://github.com/nat-chan/transceiver" - ], - "install_type": "git-clone", - "description": "Why? When processing a large number of requests, the SaveImage and LoadImage nodes may be IO-limited, and using shared memory improves performance by passing images only through memory access, not through IO." - }, - { - "author": "DrMWeigand", - "title": "ComfyUI_LineBreakInserter", - "reference": "https://github.com/DrMWeigand/ComfyUI_LineBreakInserter", - "files": [ - "https://github.com/DrMWeigand/ComfyUI_LineBreakInserter" - ], - "install_type": "git-clone", - "description": "Nodes:Line Break Inserter" - }, - { - "author": "WilliamStanford", - "title": "visuallabs_comfyui_nodes", - "reference": "https://github.com/WilliamStanford/ComfyUI-VisualLabs", - "files": [ - "https://github.com/WilliamStanford/ComfyUI-VisualLabs" - ], - "install_type": "git-clone", - "description": "Nodes:PointStringFromFloatArray" - }, - { - "author": "bruce007lee", - "title": "comfyui-cleaner", - "reference": "https://github.com/bruce007lee/comfyui-cleaner", - "files": [ - "https://github.com/bruce007lee/comfyui-cleaner" - ], - "install_type": "git-clone", - "description": "Nodes:cleaner" - }, - { - "author": "ExponentialML", - "title": "ComfyUI_LiveDirector (WIP)", - "reference": "https://github.com/ExponentialML/ComfyUI_LiveDirector", - "files": [ - "https://github.com/ExponentialML/ComfyUI_LiveDirector" - ], - "install_type": "git-clone", - "description": "Experimental method to use reference video to drive motion in generations without training in ComfyUI." - }, - { - "author": "hy134300", - "title": "comfyui-hb-node", - "reference": "https://github.com/hy134300/comfyui-hb-node", - "files": [ - "https://github.com/hy134300/comfyui-hb-node" - ], - "install_type": "git-clone", - "description": "Nodes:sound voice, text concat, latent to list, movie generate, movie batch, hy save image, generate story" - }, - { - "author": "gameltb", - "title": "io_comfyui", - "reference": "https://github.com/gameltb/io_comfyui", - "files": [ - "https://github.com/gameltb/io_comfyui" - ], - "install_type": "git-clone", - "description": "Let Blender work with ComfyUI by ComfyScript. This addon is still in development." - }, - { - "author": "ALatentPlace", - "title": "YANC- Yet Another Node Collection", - "reference": "https://github.com/ALatentPlace/ComfyUI_yanc", - "files": [ - "https://github.com/ALatentPlace/ComfyUI_yanc" - ], - "install_type": "git-clone", - "description": "This is another node collection for ComfyUI. It includes some basic nodes that I find useful, and I've also created them to meet my personal needs." - }, - { - "author": "Jiffies-64", - "title": "ComfyUI-SaveImagePlus", - "reference": "https://github.com/Jiffies-64/ComfyUI-SaveImagePlus", - "files": [ - "https://github.com/Jiffies-64/ComfyUI-SaveImagePlus" - ], - "install_type": "git-clone", - "description": "Nodes:SaveImagePlus" - }, - { - "author": "kadirnar", - "title": "ComfyUI-Adapter [WIP]", - "reference": "https://github.com/kadirnar/ComfyUI-Adapter", - "files": [ - "https://github.com/kadirnar/ComfyUI-Adapter" - ], - "install_type": "git-clone", - "description": "WIP" - }, - { - "author": "Beinsezii", - "title": "comfyui-amd-go-fast", - "reference": "https://github.com/Beinsezii/comfyui-amd-go-fast", - "files": [ - "https://github.com/Beinsezii/comfyui-amd-go-fast" - ], - "install_type": "git-clone", - "description": "This contains all-in-one 'principled' nodes for T2I, I2I, refining, and scaling. Additionally it has many tools for directly manipulating the color of latents, high res fix math, and scripted image post-processing." - }, - { - "author": "sugarkwork", - "title": "comfyui_psd [WIP]", - "reference": "https://github.com/sugarkwork/comfyui_psd", - "files": [ - "https://github.com/sugarkwork/comfyui_psd" - ], - "install_type": "git-clone", - "description": "Not working yet." - }, - { - "author": "SadaleNet", - "title": "ComfyUI Port for Google's Prompt-to-Prompt", - "reference": "https://github.com/SadaleNet/ComfyUI-Prompt-To-Prompt", - "files": [ - "https://github.com/SadaleNet/ComfyUI-Prompt-To-Prompt" - ], - "install_type": "git-clone", - "description": "This is a PoC port of [a/Google's Prompt-to-Prompt](https://github.com/google/prompt-to-prompt/) to ComfyUI. It isn't feature complete. But it's good enough for evaluating if prompt-to-prompt is of any good." - }, - { - "author": "stavsap", - "title": "ComfyUI Ollama [WIP]", - "reference": "https://github.com/stavsap/ComfyUI-React-SDK", - "files": [ - "https://github.com/stavsap/ComfyUI-React-SDK" - ], - "install_type": "git-clone", - "description": "This project is for building React application as an overlay upon ComfyUI.\nProviding and ability to provide desired UI with ComfyUI API and workflows.\nInspired by: [a/https://github.com/cubiq/Comfy_Dungeon](https://github.com/cubiq/Comfy_Dungeon)" - }, - { - "author": "chaojie", - "title": "ComfyUI DynamiCrafter", - "reference": "https://github.com/chaojie/ComfyUI-DynamiCrafter", - "files": [ - "https://github.com/chaojie/ComfyUI-DynamiCrafter" - ], - "install_type": "git-clone", - "description": "ComfyUI [a/DynamiCrafter](https://github.com/Doubiiu/DynamiCrafter)" - }, - { - "author": "cubiq", - "title": "Comfy Dungeon [WIP]", - "reference": "https://github.com/cubiq/Comfy_Dungeon", - "files": [ - "https://github.com/cubiq/Comfy_Dungeon" - ], - "install_type": "git-clone", - "description": "Build D&D Character Portraits with ComfyUI.\nIMPORTANT: At the moment this is mostly a tech demo to show how to build a web app on top of ComfyUI. The code is very messy and the application doesn't guaratee consistent results." - }, - { - "author": "dfl", - "title": "comfyui-stylegan", - "reference": "https://github.com/dfl/comfyui-stylegan", - "files": [ - "https://github.com/dfl/comfyui-stylegan" - ], - "install_type": "git-clone", - "description": "Generator for StyleGAN 3" - }, - { - "author": "A719689614", - "title": "ComfyUI_AC_FUNV8Beta1", - "reference": "https://github.com/A719689614/ComfyUI_AC_FUNV8Beta1", - "files": [ - "https://github.com/A719689614/ComfyUI_AC_FUNV8Beta1" - ], - "install_type": "git-clone", - "description": "Nodes:AC_Super_Controlnet/Checkpoint/Loras/Lora&LCM/KSampler/UpKSampler/SaveImage/PreviewImage/CKPT&LCM/CLIPEN/EmptLatent, AC_FUN_SUPER_LARGE, AC_Super_Come_Ckpt, AC_Super_Come_Lora" - }, - { - "author": "houdinii", - "title": "comfy-magick [WIP]", - "reference": "https://github.com/houdinii/comfy-magick", - "files": [ - "https://github.com/houdinii/comfy-magick" - ], - "install_type": "git-clone", - "description": "This is a way to implement ImageMagick functionality in ComfyUI, which is generally PIL (pillow) based. I'm not sure the best way to handle this, as batch images make it a lot more complex, but the general idea will be two nodes to translate the IMAGE type, a torch.tensor of shape [batch, height, width, channels], or [1, 600, 800, 3] for a single 800x600 image, into/from a wand Image object." - }, - { - "author": "tjorbogarden", - "title": "my-useful-comfyui-custom-nodes", - "reference": "https://github.com/tjorbogarden/my-useful-comfyui-custom-nodes", - "files": [ - "https://github.com/tjorbogarden/my-useful-comfyui-custom-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:My-Image Sizer, KSamplerSDXLAdvanced." - }, - { - "author": "DeTK", - "title": "ComfyUI Node Switcher", - "reference": "https://github.com/DeTK/ComfyUI-Switch", - "files": [ - "https://github.com/DeTK/ComfyUI-Switch" - ], - "install_type": "git-clone", - "description": "Nodes:NodeSwitch." - }, - { - "author": "GrindHouse66", - "title": "GH Tools for ComfyUI", - "reference": "https://github.com/GrindHouse66/ComfyUI-GH_Tools", - "files": [ - "https://github.com/GrindHouse66/ComfyUI-GH_Tools" - ], - "install_type": "git-clone", - "description": "Nodes:GH Tools Image Sizer, GH Tools Simple Scale. Simple quality of life Tools for ComfyUI. Basically, If it makes my life easier, it will be here. The list will grow over time." - }, - { - "author": "sdfxai", - "title": "SDFXBridgeForComfyUI - ComfyUI Custom Node for SDFX Integration", - "reference": "https://github.com/sdfxai/SDFXBridgeForComfyUI", - "files": [ - "https://github.com/sdfxai/SDFXBridgeForComfyUI" - ], - "install_type": "git-clone", - "description": "SDFXBridgeForComfyUI is a custom node designed for seamless integration between ComfyUI and the SDFX solution. This custom node allows users to make ComfyUI compatible with SDFX when running the ComfyUI instance on their local machines." - }, - { - "author": "Beinsezii", - "title": "comfyui-amd-go-fast", - "reference": "https://github.com/Beinsezii/comfyui-amd-go-fast", - "files": [ - "https://github.com/Beinsezii/comfyui-amd-go-fast" - ], - "install_type": "git-clone", - "description": "See details: [a/link](https://github.com/Beinsezii/comfyui-amd-go-fast?tab=readme-ov-file)" - }, - { - "author": "SeedV", - "title": "ComfyUI-SeedV-Nodes [UNSAFE]", - "reference": "https://github.com/SeedV/ComfyUI-SeedV-Nodes", - "files": [ - "https://github.com/SeedV/ComfyUI-SeedV-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Script.\n[w/This extension poses a risk of executing arbitrary commands through workflow execution. Please be cautious.]" - }, - { - "author": "mut-ex", - "title": "ComfyUI GLIGEN GUI Node", - "reference": "https://github.com/mut-ex/comfyui-gligengui-node", - "files": [ - "https://github.com/mut-ex/comfyui-gligengui-node" - ], - "install_type": "git-clone", - "description": "This is a simple, straightforward ComfyUI node to be used along with the [a/GLIGEN GUI](https://github.com/mut-ex/gligen-gui) I developed.\nNOTE:[a/Make sure you have the GLIGEN GUI up and running](https://github.com/mut-ex/gligen-gui/tree/main)" - }, - { - "author": "unanan", - "title": "ComfyUI-Dist [WIP]", - "reference": "https://github.com/unanan/ComfyUI-Dist", - "files": [ - "https://github.com/unanan/ComfyUI-Dist" - ], - "install_type": "git-clone", - "description": "For distributed processing ComfyUI workflows within a local area network.\nNot Finished Yet." - }, - { - "author": "NicholasKao1029", - "title": "comfyui-hook", - "reference": "https://github.com/NicholasKao1029/comfyui-hook", - "files": [ - "https://github.com/NicholasKao1029/comfyui-hook" - ], - "install_type": "git-clone", - "description": "This extension provides additional API" - }, - { - "author": "Extraltodeus", - "title": "Conditioning-token-experiments-for-ComfyUI", - "reference": "https://github.com/Extraltodeus/Conditioning-token-experiments-for-ComfyUI", - "files": [ - "https://github.com/Extraltodeus/Conditioning-token-experiments-for-ComfyUI" - ], - "install_type": "git-clone", - "description": "I made these nodes for experimenting so it's far from perfect but at least it is entertaining!\nIt uses cosine similarities or smallest euclidean distances to find the closest tokens." - }, - { - "author": "shadowcz007", - "title": "comfyui-llamafile [WIP]", - "reference": "https://github.com/shadowcz007/comfyui-sd-prompt-mixlab", - "files": [ - "https://github.com/shadowcz007/comfyui-sd-prompt-mixlab" - ], - "install_type": "git-clone", - "description": "This node is an experimental node aimed at exploring the collaborative way of human-machine creation." - }, - { - "author": "gameltb", - "title": "ComfyUI paper playground", - "reference": "https://github.com/gameltb/ComfyUI_paper_playground", - "files": [ - "https://github.com/gameltb/ComfyUI_paper_playground" - ], - "install_type": "git-clone", - "description": "Evaluate some papers in ComfyUI, just playground.\nNOTE: Various models need to be installed, so please visit the repository to check." - }, - { - "author": "huizhang0110", - "title": "ComfyUI_Easy_Nodes_hui", - "reference": "https://github.com/huizhang0110/ComfyUI_Easy_Nodes_hui", - "files": [ - "https://github.com/huizhang0110/ComfyUI_Easy_Nodes_hui" - ], - "install_type": "git-clone", - "description": "Nodes:EasyEmptyLatentImage" - }, - { - "author": "tuckerdarby", - "title": "ComfyUI-TDNodes [WIP]", - "reference": "https://github.com/tuckerdarby/ComfyUI-TDNodes", - "files": [ - "https://github.com/tuckerdarby/ComfyUI-TDNodes" - ], - "install_type": "git-clone", - "description": "Nodes:KSampler (RAVE), KSampler (TF), Object Tracker, KSampler Batched, Video Tracker Prompt, TemporalNet Preprocessor, Instance Tracker Prompt, Instance Diffusion Loader, Hand Tracker Node" - }, - { - "author": "shadowcz007", - "title": "comfyui-CLIPSeg", - "reference": "https://github.com/shadowcz007/comfyui-CLIPSeg", - "files": [ - "https://github.com/shadowcz007/comfyui-CLIPSeg" - ], - "install_type": "git-clone", - "description": "Download [a/CLIPSeg](https://huggingface.co/CIDAS/clipseg-rd64-refined/tree/main), move to : models/clipseg" - }, - { - "author": "stutya", - "title": "ComfyUI-Terminal [UNSAFE]", - "reference": "https://github.com/stutya/ComfyUI-Terminal", - "files": [ - "https://github.com/stutya/ComfyUI-Terminal" - ], - "install_type": "git-clone", - "description": "Run Terminal Commands from ComfyUI.\n[w/This extension poses a risk of executing arbitrary commands through workflow execution. Please be cautious.]" - }, - { - "author": "marcueberall", - "title": "ComfyUI-BuildPath", - "reference": "https://github.com/marcueberall/ComfyUI-BuildPath", - "files": [ - "https://github.com/marcueberall/ComfyUI-BuildPath" - ], - "install_type": "git-clone", - "description": "Nodes: Build Path Adv." - }, - { - "author": "LotzF", - "title": "ComfyUI simple ChatGPT completion [UNSAFE]", - "reference": "https://github.com/LotzF/ComfyUI-Simple-Chat-GPT-completion", - "files": [ - "https://github.com/LotzF/ComfyUI-Simple-Chat-GPT-completion" - ], - "install_type": "git-clone", - "description": "A simple node to request ChatGPT completions. [w/Do not share your workflows including the API key! I'll take no responsibility for your leaked keys.]" - }, - { - "author": "kappa54m", - "title": "ComfyUI_Usability (WIP)", - "reference": "https://github.com/kappa54m/ComfyUI_Usability", - "files": [ - "https://github.com/kappa54m/ComfyUI_Usability" - ], - "install_type": "git-clone", - "description": "Nodes: Load Image Dedup, Load Image By Path." - }, - { - "author": "17Retoucher", - "title": "ComfyUI_Fooocus", - "reference": "https://github.com/17Retoucher/ComfyUI_Fooocus", - "files": [ - "https://github.com/17Retoucher/ComfyUI_Fooocus" - ], - "install_type": "git-clone", - "description": "Custom nodes that help reproduce image generation in Fooocus." - }, - { - "author": "nkchocoai", - "title": "ComfyUI-PromptUtilities", - "reference": "https://github.com/nkchocoai/ComfyUI-PromptUtilities", - "files": [ - "https://github.com/nkchocoai/ComfyUI-PromptUtilities" - ], - "install_type": "git-clone", - "description": "Nodes: Format String, Join String List, Load Preset, Load Preset (Advanced), Const String, Const String (multi line). Add useful nodes related to prompt." - }, - { - "author": "BadCafeCode", - "title": "execution-inversion-demo-comfyui", - "reference": "https://github.com/BadCafeCode/execution-inversion-demo-comfyui", - "files": [ - "https://github.com/BadCafeCode/execution-inversion-demo-comfyui" - ], - "install_type": "git-clone", - "description": "execution-inversion-demo-comfyui" - }, - { - "author": "prodogape", - "title": "ComfyUI-clip-interrogator [WIP]", - "reference": "https://github.com/prodogape/ComfyUI-clip-interrogator", - "files": [ - "https://github.com/prodogape/ComfyUI-clip-interrogator" - ], - "install_type": "git-clone", - "description": "Unofficial ComfyUI extension of clip-interrogator" - }, - { - "author": "poisenbery", - "title": "NudeNet-Detector-Provider [WIP]", - "reference": "https://github.com/poisenbery/NudeNet-Detector-Provider", - "files": [ - "https://github.com/poisenbery/NudeNet-Detector-Provider" - ], - "install_type": "git-clone", - "description": "BBOX Detector Provider for NudeNet. Bethesda version of NudeNet V3 detector provider to work with Impact Pack ComfyUI." - }, - { - "author": "LarryJane491", - "title": "ComfyUI-ModelUnloader", - "reference": "https://github.com/LarryJane491/ComfyUI-ModelUnloader", - "files": [ - "https://github.com/LarryJane491/ComfyUI-ModelUnloader" - ], - "install_type": "git-clone", - "description": "A simple custom node that unloads all models. Useful for developers or users who want to free some memory." - }, - { - "author": "MrAdamBlack", - "title": "CheckProgress [WIP]", - "reference": "https://github.com/MrAdamBlack/CheckProgress", - "files": [ - "https://github.com/MrAdamBlack/CheckProgress" - ], - "install_type": "git-clone", - "description": "I was looking for a node to put in place to ensure my prompt etc where going as expected before the rest of the flow executed. To end the session, I just return the input image as None (see expected error). Recommend using it alongside PreviewImage, then output to the rest of the flow and Save Image." - }, - { - "author": "birnam", - "title": "Gen Data Tester [WIP]", - "reference": "https://github.com/birnam/ComfyUI-GenData-Pack", - "files": [ - "https://github.com/birnam/ComfyUI-GenData-Pack" - ], - "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": "nidefawl", - "title": "ComfyUI-nidefawl [UNSAFE]", - "reference": "https://github.com/nidefawl/ComfyUI-nidefawl", - "files": [ - "https://github.com/nidefawl/ComfyUI-nidefawl" - ], - "install_type": "git-clone", - "description": "Nodes:PythonScript, BlendImagesWithBoundedMasks, CropImagesWithMasks, VAELoaderDataType, ModelSamplerTonemapNoiseTest, gcLatentTunnel, ReferenceOnlySimple, EmptyImageWithColor, MaskFromColor, SetLatentCustomNoise, LatentToImage, ImageToLatent, LatentScaledNoise, DisplayAnyType, SamplerCustomCallback, CustomCallback, SplitCustomSigmas, SamplerDPMPP_2M_SDE_nidefawl, LatentPerlinNoise.
    [w/This node is an unsafe node that includes the capability to execute arbitrary python script.]" - }, - { - "author": "foglerek", - "title": "comfyui-cem-tools", - "reference": "https://github.com/foglerek/comfyui-cem-tools", - "files": [ - "https://github.com/foglerek/comfyui-cem-tools" - ], - "install_type": "git-clone", - "description": "Nodes:ProcessImageBatch" - }, - { - "author": "komojini", - "title": "ComfyUI_Prompt_Template_CustomNodes", - "reference": "https://github.com/komojini/ComfyUI_Prompt_Template_CustomNodes", - "files": [ - "https://raw.githubusercontent.com/komojini/ComfyUI_Prompt_Template_CustomNodes/main/prompt_with_template.py" - ], - "install_type": "copy", - "description": "Nodes:Prompt with Template" - }, - { - "author": "talesofai", - "title": "comfyui-supersave [WIP]", - "reference": "https://github.com/talesofai/comfyui-supersave", - "files": [ - "https://github.com/talesofai/comfyui-supersave" - ], - "install_type": "git-clone", - "description": "WIP" - }, - { - "author": "Sai-ComfyUI", - "title": "ComfyUI-MS-Nodes [WIP]", - "reference": "https://github.com/Sai-ComfyUI/ComfyUI-MS-Nodes", - "files": [ - "https://github.com/Sai-ComfyUI/ComfyUI-MS-Nodes" - ], - "install_type": "git-clone", - "description": "WIP" - }, - { - "author": "eigenpunk", - "title": "ComfyUI-audio", - "reference": "https://github.com/eigenpunk/ComfyUI-audio", - "files": [ - "https://github.com/eigenpunk/ComfyUI-audio" - ], - "install_type": "git-clone", - "description": "generative audio tools for ComfyUI. highly experimental-expect things to break." - }, - { - "author": "Jaxkr", - "title": "comfyui-terminal-command [UNSAFE]", - "reference": "https://github.com/Jaxkr/comfyui-terminal-command", - "files": [ - "https://github.com/Jaxkr/comfyui-terminal-command" - ], - "install_type": "git-clone", - "description": "Nodes: Run Terminal Command. [w/This node is an unsafe node that includes the capability to execute terminal commands.]" - }, - { - "author": "BlueDangerX", - "title": "ComfyUI-BDXNodes [WIP]", - "reference": "https://github.com/BlueDangerX/ComfyUI-BDXNodes", - "files": [ - "https://github.com/BlueDangerX/ComfyUI-BDXNodes" - ], - "install_type": "git-clone", - "description": "Nodes: Node Jumper. Various quality of life testing nodes" - }, - { - "author": "IvanZhd", - "title": "comfyui-codeformer [WIP]", - "reference": "https://github.com/IvanZhd/comfyui-codeformer", - "files": [ - "https://github.com/IvanZhd/comfyui-codeformer" - ], - "install_type": "git-clone", - "description": "Nodes:Image Inverter" - }, - { - "author": "alt-key-project", - "title": "Dream Project Video Batches [WIP]", - "reference": "https://github.com/alt-key-project/comfyui-dream-video-batches", - "files": [ - "https://github.com/alt-key-project/comfyui-dream-video-batches" - ], - "install_type": "git-clone", - "description": "NOTE: This is currently work in progress. Expect nodes to break (or be broken) until 1.0 release." - }, - { - "author": "oyvindg", - "title": "ComfyUI-TrollSuite", - "reference": "https://github.com/oyvindg/ComfyUI-TrollSuite", - "files": [ - "https://github.com/oyvindg/ComfyUI-TrollSuite" - ], - "install_type": "git-clone", - "description": "Nodes: BinaryImageMask, ImagePadding, LoadLastCreatedImage, RandomMask, TransparentImage." - }, - { - "author": "romeobuilderotti", - "title": "ComfyUI-EZ-Pipes", - "reference": "https://github.com/romeobuilderotti/ComfyUI-EZ-Pipes", - "files": [ - "https://github.com/romeobuilderotti/ComfyUI-EZ-Pipes" - ], - "install_type": "git-clone", - "description": "ComfyUI-EZ-Pipes is a set of custom pipe nodes for ComfyUI. It provides a set of Input/Edit/Output nodes for each pipe type." - }, - { - "author": "wormley", - "title": "comfyui-wormley-nodes", - "reference": "https://github.com/wormley/comfyui-wormley-nodes", - "files": [ - "https://github.com/wormley/comfyui-wormley-nodes" - ], - "install_type": "git-clone", - "description": "Nodes: CheckpointVAELoaderSimpleText, CheckpointVAESelectorText, LoRA_Tag_To_Stack" - }, - { - "author": "Brandelan", - "title": "ComfyUI_bd_customNodes", - "reference": "https://github.com/Brandelan/ComfyUI_bd_customNodes", - "files": [ - "https://github.com/Brandelan/ComfyUI_bd_customNodes" - ], - "install_type": "git-clone", - "description": "Nodes: BD Random Range, BD Settings, BD Sequencer." - }, - { - "author": "Jordach", - "title": "comfy-consistency-vae", - "reference": "https://github.com/Jordach/comfy-consistency-vae", - "files": [ - "https://github.com/Jordach/comfy-consistency-vae" - ], - "install_type": "git-clone", - "description": "Nodes: Comfy_ConsistencyVAE" - }, - { - "author": "gameltb", - "title": "ComfyUI_stable_fast", - "reference": "https://github.com/gameltb/ComfyUI_stable_fast", - "files": [ - "https://github.com/gameltb/ComfyUI_stable_fast" - ], - "install_type": "git-clone", - "description": "Nodes:ApplyStableFastUnet. Experimental usage of stable-fast." - }, - { - "author": "jn-jairo", - "title": "jn_node_suite_comfyui [WIP]", - "reference": "https://github.com/jn-jairo/jn_node_suite_comfyui", - "files": [ - "https://github.com/jn-jairo/jn_node_suite_comfyui" - ], - "install_type": "git-clone", - "description": "Image manipulation nodes, Temperature control nodes, Tiling nodes, Primitive and operation nodes, ..." - }, - { - "author": "PluMaZero", - "title": "ComfyUI-SpaceFlower", - "reference": "https://github.com/PluMaZero/ComfyUI-SpaceFlower", - "files": [ - "https://github.com/PluMaZero/ComfyUI-SpaceFlower" - ], - "install_type": "git-clone", - "description": "Nodes: SpaceFlower_Prompt, SpaceFlower_HangulPrompt, ..." - }, - { - "author": "laksjdjf", - "title": "ssd-1b-comfyui", - "reference": "https://github.com/laksjdjf/ssd-1b-comfyui", - "files": [ - "https://github.com/laksjdjf/ssd-1b-comfyui" - ], - "install_type": "git-clone", - "description": "Experimental node for SSD-1B. This node is not need for latest comfyui." - }, - { - "author": "flowtyone", - "title": "comfyui-flowty-lcm", - "reference": "https://github.com/flowtyone/comfyui-flowty-lcm", - "files": [ - "https://github.com/flowtyone/comfyui-flowty-lcm" - ], - "install_type": "git-clone", - "description": "This is a comfyui early testing node for LCM, adapted from [a/https://github.com/0xbitches/sd-webui-lcm](https://github.com/0xbitches/sd-webui-lcm). It uses the diffusers backend unfortunately and not comfy's model loading mechanism. But the intention here is just to be able to execute lcm inside comfy.\nNOTE: 0xbitches's 'Latent Consistency Model for ComfyUI' is original implementation." - }, - { - "author": "doucx", - "title": "ComfyUI_WcpD_Utility_Kit", - "reference": "https://github.com/doucx/ComfyUI_WcpD_Utility_Kit", - "files": [ - "https://github.com/doucx/ComfyUI_WcpD_Utility_Kit" - ], - "install_type": "git-clone", - "description": "Nodes: MergeStrings, ExecStrAsCode, RandnLatentImage. [w/NOTE: This extension includes the ability to execute code as a string in nodes. Be cautious during installation, as it can pose a security risk.]" - }, - { - "author": "WSJUSA", - "title": "pre-comfyui-stablsr", - "reference": "https://github.com/WSJUSA/Comfyui-StableSR", - "files": [ - "https://github.com/WSJUSA/Comfyui-StableSR" - ], - "install_type": "git-clone", - "description": "This is a development respository for debugging migration of StableSR to Comfyui" - }, - { - "author": "Dr.Lt.Data", - "title": "ComfyUI-Workflow-Component [WIP]", - "reference": "https://github.com/ltdrdata/ComfyUI-Workflow-Component", - "files": [ - "https://github.com/ltdrdata/ComfyUI-Workflow-Component" - ], - "install_type": "git-clone", - "description": "This extension provides the capability to use ComfyUI Workflow as a component and the ability to use the Image Refiner functionality based on components. NOTE: This is an experimental extension feature with no consideration for backward compatibility and can be highly unstable." - } - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/dev/extension-node-map.json b/custom_nodes/comfyui-manager/node_db/dev/extension-node-map.json deleted file mode 100644 index b3394e8b79720e9effd436c2b31d02dc2792d385..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/dev/extension-node-map.json +++ /dev/null @@ -1,4924 +0,0 @@ -{ - "https://github.com/17Retoucher/ComfyUI_Fooocus": [ - [ - "BasicScheduler", - "CLIPLoader", - "CLIPMergeSimple", - "CLIPSave", - "CLIPSetLastLayer", - "CLIPTextEncode", - "CLIPTextEncodeSDXL", - "CLIPTextEncodeSDXLRefiner", - "CLIPVisionEncode", - "CLIPVisionLoader", - "Canny", - "CheckpointLoader", - "CheckpointLoaderSimple", - "CheckpointSave", - "ConditioningAverage", - "ConditioningCombine", - "ConditioningConcat", - "ConditioningSetArea", - "ConditioningSetAreaPercentage", - "ConditioningSetMask", - "ConditioningSetTimestepRange", - "ConditioningZeroOut", - "ControlNetApply", - "ControlNetApplyAdvanced", - "ControlNetLoader", - "CropMask", - "DiffControlNetLoader", - "DiffusersLoader", - "DualCLIPLoader", - "EmptyImage", - "EmptyLatentImage", - "ExponentialScheduler", - "FeatherMask", - "FlipSigmas", - "Fooocus Controlnet", - "Fooocus Hirefix", - "Fooocus KSampler", - "Fooocus Loader", - "Fooocus LoraStack", - "Fooocus PreKSampler", - "Fooocus negative", - "Fooocus positive", - "Fooocus stylesSelector", - "FreeU", - "FreeU_V2", - "GLIGENLoader", - "GLIGENTextBoxApply", - "GrowMask", - "HyperTile", - "HypernetworkLoader", - "ImageBatch", - "ImageBlend", - "ImageBlur", - "ImageColorToMask", - "ImageCompositeMasked", - "ImageCrop", - "ImageInvert", - "ImageOnlyCheckpointLoader", - "ImagePadForOutpaint", - "ImageQuantize", - "ImageScale", - "ImageScaleBy", - "ImageScaleToTotalPixels", - "ImageSharpen", - "ImageToMask", - "ImageUpscaleWithModel", - "InvertMask", - "JoinImageWithAlpha", - "KSampler", - "KSamplerAdvanced", - "KSamplerSelect", - "KarrasScheduler", - "LatentAdd", - "LatentBatch", - "LatentBlend", - "LatentComposite", - "LatentCompositeMasked", - "LatentCrop", - "LatentFlip", - "LatentFromBatch", - "LatentInterpolate", - "LatentMultiply", - "LatentRotate", - "LatentSubtract", - "LatentUpscale", - "LatentUpscaleBy", - "LoadImage", - "LoadImageMask", - "LoadLatent", - "LoraLoader", - "LoraLoaderModelOnly", - "MaskComposite", - "MaskToImage", - "ModelMergeAdd", - "ModelMergeBlocks", - "ModelMergeSimple", - "ModelMergeSubtract", - "ModelSamplingContinuousEDM", - "ModelSamplingDiscrete", - "PatchModelAddDownscale", - "PerpNeg", - "PolyexponentialScheduler", - "PorterDuffImageComposite", - "PreviewImage", - "RebatchImages", - "RebatchLatents", - "RepeatImageBatch", - "RepeatLatentBatch", - "RescaleCFG", - "SDTurboScheduler", - "SVD_img2vid_Conditioning", - "SamplerCustom", - "SamplerDPMPP_2M_SDE", - "SamplerDPMPP_SDE", - "SaveAnimatedPNG", - "SaveAnimatedWEBP", - "SaveImage", - "SaveLatent", - "SelfAttentionGuidance", - "SetLatentNoiseMask", - "SolidMask", - "SplitImageWithAlpha", - "SplitSigmas", - "StableZero123_Conditioning", - "StyleModelApply", - "StyleModelLoader", - "TomePatchModel", - "UNETLoader", - "UpscaleModelLoader", - "VAEDecode", - "VAEDecodeTiled", - "VAEEncode", - "VAEEncodeForInpaint", - "VAEEncodeTiled", - "VAELoader", - "VAESave", - "VPScheduler", - "VideoLinearCFGGuidance", - "unCLIPCheckpointLoader", - "unCLIPConditioning" - ], - { - "title_aux": "ComfyUI_Fooocus" - } - ], - "https://github.com/5x00/ComfyUI-Prompt-Plus": [ - [ - "LoadAPI", - "LoadCustomModel", - "LoadFlorenceModel", - "Prompt", - "RunAPIVLM", - "RunCustomVLM", - "TriggerToPromptAPI", - "TriggerToPromptCustom", - "TriggerToPromptSimple" - ], - { - "title_aux": "ComfyUI-Prompt-Plus [WIP]" - } - ], - "https://github.com/7BEII/Comfyui_PDuse": [ - [ - "BatchChangeNodeColor", - "BatchJsonIncremental", - "PD_GetImageSize", - "PD_Image_Crop_Location", - "PD_Image_centerCrop", - "PD_RemoveColorWords", - "PD_node" - ], - { - "title_aux": "comfyui-promptbymood [WIP]" - } - ], - "https://github.com/807502278/ComfyUI_TensorRT_Merge": [ - [ - "BiRefNet2_tensort", - "building_tensorrt_engine", - "load_BiRefNet2_General" - ], - { - "title_aux": "ComfyUI_TensorRT_Merge [WIP]" - } - ], - "https://github.com/A4P7J1N7M05OT/ComfyUI-ManualSigma": [ - [ - "ManualSigma" - ], - { - "title_aux": "ComfyUI-ManualSigma" - } - ], - "https://github.com/A719689614/ComfyUI_AC_FUNV8Beta1": [ - [ - "\u2b1b(TODO)AC_Super_Come_Ckpt", - "\u2b1c(TODO)AC_Super_Come_Lora", - "\u2b55AC_FUN_SUPER_LARGE", - "\ud83c\ude35AC_Super_Checkpoint", - "\ud83c\ude35AC_Super_Loras", - "\ud83c\udfabAC_Super_PreviewImage", - "\ud83c\udfb0AC_Super_Controlnet", - "\ud83d\udcb6AC_Super_EmptLatent", - "\ud83d\udcbcAC_Super_Lora&LCM", - "\ud83d\udcbeAC_Super_SaveImage", - "\ud83d\udcc4AC_Super_CLIPEN", - "\ud83d\udcc8AC_Super_UpKSampler", - "\ud83d\udcdfAC_Super_CKPT&LCM", - "\ud83d\ude80AC_Super_KSampler" - ], - { - "title_aux": "ComfyUI_AC_FUNV8Beta1" - } - ], - "https://github.com/AICodeFactory/ComfyUI-Viva": [ - [ - "HttpTrigger_Common", - "HttpTrigger_Image", - "HttpTrigger_Viva" - ], - { - "title_aux": "ComfyUI-Viva" - } - ], - "https://github.com/AIFSH/ComfyUI-OpenDIT": [ - [ - "DITModelLoader", - "DITPromptNode", - "DiffVAELoader", - "LattePipeLineNode", - "OpenSoraNode", - "OpenSoraPlanPipeLineNode", - "PABConfigNode", - "PreViewVideo", - "SchedulerLoader", - "T5EncoderLoader", - "T5TokenizerLoader" - ], - { - "title_aux": "ComfyUI-OpenDIT [WIP]" - } - ], - "https://github.com/AIFSH/ComfyUI-ViViD": [ - [ - "LoadImagePath", - "LoadVideo", - "PreViewVideo", - "ViViD_Node" - ], - { - "title_aux": "ComfyUI-ViViD" - } - ], - "https://github.com/AIFSH/HivisionIDPhotos-ComfyUI": [ - [ - "AddBackgroundNode", - "AddWaterMarkNode", - "ENHivisionParamsNode", - "HivisionLayOutNode", - "HivisionNode", - "LaterProcessNode", - "ZHHivisionParamsNode" - ], - { - "author": "cuny", - "description": "", - "title_aux": "HivisionIDPhotos-ComfyUI" - } - ], - "https://github.com/AIFSH/IMAGDressing-ComfyUI": [ - [ - "IMAGDressingNode", - "TextNode" - ], - { - "title_aux": "IMAGDressing-ComfyUI" - } - ], - "https://github.com/AIFSH/UltralightDigitalHuman-ComfyUI": [ - [ - "InferUltralightDigitalHumanNode", - "TrainUltralightDigitalHumanNode" - ], - { - "title_aux": "UltralightDigitalHuman-ComfyUI" - } - ], - "https://github.com/AIFSH/UtilNodes-ComfyUI": [ - [ - "GetRGBEmptyImgae", - "LoadVideo", - "PreViewVideo", - "PromptTextNode" - ], - { - "title_aux": "UtilNodes-ComfyUI [WIP]" - } - ], - "https://github.com/ALatentPlace/ComfyUI_yanc": [ - [ - "> Bloom", - "> Blur", - "> Brightness", - "> Clear Text", - "> Combine Channels", - "> Contrast", - "> Divide Channels", - "> Edge Enhance", - "> Film Grain", - "> Float to Int", - "> Fog", - "> Get Mean Color", - "> HUE", - "> Int", - "> Int to Text", - "> Layer Weights (for IPAMS)", - "> Lens Distortion", - "> Light Source Mask", - "> Load Image", - "> Load Image From Folder", - "> Mask Curves", - "> NIKSampler", - "> Noise From Image", - "> Normal Map Lighting", - "> RGB Color", - "> RGB Shift", - "> Resolution by Aspect Ratio", - "> Rotate Image", - "> Saturation", - "> Save Image", - "> Save Text", - "> Scale Image to Side", - "> Scanlines", - "> Sharpen", - "> Text", - "> Text Combine", - "> Text Count", - "> Text Pick Line by Index", - "> Text Pick Random Line", - "> Text Random Weights", - "> Text Replace", - "> Vignette" - ], - { - "title_aux": "YANC- Yet Another Node Collection" - } - ], - "https://github.com/APZmedia/comfyui-textools": [ - [ - "APZmediaImageRichTextOverlay" - ], - { - "author": "Pablo Apiolazza", - "description": "This extension provides rich text overlay functionalities, color management, and text parsing utilities for ComfyUI.", - "nickname": "ComfyUI Text Tools", - "title": "ComfyUI APZmedia Text Tools", - "title_aux": "comfyui-textools [WIP]" - } - ], - "https://github.com/AlexXi19/ComfyUI-OpenAINode": [ - [ - "ImageWithPrompt", - "TextWithPrompt" - ], - { - "title_aux": "ComfyUI-OpenAINode" - } - ], - "https://github.com/AllenEdgarPoe/ComfyUI-Xorbis-nodes": [ - [ - "Add Human Styler", - "ConcaveHullImage", - "Convert Monochrome", - "Inpaint Crop Xo", - "LoadData", - "Mask Aligned bbox for ConcaveHull", - "Mask Aligned bbox for Inpainting", - "Mask Aligned bbox for Inpainting2", - "Mask Square bbox for Inpainting", - "One Image Compare", - "RT4KSR Loader", - "RandomPromptStyler", - "Save Log Info", - "Three Image Compare", - "Upscale RT4SR" - ], - { - "title_aux": "ComfyUI-Xorbis-nodes [WIP]" - } - ], - "https://github.com/Alvaroeai/ComfyUI-SunoAI-Mds": [ - [ - "Mideas_SunoAI_AudioManager", - "Mideas_SunoAI_Generator", - "Mideas_SunoAI_ProxyDownloadNode", - "Mideas_SunoAI_ProxyNode" - ], - { - "title_aux": "ComfyUI-SunoAI-Mds" - } - ], - "https://github.com/Anze-/ComfyUI-OIDN": [ - [ - "OIDN Denoise" - ], - { - "title_aux": "ComfyUI-OIDN [WIP]" - } - ], - "https://github.com/Anze-/ComfyUI_deepDeband": [ - [ - "deepDeband Inference" - ], - { - "title_aux": "ComfyUI_deepDeband [WIP]" - } - ], - "https://github.com/ArmandAlbert/Kwai_font_comfyui": [ - [ - "Kwaifont_Image_Cropper", - "Kwaifont_Resnet101_Loader", - "Kwaifont_Resnet101_Runner", - "Kwaifont_Resnet50_Loader", - "Kwaifont_Resnet50_Runner" - ], - { - "title_aux": "Kwai_font_comfyui" - } - ], - "https://github.com/ArthusLiang/comfyui-face-remap": [ - [ - "FaceRemap" - ], - { - "title_aux": "comfyui-face-remap [WIP]" - } - ], - "https://github.com/BadCafeCode/execution-inversion-demo-comfyui": [ - [ - "AccumulateNode", - "AccumulationGetItemNode", - "AccumulationGetLengthNode", - "AccumulationHeadNode", - "AccumulationSetItemNode", - "AccumulationTailNode", - "AccumulationToListNode", - "BoolOperationNode", - "ComponentInput", - "ComponentMetadata", - "ComponentOutput", - "DebugPrint", - "ExecutionBlocker", - "FloatConditions", - "ForLoopClose", - "ForLoopOpen", - "IntConditions", - "IntMathOperation", - "InversionDemoAdvancedPromptNode", - "InversionDemoLazyConditional", - "InversionDemoLazyIndexSwitch", - "InversionDemoLazyMixImages", - "InversionDemoLazySwitch", - "ListToAccumulationNode", - "MakeListNode", - "StringConditions", - "ToBoolNode", - "WhileLoopClose", - "WhileLoopOpen" - ], - { - "title_aux": "execution-inversion-demo-comfyui" - } - ], - "https://github.com/BaronVonBoolean/ComfyUI-FileOps": [ - [ - "File Mv", - "File Path", - "Make Dir" - ], - { - "title_aux": "ComfyUI-FileOps [UNSAFE]" - } - ], - "https://github.com/BenjaMITM/ComfyUI_On_The_Fly_Wildcards": [ - [ - "Display String", - "Wildcard Creator", - "Wildcard Loader", - "Wildcard Selector" - ], - { - "title_aux": "ComfyUI_On_The_Fly_Wildcards [WIP]" - } - ], - "https://github.com/BetaDoggo/ComfyUI-LogicGates": [ - [ - "AND", - "BitMemory", - "BoolToString", - "ByteMemory", - "ByteToBits", - "CreateByte", - "NAND", - "NOR", - "NOT", - "ON", - "OR", - "SWITCH", - "XNOR", - "XOR" - ], - { - "title_aux": "ComfyUI-LogicGates" - } - ], - "https://github.com/Big-Idea-Technology/ComfyUI-Movie-Tools": [ - [ - "LoadImagesFromSubdirsBatch", - "SaveImagesWithSubfolder" - ], - { - "title_aux": "ComfyUI-Movie-Tools [WIP]" - } - ], - "https://github.com/BlueDangerX/ComfyUI-BDXNodes": [ - [ - "BDXTestInt", - "ColorMatch", - "ColorToMask", - "ConditioningMultiCombine", - "ConditioningSetMaskAndCombine", - "ConditioningSetMaskAndCombine3", - "ConditioningSetMaskAndCombine4", - "ConditioningSetMaskAndCombine5", - "CreateAudioMask", - "CreateFadeMask", - "CreateFluidMask", - "CreateGradientMask", - "CreateTextMask", - "CrossFadeImages", - "EmptyLatentImagePresets", - "GrowMaskWithBlur", - "SomethingToString", - "VRAM_Debug" - ], - { - "author": "BlueDangerX", - "title": "BDXNodes", - "title_aux": "ComfyUI-BDXNodes [WIP]" - } - ], - "https://github.com/Brandelan/ComfyUI_bd_customNodes": [ - [ - "BD Random Range", - "BD Random Settings", - "BD Sequencer", - "BD Settings" - ], - { - "title_aux": "ComfyUI_bd_customNodes" - } - ], - "https://github.com/Chargeuk/ComfyUI-vts-nodes": [ - [ - "VTS Clean Text", - "VTS Clip Text Encode", - "VTS Color Mask To Mask", - "VTS Conditioning Set Batch Mask", - "VTS Create Character Mask", - "VTS Images Crop From Masks", - "VTS Images Scale", - "VTS Merge Delimited Text", - "VTS Reduce Batch Size", - "VTS Render People Kps", - "VTS To Text", - "VTS_Load_Pose_Keypoints", - "Vts Text To Batch Prompt" - ], - { - "title_aux": "ComfyUI-vts-nodes [WIP]" - } - ], - "https://github.com/ChrisColeTech/ComfyUI-Get-Random-File": [ - [ - "Get Image File By Index", - "Get Video File By Index", - "Random File Path", - "Random Image Path", - "Random Video Path" - ], - { - "title_aux": "ComfyUI-Get-Random-File [UNSAFE]" - } - ], - "https://github.com/Clelstyn/ComfyUI-Inpaint_with_Detailer": [ - [ - "FilterAndBlurMask", - "MaskedResizeImage", - "PasteMaskedImage" - ], - { - "title_aux": "ComfyUI-Inpaint_with_Detailer" - } - ], - "https://github.com/Clybius/ComfyUI-FluxDeCLIP": [ - [ - "FluxDeCLIPCheckpointLoader" - ], - { - "title_aux": "ComfyUI-FluxDeCLIP" - } - ], - "https://github.com/Comfy-Org/ComfyUI_devtools": [ - [ - "DevToolsDeprecatedNode", - "DevToolsErrorRaiseNode", - "DevToolsErrorRaiseNodeWithMessage", - "DevToolsExperimentalNode", - "DevToolsLongComboDropdown", - "DevToolsNodeWithForceInput", - "DevToolsNodeWithOnlyOptionalInput", - "DevToolsNodeWithOptionalInput", - "DevToolsNodeWithOutputList", - "DevToolsNodeWithSeedInput", - "DevToolsNodeWithStringInput", - "DevToolsNodeWithUnionInput", - "DevToolsObjectPatchNode", - "DevToolsSimpleSlider" - ], - { - "title_aux": "ComfyUI_devtools [WIP]" - } - ], - "https://github.com/ComfyUI-Workflow/ComfyUI-OpenAI": [ - [ - "OpenAI.CaptionImage" - ], - { - "title_aux": "ComfyUI OpenAI Nodes" - } - ], - "https://github.com/DataCTE/ComfyUI-DataVoid-nodes": [ - [ - "IPAAdapterFaceIDBatch", - "IPAdapter", - "IPAdapterAdvanced", - "IPAdapterBatch", - "IPAdapterClipVisionEnhancer", - "IPAdapterClipVisionEnhancerBatch", - "IPAdapterCombineEmbeds", - "IPAdapterCombineParams", - "IPAdapterCombineWeights", - "IPAdapterEmbeds", - "IPAdapterEmbedsBatch", - "IPAdapterEncoder", - "IPAdapterFaceID", - "IPAdapterFaceIDKolors", - "IPAdapterFromParams", - "IPAdapterInsightFaceLoader", - "IPAdapterLoadEmbeds", - "IPAdapterMS", - "IPAdapterModelLoader", - "IPAdapterNoise", - "IPAdapterPreciseComposition", - "IPAdapterPreciseCompositionBatch", - "IPAdapterPreciseStyleTransfer", - "IPAdapterPreciseStyleTransferBatch", - "IPAdapterPromptScheduleFromWeightsStrategy", - "IPAdapterRegionalConditioning", - "IPAdapterSameEnergy", - "IPAdapterSaveEmbeds", - "IPAdapterStyleComposition", - "IPAdapterStyleCompositionBatch", - "IPAdapterTiled", - "IPAdapterTiledBatch", - "IPAdapterUnifiedLoader", - "IPAdapterUnifiedLoaderCommunity", - "IPAdapterUnifiedLoaderFaceID", - "IPAdapterWeights", - "IPAdapterWeightsFromStrategy", - "MegaMergeSDXL", - "PrepImageForClipVision" - ], - { - "title_aux": "ComfyUI-DataVoid-nodes [WIP]" - } - ], - "https://github.com/DeTK/ComfyUI-Switch": [ - [ - "NodeSwitch" - ], - { - "title_aux": "ComfyUI Node Switcher" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-Flashback": [ - [ - "LatentExport", - "LatentImport", - "LatentLoop" - ], - { - "title_aux": "ComfyUI-Flashback" - } - ], - "https://github.com/DrMWeigand/ComfyUI_LineBreakInserter": [ - [ - "LineBreakInserter" - ], - { - "title_aux": "ComfyUI_LineBreakInserter" - } - ], - "https://github.com/DraconicDragon/ComfyUI_e621_booru_toolkit": [ - [ - "GetBooruPost", - "TagEncode", - "TagWikiFetch" - ], - { - "title_aux": "ComfyUI e621 booru Toolkit" - } - ], - "https://github.com/Eagle-CN/ComfyUI-Addoor": [ - [ - "AD_AnyFileList", - "AD_BatchImageLoadFromDir", - "AD_CSVPromptStyler", - "AD_CSVReader", - "AD_CSVTranslator", - "AD_DeleteLocalAny", - "AD_FluxTrainStepMath", - "AD_HFDownload", - "AD_ImageDrawRectangleSimple", - "AD_ImageIndexer", - "AD_ImageSaver", - "AD_LoadImageAdvanced", - "AD_PromptReplace", - "AD_TextIndexer", - "AD_TextListToString", - "AD_TextSaver", - "AD_TxtToCSVCombiner", - "AD_ZipSave", - "AD_advanced-padding", - "AD_color-image", - "AD_image-concat", - "AD_image-resize", - "AD_mockup-maker", - "AD_poster-maker", - "AD_prompt-saver", - "ImageCaptioner", - "ImageResize", - "Incrementer \ud83e\udeb4", - "TextAppendNode", - "Width and height for scaling image to ideal resolution \ud83e\udeb4", - "Width and height from aspect ratio \ud83e\udeb4", - "YANC.MultilineString", - "comfyui-easy-padding", - "image concat mask" - ], - { - "author": "ComfyUI Addoor", - "description": "Save prompts to CSV file with customizable naming pattern", - "title": "ComfyUI-PromptSaver", - "title_aux": "ComfyUI-Addoor [UNSAFE]" - } - ], - "https://github.com/Elawphant/ComfyUI-MusicGen": [ - [ - "AudioLoader", - "MusicGen" - ], - { - "title_aux": "ComfyUI-MusicGen [WIP]" - } - ], - "https://github.com/EmilioPlumed/ComfyUI-Math": [ - [ - "GreatestCommonDenominator", - "LowestCommonMultiple" - ], - { - "title_aux": "ComfyUI-Math [WIP]" - } - ], - "https://github.com/ExponentialML/ComfyUI_LiveDirector": [ - [ - "LiveDirector" - ], - { - "title_aux": "ComfyUI_LiveDirector (WIP)" - } - ], - "https://github.com/Extraltodeus/Conditioning-token-experiments-for-ComfyUI": [ - [ - "Automatic wildcards", - "Conditioning (Cosine similarities)", - "Conditioning (Maximum absolute)", - "Conditioning (Maximum absolute) text inputs", - "Conditioning (Scale by absolute sum)", - "Conditioning merge clip g/l", - "Conditioning similar tokens recombine", - "Conditioning to text", - "Quick and dirty text encode", - "encode_all_tokens_SDXL" - ], - { - "title_aux": "Conditioning-token-experiments-for-ComfyUI" - } - ], - "https://github.com/Fannovel16/ComfyUI-AppIO": [ - [ - "AppIO_FitResizeImage", - "AppIO_ImageInput", - "AppIO_ImageInputFromID", - "AppIO_ImageOutput", - "AppIO_IntegerInput", - "AppIO_ResizeInstanceAndPaste", - "AppIO_ResizeInstanceImageMask", - "AppIO_StringInput", - "AppIO_StringOutput" - ], - { - "title_aux": "ComfyUI-AppIO" - } - ], - "https://github.com/FinetunersAI/comfyui-fast-group-link": [ - [ - "FastGroupLink" - ], - { - "title_aux": "Fast Group Link [WIP]" - } - ], - "https://github.com/FinetunersAI/finetuners": [ - [ - "AutoImageResize", - "GroupLink", - "VariablesInjector" - ], - { - "title_aux": "ComfyUI Finetuners [WIP]" - } - ], - "https://github.com/Fucci-Mateo/ComfyUI-Airtable": [ - [ - "Push pose to Airtable" - ], - { - "title_aux": "ComfyUI-Airtable [WIP]" - } - ], - "https://github.com/GentlemanHu/ComfyUI-Notifier": [ - [ - "GentlemanHu_Notifier" - ], - { - "title_aux": "ComfyUI-Notifier" - } - ], - "https://github.com/Grant-CP/ComfyUI-LivePortraitKJ-MPS": [ - [ - "DownloadAndLoadLivePortraitModels", - "LivePortraitProcess" - ], - { - "title_aux": "ComfyUI-LivePortraitKJ-MPS" - } - ], - "https://github.com/Grey3016/Save2Icon": [ - [ - "ConvertToIconNode" - ], - { - "title_aux": "Save2Icon" - } - ], - "https://github.com/GrindHouse66/ComfyUI-GH_Tools": [ - [ - "GHImg_Sizer", - "GHSimple_Scale" - ], - { - "title_aux": "GH Tools for ComfyUI" - } - ], - "https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes": [ - [ - "Clip Switch", - "Conditioning Switch", - "Float Selector", - "Float to Int", - "Float to String", - "Image Switch", - "Int Selector", - "Int to Float", - "Int to String", - "Latent Switch", - "Model Switch", - "Prompt Combiner", - "Sampler Config", - "String Switch", - "Text Box", - "VAE Switch", - "menus" - ], - { - "title_aux": "comfyui_HavocsCall_Custom_Nodes" - } - ], - "https://github.com/IfnotFr/ComfyUI-Ifnot-Pack": [ - [ - "Face Crop" - ], - { - "title_aux": "ComfyUI-Ifnot-Pack" - } - ], - "https://github.com/IgPoly/ComfyUI-igTools": [ - [ - "IGT_SimpleTilesCalc" - ], - { - "title_aux": "ComfyUI-igTools" - } - ], - "https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4": [ - [ - "DisplayText", - "LoadVideo", - "MiniCPM_VQA", - "MiniCPM_VQA_Polished", - "MultipleImagesInput", - "PreviewVideo" - ], - { - "title_aux": "ComfyUI_MiniCPM-V-2_6-int4" - } - ], - "https://github.com/IvanZhd/comfyui-codeformer": [ - [ - "RedBeanie_CustomImageInverter" - ], - { - "title_aux": "comfyui-codeformer [WIP]" - } - ], - "https://github.com/Jaxkr/comfyui-terminal-command": [ - [ - "Terminal" - ], - { - "title_aux": "comfyui-terminal-command [UNSAFE]" - } - ], - "https://github.com/JichaoLiang/Immortal_comfyUI": [ - [ - "AppendNode", - "CombineVideos", - "ImAppendFreeChatAction", - "ImAppendImageActionNode", - "ImAppendQuickbackNode", - "ImAppendQuickbackVideoNode", - "ImAppendVideoNode", - "ImDumpEntity", - "ImDumpNode", - "ImLoadPackage", - "ImNodeTitleOverride", - "ImSetActionKeywordMapping", - "MergeNode", - "NewNode", - "Node2String", - "OllamaChat", - "SaveImagePath", - "SaveToDirectory", - "SetEvent", - "SetNodeMapping", - "SetProperties", - "String2Node", - "TurnOnOffNodeOnEnter", - "batchNodes", - "grepNodeByText", - "mergeEntityAndPointer", - "redirectToNode" - ], - { - "title_aux": "Immortal_comfyUI" - } - ], - "https://github.com/Jiffies-64/ComfyUI-SaveImagePlus": [ - [ - "SaveImagePlus" - ], - { - "title_aux": "ComfyUI-SaveImagePlus" - } - ], - "https://github.com/JissiChoi/ComfyUI-Jissi-List": [ - [ - "JissiFloatList", - "JissiList", - "JissiMatching", - "JissiMultiplePrompts", - "JissiText", - "JissiTextFileToListDisplay", - "JissiTextTemplate", - "JissiView" - ], - { - "title_aux": "ComfyUI-Jissi-List [WIP]" - } - ], - "https://github.com/Jordach/comfy-consistency-vae": [ - [ - "Comfy_ConsistencyVAE" - ], - { - "title_aux": "comfy-consistency-vae" - } - ], - "https://github.com/Junst/ComfyUI-PNG2SVG2PNG": [ - [ - "PNG2SVG2PNG" - ], - { - "title_aux": "ComfyUI-PNG2SVG2PNG" - } - ], - "https://github.com/KihongK/comfyui-roysnodes": [ - [ - "CLIPMultiTextEncode", - "Create_ConditionLoRA", - "Create_ConditionLoRA_MainPrompt", - "Load_ConditionLoRA", - "OpenAI_Summarize", - "Unzip_ConditionLoRA" - ], - { - "title_aux": "ComfyUI-RoysNodes [WIP]" - } - ], - "https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack": [ - [ - "Brightness Image", - "ColorMatch2", - "Contrast Image", - "Get Text", - "Image Difference", - "ImageConcatenate", - "ImageDesaturate", - "ImageExtend", - "ImageFlip", - "ImageRotate", - "LoadImageNai", - "Math Operation", - "NoteAdvanced", - "Set Text" - ], - { - "title_aux": "ComfyUI Production Nodes Pack [WIP]" - } - ], - "https://github.com/LZpenguin/ComfyUI-Text": [ - [ - "Add_text_by_mask" - ], - { - "title_aux": "ComfyUI-Text" - } - ], - "https://github.com/LarryJane491/ComfyUI-ModelUnloader": [ - [ - "Model Unloader" - ], - { - "title_aux": "ComfyUI-ModelUnloader" - } - ], - "https://github.com/Laser-one/ComfyUI-align-pose": [ - [ - "Align_Pose" - ], - { - "title_aux": "ComfyUI-align-pose" - } - ], - "https://github.com/Lilien86/Comfyui_Lilien": [ - [ - "Latent Interpolator Multi" - ], - { - "title_aux": "lauger NodePack for ComfyUI [WIP]" - } - ], - "https://github.com/Looking-Glass/LKG-ComfyUI": [ - [ - "BridgePreview", - "LoadFolder", - "ScaleAndMaintainAspect", - "SideBySide" - ], - { - "title_aux": "LKG-ComfyUI" - } - ], - "https://github.com/LotzF/ComfyUI-Simple-Chat-GPT-completion": [ - [ - "ChatGPTCompletion" - ], - { - "title_aux": "ComfyUI simple ChatGPT completion [UNSAFE]" - } - ], - "https://github.com/LykosAI/ComfyUI-Inference-Core-Nodes": [ - [ - "AIO_Preprocessor", - "AnimalPosePreprocessor", - "AnimeFace_SemSegPreprocessor", - "AnimeLineArtPreprocessor", - "BAE-NormalMapPreprocessor", - "BinaryPreprocessor", - "CannyEdgePreprocessor", - "ColorPreprocessor", - "DWPreprocessor", - "DensePosePreprocessor", - "DepthAnythingPreprocessor", - "DiffusionEdge_Preprocessor", - "FacialPartColoringFromPoseKps", - "FakeScribblePreprocessor", - "HEDPreprocessor", - "HintImageEnchance", - "ImageGenResolutionFromImage", - "ImageGenResolutionFromLatent", - "ImageIntensityDetector", - "ImageLuminanceDetector", - "InpaintPreprocessor", - "LayeredDiffusionApply", - "LayeredDiffusionCondApply", - "LayeredDiffusionCondJointApply", - "LayeredDiffusionDecode", - "LayeredDiffusionDecodeRGBA", - "LayeredDiffusionDecodeSplit", - "LayeredDiffusionDiffApply", - "LayeredDiffusionJointApply", - "LeReS-DepthMapPreprocessor", - "LineArtPreprocessor", - "LineartStandardPreprocessor", - "M-LSDPreprocessor", - "Manga2Anime_LineArt_Preprocessor", - "MaskOptFlow", - "MediaPipe-FaceMeshPreprocessor", - "MeshGraphormer-DepthMapPreprocessor", - "MiDaS-DepthMapPreprocessor", - "MiDaS-NormalMapPreprocessor", - "ModelMergeBlockNumber", - "ModelMergeSDXL", - "ModelMergeSDXLDetailedTransformers", - "ModelMergeSDXLTransformers", - "ModelSamplerTonemapNoiseTest", - "OneFormer-ADE20K-SemSegPreprocessor", - "OneFormer-COCO-SemSegPreprocessor", - "OpenposePreprocessor", - "PiDiNetPreprocessor", - "PixelPerfectResolution", - "PromptExpansion", - "ReferenceOnlySimple", - "RescaleClassifierFreeGuidanceTest", - "SAMPreprocessor", - "SavePoseKpsAsJsonFile", - "ScribblePreprocessor", - "Scribble_XDoG_Preprocessor", - "SemSegPreprocessor", - "ShufflePreprocessor", - "TEEDPreprocessor", - "TilePreprocessor", - "TonemapNoiseWithRescaleCFG", - "UniFormer-SemSegPreprocessor", - "Unimatch_OptFlowPreprocessor", - "Zoe-DepthMapPreprocessor", - "Zoe_DepthAnythingPreprocessor" - ], - { - "author": "tstandley", - "title_aux": "ComfyUI Nodes for Inference.Core" - } - ], - "https://github.com/Matrix-King-Studio/ComfyUI-MoviePy": [ - [ - "AudioDurationNode", - "ImageClipNode", - "SaveVideoNode" - ], - { - "title_aux": "ComfyUI-MoviePy" - } - ], - "https://github.com/Maxim-Dey/ComfyUI-MaksiTools": [ - [ - "\ud83d\udd22 Return Boolean", - "\ud83d\udd22 Return Float", - "\ud83d\udd22 Return Integer", - "\ud83d\udd22 Return Multiline String", - "\ud83d\udd27 Time Measure Node" - ], - { - "title_aux": "ComfyUI-MS_Tools [WIP]" - } - ], - "https://github.com/MrAdamBlack/CheckProgress": [ - [ - "CHECK_PROGRESS" - ], - { - "title_aux": "CheckProgress [WIP]" - } - ], - "https://github.com/MythicalChu/ComfyUI-APG_ImYourCFGNow": [ - [ - "APG_ImYourCFGNow" - ], - { - "title_aux": "ComfyUI-APG_ImYourCFGNow" - } - ], - "https://github.com/Njbx/ComfyUI-blockswap": [ - [ - "BlockSwap" - ], - { - "title_aux": "ComfyUI-blockswap" - } - ], - "https://github.com/PATATAJEC/Patatajec-Nodes": [ - [ - "HyvidSwitcher", - "MidiAnalyzer" - ], - { - "title_aux": "Patatajec-Nodes [WIP]" - } - ], - "https://github.com/PluMaZero/ComfyUI-SpaceFlower": [ - [ - "SpaceFlower_HangulPrompt", - "SpaceFlower_Prompt" - ], - { - "title_aux": "ComfyUI-SpaceFlower" - } - ], - "https://github.com/Poseidon-fan/ComfyUI-fileCleaner": [ - [ - "Clean input and output file" - ], - { - "title_aux": "ComfyUI-fileCleaner [UNSAFE]" - } - ], - "https://github.com/Poukpalaova/ComfyUI-FRED-Nodes": [ - [ - "FRED_AutoCropImage_SDXL_Ratio_V3", - "FRED_AutoCropImage_SDXL_Ratio_V4", - "FRED_CropFace", - "FRED_FolderSelector", - "FRED_ImageBrowser_Dress", - "FRED_ImageBrowser_Eyes_Color", - "FRED_ImageBrowser_Generic", - "FRED_ImageBrowser_Hair_Color", - "FRED_ImageBrowser_Hair_Style", - "FRED_ImageBrowser_Top", - "FRED_JoinImages", - "FRED_LoadImage_V2", - "FRED_LoadImage_V3", - "FRED_LoadImage_V4", - "FRED_LoadImage_V5", - "FRED_LoadPathImagesPreview", - "FRED_LoadPathImagesPreview_v2", - "FRED_LoadRetinaFace", - "FRED_LoraInfos", - "FRED_PreviewOnly", - "FRED_TextMultiline", - "FRED_photo_prompt" - ], - { - "title_aux": "ComfyUI-FRED-Nodes [WIP]" - } - ], - "https://github.com/Quasimondo/ComfyUI-QuasimondoNodes": [ - [ - "CPPN Generator", - "Color Match", - "Coordinates From Mask", - "Custom Shader", - "Distance Map", - "Folder Queue Manager", - "Image Blend by Mask (Batch)", - "Image Noise Generator", - "Image to Optical Flow", - "Perlin Noise Generator", - "Preview Mask", - "Random Image Generator", - "Shift Mask", - "Slit Scan", - "Spring Mesh", - "Temporal Blur", - "Video Queue Manager" - ], - { - "title_aux": "ComfyUI-QuasimondoNodes [WIP]" - } - ], - "https://github.com/RLW-Chars/comfyui-promptbymood": [ - [ - "Prompt By Mood" - ], - { - "title_aux": "comfyui-promptbymood [WIP]" - } - ], - "https://github.com/RicherdLee/comfyui-oss-image-save": [ - [ - "SaveImageOSS" - ], - { - "title_aux": "comfyui-oss-image-save [WIP]" - } - ], - "https://github.com/RobeSantoro/ComfyUI-RobeNodes": [ - [ - "List Image Path \ud83d\udc24", - "List Video Path \ud83d\udc24" - ], - { - "title_aux": "Comfy UI Robe Nodes [UNSAFE]" - } - ], - "https://github.com/SS-snap/ComfyUI-Snap_Processing": [ - [ - "AreaCalculator", - "PyQtCanvasNode", - "Snapload" - ], - { - "title_aux": "Snap Processing for Comfyui" - } - ], - "https://github.com/SadaleNet/ComfyUI-Prompt-To-Prompt": [ - [ - "CLIPTextEncodePromptToPrompt", - "KSamplerPromptToPrompt", - "KSamplerPromptToPromptAttentionMapLogger", - "LocalBlendLayerPresetPromptToPrompt" - ], - { - "title_aux": "ComfyUI Port for Google's Prompt-to-Prompt" - } - ], - "https://github.com/Sai-ComfyUI/ComfyUI-MS-Nodes": [ - [ - "FloatMath", - "MS_Boolean", - "MS_Float", - "MS_GenerateSeed", - "MS_NP_Vector3", - "PowerFractalCrossHatchNode", - "PowerFractalNoiseNode", - "VectorMath" - ], - { - "title_aux": "ComfyUI-MS-Nodes [WIP]" - } - ], - "https://github.com/Sakura-nee/ComfyUI_Save2Discord": [ - [ - "SendToWebhook" - ], - { - "title_aux": "ComfyUI_Save2Discord" - } - ], - "https://github.com/SeedV/ComfyUI-SeedV-Nodes": [ - [ - "AdvancedScript", - "CheckpointLoaderSimpleShared //SeedV", - "ControlNetLoaderAdvancedShared", - "LoraLoader //SeedV", - "Script" - ], - { - "title_aux": "ComfyUI-SeedV-Nodes [UNSAFE]" - } - ], - "https://github.com/ShahFaisalWani/ComfyUI-Mojen-Nodeset": [ - [ - "MojenAnalyzeProcessor", - "MojenAspectRatio", - "MojenImageLoader", - "MojenLogPercent", - "MojenNSFWClassifier", - "MojenNSFWClassifierSave", - "MojenStringLength", - "MojenStyleExtractor", - "MojenTagProcessor" - ], - { - "title_aux": "ComfyUI-Mojen-Nodeset" - } - ], - "https://github.com/Shinsplat/ComfyUI-Shinsplat": [ - [ - "Clip Text Encode (Shinsplat)", - "Clip Text Encode SD3 (Shinsplat)", - "Clip Text Encode SDXL (Shinsplat)", - "Clip Text Encode T5 (Shinsplat)", - "Clip Tokens Encode (Shinsplat)", - "Green Box (Shinsplat)", - "Hex To Other (Shinsplat)", - "KSampler (Shinsplat)", - "Lora Loader (Shinsplat)", - "Nupoma (Shinsplat)", - "Seed (Shinsplat)", - "Shinsplat_CLIPTextEncodeFlux", - "String Interpolated (Shinsplat)", - "Sum Wrap (Shinsplat)", - "Tensor Toys (Shinsplat)", - "Test Node (Shinsplat)", - "Text To Tokens (Shinsplat)", - "Text To Tokens SD3 (Shinsplat)", - "Variables (Shinsplat)" - ], - { - "author": "Shinsplat", - "description": "", - "nickname": "shinsplat", - "title": "Shinsplat", - "title_aux": "ComfyUI-Shinsplat [UNSAFE]" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-FreeMemory": [ - [ - "FreeMemoryCLIP", - "FreeMemoryImage", - "FreeMemoryLatent", - "FreeMemoryModel" - ], - { - "title_aux": "ComfyUI-FreeMemory" - } - ], - "https://github.com/SoftMeng/ComfyUI-PIL": [ - [ - "PIL Effects (Mexx)", - "PIL Merge Image (Mexx)", - "PIL Remove Black Dots (Mexx)", - "PIL TITLE (Mexx)" - ], - { - "title_aux": "ComfyUI-PIL" - } - ], - "https://github.com/Soppatorsk/comfyui_img_to_ascii": [ - [ - "Img_to_ASCII" - ], - { - "title_aux": "comfyui_img_to_ascii [WIP]" - } - ], - "https://github.com/SpaceWarpStudio/ComfyUI_Remaker_FaceSwap": [ - [ - "RemakerFaceSwap" - ], - { - "title_aux": "ComfyUI_Remaker_FaceSwap" - } - ], - "https://github.com/SpatialDeploy/ComfyUI-Voxels": [ - [ - "MeshToVoxelGrid", - "VoxelGridsToVoxelVideo" - ], - { - "title_aux": "ComfyUI-Voxels [WIP]" - } - ], - "https://github.com/StartHua/Comfyui_CSDMT_CXH": [ - [ - "CSD" - ], - { - "title_aux": "Comfyui_CXH_CRM" - } - ], - "https://github.com/StartHua/Comfyui_CXH_CRM": [ - [ - "CRM" - ], - { - "title_aux": "Comfyui_CXH_CRM" - } - ], - "https://github.com/StartHua/Comfyui_Flux_Style_Ctr": [ - [ - "CXH_StyleModelApply" - ], - { - "title_aux": "Comfyui_Flux_Style_Ctr [WIP]" - } - ], - "https://github.com/StartHua/Comfyui_leffa": [ - [ - "CXH_Leffa_Viton_Load", - "CXH_Leffa_Viton_Run" - ], - { - "title_aux": "Comfyui_leffa" - } - ], - "https://github.com/T8star1984/comfyui-purgevram": [ - [ - "PurgeVRAM" - ], - { - "title_aux": "comfyui-purgevram" - } - ], - "https://github.com/TSFSean/ComfyUI-TSFNodes": [ - [ - "GyroOSC" - ], - { - "title_aux": "ComfyUI-TSFNodes" - } - ], - "https://github.com/ThisModernDay/ComfyUI-InstructorOllama": [ - [ - "OllamaInstructorNode" - ], - { - "title_aux": "ComfyUI Instructor Ollama" - } - ], - "https://github.com/Video3DGenResearch/comfyui-batch-input-node": [ - [ - "BatchImageAndPrompt", - "BatchInputCSV", - "BatchInputText" - ], - { - "title_aux": "ComfyUI Batch Input Node" - } - ], - "https://github.com/VisionExp/ve_custom_comfyui_nodes": [ - [ - "LoadImgFromInputUrl", - "assets/Asset Image", - "render3d/Render Node" - ], - { - "title_aux": "ve_custom_comfyui_nodes" - } - ], - "https://github.com/WASasquatch/ASTERR": [ - [ - "ASTERR", - "SaveASTERR" - ], - { - "title_aux": "ASTERR [UNSAFE]" - } - ], - "https://github.com/WSJUSA/Comfyui-StableSR": [ - [ - "ColorFix", - "StableSRUpscalerPipe" - ], - { - "author": "WSJUSA", - "description": "This module enables StableSR in Comgfyui. Ported work of sd-webui-stablesr. Original work for Auotmaatic1111 version of this module and StableSR credit to LIightChaser and Jianyi Wang.", - "nickname": "StableSR", - "title": "StableSR", - "title_aux": "pre-comfyui-stablsr" - } - ], - "https://github.com/WilliamStanford/ComfyUI-VisualLabs": [ - [ - "CreateFadeMaskAdvancedVL", - "PointStringFromFloatArray", - "RescaleFloatArray", - "StringFromFloatArray" - ], - { - "title_aux": "visuallabs_comfyui_nodes" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AuraSR-ZHO": [ - [ - "AuraSR_Lterative_Zho", - "AuraSR_ModelLoader_Zho", - "AuraSR_Zho" - ], - { - "title_aux": "ComfyUI-AuraSR-ZHO" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BiRefNet-ZHO": [ - [ - "BiRefNet_ModelLoader_Zho", - "BiRefNet_Zho" - ], - { - "title_aux": "ComfyUI-BiRefNet-ZHO [BROKEN]" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PuLID-ZHO": [ - [ - "PuLID_Zho" - ], - { - "title_aux": "ComfyUI-PuLID-ZHO [WIP]" - } - ], - "https://github.com/a-One-Fan/ComfyUI-Blenderesque-Nodes": [ - [ - "BlenderAlphaConvert", - "BlenderAlphaOver", - "BlenderBlackbody", - "BlenderBokehImage", - "BlenderBrightnessContrast", - "BlenderClamp", - "BlenderCombineColor", - "BlenderCombineXYZ", - "BlenderConvertColorspace", - "BlenderCornerPin", - "BlenderCrop", - "BlenderDisplace", - "BlenderExposure", - "BlenderFlip", - "BlenderGamma", - "BlenderHueSaturationValue", - "BlenderInvertColor", - "BlenderLensDistortion", - "BlenderMapRange", - "BlenderMapUV", - "BlenderMath", - "BlenderMix", - "BlenderMovieDistortion", - "BlenderRGB", - "BlenderRGBtoBW", - "BlenderRotate", - "BlenderScale", - "BlenderSeparateColor", - "BlenderSeparateXYZ", - "BlenderSetAlpha", - "BlenderTonemap", - "BlenderTransform", - "BlenderTranslate", - "BlenderValue", - "BlenderVectorMath", - "BlenderWavelength", - "BlenderZCombine" - ], - { - "title_aux": "ComfyUI-Blenderesque-Nodes [WIP]" - } - ], - "https://github.com/aiden1020/ComfyUI_Artcoder": [ - [ - "ArtCoder" - ], - { - "title_aux": "ComfyUI_Artcoder [WIP]" - } - ], - "https://github.com/ainanoha/etm_comfyui_nodes": [ - [ - "ETM_LoadImageFromLocal", - "ETM_SaveImage" - ], - { - "title_aux": "etm_comfyui_nodes" - } - ], - "https://github.com/alexisrolland/ComfyUI-AuraSR": [ - [ - "LoadAuraSR", - "RunAuraSR" - ], - { - "title_aux": "alexisrolland/ComfyUI-AuraSR" - } - ], - "https://github.com/alt-key-project/comfyui-dream-video-batches": [ - [ - "Blended Transition [DVB]", - "Calculation [DVB]", - "Create Frame Set [DVB]", - "Divide [DVB]", - "Fade From Black [DVB]", - "Fade To Black [DVB]", - "Float Input [DVB]", - "For Each Done [DVB]", - "For Each Filename [DVB]", - "Frame Set Append [DVB]", - "Frame Set Frame Dimensions Scaled [DVB]", - "Frame Set Index Offset [DVB]", - "Frame Set Merger [DVB]", - "Frame Set Reindex [DVB]", - "Frame Set Repeat [DVB]", - "Frame Set Reverse [DVB]", - "Frame Set Split Beginning [DVB]", - "Frame Set Split End [DVB]", - "Frame Set Splitter [DVB]", - "Generate Inbetween Frames [DVB]", - "Int Input [DVB]", - "Linear Camera Pan [DVB]", - "Linear Camera Roll [DVB]", - "Linear Camera Zoom [DVB]", - "Load Image From Path [DVB]", - "Multiply [DVB]", - "Sine Camera Pan [DVB]", - "Sine Camera Roll [DVB]", - "Sine Camera Zoom [DVB]", - "String Input [DVB]", - "Text Input [DVB]", - "Trace Memory Allocation [DVB]", - "Unwrap Frame Set [DVB]" - ], - { - "title_aux": "Dream Project Video Batches [WIP]" - } - ], - "https://github.com/ammahmoudi/ComfyUI-Legendary-Nodes": [ - [ - "Legendary Dataset Saver", - "Legendary Lora URL Loader" - ], - { - "title_aux": "ComfyUI-Legendary-Nodes" - } - ], - "https://github.com/animEEEmpire/ComfyUI-Animemory-Loader": [ - [ - "AnimemoryNode" - ], - { - "title_aux": "ComfyUI-Animemory-Loader" - } - ], - "https://github.com/aria1th/ComfyUI-SkipCFGSigmas": [ - [ - "CFGControl_SKIPCFG" - ], - { - "title_aux": "ComfyUI-SkipCFGSigmas" - } - ], - "https://github.com/artem-konevskikh/comfyui-split-merge-video": [ - [ - "VideoMerger", - "VideoSplitter" - ], - { - "title_aux": "ComfyUI Video Processing Nodes [WIP]" - } - ], - "https://github.com/artisanalcomputing/ComfyUI-Custom-Nodes": [ - [ - "RandomVideoMixer", - "SpotifyCanvasGenerator", - "VideoWriter" - ], - { - "title_aux": "artcpu-custom-nodes" - } - ], - "https://github.com/ashishsaini/comfyui-segment-clothing-sleeves": [ - [ - "segformer_b2_sleeves" - ], - { - "title_aux": "comfyui_segformer_b2_sleeves" - } - ], - "https://github.com/attashe/ComfyUI-FluxRegionAttention": [ - [ - "BBoxToMaskNode", - "BoundingBoxNode", - "CLIPDebug", - "FluxRegionBBOX", - "FluxRegionMask", - "RegionAttention", - "VisualizeBBoxesNode" - ], - { - "title_aux": "ComfyUI-FluxRegionAttention [WIP]" - } - ], - "https://github.com/backearth1/Comfyui-MiniMax-Video": [ - [ - "ImageToPrompt", - "MiniMaxAIAPIClient", - "MiniMaxImage2Video", - "MiniMaxPreviewVideo" - ], - { - "title_aux": "Comfyui-MiniMax-Video [WIP]" - } - ], - "https://github.com/baicai99/ComfyUI-FrameSkipping": [ - [ - "FrameSelector", - "FrameSkipping", - "FrameTruncating", - "IntOperationsNode", - "MaskFrameSkipping", - "MaskGenerator", - "MaskSelector" - ], - { - "title_aux": "ComfyUI-FrameSkipping" - } - ], - "https://github.com/bananasss00/Comfyui-PyExec": [ - [ - "PyExec", - "PyExec_Output", - "PyExec_OutputIsList", - "PyExec_OutputIsValue" - ], - { - "author": "SeniorPioner", - "description": "Comfyui runtime python code execution", - "nickname": "PyExec", - "title": "PyExec", - "title_aux": "Comfyui-PyExec [UNSAFE]" - } - ], - "https://github.com/beyastard/ComfyUI_BeySoft": [ - [ - "BeySoft" - ], - { - "title_aux": "ComfyUI_BeySoft" - } - ], - "https://github.com/birnam/ComfyUI-GenData-Pack": [ - [ - "Checkpoint From String \ud83d\udc69\u200d\ud83d\udcbb", - "Checkpoint Rerouter \ud83d\udc69\u200d\ud83d\udcbb", - "Checkpoint Selector Stacker \ud83d\udc69\u200d\ud83d\udcbb", - "Checkpoint Selector \ud83d\udc69\u200d\ud83d\udcbb", - "Checkpoint to String \ud83d\udc69\u200d\ud83d\udcbb", - "Crop Recombine \ud83d\udc69\u200d\ud83d\udcbb", - "Crop|IP|Inpaint \ud83d\udc69\u200d\ud83d\udcbb", - "Crop|IP|Inpaint|SDXL \ud83d\udc69\u200d\ud83d\udcbb", - "Decode GenData \ud83d\udc69\u200d\ud83d\udcbb", - "Encode GenData \ud83d\udc69\u200d\ud83d\udcbb", - "GenData Stacker \ud83d\udc69\u200d\ud83d\udcbb", - "IPAdapterApply", - "IPAdapterApplyEncoded", - "IPAdapterApplyFaceID", - "IPAdapterBatchEmbeds", - "IPAdapterEncoder", - "IPAdapterLoadEmbeds", - "IPAdapterModelLoader", - "IPAdapterSaveEmbeds", - "IPAdapterTilesMasked", - "InsightFaceLoader", - "LoRA Stack to String \ud83d\udc69\u200d\ud83d\udcbb", - "LoRA Stacker From Prompt \ud83d\udc69\u200d\ud83d\udcbb", - "Load Checkpoints From File \ud83d\udc69\u200d\ud83d\udcbb", - "Load GenData From Dir \ud83d\udc69\u200d\ud83d\udcbb", - "Parse GenData \ud83d\udc69\u200d\ud83d\udcbb", - "PrepImageForClipVision", - "PrepImageForInsightFace", - "Provide GenData \ud83d\udc69\u200d\ud83d\udcbb", - "Save Image From GenData \ud83d\udc69\u200d\ud83d\udcbb", - "VAE From String \ud83d\udc69\u200d\ud83d\udcbb", - "VAE to String \ud83d\udc69\u200d\ud83d\udcbb", - "\u00d7 Product CheckpointXGenDatas \ud83d\udc69\u200d\ud83d\udcbb" - ], - { - "title_aux": "Gen Data Tester [WIP]" - } - ], - "https://github.com/bmad4ever/comfyui_bmad_nodes": [ - [ - "AdaptiveThresholding", - "Add String To Many", - "AddAlpha", - "AdjustRect", - "AnyToAny", - "BoundingRect (contours)", - "BuildColorRangeAdvanced (hsv)", - "BuildColorRangeHSV (hsv)", - "CLAHE", - "CLIPEncodeMultiple", - "CLIPEncodeMultipleAdvanced", - "ChameleonMask", - "CheckpointLoader (dirty)", - "CheckpointLoaderSimple (dirty)", - "Color (RGB)", - "Color (hexadecimal)", - "Color Clip", - "Color Clip (advanced)", - "Color Clip ADE20k", - "ColorDictionary", - "ColorDictionary (custom)", - "Conditioning (combine multiple)", - "Conditioning (combine selective)", - "Conditioning Grid (cond)", - "Conditioning Grid (string)", - "Conditioning Grid (string) Advanced", - "Contour To Mask", - "Contours", - "ControlNetHadamard", - "ControlNetHadamard (manual)", - "ConvertImg", - "CopyMakeBorder", - "CreateRequestMetadata", - "DistanceTransform", - "Draw Contour(s)", - "EqualizeHistogram", - "ExtendColorList", - "ExtendCondList", - "ExtendFloatList", - "ExtendImageList", - "ExtendIntList", - "ExtendLatentList", - "ExtendMaskList", - "ExtendModelList", - "ExtendStringList", - "FadeMaskEdges", - "Filter Contour", - "FindComplementaryColor", - "FindThreshold", - "FlatLatentsIntoSingleGrid", - "Framed Mask Grab Cut", - "Framed Mask Grab Cut 2", - "FromListGet1Color", - "FromListGet1Cond", - "FromListGet1Float", - "FromListGet1Image", - "FromListGet1Int", - "FromListGet1Latent", - "FromListGet1Mask", - "FromListGet1Model", - "FromListGet1String", - "FromListGetColors", - "FromListGetConds", - "FromListGetFloats", - "FromListGetImages", - "FromListGetInts", - "FromListGetLatents", - "FromListGetMasks", - "FromListGetModels", - "FromListGetStrings", - "Get Contour from list", - "Get Models", - "Get Prompt", - "Hue Mode (InRange hsv)", - "HypernetworkLoader (dirty)", - "ImageBatchToList", - "InRange (hsv)", - "Inpaint", - "Input/String to Int Array", - "KMeansColor", - "Load 64 Encoded Image", - "LoraLoader (dirty)", - "MaskGrid N KSamplers Advanced", - "MaskOuterBlur", - "Merge Latent Batch Gridwise", - "MonoMerge", - "MorphologicOperation", - "MorphologicSkeletoning", - "NaiveAutoKMeansColor", - "OtsuThreshold", - "RGB to HSV", - "Rect Grab Cut", - "Remap", - "RemapBarrelDistortion", - "RemapFromInsideParabolas", - "RemapFromQuadrilateral (homography)", - "RemapInsideParabolas", - "RemapInsideParabolasAdvanced", - "RemapPinch", - "RemapReverseBarrelDistortion", - "RemapStretch", - "RemapToInnerCylinder", - "RemapToOuterCylinder", - "RemapToQuadrilateral", - "RemapWarpPolar", - "Repeat Into Grid (image)", - "Repeat Into Grid (latent)", - "RequestInputs", - "SampleColorHSV", - "Save Image (api)", - "SeamlessClone", - "SeamlessClone (simple)", - "SetRequestStateToComplete", - "String", - "String to Float", - "String to Integer", - "ToColorList", - "ToCondList", - "ToFloatList", - "ToImageList", - "ToIntList", - "ToLatentList", - "ToMaskList", - "ToModelList", - "ToStringList", - "UnGridify (image)", - "VAEEncodeBatch" - ], - { - "title_aux": "Bmad Nodes [UNSAFE]" - } - ], - "https://github.com/bruce007lee/comfyui-cleaner": [ - [ - "cleaner" - ], - { - "title_aux": "comfyui-cleaner" - } - ], - "https://github.com/bruce007lee/comfyui-tiny-utils": [ - [ - "CropImageByMask", - "FaceAlign", - "FaceAlignImageProcess", - "FaceAlignMaskProcess", - "ImageFillColorByMask", - "ImageSAMMask", - "ImageTransposeAdvance", - "LoadImageAdvance" - ], - { - "title_aux": "comfyui-tiny-utils" - } - ], - "https://github.com/brycegoh/comfyui-custom-nodes": [ - [ - "CombineTwoImageIntoOne", - "FillMaskedArea", - "MaskAreaComparisonSegment", - "OCRAndMask" - ], - { - "title_aux": "brycegoh/comfyui-custom-nodes" - } - ], - "https://github.com/c0ffymachyne/ComfyUI_SignalProcessing": [ - [ - "SignalProcessingBaxandall3BandEQ", - "SignalProcessingBaxandallEQ", - "SignalProcessingCompressor", - "SignalProcessingConvolutionReverb", - "SignalProcessingFilter", - "SignalProcessingHarmonicsEnhancer", - "SignalProcessingLimiter", - "SignalProcessingLoadAudio", - "SignalProcessingLoudness", - "SignalProcessingMixdown", - "SignalProcessingNormalizer", - "SignalProcessingPadSynth", - "SignalProcessingPadSynthChoir", - "SignalProcessingPaulStretch", - "SignalProcessingPitchShifter", - "SignalProcessingSaturation", - "SignalProcessingSpectrogram", - "SignalProcessingStereoWidening", - "SignalProcessingWaveform" - ], - { - "title_aux": "ComfyUI Signal Processing [WIP]" - } - ], - "https://github.com/catboxanon/ComfyUI-Pixelsmith": [ - [ - "Pixelsmith" - ], - { - "title_aux": "ComfyUI-Pixelsmith [WIP]" - } - ], - "https://github.com/celll1/cel_sampler": [ - [ - "latent_tracker" - ], - { - "title_aux": "cel_sampler [WIP]" - } - ], - "https://github.com/chaojie/ComfyUI-DynamiCrafter": [ - [ - "DynamiCrafter Simple", - "DynamiCrafterInterp Simple", - "DynamiCrafterInterpLoader", - "DynamiCrafterLoader" - ], - { - "title_aux": "ComfyUI DynamiCrafter" - } - ], - "https://github.com/chaojie/ComfyUI-mobvoi-openapi": [ - [ - "HtmlViewer", - "MobvoiOpenapiMetamanAudio", - "MobvoiOpenapiMetamanText", - "MobvoiOpenapiTts", - "OssUploadAudio", - "OssUploadImage" - ], - { - "title_aux": "ComfyUI-mobvoi-openapi" - } - ], - "https://github.com/chenbaiyujason/ComfyUI_StepFun": [ - [ - "CombineStrings", - "JSONParser", - "StepFunClient", - "TextImageChat", - "VideoChat", - "VideoFileUploader" - ], - { - "title_aux": "ComfyUI_StepFun" - } - ], - "https://github.com/chengzeyi/Comfy-WaveSpeed": [ - [ - "ApplyFBCacheOnModel", - "EnhancedCompileModel", - "EnhancedLoadDiffusionModel", - "VelocatorCompileModel", - "VelocatorLoadAndQuantizeClip", - "VelocatorLoadAndQuantizeDiffusionModel", - "VelocatorQuantizeModel" - ], - { - "title_aux": "Comfy-WaveSpeed [WIP]" - } - ], - "https://github.com/christian-byrne/infinite-zoom-parallax-nodes": [ - [ - "Create Parallax Video", - "Layer Shifter for Parallax Outpainting", - "Load Parallax Frame", - "Parallax Config", - "Save Parallax Frame", - "Shrink and Pad for Outpainting" - ], - { - "title_aux": "\ud83c\udf0c Infinite Parallax Nodes [WIP]" - } - ], - "https://github.com/christian-byrne/python-interpreter-node": [ - [ - "Exec Python Code Script" - ], - { - "title_aux": "Python Interpreter ComfyUI Node [UNSAFE]" - } - ], - "https://github.com/ciga2011/ComfyUI-AppGen": [ - [ - "AG_APP_EDIT", - "AG_APP_GEN", - "AG_APP_SANDBOX", - "AG_CODER_LLM" - ], - { - "title_aux": "ComfyUI-AppGen [UNSAFE]" - } - ], - "https://github.com/comfyanonymous/ComfyUI": [ - [ - "AddNoise", - "AlignYourStepsScheduler", - "BasicGuider", - "BasicScheduler", - "BetaSamplingScheduler", - "CFGGuider", - "CLIPAttentionMultiply", - "CLIPLoader", - "CLIPMergeAdd", - "CLIPMergeSimple", - "CLIPMergeSubtract", - "CLIPSave", - "CLIPSetLastLayer", - "CLIPTextEncode", - "CLIPTextEncodeControlnet", - "CLIPTextEncodeFlux", - "CLIPTextEncodeHunyuanDiT", - "CLIPTextEncodePixArtAlpha", - "CLIPTextEncodeSD3", - "CLIPTextEncodeSDXL", - "CLIPTextEncodeSDXLRefiner", - "CLIPVisionEncode", - "CLIPVisionLoader", - "Canny", - "CheckpointLoader", - "CheckpointLoaderSimple", - "CheckpointSave", - "ConditioningAverage", - "ConditioningCombine", - "ConditioningConcat", - "ConditioningSetArea", - "ConditioningSetAreaPercentage", - "ConditioningSetAreaStrength", - "ConditioningSetMask", - "ConditioningSetTimestepRange", - "ConditioningStableAudio", - "ConditioningZeroOut", - "ControlNetApply", - "ControlNetApplyAdvanced", - "ControlNetApplySD3", - "ControlNetInpaintingAliMamaApply", - "ControlNetLoader", - "CosmosImageToVideoLatent", - "CropMask", - "DiffControlNetLoader", - "DifferentialDiffusion", - "DiffusersLoader", - "DisableNoise", - "DualCFGGuider", - "DualCLIPLoader", - "EmptyCosmosLatentVideo", - "EmptyHunyuanLatentVideo", - "EmptyImage", - "EmptyLTXVLatentVideo", - "EmptyLatentAudio", - "EmptyLatentImage", - "EmptyMochiLatentVideo", - "EmptySD3LatentImage", - "ExponentialScheduler", - "FeatherMask", - "FlipSigmas", - "FluxDisableGuidance", - "FluxGuidance", - "FreeU", - "FreeU_V2", - "GITSScheduler", - "GLIGENLoader", - "GLIGENTextBoxApply", - "GrowMask", - "HyperTile", - "HypernetworkLoader", - "ImageBatch", - "ImageBlend", - "ImageBlur", - "ImageColorToMask", - "ImageCompositeMasked", - "ImageCrop", - "ImageFromBatch", - "ImageInvert", - "ImageOnlyCheckpointLoader", - "ImageOnlyCheckpointSave", - "ImagePadForOutpaint", - "ImageQuantize", - "ImageScale", - "ImageScaleBy", - "ImageScaleToTotalPixels", - "ImageSharpen", - "ImageToMask", - "ImageUpscaleWithModel", - "InpaintModelConditioning", - "InstructPixToPixConditioning", - "InvertMask", - "JoinImageWithAlpha", - "KSampler", - "KSamplerAdvanced", - "KSamplerSelect", - "KarrasScheduler", - "LTXVConditioning", - "LTXVImgToVideo", - "LTXVScheduler", - "LaplaceScheduler", - "LatentAdd", - "LatentApplyOperation", - "LatentApplyOperationCFG", - "LatentBatch", - "LatentBatchSeedBehavior", - "LatentBlend", - "LatentComposite", - "LatentCompositeMasked", - "LatentCrop", - "LatentFlip", - "LatentFromBatch", - "LatentInterpolate", - "LatentMultiply", - "LatentOperationSharpen", - "LatentOperationTonemapReinhard", - "LatentRotate", - "LatentSubtract", - "LatentUpscale", - "LatentUpscaleBy", - "Load3D", - "Load3DAnimation", - "LoadAudio", - "LoadImage", - "LoadImageMask", - "LoadLatent", - "LoraLoader", - "LoraLoaderModelOnly", - "LoraSave", - "Mahiro", - "MaskComposite", - "MaskToImage", - "ModelMergeAdd", - "ModelMergeAuraflow", - "ModelMergeBlocks", - "ModelMergeFlux1", - "ModelMergeLTXV", - "ModelMergeMochiPreview", - "ModelMergeSD1", - "ModelMergeSD2", - "ModelMergeSD35_Large", - "ModelMergeSD3_2B", - "ModelMergeSDXL", - "ModelMergeSimple", - "ModelMergeSubtract", - "ModelSamplingAuraFlow", - "ModelSamplingContinuousEDM", - "ModelSamplingContinuousV", - "ModelSamplingDiscrete", - "ModelSamplingFlux", - "ModelSamplingLTXV", - "ModelSamplingSD3", - "ModelSamplingStableCascade", - "ModelSave", - "Morphology", - "PatchModelAddDownscale", - "PerpNeg", - "PerpNegGuider", - "PerturbedAttentionGuidance", - "PhotoMakerEncode", - "PhotoMakerLoader", - "PolyexponentialScheduler", - "PorterDuffImageComposite", - "Preview3D", - "PreviewAudio", - "PreviewImage", - "RandomNoise", - "RebatchImages", - "RebatchLatents", - "RepeatImageBatch", - "RepeatLatentBatch", - "RescaleCFG", - "SDTurboScheduler", - "SD_4XUpscale_Conditioning", - "SV3D_Conditioning", - "SVD_img2vid_Conditioning", - "SamplerCustom", - "SamplerCustomAdvanced", - "SamplerDPMAdaptative", - "SamplerDPMPP_2M_SDE", - "SamplerDPMPP_2S_Ancestral", - "SamplerDPMPP_3M_SDE", - "SamplerDPMPP_SDE", - "SamplerEulerAncestral", - "SamplerEulerAncestralCFGPP", - "SamplerEulerCFGpp", - "SamplerLCMUpscale", - "SamplerLMS", - "SaveAnimatedPNG", - "SaveAnimatedWEBP", - "SaveAudio", - "SaveImage", - "SaveImageWebsocket", - "SaveLatent", - "SelfAttentionGuidance", - "SetFirstSigma", - "SetLatentNoiseMask", - "SetUnionControlNetType", - "SkipLayerGuidanceDiT", - "SkipLayerGuidanceSD3", - "SolidMask", - "SplitImageWithAlpha", - "SplitSigmas", - "SplitSigmasDenoise", - "StableCascade_EmptyLatentImage", - "StableCascade_StageB_Conditioning", - "StableCascade_StageC_VAEEncode", - "StableCascade_SuperResolutionControlnet", - "StableZero123_Conditioning", - "StableZero123_Conditioning_Batched", - "StubConstantImage", - "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", - "TestIsChangedWithConstants", - "TestLazyMixImages", - "TestListToAccumulationNode", - "TestMakeListNode", - "TestMixedExpansionReturns", - "TestStringConditions", - "TestToBoolNode", - "TestVariadicAverage", - "TestWhileLoopClose", - "TestWhileLoopOpen", - "ThresholdMask", - "TomePatchModel", - "TorchCompileModel", - "TripleCLIPLoader", - "UNETLoader", - "UNetCrossAttentionMultiply", - "UNetSelfAttentionMultiply", - "UNetTemporalAttentionMultiply", - "UpscaleModelLoader", - "VAEDecode", - "VAEDecodeAudio", - "VAEDecodeTiled", - "VAEEncode", - "VAEEncodeAudio", - "VAEEncodeForInpaint", - "VAEEncodeTiled", - "VAELoader", - "VAESave", - "VPScheduler", - "VideoLinearCFGGuidance", - "VideoTriangleCFGGuidance", - "WebcamCapture", - "unCLIPCheckpointLoader", - "unCLIPConditioning" - ], - { - "title_aux": "ComfyUI" - } - ], - "https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4": [ - [ - "CheckpointLoaderNF4" - ], - { - "title_aux": "ComfyUI_bitsandbytes_NF4 [EXPERIMENTAL]" - } - ], - "https://github.com/comfypod/ComfyUI-Comflow": [ - [ - "ComflowInputBoolean", - "ComflowInputCheckpoint", - "ComflowInputImage", - "ComflowInputImageAlpha", - "ComflowInputImageBatch", - "ComflowInputLora", - "ComflowInputNumber", - "ComflowInputNumberInt", - "ComflowInputNumberSlider", - "ComflowInputText", - "ComflowInputVid", - "ComflowInputVideo", - "ComflowWebsocketImageInput", - "ComflowWebsocketImageOutput" - ], - { - "description": "", - "nickname": "Comflow", - "title": "comflow", - "title_aux": "ComfyUI-Comflow" - } - ], - "https://github.com/corbin-hayden13/ComfyUI-Better-Dimensions": [ - [ - "BetterImageDimensions", - "PureRatio", - "SDXLDimensions" - ], - { - "title_aux": "ComfyUI-Better-Dimensions" - } - ], - "https://github.com/cwebbi1/VoidCustomNodes": [ - [ - "Prompt Parser", - "String Combiner" - ], - { - "title_aux": "VoidCustomNodes" - } - ], - "https://github.com/denislov/Comfyui_AutoSurvey": [ - [ - "AddDoc2Knowledge", - "AutoSurvey", - "ChatModel", - "ComfyMilvus", - "ComfyWeaviate", - "ManageDatabase", - "MilvusScheme", - "MsField", - "QueryKnowledge", - "WcProperty", - "WcPropertyComb", - "WriteOutline", - "WriteSection" - ], - { - "title_aux": "Comfyui_AutoSurvey" - } - ], - "https://github.com/dfl/comfyui-stylegan": [ - [ - "BatchAverageStyleGANLatents", - "BlendStyleGANLatents", - "GenerateStyleGANLatent", - "LoadStyleGAN", - "LoadStyleGANLatentImg", - "SaveStyleGANLatentImg", - "StyleGANInversion", - "StyleGANLatentFromBatch", - "StyleGANSampler" - ], - { - "title_aux": "comfyui-stylegan" - } - ], - "https://github.com/dihan/comfyui-random-kps": [ - [ - "RandomFaceKeypoints" - ], - { - "title_aux": "ComfyUI Random Keypoints for InstantID [WIP]" - } - ], - "https://github.com/doucx/ComfyUI_WcpD_Utility_Kit": [ - [ - "BlackImage", - "CopyImage(Wayland)", - "ExecStrAsCode", - "MergeStrings", - "YamlToPrompt" - ], - { - "title_aux": "ComfyUI_WcpD_Utility_Kit" - } - ], - "https://github.com/dowands/ComfyUI-AddMaskForICLora": [ - [ - "AddMaskForICLora" - ], - { - "title_aux": "AddMaskForICLora" - } - ], - "https://github.com/downlifted/ComfyUI_BWiZ_Nodes": [ - [ - "BWIZInteractiveLogMonitor", - "BWIZ_AdvancedLoadImageBatch", - "BWIZ_CaptainWebhook", - "BWIZ_ComfyEmail", - "BWIZ_ErrorDetector", - "BWIZ_HFRepoBatchLoader", - "BWIZ_NotificationSound" - ], - { - "title_aux": "ComfyUI_BWiZ_Nodes [WIP]" - } - ], - "https://github.com/eigenpunk/ComfyUI-audio": [ - [ - "ApplyVoiceFixer", - "BatchAudio", - "BlendAudio", - "ClipAudioRegion", - "CombineImageWithAudio", - "ConcatAudio", - "ConvertAudio", - "FilterAudio", - "FlattenAudioBatch", - "HifiGANApply", - "HifiGANLoader", - "HifiGANModelParams", - "InvertAudioPhase", - "LoadAudio", - "MusicgenGenerate", - "MusicgenHFGenerate", - "MusicgenHFLoader", - "MusicgenLoader", - "NormalizeAudio", - "PreviewAudio", - "ResampleAudio", - "SaveAudio", - "SpectrogramImage", - "Tacotron2Generate", - "Tacotron2Loader", - "ToMelSpectrogram", - "TortoiseTTSGenerate", - "TortoiseTTSLoader", - "TrimAudio", - "TrimAudioSamples", - "TrimSilence", - "VALLEXGenerator", - "VALLEXLoader", - "VALLEXVoicePromptFromAudio", - "VALLEXVoicePromptLoader", - "WaveGlowApply", - "WaveGlowLoader" - ], - { - "title_aux": "ComfyUI-audio" - } - ], - "https://github.com/ejektaflex/ComfyUI-Ty": [ - [ - "Lora Block Weight Regex Loader // Ty" - ], - { - "title_aux": "ComfyUI-Ty" - } - ], - "https://github.com/emranemran/ComfyUI-FasterLivePortrait": [ - [ - "FasterLivePortraitProcess", - "LoadFasterLivePortraitModels" - ], - { - "title_aux": "ComfyUI-FasterLivePortrait" - } - ], - "https://github.com/endman100/ComfyUI-SaveAndLoadPromptCondition": [ - [ - "LoadContditioning", - "SaveConditioning" - ], - { - "title_aux": "ComfyUI Nodes: SaveConditioning and LoadConditioning" - } - ], - "https://github.com/endman100/ComfyUI-augmentation": [ - [ - "RamdomFlipImage (endman100)" - ], - { - "title_aux": "ComfyUI-augmentation" - } - ], - "https://github.com/ericbeyer/guidance_interval": [ - [ - "Guidance Interval" - ], - { - "title_aux": "guidance_interval" - } - ], - "https://github.com/esciron/ComfyUI-HunyuanVideoWrapper-Extended": [ - [ - "DownloadAndLoadHyVideoTextEncoder", - "HyVideoBlockSwap", - "HyVideoDecode", - "HyVideoEncode", - "HyVideoModelLoader", - "HyVideoSTG", - "HyVideoSampler", - "HyVideoTextEncode", - "HyVideoTorchCompileSettings", - "HyVideoVAELoader" - ], - { - "title_aux": "ComfyUI-HunyuanVideoWrapper-Extended [WIP]" - } - ], - "https://github.com/exectails/comfyui-et_scripting": [ - [ - "ETPythonTextScript3Node" - ], - { - "title_aux": "Scripting" - } - ], - "https://github.com/fablestudio/ComfyUI-Showrunner-Utils": [ - [ - "AlignFace", - "GenerateTimestamp", - "GetMostCommonColors", - "ReadImage", - "RenderOpenStreetMapTile" - ], - { - "title_aux": "ComfyUI-Showrunner-Utils" - } - ], - "https://github.com/flowtyone/comfyui-flowty-lcm": [ - [ - "LCMSampler" - ], - { - "title_aux": "comfyui-flowty-lcm" - } - ], - "https://github.com/flyingdogsoftware/gyre_for_comfyui": [ - [ - "BackgroundRemoval", - "GyreIfElse", - "GyreLoopEnd", - "GyreLoopStart" - ], - { - "title_aux": "Gyre for ComfyUI" - } - ], - "https://github.com/foglerek/comfyui-cem-tools": [ - [ - "ProcessImageBatch" - ], - { - "title_aux": "comfyui-cem-tools" - } - ], - "https://github.com/fritzprix/ComfyUI-LLM-Utils": [ - [ - "WeightedDict", - "WeightedDictConcat", - "WeightedDictInput", - "WeightedDictSelect", - "WeightedDictSelectGroup", - "WeightedDictToPrompt" - ], - { - "title_aux": "ComfyUI-LLM-Utils [WIP]" - } - ], - "https://github.com/galoreware/ComfyUI-GaloreNodes": [ - [ - "GNI_HEX_TO_COLOR", - "GNI_RGB_TO_COLOR", - "GN_COLOR_TO_INT", - "GN_IO_GET_FILENAME", - "GN_MASK_TO_IMAGE", - "GN_SNAP_RESIZE" - ], - { - "title_aux": "ComfyUI-GaloreNodes [WIP]" - } - ], - "https://github.com/gameltb/ComfyUI_stable_fast": [ - [ - "ApplyStableFastUnet", - "ApplyTensorRTControlNet", - "ApplyTensorRTUnet", - "ApplyTensorRTVaeDecoder" - ], - { - "title_aux": "ComfyUI_stable_fast" - } - ], - "https://github.com/githubYiheng/comfyui_median_filter": [ - [ - "ImageMedianFilter" - ], - { - "title_aux": "comfyui_median_filter" - } - ], - "https://github.com/go-package-lab/ComfyUI-Tools-Video-Combine": [ - [ - "Tools:CopyFile", - "Tools:Image2video", - "Tools:LoadAudioUrl", - "Tools:PreviewVideo", - "Tools:SetString", - "Tools:SetValue", - "Tools:VideoWatermark" - ], - { - "title_aux": "ComfyUI-Tools-Video-Combine [WIP]" - } - ], - "https://github.com/grimli333/ComfyUI_Grim": [ - [ - "GenerateFileName", - "TwoStringsFormat" - ], - { - "title_aux": "ComfyUI_Grim" - } - ], - "https://github.com/haodman/ComfyUI_Rain": [ - [ - "Rain_ImageSize", - "Rain_IntToFloat", - "Rain_Math", - "Rain_ValueSwitch" - ], - { - "title_aux": "ComfyUI_Rain" - } - ], - "https://github.com/haofanwang/ComfyUI-InstantStyle": [ - [ - "BaseModelLoader", - "InstantStyleGenerationNode", - "InstantStyleLoader", - "PromptLoader" - ], - { - "title_aux": "ComfyUI-InstantStyle" - } - ], - "https://github.com/haomole/Comfyui-SadTalker": [ - [ - "LoadRefVideo", - "SadTalker", - "ShowAudio", - "ShowText", - "ShowVideo" - ], - { - "title_aux": "Comfyui-SadTalker" - } - ], - "https://github.com/hay86/ComfyUI_AceNodes": [ - [ - "ACE_AnyInputSwitchBool", - "ACE_AnyInputToAny", - "ACE_AudioLoad", - "ACE_AudioPlay", - "ACE_AudioSave", - "ACE_Expression_Eval", - "ACE_Float", - "ACE_ImageColorFix", - "ACE_ImageConstrain", - "ACE_ImageFaceCrop", - "ACE_ImageGetSize", - "ACE_ImageLoadFromCloud", - "ACE_ImagePixelate", - "ACE_ImageQA", - "ACE_ImageRemoveBackground", - "ACE_ImageSaveToCloud", - "ACE_Integer", - "ACE_MaskBlur", - "ACE_Seed", - "ACE_Text", - "ACE_TextConcatenate", - "ACE_TextGoogleTranslate", - "ACE_TextInputSwitch2Way", - "ACE_TextInputSwitch4Way", - "ACE_TextInputSwitch8Way", - "ACE_TextList", - "ACE_TextPreview", - "ACE_TextSelector", - "ACE_TextToResolution", - "ACE_TextTranslate", - "ACE_VideoLoad", - "ACE_VideoPreview" - ], - { - "title_aux": "ComfyUI AceNodes [UNSAFE]" - } - ], - "https://github.com/hgabha/WWAA-CustomNodes": [ - [ - "WWAA-BuildString", - "WWAA-LineCount", - "WWAA_DitherNode", - "WWAA_ImageLoader" - ], - { - "title_aux": "WWAA-CustomNodes" - } - ], - "https://github.com/horidream/ComfyUI-Horidream": [ - [ - "PassThroughWithSound" - ], - { - "title_aux": "ComfyUI-Horidream" - } - ], - "https://github.com/hotpizzatactics/ComfyUI-WaterMark-Detector": [ - [ - "AdaptiveThresholding", - "AdvancedWatermarkEnhancement", - "AdvancedWaveletWatermarkEnhancement", - "CLAHEEnhancement", - "CombineEnhancements", - "ComprehensiveImageEnhancement", - "DenoisingFilter", - "EdgeDetection", - "FlexibleCombineEnhancements", - "HighPassFilter", - "ImprovedGrayColorEnhancement", - "MorphologicalOperations", - "TextureEnhancement", - "WatermarkEnhancement" - ], - { - "title_aux": "ComfyUI-WaterMark-Detector" - } - ], - "https://github.com/hotpot-killer/ComfyUI_AlexNodes": [ - [ - "InstructPG" - ], - { - "title_aux": "ComfyUI_AlexNodes" - } - ], - "https://github.com/houdinii/comfy-magick": [ - [ - "AdaptiveBlur", - "AdaptiveSharpen", - "AddNoise", - "BlueShift", - "Blur", - "Charcoal", - "Colorize", - "CropByAspectRatio", - "Despeckle", - "Edge", - "Emboss", - "FX", - "GaussianBlur", - "Implode", - "Kuwahara", - "MotionBlur", - "RotationalBlur", - "SelectiveBlur", - "Sepia", - "Shade", - "Sharpen", - "Sketch", - "Solarize", - "Spread", - "Stereogram", - "Swirl", - "Tint", - "UnsharpMask", - "Vignette", - "WaveletDenoise" - ], - { - "title_aux": "comfy-magick [WIP]" - } - ], - "https://github.com/huizhang0110/ComfyUI_Easy_Nodes_hui": [ - [ - "EasyBgRemover", - "EasyBgRemover_ModelLoader", - "EasyControlNetApply", - "EasyControlNetLoader", - "EasyEmptyLatentImage", - "EasyLatentToCondition", - "EasyLoadImage" - ], - { - "title_aux": "ComfyUI_Easy_Nodes_hui" - } - ], - "https://github.com/hunterssl/ComfyUI_SSLNodes": [ - [ - "SSLGetJsonKeysCount", - "SSLLoadCheckpointByName", - "SSLLoadJson", - "SSLRandomNumInLoop", - "SSLRandomSeedInLoop", - "SSLSaveImageOutside" - ], - { - "title_aux": "ComfyUI_SSLNodes" - } - ], - "https://github.com/hy134300/comfyui-hb-node": [ - [ - "generate story", - "hy save image", - "latent to list", - "movie batch", - "movie generate", - "sound voice", - "text concat" - ], - { - "title_aux": "comfyui-hb-node" - } - ], - "https://github.com/hy134300/comfyui-hydit": [ - [ - "DiffusersCLIPLoader", - "DiffusersCheckpointLoader", - "DiffusersClipTextEncode", - "DiffusersControlNetLoader", - "DiffusersLoraLoader", - "DiffusersModelMakeup", - "DiffusersPipelineLoader", - "DiffusersSampler", - "DiffusersSchedulerLoader", - "DiffusersVAELoader" - ], - { - "title_aux": "comfyui-hydit" - } - ], - "https://github.com/ilovejohnwhite/Tracer": [ - [ - "BillyGoatNode", - "EcstaticNode", - "HintImageEnchance", - "Image Load TTK", - "ImageGenResolutionFromImage", - "ImageGenResolutionFromLatent", - "KillMeNode", - "LinkMasterNode", - "OkayBuddyNode", - "OutlineRealNode", - "OutlineStandardNode", - "PixelPerfectResolution", - "SuckerPunch", - "UWU_Preprocessor", - "VooDooNode" - ], - { - "title_aux": "Kolors Awesome Prompts [WIP]" - } - ], - "https://github.com/immersiveexperience/ie-comfyui-color-nodes": [ - [ - "Average Color", - "Complementary Color", - "Hex Color to Image", - "Hex to Color Name", - "Random String" - ], - { - "title_aux": "ie-comfyui-color-nodes" - } - ], - "https://github.com/io-club/ComfyUI-LuminaNext": [ - [ - "GemmaClipLoader" - ], - { - "title_aux": "ComfyUI-LuminaNext [WIP]" - } - ], - "https://github.com/jammyfu/ComfyUI_PaintingCoderUtils": [ - [ - "ClickPopup", - "ColorPicker", - "PaintingCoder::DynamicImageCombiner", - "PaintingCoder::DynamicMaskCombiner", - "PaintingCoder::ImageLatentCreator", - "PaintingCoder::ImageLatentCreatorPlus", - "PaintingCoder::ImageResolutionAdjuster", - "PaintingCoder::ImageSizeCreator", - "PaintingCoder::ImageSizeCreatorPlus", - "PaintingCoder::ImageSwitch", - "PaintingCoder::ImageToBase64", - "PaintingCoder::LatentSwitch", - "PaintingCoder::MaskPreview", - "PaintingCoder::MaskSwitch", - "PaintingCoder::MultilineTextInput", - "PaintingCoder::RemoveEmptyLinesAndLeadingSpaces", - "PaintingCoder::ShowTextPlus", - "PaintingCoder::SimpleTextInput", - "PaintingCoder::TextCombiner", - "PaintingCoder::TextSwitch", - "PaintingCoder::WebImageLoader", - "RemoveEmptyLinesAndLeadingSpacesAdvance" - ], - { - "title_aux": "ComfyUI PaintingCoderUtils Nodes [WIP]" - } - ], - "https://github.com/jgbrblmd/ComfyUI-ComfyFluxSize": [ - [ - "ComfyFluxSize" - ], - { - "title_aux": "ComfyUI-ComfyFluxSize [WIP]" - } - ], - "https://github.com/jimmm-ai/TimeUi-a-ComfyUi-Timeline-Node": [ - [ - "jimmm.ai.TimelineUI" - ], - { - "title_aux": "TimeUi a ComfyUI Timeline Node System [WIP]" - } - ], - "https://github.com/jimstudt/ComfyUI-Jims-Nodes": [ - [ - "ChooseFromStringList", - "Cubby", - "DefineWord", - "DictFromJSON", - "DictionaryToJSON", - "ImageToSolidBackground", - "JSONToDictionary", - "LiftFromBackground", - "LoadImageAndInfoFromPath", - "LookupWord", - "ReplaceWords", - "TextToStringList", - "ZoomFocus" - ], - { - "title_aux": "Jim's ComfyUI Nodes [WIP]" - } - ], - "https://github.com/jn-jairo/jn_node_suite_comfyui": [ - [ - "JN_AreaInfo", - "JN_AreaNormalize", - "JN_AreaWidthHeight", - "JN_AreaXY", - "JN_Blip", - "JN_BlipLoader", - "JN_BooleanOperation", - "JN_Condition", - "JN_CoolDown", - "JN_CoolDownOutput", - "JN_CropFace", - "JN_DatetimeFormat", - "JN_DatetimeInfo", - "JN_DatetimeNow", - "JN_Dump", - "JN_DumpOutput", - "JN_FaceRestoreModelLoader", - "JN_FaceRestoreWithModel", - "JN_FirstActive", - "JN_ImageAddMask", - "JN_ImageBatch", - "JN_ImageCenterArea", - "JN_ImageCrop", - "JN_ImageGrid", - "JN_ImageInfo", - "JN_ImageSharpness", - "JN_ImageSquare", - "JN_ImageUncrop", - "JN_KSampler", - "JN_KSamplerAdvancedParams", - "JN_KSamplerFaceRestoreParams", - "JN_KSamplerResizeInputParams", - "JN_KSamplerResizeMaskAreaParams", - "JN_KSamplerResizeOutputParams", - "JN_KSamplerSeamlessParams", - "JN_KSamplerTileParams", - "JN_LoadImageDirectory", - "JN_LogicOperation", - "JN_MaskInfo", - "JN_MathOperation", - "JN_MathOperationArray", - "JN_PrimitiveArrayInfo", - "JN_PrimitiveBatchToArray", - "JN_PrimitiveBoolean", - "JN_PrimitiveFloat", - "JN_PrimitiveInt", - "JN_PrimitivePrompt", - "JN_PrimitiveString", - "JN_PrimitiveStringMultiline", - "JN_PrimitiveStringToArray", - "JN_PrimitiveToArray", - "JN_PrimitiveToBoolean", - "JN_PrimitiveToFloat", - "JN_PrimitiveToInt", - "JN_PrimitiveToString", - "JN_RemoveBackground", - "JN_Seamless", - "JN_SeamlessBorder", - "JN_SeamlessBorderCrop", - "JN_SelectItem", - "JN_Sleep", - "JN_SleepOutput", - "JN_SliceOperation", - "JN_StopIf", - "JN_StopIfOutput", - "JN_TextConcatenation", - "JN_TextReplace", - "JN_TimedeltaFormat", - "JN_TimedeltaInfo", - "JN_VAEPatch" - ], - { - "title_aux": "jn_node_suite_comfyui [WIP]" - } - ], - "https://github.com/jonnydolake/ComfyUI-AIR-Nodes": [ - [ - "ForceMinimumBatchSize", - "ImageCompositeChained", - "MatchImageCountToMaskCount", - "RandomCharacterPrompts", - "TargetLocationCrop", - "TargetLocationPaste", - "string_list_to_prompt_schedule" - ], - { - "title_aux": "ComfyUI-AIR-Nodes" - } - ], - "https://github.com/jordancoult/ComfyUI_HelpfulNodes": [ - [ - "JCo_CropAroundKPS" - ], - { - "title_aux": "ComfyUI_HelpfulNodes" - } - ], - "https://github.com/jtscmw01/ComfyUI-DiffBIR": [ - [ - "DiffBIR_sample", - "DiffBIR_sample_advanced", - "Simple_load", - "Stage1_load", - "Stage2_load" - ], - { - "title_aux": "ComfyUI-DiffBIR" - } - ], - "https://github.com/jtydhr88/ComfyUI-Unique3D": [ - [ - "Unique3DLoadPipeline", - "Unique3DRun - Geo Reconstruct", - "Unique3DRun - MVPrediction" - ], - { - "title_aux": "ComfyUI-Unique3D [WIP]" - } - ], - "https://github.com/kadirnar/ComfyUI-Adapter": [ - [ - "GarmentSegLoader" - ], - { - "title_aux": "ComfyUI-Adapter [WIP]" - } - ], - "https://github.com/kandy/ComfyUI-KAndy": [ - [ - "KAndyCivitImagesAPI", - "KAndyCivitPromptAPI", - "KAndyImageSave", - "KAndyImagesByCss", - "KAndyLoadImageFromUrl", - "KAndyNoiseCondition", - "KCivitaiPostAPI", - "KPornImageAPI", - "KPromtGen", - "KandySimplePrompt" - ], - { - "title_aux": "ComfyUI-KAndy" - } - ], - "https://github.com/kappa54m/ComfyUI_Usability": [ - [ - "KLoadImageByPath", - "KLoadImageByPathAdvanced", - "KLoadImageDedup" - ], - { - "title_aux": "ComfyUI_Usability (WIP)" - } - ], - "https://github.com/karthikg-09/ComfyUI-3ncrypt": [ - [ - "Enhanced Save Image", - "Markdown Editor" - ], - { - "title_aux": "ComfyUI-KG09 [WIP]" - } - ], - "https://github.com/kijai/ComfyUI-CV-VAE": [ - [ - "CV_VAE_Decode", - "CV_VAE_Encode", - "CV_VAE_Load" - ], - { - "title_aux": "ComfyUI-CV-VAE" - } - ], - "https://github.com/kijai/ComfyUI-DeepSeek-VL": [ - [ - "deepseek_vl_inference", - "deepseek_vl_model_loader" - ], - { - "title_aux": "ComfyUI nodes to use DeepSeek-VL" - } - ], - "https://github.com/kijai/ComfyUI-DiffSynthWrapper": [ - [ - "DiffSynthSampler", - "DownloadAndLoadDiffSynthExVideoSVD" - ], - { - "title_aux": "ComfyUI DiffSynth wrapper nodes" - } - ], - "https://github.com/kijai/ComfyUI-DiffusersSD3Wrapper": [ - [ - "LoadSD3DiffusersPipeline", - "SD3ControlNetSampler" - ], - { - "title_aux": "ComfyUI-DiffusersSD3Wrapper" - } - ], - "https://github.com/kijai/ComfyUI-EasyAnimateWrapper": [ - [ - "DownloadAndLoadEasyAnimateModel", - "EasyAnimateDecode", - "EasyAnimateImageEncoder", - "EasyAnimateResize", - "EasyAnimateSampler", - "EasyAnimateTextEncode" - ], - { - "title_aux": "ComfyUI-EasyAnimateWrapper [WIP]" - } - ], - "https://github.com/kijai/ComfyUI-FollowYourEmojiWrapper": [ - [ - "DownloadAndLoadFYEModel", - "FYECLIPEncode", - "FYEClipEmbedToComfy", - "FYELandmarkEncode", - "FYELandmarkToComfy", - "FYEMediaPipe", - "FYESampler", - "FYESamplerLong" - ], - { - "title_aux": "ComfyUI-FollowYourEmojiWrapper [WIP]" - } - ], - "https://github.com/kijai/ComfyUI-HunyuanVideoWrapper": [ - [ - "DownloadAndLoadHyVideoTextEncoder", - "HyVideoBlockSwap", - "HyVideoCFG", - "HyVideoContextOptions", - "HyVideoCustomPromptTemplate", - "HyVideoDecode", - "HyVideoEmptyTextEmbeds", - "HyVideoEncode", - "HyVideoEnhanceAVideo", - "HyVideoInverseSampler", - "HyVideoLatentPreview", - "HyVideoLoraBlockEdit", - "HyVideoLoraSelect", - "HyVideoModelLoader", - "HyVideoPromptMixSampler", - "HyVideoReSampler", - "HyVideoSTG", - "HyVideoSampler", - "HyVideoTeaCache", - "HyVideoTextEmbedsLoad", - "HyVideoTextEmbedsSave", - "HyVideoTextEncode", - "HyVideoTextImageEncode", - "HyVideoTorchCompileSettings", - "HyVideoVAELoader" - ], - { - "title_aux": "ComfyUI-HunyuanVideoWrapper [WIP]" - } - ], - "https://github.com/kijai/ComfyUI-MMAudio": [ - [ - "MMAudioFeatureUtilsLoader", - "MMAudioModelLoader", - "MMAudioSampler", - "MMAudioVoCoderLoader" - ], - { - "title_aux": "ComfyUI-MMAudio" - } - ], - "https://github.com/kijai/ComfyUI-MochiWrapper": [ - [ - "DownloadAndLoadMochiModel", - "MochiDecode", - "MochiDecodeSpatialTiling", - "MochiFasterCache", - "MochiImageEncode", - "MochiLatentPreview", - "MochiModelLoader", - "MochiSampler", - "MochiSigmaSchedule", - "MochiTextEncode", - "MochiTorchCompileSettings", - "MochiVAEEncoderLoader", - "MochiVAELoader" - ], - { - "title_aux": "ComfyUI-MochiWrapper [WIP]" - } - ], - "https://github.com/kijai/ComfyUI-VEnhancer": [ - [ - "DownloadAndLoadVEnhancerModel", - "VEnhancerSampler", - "VEnhancerUnpad" - ], - { - "title_aux": "ComfyUI nodes for VEnhancer [WIP]" - } - ], - "https://github.com/kijai/ComfyUI-VideoNoiseWarp": [ - [ - "GetWarpedNoiseFromVideo", - "GetWarpedNoiseFromVideoAnimateDiff", - "GetWarpedNoiseFromVideoCogVideoX" - ], - { - "title_aux": "ComfyUI-VideoNoiseWarp [WIP]" - } - ], - "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": [ - [ - "KimaraAIBatchImages", - "KimaraAIWatermarker" - ], - { - "title_aux": "Advanced Watermarking Tools [WIP]" - } - ], - "https://github.com/kk8bit/KayTool": [ - [ - "Abc_Math", - "Baidu_Translater", - "Color_Adjustment", - "Custom_Save_Image", - "Display_Any", - "Image_Size_Extractor", - "Strong_Prompt" - ], - { - "title_aux": "KayTool" - } - ], - "https://github.com/krich-cto/ComfyUI-Flow-Control": [ - [ - "CLIPLoaderGGUF", - "DualCLIPLoaderGGUF", - "FlowCheckpointPresetLoader", - "FlowClipCondition", - "FlowClipTextEncode", - "FlowConditioningAutoSwitch", - "FlowFluxPresetLoader", - "FlowGate", - "FlowImageAutoBatch", - "FlowImageCondition", - "FlowKSampler", - "FlowLatentAutoBatch", - "FlowLatentCondition", - "FlowLoraLoader", - "FlowLoraLoaderModelOnly", - "FlowModelManager", - "FlowSaveImage", - "TripleCLIPLoaderGGUF", - "UnetLoaderGGUF", - "UnetLoaderGGUFAdvanced" - ], - { - "title_aux": "ComfyUI Flow Control [UNSTABLE]" - } - ], - "https://github.com/kuschanow/ComfyUI-SD-Slicer": [ - [ - "SdSlicer" - ], - { - "title_aux": "ComfyUI-SD-Slicer" - } - ], - "https://github.com/kxh/ComfyUI-ImageUpscaleWithModelMultipleTimes": [ - [ - "ImageUpscaleWithModelMultipleTimes" - ], - { - "title_aux": "ComfyUI-ImageUpscaleWithModelMultipleTimes" - } - ], - "https://github.com/kxh/ComfyUI-sam2": [ - [ - "Segment" - ], - { - "title_aux": "ComfyUI-sam2" - } - ], - "https://github.com/kycg/comfyui-Kwtoolset": [ - [ - "KWImageResizeByLongerSide", - "KWNagetiveString", - "KWPositiveString", - "KWShowAnything", - "KWanywhereString", - "KwtoolsetChangeOpenpose", - "KwtoolsetCheckpointLoaderwithpreview", - "KwtoolsetConditioningSelect", - "KwtoolsetGetHipMask", - "KwtoolsetGetHipMasktest", - "KwtoolsetGetImageSize", - "KwtoolsetGrowMaskPlus", - "KwtoolsetImageSelect", - "KwtoolsetLoadCheckpointsBatch", - "KwtoolsetLoraLoaderwithpreview", - "KwtoolsetMaskAdd", - "KwtoolsetModelSelect", - "LatentMatch" - ], - { - "title_aux": "comfyui-Kwtoolset" - } - ], - "https://github.com/kylegrover/comfyui-python-cowboy": [ - [ - "PythonScript" - ], - { - "title_aux": "comfyui-python-cowboy [UNSAFE]" - } - ], - "https://github.com/laksjdjf/ssd-1b-comfyui": [ - [ - "SSD-1B-Loader" - ], - { - "title_aux": "ssd-1b-comfyui" - } - ], - "https://github.com/leadbreak/comfyui-faceaging": [ - [ - "AgeTransformationNode" - ], - { - "title_aux": "Face Aging [WIP]" - } - ], - "https://github.com/leeguandong/ComfyUI_AliControlnetInpainting": [ - [ - "AliInpaintingsampler", - "EcomXL_AddFG", - "EcomXL_Condition", - "EcomXL_Controlnet_ModelLoader", - "EcomXL_LoadImage", - "EcomXL_SDXL_Inpaint_ModelLoader", - "Flux_Controlnet_ModelLoader", - "Flux_Inpainting_ModelLoader", - "SD3_Controlnet_ModelLoader", - "SD3_Inpainting_ModelLoader" - ], - { - "title_aux": "ComfyUI_AliControlnetInpainting [WIP]" - } - ], - "https://github.com/leoleelxh/ComfyUI-MidjourneyNode-leoleexh": [ - [ - "MidjourneyGenerateNode", - "MidjourneyUpscaleNode" - ], - { - "title_aux": "ComfyUI-MidjourneyNode-leoleexh" - } - ], - "https://github.com/lgldlk/ComfyUI-img-tiler": [ - [ - "PC ImageListTileMaker", - "PC TileMaker", - "PC TilerImage", - "PC TilerSelect" - ], - { - "title_aux": "ComfyUI-img-tiler" - } - ], - "https://github.com/linhusyung/comfyui-Build-and-train-your-network": [ - [ - "Conv_layer", - "Normalization_layer", - "activation_function", - "create_dataset", - "create_intput", - "create_model", - "create_training_task", - "forward_test", - "linear_layer", - "pooling_layer", - "pre_train_layer", - "res_connect", - "show_dimensions", - "view_layer" - ], - { - "title_aux": "ComfyUI Build and Train Your Network [WIP]" - } - ], - "https://github.com/logtd/ComfyUI-Fluxtapoz": [ - [ - "AddFluxFlow", - "ApplyFluxRaveAttention", - "ApplyRefFlux", - "ApplyRegionalConds", - "ConfigureModifiedFlux", - "CreateRegionalCond", - "FlowEditForwardSampler", - "FlowEditGuider", - "FlowEditReverseSampler", - "FlowEditSampler", - "FluxAttnOverride", - "FluxDeGuidance", - "FluxForwardODESampler", - "FluxInverseSampler", - "FluxNoiseMixer", - "FluxReverseODESampler", - "InFluxFlipSigmas", - "InFluxModelSamplingPred", - "OutFluxModelSamplingPred", - "PAGAttention", - "PrepareAttnBank", - "RFDoubleBlocksOverride", - "RFSingleBlocksOverride", - "RegionalStyleModelApply", - "SEGAttention" - ], - { - "title_aux": "ComfyUI-Fluxtapoz [WIP]" - } - ], - "https://github.com/logtd/ComfyUI-HunyuanLoom": [ - [ - "ConfigureModifiedHY", - "HYApplyRegionalConds", - "HYAttnOverride", - "HYCreateRegionalCond", - "HYFetaEnhance", - "HYFlowEditGuider", - "HYFlowEditSampler", - "HYForwardODESampler", - "HYInverseModelSamplingPred", - "HYReverseModelSamplingPred", - "HYReverseODESampler", - "HyVideoFlowEditSamplerWrapper" - ], - { - "title_aux": "ComfyUI-HunyuanLoom [WIP]" - } - ], - "https://github.com/logtd/ComfyUI-Veevee": [ - [ - "ApplyVVModel", - "FlowConfig", - "FlowGetFlow", - "GetRaftFlow", - "InjectionConfig", - "PivotConfig", - "RaveConfig", - "SCAConfig", - "TemporalConfig", - "VVSamplerSampler", - "VVUnsamplerSampler" - ], - { - "title_aux": "ComfyUI-Veevee [WIP]" - } - ], - "https://github.com/longgui0318/comfyui-one-more-step": [ - [ - "Calculate More Step Latent", - "Load More Step Model" - ], - { - "title_aux": "comfyui-one-more-step [WIP]" - } - ], - "https://github.com/lordwedggie/xcpNodes": [ - [ - "derpBaseAlpha", - "derpSlider", - "xcpDerpBool", - "xcpDerpFloat", - "xcpDerpINT", - "xcpDerpSeed" - ], - { - "title_aux": "xcpNodes [WIP]" - } - ], - "https://github.com/ltdrdata/ComfyUI-Workflow-Component": [ - [ - "ComboToString", - "ExecutionBlocker", - "ExecutionControlString", - "ExecutionOneOf", - "ExecutionSwitch", - "InputUnzip", - "InputZip", - "LoopControl", - "LoopCounterCondition", - "OptionalTest", - "TensorToCPU" - ], - { - "title_aux": "ComfyUI-Workflow-Component [WIP]" - } - ], - "https://github.com/lu64k/SK-Nodes": [ - [ - "Ask LLM", - "Color Transfer", - "Image Tracing Node", - "Load LLM", - "Load_Nemotron", - "Natural Saturation", - "OpenAI DAlle Node", - "OpenAI Text Node", - "SK Random File Name", - "SK Save Text", - "SK Text_String", - "SK load text", - "Tone Layer Quantize", - "grey_scale blend" - ], - { - "title_aux": "SK-Nodes" - } - ], - "https://github.com/majorsauce/comfyui_indieTools": [ - [ - "IndCutByMask", - "IndLocalScale", - "IndPastImage", - "IndSolidify", - "IndYoloDetector" - ], - { - "title_aux": "comfyui_indieTools [WIP]" - } - ], - "https://github.com/mamorett/ComfyUI-SmolVLM": [ - [ - "Smolvlm_Caption_Analyzer", - "Smolvlm_Flux_CLIPTextEncode", - "Smolvlm_SaveTags", - "Smolvlm_Tagger" - ], - { - "title_aux": "ComfyUI-SmolVLM [WIP]" - } - ], - "https://github.com/marcueberall/ComfyUI-BuildPath": [ - [ - "Build Path Adv" - ], - { - "title_aux": "ComfyUI-BuildPath" - } - ], - "https://github.com/marduk191/comfyui-marnodes": [ - [ - "ImageToDevice", - "marduk191_5_text_string", - "marduk191_5way_text_switch", - "marduk191_s_random_latent", - "marduk191_workflow_settings" - ], - { - "author": "\u02f6marduk191", - "description": "marduk191s nodes.", - "nickname": "marduk191 workflow settings", - "title": "marduk191 workflow settings", - "title_aux": "comfyui-marnodes" - } - ], - "https://github.com/maruhidd/ComfyUI_Transparent-Background": [ - [ - "FillTransparentNode", - "RemoveBackgroundNode" - ], - { - "title_aux": "Transparent Background for ComfyUI" - } - ], - "https://github.com/mashb1t/comfyui-nodes-mashb1t": [ - [ - "mashb1t: LoadImage" - ], - { - "title_aux": "ComfyUI mashb1t nodes" - } - ], - "https://github.com/mehbebe/ComfyLoraGallery": [ - [ - "LoraGallery" - ], - { - "title_aux": "ComfyLoraGallery [WIP]" - } - ], - "https://github.com/melMass/ComfyUI-Lygia": [ - [ - "LygiaProgram", - "LygiaUniforms" - ], - { - "title_aux": "ComfyUI-Lygia" - } - ], - "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext": [ - [ - "Add zSNR Sigma max", - "ConcatSigmas", - "CosineScheduler", - "GaussianScheduler", - "InvertSigmas", - "LogNormal Scheduler", - "OffsetSigmas", - "PerpNegScheduledCFGGuider", - "ScheduledCFGGuider" - ], - { - "title_aux": "ComfyUI-ScheduledGuider-Ext" - } - ], - "https://github.com/mikeymcfish/FishTools": [ - [ - "AnaglyphCreator", - "AnaglyphCreatorPro", - "Deptherize", - "LaserCutterFull", - "ShadowMap" - ], - { - "author": "Fish", - "description": "This extension provides tools for generating laser cutter ready files and other fun stuff", - "nickname": "FishTools", - "title": "FishTools", - "title_aux": "LaserCutterFull and Deptherize Nodes" - } - ], - "https://github.com/minhtuannhn/comfyui-gemini-studio": [ - [ - "GetFileNameFromURL" - ], - { - "title_aux": "comfyui-gemini-studio [WIP]" - } - ], - "https://github.com/miragecoa/ComfyUI-LLM-Evaluation": [ - [ - "AccuracyNode", - "ClearVRAM", - "DeleteFile", - "DownloadHuggingFaceModel", - "F1ScoreNode", - "JSONToListNode", - "JsonResultGenerator", - "LLMLocalLoader", - "LoadFileNode", - "MathOperationNode", - "MyNode", - "PullOllamaModel", - "SelectItemByIndexNode", - "SelectItemByKeyNode", - "StringCombiner", - "StringPatternEnforcer", - "StringScraper", - "UpdateLLMResultToJson", - "WriteToJson" - ], - { - "title_aux": "ComfyUI-LLM-Evaluation [WIP]" - } - ], - "https://github.com/mliand/ComfyUI-Calendar-Node": [ - [ - "Comfy Calendar Node" - ], - { - "title_aux": "ComfyUI-Calendar-Node [WIP]" - } - ], - "https://github.com/mohamedsobhi777/ComfyUI-FramerComfy": [ - [ - "FramerComfyBooleanInputNode", - "FramerComfyFloatInputNode", - "FramerComfyInputImageNode", - "FramerComfyInputNumberNode", - "FramerComfyInputStringNode", - "FramerComfySaveImageNode" - ], - { - "title_aux": "ComfyUI-FramerComfy [WIP]" - } - ], - "https://github.com/monate0615/ComfyUI-Affine-Transform": [ - [ - "AffineTransform" - ], - { - "title_aux": "Affine Transform ComfyUI Node [WIP]" - } - ], - "https://github.com/monate0615/ComfyUI-Simple-Image-Tools": [ - [ - "GetMaskFromAlpha", - "GetQuadrilateralOutfit" - ], - { - "title_aux": "ComfyUI-Simple-Image-Tools [WIP]" - } - ], - "https://github.com/mut-ex/comfyui-gligengui-node": [ - [ - "GLIGEN_GUI" - ], - { - "title_aux": "ComfyUI GLIGEN GUI Node" - } - ], - "https://github.com/muvich3n/ComfyUI-Claude-I2T": [ - [ - "ClaudeImageToPrompt" - ], - { - "title_aux": "ComfyUI-Claude-I2T" - } - ], - "https://github.com/naderzare/comfyui-inodes": [ - [ - "IAzureAiApi", - "ICutStrings", - "IIfElse", - "IMultilineSplitToStrings", - "IPassImage", - "IPostProcessLLMResponse", - "IPromptGenerator", - "IRandomChoiceToStrings", - "ISaveImage", - "IStringsCounter", - "IStringsToFile", - "IStringsToString", - "ITimesToStrings" - ], - { - "title_aux": "comfyui-inodes" - } - ], - "https://github.com/neeltheninja/ComfyUI-TempFileDeleter": [ - [ - "TempCleaner" - ], - { - "title_aux": "ComfyUI-TempFileDeleter [UNSAFE]" - } - ], - "https://github.com/neeltheninja/ComfyUI-TextOverlay": [ - [ - "TextOverlay" - ], - { - "title_aux": "ComfyUI-TextOverlay" - } - ], - "https://github.com/neo0801/my-comfy-node": [ - [ - "DeepMosaicGetImageMosaicMask", - "DeepMosaicGetVideoMosaicMask", - "DeepMosaicRemoveImageMosaic", - "DeepMosaicRemoveVideoMosaic" - ], - { - "title_aux": "my-comfy-node" - } - ], - "https://github.com/neverbiasu/ComfyUI-ControlNeXt": [ - [ - "ControlNextPipelineConfig", - "ControlNextSDXL" - ], - { - "title_aux": "ComfyUI-ControlNeXt [WIP]" - } - ], - "https://github.com/neverbiasu/ComfyUI-StereoCrafter": [ - [ - "DepthSplattingModelLoader", - "DepthSplattingNode", - "InpaintingInferenceNode" - ], - { - "title_aux": "ComfyUI-StereoCrafter [WIP]" - } - ], - "https://github.com/nidefawl/ComfyUI-nidefawl": [ - [ - "BlendImagesWithBoundedMasks", - "CropImagesWithMasks", - "CustomCallback", - "DisplayAnyType", - "EmptyImageWithColor", - "ImageToLatent", - "LatentPerlinNoise", - "LatentScaledNoise", - "LatentToImage", - "MaskFromColor", - "ModelSamplerTonemapNoiseTest", - "PythonScript", - "ReferenceOnlySimple", - "SamplerCustomCallback", - "SamplerDPMPP_2M_SDE_nidefawl", - "SetLatentCustomNoise", - "SplitCustomSigmas", - "VAELoaderDataType", - "gcLatentTunnel" - ], - { - "title_aux": "ComfyUI-nidefawl [UNSAFE]" - } - ], - "https://github.com/nikkuexe/ComfyUI-ListDataHelpers": [ - [ - "List Difference", - "VHS Output Filter", - "VHS_VideoOutputFilter" - ], - { - "title_aux": "List Data Helper Nodes" - } - ], - "https://github.com/nkchocoai/ComfyUI-PromptUtilities": [ - [ - "PromptUtilitiesConstString", - "PromptUtilitiesConstStringMultiLine", - "PromptUtilitiesFormatString", - "PromptUtilitiesJoinStringList", - "PromptUtilitiesLoadPreset", - "PromptUtilitiesLoadPresetAdvanced", - "PromptUtilitiesPromptWeight", - "PromptUtilitiesRandomPreset", - "PromptUtilitiesRandomPresetAdvanced", - "PromptUtilitiesReplaceOrInsertTag", - "PromptUtilitiesRoundPromptWeight", - "PromptUtilitiesSampleTags", - "PromptUtilitiesSampleTagsWithWeight" - ], - { - "title_aux": "ComfyUI-PromptUtilities" - } - ], - "https://github.com/nomcycle/ComfyUI_Cluster": [ - [ - "FenceClusteredWorkflow" - ], - { - "title_aux": "ComfyUI_Cluster [WIP]" - } - ], - "https://github.com/oshtz/ComfyUI-oshtz-nodes": [ - [ - "ImageOverlayNode", - "LLMAIONode", - "LoRASwitcherNode", - "LoRASwitcherNode20", - "LoRASwitcherNode40", - "StringSplitterNode" - ], - { - "title_aux": "ComfyUI-oshtz-nodes [WIP]" - } - ], - "https://github.com/oyvindg/ComfyUI-TrollSuite": [ - [ - "BinaryImageMask", - "ImagePadding", - "LoadLastImage", - "RandomMask", - "TransparentImage" - ], - { - "title_aux": "ComfyUI-TrollSuite" - } - ], - "https://github.com/oztrkoguz/ComfyUI_Kosmos2_BBox_Cutter": [ - [ - "Kosmos2SamplerSimple", - "KosmosLoader", - "Write" - ], - { - "title_aux": "Kosmos2_BBox_Cutter Models" - } - ], - "https://github.com/pamparamm/ComfyUI-ppm": [ - [ - "AttentionCouplePPM", - "CFGLimiterGuider", - "CFGPPSamplerSelect", - "CLIPMicroConditioning", - "CLIPNegPip", - "CLIPTextEncodeBREAK", - "CLIPTokenCounter", - "ConditioningZeroOutCombine", - "ConvertTimestepToSigma", - "DynSamplerSelect", - "DynamicThresholdingSimplePost", - "EmptyLatentImageAR", - "FreeU2PPM", - "Guidance Limiter", - "LatentOperationTonemapLuminance", - "LatentToMaskBB", - "LatentToWidthHeight", - "PPMSamplerSelect", - "RescaleCFGPost" - ], - { - "title_aux": "ComfyUI-ppm" - } - ], - "https://github.com/parmarjh/ComfyUI-MochiWrapper-I2V": [ - [ - "DownloadAndLoadMochiModel", - "MochiDecode", - "MochiDecodeSpatialTiling", - "MochiFasterCache", - "MochiImageEncode", - "MochiLatentPreview", - "MochiModelLoader", - "MochiSampler", - "MochiSigmaSchedule", - "MochiTextEncode", - "MochiTorchCompileSettings", - "MochiVAEEncoderLoader", - "MochiVAELoader" - ], - { - "title_aux": "ComfyUI-MochiWrapper-I2V [WIP]" - } - ], - "https://github.com/paulhoux/Smart-Prompting": [ - [ - "SaveImageWithPrefix", - "TextAppend", - "TextCharacterSelector", - "TextEncodeReusable", - "TextFile", - "TextNegatives", - "TextSearchReplace", - "TextString", - "TextStyleSelector" - ], - { - "title_aux": "List Data Helper Nodes" - } - ], - "https://github.com/phamngoctukts/ComyUI-Tupham": [ - [ - "AreaCondition_v2", - "ConditionUpscale", - "MultiLatent", - "Runnodeselected", - "ghepanh" - ], - { - "title_aux": "ComyUI-Tupham" - } - ], - "https://github.com/poisenbery/NudeNet-Detector-Provider": [ - [ - "NudeNetDetectorProvider" - ], - { - "title_aux": "NudeNet-Detector-Provider [WIP]" - } - ], - "https://github.com/power88/ComfyUI-PDiD-Nodes": [ - [ - "Blend Images", - "Check Character Tag", - "Get Image Colors", - "Get image size", - "List Operations", - "Make Image Gray", - "Nearest SDXL Resolution divided by 64" - ], - { - "title_aux": "ComfyUI-PDiD-Nodes [WIP]" - } - ], - "https://github.com/prabinpebam/anyPython": [ - [ - "Any Python" - ], - { - "author": "prabinpebam", - "description": "This node can take any input and use that to run a python script in ComfyUI", - "nickname": "AnyPython", - "title": "AnyPython v0.1", - "title_aux": "anyPython [UNSAFE]" - } - ], - "https://github.com/prodogape/ComfyUI-clip-interrogator": [ - [ - "ComfyUIClipInterrogator", - "ShowText" - ], - { - "title_aux": "ComfyUI-clip-interrogator [WIP]" - } - ], - "https://github.com/pschroedl/ComfyUI-StreamDiffusion": [ - [ - "StreamDiffusionAdvancedConfig", - "StreamDiffusionCheckpointLoader", - "StreamDiffusionConfig", - "StreamDiffusionLPCheckpointLoader", - "StreamDiffusionLoraLoader", - "StreamDiffusionPrebuiltConfig", - "StreamDiffusionSampler", - "StreamDiffusionTensorRTEngineLoader" - ], - { - "title_aux": "ComfyUI-StreamDiffusion" - } - ], - "https://github.com/pzzmyc/comfyui-sd3-simple-simpletuner": [ - [ - "sd not very simple simpletuner by hhy" - ], - { - "title_aux": "comfyui-sd3-simple-simpletuner" - } - ], - "https://github.com/ralonsobeas/ComfyUI-HDRConversion": [ - [ - "HDRConversion" - ], - { - "title_aux": "ComfyUI-HDRConversion [WIP]" - } - ], - "https://github.com/redhottensors/ComfyUI-ODE": [ - [ - "ODESamplerSelect" - ], - { - "author": "RedHotTensors", - "description": "Adaptive ODE Solvers for ComfyUI", - "nickname": "ComfyUI-ODE", - "title": "ComfyUI-ODE", - "title_aux": "ComfyUI-ODE" - } - ], - "https://github.com/risunobushi/ComfyUI_FocusMask": [ - [ - "FocusMaskExtractor", - "FocusOutlineExtractor" - ], - { - "title_aux": "ComfyUI_FocusMask" - } - ], - "https://github.com/rouxianmantou/comfyui-rxmt-nodes": [ - [ - "CheckValueTypeNode" - ], - { - "title_aux": "comfyui-rxmt-nodes" - } - ], - "https://github.com/ruka-game/rukalib_comfyui": [ - [ - "RukaDebugProbe", - "RukaPromptEnhancer" - ], - { - "title_aux": "ComfyUI RukaLib [WIP]" - } - ], - "https://github.com/ryanontheinside/ComfyUI_YoloNasObjectDetection_Tensorrt": [ - [ - "YoloNasDetectionTensorrt" - ], - { - "title_aux": "ComfyUI_YoloNasObjectDetection_Tensorrt [WIP]" - } - ], - "https://github.com/scottmudge/ComfyUI_BiscuitNodes": [ - [ - "LoadImagePrompted" - ], - { - "title_aux": "ComfyUI_BiscuitNodes" - } - ], - "https://github.com/sdfxai/SDFXBridgeForComfyUI": [ - [ - "SDFXClipTextEncode" - ], - { - "title_aux": "SDFXBridgeForComfyUI - ComfyUI Custom Node for SDFX Integration" - } - ], - "https://github.com/seancheung/comfyui-creative-nodes": [ - [ - "CreativeSkipFromFlow", - "CreativeSkipToFlow", - "CreativeStopFlow", - "ResolutionSelector", - "ResolutionXLSelector" - ], - { - "title_aux": "comfyui-creative-nodes" - } - ], - "https://github.com/shadowcz007/ComfyUI-PuLID-Test": [ - [ - "ApplyPulid", - "PulidEvaClipLoader", - "PulidInsightFaceLoader", - "PulidModelLoader" - ], - { - "title_aux": "ComfyUI-PuLID [TEST]" - } - ], - "https://github.com/shadowcz007/Comfyui-EzAudio": [ - [ - "EZGenerateAudioNode", - "EZLoadModelNode" - ], - { - "title_aux": "Comfyui-EzAudio [WIP]" - } - ], - "https://github.com/shadowcz007/comfyui-CLIPSeg": [ - [ - "CLIPSeg_", - "CombineMasks_" - ], - { - "title_aux": "comfyui-CLIPSeg" - } - ], - "https://github.com/shadowcz007/comfyui-hydit-lowvram": [ - [ - "DiffusersCLIPLoader", - "DiffusersCheckpointLoader", - "DiffusersClipTextEncode", - "DiffusersControlNetLoader", - "DiffusersLoraLoader", - "DiffusersModelMakeup", - "DiffusersPipelineLoader", - "DiffusersSampler", - "DiffusersSchedulerLoader", - "DiffusersVAELoader" - ], - { - "title_aux": "comfyui-hydit" - } - ], - "https://github.com/shinich39/comfyui-event-handler": [ - [ - "EventHandler" - ], - { - "author": "shinich39", - "description": "Javascript code will run when an event fires.", - "nickname": "event-handler", - "title": "event-handler", - "title_aux": "comfyui-event-handler [USAFE]" - } - ], - "https://github.com/shirazdesigner/CLIPTextEncodeAndEnhancev4": [ - [ - "CLIPTextEncodeAndEnhance" - ], - { - "title_aux": "CLIPTextEncodeAndEnhancev4 (shirazdesigner)" - } - ], - "https://github.com/shuanshuan/ComfyUI_CheckPointLoader_Ext": [ - [ - "CheckpointLoaderExt" - ], - { - "title_aux": "ComfyUI_CheckPointLoader_Ext [WIP]" - } - ], - "https://github.com/sizzlebop/comfyui-llm-prompt-enhancer": [ - [ - "PromptEnhancer" - ], - { - "title_aux": "ComfyUI LLM Prompt Enhancer [WIP]" - } - ], - "https://github.com/smthemex/ComfyUI_MangaNinjia": [ - [ - "MangaNinjiaLoader", - "MangaNinjiaSampler" - ], - { - "title_aux": "ComfyUI_MangaNinjia [WIP]" - } - ], - "https://github.com/sofakid/dandy": [ - [ - "DandyBooleanCollector", - "DandyBooleanPreview", - "DandyBooleanSplitter", - "DandyCss", - "DandyCssLoader", - "DandyEditorSettings", - "DandyFloatCollector", - "DandyFloatPreview", - "DandyFloatSplitter", - "DandyGradient", - "DandyHtml", - "DandyHtmlLoader", - "DandyImageCollector", - "DandyIntCollector", - "DandyIntPreview", - "DandyIntSplitter", - "DandyJs", - "DandyJsLoader", - "DandyJson", - "DandyJsonLoader", - "DandyLand", - "DandyMaskCollector", - "DandyP5JsDraw", - "DandyP5JsLoader", - "DandyP5JsSetup", - "DandyPixelsJs", - "DandyPixiJs", - "DandyPrompt", - "DandyString", - "DandyStringArrayCollector", - "DandyStringArraySplitter", - "DandyStringCatCollector", - "DandyStringPreview", - "DandyUrlLoader", - "DandyWasmLoader", - "DandyYaml", - "DandyYamlLoader" - ], - { - "title_aux": "dandy [UNSAFE]" - } - ], - "https://github.com/sourceful-official/ComfyUI_InstructPixToPixConditioningLatent": [ - [ - "InstructPixToPixConditioningLatent" - ], - { - "title_aux": "ComfyUI_InstructPixToPixConditioningLatent [WIP]" - } - ], - "https://github.com/sourceful-official/comfyui-sourceful-official": [ - [ - "FalFluxLoraSourcefulOfficial", - "FalIcLightV2SourcefulOfficial", - "SourcefulOfficialComfyuiIncontextThreePanels" - ], - { - "title_aux": "comfyui-sourceful-official" - } - ], - "https://github.com/sswink/comfyui-lingshang": [ - [ - "LS_ALY_Seg_Body_Utils", - "LS_ALY_Seg_Body_Utils_Return_crop", - "LS_ALY_Seg_Clothes_Utils", - "LS_ALY_Seg_Common_Utils", - "LS_ALY_Seg_Utils", - "LS_ALY_UploadToOssAndGetUrl", - "LS_DigImageByMask", - "LS_GrowMaskWithBlur", - "LS_LoadMaskFromUrl", - "LS_SaveImageToOss" - ], - { - "title_aux": "comfyui-lingshang" - } - ], - "https://github.com/steelan9199/ComfyUI-Teeth": [ - [ - "teeth FindContours", - "teeth Gemini2", - "teeth GetFirstSeg", - "teeth GetValueByIndexFromList", - "teeth ImageGridLines", - "teeth LoadTextFile", - "teeth RunPythonCode", - "teeth SaveTextFile", - "teeth SplitGridImage", - "teeth TextSplitByDelimiter" - ], - { - "title_aux": "ComfyUI-Teeth [UNSAFE]" - } - ], - "https://github.com/stutya/ComfyUI-Terminal": [ - [ - "Terminal" - ], - { - "title_aux": "ComfyUI-Terminal [UNSAFE]" - } - ], - "https://github.com/sugarkwork/comfyui_psd": [ - [ - "Convert PSD to Image", - "PSDLayer", - "Save PSD" - ], - { - "title_aux": "comfyui_psd [WIP]" - } - ], - "https://github.com/suncat2ps/ComfyUI-SaveImgNextcloud": [ - [ - "SaveImageNextcloud" - ], - { - "title_aux": "ComfyUI-SaveImgNextcloud" - } - ], - "https://github.com/talon468/ComfyUI-Rpg-Architect": [ - [ - "ComfyUI Rpg Architect \ud83e\ude84" - ], - { - "title_aux": "ComfyUI-Rpg-Architect [WIP]" - } - ], - "https://github.com/techzuhaib/ComfyUI-CacheImageNode": [ - [ - "CacheImageNode" - ], - { - "title_aux": "ComfyUI-CacheImageNode" - } - ], - "https://github.com/thderoo/ComfyUI-_topfun_s_nodes": [ - [ - "ConditioningPerturbation", - "TextGenerator" - ], - { - "title_aux": "_topfun_s_nodes" - } - ], - "https://github.com/tjorbogarden/my-useful-comfyui-custom-nodes": [ - [ - "ImageSizer", - "KSamplerSDXLAdvanced" - ], - { - "title_aux": "my-useful-comfyui-custom-nodes" - } - ], - "https://github.com/tom-doerr/dspy_nodes": [ - [ - "Accepted Examples Viewer", - "Dataset Reader", - "DynamicOptionsNode", - "Few Shot CoT", - "Few Shot Control", - "Few Shot Review", - "FewShotReview", - "FewShotReviewServer", - "Model", - "Predict", - "Print Hello World", - "Show Text", - "ShowText|pysssss", - "String List Viewer", - "String Splitter", - "StringReverser", - "StringSplitter", - "Text Field", - "Text Output" - ], - { - "title_aux": "DSPy Nodes [WIP]" - } - ], - "https://github.com/tracerstar/comfyui-p5js-node": [ - [ - "HYPE_P5JSImage" - ], - { - "title_aux": "comfyui-p5js-node" - } - ], - "https://github.com/trashgraphicard/Albedo-Sampler-for-ComfyUI": [ - [ - "Make Seamless Tile", - "Sample Image" - ], - { - "title_aux": "Albedo-Sampler-for-ComfyUI" - } - ], - "https://github.com/tuckerdarby/ComfyUI-TDNodes": [ - [ - "HandTrackerNode", - "InstanceDiffusionLoader", - "InstanceTrackerPrompt", - "KSamplerBatchedNode", - "KSamplerRAVE", - "KSamplerTF", - "TemporalNetPreprocessor", - "TrackerNode", - "VideoTrackerPromptNode" - ], - { - "title_aux": "ComfyUI-TDNodes [WIP]" - } - ], - "https://github.com/umisetokikaze/comfyui_mergekit": [ - [ - "DefineSaveName", - "LoadLR", - "LoadTarget", - "Merge", - "SetLayer", - "SetModels", - "SetTokenizer", - "get_skip" - ], - { - "title_aux": "comfyui_mergekit [WIP]" - } - ], - "https://github.com/unanan/ComfyUI-Dist": [ - [ - "LoadCheckpointFromLAN", - "LoadCheckpointFromURL", - "LoadImageFromLAN", - "LoadImageFromURL", - "LoadWorkflowFromLAN", - "LoadWorkflowFromURL" - ], - { - "title_aux": "ComfyUI-Dist [WIP]" - } - ], - "https://github.com/vahidzxc/ComfyUI-My-Handy-Nodes": [ - [ - "VahCropImage" - ], - { - "title_aux": "ComfyUI-My-Handy-Nodes" - } - ], - "https://github.com/walterFeng/ComfyUI-Image-Utils": [ - [ - "Calculate Image Brightness", - "Calculate Image Contrast", - "Calculate Image Saturation", - "Color Similarity Checker", - "Crop Mask Util", - "Displace Filter", - "Image Fix (tensor shape convert)", - "Load Image (By Url)", - "Mask Refine (Aliyun)" - ], - { - "title_aux": "ComfyUI-Image-Utils" - } - ], - "https://github.com/warshanks/Shank-Tools": [ - [ - "HeightWidth", - "ResolutionDivider", - "TileCalculator" - ], - { - "title_aux": "Shank-Tools" - } - ], - "https://github.com/watarika/ComfyUI-Text-Utility": [ - [ - "LoadTextFile", - "RemoveComments", - "SaveTextFile" - ], - { - "title_aux": "ComfyUI-Text-Utility [UNSAFE]" - } - ], - "https://github.com/watarika/ComfyUI-exit": [ - [ - "ExitComfyUI", - "FetchApi" - ], - { - "title_aux": "ComfyUI-exit [UNSAFE]" - } - ], - "https://github.com/waynepimpzhang/comfyui-opencv-brightestspot": [ - [ - "FindBrightestSpot" - ], - { - "title_aux": "FindBrightestSpot [WIP]" - } - ], - "https://github.com/willblaschko/ComfyUI-Unload-Models": [ - [ - "DeleteAnyObject", - "UnloadAllModels", - "UnloadOneModel" - ], - { - "title_aux": "ComfyUI-Unload-Models" - } - ], - "https://github.com/wilzamguerrero/Comfyui-zZzZz": [ - [ - "CaptureZNode", - "CompressFolderNode", - "CreateZNode", - "DeleteZNode", - "DownloadFileNode", - "InfiniteZNode", - "MoveZNode", - "RenameZNode", - "VideoZNode", - "ZFShareScreen" - ], - { - "title_aux": "Comfyui-zZzZz [UNSAFE]" - } - ], - "https://github.com/wormley/comfyui-wormley-nodes": [ - [ - "CheckpointVAELoaderSimpleText", - "CheckpointVAESelectorText", - "LoRA_Tag_To_Stack" - ], - { - "title_aux": "comfyui-wormley-nodes" - } - ], - "https://github.com/xiaoyumu/ComfyUI-XYNodes": [ - [ - "AdjustImageColor", - "AppyColorToImage", - "PrimitiveBBOX", - "StringToBBOX" - ], - { - "title_aux": "ComfyUI-XYNodes" - } - ], - "https://github.com/yanhuifair/ComfyUI-FairLab": [ - [ - "CLIPTranslatedNode", - "DownloadImageNode", - "FixUTF8StringNode", - "ImageResizeNode", - "ImagesToVideoNode", - "LoadImageFromFolderNode", - "SaveImageToFolderNode", - "SaveImagesToFolderNode", - "SaveStringToFolderNode", - "SequenceStringListNode", - "StringCombineNode", - "StringFieldNode", - "TranslateStringNode", - "VideoToImagesNode" - ], - { - "title_aux": "ComfyUI-FairLab" - } - ], - "https://github.com/yanhuifair/comfyui-deepseek": [ - [ - "DeepSeekChatNode", - "DeepSeekChatProNode", - "DeepSeekReasonerNode" - ], - { - "title_aux": "comfyui-deepseek [WIP]" - } - ], - "https://github.com/yichengup/Comfyui-NodeSpark": [ - [ - "ImageCircleWarp", - "ImageStretch", - "ImageWaveWarp", - "LiquifyNode" - ], - { - "title_aux": "Comfyui-NodeSpark" - } - ], - "https://github.com/yojimbodayne/ComfyUI-Dropbox-API": [ - [ - "FetchTokenFromDropbox", - "PostImagesToDropboxAPI", - "PostPromptsToDropboxAPI", - "PullImagesFromDropboxAPI", - "PullTextFromDropboxAPI", - "PullVideosFromDropboxAPI", - "VideoCombineAndExportToDropboxAPI" - ], - { - "title_aux": "ComfyUI-Dropbox-API [WIP]" - } - ], - "https://github.com/zhongpei/Comfyui_image2prompt": [ - [ - "CLIP AdvancedTextEncode|fofo", - "CLIP PromptConditioning|fofo", - "Image2Text", - "Image2TextWithTags", - "ImageBatchToList|fofo", - "ImageRewardScore|fofo", - "LoadImage2TextModel", - "LoadImageRewardScoreModel|fofo", - "LoadT5Model|fofo", - "LoadText2PromptModel", - "ShowText|fofo", - "T5QuantizationConfig|fofo", - "T5Text2Prompt|fofo", - "Text2GPTPrompt", - "Text2Prompt", - "TextBox|fofo", - "Translate2Chinese|fofo" - ], - { - "title_aux": "Comfyui_image2prompt" - } - ], - "https://github.com/zmwv823/ComfyUI-VideoDiffusion": [ - [ - "UL_LatentSyncLoader", - "UL_LatentSyncProcess", - "UL_LatentSyncSampler", - "UL_SonicLoader", - "UL_SonicProcess", - "UL_SonicSampler" - ], - { - "title_aux": "ComfyUI-VideoDiffusion" - } - ], - "https://github.com/zyd232/ComfyUI-zyd232-Nodes": [ - [ - "zyd232 ImagesPixelsCompare" - ], - { - "title_aux": "ComfyUI-zyd232-Nodes" - } - ], - "https://raw.githubusercontent.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/main/EXT_VariationUtils.py": [ - [ - "BatchToList", - "ConcatAudioList", - "SequenceVariation", - "SliceAudio" - ], - { - "title_aux": "ComfyUI-Waveform-Extensions" - } - ], - "https://raw.githubusercontent.com/jp0215/comfyUI_padding-resize_node/main/PaddingNode.py": [ - [ - "function" - ], - { - "title_aux": "comfyUI_padding-resize_node" - } - ], - "https://raw.githubusercontent.com/komojini/ComfyUI_Prompt_Template_CustomNodes/main/prompt_with_template.py": [ - [ - "ObjectPromptWithTemplate", - "PromptWithTemplate" - ], - { - "title_aux": "ComfyUI_Prompt_Template_CustomNodes" - } - ], - "https://raw.githubusercontent.com/okg21/VLLMVisionChatNode/refs/heads/main/VLLMVisionChatNode.py": [ - [ - "VLLMVisionChatNode" - ], - { - "title_aux": "VLLMVisionChatNode" - } - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/dev/github-stats.json b/custom_nodes/comfyui-manager/node_db/dev/github-stats.json deleted file mode 100644 index 7de4e0b838dfda25ce2c76e93621c4c10666a822..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/dev/github-stats.json +++ /dev/null @@ -1,1852 +0,0 @@ -{ - "https://github.com/123jimin/ComfyUI-MobileForm": { - "stars": 9, - "last_update": "2024-08-27 11:02:59", - "author_account_age_days": 4981 - }, - "https://github.com/17Retoucher/ComfyUI_Fooocus": { - "stars": 57, - "last_update": "2024-02-24 07:33:29", - "author_account_age_days": 387 - }, - "https://github.com/5x00/ComfyUI-Prompt-Plus": { - "stars": 1, - "last_update": "2025-01-08 15:54:08", - "author_account_age_days": 1187 - }, - "https://github.com/7BEII/Comfyui_PDuse": { - "stars": 2, - "last_update": "2025-01-25 08:47:24", - "author_account_age_days": 28 - }, - "https://github.com/807502278/ComfyUI_TensorRT_Merge": { - "stars": 2, - "last_update": "2025-01-24 10:48:42", - "author_account_age_days": 2229 - }, - "https://github.com/A4P7J1N7M05OT/ComfyUI-ManualSigma": { - "stars": 2, - "last_update": "2024-12-30 10:45:23", - "author_account_age_days": 688 - }, - "https://github.com/A719689614/ComfyUI_AC_FUNV8Beta1": { - "stars": 13, - "last_update": "2024-03-08 10:11:44", - "author_account_age_days": 530 - }, - "https://github.com/AICodeFactory/ComfyUI-Viva": { - "stars": 2, - "last_update": "2024-12-05 09:17:54", - "author_account_age_days": 284 - }, - "https://github.com/AIFSH/ComfyUI-OpenDIT": { - "stars": 0, - "last_update": "2024-06-30 09:33:55", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/ComfyUI-ViViD": { - "stars": 5, - "last_update": "2024-06-25 08:16:53", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/HivisionIDPhotos-ComfyUI": { - "stars": 108, - "last_update": "2024-09-16 14:16:06", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/IMAGDressing-ComfyUI": { - "stars": 59, - "last_update": "2024-11-14 01:44:02", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/UltralightDigitalHuman-ComfyUI": { - "stars": 115, - "last_update": "2024-11-25 11:39:23", - "author_account_age_days": 447 - }, - "https://github.com/AIFSH/UtilNodes-ComfyUI": { - "stars": 12, - "last_update": "2024-12-19 06:44:25", - "author_account_age_days": 447 - }, - "https://github.com/ALatentPlace/ComfyUI_yanc": { - "stars": 54, - "last_update": "2025-01-22 14:44:17", - "author_account_age_days": 1675 - }, - "https://github.com/APZmedia/comfyui-textools": { - "stars": 4, - "last_update": "2024-09-02 09:17:36", - "author_account_age_days": 2692 - }, - "https://github.com/AlexXi19/ComfyUI-OpenAINode": { - "stars": 2, - "last_update": "2025-01-13 18:43:22", - "author_account_age_days": 1646 - }, - "https://github.com/AllenEdgarPoe/ComfyUI-Xorbis-nodes": { - "stars": 4, - "last_update": "2024-11-27 01:27:49", - "author_account_age_days": 2321 - }, - "https://github.com/Alvaroeai/ComfyUI-SunoAI-Mds": { - "stars": 1, - "last_update": "2025-01-11 21:13:41", - "author_account_age_days": 3917 - }, - "https://github.com/Anze-/ComfyUI-OIDN": { - "stars": 6, - "last_update": "2024-11-27 18:05:41", - "author_account_age_days": 4170 - }, - "https://github.com/Anze-/ComfyUI_deepDeband": { - "stars": 4, - "last_update": "2024-11-12 19:13:59", - "author_account_age_days": 4170 - }, - "https://github.com/ArmandAlbert/Kwai_font_comfyui": { - "stars": 2, - "last_update": "2025-01-14 04:02:21", - "author_account_age_days": 2207 - }, - "https://github.com/ArthusLiang/comfyui-face-remap": { - "stars": 4, - "last_update": "2024-11-30 12:34:28", - "author_account_age_days": 4232 - }, - "https://github.com/AustinMroz/ComfyUI-MinCache": { - "stars": 2, - "last_update": "2024-12-25 18:52:07", - "author_account_age_days": 4290 - }, - "https://github.com/AustinMroz/ComfyUI-WorkflowCheckpointing": { - "stars": 11, - "last_update": "2024-10-17 19:59:40", - "author_account_age_days": 4290 - }, - "https://github.com/BadCafeCode/execution-inversion-demo-comfyui": { - "stars": 54, - "last_update": "2024-10-20 05:32:01", - "author_account_age_days": 646 - }, - "https://github.com/BaronVonBoolean/ComfyUI-FileOps": { - "stars": 1, - "last_update": "2024-12-22 18:04:20", - "author_account_age_days": 54 - }, - "https://github.com/Beinsezii/comfyui-amd-go-fast": { - "stars": 32, - "last_update": "2024-05-10 00:48:37", - "author_account_age_days": 2442 - }, - "https://github.com/BenjaMITM/ComfyUI_On_The_Fly_Wildcards": { - "stars": 1, - "last_update": "2024-11-20 06:17:53", - "author_account_age_days": 163 - }, - "https://github.com/BetaDoggo/ComfyUI-LogicGates": { - "stars": 3, - "last_update": "2024-07-21 06:31:25", - "author_account_age_days": 1013 - }, - "https://github.com/Big-Idea-Technology/ComfyUI-Movie-Tools": { - "stars": 3, - "last_update": "2024-11-29 11:13:57", - "author_account_age_days": 1087 - }, - "https://github.com/BlueDangerX/ComfyUI-BDXNodes": { - "stars": 1, - "last_update": "2023-12-10 04:01:19", - "author_account_age_days": 462 - }, - "https://github.com/Brandelan/ComfyUI_bd_customNodes": { - "stars": 2, - "last_update": "2024-09-08 01:04:38", - "author_account_age_days": 4367 - }, - "https://github.com/Chargeuk/ComfyUI-vts-nodes": { - "stars": 1, - "last_update": "2025-01-21 22:11:12", - "author_account_age_days": 4323 - }, - "https://github.com/ChrisColeTech/ComfyUI-Get-Random-File": { - "stars": 3, - "last_update": "2024-09-02 02:30:05", - "author_account_age_days": 2628 - }, - "https://github.com/Clelstyn/ComfyUI-Inpaint_with_Detailer": { - "stars": 2, - "last_update": "2024-11-02 12:04:53", - "author_account_age_days": 534 - }, - "https://github.com/Clybius/ComfyUI-FluxDeCLIP": { - "stars": 2, - "last_update": "2024-11-17 20:06:29", - "author_account_age_days": 1949 - }, - "https://github.com/Comfy-Org/ComfyUI_devtools": { - "stars": 15, - "last_update": "2025-01-03 22:33:34", - "author_account_age_days": 291 - }, - "https://github.com/ComfyUI-Workflow/ComfyUI-OpenAI": { - "stars": 20, - "last_update": "2024-10-07 08:25:18", - "author_account_age_days": 113 - }, - "https://github.com/DataCTE/ComfyUI-DataVoid-nodes": { - "stars": 1, - "last_update": "2024-11-20 14:20:31", - "author_account_age_days": 993 - }, - "https://github.com/DeTK/ComfyUI-Switch": { - "stars": 0, - "last_update": "2024-03-04 11:52:04", - "author_account_age_days": 2247 - }, - "https://github.com/DoctorDiffusion/ComfyUI-Flashback": { - "stars": 1, - "last_update": "2024-11-11 01:37:43", - "author_account_age_days": 557 - }, - "https://github.com/DrMWeigand/ComfyUI_LineBreakInserter": { - "stars": 0, - "last_update": "2024-04-19 11:37:19", - "author_account_age_days": 1247 - }, - "https://github.com/DraconicDragon/ComfyUI_e621_booru_toolkit": { - "stars": 2, - "last_update": "2025-01-26 00:17:56", - "author_account_age_days": 1589 - }, - "https://github.com/Eagle-CN/ComfyUI-Addoor": { - "stars": 22, - "last_update": "2025-01-24 07:50:20", - "author_account_age_days": 2843 - }, - "https://github.com/Elawphant/ComfyUI-MusicGen": { - "stars": 6, - "last_update": "2024-05-11 13:33:24", - "author_account_age_days": 2803 - }, - "https://github.com/EmilioPlumed/ComfyUI-Math": { - "stars": 1, - "last_update": "2025-01-11 14:28:42", - "author_account_age_days": 2193 - }, - "https://github.com/ExponentialML/ComfyUI_LiveDirector": { - "stars": 37, - "last_update": "2024-04-09 19:01:49", - "author_account_age_days": 1839 - }, - "https://github.com/Extraltodeus/Conditioning-token-experiments-for-ComfyUI": { - "stars": 18, - "last_update": "2024-03-10 01:04:02", - "author_account_age_days": 3365 - }, - "https://github.com/Fannovel16/ComfyUI-AppIO": { - "stars": 1, - "last_update": "2024-12-01 16:37:19", - "author_account_age_days": 3347 - }, - "https://github.com/FinetunersAI/comfyui-fast-group-link": { - "stars": 1, - "last_update": "2024-12-09 17:35:50", - "author_account_age_days": 237 - }, - "https://github.com/FinetunersAI/finetuners": { - "stars": 2, - "last_update": "2025-01-06 16:29:33", - "author_account_age_days": 237 - }, - "https://github.com/FoundD-oka/ComfyUI-kisekae-OOTD": { - "stars": 0, - "last_update": "2024-06-02 06:13:42", - "author_account_age_days": 653 - }, - "https://github.com/Fucci-Mateo/ComfyUI-Airtable": { - "stars": 0, - "last_update": "2024-06-25 13:35:18", - "author_account_age_days": 1094 - }, - "https://github.com/GentlemanHu/ComfyUI-Notifier": { - "stars": 3, - "last_update": "2024-07-14 15:38:44", - "author_account_age_days": 2599 - }, - "https://github.com/Grant-CP/ComfyUI-LivePortraitKJ-MPS": { - "stars": 12, - "last_update": "2024-07-11 22:04:16", - "author_account_age_days": 1389 - }, - "https://github.com/Grey3016/Save2Icon": { - "stars": 4, - "last_update": "2025-01-06 15:18:57", - "author_account_age_days": 544 - }, - "https://github.com/GrindHouse66/ComfyUI-GH_Tools": { - "stars": 0, - "last_update": "2024-03-10 13:27:14", - "author_account_age_days": 839 - }, - "https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes": { - "stars": 1, - "last_update": "2024-10-09 21:45:33", - "author_account_age_days": 2130 - }, - "https://github.com/IfnotFr/ComfyUI-Ifnot-Pack": { - "stars": 2, - "last_update": "2025-01-24 09:54:28", - "author_account_age_days": 4800 - }, - "https://github.com/IgPoly/ComfyUI-igTools": { - "stars": 1, - "last_update": "2024-09-11 08:48:57", - "author_account_age_days": 143 - }, - "https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4": { - "stars": 161, - "last_update": "2024-09-03 02:02:45", - "author_account_age_days": 627 - }, - "https://github.com/IvanZhd/comfyui-codeformer": { - "stars": 0, - "last_update": "2023-12-02 20:51:52", - "author_account_age_days": 2794 - }, - "https://github.com/Jaxkr/comfyui-terminal-command": { - "stars": 1, - "last_update": "2023-12-03 10:31:40", - "author_account_age_days": 4843 - }, - "https://github.com/JayLyu/ComfyUI_BaiKong_Node": { - "stars": 9, - "last_update": "2024-10-19 04:52:23", - "author_account_age_days": 3484 - }, - "https://github.com/JichaoLiang/Immortal_comfyUI": { - "stars": 3, - "last_update": "2025-01-16 17:03:10", - "author_account_age_days": 1239 - }, - "https://github.com/Jiffies-64/ComfyUI-SaveImagePlus": { - "stars": 0, - "last_update": "2024-04-01 10:52:59", - "author_account_age_days": 1107 - }, - "https://github.com/JissiChoi/ComfyUI-Jissi-List": { - "stars": 1, - "last_update": "2024-12-24 08:24:27", - "author_account_age_days": 2434 - }, - "https://github.com/Jordach/comfy-consistency-vae": { - "stars": 68, - "last_update": "2023-11-06 20:50:40", - "author_account_age_days": 4728 - }, - "https://github.com/Junst/ComfyUI-PNG2SVG2PNG": { - "stars": 1, - "last_update": "2024-12-04 02:25:04", - "author_account_age_days": 2754 - }, - "https://github.com/KihongK/comfyui-roysnodes": { - "stars": 1, - "last_update": "2025-01-23 09:11:02", - "author_account_age_days": 1777 - }, - "https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack": { - "stars": 4, - "last_update": "2024-11-24 15:55:30", - "author_account_age_days": 3406 - }, - "https://github.com/LZpenguin/ComfyUI-Text": { - "stars": 23, - "last_update": "2024-06-20 13:38:16", - "author_account_age_days": 2195 - }, - "https://github.com/LarryJane491/ComfyUI-ModelUnloader": { - "stars": 3, - "last_update": "2024-01-14 08:22:39", - "author_account_age_days": 379 - }, - "https://github.com/Laser-one/ComfyUI-align-pose": { - "stars": 0, - "last_update": "2024-11-01 09:34:31", - "author_account_age_days": 1048 - }, - "https://github.com/Lilien86/Comfyui_Lilien": { - "stars": 2, - "last_update": "2024-09-03 21:00:49", - "author_account_age_days": 709 - }, - "https://github.com/Looking-Glass/LKG-ComfyUI": { - "stars": 4, - "last_update": "2024-10-30 17:02:54", - "author_account_age_days": 3201 - }, - "https://github.com/LotzF/ComfyUI-Simple-Chat-GPT-completion": { - "stars": 1, - "last_update": "2024-12-13 11:18:22", - "author_account_age_days": 1145 - }, - "https://github.com/LykosAI/ComfyUI-Inference-Core-Nodes": { - "stars": 33, - "last_update": "2024-08-10 16:50:33", - "author_account_age_days": 594 - }, - "https://github.com/Matrix-King-Studio/ComfyUI-MoviePy": { - "stars": 1, - "last_update": "2024-12-10 01:50:42", - "author_account_age_days": 1679 - }, - "https://github.com/Maxim-Dey/ComfyUI-MaksiTools": { - "stars": 4, - "last_update": "2025-01-05 19:26:43", - "author_account_age_days": 628 - }, - "https://github.com/MrAdamBlack/CheckProgress": { - "stars": 1, - "last_update": "2024-01-10 08:02:18", - "author_account_age_days": 2936 - }, - "https://github.com/MythicalChu/ComfyUI-APG_ImYourCFGNow": { - "stars": 30, - "last_update": "2024-11-29 17:45:03", - "author_account_age_days": 1710 - }, - "https://github.com/NicholasKao1029/comfyui-hook": { - "stars": 0, - "last_update": "2024-03-07 05:50:56", - "author_account_age_days": 2246 - }, - "https://github.com/Njbx/ComfyUI-blockswap": { - "stars": 1, - "last_update": "2025-01-13 02:42:23", - "author_account_age_days": 1419 - }, - "https://github.com/PATATAJEC/Patatajec-Nodes": { - "stars": 2, - "last_update": "2025-01-15 22:34:03", - "author_account_age_days": 2150 - }, - "https://github.com/PluMaZero/ComfyUI-SpaceFlower": { - "stars": 4, - "last_update": "2023-12-09 05:55:15", - "author_account_age_days": 1274 - }, - "https://github.com/Poseidon-fan/ComfyUI-fileCleaner": { - "stars": 1, - "last_update": "2024-11-19 02:42:29", - "author_account_age_days": 798 - }, - "https://github.com/Poukpalaova/ComfyUI-FRED-Nodes": { - "stars": 4, - "last_update": "2025-01-17 16:08:53", - "author_account_age_days": 537 - }, - "https://github.com/Quasimondo/ComfyUI-QuasimondoNodes": { - "stars": 13, - "last_update": "2024-07-31 13:01:18", - "author_account_age_days": 5490 - }, - "https://github.com/RLW-Chars/comfyui-promptbymood": { - "stars": 0, - "last_update": "2025-01-25 11:21:59", - "author_account_age_days": 0 - }, - "https://github.com/RicherdLee/comfyui-oss-image-save": { - "stars": 1, - "last_update": "2024-12-10 09:08:39", - "author_account_age_days": 3859 - }, - "https://github.com/RobeSantoro/ComfyUI-RobeNodes": { - "stars": 1, - "last_update": "2024-11-19 07:44:26", - "author_account_age_days": 4832 - }, - "https://github.com/SS-snap/ComfyUI-Snap_Processing": { - "stars": 60, - "last_update": "2024-10-22 07:38:50", - "author_account_age_days": 515 - }, - "https://github.com/SadaleNet/ComfyUI-Prompt-To-Prompt": { - "stars": 22, - "last_update": "2024-03-17 04:30:01", - "author_account_age_days": 4255 - }, - "https://github.com/Sai-ComfyUI/ComfyUI-MS-Nodes": { - "stars": 2, - "last_update": "2024-02-22 08:34:44", - "author_account_age_days": 425 - }, - "https://github.com/Sakura-nee/ComfyUI_Save2Discord": { - "stars": 1, - "last_update": "2024-08-27 19:01:46", - "author_account_age_days": 1527 - }, - "https://github.com/SeedV/ComfyUI-SeedV-Nodes": { - "stars": 2, - "last_update": "2025-01-06 08:42:32", - "author_account_age_days": 1341 - }, - "https://github.com/ShahFaisalWani/ComfyUI-Mojen-Nodeset": { - "stars": 1, - "last_update": "2025-01-17 08:27:28", - "author_account_age_days": 626 - }, - "https://github.com/Shinsplat/ComfyUI-Shinsplat": { - "stars": 36, - "last_update": "2024-12-26 15:28:54", - "author_account_age_days": 1240 - }, - "https://github.com/ShmuelRonen/ComfyUI-FreeMemory": { - "stars": 59, - "last_update": "2024-10-19 17:01:30", - "author_account_age_days": 1421 - }, - "https://github.com/SirVeggie/comfyui-sv-nodes": { - "stars": 6, - "last_update": "2024-12-10 01:28:56", - "author_account_age_days": 2676 - }, - "https://github.com/SoftMeng/ComfyUI-PIL": { - "stars": 6, - "last_update": "2024-10-13 10:02:17", - "author_account_age_days": 3739 - }, - "https://github.com/Soppatorsk/comfyui_img_to_ascii": { - "stars": 1, - "last_update": "2024-09-07 15:39:28", - "author_account_age_days": 1356 - }, - "https://github.com/SpaceWarpStudio/ComfyUI_Remaker_FaceSwap": { - "stars": 0, - "last_update": "2024-07-15 11:57:20", - "author_account_age_days": 3171 - }, - "https://github.com/SpatialDeploy/ComfyUI-Voxels": { - "stars": 4, - "last_update": "2025-01-15 15:16:48", - "author_account_age_days": 52 - }, - "https://github.com/StartHua/Comfyui_CSDMT_CXH": { - "stars": 18, - "last_update": "2024-07-11 15:36:03", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_CXH_CRM": { - "stars": 41, - "last_update": "2024-06-06 14:15:14", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_Flux_Style_Ctr": { - "stars": 93, - "last_update": "2024-11-22 09:25:11", - "author_account_age_days": 3051 - }, - "https://github.com/StartHua/Comfyui_leffa": { - "stars": 188, - "last_update": "2024-12-18 03:04:54", - "author_account_age_days": 3051 - }, - "https://github.com/Symbiomatrix/Comfyui-Sort-Files": { - "stars": 1, - "last_update": "2025-01-11 00:44:21", - "author_account_age_days": 2390 - }, - "https://github.com/T8star1984/comfyui-purgevram": { - "stars": 88, - "last_update": "2024-11-01 06:31:44", - "author_account_age_days": 329 - }, - "https://github.com/TSFSean/ComfyUI-TSFNodes": { - "stars": 6, - "last_update": "2024-05-18 00:59:06", - "author_account_age_days": 3688 - }, - "https://github.com/ThisModernDay/ComfyUI-InstructorOllama": { - "stars": 8, - "last_update": "2024-08-20 00:30:24", - "author_account_age_days": 3945 - }, - "https://github.com/Video3DGenResearch/comfyui-batch-input-node": { - "stars": 1, - "last_update": "2024-04-28 15:21:17", - "author_account_age_days": 322 - }, - "https://github.com/VisionExp/ve_custom_comfyui_nodes": { - "stars": 0, - "last_update": "2024-07-17 11:51:54", - "author_account_age_days": 221 - }, - "https://github.com/WASasquatch/ASTERR": { - "stars": 26, - "last_update": "2024-10-27 01:48:56", - "author_account_age_days": 4841 - }, - "https://github.com/WSJUSA/Comfyui-StableSR": { - "stars": 45, - "last_update": "2023-10-18 12:40:30", - "author_account_age_days": 1640 - }, - "https://github.com/WilliamStanford/ComfyUI-VisualLabs": { - "stars": 1, - "last_update": "2024-04-16 21:53:02", - "author_account_age_days": 1985 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AuraSR-ZHO": { - "stars": 89, - "last_update": "2024-07-11 07:33:30", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BiRefNet-ZHO": { - "stars": 308, - "last_update": "2024-07-30 23:24:24", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Llama-3-2": { - "stars": 19, - "last_update": "2024-09-26 18:08:01", - "author_account_age_days": 555 - }, - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PuLID-ZHO": { - "stars": 228, - "last_update": "2024-05-22 13:38:23", - "author_account_age_days": 555 - }, - "https://github.com/a-One-Fan/ComfyUI-Blenderesque-Nodes": { - "stars": 3, - "last_update": "2025-01-24 20:56:41", - "author_account_age_days": 1071 - }, - "https://github.com/aiden1020/ComfyUI_Artcoder": { - "stars": 2, - "last_update": "2025-01-11 08:31:32", - "author_account_age_days": 685 - }, - "https://github.com/ainanoha/etm_comfyui_nodes": { - "stars": 1, - "last_update": "2024-10-31 05:45:59", - "author_account_age_days": 4470 - }, - "https://github.com/alexisrolland/ComfyUI-AuraSR": { - "stars": 25, - "last_update": "2024-10-12 14:14:59", - "author_account_age_days": 3501 - }, - "https://github.com/alt-key-project/comfyui-dream-video-batches": { - "stars": 68, - "last_update": "2024-12-07 20:06:38", - "author_account_age_days": 876 - }, - "https://github.com/ammahmoudi/ComfyUI-Legendary-Nodes": { - "stars": 1, - "last_update": "2025-01-20 11:23:52", - "author_account_age_days": 1158 - }, - "https://github.com/animEEEmpire/ComfyUI-Animemory-Loader": { - "stars": 3, - "last_update": "2025-01-20 08:02:58", - "author_account_age_days": 61 - }, - "https://github.com/aria1th/ComfyUI-CairoSVG": { - "stars": 0, - "last_update": "2025-01-07 19:40:19", - "author_account_age_days": 2561 - }, - "https://github.com/aria1th/ComfyUI-SkipCFGSigmas": { - "stars": 3, - "last_update": "2024-11-02 07:27:30", - "author_account_age_days": 2561 - }, - "https://github.com/artem-konevskikh/comfyui-split-merge-video": { - "stars": 1, - "last_update": "2024-11-19 00:11:17", - "author_account_age_days": 4587 - }, - "https://github.com/artisanalcomputing/ComfyUI-Custom-Nodes": { - "stars": 1, - "last_update": "2024-10-13 05:55:33", - "author_account_age_days": 2491 - }, - "https://github.com/ashishsaini/comfyui-segment-clothing-sleeves": { - "stars": 2, - "last_update": "2024-09-23 19:09:15", - "author_account_age_days": 4164 - }, - "https://github.com/attashe/ComfyUI-FluxRegionAttention": { - "stars": 98, - "last_update": "2024-11-02 22:17:36", - "author_account_age_days": 3840 - }, - "https://github.com/backearth1/Comfyui-MiniMax-Video": { - "stars": 18, - "last_update": "2025-01-23 11:11:43", - "author_account_age_days": 468 - }, - "https://github.com/baicai99/ComfyUI-FrameSkipping": { - "stars": 9, - "last_update": "2024-12-03 09:26:50", - "author_account_age_days": 1047 - }, - "https://github.com/bananasss00/Comfyui-PyExec": { - "stars": 2, - "last_update": "2024-12-22 18:06:46", - "author_account_age_days": 2750 - }, - "https://github.com/beyastard/ComfyUI_BeySoft": { - "stars": 0, - "last_update": "2024-05-26 22:44:55", - "author_account_age_days": 4502 - }, - "https://github.com/birnam/ComfyUI-GenData-Pack": { - "stars": 0, - "last_update": "2024-03-25 01:25:23", - "author_account_age_days": 5225 - }, - "https://github.com/blib-la/ComfyUI-Captain-Extensions": { - "stars": 0, - "last_update": "2024-05-17 23:27:25", - "author_account_age_days": 489 - }, - "https://github.com/blurymind/cozy-fireplace": { - "stars": 4, - "last_update": "2024-11-08 19:42:20", - "author_account_age_days": 4019 - }, - "https://github.com/bmad4ever/comfyui_bmad_nodes": { - "stars": 62, - "last_update": "2024-09-02 19:42:07", - "author_account_age_days": 3752 - }, - "https://github.com/bruce007lee/comfyui-cleaner": { - "stars": 3, - "last_update": "2024-04-20 15:36:03", - "author_account_age_days": 4728 - }, - "https://github.com/bruce007lee/comfyui-tiny-utils": { - "stars": 2, - "last_update": "2024-08-31 13:34:57", - "author_account_age_days": 4728 - }, - "https://github.com/brycegoh/comfyui-custom-nodes": { - "stars": 0, - "last_update": "2024-06-05 09:30:06", - "author_account_age_days": 3324 - }, - "https://github.com/c0ffymachyne/ComfyUI_SignalProcessing": { - "stars": 3, - "last_update": "2024-12-28 19:14:00", - "author_account_age_days": 4730 - }, - "https://github.com/catboxanon/ComfyUI-Pixelsmith": { - "stars": 1, - "last_update": "2025-01-22 03:02:05", - "author_account_age_days": 747 - }, - "https://github.com/celll1/cel_sampler": { - "stars": 2, - "last_update": "2024-11-20 13:04:54", - "author_account_age_days": 445 - }, - "https://github.com/chaojie/ComfyUI-DynamiCrafter": { - "stars": 129, - "last_update": "2024-06-14 10:23:59", - "author_account_age_days": 5049 - }, - "https://github.com/chaojie/ComfyUI-mobvoi-openapi": { - "stars": 2, - "last_update": "2024-05-29 09:02:52", - "author_account_age_days": 5049 - }, - "https://github.com/chenbaiyujason/ComfyUI_StepFun": { - "stars": 5, - "last_update": "2024-12-05 14:45:27", - "author_account_age_days": 1950 - }, - "https://github.com/chengzeyi/Comfy-WaveSpeed": { - "stars": 647, - "last_update": "2025-01-24 09:27:17", - "author_account_age_days": 2993 - }, - "https://github.com/chrisdreid/ComfyUI_EnvAutopsyAPI": { - "stars": 4, - "last_update": "2024-08-29 03:54:28", - "author_account_age_days": 3334 - }, - "https://github.com/christian-byrne/infinite-zoom-parallax-nodes": { - "stars": 5, - "last_update": "2024-07-08 15:07:05", - "author_account_age_days": 1564 - }, - "https://github.com/christian-byrne/python-interpreter-node": { - "stars": 47, - "last_update": "2025-01-05 19:54:48", - "author_account_age_days": 1564 - }, - "https://github.com/ciga2011/ComfyUI-AppGen": { - "stars": 1, - "last_update": "2025-01-02 17:00:32", - "author_account_age_days": 4414 - }, - "https://github.com/comfyanonymous/ComfyUI": { - "stars": 64749, - "last_update": "2025-01-26 00:05:49", - "author_account_age_days": 765 - }, - "https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4": { - "stars": 363, - "last_update": "2024-08-16 18:06:10", - "author_account_age_days": 765 - }, - "https://github.com/comfypod/ComfyUI-Comflow": { - "stars": 0, - "last_update": "2024-06-17 08:44:08", - "author_account_age_days": 239 - }, - "https://github.com/corbin-hayden13/ComfyUI-Better-Dimensions": { - "stars": 7, - "last_update": "2024-06-12 17:45:21", - "author_account_age_days": 2031 - }, - "https://github.com/cubiq/Comfy_Dungeon": { - "stars": 241, - "last_update": "2024-04-26 11:00:58", - "author_account_age_days": 5227 - }, - "https://github.com/cwebbi1/VoidCustomNodes": { - "stars": 1, - "last_update": "2024-10-07 02:23:02", - "author_account_age_days": 221 - }, - "https://github.com/denislov/Comfyui_AutoSurvey": { - "stars": 2, - "last_update": "2024-08-03 06:50:57", - "author_account_age_days": 2203 - }, - "https://github.com/dfl/comfyui-stylegan": { - "stars": 0, - "last_update": "2024-12-29 18:35:27", - "author_account_age_days": 6190 - }, - "https://github.com/dihan/comfyui-random-kps": { - "stars": 2, - "last_update": "2025-01-01 22:48:11", - "author_account_age_days": 4512 - }, - "https://github.com/doucx/ComfyUI_WcpD_Utility_Kit": { - "stars": 1, - "last_update": "2024-01-06 19:07:45", - "author_account_age_days": 2539 - }, - "https://github.com/dowands/ComfyUI-AddMaskForICLora": { - "stars": 2, - "last_update": "2024-11-26 09:40:06", - "author_account_age_days": 2755 - }, - "https://github.com/downlifted/ComfyUI_BWiZ_Nodes": { - "stars": 2, - "last_update": "2024-12-27 17:03:52", - "author_account_age_days": 2463 - }, - "https://github.com/eigenpunk/ComfyUI-audio": { - "stars": 80, - "last_update": "2024-03-03 21:14:14", - "author_account_age_days": 1141 - }, - "https://github.com/ejektaflex/ComfyUI-Ty": { - "stars": 0, - "last_update": "2024-06-12 16:08:16", - "author_account_age_days": 2988 - }, - "https://github.com/emranemran/ComfyUI-FasterLivePortrait": { - "stars": 1, - "last_update": "2024-12-18 20:03:19", - "author_account_age_days": 4401 - }, - "https://github.com/endman100/ComfyUI-SaveAndLoadPromptCondition": { - "stars": 0, - "last_update": "2024-07-03 09:35:02", - "author_account_age_days": 2689 - }, - "https://github.com/endman100/ComfyUI-augmentation": { - "stars": 1, - "last_update": "2024-07-23 09:06:24", - "author_account_age_days": 2689 - }, - "https://github.com/ericbeyer/guidance_interval": { - "stars": 2, - "last_update": "2024-04-16 03:24:01", - "author_account_age_days": 2810 - }, - "https://github.com/esciron/ComfyUI-HunyuanVideoWrapper-Extended": { - "stars": 5, - "last_update": "2025-01-04 22:27:09", - "author_account_age_days": 3209 - }, - "https://github.com/exectails/comfyui-et_scripting": { - "stars": 2, - "last_update": "2024-11-29 17:23:07", - "author_account_age_days": 4133 - }, - "https://github.com/fablestudio/ComfyUI-Showrunner-Utils": { - "stars": 1, - "last_update": "2024-11-16 21:13:22", - "author_account_age_days": 2264 - }, - "https://github.com/flowtyone/comfyui-flowty-lcm": { - "stars": 62, - "last_update": "2023-10-23 12:08:55", - "author_account_age_days": 489 - }, - "https://github.com/flyingdogsoftware/gyre_for_comfyui": { - "stars": 2, - "last_update": "2024-11-18 22:35:37", - "author_account_age_days": 2228 - }, - "https://github.com/foglerek/comfyui-cem-tools": { - "stars": 1, - "last_update": "2024-01-13 23:22:07", - "author_account_age_days": 4254 - }, - "https://github.com/fritzprix/ComfyUI-LLM-Utils": { - "stars": 2, - "last_update": "2025-01-04 23:25:38", - "author_account_age_days": 4943 - }, - "https://github.com/futureversecom/ComfyUI-JEN": { - "stars": 2, - "last_update": "2024-08-06 00:24:56", - "author_account_age_days": 935 - }, - "https://github.com/galoreware/ComfyUI-GaloreNodes": { - "stars": 1, - "last_update": "2024-10-24 05:47:23", - "author_account_age_days": 1641 - }, - "https://github.com/gameltb/ComfyUI_paper_playground": { - "stars": 11, - "last_update": "2025-01-08 22:48:06", - "author_account_age_days": 4271 - }, - "https://github.com/gameltb/ComfyUI_stable_fast": { - "stars": 207, - "last_update": "2024-08-04 09:25:33", - "author_account_age_days": 4271 - }, - "https://github.com/gameltb/io_comfyui": { - "stars": 5, - "last_update": "2024-04-06 04:40:05", - "author_account_age_days": 4271 - }, - "https://github.com/gioferreira/ComfyUI-Molde-Utils": { - "stars": 1, - "last_update": "2024-12-11 20:10:04", - "author_account_age_days": 3176 - }, - "https://github.com/githubYiheng/comfyui_median_filter": { - "stars": 0, - "last_update": "2024-07-03 11:38:39", - "author_account_age_days": 4119 - }, - "https://github.com/gitmylo/FlowNodes": { - "stars": 9, - "last_update": "2025-01-07 15:59:52", - "author_account_age_days": 2523 - }, - "https://github.com/glamorfleet0i/ComfyUI-Firewall": { - "stars": 1, - "last_update": "2024-12-30 02:14:57", - "author_account_age_days": 34 - }, - "https://github.com/go-package-lab/ComfyUI-Tools-Video-Combine": { - "stars": 2, - "last_update": "2024-09-24 03:54:00", - "author_account_age_days": 1600 - }, - "https://github.com/grimli333/ComfyUI_Grim": { - "stars": 1, - "last_update": "2024-12-01 18:10:07", - "author_account_age_days": 4980 - }, - "https://github.com/hananbeer/node_dev": { - "stars": 7, - "last_update": "2024-08-19 08:08:39", - "author_account_age_days": 1759 - }, - "https://github.com/haodman/ComfyUI_Rain": { - "stars": 2, - "last_update": "2024-09-01 10:41:20", - "author_account_age_days": 2355 - }, - "https://github.com/haofanwang/ComfyUI-InstantStyle": { - "stars": 7, - "last_update": "2024-05-23 16:11:13", - "author_account_age_days": 3193 - }, - "https://github.com/haomole/Comfyui-SadTalker": { - "stars": 15, - "last_update": "2024-08-05 02:44:26", - "author_account_age_days": 517 - }, - "https://github.com/hay86/ComfyUI_AceNodes": { - "stars": 48, - "last_update": "2024-12-31 08:39:13", - "author_account_age_days": 4883 - }, - "https://github.com/hgabha/WWAA-CustomNodes": { - "stars": 6, - "last_update": "2025-01-12 00:01:43", - "author_account_age_days": 371 - }, - "https://github.com/horidream/ComfyUI-Horidream": { - "stars": 1, - "last_update": "2024-09-08 08:57:57", - "author_account_age_days": 5259 - }, - "https://github.com/hotpizzatactics/ComfyUI-WaterMark-Detector": { - "stars": 1, - "last_update": "2024-07-23 14:36:35", - "author_account_age_days": 192 - }, - "https://github.com/hotpot-killer/ComfyUI_AlexNodes": { - "stars": 1, - "last_update": "2024-12-06 09:09:03", - "author_account_age_days": 2441 - }, - "https://github.com/houdinii/comfy-magick": { - "stars": 4, - "last_update": "2024-03-11 06:40:54", - "author_account_age_days": 3736 - }, - "https://github.com/huizhang0110/ComfyUI_Easy_Nodes_hui": { - "stars": 2, - "last_update": "2024-02-27 08:22:49", - "author_account_age_days": 2671 - }, - "https://github.com/hunterssl/ComfyUI_SSLNodes": { - "stars": 1, - "last_update": "2025-01-20 07:23:52", - "author_account_age_days": 3052 - }, - "https://github.com/hy134300/comfyui-hb-node": { - "stars": 0, - "last_update": "2024-04-09 09:56:22", - "author_account_age_days": 1977 - }, - "https://github.com/hy134300/comfyui-hydit": { - "stars": 8, - "last_update": "2024-06-07 09:52:15", - "author_account_age_days": 1977 - }, - "https://github.com/ilovejohnwhite/Tracer": { - "stars": 1, - "last_update": "2024-11-26 03:39:33", - "author_account_age_days": 1089 - }, - "https://github.com/immersiveexperience/ie-comfyui-color-nodes": { - "stars": 2, - "last_update": "2024-06-18 10:54:55", - "author_account_age_days": 484 - }, - "https://github.com/io-club/ComfyUI-LuminaNext": { - "stars": 0, - "last_update": "2024-09-23 12:02:22", - "author_account_age_days": 854 - }, - "https://github.com/jammyfu/ComfyUI_PaintingCoderUtils": { - "stars": 12, - "last_update": "2025-01-25 15:05:45", - "author_account_age_days": 4694 - }, - "https://github.com/jgbrblmd/ComfyUI-ComfyFluxSize": { - "stars": 1, - "last_update": "2024-08-30 06:42:39", - "author_account_age_days": 671 - }, - "https://github.com/jimmm-ai/TimeUi-a-ComfyUi-Timeline-Node": { - "stars": 224, - "last_update": "2024-07-04 11:44:03", - "author_account_age_days": 236 - }, - "https://github.com/jimstudt/ComfyUI-Jims-Nodes": { - "stars": 1, - "last_update": "2025-01-21 17:36:29", - "author_account_age_days": 5163 - }, - "https://github.com/jn-jairo/jn_node_suite_comfyui": { - "stars": 6, - "last_update": "2024-06-08 05:15:33", - "author_account_age_days": 4200 - }, - "https://github.com/jonnydolake/ComfyUI-AIR-Nodes": { - "stars": 3, - "last_update": "2025-01-17 01:54:49", - "author_account_age_days": 764 - }, - "https://github.com/jordancoult/ComfyUI_HelpfulNodes": { - "stars": 1, - "last_update": "2024-09-29 00:53:48", - "author_account_age_days": 2641 - }, - "https://github.com/jtscmw01/ComfyUI-DiffBIR": { - "stars": 191, - "last_update": "2024-05-21 05:28:34", - "author_account_age_days": 718 - }, - "https://github.com/jtydhr88/ComfyUI-Unique3D": { - "stars": 201, - "last_update": "2024-10-18 10:37:10", - "author_account_age_days": 4969 - }, - "https://github.com/kadirnar/ComfyUI-Adapter": { - "stars": 3, - "last_update": "2024-04-03 12:05:39", - "author_account_age_days": 2545 - }, - "https://github.com/kandy/ComfyUI-KAndy": { - "stars": 1, - "last_update": "2025-01-21 02:24:21", - "author_account_age_days": 5688 - }, - "https://github.com/kappa54m/ComfyUI_Usability": { - "stars": 1, - "last_update": "2024-08-08 15:31:47", - "author_account_age_days": 1726 - }, - "https://github.com/karthikg-09/ComfyUI-3ncrypt": { - "stars": 1, - "last_update": "2024-12-27 09:09:07", - "author_account_age_days": 411 - }, - "https://github.com/kijai/ComfyUI-CV-VAE": { - "stars": 10, - "last_update": "2024-06-03 21:46:49", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-DeepSeek-VL": { - "stars": 33, - "last_update": "2024-05-21 16:43:40", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-DiffSynthWrapper": { - "stars": 59, - "last_update": "2024-06-22 00:16:46", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-DiffusersSD3Wrapper": { - "stars": 9, - "last_update": "2024-06-17 13:03:43", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-EasyAnimateWrapper": { - "stars": 82, - "last_update": "2024-08-14 02:20:18", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-FollowYourEmojiWrapper": { - "stars": 47, - "last_update": "2024-07-27 12:50:25", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-HunyuanVideoWrapper": { - "stars": 1645, - "last_update": "2025-01-25 18:22:01", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-MMAudio": { - "stars": 233, - "last_update": "2025-01-23 17:06:52", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-MochiWrapper": { - "stars": 743, - "last_update": "2024-11-11 13:54:57", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-VEnhancer": { - "stars": 68, - "last_update": "2024-11-02 00:24:36", - "author_account_age_days": 2398 - }, - "https://github.com/kijai/ComfyUI-VideoNoiseWarp": { - "stars": 80, - "last_update": "2025-01-25 09:14:50", - "author_account_age_days": 2398 - }, - "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": { - "stars": 12, - "last_update": "2025-01-08 12:50:40", - "author_account_age_days": 72 - }, - "https://github.com/kk8bit/KayTool": { - "stars": 10, - "last_update": "2025-01-18 20:16:29", - "author_account_age_days": 572 - }, - "https://github.com/krich-cto/ComfyUI-Flow-Control": { - "stars": 2, - "last_update": "2024-12-19 04:44:00", - "author_account_age_days": 1480 - }, - "https://github.com/kuschanow/ComfyUI-SD-Slicer": { - "stars": 1, - "last_update": "2024-12-08 16:59:31", - "author_account_age_days": 1597 - }, - "https://github.com/kxh/ComfyUI-ImageUpscaleWithModelMultipleTimes": { - "stars": 1, - "last_update": "2024-10-16 13:53:50", - "author_account_age_days": 4763 - }, - "https://github.com/kxh/ComfyUI-sam2": { - "stars": 2, - "last_update": "2024-10-10 18:06:11", - "author_account_age_days": 4763 - }, - "https://github.com/kycg/comfyui-Kwtoolset": { - "stars": 1, - "last_update": "2024-11-04 21:14:07", - "author_account_age_days": 1156 - }, - "https://github.com/kylegrover/comfyui-python-cowboy": { - "stars": 2, - "last_update": "2024-11-04 18:37:04", - "author_account_age_days": 2868 - }, - "https://github.com/laksjdjf/ssd-1b-comfyui": { - "stars": 1, - "last_update": "2023-10-27 20:05:06", - "author_account_age_days": 3047 - }, - "https://github.com/lcolok/ComfyUI-MagicAI": { - "stars": 8, - "last_update": "2024-11-14 08:21:40", - "author_account_age_days": 2629 - }, - "https://github.com/leadbreak/comfyui-faceaging": { - "stars": 75, - "last_update": "2024-10-31 08:25:21", - "author_account_age_days": 1589 - }, - "https://github.com/leeguandong/ComfyUI_AliControlnetInpainting": { - "stars": 4, - "last_update": "2024-09-25 10:44:58", - "author_account_age_days": 3010 - }, - "https://github.com/leoleelxh/ComfyUI-MidjourneyNode-leoleexh": { - "stars": 12, - "last_update": "2024-08-01 03:37:17", - "author_account_age_days": 4291 - }, - "https://github.com/lgldlk/ComfyUI-img-tiler": { - "stars": 2, - "last_update": "2024-10-17 07:56:42", - "author_account_age_days": 1906 - }, - "https://github.com/lichenhao/Comfyui_Ryota": { - "stars": 1, - "last_update": "2024-09-07 08:25:54", - "author_account_age_days": 4582 - }, - "https://github.com/linhusyung/comfyui-Build-and-train-your-network": { - "stars": 105, - "last_update": "2024-06-26 05:44:43", - "author_account_age_days": 893 - }, - "https://github.com/logtd/ComfyUI-Fluxtapoz": { - "stars": 1034, - "last_update": "2025-01-09 02:38:40", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-HunyuanLoom": { - "stars": 262, - "last_update": "2025-01-06 22:04:15", - "author_account_age_days": 338 - }, - "https://github.com/logtd/ComfyUI-Veevee": { - "stars": 62, - "last_update": "2024-08-12 03:04:12", - "author_account_age_days": 338 - }, - "https://github.com/longgui0318/comfyui-one-more-step": { - "stars": 1, - "last_update": "2024-05-07 08:40:56", - "author_account_age_days": 4380 - }, - "https://github.com/lordwedggie/xcpNodes": { - "stars": 1, - "last_update": "2024-11-15 06:24:48", - "author_account_age_days": 769 - }, - "https://github.com/ltdrdata/ComfyUI-Workflow-Component": { - "stars": 228, - "last_update": "2024-07-30 08:08:28", - "author_account_age_days": 678 - }, - "https://github.com/lu64k/SK-Nodes": { - "stars": 1, - "last_update": "2024-11-18 03:47:34", - "author_account_age_days": 607 - }, - "https://github.com/m-ai-studio/mai-prompt-progress": { - "stars": 1, - "last_update": "2025-01-08 13:42:28", - "author_account_age_days": 264 - }, - "https://github.com/maekawataiki/ComfyUI-ALB-Login": { - "stars": 3, - "last_update": "2025-01-17 02:10:49", - "author_account_age_days": 2879 - }, - "https://github.com/majorsauce/comfyui_indieTools": { - "stars": 0, - "last_update": "2024-06-25 08:59:57", - "author_account_age_days": 2021 - }, - "https://github.com/mamorett/ComfyUI-SmolVLM": { - "stars": 4, - "last_update": "2024-11-30 14:31:14", - "author_account_age_days": 967 - }, - "https://github.com/marcueberall/ComfyUI-BuildPath": { - "stars": 0, - "last_update": "2024-02-06 07:57:33", - "author_account_age_days": 1998 - }, - "https://github.com/marduk191/comfyui-marnodes": { - "stars": 4, - "last_update": "2024-09-11 06:05:49", - "author_account_age_days": 4630 - }, - "https://github.com/maruhidd/ComfyUI_Transparent-Background": { - "stars": 5, - "last_update": "2024-06-14 07:02:56", - "author_account_age_days": 2471 - }, - "https://github.com/mashb1t/comfyui-nodes-mashb1t": { - "stars": 0, - "last_update": "2024-06-11 15:55:53", - "author_account_age_days": 3751 - }, - "https://github.com/mehbebe/ComfyLoraGallery": { - "stars": 1, - "last_update": "2024-12-29 12:44:29", - "author_account_age_days": 574 - }, - "https://github.com/melMass/ComfyUI-Lygia": { - "stars": 0, - "last_update": "2024-07-14 09:59:10", - "author_account_age_days": 3961 - }, - "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext": { - "stars": 2, - "last_update": "2024-11-29 13:12:52", - "author_account_age_days": 2533 - }, - "https://github.com/mikeymcfish/FishTools": { - "stars": 21, - "last_update": "2024-07-13 20:51:17", - "author_account_age_days": 3619 - }, - "https://github.com/minhtuannhn/comfyui-gemini-studio": { - "stars": 1, - "last_update": "2024-11-19 16:05:05", - "author_account_age_days": 1396 - }, - "https://github.com/miragecoa/ComfyUI-LLM-Evaluation": { - "stars": 2, - "last_update": "2024-11-21 01:29:48", - "author_account_age_days": 782 - }, - "https://github.com/mliand/ComfyUI-Calendar-Node": { - "stars": 1, - "last_update": "2025-01-10 07:33:40", - "author_account_age_days": 602 - }, - "https://github.com/mohamedsobhi777/ComfyUI-FramerComfy": { - "stars": 1, - "last_update": "2025-01-25 14:39:17", - "author_account_age_days": 2635 - }, - "https://github.com/monate0615/ComfyUI-Affine-Transform": { - "stars": 2, - "last_update": "2024-10-05 17:42:40", - "author_account_age_days": 175 - }, - "https://github.com/monate0615/ComfyUI-Simple-Image-Tools": { - "stars": 1, - "last_update": "2024-10-12 18:29:58", - "author_account_age_days": 175 - }, - "https://github.com/mut-ex/comfyui-gligengui-node": { - "stars": 47, - "last_update": "2024-02-28 02:46:05", - "author_account_age_days": 3074 - }, - "https://github.com/muvich3n/ComfyUI-Claude-I2T": { - "stars": 1, - "last_update": "2025-01-15 07:50:46", - "author_account_age_days": 1514 - }, - "https://github.com/naderzare/comfyui-inodes": { - "stars": 0, - "last_update": "2025-01-26 08:08:14", - "author_account_age_days": 2906 - }, - "https://github.com/nat-chan/comfyui-exec": { - "stars": 3, - "last_update": "2024-05-28 11:56:37", - "author_account_age_days": 3209 - }, - "https://github.com/nat-chan/comfyui-paint": { - "stars": 3, - "last_update": "2024-06-14 11:01:38", - "author_account_age_days": 3209 - }, - "https://github.com/nat-chan/transceiver": { - "stars": 1, - "last_update": "2024-05-01 10:03:01", - "author_account_age_days": 3209 - }, - "https://github.com/neeltheninja/ComfyUI-TempFileDeleter": { - "stars": 1, - "last_update": "2024-10-26 19:25:43", - "author_account_age_days": 2094 - }, - "https://github.com/neeltheninja/ComfyUI-TextOverlay": { - "stars": 1, - "last_update": "2024-07-31 18:40:19", - "author_account_age_days": 2094 - }, - "https://github.com/neo0801/my-comfy-node": { - "stars": 1, - "last_update": "2024-09-20 07:49:04", - "author_account_age_days": 3996 - }, - "https://github.com/netanelben/comfyui-camera2image-customnode": { - "stars": 2, - "last_update": "2024-09-29 15:14:57", - "author_account_age_days": 4098 - }, - "https://github.com/netanelben/comfyui-image2image-customnode": { - "stars": 2, - "last_update": "2024-09-29 12:50:53", - "author_account_age_days": 4098 - }, - "https://github.com/netanelben/comfyui-photobooth-customnode": { - "stars": 1, - "last_update": "2024-10-02 08:00:05", - "author_account_age_days": 4098 - }, - "https://github.com/netanelben/comfyui-text2image-customnode": { - "stars": 4, - "last_update": "2024-09-29 15:19:37", - "author_account_age_days": 4098 - }, - "https://github.com/neverbiasu/ComfyUI-ControlNeXt": { - "stars": 4, - "last_update": "2024-08-15 08:15:43", - "author_account_age_days": 1235 - }, - "https://github.com/neverbiasu/ComfyUI-StereoCrafter": { - "stars": 4, - "last_update": "2024-12-30 13:32:43", - "author_account_age_days": 1235 - }, - "https://github.com/nidefawl/ComfyUI-nidefawl": { - "stars": 0, - "last_update": "2024-01-16 18:16:41", - "author_account_age_days": 5084 - }, - "https://github.com/nikkuexe/ComfyUI-ListDataHelpers": { - "stars": 1, - "last_update": "2024-09-21 16:15:57", - "author_account_age_days": 4765 - }, - "https://github.com/nkchocoai/ComfyUI-PromptUtilities": { - "stars": 10, - "last_update": "2024-10-19 14:44:42", - "author_account_age_days": 375 - }, - "https://github.com/nomcycle/ComfyUI_Cluster": { - "stars": 2, - "last_update": "2025-01-12 01:49:28", - "author_account_age_days": 4554 - }, - "https://github.com/norgeous/ComfyUI-UI-Builder": { - "stars": 10, - "last_update": "2024-08-11 22:22:04", - "author_account_age_days": 4245 - }, - "https://github.com/oshtz/ComfyUI-oshtz-nodes": { - "stars": 6, - "last_update": "2024-11-16 20:04:56", - "author_account_age_days": 641 - }, - "https://github.com/oxysoft/ComfyUI-uiapi": { - "stars": 1, - "last_update": "2024-12-10 06:01:44", - "author_account_age_days": 4327 - }, - "https://github.com/oyvindg/ComfyUI-TrollSuite": { - "stars": 2, - "last_update": "2024-08-15 10:37:43", - "author_account_age_days": 2545 - }, - "https://github.com/oztrkoguz/ComfyUI_Kosmos2_BBox_Cutter": { - "stars": 18, - "last_update": "2024-07-25 05:50:01", - "author_account_age_days": 1057 - }, - "https://github.com/pamparamm/ComfyUI-ppm": { - "stars": 147, - "last_update": "2025-01-03 07:53:12", - "author_account_age_days": 2346 - }, - "https://github.com/parmarjh/ComfyUI-MochiWrapper-I2V": { - "stars": 1, - "last_update": "2025-01-10 14:28:51", - "author_account_age_days": 1777 - }, - "https://github.com/paulhoux/Smart-Prompting": { - "stars": 1, - "last_update": "2024-09-20 08:43:53", - "author_account_age_days": 5339 - }, - "https://github.com/phamngoctukts/ComyUI-Tupham": { - "stars": 2, - "last_update": "2025-01-09 04:02:54", - "author_account_age_days": 4103 - }, - "https://github.com/poisenbery/NudeNet-Detector-Provider": { - "stars": 1, - "last_update": "2024-02-26 02:11:27", - "author_account_age_days": 1453 - }, - "https://github.com/power88/ComfyUI-PDiD-Nodes": { - "stars": 0, - "last_update": "2025-01-04 11:21:29", - "author_account_age_days": 2947 - }, - "https://github.com/prabinpebam/anyPython": { - "stars": 12, - "last_update": "2024-07-01 04:07:16", - "author_account_age_days": 4458 - }, - "https://github.com/prodogape/ComfyUI-clip-interrogator": { - "stars": 52, - "last_update": "2024-07-27 18:33:22", - "author_account_age_days": 1246 - }, - "https://github.com/pschroedl/ComfyUI-StreamDiffusion": { - "stars": 3, - "last_update": "2025-01-20 23:55:46", - "author_account_age_days": 4203 - }, - "https://github.com/pzzmyc/comfyui-sd3-simple-simpletuner": { - "stars": 1, - "last_update": "2024-06-19 12:48:18", - "author_account_age_days": 2315 - }, - "https://github.com/ralonsobeas/ComfyUI-HDRConversion": { - "stars": 5, - "last_update": "2024-12-12 20:21:26", - "author_account_age_days": 2274 - }, - "https://github.com/redhottensors/ComfyUI-ODE": { - "stars": 49, - "last_update": "2024-08-01 06:57:05", - "author_account_age_days": 355 - }, - "https://github.com/risunobushi/ComfyUI_FocusMask": { - "stars": 5, - "last_update": "2024-12-09 11:52:53", - "author_account_age_days": 863 - }, - "https://github.com/romeobuilderotti/ComfyUI-EZ-Pipes": { - "stars": 3, - "last_update": "2023-11-15 22:00:49", - "author_account_age_days": 506 - }, - "https://github.com/rouxianmantou/comfyui-rxmt-nodes": { - "stars": 1, - "last_update": "2024-10-12 08:04:58", - "author_account_age_days": 3392 - }, - "https://github.com/ruka-game/rukalib_comfyui": { - "stars": 1, - "last_update": "2024-10-03 23:59:55", - "author_account_age_days": 121 - }, - "https://github.com/ryanontheinside/ComfyUI_YoloNasObjectDetection_Tensorrt": { - "stars": 1, - "last_update": "2024-12-31 17:43:33", - "author_account_age_days": 3905 - }, - "https://github.com/sangeet/testui": { - "stars": 2, - "last_update": "2024-05-15 00:55:17", - "author_account_age_days": 5295 - }, - "https://github.com/scottmudge/ComfyUI_BiscuitNodes": { - "stars": 1, - "last_update": "2024-12-23 05:18:17", - "author_account_age_days": 3165 - }, - "https://github.com/sdfxai/SDFXBridgeForComfyUI": { - "stars": 11, - "last_update": "2024-06-14 10:26:56", - "author_account_age_days": 450 - }, - "https://github.com/seancheung/comfyui-creative-nodes": { - "stars": 1, - "last_update": "2024-09-13 06:22:45", - "author_account_age_days": 4154 - }, - "https://github.com/shadowcz007/ComfyUI-PuLID-Test": { - "stars": 9, - "last_update": "2024-05-12 14:37:28", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/Comfyui-EzAudio": { - "stars": 1, - "last_update": "2024-09-22 03:17:40", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-CLIPSeg": { - "stars": 2, - "last_update": "2024-02-08 02:16:24", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-hydit-lowvram": { - "stars": 2, - "last_update": "2024-07-31 10:04:09", - "author_account_age_days": 3530 - }, - "https://github.com/shadowcz007/comfyui-sd-prompt-mixlab": { - "stars": 15, - "last_update": "2024-05-21 19:47:56", - "author_account_age_days": 3530 - }, - "https://github.com/shinich39/comfyui-event-handler": { - "stars": 1, - "last_update": "2025-01-22 00:04:16", - "author_account_age_days": 528 - }, - "https://github.com/shirazdesigner/CLIPTextEncodeAndEnhancev4": { - "stars": 0, - "last_update": "2024-04-27 13:25:08", - "author_account_age_days": 4177 - }, - "https://github.com/shuanshuan/ComfyUI_CheckPointLoader_Ext": { - "stars": 1, - "last_update": "2024-08-27 02:24:05", - "author_account_age_days": 4333 - }, - "https://github.com/sizzlebop/comfyui-llm-prompt-enhancer": { - "stars": 2, - "last_update": "2025-01-25 09:34:32", - "author_account_age_days": 31 - }, - "https://github.com/smthemex/ComfyUI_MangaNinjia": { - "stars": 30, - "last_update": "2025-01-23 00:43:14", - "author_account_age_days": 570 - }, - "https://github.com/sofakid/dandy": { - "stars": 46, - "last_update": "2024-05-27 21:46:18", - "author_account_age_days": 4269 - }, - "https://github.com/sourceful-official/ComfyUI_InstructPixToPixConditioningLatent": { - "stars": 2, - "last_update": "2025-01-03 13:20:33", - "author_account_age_days": 1699 - }, - "https://github.com/sourceful-official/comfyui-sourceful-official": { - "stars": 1, - "last_update": "2025-01-13 13:05:49", - "author_account_age_days": 1699 - }, - "https://github.com/sswink/comfyui-lingshang": { - "stars": 0, - "last_update": "2024-11-06 15:04:22", - "author_account_age_days": 2751 - }, - "https://github.com/stavsap/ComfyUI-React-SDK": { - "stars": 10, - "last_update": "2024-03-17 21:54:21", - "author_account_age_days": 4299 - }, - "https://github.com/steelan9199/ComfyUI-Teeth": { - "stars": 7, - "last_update": "2025-01-01 07:02:30", - "author_account_age_days": 1070 - }, - "https://github.com/stutya/ComfyUI-Terminal": { - "stars": 0, - "last_update": "2024-02-05 16:47:28", - "author_account_age_days": 4053 - }, - "https://github.com/sugarkwork/comfyui_psd": { - "stars": 5, - "last_update": "2025-01-14 04:33:37", - "author_account_age_days": 1091 - }, - "https://github.com/suncat2ps/ComfyUI-SaveImgNextcloud": { - "stars": 1, - "last_update": "2024-11-12 03:30:38", - "author_account_age_days": 4340 - }, - "https://github.com/talesofai/comfyui-supersave": { - "stars": 1, - "last_update": "2023-12-27 02:05:53", - "author_account_age_days": 771 - }, - "https://github.com/talon468/ComfyUI-Rpg-Architect": { - "stars": 4, - "last_update": "2024-08-31 14:47:47", - "author_account_age_days": 633 - }, - "https://github.com/techzuhaib/ComfyUI-CacheImageNode": { - "stars": 1, - "last_update": "2024-11-29 07:31:49", - "author_account_age_days": 385 - }, - "https://github.com/thderoo/ComfyUI-_topfun_s_nodes": { - "stars": 6, - "last_update": "2024-07-03 14:39:28", - "author_account_age_days": 3082 - }, - "https://github.com/tjorbogarden/my-useful-comfyui-custom-nodes": { - "stars": 0, - "last_update": "2024-03-05 13:31:31", - "author_account_age_days": 328 - }, - "https://github.com/tom-doerr/dspy_nodes": { - "stars": 188, - "last_update": "2024-12-01 20:14:37", - "author_account_age_days": 2995 - }, - "https://github.com/tracerstar/comfyui-p5js-node": { - "stars": 34, - "last_update": "2024-07-05 23:47:57", - "author_account_age_days": 5414 - }, - "https://github.com/trashgraphicard/Albedo-Sampler-for-ComfyUI": { - "stars": 4, - "last_update": "2024-12-04 23:50:38", - "author_account_age_days": 891 - }, - "https://github.com/tuckerdarby/ComfyUI-TDNodes": { - "stars": 3, - "last_update": "2024-02-19 17:00:55", - "author_account_age_days": 3154 - }, - "https://github.com/umisetokikaze/comfyui_mergekit": { - "stars": 0, - "last_update": "2024-04-28 07:21:00", - "author_account_age_days": 2038 - }, - "https://github.com/unanan/ComfyUI-Dist": { - "stars": 5, - "last_update": "2024-02-28 10:03:50", - "author_account_age_days": 3114 - }, - "https://github.com/vahidzxc/ComfyUI-My-Handy-Nodes": { - "stars": 1, - "last_update": "2024-11-22 06:44:57", - "author_account_age_days": 208 - }, - "https://github.com/walterFeng/ComfyUI-Image-Utils": { - "stars": 2, - "last_update": "2025-01-20 14:58:59", - "author_account_age_days": 2992 - }, - "https://github.com/warshanks/Shank-Tools": { - "stars": 1, - "last_update": "2025-01-26 03:39:09", - "author_account_age_days": 3699 - }, - "https://github.com/watarika/ComfyUI-Text-Utility": { - "stars": 2, - "last_update": "2025-01-05 03:22:22", - "author_account_age_days": 1948 - }, - "https://github.com/watarika/ComfyUI-exit": { - "stars": 1, - "last_update": "2025-01-05 03:24:05", - "author_account_age_days": 1948 - }, - "https://github.com/waynepimpzhang/comfyui-opencv-brightestspot": { - "stars": 1, - "last_update": "2025-01-05 06:04:53", - "author_account_age_days": 4006 - }, - "https://github.com/willblaschko/ComfyUI-Unload-Models": { - "stars": 16, - "last_update": "2024-06-30 10:07:40", - "author_account_age_days": 4807 - }, - "https://github.com/wilzamguerrero/Comfyui-zZzZz": { - "stars": 3, - "last_update": "2025-01-02 00:35:50", - "author_account_age_days": 904 - }, - "https://github.com/wormley/comfyui-wormley-nodes": { - "stars": 0, - "last_update": "2023-11-12 19:05:11", - "author_account_age_days": 2689 - }, - "https://github.com/x3bits/ComfyUI-Power-Flow": { - "stars": 2, - "last_update": "2025-01-14 14:20:35", - "author_account_age_days": 3598 - }, - "https://github.com/xiaoyumu/ComfyUI-XYNodes": { - "stars": 1, - "last_update": "2024-12-05 07:07:30", - "author_account_age_days": 4232 - }, - "https://github.com/yanhuifair/ComfyUI-FairLab": { - "stars": 2, - "last_update": "2025-01-16 18:28:53", - "author_account_age_days": 3778 - }, - "https://github.com/yanhuifair/comfyui-deepseek": { - "stars": 3, - "last_update": "2025-01-26 07:17:32", - "author_account_age_days": 3778 - }, - "https://github.com/yichengup/Comfyui-NodeSpark": { - "stars": 5, - "last_update": "2025-01-20 14:20:36", - "author_account_age_days": 340 - }, - "https://github.com/yojimbodayne/ComfyUI-Dropbox-API": { - "stars": 1, - "last_update": "2024-08-30 05:29:07", - "author_account_age_days": 166 - }, - "https://github.com/zhongpei/Comfyui_image2prompt": { - "stars": 316, - "last_update": "2024-05-22 23:19:30", - "author_account_age_days": 3675 - }, - "https://github.com/zml-ai/comfyui-hydit": { - "stars": 2, - "last_update": "2024-08-07 09:37:09", - "author_account_age_days": 2199 - }, - "https://github.com/zmwv823/ComfyUI-VideoDiffusion": { - "stars": 3, - "last_update": "2025-01-22 15:37:22", - "author_account_age_days": 3485 - }, - "https://github.com/zyd232/ComfyUI-zyd232-Nodes": { - "stars": 1, - "last_update": "2025-01-08 13:44:25", - "author_account_age_days": 3840 - } -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/dev/model-list.json b/custom_nodes/comfyui-manager/node_db/dev/model-list.json deleted file mode 100644 index b78f1b7dd6069210f39544cfa1b8c02aec5093b3..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/dev/model-list.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "models": [] -} diff --git a/custom_nodes/comfyui-manager/node_db/dev/scan.sh b/custom_nodes/comfyui-manager/node_db/dev/scan.sh deleted file mode 100644 index 8735dc0f2a458e48e343dac7ac0b9531b8735fc4..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/dev/scan.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -rm ~/.tmp/dev/*.py > /dev/null 2>&1 -python ../../scanner.py ~/.tmp/dev diff --git a/custom_nodes/comfyui-manager/node_db/forked/custom-node-list.json b/custom_nodes/comfyui-manager/node_db/forked/custom-node-list.json deleted file mode 100644 index 06fb7465bab78885a58373678bcb5847d40adeb7..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/forked/custom-node-list.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "custom_nodes": [ - { - "author": "BlenderNeko", - "title": "ltdrdata/ComfyUI_TiledKSampler", - "reference": "https://github.com/ltdrdata/ComfyUI_TiledKSampler", - "files": [ - "https://github.com/ltdrdata/ComfyUI_TiledKSampler" - ], - "install_type": "git-clone", - "description": "PR for [a/https://github.com/BlenderNeko/ComfyUI_TiledKSampler/pull/59](https://github.com/BlenderNeko/ComfyUI_TiledKSampler/pull/59)" - }, - { - "author": "leeooo001", - "title": "ComfyUI-leo-Hamer", - "reference": "https://github.com/leeooo001/ComfyUI-leo-Hamer", - "files": [ - "https://github.com/leeooo001/ComfyUI-leo-Hamer" - ], - "install_type": "git-clone", - "description": "Unoffice Hamer-ComfyUI by leo\nNOTE:base on [a/hamer](https://github.com/geopavlakos/hamer)" - }, - { - "author": "leeooo001", - "title": "ComfyUI-leo-GVHMR", - "reference": "https://github.com/leeooo001/ComfyUI-leo-GVHMR", - "files": [ - "https://github.com/leeooo001/ComfyUI-leo-GVHMR" - ], - "install_type": "git-clone", - "description": "Unoffice Hamer-ComfyUI by leo\nNOTE:base on [a/GVHMR](https://github.com/zju3dv/GVHMR)" - }, - { - "author": "leeooo001", - "title": "RealisDance-ComfyUI", - "reference": "https://github.com/leeooo001/ComfyUI-leo-RealisDance", - "files": [ - "https://github.com/leeooo001/ComfyUI-leo-RealisDance" - ], - "install_type": "git-clone", - "description": "Unoffice RealisDance-ComfyUI by leo\nNOTE:base on [a/RealisDance](https://github.com/damo-cv/RealisDance), modified on [a/RealisDanceComfyui](https://github.com/AIFSH/RealisDance-ComfyUI)" - }, - { - "author": "jags111", - "title": "NyaamZ/efficiency-nodes-ED", - "reference": "https://github.com/NyaamZ/efficiency-nodes-ED", - "files": [ - "https://github.com/NyaamZ/efficiency-nodes-ED" - ], - "install_type": "git-clone", - "description": "This forked repo supports efficiency-nodes-comfyui. Additional features." - }, - { - "author": "SeaArtLab", - "title": "zer0int/ComfyUI-Long-CLIP", - "reference": "https://github.com/zer0int/ComfyUI-Long-CLIP", - "files": [ - "https://github.com/zer0int/ComfyUI-Long-CLIP" - ], - "install_type": "git-clone", - "description": "This forked repo supports FLUX.1 not only SD1.5, SDXL." - }, - { - "author": "meimeilook", - "title": "ComfyUI_IPAdapter_plus.old [backward compatbility]", - "reference": "https://github.com/meimeilook/ComfyUI_IPAdapter_plus.old", - "files": [ - "https://github.com/meimeilook/ComfyUI_IPAdapter_plus.old" - ], - "install_type": "git-clone", - "description": "This repo is created to provide backward compatibility for workflows configured with the old IPAdapter." - }, - { - "author": "ZHO-ZHO-ZHO", - "title": "Dr.Lt.Data/ComfyUI-YoloWorld-EfficientSAM", - "reference": "https://github.com/ltdrdata/ComfyUI-YoloWorld-EfficientSAM", - "files": [ - "https://github.com/ltdrdata/ComfyUI-YoloWorld-EfficientSAM" - ], - "install_type": "git-clone", - "description": "This fork includes [a/PR32](https://github.com/ZHO-ZHO-ZHO/ComfyUI-YoloWorld-EfficientSAM/pull/32)" - }, - { - "author": "ertu110", - "title": "sdxl_prompt_style", - "reference": "https://github.com/ertu110/sdxl_prompt_style", - "files": [ - "https://github.com/ertu110/sdxl_prompt_style" - ], - "install_type": "git-clone", - "description": "This project is a complete benchmark [a/https://github.com/twri/sdxl_prompt_styler](https://github.com/twri/sdxl_prompt_styler) A large amount of code inside comes from https://github.com/twri/sdxl_prompt_styler Project and [a/https://www.nodecafe.org/package/pythongosssss_ComfyUI-Custom-Scripts](https://www.nodecafe.org/package/pythongosssss_ComfyUI-Custom-Scripts) project\nThe functionality of this project is related to https://github.com/twri/sdxl_prompt_styler Highly overlapping, the only purpose of creating this project is because there are too many styles when selecting, resulting in a long and inconvenient dropdown box. Therefore, To address this issue, this project has added a secondary menu to the style." - }, - { - "author": "gustproof", - "title": "ComfyUI_IPAdapter_plus_Style_Components", - "reference": "https://github.com/gustproof/ComfyUI_IPAdapter_plus_Style_Components", - "files": [ - "https://github.com/gustproof/ComfyUI_IPAdapter_plus_Style_Components" - ], - "install_type": "git-clone", - "description": "Style Components is an IP-Adapter model conditioned on anime styles. The style embeddings can either be extracted from images or created manually. This repo currently only supports the SDXL model trained on AutismmixPony." - }, - { - "author": "gameltb", - "title": "comfyui-stablsr", - "reference": "https://github.com/gameltb/Comfyui-StableSR", - "files": [ - "https://github.com/gameltb/Comfyui-StableSR" - ], - "install_type": "git-clone", - "description": "This is a development respository for debugging migration of StableSR to ComfyUI\n\nNOTE:Forked from [https://github.com/gameltb/Comfyui-StableSR]\nPut the StableSR [a/webui_786v_139.ckpt](https://huggingface.co/Iceclear/StableSR/resolve/main/webui_768v_139.ckpt) model into Comyfui/models/stablesr/, Put the StableSR [a/stablesr_768v_000139.ckpt](https://huggingface.co/Iceclear/StableSR/resolve/main/stablesr_768v_000139.ckpt) model into Comyfui/models/checkpoints/" - }, - { - "author": "city96", - "title": "Efficient-Large-Model/Extra Models for ComfyUI", - "reference": "https://github.com/Efficient-Large-Model/ComfyUI_ExtraModels", - "files": [ - "https://github.com/Efficient-Large-Model/ComfyUI_ExtraModels" - ], - "install_type": "git-clone", - "description": "A forked version of ComfyUI_ExtraModels. (modified by Efficient-Large-Model)" - } - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/forked/extension-node-map.json b/custom_nodes/comfyui-manager/node_db/forked/extension-node-map.json deleted file mode 100644 index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/forked/extension-node-map.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/forked/model-list.json b/custom_nodes/comfyui-manager/node_db/forked/model-list.json deleted file mode 100644 index b78f1b7dd6069210f39544cfa1b8c02aec5093b3..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/forked/model-list.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "models": [] -} diff --git a/custom_nodes/comfyui-manager/node_db/forked/scan.sh b/custom_nodes/comfyui-manager/node_db/forked/scan.sh deleted file mode 100644 index 79851869cad43c1dfe0c6085ba6e7d27b50c0631..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/forked/scan.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -source ../../../../venv/bin/activate -rm .tmp/*.py > /dev/null -python ../../scanner.py diff --git a/custom_nodes/comfyui-manager/node_db/legacy/alter-list.json b/custom_nodes/comfyui-manager/node_db/legacy/alter-list.json deleted file mode 100644 index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/legacy/alter-list.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/legacy/custom-node-list.json b/custom_nodes/comfyui-manager/node_db/legacy/custom-node-list.json deleted file mode 100644 index 36ac5d87670e8f9e528400b6eea1c8c6ae9b451a..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/legacy/custom-node-list.json +++ /dev/null @@ -1,1316 +0,0 @@ -{ - "custom_nodes": [ - { - "author": "#NOTICE_1.13", - "title": "NOTICE: This channel is not the default channel.", - "reference": "https://github.com/ltdrdata/ComfyUI-Manager", - "files": [], - "install_type": "git-clone", - "description": "If you see this message, your ComfyUI-Manager is outdated.\nLegacy channel provides only the list of the deprecated nodes. If you want to find the complete node list, please go to the Default channel." - }, - - - - { - "author": "vpakarinen", - "title": "ComfyUI-GenerationTimer [REMOVED]", - "reference": "https://github.com/vpakarinen/ComfyUI-GenerationTimer", - "files": [ - "https://github.com/vpakarinen/ComfyUI-GenerationTimer" - ], - "install_type": "git-clone", - "description": "NODES: Generation Timer, Image Timer, Timer Display" - }, - { - "author": "RedRayz", - "title": "ComfyUI-Danbooru-To-WD [REMOVED]", - "id": "danbooru2wd", - "reference": "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD", - "files": [ - "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD" - ], - "install_type": "git-clone", - "description": "Converts booru tags to a format suitable for Waifu Diffusion(or Danbooru based models)." - }, - { - "author": "alexgenovese", - "title": "comfyui_CfgPlusPlus [REMOVED]", - "id": "cfgpp", - "reference": "https://gitea.com/NotEvilGirl/cfgpp", - "files": [ - "https://gitea.com/NotEvilGirl/cfgpp" - ], - "install_type": "git-clone", - "description": "CFG++ implemented according to [a/https://cfgpp-diffusion.github.io](https://cfgpp-diffusion.github.io). Basically modified DDIM sampler that makes sampling work at low CFG values (0 ~ 2). Read the CFG++ paper for more details" - }, - { - "author": "hosterosi", - "title": "ComfyUI OpenAI Node", - "reference": "https://github.com/hosterosi/ComfyUI_OpenAI [REMOVED]", - "files": [ - "https://github.com/hosterosi/ComfyUI_OpenAI" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI allows users to input multiline text and select a specific line by its number. The node processes the input and returns the selected line along with its index." - }, - { - "author": "Gourieff", - "title": "ReActor Node for ComfyUI [DISABLED]", - "id": "reactor", - "reference": "https://github.com/Gourieff/comfyui-reactor-node", - "files": [ - "https://github.com/Gourieff/comfyui-reactor-node" - ], - "install_type": "git-clone", - "description": "The Fast and Simple 'roop-like' Face Swap Extension Node for ComfyUI, based on ReActor (ex Roop-GE) SD-WebUI Face Swap Extension" - }, - { - "author": "prismwastaken", - "title": "prism-tools [REMOVED]", - "reference": "https://github.com/prismwastaken/prism-comfyui-tools", - "files": [ - "https://github.com/prismwastaken/prism-comfyui-tools" - ], - "install_type": "git-clone", - "description": "prism-tools" - }, - { - "author": "42lux", - "title": "ComfyUI-safety-checker [DEPRECATED]", - "reference": "https://github.com/42lux/ComfyUI-safety-checker", - "files": [ - "https://github.com/42lux/ComfyUI-safety-checker" - ], - "install_type": "git-clone", - "description": "A NSFW/Safety Checker Node for ComfyUI." - }, - { - "author": "riverolls", - "title": "ComfyUI-FJDH", - "reference": "https://github.com/riverolls/ComfyUI-FJDH [REMOVED]", - "files": [ - "https://github.com/riverolls/ComfyUI-FJDH" - ], - "install_type": "git-clone", - "description": "bbox tools, image tools, mask generators, point tools" - }, - { - "author": "jetchopper", - "title": "ComfyUI-GeneraNodes", - "id": "genera", - "reference": "https://github.com/evolox/ComfyUI-GeneraNodes [REMOVED]", - "files": [ - "https://github.com/evolox/ComfyUI-GeneraNodes" - ], - "install_type": "git-clone", - "description": "Genera custom nodes and extensions" - }, - { - "author": "Pos13", - "title": "Cyclist [DEPRECATED]", - "id": "cyclist", - "reference": "https://github.com/Pos13/comfyui-cyclist", - "files": [ - "https://github.com/Pos13/comfyui-cyclist" - ], - "install_type": "git-clone", - "description": "This extension provides tools to iterate generation results between runs. In general, it's for cycles." - }, - { - "author": "leiweiqiang", - "title": "ComfyUI-TRA", - "id": "tra", - "reference": "https://github.com/leiweiqiang/ComfyUI-TRA", - "files": [ - "https://github.com/leiweiqiang/ComfyUI-TRA" - ], - "install_type": "git-clone", - "description": "Nodes:TCL EbSynth, TCL Extract Frames (From File), TCL Extract Frames (From Video), TCL Combine Frames, TCL Save Video (From Frames)" - }, - { - "author": "ai-business-hql", - "title": "comfyUIAgent [REMOVED]", - "reference": "https://github.com/ai-business-hql/comfyUIAgent", - "files": [ - "https://github.com/ai-business-hql/comfyUIAgent" - ], - "install_type": "git-clone", - "description": "test" - }, - { - "author": "daqingliu", - "title": "ComfyUI-SaveImageOSS [REMOVED]", - "reference": "https://github.com/daqingliu/ComfyUI-SaveImageOSS", - "files": [ - "https://github.com/daqingliu/ComfyUI-SaveImageOSS" - ], - "install_type": "git-clone", - "description": "Save images directly to URL, e.g., OSS. Just input the url in the text box!" - }, - { - "author": "shinich39", - "title": "comfyui-textarea-keybindings [REMOVED]", - "reference": "https://github.com/shinich39/comfyui-textarea-keybindings", - "files": [ - "https://github.com/shinich39/comfyui-textarea-keybindings" - ], - "install_type": "git-clone", - "description": "Add keybindings to textarea." - }, - { - "author": "shinich39", - "title": "comfyui-load-image-with-cmd [REMOVED]", - "reference": "https://github.com/shinich39/comfyui-load-image-with-cmd", - "files": [ - "https://github.com/shinich39/comfyui-load-image-with-cmd" - ], - "install_type": "git-clone", - "description": "Load image and partially workflow with javascript." - }, - { - "author": "neuratech-ai", - "title": "ComfyUI-MultiGPU [NOT MAINTAINED]", - "reference": "https://github.com/neuratech-ai/ComfyUI-MultiGPU", - "files": [ - "https://github.com/neuratech-ai/ComfyUI-MultiGPU" - ], - "install_type": "git-clone", - "description": "Experimental nodes for using multiple GPUs in a single ComfyUI workflow.\nThis extension adds new nodes for model loading that allow you to specify the GPU to use for each model. It monkey patches the memory management of ComfyUI in a hacky way and is neither a comprehensive solution nor a well-tested one. Use at your own risk.\nNote that this does not add parallelism. The workflow steps are still executed sequentially just on different GPUs. Any potential speedup comes from not having to constantly load and unload models from VRAM." - }, - { - "author": "jefferyharrell", - "title": "ComfyUI-JHXMP [REMOVED]", - "reference": "https://github.com/jefferyharrell/ComfyUI-JHXMP", - "files": [ - "https://github.com/jefferyharrell/ComfyUI-JHXMP" - ], - "install_type": "git-clone", - "description": "NODES: Save Image With XMP Metadata" - }, - { - "author": "viperyl", - "title": "ComfyUI-BiRefNet [NOT MAINTAINED]", - "id": "comfyui-birefnet", - "reference": "https://github.com/viperyl/ComfyUI-BiRefNet", - "files": [ - "https://github.com/viperyl/ComfyUI-BiRefNet" - ], - "install_type": "git-clone", - "description": "Bilateral Reference Network achieves SOTA result in multi Salient Object Segmentation dataset, this repo pack BiRefNet as ComfyUI nodes, and make this SOTA model easier use for everyone." - }, - { - "author": "asagi4", - "title": "ComfyUI prompt control (LEGACY VERSION)", - "reference": "https://github.com/asagi4/comfyui-prompt-control-legacy", - "files": [ - "https://github.com/asagi4/comfyui-prompt-control-legacy" - ], - "install_type": "git-clone", - "description": "WARNING: These nodes exist only to reproduce old workflows. They are unmaintained See https://github.com/asagi4/comfyui-prompt-control for the revised, current version of prompt control." - }, - { - "author": "doomy23", - "title": "ComfyUI-D00MYsNodes [REMOVED]", - "reference": "https://github.com/doomy23/ComfyUI-D00MYsNodes", - "files": [ - "https://github.com/doomy23/ComfyUI-D00MYsNodes" - ], - "install_type": "git-clone", - "description": "Nodes: Images_Converter, Show_Text, Strings_From_List, Save_Text, Random_Images, Load_Images_From_Paths, JSPaint." - }, - { - "author": "kadirnar", - "title": "comfyui_hub [REMOVED]", - "reference": "https://github.com/kadirnar/comfyui_hub", - "files": [ - "https://github.com/kadirnar/comfyui_hub" - ], - "install_type": "git-clone", - "description": "A collection of nodes randomly selected and gathered, related to noise. NOTE: SD-Advanced-Noise, noise_latent_perlinpinpin, comfy-plasma" - }, - { - "author": "SaltAI", - "title": "SaltAI_AudioViz [REMOVED]", - "id": "saltai-audioviz", - "reference": "https://github.com/get-salt-AI/SaltAI_AudioViz", - "files": [ - "https://github.com/get-salt-AI/SaltAI_AudioViz" - ], - "install_type": "git-clone", - "description": "SaltAI AudioViz contains ComfyUI nodes for generating complex audio reactive visualizations" - }, - { - "author": "SaltAI", - "title": "SaltAI-Open-Resources [REMOVED]", - "id": "saltai-open-resource", - "reference": "https://github.com/get-salt-AI/SaltAI", - "pip": ["numba"], - "files": [ - "https://github.com/get-salt-AI/SaltAI" - ], - "install_type": "git-clone", - "description": "This repository is a collection of open-source nodes and workflows for ComfyUI, a dev tool that allows users to create node-based workflows often powered by various AI models to do pretty much anything.\nOur mission is to seamlessly connect people and organizations with the world’s foremost AI innovations, anywhere, anytime. Our vision is to foster a flourishing AI ecosystem where the world’s best developers can build and share their work, thereby redefining how software is made, pushing innovation forward, and ensuring as many people as possible can benefit from the positive promise of AI technologies.\nWe believe that ComfyUI is a powerful tool that can help us achieve our mission and vision, by enabling anyone to explore the possibilities and limitations of AI models in a visual and interactive way, without coding if desired.\nWe hope that by sharing our nodes and workflows, we can inspire and empower more people to create amazing AI-powered content with ComfyUI." - }, - { - "author": "SaltAI", - "title": "SaltAI_Language_Toolkit [REMOVED]", - "id": "saltai_language_toolkit", - "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": "The project integrates the Retrieval Augmented Generation (RAG) tool [a/Llama-Index](https://www.llamaindex.ai/), [a/Microsoft's AutoGen](https://microsoft.github.io/autogen/), and [a/LlaVA-Next](https://github.com/LLaVA-VL/LLaVA-NeXT) with ComfyUI's adaptable node interface, enhancing the functionality and user experience of the platform." - }, - { - "author": "zmwv823", - "title": "ComfyUI-Sana [DEPRECATED]", - "reference": "https://github.com/zmwv823/ComfyUI-Sana", - "files": [ - "https://github.com/zmwv823/ComfyUI-Sana" - ], - "install_type": "git-clone", - "description": "Unofficial custom-node for [a/SANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformer](https://github.com/NVlabs/Sana)\n[w/A init node with lots of bugs, do not try unless interested.]" - }, - { - "author": "ACE-innovate", - "title": "seg-node [REMOVED]", - "reference": "https://github.com/ACE-innovate/seg-node", - "files": [ - "https://github.com/ACE-innovate/seg-node" - ], - "install_type": "git-clone", - "description": "hf cloth seg custom node for comfyui\nNOTE: The files in the repo are not organized." - }, - { - "author": "zefu-lu", - "title": "ComfyUI_InstantX_SD35_Large_IPAdapter [REMOVED]", - "id": "comfyui-instantx-sd3-5-large-ipadapter", - "reference": "https://github.com/zefu-lu/ComfyUI-InstantX-SD3_5-Large-IPAdapter", - "files": [ - "https://github.com/zefu-lu/ComfyUI-InstantX-SD3_5-Large-IPAdapter" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI node for using InstantX SD3.5-Large IPAdapter" - }, - { - "author": "HentaiGirlfriendDotCom", - "title": "comfyui-highlight-connections [REMOVED]", - "reference": "https://github.com/HentaiGirlfriendDotCom/comfyui-highlight-connections", - "files": [ - "https://github.com/HentaiGirlfriendDotCom/comfyui-highlight-connections" - ], - "install_type": "git-clone", - "description": "A node that can be dropped into a group. When a node is then clicked within that group, all nodes and connections in that group get greyed out and the connections from the clicked node go bright red." - }, - { - "author": "huangyangke", - "title": "ComfyUI-Kolors-IpadapterFaceId [DEPRECATED]", - "reference": "https://github.com/huangyangke/ComfyUI-Kolors-IpadapterFaceId", - "files": [ - "https://github.com/huangyangke/ComfyUI-Kolors-IpadapterFaceId" - ], - "install_type": "git-clone", - "description": "NODES:kolors_ipadapter_faceid\nNOTE: The files in the repo are not organized." - }, - { - "author": "zmwv823", - "title": "ComfyUI_Ctrlora [DEPRECATED]", - "reference": "https://github.com/zmwv823/ComfyUI_Ctrlora", - "files": [ - "https://github.com/zmwv823/ComfyUI_Ctrlora" - ], - "install_type": "git-clone", - "description": "Unofficial custom_node for [a/xyfJASON/ctrlora](https://github.com/xyfJASON/ctrlora)." - }, - { - "author": "Fannovel16", - "title": "ComfyUI Loopchain [DEPRECATED]", - "id": "loopchain", - "reference": "https://github.com/Fannovel16/ComfyUI-Loopchain", - "files": [ - "https://github.com/Fannovel16/ComfyUI-Loopchain" - ], - "install_type": "git-clone", - "description": "A collection of nodes which can be useful for animation in ComfyUI. The main focus of this extension is implementing a mechanism called loopchain. A loopchain in this case is the chain of nodes only executed repeatly in the workflow. If a node chain contains a loop node from this extension, it will become a loop chain." - }, - { - "author": "DonBaronFactory", - "title": "ComfyUI-Cre8it-Nodes [DEPRECATED]", - "reference": "https://github.com/DonBaronFactory/ComfyUI-Cre8it-Nodes", - "files": [ - "https://github.com/DonBaronFactory/ComfyUI-Cre8it-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:CRE8IT Serial Prompter, CRE8IT Apply Serial Prompter, CRE8IT Image Sizer. A few simple nodes to facilitate working wiht ComfyUI Workflows" - }, - { - "author": "thecooltechguy", - "title": "ComfyUI-ComfyRun [DEPRECATED/UNSAFE]", - "reference": "https://github.com/thecooltechguy/ComfyUI-ComfyRun", - "files": [ - "https://github.com/thecooltechguy/ComfyUI-ComfyRun" - ], - "install_type": "git-clone", - "description": "The easiest way to run & share any ComfyUI workflow [a/https://comfyrun.com](https://comfyrun.com)\nNOTE: Vulnerability discovered. Not being managed." - }, - { - "author": "Cardoso-topdev", - "title": "comfyui_meshanything_v1 [REMOVED]", - "reference": "https://github.com/Cardoso-topdev/comfyui_meshanything_v1", - "files": [ - "https://github.com/Cardoso-topdev/comfyui_meshanything_v1" - ], - "install_type": "git-clone", - "description": "MeshAnything V2: Artist-Created Mesh Generation With Adjacent Mesh Tokenization" - }, - { - "author": "palant", - "title": "Extended Save Image for ComfyUI [DEPRECATED]", - "reference": "https://github.com/palant/extended-saveimage-comfyui", - "files": [ - "https://github.com/palant/extended-saveimage-comfyui" - ], - "install_type": "git-clone", - "description": "This custom node is largely identical to the usual Save Image but allows saving images also in JPEG and WEBP formats, the latter with both lossless and lossy compression. Metadata is embedded in the images as usual, and the resulting images can be used to load a workflow." - }, - { - "author": "1038lab", - "title": "ComfyUI-GPT2P [REMOVED]", - "id": "gpt2p", - "reference": "https://github.com/1038lab/ComfyUI-GPT2P", - "files": [ - "https://github.com/1038lab/ComfyUI-GPT2P" - ], - "install_type": "git-clone", - "description": "ComfyUI Node - Hugging Face repositories GTP2 Prompt" - }, - { - "author": "yushan777", - "title": "Y7 Nodes for ComfyUI [REMOVED]", - "id": "y7nodes", - "reference": "https://github.com/yushan777/ComfyUI-Y7Nodes", - "files": [ - "https://github.com/yushan777/ComfyUI-Y7Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Count_Tokens_(Y7)" - }, - { - "author": "city96", - "title": "SD-Advanced-Noise [DEPRECATED]", - "id": "adv-noise", - "reference": "https://github.com/city96/SD-Advanced-Noise", - "files": [ - "https://github.com/city96/SD-Advanced-Noise" - ], - "install_type": "git-clone", - "description": "Nodes: LatentGaussianNoise, MathEncode. An experimental custom node that generates latent noise directly by utilizing the linear characteristics of the latent space." - }, - { - "author": "shockz0rz", - "title": "InterpolateEverything [DEPRECATED]", - "id": "interpolate-everything", - "reference": "https://github.com/shockz0rz/ComfyUI_InterpolateEverything", - "files": [ - "https://github.com/shockz0rz/ComfyUI_InterpolateEverything" - ], - "install_type": "git-clone", - "description": "Nodes: Interpolate Poses, Interpolate Lineart, ... Custom nodes for interpolating between, well, everything in the Stable Diffusion ComfyUI." - }, - { - "author": "svdC1", - "title": "LoRa Dataset Tools [REMOVED]", - "reference": "https://github.com/svdC1/comfy-ui-lora-dataset-tools", - "files": [ - "https://github.com/svdC1/comfy-ui-lora-dataset-tools" - ], - "install_type": "git-clone", - "description": "NODES:Directory Loader, Filter Images Without Faces, Detect Faces and Draw Detection Box" - }, - { - "author": "MiddleKD", - "title": "ComfyUI-default-workflow-setter [REMOVED]", - "reference": "https://github.com/MiddleKD/ComfyUI-default-workflow-setter", - "files": [ - "https://github.com/MiddleKD/ComfyUI-default-workflow-setter" - ], - "install_type": "git-clone", - "description": "Default workflow setter" - }, - { - "author": "Firetheft", - "title": "ComfyUI-Flux-Prompt-Tools [REMOVED]", - "reference": "https://github.com/Firetheft/ComfyUI-Flux-Prompt-Tools", - "files": [ - "https://github.com/Firetheft/ComfyUI-Flux-Prompt-Tools" - ], - "install_type": "git-clone", - "description": "NODES:Flux Prompt Enhance, Flux Prompt Gemini Flash, Flux Prompt Generator, MiniCPM V2.6 Int4" - }, - { - "author": "jtydhr88", - "title": "ComfyUI Unique3D [DEPRECATED]", - "id": "unique3d", - "reference": "https://github.com/jtydhr88/ComfyUI-Unique3D", - "files": [ - "https://github.com/jtydhr88/ComfyUI-Unique3D" - ], - "install_type": "git-clone", - "description": "ComfyUI Unique3D is custom nodes that running AiuniAI/Unique3D into ComfyUI[w/Please follow readme to install with ComfyUI embedded python.]" - }, - { - "author": "mpiquero7164", - "title": "SaveImgPrompt [DEPRECATED]", - "id": "save-imgprompt", - "reference": "https://github.com/mpiquero7164/ComfyUI-SaveImgPrompt", - "files": [ - "https://github.com/mpiquero7164/ComfyUI-SaveImgPrompt" - ], - "install_type": "git-clone", - "description": "Save a png or jpeg and option to save prompt/workflow in a text or json file for each image in Comfy + Workflow loading." - }, - { - "author": "guoyk93", - "title": "y.k.'s ComfyUI node suite [DEPRECATED]", - "id": "yks", - "reference": "https://github.com/yankeguo-deprecated/yk-node-suite-comfyui", - "files": [ - "https://github.com/yankeguo-deprecated/yk-node-suite-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes: YKImagePadForOutpaint, YKMaskToImage" - }, - { - "author": "adityathiru", - "title": "ComfyUI LLMs [REMOVED]", - "reference": "https://github.com/adityathiru/ComfyUI-LLMs", - "files": [ - "https://github.com/adityathiru/ComfyUI-LLMs" - ], - "install_type": "git-clone", - "description": "Goal: To enable folks to rapidly build complex workflows with LLMs\nNOTE:☠️ This is experimental and not recommended to use in a production environment (yet!)" - }, - { - "author": "DannyStone1999", - "title": "ComfyUI-Depth2Mask [REMOVED]", - "reference": "https://github.com/DannyStone1999/ComfyUI-Depth2Mask", - "files": [ - "https://github.com/DannyStone1999/ComfyUI-Depth2Mask/raw/main/Depth2Mask.py" - ], - "install_type": "copy", - "description": "Nodes:Depth2Mask" - }, - { - "author": "syaofox", - "title": "ComfyUI_FoxTools [REMOVED]", - "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": "AIFSH", - "title": "SeedVC-ComfyUI [REMOVED]", - "reference": "https://github.com/AIFSH/SeedVC-ComfyUI", - "files": [ - "https://github.com/AIFSH/SeedVC-ComfyUI" - ], - "install_type": "git-clone", - "description": "a custom node for [a/seed-vc](https://github.com/Plachtaa/seed-vc)" - }, - { - "author": "jazhang00", - "title": "ComfyUI Node for Slicedit [REMOVED]", - "reference": "https://github.com/jazhang00/ComfyUI-Slicedit", - "files": [ - "https://github.com/jazhang00/ComfyUI-Slicedit" - ], - "install_type": "git-clone", - "description": "Slicedit main page: [a/https://matankleiner.github.io/slicedit/](https://matankleiner.github.io/slicedit/). Use Slicedit with ComfyUI." - }, - { - "author": "rklaffehn", - "title": "rk-comfy-nodes [REMOVED]", - "id": "rknodes", - "reference": "https://github.com/rklaffehn/rk-comfy-nodes", - "files": [ - "https://github.com/rklaffehn/rk-comfy-nodes" - ], - "install_type": "git-clone", - "description": "Nodes: RK_CivitAIMetaChecker, RK_CivitAIAddHashes." - }, - { - "author": "Extraltodeus", - "title": "CLIP-Token-Injection [REMOVED]", - "reference": "https://github.com/Extraltodeus/CLIP-Token-Injection", - "files": [ - "https://github.com/Extraltodeus/CLIP-Token-Injection" - ], - "install_type": "git-clone", - "description": "These nodes are to edit the text vectors of CLIP models, so to customize how the prompts will be interpreted. You could see it as either customisation, 'one token prompt' up to some limitation and a way to mess with how the text will be interpreted. The edited CLIP can then be saved, or as well the edited tokens themselves. The shared example weights does not contain any image-knowledge but the text vector of the words affected." - }, - { - "author": "openart", - "title": "openart-comfyui-deploy [REMOVED]", - "id": "openart-comfyui-deploy", - "reference": "https://github.com/kulsisme/openart-comfyui-deploy", - "files": [ - "https://github.com/kulsisme/openart-comfyui-deploy" - ], - "install_type": "git-clone", - "description": "NODES: External Boolean (ComfyUI Deploy), External Checkpoint (ComfyUI Deploy), External Image (ComfyUI Deploy), External Video (ComfyUI Deploy x VHS), OpenArt Text, Image Websocket Output (ComfyDeploy), ..." - }, - { - "author": "mittimi", - "title": "ComfyUI_mittimiLoadPreset [DEPRECATED]", - "id": "comfyui-mittimi-load-preset", - "reference": "https://github.com/mittimi/ComfyUI_mittimiLoadPreset", - "files": [ - "https://github.com/mittimi/ComfyUI_mittimiLoadPreset" - ], - "install_type": "git-clone", - "description": "The system selects and loads preset." - }, - { - "author": "jinljin", - "title": "ComfyUI-Talking-Head [REMOVED]", - "reference": "https://github.com/jinljin/ComfyUI-ElevenlabsAndDID-Combine", - "files": [ - "https://github.com/jinljin/ComfyUI-ElevenlabsAndDID-Combine" - ], - "install_type": "git-clone", - "description": "ComfyUI-Talking-Head" - }, - { - "author": "jh-leon-kim", - "title": "ComfyUI-JHK-utils [REMOVED]", - "id": "jhk", - "reference": "https://github.com/jh-leon-kim/ComfyUI-JHK-utils", - "files": [ - "https://github.com/jh-leon-kim/ComfyUI-JHK-utils" - ], - "install_type": "git-clone", - "description": "Nodes:JHK_Utils_LoadEmbed, JHK_Utils_string_merge, JHK_Utils_ImageRemoveBackground" - }, - { - "author": "ilovejohnwhite", - "title": "TatToolkit [REMOVED]", - "reference": "https://github.com/ilovejohnwhite/UncleBillyGoncho", - "files": [ - "https://github.com/ilovejohnwhite/UncleBillyGoncho" - ], - "install_type": "git-clone", - "description": "Nodes:UWU TTK Preprocessor, Pixel Perfect Resolution, Generation Resolution From Image, Generation Resolution From Latent, Enchance And Resize Hint Images, ..." - }, - { - "author": "hzchet", - "title": "ComfyUI_QueueGeneration [REMOVED]", - "reference": "https://github.com/hzchet/ComfyUI_QueueGeneration", - "files": [ - "https://github.com/hzchet/ComfyUI_QueueGeneration" - ], - "install_type": "git-clone", - "description": "NODES:Queue Img2Vid Generation" - }, - { - "author": "ader47", - "title": "ComfyUI-MeshHamer [REMOVED]", - "reference": "https://github.com/ader47/comfyui_meshhamer", - "files": [ - "https://github.com/ader47/comfyui_meshhamer" - ], - "install_type": "git-clone", - "description": "Nodes:MeshHamer Hand Refiner. See also: [a/HaMeR: Hand Mesh Recovery](https://github.com/geopavlakos/hamer/tree/main)" - }, - { - "author": "SEkINVR", - "title": "ComfyUI-Animator", - "reference": "https://github.com/SEkINVR/ComfyUI-Animator [REMOVED]", - "files": [ - "https://github.com/SEkINVR/ComfyUI-Animator" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI provides full-body animation capabilities, including facial rigging, various lighting styles, and green screen output." - }, - { - "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 ComfyUI(EXP)" - }, - { - "author": "shinich39", - "title": "comfyui-pkg39 [DEPRECATED]", - "reference": "https://github.com/shinich39/comfyui-pkg39", - "files": [ - "https://github.com/shinich39/comfyui-pkg39" - ], - "install_type": "git-clone", - "description": "This package has created for generate image from generated image and embedded workflow." - }, - { - "author": "dnl13", - "title": "ComfyUI-dnl13-seg [DEPRECATED]", - "reference": "https://github.com/dnl13/ComfyUI-dnl13-seg", - "files": [ - "https://github.com/dnl13/ComfyUI-dnl13-seg" - ], - "install_type": "git-clone", - "description": "After discovering @storyicon implementation here of Segment Anything, I realized its potential as a powerful tool for ComfyUI if implemented correctly. I delved into the SAM and Dino models. The following is my own adaptation of sam_hq for ComfyUI." - }, - { - "author": "1038lab", - "title": "ComfyUI-latentSizeSelector [REMOVED]", - "id": "ComfyUI-latentSizeSelector", - "reference": "https://github.com/1038lab/ComfyUI_LatentSizeSelector", - "files": [ - "https://github.com/1038lab/ComfyUI_LatentSizeSelector" - ], - "install_type": "git-clone", - "description": "You'll get a new node Latent Size Selector, you can pick the x and y sizes from a list." - }, - { - "author": "hy134300", - "title": "ComfyUI-PhotoMaker-V2 [REMOVED]", - "reference": "https://github.com/hy134300/ComfyUI-PhotoMaker-V2", - "files": [ - "https://github.com/hy134300/ComfyUI-PhotoMaker-V2" - ], - "install_type": "git-clone", - "description": "Nodes for PhotoMaker-V2" - }, - { - "author": "neverbiasu", - "title": "ComfyUI ImageCaptioner [REMOVED]", - "reference": "https://github.com/neverbiasu/ComfyUI-ImageCaptioner", - "files": [ - "https://github.com/neverbiasu/ComfyUI-ImageCaptioner" - ], - "install_type": "git-clone", - "description": "A ComfyUI extension for generating captions for your images. Runs on your own system, no external services used, no filter." - }, - { - "author": "mingqizhang", - "title": "ComfyUI_InSPyResNet_zmq [REMOVED]", - "id": "inspy", - "reference": "https://github.com/mingqizhang/ComfyUI_InSPyResNet_zmq", - "files": [ - "https://github.com/mingqizhang/ComfyUI_InSPyResNet_zmq" - ], - "install_type": "git-clone", - "description": "Nodes:INSPY removebg ModelLoader, INSPY RMBG" - }, - { - "author": "mingqizhang", - "title": "ComfyUI_AEMatter_zmq [REMOVED]", - "id": "aematter", - "reference": "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq", - "files": [ - "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq" - ], - "install_type": "git-clone", - "description": "Nodes:AEMatter_ModelLoader, Create_Trimap, AEMatter_Apply, Mask_Transfor, Replace_Background, Gaussian_Filter, Guide_Filter, Improved_Aplha_Composite" - }, - { - "author": "bradsec", - "title": "ComfyUI_StringTools [REMOVED]", - "id": "stringtools", - "reference": "https://github.com/bradsec/ComfyUI_StringTools", - "files": [ - "https://github.com/bradsec/ComfyUI_StringTools" - ], - "install_type": "git-clone", - "description": "Some simple string tools to modify text and strings in ComfyUI." - }, - { - "author": "Millyarde", - "title": "Pomfy - Photoshop and ComfyUI 2-way sync [REMOVED]", - "reference": "https://github.com/Millyarde/Pomfy", - "files": [ - "https://github.com/Millyarde/Pomfy" - ], - "install_type": "git-clone", - "description": "Photoshop custom nodes inside of ComfyUi, send and get data via Photoshop UXP plugin for cross platform support" - }, - { - "author": "turkyden", - "title": "ComfyUI-Sticker [REMOVED]", - "reference": "https://github.com/turkyden/ComfyUI-Sticker", - "files": [ - "https://github.com/turkyden/ComfyUI-Sticker" - ], - "install_type": "git-clone", - "description": "image to sticker" - }, - { - "author": "turkyden", - "title": "ComfyUI-Comic [REMOVED]", - "id": "comic", - "reference": "https://github.com/turkyden/ComfyUI-Comic", - "files": [ - "https://github.com/turkyden/ComfyUI-Comic" - ], - "install_type": "git-clone", - "description": "a comfyui plugin for image to comic" - }, - { - "author": "turkyden", - "title": "ComfyUI-Avatar [REMOVED]", - "id": "avatar", - "reference": "https://github.com/turkyden/ComfyUI-Avatar", - "files": [ - "https://github.com/turkyden/ComfyUI-Avatar" - ], - "install_type": "git-clone", - "description": "a comfyui plugin for image to avatar" - }, - { - "author": "bvhari", - "title": "LatentToRGB [DEPRECATED]", - "id": "latent2rgb", - "reference": "https://github.com/bvhari/ComfyUI_LatentToRGB", - "files": [ - "https://github.com/bvhari/ComfyUI_LatentToRGB" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node to convert latent to RGB.\nNOTE:This repo has been archived because ComfyUI natively has similar functionality now" - }, - { - "author": "Kaharos94", - "title": "ComfyUI-Saveaswebp [DEPRECATED]", - "id": "save-webp", - "reference": "https://github.com/Kaharos94/ComfyUI-Saveaswebp", - "files": [ - "https://github.com/Kaharos94/ComfyUI-Saveaswebp" - ], - "install_type": "git-clone", - "description": "Save a picture as Webp file in Comfy + Workflow loading" - }, - { - "author": "udi0510", - "title": "comfyui-slicer [REMOVED]", - "id": "slicer", - "reference": "https://github.com/udi0510/comfyui-slicer", - "files": [ - "https://github.com/udi0510/comfyui-slicer" - ], - "install_type": "git-clone", - "description": "Nodes:SlicerNode" - }, - { - "author": "logtd", - "title": "ComfyUI-FLATTEN [REMOVED]", - "id": "flatten", - "reference": "https://github.com/logtd/ComfyUI-FlattenFlow", - "files": [ - "https://github.com/logtd/ComfyUI-FlattenFlow" - ], - "install_type": "git-clone", - "description": "An alternate trajectory processor for ComfyUI-FLATTEN\nNOTE:When using this trajectory type FLATTEN will use roughly 1/4 VRAM and be ~20% faster at the cost of some consistency (especially when injection_steps are low)." - }, - { - "author": "MackinationsAi", - "title": "ComfyUi_Stuctured-Outputs [REMOVED]", - "id": "struct-output", - "reference": "https://github.com/MackinationsAi/ComfyUi_Stuctured-Outputs", - "files": [ - "https://github.com/MackinationsAi/ComfyUi_Stuctured-Outputs" - ], - "install_type": "git-clone", - "description": "This repository contains a custom node for ComfyUI that allows users to save generative image outputs with custom filenames and folder structures. The filenames are padded to four digits, and the positive and negative prompts are embedded in the image metadata." - }, - { - "author": "laksjdjf", - "title": "attention-couple-ComfyUI [DEPRECATED]", - "id": "attention-couple", - "reference": "https://github.com/laksjdjf/attention-couple-ComfyUI", - "files": [ - "https://github.com/laksjdjf/attention-couple-ComfyUI" - ], - "install_type": "git-clone", - "description": "Nodes:Attention couple. This is a custom node that manipulates region-specific prompts. While vanilla ComfyUI employs an area specification method based on latent couples, this node divides regions using attention layers within UNet.\nNOTE: This has been integrated with cgem156-ComfyUI." - }, - { - "author": "phineas-pta", - "title": "comfy-trt-test [DEPRECATED]", - "reference": "https://github.com/phineas-pta/comfy-trt-test", - "files": [ - "https://github.com/phineas-pta/comfy-trt-test" - ], - "install_type": "git-clone", - "description": "Test project for ComfyUI TensorRT Support.\nNOT WORKING YET.\nnot automatic yet, do not use ComfyUI-Manager to install !!!.\nnot beginner-friendly yet, still intended to technical users\nNOTE: The reason for registration in the Manager is for guidance, and for detailed installation instructions, please visit the repository.\nNOTE: Use 'TensorRT Node for ComfyUI' instead of this." - }, - { - "author": "dezi-ai", - "title": "ComfyUI Animate LCM [NOT MAINTAINED]", - "reference": "https://github.com/dezi-ai/ComfyUI-AnimateLCM", - "files": [ - "https://github.com/dezi-ai/ComfyUI-AnimateLCM" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation for [a/AnimateLCM](https://animatelcm.github.io/) [[a/paper](https://arxiv.org/abs/2402.00769)].\b[w/This extension includes a large number of nodes imported from the existing custom nodes, increasing the likelihood of conflicts.]" - }, - { - "author": "christian-byrne", - "title": "elimination-nodes [REMOVED]", - "reference": "https://github.com/christian-byrne/elimination-nodes", - "files": [ - "https://github.com/christian-byrne/elimination-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Paste Cutout on Base Image" - }, - { - "author": "Levy1417", - "title": "Universal-Data-Processing-Kit [UNSAFE] [REMOVED]", - "reference": "https://github.com/Levy1417/Universal-Data-Processing-Kit", - "files": [ - "https://github.com/Levy1417/Universal-Data-Processing-Kit" - ], - "install_type": "git-clone", - "description": "Nodes:DPK - Any Eval, DPK - Extract Array, DPK - Run External Program, DPK - Any Literals, DPK - Set Node States, DPK - Realtime Text Preview, DPK - Dynamic Action, DPK - Object To Json, DPK - Json To Object\n[w/This extension includes the ability to execute arbitrary code and programs.]" - }, - { - "author": "liusida", - "title": "ComfyUI-Sida-Remove-Image [UNSAFE] [REMOVED]", - "reference": "https://github.com/liusida/ComfyUI-Sida-Remove-Image", - "files": [ - "https://github.com/liusida/ComfyUI-Sida-Remove-Image" - ], - "install_type": "git-clone", - "description": "Nodes: LoadImageWithPrivacy, RemoveImage.[w/This extension is not secure because it provides the capability to delete files from arbitrary paths.]" - }, - { - "author": "88IO", - "title": "ComfyUI Image Reordering Plugins [REMOVED]", - "reference": "https://github.com/88IO/ComfyUI-ImageReorder", - "files": [ - "https://github.com/88IO/ComfyUI-ImageReorder" - ], - "install_type": "git-clone", - "description": "A custom node reorder multiple image frames based on indexes or curves." - }, - { - "author": "jtydhr88", - "title": "ComfyUI-InstantMesh [DEPRECATED]", - "id": "instant-mesh", - "reference": "https://github.com/jtydhr88/ComfyUI-InstantMesh", - "files": [ - "https://github.com/jtydhr88/ComfyUI-InstantMesh" - ], - "install_type": "git-clone", - "description": "ComfyUI InstantMesh is custom nodes that running TencentARC/InstantMesh into ComfyUI, this extension depends on ComfyUI-3D-Pack. Please refer to Readme carefully to install.\nNOTE: This repo is archived due to ComfyUI-3D-Pack supports InstantMesh, please check 3D-Pack directly if you need it" - }, - { - "author": "biegert", - "title": "CLIPSeg [NOT MAINTAINED]", - "id": "clipseg", - "reference": "https://github.com/biegert/ComfyUI-CLIPSeg", - "files": [ - "https://github.com/biegert/ComfyUI-CLIPSeg/raw/main/custom_nodes/clipseg.py" - ], - "install_type": "copy", - "description": "The CLIPSeg node generates a binary mask for a given input image and text prompt." - }, - { - "author": "tankucc1no", - "title": "ComfyUI-Dragdiffusion [REMOVED]", - "id": "dragdiffusion", - "reference": "https://github.com/tankucc1no/ComfyUI-Dragdiffusion", - "files": [ - "https://github.com/tankucc1no/ComfyUI-Dragdiffusion" - ], - "install_type": "git-clone", - "description": "Implementation of [a/Dragdiffusion](https://github.com/Yujun-Shi/DragDiffusion) in ComfyUI." - }, - { - "author": "wibur0620", - "title": "ComfyUI Ollama (wibur) [REMOVED]", - "id": "ollama-wibur", - "reference": "https://github.com/wibur0620/comfyui-ollama-wibur", - "files": [ - "https://github.com/wibur0620/comfyui-ollama-wibur" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI Nodes for interacting with [a/Ollama](https://ollama.com/) using the ollama python client.\nIntegrate the power of LLMs into ComfyUI workflows easily or just experiment with GPT.\nNOTE: To use this properly, you would need a running Ollama server reachable from the host that is running ComfyUI." - }, - { - "author": "IKHOR", - "title": "ikhor-nodes [REMOVED]", - "reference": "https://github.com/IKHOR/ComfyUI-IKHOR-Jam-Nodes", - "files": [ - "https://github.com/IKHOR/ComfyUI-IKHOR-Jam-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:LoadFromS3, LoadBatchFromS3, SaveToS3, SaveBatchToS3" - }, - { - "author": "kijai", - "title": "ComfyUI wrapper nodes for IC-light [DEPRECATED]", - "reference": "https://github.com/kijai/ComfyUI-IC-Light-Wrapper", - "files": [ - "https://github.com/kijai/ComfyUI-IC-Light-Wrapper" - ], - "install_type": "git-clone", - "description": "Stopped. Original repo: [a/https://github.com/lllyasviel/IC-Light](https://github.com/lllyasviel/IC-Light)" - }, - { - "author": "thedyze", - "title": "Save Image Extended for ComfyUI", - "reference": "https://github.com/thedyze/save-image-extended-comfyui", - "files": [ - "https://github.com/thedyze/save-image-extended-comfyui" - ], - "install_type": "git-clone", - "description": "Customize the information saved in file- and folder names. Use the values of sampler parameters as part of file or folder names. Save your positive & negative prompt as entries in a JSON (text) file, in each folder.\n[w/This custom node has not been maintained for a long time. Please use an alternative node from the default channel.]" - }, - { - "author": "ExponentialML", - "title": "ComfyUI_ELLA [DEPRECATED]", - "reference": "https://github.com/ExponentialML/ComfyUI_ELLA", - "files": [ - "https://github.com/ExponentialML/ComfyUI_ELLA" - ], - "install_type": "git-clone", - "description": "ComfyUI Implementaion of ELLA: Equip Diffusion Models with LLM for Enhanced Semantic Alignment.[w/Officially implemented here: [a/https://github.com/TencentQQGYLab/ComfyUI-ELLA](https://github.com/TencentQQGYLab/ComfyUI-ELLA)]" - }, - { - "author": "shinich39", - "title": "comfyui-text-pipe-39 [DEPRECATED]", - "reference": "https://github.com/shinich39/comfyui-text-pipe-39", - "files": [ - "https://github.com/shinich39/comfyui-text-pipe-39" - ], - "install_type": "git-clone", - "description": "Modify text by condition." - }, - { - "author": "Big Idea Technology", - "title": "Image Text Overlay Node for ComfyUI [DEPRECATED]", - "reference": "https://github.com/Big-Idea-Technology/ComfyUI_Image_Text_Overlay", - "files": [ - "https://github.com/Big-Idea-Technology/ComfyUI_Image_Text_Overlay" - ], - "install_type": "git-clone", - "description": "Please note that the ImageTextOverlay project is no longer supported and has been moved to a new repository. For ongoing developments, contributions, and issues, please refer to the new repository at: [a/https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools](https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools)" - }, - { - "author": "mlinmg", - "title": "LaMa Preprocessor [DEPRECATED]", - "reference": "https://github.com/mlinmg/ComfyUI-LaMA-Preprocessor", - "files": [ - "https://github.com/mlinmg/ComfyUI-LaMA-Preprocessor" - ], - "install_type": "git-clone", - "description": "A LaMa prerocessor for ComfyUI. This preprocessor finally enable users to generate coherent inpaint and outpaint prompt-free. The best results are given on landscapes, not so much in drawings/animation." - }, - { - "author": "CapsAdmin", - "title": "ComfyUI-Euler-Smea-Dyn-Sampler [DEPRECATED]", - "reference": "https://github.com/CapsAdmin/ComfyUI-Euler-Smea-Dyn-Sampler", - "files": [ - "https://github.com/CapsAdmin/ComfyUI-Euler-Smea-Dyn-Sampler" - ], - "install_type": "git-clone", - "description": "Just a comfyui version of [a/Euler Smea Dyn Sampler](https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler). It adds the sampler directly to existing samplers." - }, - { - "author": "BlakeOne", - "title": "ComfyUI FastImageListToImageBatch [REMOVED]", - "reference": "https://github.com/BlakeOne/ComfyUI-FastImageListToImageBatch", - "files": [ - "https://github.com/BlakeOne/ComfyUI-FastImageListToImageBatch" - ], - "install_type": "git-clone", - "description": "Quickly convert a list of images to a batch of images. All images must be the same size. Great for long videos." - }, - { - "author": "ggpid", - "title": "idpark_custom_node [REMOVED]", - "reference": "https://github.com/ggpid/idpark_custom_node", - "files": [ - "https://github.com/ggpid/idpark_custom_node" - ], - "install_type": "git-clone", - "description": "Nodes:Load Image from S3, Save Image to S3, Generate SAM, Generate FastSAM, Cut by Mask fixed" - }, - { - "author": "Davemane42", - "title": "Visual Area Conditioning / Latent composition [DEPRECATED]", - "reference": "https://github.com/Davemane42/ComfyUI_Dave_CustomNode", - "files": [ - "https://github.com/Davemane42/ComfyUI_Dave_CustomNode" - ], - "install_type": "git-clone", - "description": "This tool provides custom nodes that allow visualization and configuration of area conditioning and latent composite." - }, - { - "author": "laksjdjf", - "title": "LoRA-Merger-ComfyUI [DEPRECATED]", - "reference": "https://github.com/laksjdjf/LoRA-Merger-ComfyUI", - "files": [ - "https://github.com/laksjdjf/LoRA-Merger-ComfyUI" - ], - "install_type": "git-clone", - "description": "Nodes:Load LoRA Weight Only, Load LoRA from Weight, Merge LoRA, Save LoRA. This extension provides nodes for merging LoRA." - }, - { - "author": "kinfolk0117", - "title": "TiledIPAdapter [DEPRECATED]", - "reference": "https://github.com/kinfolk0117/ComfyUI_TiledIPAdapter", - "files": [ - "https://github.com/kinfolk0117/ComfyUI_TiledIPAdapter" - ], - "install_type": "git-clone", - "description": "Proof of concent on how to use IPAdapter to control tiled upscaling. NOTE: You need to have 'ComfyUI_IPAdapter_plus' installed." - }, - { - "author": "XINZHANG-ops", - "title": "comfyui-xin-nodes [REMOVED]", - "reference": "https://github.com/XINZHANG-ops/comfyui-xin-nodes", - "files": [ - "https://github.com/XINZHANG-ops/comfyui-xin-nodes" - ], - "install_type": "git-clone", - "description": "Nodes:ImageSizeClassifer, RandomInt, ShowValue" - }, - { - "author": "ssitu", - "title": "NestedNodeBuilder [DEPRECATED]", - "reference": "https://github.com/ssitu/ComfyUI_NestedNodeBuilder", - "files": [ - "https://github.com/ssitu/ComfyUI_NestedNodeBuilder" - ], - "install_type": "git-clone", - "description": "This extension provides the ability to combine multiple nodes into a single node.\nNOTE:An identical feature now exists in ComfyUI. Additionally, this extension is largely broken with the recent versions of the codebase, so please use the built-in feature for group nodes." - }, - { - "author": "ccvv804", - "title": "ComfyUI StableCascade using diffusers for Low VRAM [DEPRECATED]", - "reference": "https://github.com/ccvv804/ComfyUI-DiffusersStableCascade-LowVRAM", - "files": [ - "https://github.com/ccvv804/ComfyUI-DiffusersStableCascade-LowVRAM" - ], - "install_type": "git-clone", - "description": "Works with RTX 4070ti 12GB.\nSimple quick wrapper for [a/https://huggingface.co/stabilityai/stable-cascade](https://huggingface.co/stabilityai/stable-cascade)\nComfy is going to implement this properly soon, this repo is just for quick testing for the impatient!" - }, - { - "author": "kijai", - "title": "ComfyUI StableCascade using diffusers [DEPRECATED]", - "reference": "https://github.com/kijai/ComfyUI-DiffusersStableCascade", - "files": [ - "https://github.com/kijai/ComfyUI-DiffusersStableCascade" - ], - "install_type": "git-clone", - "description": "Simple quick wrapper for [a/https://huggingface.co/stabilityai/stable-cascade](https://huggingface.co/stabilityai/stable-cascade)\nComfy is going to implement this properly soon, this repo is just for quick testing for the impatient!" - }, - { - "author": "solarpush", - "title": "comfyui_sendimage_node [REMOVED]", - "reference": "https://github.com/solarpush/comfyui_sendimage_node", - "files": [ - "https://github.com/solarpush/comfyui_sendimage_node" - ], - "install_type": "git-clone", - "description": "Send images to the pod." - }, - { - "author": "azazeal04", - "title": "ComfyUI-Styles", - "reference": "https://github.com/azazeal04/ComfyUI-Styles", - "files": [ - "https://github.com/azazeal04/ComfyUI-Styles" - ], - "install_type": "git-clone", - "description": "Nodes:Anime_Styler, Fantasy_Styler, Gothic_Styler, Line_Art_Styler, Movie_Poster_Styler, Punk_Styler, Travel_Poster_Styler. This extension offers 8 art style nodes, each of which includes approximately 50 individual style variations.\n\nNOTE: Due to the dynamic nature of node name definitions, ComfyUI-Manager cannot recognize the node list from this extension. The Missing nodes and Badge features are not available for this extension.\nNOTE: This extension is removed. Users who were previously using this node should install ComfyUI-styles-all instead." - }, - { - "author": "hnmr293", - "title": "ComfyUI-nodes-hnmr", - "reference": "https://github.com/hnmr293/ComfyUI-nodes-hnmr", - "files": [ - "https://github.com/hnmr293/ComfyUI-nodes-hnmr" - ], - "install_type": "git-clone", - "description": "Provide various custom nodes for Latent, Sampling, Model, Loader, Image, Text" - }, - { - "author": "bvhari", - "title": "ComfyUI_PerpNeg [WIP]", - "reference": "https://github.com/bvhari/ComfyUI_PerpNeg", - "files": [ - "https://github.com/bvhari/ComfyUI_PerpNeg" - ], - "install_type": "git-clone", - "description": "Nodes: KSampler (Advanced + Perp-Neg). Implementation of [a/Perp-Neg](https://perp-neg.github.io/)\nIncludes Tonemap and CFG Rescale optionsComfyUI custom node to convert latent to RGB.[w/WARNING: Experimental code, might have incompatibilities and edge cases.]\nNOTE: In the latest version of ComfyUI, this extension is included as built-in." - }, - { - "author": "laksjdjf", - "title": "IPAdapter-ComfyUI", - "reference": "https://github.com/laksjdjf/IPAdapter-ComfyUI", - "files": [ - "https://github.com/laksjdjf/IPAdapter-ComfyUI" - ], - "install_type": "git-clone", - "description": "This custom nodes provides loader of the IP-Adapter model.[w/NOTE: To use this extension node, you need to download the [a/ip-adapter_sd15.bin](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.bin) file and place it in the %%**custom_nodes/IPAdapter-ComfyUI/models**%% directory. Additionally, you need to download the 'Clip vision model' from the 'Install models' menu as well.]\nNOTE: Use ComfyUI_IPAdapter_plus instead of this." - }, - { - "author": "RockOfFire", - "title": "CR Animation Nodes", - "reference": "https://github.com/RockOfFire/CR_Animation_Nodes", - "files": [ - "https://github.com/RockOfFire/CR_Animation_Nodes" - ], - "install_type": "git-clone", - "description": "A comprehensive suite of nodes to enhance your animations. These nodes include some features similar to Deforum, and also some new ideas.
    NOTE: This node is merged into Comfyroll Custom Nodes." - }, - { - "author": "tkoenig89", - "title": "Load Image with metadata", - "reference": "https://github.com/tkoenig89/ComfyUI_Load_Image_With_Metadata", - "files": [ - "https://github.com/tkoenig89/ComfyUI_Load_Image_With_Metadata" - ], - "install_type": "git-clone", - "description": "A custom node for comfy ui to read generation data from images (prompt, seed, size...). This could be used when upscaling generated images to use the original prompt and seed." - }, - { - "author": "LucianoCirino", - "title": "Efficiency Nodes for ComfyUI [LEGACY]", - "reference": "https://github.com/LucianoCirino/efficiency-nodes-comfyui", - "files": [ - "https://github.com/LucianoCirino/efficiency-nodes-comfyui" - ], - "install_type": "git-clone", - "description": "A collection of ComfyUI custom nodes to help streamline workflows and reduce total node count.
    NOTE: This repository is the original repository but is no longer maintained. Please use the forked version by jags." - }, - { - "author": "GeLi1989", - "title": "roop nodes for ComfyUI", - "reference": "https://github.com/GeLi1989/GK-beifen-ComfyUI_roop", - "files": [ - "https://github.com/GeLi1989/GK-beifen-ComfyUI_roop" - ], - "install_type": "git-clone", - "description": "ComfyUI nodes for the roop A1111 webui script. NOTE: Need to download model to use this node. NOTE: This is removed." - }, - { - "author": "ProDALOR", - "title": "comfyui_u2net", - "reference": "https://github.com/ProDALOR/comfyui_u2net", - "files": [ - "https://github.com/ProDALOR/comfyui_u2net" - ], - "install_type": "git-clone", - "description": "Nodes: Load U2Net model, U2Net segmentation, To mask, Segmentation to mask, U2NetBaseNormalization, U2NetMaxNormalization. NOTE: This is removed." - }, - { - "author": "FizzleDorf", - "title": "AIT", - "reference": "https://github.com/FizzleDorf/AIT", - "files": [ - "https://github.com/FizzleDorf/AIT" - ], - "install_type": "git-clone", - "description": "Nodes: Load AITemplate, Load AITemplate (ControlNet), VAE Decode (AITemplate), VAE Encode (AITemplate), VAE Encode (AITemplate, Inpaint). Experimental usage of AITemplate. NOTE: This is deprecated extension. Use ComfyUI-AIT instead of this." - }, - { - "author": "chenbaiyujason", - "title": "sc-node-comfyui", - "reference": "https://github.com/chenbaiyujason/sc-node-comfyui", - "files": [ - "https://github.com/chenbaiyujason/sc-node-comfyui" - ], - "install_type": "git-clone", - "description": "Nodes for GPT interaction and text manipulation" - }, - { - "author": "asd417", - "title": "CheckpointTomeLoader", - "reference": "https://github.com/asd417/tomeSD_for_Comfy", - "files": [ - "https://github.com/ltdrdata/ComfyUI-tomeSD-installer" - ], - "install_type": "git-clone", - "description": "tomeSD(https://github.com/dbolya/tomesd) applied to ComfyUI stable diffusion UI using custom node. Note:In vanilla ComfyUI, the TomePatchModel node is provided as a built-in feature." - }, - { - "author": "gamert", - "title": "ComfyUI_tagger", - "reference": "https://github.com/gamert/ComfyUI_tagger", - "pip": ["gradio"], - "files": [ - "https://github.com/gamert/ComfyUI_tagger" - ], - "install_type": "git-clone", - "description": "Nodes: CLIPTextEncodeTaggerDD, ImageTaggerDD.

    WARNING: Installing the current version is causing an issue where ComfyUI fails to start.

    " - }, - { - "author": "Fannovel16", - "title": "ControlNet Preprocessors", - "reference": "https://github.com/Fannovel16/comfy_controlnet_preprocessors", - "files": [ - "https://github.com/Fannovel16/comfy_controlnet_preprocessors" - ], - "install_type": "git-clone", - "description": "ControlNet Preprocessors. (To use this extension, you need to download the required model file from Install Models)

    NOTE: Please uninstall this custom node and instead install 'ComfyUI's ControlNet Auxiliary Preprocessors' from the default channel.
    To use nodes belonging to controlnet v1 such as Canny_Edge_Preprocessor, MIDAS_Depth_Map_Preprocessor, Uniformer_SemSegPreprocessor, etc., you need to copy the config.yaml.example file to config.yaml and change skip_v1: True to skip_v1: False.

    " - }, - { - "author": "comfyanonymous", - "title": "ComfyUI_experiments/sampler_tonemap", - "reference": "https://github.com/comfyanonymous/ComfyUI_experiments", - "files": [ - "https://github.com/comfyanonymous/ComfyUI_experiments/raw/master/sampler_tonemap.py" - ], - "install_type": "copy", - "description": "ModelSamplerTonemapNoiseTest a node that makes the sampler use a simple tonemapping algorithm to tonemap the noise. It will let you use higher CFG without breaking the image. To using higher CFG lower the multiplier value. Similar to Dynamic Thresholding extension of A1111. " - }, - { - "author": "comfyanonymous", - "title": "ComfyUI_experiments/sampler_rescalecfg", - "reference": "https://github.com/comfyanonymous/ComfyUI_experiments", - "files": [ - "https://github.com/comfyanonymous/ComfyUI_experiments/raw/master/sampler_rescalecfg.py" - ], - "install_type": "copy", - "description": "RescaleClassifierFreeGuidance improves the problem of images being degraded by high CFG.To using higher CFG lower the multiplier value. Similar to Dynamic Thresholding extension of A1111. (reference paper)

    It is recommended to use the integrated custom nodes in the default channel for update support rather than installing individual nodes.

    " - }, - { - "author": "comfyanonymous", - "title": "ComfyUI_experiments/advanced_model_merging", - "reference": "https://github.com/comfyanonymous/ComfyUI_experiments", - "files": [ - "https://github.com/comfyanonymous/ComfyUI_experiments/raw/master/advanced_model_merging.py" - ], - "install_type": "copy", - "description": "This provides a detailed model merge feature based on block weight. ModelMergeBlock, in vanilla ComfyUI, allows for adjusting the ratios of input/middle/output layers, but this node provides ratio adjustments for all blocks within each layer.

    It is recommended to use the integrated custom nodes in the default channel for update support rather than installing individual nodes.

    " - }, - { - "author": "comfyanonymous", - "title": "ComfyUI_experiments/sdxl_model_merging", - "reference": "https://github.com/comfyanonymous/ComfyUI_experiments", - "files": [ - "https://github.com/comfyanonymous/ComfyUI_experiments/raw/master/sdxl_model_merging.py" - ], - "install_type": "copy", - "description": "These nodes provide the capability to merge SDXL base models.

    It is recommended to use the integrated custom nodes in the default channel for update support rather than installing individual nodes.

    " - }, - { - "author": "comfyanonymous", - "title": "ComfyUI_experiments/reference_only", - "reference": "https://github.com/comfyanonymous/ComfyUI_experiments", - "files": [ - "https://github.com/comfyanonymous/ComfyUI_experiments/raw/master/reference_only.py" - ], - "install_type": "copy", - "description": "This node provides functionality corresponding to Reference only in Controlnet.

    It is recommended to use the integrated custom nodes in the default channel for update support rather than installing individual nodes.

    " - } - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/legacy/extension-node-map.json b/custom_nodes/comfyui-manager/node_db/legacy/extension-node-map.json deleted file mode 100644 index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/legacy/extension-node-map.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/legacy/model-list.json b/custom_nodes/comfyui-manager/node_db/legacy/model-list.json deleted file mode 100644 index b78f1b7dd6069210f39544cfa1b8c02aec5093b3..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/legacy/model-list.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "models": [] -} diff --git a/custom_nodes/comfyui-manager/node_db/new/alter-list.json b/custom_nodes/comfyui-manager/node_db/new/alter-list.json deleted file mode 100644 index e9e3e2e1ec133ce268ebe1a009ce15809e216e4c..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/new/alter-list.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "items": [ - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/new/custom-node-list.json b/custom_nodes/comfyui-manager/node_db/new/custom-node-list.json deleted file mode 100644 index e013d2ea0dabda34933cb419fb5a92d98266e522..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/new/custom-node-list.json +++ /dev/null @@ -1,713 +0,0 @@ -{ - "custom_nodes": [ - { - "author": "#NOTICE_1.13", - "title": "NOTICE: This channel is not the default channel.", - "reference": "https://github.com/ltdrdata/ComfyUI-Manager","files": [], - "install_type": "git-clone", - "description": "If you see this message, your ComfyUI-Manager is outdated.\nRecent channel provides only the list of the latest nodes. If you want to find the complete node list, please go to the Default channel.\nMaking LoRA has never been easier!" - }, - - - - { - "author": "Dr.Positliver", - "title": "comfyui-zegr", - "reference": "https://github.com/Positliver/comfyui-zegr", - "files": [ - "https://github.com/Positliver/comfyui-zegr" - ], - "install_type": "git-clone", - "description": "comfyui share models to oss conveniently." - }, - { - "author": "danielw", - "title": "Custom nodes for llm chat with optional image input", - "id": "llm-api", - "reference": "https://github.com/tianyuw/ComfyUI-LLM-API", - "files": [ - "https://github.com/tianyuw/ComfyUI-LLM-API" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that enables Large Language Model (LLM) chat interactions with optional image input support." - }, - { - "author": "JohnDoeSmithee", - "reference": "https://github.com/JohnDoeSmithee/ComfyUI-SoX-Mixdown", - "files": [ - "https://github.com/JohnDoeSmithee/ComfyUI-SoX-Mixdown" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node for sox's mixdown function such as 'sox --combine inputfile1.wav inputfile2.wav outputfile.wav'." - }, - { - "author": "yuvraj108c", - "title": "ComfyUI Video Depth Anything", - "reference": "https://github.com/yuvraj108c/ComfyUI-Video-Depth-Anything", - "files": [ - "https://github.com/yuvraj108c/ComfyUI-Video-Depth-Anything" - ], - "install_type": "git-clone", - "description": "This project is an unofficial ComfyUI implementation of [a/Video Depth Anything](https://github.com/DepthAnything/Video-Depth-Anything), for depth estimation on long videos without compromising quality, consistency, or generalization ability." - }, - { - "author": "EnragedAntelope", - "title": "ComfyUI-EACloudNodes", - "reference": "https://github.com/EnragedAntelope/ComfyUI-EACloudNodes", - "files": [ - "https://github.com/EnragedAntelope/ComfyUI-EACloudNodes" - ], - "install_type": "git-clone", - "description": "A collection of ComfyUI custom nodes for interacting with various cloud services. These nodes are designed to work with any ComfyUI instance, including cloud-hosted environments (such as MimicPC) where users may have limited system access." - }, - { - "author": "smlbiobot", - "title": "sml-comfyui-prompt-expansion", - "id": "sml-comfyui-prompt-expansion", - "reference": "https://github.com/smlbiobot/sml-comfyui-prompt-expansion", - "files": [ - "https://github.com/smlbiobot/sml-comfyui-prompt-expansion" - ], - "install_type": "git-clone", - "description": "Prompt Expansion for Stable Diffusion, using Deepseek API." - }, - { - "author": "spacepxl", - "title": "ComfyUI-LossTesting", - "reference": "https://github.com/spacepxl/ComfyUI-LossTesting", - "files": [ - "https://github.com/spacepxl/ComfyUI-LossTesting" - ], - "install_type": "git-clone", - "description": "Basic utility for testing diffusion model loss across the timestep schedule. Should work with any native models that use ksampler. This could be used for comparing models, testing captions on an image, etc." - }, - { - "author": "JTriggerFish", - "title": "Comfy Latent Tools", - "reference": "https://github.com/JTriggerFish/ComfyLatentTools", - "files": [ - "https://github.com/JTriggerFish/ComfyLatentTools" - ], - "install_type": "git-clone", - "description": "A set of tools for manipulating latent tensors in ComfyUI" - }, - { - "author": "bradsec", - "title": "ComfyUI_StringEssentials", - "reference": "https://github.com/bradsec/ComfyUI_StringEssentials", - "files": [ - "https://github.com/bradsec/ComfyUI_StringEssentials" - ], - "install_type": "git-clone", - "description": "Essential string manipulation nodes for ComfyUI." - }, - { - "author": "huixingyun", - "title": "ComfyUI-HX-Captioner", - "reference": "https://github.com/huixingyun/ComfyUI-HX-Captioner", - "files": [ - "https://github.com/huixingyun/ComfyUI-HX-Captioner" - ], - "install_type": "git-clone", - "description": "A ComfyUI plugin library based on [a/https://github.com/stavsap/comfyui-ollama](https://github.com/stavsap/comfyui-ollama), with the Ollama cluster provided by Huixingyun." - }, - { - "author": "MontagenAI", - "title": "ComfyUI-Montagen", - "reference": "https://github.com/MontagenAI/ComfyUI-Montagen", - "files": [ - "https://github.com/MontagenAI/ComfyUI-Montagen" - ], - "install_type": "git-clone", - "description": "ComfyUI-Montagen is an extension designed to enhance the video editing ability of ComfyUI with custom nodes and Montagen. It offers basic video editing features and integrates media clips with the ComfyUI workflow. Furthermore, this extension unlocks the full potential of AI-based video generation and task automation." - }, - { - "author": "vincentfs", - "title": "ComfyUI-ArchiGraph", - "id": "archigraph", - "reference": "https://github.com/vincentfs/ComfyUI-ArchiGraph", - "files": [ - "https://github.com/vincentfs/ComfyUI-ArchiGraph" - ], - "install_type": "git-clone", - "description": "Implementation of architectural related graph algorithm in ComfyUI." - }, - { - "author": "cake-ml", - "title": "TinySanaPreview", - "reference": "https://github.com/cake-ml/tiny-sana-preview", - "files": [ - "https://github.com/cake-ml/tiny-sana-preview" - ], - "install_type": "git-clone", - "description": "TinySanaPreview is a custom ComfyUI node that implements real-time previews during generation for Sana diffusion models." - }, - { - "author": "CY-CHENYUE", - "title": "ComfyUI-MiniCPM-o", - "id": "ComfyUI-MiniCPM-o", - "reference": "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-o", - "files": [ - "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-o" - ], - "description": "ComfyUI custom nodes for MiniCPM", - "install_type": "git-clone" - }, - { - "author": "niknah", - "title": "ComfyUI Hunyuan-3D-2", - "id": "comfyui-hunyuan-3d-2", - "reference": "https://github.com/niknah/ComfyUI-Hunyuan-3D-2", - "files": [ - "https://github.com/niknah/ComfyUI-Hunyuan-3D-2" - ], - "install_type": "git-clone", - "description": "Image to 3D using Hunyuan-3D-2" - }, - { - "author": "Kayarte", - "title": "AudioDriven-Latent-Space-Tools-for-ComfyUI", - "reference": "https://github.com/Kayarte/AudioDriven-Latent-Space-Tools-for-ComfyUI", - "files": [ - "https://github.com/Kayarte/AudioDriven-Latent-Space-Tools-for-ComfyUI" - ], - "install_type": "git-clone", - "description": "This is a custom node for ComfyUI that analyzes audio files using Librosa, extracting tempo, beat times, energy levels, and timestamps. The analysis results can be displayed in a text box within ComfyUI." - }, - { - "author": "jhj0517", - "title": "ComfyUI jhj Kokoro Onnx", - "id": "comfyui-jhj-kokoro-onnx", - "reference": "https://github.com/jhj0517/ComfyUI-jhj-Kokoro-Onnx", - "files": [ - "https://github.com/jhj0517/ComfyUI-jhj-Kokoro-Onnx" - ], - "install_type": "git-clone", - "description": "kokoro-onnx (opensource TTS model) wrapper for ComfyUI." - }, - { - "author": "EnragedAntelope", - "title": "ComfyUI-ConstrainResolution", - "reference": "https://github.com/EnragedAntelope/ComfyUI-ConstrainResolution", - "files": [ - "https://github.com/EnragedAntelope/ComfyUI-ConstrainResolution" - ], - "install_type": "git-clone", - "description": "Given min/max resolution constraints, this automatically suggests optimal dimensions while preserving aspect ratio. Ideal for Image to Image (I2I) and Image to Video (I2V) workflows!" - }, - { - "author": "SshunWang", - "title": "ComfyUI for CosyVoice", - "reference": "https://github.com/SshunWang/ComfyUI_CosyVoice", - "files": [ - "https://github.com/SshunWang/ComfyUI_CosyVoice" - ], - "install_type": "git-clone", - "description": "Support both CosyVoice1.0 and CosyVoice2.0. Referenced [a/CosyVoice-ComfyUI](https://github.com/AIFSH/CosyVoice-ComfyUI), the following modifications have been made: Add support for CosyVoice2.0, Add whether to use stream processing options, Use speed control by CosyVoice, Add model path check to avoid duplicate downloads, Provide two ways of use" - }, - { - "author": "Xiangyu-CAS", - "title": "HandFixer", - "reference": "https://github.com/Xiangyu-CAS/HandFixer", - "files": [ - "https://github.com/Xiangyu-CAS/HandFixer" - ], - "install_type": "git-clone", - "description": "This project addresses the issue of numerous hand defects in AI-generated portrait images by using a workflow based on FLUX/FLUX-Fill to correct hand deformities. It is effective for both real-life and anime images, including those generated by DiT/SDXL/Midjourney. It supports diffusers, gradio, ComfyUI, and more" - }, - { - "author": "davidgressett", - "title": "CartesianCSVNode for ComfyUI", - "reference": "https://github.com/davidgressett/comfyui-systemlevel", - "files": [ - "https://github.com/davidgressett/comfyui-systemlevel" - ], - "install_type": "git-clone", - "description": "This custom node allows you to load data from one or more CSV files, then feed that data into subsequent nodes in a ComfyUI workflow." - }, - { - "author": "lingha", - "title": "comfyui_kj", - "id": "comfyui_kj", - "reference": "https://github.com/XieChengYuan/comfyui_kj", - "files": [ - "https://github.com/XieChengYuan/comfyui_kj" - ], - "install_type": "git-clone", - "description": "comfyui_kj, A tool that can package workflows into projects and publish them to a WeChat Mini Program named Kaji, allowing charges to be collected from users." - }, - { - "author": "ziwang-com", - "title": "comfyui-deepseek-r1", - "reference": "https://github.com/ziwang-com/comfyui-deepseek-r1", - "files": [ - "https://github.com/ziwang-com/comfyui-deepseek-r1" - ], - "install_type": "git-clone", - "description": "Comfyui-deepseek-r1 Node Plugin" - }, - - { - "author": "bugltd", - "title": "ComfyLab Pack", - "id": "comfylab-pack", - "reference": "https://github.com/bugltd/ComfyLab-Pack", - "files": [ - "https://github.com/bugltd/ComfyLab-Pack" - ], - "nodename_pattern": " \\(lab\\)$", - "install_type": "git-clone", - "description": "Nodes: XY Plot with many options, Output Config (JSON / JSON5 / YAML), Queue, Format String, List utilities, Input nodes, ...." - }, - { - "author": "asutermo", - "title": "Try Off w/ Flux and CatVTON", - "id": "tryoffflux", - "reference": "https://github.com/asutermo/ComfyUI-Flux-TryOff", - "files": [ - "https://github.com/asutermo/ComfyUI-Flux-TryOff" - ], - "install_type": "git-clone", - "description": "This is a set of nodes to make it possible to extract garments/clothing from models to apply elsewhere." - }, - { - "author": "DJ-Tribefull", - "title": "Comfyui FOCUS nodes", - "reference": "https://github.com/DJ-Tribefull/Comfyui_FOCUS_nodes", - "files": [ - "https://github.com/DJ-Tribefull/Comfyui_FOCUS_nodes" - ], - "install_type": "git-clone", - "description": "This is a small collection of nodes designed for efficiency and the reduction of screen clutter. I work primarily with a two-stage SDXL workflow, so some of the nodes are tailored to that, but many of the most useful nodes can be used in any context." - }, - { - "author": "stavsap", - "title": "comfyui-kokoro", - "reference": "https://github.com/stavsap/comfyui-kokoro", - "files": [ - "https://github.com/stavsap/comfyui-kokoro" - ], - "install_type": "git-clone", - "description": "Custom ComfyUI Nodes for TTS with Kokoro, genenrate and merge speakers for new style generations." - }, - { - "author": "KLL535", - "title": "ComfyUI_SimpleButcher", - "reference": "https://github.com/KLL535/ComfyUI_SimpleButcher", - "files": [ - "https://github.com/KLL535/ComfyUI_SimpleButcher" - ], - "install_type": "git-clone", - "description": "I needed to automate the process of generating images and I did not find ready-made simple solutions for this, so I wrote my own. The idea is to repeat the functionality of forge: the script 'Prompts from file or textbox'. So that you can easily sort through pre-prepared lists of prompts, lora, styles, and connect text as you like. The resulting images must be compatible with Forge, and ideally, no different from it. The problem is that Forge uses the internal name from the Lora file metadata as the lora name, not the file name. Therefore, all existing solutions simply did not understand my templates. I would also like it if lore could be written in any order and any quantity in a text file in this format: or and this would be applied automatically, without the need to create nodes for each lora separately. I would like the civitai site to understand metadata, the closest to this was the alexopus/ComfyUI-Image-Saver project, but it loses lora written in Forge style, by internal name." - }, - { - "author": "GoingAI1998", - "title": "ComfyUI Web Canvas Node", - "reference": "https://github.com/GoingAI1998/Comfyui_imgcanvas", - "files": [ - "https://github.com/GoingAI1998/Comfyui_imgcanvas" - ], - "install_type": "git-clone", - "description": "# ComfyUI_imgcanvas At present, I have not used the useful comfyui custom node about layer mixing, and I have written a comfyui runtime automatic pop-up window for layer editing node" - }, - { - "author": "fblissjr", - "title": "ComfyUI-EmbeddingPipelineAnalytics", - "reference": "https://github.com/fblissjr/ComfyUI-EmbeddingPipelineAnalytics", - "files": [ - "https://github.com/fblissjr/ComfyUI-EmbeddingPipelineAnalytics" - ], - "install_type": "git-clone", - "description": "this repo is to capture end-to-end data, metadata, and embeddings for ComfyUI workflows, specifically HunyuanVideo to start." - }, - { - "author": "WUYUDING2583", - "title": "Save Image With Callback", - "reference": "https://github.com/WUYUDING2583/ComfyUI-Save-Image-Callback", - "files": [ - "https://github.com/WUYUDING2583/ComfyUI-Save-Image-Callback" - ], - "install_type": "git-clone", - "description": "This node enables integration between ComfyUI and external services by adding callback capabilities to the image saving process. When an image is saved, the node automatically call your webhook with your specified URL with custom data." - }, - { - "author": "yichengup", - "title": "Comfyui-Deepseek", - "reference": "https://github.com/yichengup/Comfyui-Deepseek", - "files": [ - "https://github.com/yichengup/Comfyui-Deepseek" - ], - "install_type": "git-clone", - "description": "About DeepSeek Chat API\nGo here to register and get the api-key [a/https://platform.deepseek.com/](https://platform.deepseek.com/) Then enter api_key in config.json" - }, - { - "author": "mango125", - "title": "ComfyUI-Mango-Random", - "reference": "https://github.com/mango-rgb/ComfyUI-Mango-Random-node", - "files": [ - "https://github.com/mango-rgb/ComfyUI-Mango-Random-node" - ], - "install_type": "git-clone", - "description": "🥭 Mango Random Nodes - A collection of random file nodes for ComfyUI" - }, - { - "author": "meanin2", - "title": "ComfyUI Image Watermarking Node", - "reference": "https://github.com/meanin2/comfyui-MGnodes", - "files": [ - "https://github.com/meanin2/comfyui-MGnodes" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that allows you to add image watermarks with advanced controls for transparency, positioning, and color manipulation." - }, - { - "author": "duchamps0305", - "title": "comfyui-white-extractor", - "reference": "https://github.com/duchamps0305/comfyui-white-extractor", - "files": [ - "https://github.com/duchamps0305/comfyui-white-extractor" - ], - "install_type": "git-clone", - "description": "a simple white extractor node for comfyui." - }, - - { - "author": "benjiyaya", - "title": "ComfyUI-KokoroTTS", - "reference": "https://github.com/benjiyaya/ComfyUI-KokoroTTS", - "files": [ - "https://github.com/benjiyaya/ComfyUI-KokoroTTS" - ], - "install_type": "git-clone", - "description": "A Text To Speech node using Kokoro TTS in ComfyUI." - }, - { - "author": "WangPengxing", - "title": "ComfyUI WPX Nodes", - "reference": "https://github.com/WangPengxing/ComfyUI_WPX_Node", - "files": [ - "https://github.com/WangPengxing/ComfyUI_WPX_Node" - ], - "install_type": "git-clone", - "description": "A custom node collection for ComfyUI, offering enhanced image processing features." - }, - { - "author": "PixelFunAI", - "title": "Hunyuan LoRA Loader Nodes", - "reference": "https://github.com/PixelFunAI/ComfyUI_PixelFun", - "files": [ - "https://github.com/PixelFunAI/ComfyUI_PixelFun" - ], - "install_type": "git-clone", - "description": "This collection provides four additional nodes for loading and managing Hunyuan Video LoRAs in ComfyUI" - }, - { - "author": "Kidev", - "title": "ComfyUI Fisheye Effects Nodes", - "reference": "https://github.com/Kidev/ComfyUI-Fisheye-effects", - "files": [ - "https://github.com/Kidev/ComfyUI-Fisheye-effects" - ], - "install_type": "git-clone", - "description": "Provides tools for applying and removing fisheye lens effects from images." - }, - { - "author": "feixuetuba", - "title": "Spleeter", - "reference": "https://github.com/feixuetuba/Spleeter", - "files": [ - "https://github.com/feixuetuba/Spleeter" - ], - "install_type": "git-clone", - "description": "This is a ComfyUI plugin based on [a/Spleeter](https://github.com/deezer/spleete). The model files are available on BaiduNetDisk. After downloading the model, place it in the checkpoints directory." - }, - { - "author": "aidec", - "title": "Comfyui_TextBatch_aidec", - "reference": "https://github.com/aidec/Comfyui_TextBatch_aidec", - "files": [ - "https://github.com/aidec/Comfyui_TextBatch_aidec" - ], - "install_type": "git-clone", - "description": "The Text Queue Processor can split text into groups line by line for batch processing (unfinished, with noticeable bugs still being fixed). Currently, on the first run, it may only process one item. Once that is completed, running it again usually works fine. After each run, the `start_index` needs to be manually reset. Occasionally, strange issues occur, such as multiple queues being added at once, while other times it works perfectly fine. The potential causes are still under investigation." - }, - - { - "author": "hellercommaa", - "title": "Hunyuan Video Resolutions", - "id": "hunyuanvideoresolutions", - "reference": "https://github.com/HellerCommaA/ComfyUI-VideoResolutions", - "files": [ - "https://github.com/HellerCommaA/ComfyUI-VideoResolutions" - ], - "install_type": "git-clone", - "description": "A super simple node that outputs common video resolutions as 2 integers for Hunyuan and others!" - }, - { - "author": "Gourieff", - "title": "comfyui-reactor-node", - "reference": "https://github.com/Gourieff/ComfyUI-ReActor", - "files": [ - "https://github.com/Gourieff/ComfyUI-ReActor" - ], - "install_type": "git-clone", - "description": "The Fast and Simple Face Swap Extension Node for ComfyUI, based on ReActor SD-WebUI Face Swap Extension" - }, - { - "author" : "strand1", - "title": "ComfyUI-Autogen", - "reference": "https://github.com/strand1/ComfyUI-Autogen", - "files": [ - "https://github.com/strand1/ComfyUI-Autogen" - ], - "install_type": "git-clone", - "description": "A collection of nodes for using Autogen with ComfyUI\n[a/AutoGen](https://github.com/microsoft/AutoGen): assistant agents, group chats, code executor, etc." - }, - { - "author": "BoyuanJiang", - "title": "FitDiT[official] - High-fidelity Virtual Try-on", - "id": "fitdit", - "reference": "https://github.com/BoyuanJiang/FitDiT/tree/FitDiT-ComfyUI", - "files": [ - "https://github.com/BoyuanJiang/FitDiT-ComfyUI" - ], - "install_type": "git-clone", - "description": "FitDiT is designed for high-fidelity virtual try-on using Diffusion Transformers (DiT)." - }, - { - "author": "ryanontheinside", - "title": "ComfyUI_ProfilerX", - "reference": "https://github.com/ryanontheinside/ComfyUI_ProfilerX", - "files": [ - "https://github.com/ryanontheinside/ComfyUI_ProfilerX" - ], - "install_type": "git-clone", - "description": "Node and workflow profiling. Find bottlenecks in your workflows. See trends over time." - }, - { - "author" : "ngosset", - "title": "ImageSimilarity", - "id": "imageSimilarity", - "reference": "https://github.com/ngosset/ComfyUI-ImageSimilarity", - "files": [ - "https://github.com/ngosset/ComfyUI-ImageSimilarity" - ], - "install_type": "git-clone", - "description": "Uses ResNet embeddings and cosine similarity to compare the likeness of two images." - }, - { - "author": "1038lab", - "title": "ComfyUI-EdgeTTS", - "reference": "https://github.com/1038lab/ComfyUI-EdgeTTS", - "files": [ - "https://github.com/1038lab/ComfyUI-EdgeTTS" - ], - "install_type": "git-clone", - "description": "ComfyUI-EdgeTTS is a powerful text-to-speech node for ComfyUI, leveraging Microsoft's Edge TTS capabilities. It enables seamless conversion of text into natural-sounding speech, supporting multiple languages and voices. Ideal for enhancing user interactions, this node is easy to integrate and customize, making it perfect for various applications." - }, - { - "author": "shenduldh", - "title": "ComfyUI-Lightning", - "reference": "https://github.com/shenduldh/ComfyUI-Lightning", - "files": [ - "https://github.com/shenduldh/ComfyUI-Lightning" - ], - "install_type": "git-clone", - "description": "Accelerate FLUX inferencing speed for ComfyUI." - }, - { - "author": "nofunstudio", - "title": "Node_Fun_ComfyUI", - "reference": "https://github.com/nofunstudio/Node_Fun_ComfyUI", - "files": [ - "https://github.com/nofunstudio/Node_Fun_ComfyUI" - ], - "install_type": "git-clone", - "description": "ComfyUI Custom Node Pack Layered Infinite Zoom Node" - }, - { - "author": "PixelML", - "title": "PixelML ComfyUI Nodes", - "reference": "https://github.com/PixelML/ComfyUI-PixelML-CustomNodes", - "files": [ - "https://github.com/PixelML/ComfyUI-PixelML-CustomNodes" - ], - "install_type": "git-clone", - "description": "A collection of custom nodes for ComfyUI focused on variable handling and workflow automation." - }, - { - "author": "Bellzs", - "title": "ComfyUI-LoRA-Assistant", - "reference": "https://github.com/Bellzs/ComfyUI-LoRA-Assistant", - "files": [ - "https://github.com/Bellzs/ComfyUI-LoRA-Assistant" - ], - "install_type": "git-clone", - "description": "The plug-in is designed to automatically save the association between the LoRA model and Trigger words to a Local JSON file so that when the LoRA model is loaded, the associated trigger words can be automatically loaded via the node 'LoRA Trigger Local' without manual input." - }, - { - "author": "a-und-b", - "title": "ComfyUI_LoRA_from_URL", - "reference": "https://github.com/a-und-b/ComfyUI_LoRA_from_URL", - "files": [ - "https://github.com/a-und-b/ComfyUI_LoRA_from_URL" - ], - "install_type": "git-clone", - "description": "A simple-as-possible custom node for ComfyUI to load LoRA models from a public URL." - }, - { - "author": "theAdamColton", - "title": "ComfyUI-texflow-extension", - "reference": "https://github.com/theAdamColton/ComfyUI-texflow-extension", - "files": [ - "https://github.com/theAdamColton/ComfyUI-texflow-extension" - ], - "install_type": "git-clone", - "description": "This is the ComfyUI extension for use with texflow. It provides two new nodes, 'Load Texflow Depth Image' and 'Save Texflow Image'.\nFor more information see [a/the main texflow repo](https://github.com/theAdamColton/texflow/)" - }, - { - "author": "shabri-arrahim", - "title": "ComfyUI Safety Checker", - "reference": "https://github.com/shabri-arrahim/ComfyUI-Safety-Checker", - "files": [ - "https://github.com/shabri-arrahim/ComfyUI-Safety-Checker" - ], - "install_type": "git-clone", - "description": "This project provides custom safety checkers for image classification using Falcons AI and CompVis models. The safety checkers are designed to detect and filter out NSFW content from images." - }, - { - "author": "hmwl", - "title": "ComfyUI_zip", - "reference": "https://github.com/hmwl/ComfyUI_zip", - "files": [ - "https://github.com/hmwl/ComfyUI_zip" - ], - "install_type": "git-clone", - "description": "ComfyUI zip package image processing" - }, - { - "author": "nisimjoseph", - "title": "ComfyUI OpenAI Prompter", - "reference": "https://github.com/nisimjoseph/ComfyUI_OpenAI-Prompter", - "files": [ - "https://github.com/nisimjoseph/ComfyUI_OpenAI-Prompter" - ], - "install_type": "git-clone", - "description": "A custom node for ComfyUI that generates creative and detailed prompts using OpenAI's GPT models." - }, - { - "author": "ciga2011", - "title": "ComfyUI Prompt Optimizer", - "id": "promptoptimizer", - "reference": "https://github.com/ciga2011/ComfyUI-PromptOptimizer", - "files": [ - "https://github.com/ciga2011/ComfyUI-PromptOptimizer" - ], - "install_type": "git-clone", - "description": "Optimize prompts for text-to-image models at no cost." - }, - { - "author": "meanin2", - "title": "ComfyUI Watermark Image Node", - "reference": "https://github.com/meanin2/comfyui-watermarking", - "files": [ - "https://github.com/meanin2/comfyui-watermarking" - ], - "install_type": "git-clone", - "description": "This custom node allows you to overlay a watermark image onto an existing image within ComfyUI." - }, - { - "author": "Kurdknight", - "title": "KurdKnight ComfyUI System Check Node", - "reference": "https://github.com/Kurdknight/Kurdknight_comfycheck", - "files": [ - "https://github.com/Kurdknight/Kurdknight_comfycheck" - ], - "install_type": "git-clone", - "description": "A comprehensive system information node for ComfyUI that provides detailed information about your system, GPU, CUDA, and AI libraries configuration. Works on both Windows and Linux systems." - }, - { - "author": "yhayano-ponotech", - "title": "ComfyUI Local Save Node", - "reference": "https://github.com/yhayano-ponotech/comfyui-save-image-local", - "files": [ - "https://github.com/yhayano-ponotech/comfyui-save-image-local" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node for directly downloading generated images to your local PC with customizable filenames and formats (PNG/JPEG)." - }, - { - "author": "ThepExcel", - "title": "Multiline Text Choice Node for ComfyUI", - "reference": "https://github.com/ThepExcel/aiangelgallery-comfyui", - "files": [ - "https://github.com/ThepExcel/aiangelgallery-comfyui" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI allows users to input multiline text and select a specific line by its number. The node processes the input and returns the selected line along with its index." - }, - { - "author": "hosterosi", - "title": "ComfyUI OpenAI Node", - "reference": "https://github.com/hosterosi/ComfyUI_OpenAI", - "files": [ - "https://github.com/hosterosi/ComfyUI_OpenAI" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI allows users to input multiline text and select a specific line by its number. The node processes the input and returns the selected line along with its index." - }, - { - "author": "IDGallagher", - "title": "IG-Motion-Search", - "id": "motion-video-search", - "reference": "https://github.com/IDGallagher/MotionVideoSearch", - "files": [ - "https://github.com/IDGallagher/MotionVideoSearch" - ], - "install_type": "git-clone", - "description": "Nodes for searching videos by motion" - }, - { - "author": "l-comm", - "title": "WatermarkRemoval", - "id": "watermark-removal", - "reference": "https://github.com/l-comm/WatermarkRemoval", - "files": [ - "https://github.com/l-comm/WatermarkRemoval" - ], - "install_type": "git-clone", - "description": "Watermark removal project" - }, - { - "author": "philiprodriguez", - "title": "ComfyUI-HunyuanImageLatentToVideoLatent", - "reference": "https://github.com/philiprodriguez/ComfyUI-HunyuanImageLatentToVideoLatent", - "files": [ - "https://github.com/philiprodriguez/ComfyUI-HunyuanImageLatentToVideoLatent" - ], - "install_type": "git-clone", - "description": "A ComfyUI node which copies a given latent's samples tensor along the time axis ((length - 1) // 4) + 1 times to form a longer latent (see EmptyHunyuanLatentVideo's implementation for why this specific number of copies is used) and then prepares a noise_mask tensor of the same shape such that the value of the mask for a given time step is given by the function at https://www.desmos.com/calculator/vhw74mr1vh." - }, - { - "author": "benjiyaya", - "title": "ComfyUI-HunyuanVideoImagesGuider", - "reference": "https://github.com/benjiyaya/ComfyUI-HunyuanVideoImagesGuider", - "files": [ - "https://github.com/benjiyaya/ComfyUI-HunyuanVideoImagesGuider" - ], - "install_type": "git-clone", - "description": "A specialized node for ComfyUI that enable advanced motion and animation capabilities for image as guider for video processing In Hunyuan Video." - }, - { - "author": "lldacing", - "title": "ComfyUI_PuLID_Flux_ll", - "id": "comfyui_pulid_flux_ll", - "reference": "https://github.com/lldacing/ComfyUI_PuLID_Flux_ll", - "files": [ - "https://github.com/lldacing/ComfyUI_PuLID_Flux_ll" - ], - "install_type": "git-clone", - "description": "The implementation for PuLID-Flux, support TeaCache, no model pollution." - } - ] -} diff --git a/custom_nodes/comfyui-manager/node_db/new/extension-node-map.json b/custom_nodes/comfyui-manager/node_db/new/extension-node-map.json deleted file mode 100644 index 78b4fe324784b9e73da6dfc0f6a9b86d73a5bda7..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/new/extension-node-map.json +++ /dev/null @@ -1,28104 +0,0 @@ -{ - "https://gist.githubusercontent.com/alkemann/7361b8eb966f29c8238fd323409efb68/raw/f9605be0b38d38d3e3a2988f89248ff557010076/alkemann.py": [ - [ - "Int to Text", - "Save A1 Image", - "Seed With Text" - ], - { - "title_aux": "alkemann nodes" - } - ], - "https://github.com/0x-jerry/comfyui-rembg": [ - [ - "Load Rembg Model", - "Rembg Remove background" - ], - { - "title_aux": "Rembg Background Removal Node for ComfyUI" - } - ], - "https://github.com/0xbitches/ComfyUI-LCM": [ - [ - "LCM_Sampler", - "LCM_Sampler_Advanced", - "LCM_img2img_Sampler", - "LCM_img2img_Sampler_Advanced" - ], - { - "title_aux": "Latent Consistency Model for ComfyUI" - } - ], - "https://github.com/1038lab/ComfyUI-EdgeTTS": [ - [ - "EdgeTTS", - "Save_Audio", - "WhisperSTT" - ], - { - "title_aux": "ComfyUI-EdgeTTS" - } - ], - "https://github.com/1038lab/ComfyUI-OmniGen": [ - [ - "ailab_OmniGen" - ], - { - "title_aux": "ComfyUI-OmniGen" - } - ], - "https://github.com/1038lab/ComfyUI-RMBG": [ - [ - "ClothesSegment", - "FaceSegment", - "FashionSegmentAccessories", - "FashionSegmentClothing", - "RMBG", - "Segment" - ], - { - "title_aux": "ComfyUI-RMBG" - } - ], - "https://github.com/1038lab/ComfyUI-WildPromptor": [ - [ - "AllInOneList", - "KeywordPicker", - "PromptBuilder", - "PromptConcat", - "WildPromptorAllInOne", - "WildPromptorGenerator", - "WildPromptor_DataToPromptList", - "WildPromptor_Enhancer" - ], - { - "title_aux": "ComfyUI-WildPromptor" - } - ], - "https://github.com/111496583yzy/comfyui-PuzzleCrack-Effect": [ - [ - "MyJigsawPuzzleEffect", - "MyRegionBoundaryEffect" - ], - { - "title_aux": "Jigsaw Puzzle Effect Plugin" - } - ], - "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant": [ - [ - "EGIPAdapter_Mad_Assistant", - "EGIPAdapter_Mad_AssistantV1", - "EGIPAdapter_Mad_AssistantV2", - "EGIPAdapter_Mad_AssistantV3", - "EGIPAdapter_Mad_AssistantV4", - "EGIPAdapter_Mad_AssistantV5", - "EGIPAdapter_Mad_AssistantV6" - ], - { - "title_aux": "ComfUI-EGAdapterMadAssistant" - } - ], - "https://github.com/11dogzi/Comfyui-ergouzi-Nodes": [ - [ - "EG-YSZT-ZT", - "EG_CPSYTJ", - "EG_FX_BDAPI", - "EG_HT_YSTZ", - "EG_JF_ZZSC", - "EG_JXFZ_node", - "EG_K_LATENT", - "EG_RY_HT", - "EG_SCQY_BHDQY", - "EG_SCQY_QBQY", - "EG_SCQY_SXQY", - "EG_SJ", - "EG_SJPJ_Node", - "EG_SS_RYZH", - "EG_SZ_JDYS", - "EG_TC_Node", - "EG_TSCDS_CJ", - "EG_TSCDS_DG", - "EG_TSCDS_FG", - "EG_TSCDS_JT", - "EG_TSCDS_QT", - "EG_TSCDS_RW", - "EG_TSCDS_WP", - "EG_TSCDS_ZL", - "EG_TSCMB_GL", - "EG_TXZZ_ZH", - "EG_TX_CCHQ", - "EG_TX_CJPJ", - "EG_TX_JZRY", - "EG_TX_LJ", - "EG_TX_LJBC", - "EG_TX_SFBLS", - "EG_TX_WHLJ", - "EG_WB_KSH", - "EG_WXZ_QH", - "EG_XZ_QH", - "EG_YSQY_BBLLD", - "EG_YSQY_BLLD", - "EG_ZY_WBK", - "EG_ZZHBCJ", - "EG_ZZKZ_HT_node", - "EG_ZZ_BSYH", - "EG_ZZ_BYYH", - "EG_ZZ_HSYH", - "EG_ZZ_MHHT", - "EG_ZZ_SSKZ", - "ER_JBCH", - "ER_TX_ZZCJ" - ], - { - "title_aux": "Comfyui-ergouzi-Nodes" - } - ], - "https://github.com/11dogzi/Comfyui-ergouzi-kaiguan": [ - [ - "ALLty", - "EGRWGL", - "EGRYDZQHNode", - "GroupSwitchNode", - "GroupSwitchNodee", - "GroupSwitchNodeee", - "GroupSwitchNodeeee", - "hulue", - "jinyong" - ], - { - "title_aux": "Comfyui-ergouzi-kaiguan" - } - ], - "https://github.com/11dogzi/Comfyui-ergouzi-samplers": [ - [ - "EGBYZZCYQ", - "EGCYQJB", - "EGCYQJBCJ" - ], - { - "title_aux": "Comfyui-ergouzi-samplers" - } - ], - "https://github.com/1mckw/Comfyui-Gelbooru": [ - [ - "Gelbooru (ID)", - "Gelbooru (Random)", - "UrlsToImage" - ], - { - "title_aux": "Comfyui-Gelbooru" - } - ], - "https://github.com/1zhangyy1/comfyui-vidu-nodes": [ - [ - "Character2Video", - "Image2Video", - "Text2Video", - "UpscaleVideo", - "VideoDownloader" - ], - { - "title_aux": "ComfyUI VIDU" - } - ], - "https://github.com/2kpr/ComfyUI-PMRF": [ - [ - "PMRF" - ], - { - "title_aux": "ComfyUI-PMRF" - } - ], - "https://github.com/2kpr/ComfyUI-UltraPixel": [ - [ - "UltraPixelLoad", - "UltraPixelProcess" - ], - { - "author": "italo", - "title_aux": "ComfyUI-UltraPixel" - } - ], - "https://github.com/311-code/ComfyUI-MagicClip_Strength": [ - [ - "CLIPTextEncodeSDXL_311_code" - ], - { - "title_aux": "ComfyUI MagicClip_Strength for SDXL" - } - ], - "https://github.com/42lux/ComfyUI-42lux": [ - [ - "FluxEmptyLatentSizePicker", - "FluxHighresFixScaler", - "ModelSamplingFluxNormalized", - "PromptWithTokenCounter" - ], - { - "title_aux": "Just a bunch of QOL nodes by 42lux" - } - ], - "https://github.com/438443467/ComfyUI-GPT4V-Image-Captioner": [ - [ - "GPT4VCaptioner", - "Image Load with Metadata", - "SAMIN String Attribute Selector", - "SANMIN Adapt Coordinates", - "SANMIN AdjustTransparency", - "SANMIN BlurMaskArea", - "SANMIN ChineseToCharacter", - "SANMIN ClothingWildcards", - "SANMIN ConvertToEnglish", - "SANMIN EditWildcards", - "SANMIN Float", - "SANMIN LoadPathImagesPreview", - "SANMIN SCALE AND FILL BLACK", - "SANMIN SanmiSaveImageToLocal", - "SANMIN SimpleWildcards", - "SANMIN Upscale And Original Size", - "Samin Counter", - "Samin Load Image Batch" - ], - { - "title_aux": "ComfyUI-GPT4V-Image-Captioner" - } - ], - "https://github.com/45uee/ComfyUI-Color_Transfer": [ - [ - "ColorPalette", - "PaletteTransfer" - ], - { - "title_aux": "ComfyUI-Color_Transfer" - } - ], - "https://github.com/54rt1n/ComfyUI-DareMerge": [ - [ - "DM_AdvancedDareModelMerger", - "DM_AdvancedModelMerger", - "DM_AttentionGradient", - "DM_BlockGradient", - "DM_BlockModelMerger", - "DM_DareClipMerger", - "DM_DareModelMergerBlock", - "DM_DareModelMergerElement", - "DM_DareModelMergerMBW", - "DM_GradientEdit", - "DM_GradientOperations", - "DM_GradientReporting", - "DM_InjectNoise", - "DM_LoRALoaderTags", - "DM_LoRAReporting", - "DM_MBWGradient", - "DM_MagnitudeMasker", - "DM_MaskEdit", - "DM_MaskOperations", - "DM_MaskReporting", - "DM_ModelReporting", - "DM_NormalizeModel", - "DM_QuadMasker", - "DM_ShellGradient", - "DM_SimpleMasker" - ], - { - "title_aux": "ComfyUI-DareMerge" - } - ], - "https://github.com/5x00/ComfyUI-PiAPI-Faceswap": [ - [ - "Face Swapper" - ], - { - "title_aux": "ComfyUI-PiAPI-Faceswap" - } - ], - "https://github.com/5x00/ComfyUI-VLM-Captions": [ - [ - "Image To Caption" - ], - { - "title_aux": "ComfyUI-VLM_Captions" - } - ], - "https://github.com/6174/comflowy-nodes": [ - [ - "Comflowy_Clarity_Upscale", - "Comflowy_Extract_JSON", - "Comflowy_Flux", - "Comflowy_Flux_Dev_Lora", - "Comflowy_Flux_Pro_Ultra", - "Comflowy_Hailuo", - "Comflowy_Http_Request", - "Comflowy_Ideogram", - "Comflowy_Kling", - "Comflowy_LLM", - "Comflowy_Load_JSON", - "Comflowy_Luma", - "Comflowy_Omost_LLM", - "Comflowy_Omost_Load_Canvas_Conditioning", - "Comflowy_Omost_Load_Canvas_Python_Code", - "Comflowy_Omost_Preview", - "Comflowy_Omost_To_Conditioning", - "Comflowy_Preview_JSON", - "Comflowy_Preview_Video", - "Comflowy_Recraft", - "Comflowy_Set_API_Key" - ], - { - "title_aux": "Comflowy's Custom Nodes" - } - ], - "https://github.com/807502278/ComfyUI-3D-MeshTool": [ - [ - "Auto_Normal", - "List_to_Tensor", - "Load_OBJ", - "Mesh_Clean_Data", - "Mesh_Cleanup", - "Mesh_Data_Get", - "Mesh_Data_Set", - "Mesh_Data_Statistics", - "Mesh_Optimization", - "Mesh_Subdivide", - "RT-to-camposes", - "Tensor_to_List", - "UV_options", - "UnwrapUV_Auto_xatlas", - "UnwrapUV_xatlas", - "array-append", - "array-attribute", - "array-convert", - "array-end-increment", - "array-end-step", - "array-is-null", - "array-number-to-angle", - "array-select-element", - "array-step", - "array-step-increment", - "array-t", - "array-to-camposes", - "cam-pos-bus", - "get-tensor-shape", - "img-bath-rotationZ", - "img-to-tensor", - "json-to-campos", - "mesh_data_bus", - "mesh_remap_cubvh", - "ply_load", - "ply_normalize", - "ply_save", - "show_any", - "string-to-array", - "tensor-new", - "tensor-shape", - "tensor-to-img", - "vc_to_texture" - ], - { - "author": "807502278", - "description": "A simple 3D model processing tool within ComfyUI", - "nickname": "3D Mesh Tool", - "title": "3D Mesh Tool", - "title_aux": "ComfyUI-3D-MeshTool" - } - ], - "https://github.com/807502278/ComfyUI-WJNodes": [ - [ - "AdvCrop", - "ApplyEasyOCR_batch", - "BiRefNet2_tensort", - "BilateralFilter", - "ColorSegmentation", - "ColorSegmentation_v2", - "ComfyUIPath", - "CoordsSelectMask", - "ImageChannelBus", - "InvertChannelAdv", - "LoadColorConfig", - "LoadImageAdv", - "LoadImageFromPath", - "MaskAndMaskMath", - "MaskDetection", - "MaskLineMapping", - "MaskSelectMask", - "MergeImageList", - "PathAppend", - "PrimitiveNode", - "RGBABatchToImage", - "Sam2AutoSegmentation_data", - "SaveImageOut", - "SaveImageToPath", - "SegmDetectorCombined_batch", - "SelectBatch_v2", - "SelectImagesBatch", - "SplitPath", - "ToImageListData", - "VideoFade", - "Video_OverlappingSeparation_test", - "WAS_Mask_Fill_Region_batch", - "any_data", - "array_count", - "bbox_restore_mask", - "get_TypeName", - "get_image_data", - "load_BiRefNet2_General", - "load_EasyOCR_model", - "load_model_value", - "sort_images_batch" - ], - { - "title_aux": "ComfyUI-WJNodes" - } - ], - "https://github.com/807502278/ComfyUI_MaskGCT": [ - [ - "audio_capture_percentage", - "audio_resample", - "audio_scale", - "from_path_load_audio", - "get_audio_data", - "get_text_data", - "load_maskgct_model", - "load_w2vbert_model", - "maskgct_pipeline", - "maskgct_run_v2", - "maskgct_setting", - "multilingual_slice", - "remove_blank_space", - "whisper_large_v3" - ], - { - "title_aux": "ComfyUI_MaskGCT" - } - ], - "https://github.com/80sVectorz/ComfyUI-Static-Primitives": [ - [ - "FloatStaticPrimitive", - "IntStaticPrimitive", - "StringMlStaticPrimitive", - "StringStaticPrimitive" - ], - { - "title_aux": "ComfyUI-Static-Primitives" - } - ], - "https://github.com/A4P7J1N7M05OT/ComfyUI-AutoColorGimp": [ - [ - "AutoColorGimp" - ], - { - "title_aux": "ComfyUI-AutoColorGimp" - } - ], - "https://github.com/A4P7J1N7M05OT/ComfyUI-PixelOE-Wrapper": [ - [ - "PixelOE", - "PixelOETorch" - ], - { - "title_aux": "ComfyUI-PixelOE-Wrapper" - } - ], - "https://github.com/AARG-FAN/Image-Vector-for-ComfyUI": [ - [ - "AIraster" - ], - { - "title_aux": "Image-vector-for-ComfyUI" - } - ], - "https://github.com/AIFSH/AniTalker-ComfyUI": [ - [ - "AniTalkerNode", - "PreViewVideo" - ], - { - "title_aux": "AniTalker-ComfyUI" - } - ], - "https://github.com/AIFSH/ComfyUI-3d-photo-inpainting": [ - [ - "LoadImagePath", - "PreViewVideo", - "TreeDNode" - ], - { - "title_aux": "ComfyUI-3d-photo-inpainting" - } - ], - "https://github.com/AIFSH/ComfyUI-AuraSR": [ - [ - "AuraSRNode" - ], - { - "title_aux": "AIFSH/ComfyUI-AuraSR" - } - ], - "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio": [ - [ - "ControlNetPathLoader", - "DiffTextNode", - "DiffutoonNode", - "ExVideoNode", - "LoadVideo", - "PreViewVideo", - "SDPathLoader" - ], - { - "title_aux": "ComfyUI-DiffSynth-Studio" - } - ], - "https://github.com/AIFSH/ComfyUI-FishSpeech": [ - [ - "FishSpeech_INFER", - "FishSpeech_INFER_SRT", - "LoadAudio", - "LoadSRT", - "PreViewAudio" - ], - { - "title_aux": "ComfyUI-FishSpeech" - } - ], - "https://github.com/AIFSH/ComfyUI-GPT_SoVITS": [ - [ - "GPT_SOVITS_FT", - "GPT_SOVITS_INFER", - "GPT_SOVITS_TTS", - "LoadAudio", - "LoadSRT", - "PreViewAudio" - ], - { - "title_aux": "ComfyUI-GPT_SoVITS" - } - ], - "https://github.com/AIFSH/ComfyUI-Hallo": [ - [ - "HalloNode", - "LoadAudioPath", - "LoadImagePath", - "PreViewVideo" - ], - { - "title_aux": "ComfyUI-Hallo" - } - ], - "https://github.com/AIFSH/ComfyUI-I2V-Adapter": [ - [ - "I2V_AdapterNode", - "LoraPathLoader", - "MotionLoraLoader", - "PreViewVideo", - "PromptNode" - ], - { - "title_aux": "ComfyUI-I2V-Adapter" - } - ], - "https://github.com/AIFSH/ComfyUI-IP_LAP": [ - [ - "CombineAudioVideo", - "IP_LAP", - "LoadVideo", - "PreViewVideo" - ], - { - "title_aux": "ComfyUI-IP_LAP" - } - ], - "https://github.com/AIFSH/ComfyUI-Live2DViewer": [ - [ - "Live2DViewer", - "LoadAudio" - ], - { - "title_aux": "ComfyUI-Live2DViewer" - } - ], - "https://github.com/AIFSH/ComfyUI-MARS5-TTS": [ - [ - "LoadAudioPath", - "MARS5TTS_Node", - "PreViewAudio", - "TTSTextEncode" - ], - { - "title_aux": "ComfyUI-MARS5-TTS" - } - ], - "https://github.com/AIFSH/ComfyUI-MimicBrush": [ - [ - "MimicBrushNode" - ], - { - "title_aux": "ComfyUI-MimicBrush" - } - ], - "https://github.com/AIFSH/ComfyUI-MimicMotion": [ - [ - "LoadVideo", - "MimicMotionNode", - "PreViewVideo" - ], - { - "title_aux": "ComfyUI-MimicMotion" - } - ], - "https://github.com/AIFSH/ComfyUI-MuseTalk_FSH": [ - [ - "CombineAudioVideo", - "LoadVideo", - "MuseTalk", - "MuseTalkRealTime", - "PreViewVideo" - ], - { - "title_aux": "ComfyUI-MuseTalk_FSH" - } - ], - "https://github.com/AIFSH/ComfyUI-RVC": [ - [ - "CombineAudio", - "LoadAudio", - "PreViewAudio", - "RVC_Infer", - "RVC_Train" - ], - { - "title_aux": "ComfyUI-RVC" - } - ], - "https://github.com/AIFSH/ComfyUI-UVR5": [ - [ - "LoadAudioPath", - "PreViewAudio", - "UVR5_Node" - ], - { - "title_aux": "ComfyUI-UVR5" - } - ], - "https://github.com/AIFSH/ComfyUI-UniAnimate": [ - [ - "LoadImagePath", - "LoadVideo", - "PoseAlignNode", - "PreViewVideo", - "UniAnimateNode" - ], - { - "title_aux": "ComfyUI-UniAnimate" - } - ], - "https://github.com/AIFSH/ComfyUI-WhisperX": [ - [ - "LoadAudioPath", - "PreViewSRT", - "SRTToString", - "WhisperX" - ], - { - "title_aux": "ComfyUI-WhisperX" - } - ], - "https://github.com/AIFSH/ComfyUI-XTTS": [ - [ - "LoadAudioPath", - "LoadSRT", - "PreViewAudio", - "XTTS_INFER", - "XTTS_INFER_SRT" - ], - { - "title_aux": "ComfyUI-XTTS" - } - ], - "https://github.com/AIFSH/ComfyUI_V-Express": [ - [ - "LoadAudioPath", - "LoadImagePath", - "LoadVideo", - "PreViewVideo", - "VExpress" - ], - { - "title_aux": "ComfyUI_V-Express" - } - ], - "https://github.com/AIFSH/CosyVoice-ComfyUI": [ - [ - "CosyVoiceDubbingNode", - "CosyVoiceNode", - "LoadSRT", - "TextNode" - ], - { - "title_aux": "CosyVoice-ComfyUI" - } - ], - "https://github.com/AIFSH/DHLive-ComfyUI": [ - [ - "CombineVideo", - "DHLIVELoadVideo", - "DHLiveNode", - "PreViewVideo", - "StaticVideo" - ], - { - "title_aux": "DHLive-ComfyUI" - } - ], - "https://github.com/AIFSH/DiffMorpher-ComfyUI": [ - [ - "DiffMorpherNode", - "PreViewGIF", - "TextNode" - ], - { - "title_aux": "DiffMorpher-ComfyUI" - } - ], - "https://github.com/AIFSH/DiffSynth-ComfyUI": [ - [ - "CogVideoNode", - "DownloadModelsNode", - "LoadVideo", - "PreViewVideo", - "TextEncode" - ], - { - "title_aux": "DiffSynth-ComfyUI" - } - ], - "https://github.com/AIFSH/EchoMimicV2-ComfyUI": [ - [ - "EchoMimicV2Node", - "EchoMimicV2PoseNode" - ], - { - "title_aux": "EchoMimicV2-ComfyUI" - } - ], - "https://github.com/AIFSH/EzAudio-ComfyUI": [ - [ - "EzAudioControlNetNode", - "EzAudioEditNode", - "EzAudioNode", - "TextPromptNode" - ], - { - "title_aux": "EzAudio-ComfyUI" - } - ], - "https://github.com/AIFSH/F5-TTS-ComfyUI": [ - [ - "F5TTSNode" - ], - { - "title_aux": "F5-TTS-ComfyUI" - } - ], - "https://github.com/AIFSH/FancyVideo-ComfyUI": [ - [ - "FancyVideoI2VNode", - "FancyVideoV2VNode" - ], - { - "title_aux": "FancyVideo-ComfyUI" - } - ], - "https://github.com/AIFSH/FireRedTTS-ComfyUI": [ - [ - "FireRedTTSNode" - ], - { - "title_aux": "FireRedTTS-ComfyUI" - } - ], - "https://github.com/AIFSH/GSTTS-ComfyUI": [ - [ - "ASRNode", - "AudioSlicerNode", - "ConfigGPTNode", - "ConfigSoVITSNode", - "DatasetNode", - "ExperienceNode", - "GSFinetuneNone", - "GSVTTSNode", - "LoadSRT", - "PreViewSRT", - "TSCY_Node", - "TextDictNode" - ], - { - "title_aux": "GSTTS-ComfyUI" - } - ], - "https://github.com/AIFSH/HivisionIDPhotos-ComfyUI": [ - [ - "AddBackgroundNode", - "AddWaterMarkNode", - "ENHivisionParamsNode", - "HivisionLayOutNode", - "HivisionNode", - "LaterProcessNode", - "ZHHivisionParamsNode" - ], - { - "author": "cuny", - "description": "", - "title_aux": "HivisionIDPhotos-ComfyUI" - } - ], - "https://github.com/AIFSH/IMAGDressing-ComfyUI": [ - [ - "IMAGDressingNode", - "TextNode" - ], - { - "title_aux": "IMAGDressing-ComfyUI" - } - ], - "https://github.com/AIFSH/JoyHallo-ComfyUI": [ - [ - "JoyHalloNode" - ], - { - "title_aux": "JoyHallo-ComfyUI" - } - ], - "https://github.com/AIFSH/MaskGCT-ComfyUI": [ - [ - "MaskGCTNode" - ], - { - "title_aux": "MaskGCT-ComfyUI" - } - ], - "https://github.com/AIFSH/MiniMates-ComfyUI": [ - [ - "MiniMatesNode" - ], - { - "title_aux": "MiniMates-ComfyUI" - } - ], - "https://github.com/AIFSH/OmniGen-ComfyUI": [ - [ - "OmniGenLoader", - "OmniGenNode" - ], - { - "title_aux": "OmniGen-ComfyUI" - } - ], - "https://github.com/AIFSH/PyramidFlow-ComfyUI": [ - [ - "PyramidFlowNode" - ], - { - "title_aux": "PyramidFlow-ComfyUI" - } - ], - "https://github.com/AIFSH/RealisDance-ComfyUI": [ - [ - "LoadFile", - "LoadVideo", - "PreViewVideo", - "RealisDanceNode" - ], - { - "title_aux": "RealisDance-ComfyUI" - } - ], - "https://github.com/AIFSH/SenseVoice-ComfyUI": [ - [ - "SenseVoiceNode", - "ShowTextNode" - ], - { - "title_aux": "SenseVoice-ComfyUI" - } - ], - "https://github.com/AIFSH/StyleShot-ComfyUI": [ - [ - "StyleShotNode", - "TextNode" - ], - { - "title_aux": "StyleShot-ComfyUI" - } - ], - "https://github.com/AIFSH/VideoSys-ComfyUI": [ - [ - "PreViewVideo", - "TextNode", - "VideoSysNode" - ], - { - "title_aux": "VideoSys-ComfyUI" - } - ], - "https://github.com/AIFSH/ViewCrafter-ComfyUI": [ - [ - "LoadVideo", - "PreViewVideo", - "ViewCrafterTxTNode" - ], - { - "title_aux": "ViewCrafter-ComfyUI" - } - ], - "https://github.com/AIFSH/VocalSeparation-ComfyUI": [ - [ - "CombineAudioNode", - "VocalSeparationNode" - ], - { - "title_aux": "VocalSeparation-ComfyUI" - } - ], - "https://github.com/AIGCTeam/ComfyUI_kkTranslator_nodes": [ - [ - "LoadMarianMTCheckPoint", - "PromptBaiduFanyiToText", - "PromptTranslateToText" - ], - { - "title_aux": "ComfyUI_kkTranslator_nodes" - } - ], - "https://github.com/AIGODLIKE/ComfyUI-CUP": [ - [ - "Mask", - "OpenPose", - "OpenPoseCanny", - "OpenPoseDepth", - "OpenPoseFace", - "OpenPoseFull", - "OpenPoseFullExtraLimb", - "OpenPoseHand", - "OpenPoseKeyPose", - "OpenPoseLineart", - "OpenPoseMediaPipeFace", - "PreviewAudio", - "SaveAudioBL", - "\u5b58\u50a8", - "\u5bfc\u5165", - "\u622a\u56fe", - "\u6750\u8d28\u56fe", - "\u8f93\u5165\u56fe\u50cf", - "\u9884\u89c8" - ], - { - "title_aux": "ComfyUI-CUP" - } - ], - "https://github.com/AIGODLIKE/ComfyUI-ToonCrafter": [ - [ - "ToonCrafterNode", - "ToonCrafterWithSketch" - ], - { - "title_aux": "ComfyUI-ToonCrafter" - } - ], - "https://github.com/AIPOQUE/ComfyUI-APQNodes": [ - [ - "ColorPalette|AIPOQUE" - ], - { - "title_aux": "ComfyUI-APQNodes" - } - ], - "https://github.com/AInseven/ComfyUI-fastblend": [ - [ - "FillDarkMask", - "InterpolateKeyFrame", - "MaskListcaptoBatch", - "Merge_Image_List", - "MyOpenPoseNode", - "SmoothVideo", - "alert_when_finished", - "reBatchImage" - ], - { - "title_aux": "ComfyUI-fastblend" - } - ], - "https://github.com/AIrjen/OneButtonPrompt": [ - [ - "AutoNegativePrompt", - "CreatePromptVariant", - "OneButtonArtify", - "OneButtonFlufferize", - "OneButtonPreset", - "OneButtonPrompt", - "OneButtonSuperPrompt", - "SavePromptToFile" - ], - { - "title_aux": "One Button Prompt" - } - ], - "https://github.com/ALatentPlace/ComfyUI_yanc": [ - [ - "> Bloom", - "> Blur", - "> Brightness", - "> Clear Text", - "> Combine Channels", - "> Contrast", - "> Divide Channels", - "> Edge Enhance", - "> Film Grain", - "> Float to Int", - "> Fog", - "> Get Mean Color", - "> HUE", - "> Int", - "> Int to Text", - "> Layer Weights (for IPAMS)", - "> Lens Distortion", - "> Light Source Mask", - "> Load Image", - "> Load Image From Folder", - "> Mask Curves", - "> NIKSampler", - "> Noise From Image", - "> Normal Map Lighting", - "> RGB Color", - "> RGB Shift", - "> Resolution by Aspect Ratio", - "> Rotate Image", - "> Saturation", - "> Save Image", - "> Save Text", - "> Scale Image to Side", - "> Scanlines", - "> Sharpen", - "> Text", - "> Text Combine", - "> Text Count", - "> Text Pick Line by Index", - "> Text Pick Random Line", - "> Text Random Weights", - "> Text Replace", - "> Vignette" - ], - { - "title_aux": "ComfyUI_yanc" - } - ], - "https://github.com/APZmedia/APZmedia-comfyui-fast-image-save": [ - [ - "APZmedia Fast image save" - ], - { - "title_aux": "APZmedia Fast Image Save Node" - } - ], - "https://github.com/APZmedia/ComfyUI-APZmedia-cleanName-from-string": [ - [ - "APZmediaStandardFilenameBuilder", - "CleanFileNameNode", - "GenerateFilePathNode" - ], - { - "title_aux": "APZmedia Clean Name" - } - ], - "https://github.com/ARZUMATA/ComfyUI-ARZUMATA": [ - [ - "CachingCLIPTextEncodeFlux|ARZUMATA", - "CachingCLIPTextEncode|ARZUMATA" - ], - { - "title_aux": "ComfyUI-ARZUMATA" - } - ], - "https://github.com/ARZUMATA/ComfyUI-ARZUMATA-Qwen2": [ - [ - "Image2Base64", - "Qwen2ModelLoader", - "Qwen2ModelRunInference" - ], - { - "title_aux": "ComfyUI-Qwen2" - } - ], - "https://github.com/Aaron-CHM/ComfyUI-z-a1111-sd-webui-DanTagGen": [ - [ - "DanTagGen" - ], - { - "title_aux": "z-a1111-sd-webui-DanTagGen" - } - ], - "https://github.com/AbdullahAlfaraj/Comfy-Photoshop-SD": [ - [ - "APS_LatentBatch", - "APS_Seed", - "ContentMaskLatent", - "ControlNetScript", - "ControlnetUnit", - "GaussianLatentImage", - "GetConfig", - "LoadImageBase64", - "LoadImageWithMetaData", - "LoadLorasFromPrompt", - "MaskExpansion" - ], - { - "title_aux": "Comfy-Photoshop-SD" - } - ], - "https://github.com/AbyssBadger0/ComfyUI_BadgerTools": [ - [ - "ApplyMaskToImage-badger", - "CropImageByMask-badger", - "ExpandImageWithColor-badger", - "FindThickLinesFromCanny-badger", - "Find_closest_factors-badger", - "FloatToInt-badger", - "FloatToString-badger", - "FrameToVideo-badger", - "GETRequset-badger", - "GarbageCollect-badger", - "GetColorFromBorder-badger", - "GetDirName-badger", - "GetUUID-badger", - "IdentifyBorderColorToMask-badger", - "IdentifyColorToMask-badger", - "ImageNormalization-badger", - "ImageOverlap-badger", - "ImageScaleToSide-badger", - "IntToString-badger", - "IntToStringAdvanced-badger", - "LoadImageAdvanced-badger", - "LoadImagesFromDirListAdvanced-badger", - "MapColorsToPalette-badger", - "NormalizationNumber-badger", - "ReduceColors-badger", - "RotateImageWithPadding-badger", - "SegmentToMaskByPoint-badger", - "SimpleBoolean-badger", - "StringToFizz-badger", - "TextListToString-badger", - "ToPixel-badger", - "ToPixelV2-badger", - "TrimTransparentEdges-badger", - "VideoCutFromDir-badger", - "VideoToFrame-badger", - "deleteDir-badger", - "findCenterOfMask-badger", - "getImageSide-badger", - "getParentDir-badger", - "mkdir-badger" - ], - { - "title_aux": "ComfyUI_BadgerTools" - } - ], - "https://github.com/AbyssBadger0/ComfyUI_Kolors_awesome_prompts": [ - [ - "KolorsAwesomePrompts" - ], - { - "title_aux": "Kolors Awesome Prompts" - } - ], - "https://github.com/Acly/comfyui-inpaint-nodes": [ - [ - "INPAINT_ApplyFooocusInpaint", - "INPAINT_DenoiseToCompositingMask", - "INPAINT_ExpandMask", - "INPAINT_InpaintWithModel", - "INPAINT_LoadFooocusInpaint", - "INPAINT_LoadInpaintModel", - "INPAINT_MaskedBlur", - "INPAINT_MaskedFill", - "INPAINT_VAEEncodeInpaintConditioning" - ], - { - "title_aux": "ComfyUI Inpaint Nodes" - } - ], - "https://github.com/Acly/comfyui-tooling-nodes": [ - [ - "ETN_ApplyMaskToImage", - "ETN_ApplyReferenceImages", - "ETN_AttentionMask", - "ETN_BackgroundRegion", - "ETN_CropImage", - "ETN_DefineRegion", - "ETN_ExtractImageTile", - "ETN_ExtractMaskTile", - "ETN_GenerateTileMask", - "ETN_KritaCanvas", - "ETN_KritaImageLayer", - "ETN_KritaMaskLayer", - "ETN_KritaOutput", - "ETN_KritaSelection", - "ETN_KritaSendText", - "ETN_KritaStyle", - "ETN_ListRegionMasks", - "ETN_LoadImageBase64", - "ETN_LoadMaskBase64", - "ETN_MergeImageTile", - "ETN_NSFWFilter", - "ETN_Parameter", - "ETN_ReferenceImage", - "ETN_SendImageWebSocket", - "ETN_TileLayout", - "ETN_Translate" - ], - { - "title_aux": "ComfyUI Nodes for External Tooling" - } - ], - "https://github.com/AconexOfficial/ComfyUI_GOAT_Nodes": [ - [ - "Advanced_Upscale_Image_Using_Model", - "Capped_Float_Positive", - "Capped_Int_Positive", - "Embedding_Selector", - "Fast_Color_Match", - "Fast_Film_Grain", - "Get_Side_Length_Of_Image", - "Image_Crop", - "Image_Dimensions", - "Image_Stitch", - "Image_Tiler", - "Image_Untiler", - "Int_Divide_Rounded", - "Sampler_Settings", - "Smart_Seed", - "Triple_Prompt" - ], - { - "title_aux": "ComfyUI GOAT Nodes" - } - ], - "https://github.com/Aerse/ComfyUI-Seed-Nodes": [ - [ - "Seed-Nodes: ImagePixelator", - "Seed-Nodes: ImageTo3D", - "Seed-Nodes: LoadImage", - "Seed-Nodes: LoadMultipleImages", - "Seed-Nodes: SLICPixelator" - ], - { - "title_aux": "ComfyUI-Seed-Nodes" - } - ], - "https://github.com/AhBumm/ComfyUI_BillBum_Nodes": [ - [ - "BillBum_Modified_Base64_Url2Data_Node", - "BillBum_Modified_Base64_Url2Img_Node", - "BillBum_Modified_Dalle_API_Node", - "BillBum_Modified_DropoutToken_Node", - "BillBum_Modified_Flux_API_Node", - "BillBum_Modified_Ideogram_API_Node", - "BillBum_Modified_ImageSplit_Node", - "BillBum_Modified_Image_API_Call_Node", - "BillBum_Modified_LLM_API_Node", - "BillBum_Modified_Recraft_API_Node", - "BillBum_Modified_RegText_Node", - "BillBum_Modified_SD3_API_Node", - "BillBum_Modified_Structured_LLM_Node(Imperfect)", - "BillBum_Modified_Together_API_Node", - "BillBum_Modified_VisionLM_API_Node", - "BillBum_Modified_img2b64_url_Node", - "BillBum_NonSysPrompt_VLM_API_Node", - "Input_Text", - "Text_Concat" - ], - { - "nodename_pattern": "\\(BillBum\\)$", - "title_aux": "Customizable API Call Nodes by BillBum" - } - ], - "https://github.com/AiMiDi/ComfyUI-Aimidi-nodes": [ - [ - "Add Tag", - "Clear Tag", - "Load Images Pair Batch", - "Merge Tag", - "Move Tag To Top", - "Reserve Tag", - "Save Images Pair" - ], - { - "title_aux": "ComfyUI-Aimidi-nodes" - } - ], - "https://github.com/AkashKarnatak/ComfyUI_faishme": [ - [ - "Faishme Debug", - "Faishme Mannequin to Model Loader", - "Faishme Moondream", - "Load Fashion Model" - ], - { - "title_aux": "ComfyUI_faishme" - } - ], - "https://github.com/Aksaz/comfyui-seamless-clone": [ - [ - "Seamless Clone" - ], - { - "title_aux": "seamless-clone-comfyui" - } - ], - "https://github.com/AlekPet/ComfyUI_Custom_Nodes_AlekPet": [ - [ - "ArgosTranslateCLIPTextEncodeNode", - "ArgosTranslateTextNode", - "ChatGLM4InstructMediaNode", - "ChatGLM4InstructNode", - "ChatGLM4TranslateCLIPTextEncodeNode", - "ChatGLM4TranslateTextNode", - "ColorsCorrectNode", - "DeepTranslatorCLIPTextEncodeNode", - "DeepTranslatorTextNode", - "GoogleTranslateCLIPTextEncodeNode", - "GoogleTranslateTextNode", - "HexToHueNode", - "IDENode", - "PainterNode", - "PoseNode", - "PreviewTextNode" - ], - { - "title_aux": "AlekPet/ComfyUI_Custom_Nodes_AlekPet" - } - ], - "https://github.com/Alvaroeai/ComfyUI-Text2Json": [ - [ - "TextToJson" - ], - { - "title_aux": "ComfyUI-Text2Json" - } - ], - "https://github.com/Amorano/Jovi_GLSL": [ - [ - "BLEND LINEAR (JOV_GL)", - "COLOR CONVERSION (JOV_GL)", - "COLOR PALETTE (JOV_GL)", - "CONICAL GRADIENT (JOV_GL)", - "DIRECTIONAL WARP (JOV_GL)", - "FILTER RANGE (JOV_GL)", - "GRAYSCALE (JOV_GL)", - "HSV ADJUST (JOV_GL)", - "INVERT (JOV_GL)", - "MIN MAX (JOV_GL)", - "NOISE PERLIN (JOV_GL)", - "NOISE SIMPLEX (JOV_GL)", - "NOISE WORLEY (JOV_GL)", - "NORMAL (JOV_GL)", - "NORMAL BLEND (JOV_GL)", - "PIXELATE (JOV_GL)", - "POSTERIZE (JOV_GL)", - "SOBEL (JOV_GL)", - "TRANSFORM (JOV_GL)" - ], - { - "title_aux": "Jovi_GLSL" - } - ], - "https://github.com/Amorano/Jovi_Measure": [ - [ - "BLUR EFFECT (JOV_MEASURE)", - "SHANNON ENTROPY (JOV_MEASURE)" - ], - { - "title_aux": "Jovi_Measure" - } - ], - "https://github.com/Amorano/Jovi_Spout": [ - [ - "SPOUT READER (JOV_SPOUT)", - "SPOUT WRITER (JOV_SPOUT)" - ], - { - "title_aux": "Jovi_Spout" - } - ], - "https://github.com/Amorano/Jovimetrix": [ - [ - "ADJUST (JOV) \ud83d\udd78\ufe0f", - "AKASHIC (JOV) \ud83d\udcd3", - "ARRAY (JOV) \ud83d\udcda", - "BIT SPLIT (JOV) \u2b44", - "BLEND (JOV) \u2697\ufe0f", - "COLOR BLIND (JOV) \ud83d\udc41\u200d\ud83d\udde8", - "COLOR MATCH (JOV) \ud83d\udc9e", - "COLOR MEANS (JOV) \u3030\ufe0f", - "COLOR THEORY (JOV) \ud83d\udede", - "COMPARISON (JOV) \ud83d\udd75\ud83c\udffd", - "CONSTANT (JOV) \ud83d\udfea", - "CROP (JOV) \u2702\ufe0f", - "DELAY (JOV) \u270b\ud83c\udffd", - "EXPORT (JOV) \ud83d\udcfd", - "FILTER MASK (JOV) \ud83e\udd3f", - "FLATTEN (JOV) \u2b07\ufe0f", - "GLSL (JOV) \ud83c\udf69", - "GLSL BLEND LINEAR (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL COLOR CONVERSION (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL COLOR PALETTE (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL CONICAL GRADIENT (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL DIRECTIONAL WARP (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL FILTER RANGE (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL GRAYSCALE (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL HSV ADJUST (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL INVERT (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL NORMAL (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL NORMAL BLEND (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL POSTERIZE (JOV) \ud83e\uddd9\ud83c\udffd", - "GLSL TRANSFORM (JOV) \ud83e\uddd9\ud83c\udffd", - "GRADIENT MAP (JOV) \ud83c\uddf2\ud83c\uddfa", - "GRAPH (JOV) \ud83d\udcc8", - "IMAGE INFO (JOV) \ud83d\udcda", - "LERP (JOV) \ud83d\udd30", - "MIDI FILTER (JOV) \u2733\ufe0f", - "MIDI FILTER EZ (JOV) \u2747\ufe0f", - "MIDI MESSAGE (JOV) \ud83c\udf9b\ufe0f", - "MIDI READER (JOV) \ud83c\udfb9", - "OP BINARY (JOV) \ud83c\udf1f", - "OP UNARY (JOV) \ud83c\udfb2", - "PIXEL MERGE (JOV) \ud83e\udec2", - "PIXEL SPLIT (JOV) \ud83d\udc94", - "PIXEL SWAP (JOV) \ud83d\udd03", - "QUEUE (JOV) \ud83d\uddc3", - "QUEUE TOO (JOV) \ud83d\uddc3", - "ROUTE (JOV) \ud83d\ude8c", - "SAVE OUTPUT (JOV) \ud83d\udcbe", - "SHAPE GEN (JOV) \u2728", - "SPOUT WRITER (JOV) \ud83c\udfa5", - "STACK (JOV) \u2795", - "STEREOGRAM (JOV) \ud83d\udcfb", - "STEREOSCOPIC (JOV) \ud83d\udd76\ufe0f", - "STREAM READER (JOV) \ud83d\udcfa", - "STREAM WRITER (JOV) \ud83c\udf9e\ufe0f", - "STRINGER (JOV) \ud83e\ude80", - "SWIZZLE (JOV) \ud83d\ude35", - "TEXT GEN (JOV) \ud83d\udcdd", - "THRESHOLD (JOV) \ud83d\udcc9", - "TICK (JOV) \u23f1", - "TRANSFORM (JOV) \ud83c\udfdd\ufe0f", - "VALUE (JOV) \ud83e\uddec", - "WAVE GEN (JOV) \ud83c\udf0a" - ], - { - "author": "Alexander G. Morano", - "description": "Integrates Webcam, MIDI, Spout and GLSL shader support. Animation", - "nodename_pattern": " \\(JOV\\)$", - "title": "Jovimetrix", - "title_aux": "Jovimetrix Composition Nodes" - } - ], - "https://github.com/Anibaaal/ComfyUI-UX-Nodes": [ - [ - "AdvancedCompositeImageMasked", - "BlockLayerStringGenerator", - "BlurNode", - "ColorGeneratorNode", - "DropShadowNode", - "EasyResolutionPicker", - "LerpNode", - "RemoveJSONMarkdownFormatting" - ], - { - "title_aux": "ComfyUI UX Nodes" - } - ], - "https://github.com/AonekoSS/ComfyUI-LoRA-Tuner": [ - [ - "LoraTuner" - ], - { - "title_aux": "ComfyUI-LoRA-Tuner" - } - ], - "https://github.com/AonekoSS/ComfyUI-SimpleCounter": [ - [ - "Simple Counter" - ], - { - "title_aux": "ComfyUI-SimpleCounter" - } - ], - "https://github.com/Apache0ne/ComfyUI-EasyUrlLoader": [ - [ - "EasyUrlLoader" - ], - { - "title_aux": "ComfyUI-EasyUrlLoader" - } - ], - "https://github.com/Apache0ne/SambaNova": [ - [ - "SambaNovaLLMNode" - ], - { - "title_aux": "SambaNova" - } - ], - "https://github.com/ArcherFMY/Diffusion360_ComfyUI": [ - [ - "Diffusion360LoaderImage2Pano", - "Diffusion360LoaderText2Pano", - "Diffusion360Sampler", - "Diffusion360SamplerImage2Pano", - "Diffusion360SamplerText2Pano", - "InputImage", - "InputText", - "VAEDecodeTiledBlended" - ], - { - "title_aux": "Diffusion360_ComfyUI" - } - ], - "https://github.com/ArdeniusAI/ComfyUI-Ardenius": [ - [ - "ARD 4crop Latent", - "ARD 4img Combine", - "ARD 4latent Upscale", - "ARD 4vae Decode", - "ARD Basic Load Image", - "ARD Control Box", - "ARD Counter", - "ARD Dual Prompt", - "ARD Empty Latent Image", - "ARD Float", - "ARD Float To Integer", - "ARD Integer", - "ARD Integer To Float", - "ARD Load Image", - "ARD Math", - "ARD Position", - "ARD Prompt Travel", - "ARD Remainder", - "ARD Resize", - "ARD Save Image", - "ARD Seed", - "ARD Text Box", - "ARD Text Box Counter", - "ARD XY Scripts" - ], - { - "title_aux": "ComfyUI-Ardenius" - } - ], - "https://github.com/ArtBot2023/CharacterFaceSwap": [ - [ - "Color Blend", - "Crop Face", - "Exclude Facial Feature", - "Generation Parameter Input", - "Generation Parameter Output", - "Image Full BBox", - "Load BiseNet", - "Load RetinaFace", - "Mask Contour", - "Segment Face", - "Uncrop Face" - ], - { - "title_aux": "Character Face Swap" - } - ], - "https://github.com/ArtVentureX/comfyui-animatediff": [ - [ - "AnimateDiffCombine", - "AnimateDiffLoraLoader", - "AnimateDiffModuleLoader", - "AnimateDiffSampler", - "AnimateDiffSlidingWindowOptions", - "ImageSizeAndBatchSize", - "LoadVideo" - ], - { - "title_aux": "AnimateDiff" - } - ], - "https://github.com/AshMartian/ComfyUI-DirGir": [ - [ - "Dir_Gir_Looper", - "Dir_Gir_Picker", - "Gir_Image_Nabber" - ], - { - "title_aux": "Dir Gir" - } - ], - "https://github.com/AuroBit/ComfyUI-AnimateAnyone-reproduction": [ - [ - "AnimateAnyone" - ], - { - "title_aux": "ComfyUI-AnimateAnyone-reproduction" - } - ], - "https://github.com/AustinMroz/ComfyUI-DynamicOversampling": [ - [ - "DynamicSampler", - "MeasuredSampler", - "ResolveMaskPromise" - ], - { - "title_aux": "DynamicOversampling" - } - ], - "https://github.com/AustinMroz/ComfyUI-SpliceTools": [ - [ - "LogSigmas", - "RerangeSigmas", - "SpliceDenoised", - "SpliceLatents", - "TemporalSplice" - ], - { - "title_aux": "SpliceTools" - } - ], - "https://github.com/Auttasak-L/ComfyUI-ImageCropper": [ - [ - "ImageCropper" - ], - { - "title_aux": "ComfyUI-ImageCropper" - } - ], - "https://github.com/BAIS1C/ComfyUI_RSS_Feed_Reader": [ - [ - "RSSFeedNode" - ], - { - "title_aux": "ComfyUI_RSS_Feed_Reader" - } - ], - "https://github.com/BIMer-99/ComfyUI_FishSpeech_EX": [ - [ - "AudioToPrompt", - "LoadVQGAN", - "Prompt2Semantic", - "SaveAudioToMp3", - "Semantic2Audio" - ], - { - "title_aux": "ComfyUI_FishSpeech_EX" - } - ], - "https://github.com/BIMer-99/Comfyui_Hunyuan3D_EX": [ - [ - "GenerateSixViews", - "Hunyuan3DNode", - "RemoveBackground", - "SquareImage", - "TriMeshViewer" - ], - { - "title_aux": "Comfyui_Hunyuan3D_EX" - } - ], - "https://github.com/BXYMartin/ComfyUI-InstantIDUtils": [ - [ - "ListOfImages", - "MultiControlNetConverter", - "NHWC2NCHWTensor", - "NHWCTensor2PIL", - "PIL2NHWCTensor" - ], - { - "title_aux": "ComfyUI-InstantIDUtils" - } - ], - "https://github.com/BZcreativ/ComfyUI-FLUX-TOGETHER-API": [ - [ - "FluxDev_TOGETHER", - "FluxPro11_TOGETHER", - "FluxPro_TOGETHER" - ], - { - "title_aux": "ComfyUI-FLUX-TOGETHER-API" - } - ], - "https://github.com/BadCafeCode/masquerade-nodes-comfyui": [ - [ - "Blur", - "Change Channel Count", - "Combine Masks", - "Constant Mask", - "Convert Color Space", - "Create QR Code", - "Create Rect Mask", - "Cut By Mask", - "Get Image Size", - "Image To Mask", - "Make Image Batch", - "Mask By Text", - "Mask Morphology", - "Mask To Region", - "MasqueradeIncrementer", - "Mix Color By Mask", - "Mix Images By Mask", - "Paste By Mask", - "Prune By Mask", - "Separate Mask Components", - "Unary Image Op", - "Unary Mask Op" - ], - { - "title_aux": "Masquerade Nodes" - } - ], - "https://github.com/Beinsezii/bsz-cui-extras": [ - [ - "BSZAbsoluteHires", - "BSZAspectHires", - "BSZColoredLatentImageXL", - "BSZCombinedHires", - "BSZHueChromaXL", - "BSZInjectionKSampler", - "BSZLatentDebug", - "BSZLatentFill", - "BSZLatentGradient", - "BSZLatentHSVAImage", - "BSZLatentOffsetXL", - "BSZLatentRGBAImage", - "BSZLatentbuster", - "BSZPixelbuster", - "BSZPixelbusterHelp", - "BSZPrincipledConditioning", - "BSZPrincipledSampler", - "BSZPrincipledScale", - "BSZStrangeResample" - ], - { - "title_aux": "bsz-cui-extras" - } - ], - "https://github.com/Bellzs/ComfyUI-LoRA-Assistant": [ - [ - "LoRATriggerLocal" - ], - { - "title_aux": "ComfyUI-LoRA-Assistant" - } - ], - "https://github.com/BenNarum/ComfyUI_CAS": [ - [ - "AttentionToSigmas", - "AttenuatorNode", - "BasicCFGGuider", - "CELU", - "CustomAdvancedSampler", - "CustomLCMCFGPP", - "CustomModelSamplingDiscreteDistilledAncestralCFGPP", - "CustomModelSamplingDiscreteDistilledCFGPP", - "CustomX0AncestralCFGPP", - "CustomX0CFGPP", - "ELU", - "EPSCFGPPScheduler", - "GELU", - "GLU", - "HardTanhScheduler", - "Hardshrink", - "Hardsigmoid", - "Hardswish", - "Hardtanh", - "LatentActivation", - "LatentChannelPresets", - "LatentConvolution", - "LatentFFT", - "LatentFrequencyPresets", - "LatentGlitch", - "LatentMath", - "LatentMathFormulaBuilder", - "LatentMosaic", - "LatentNoisePresets", - "LatentPixelSort", - "LatentSelfAttention", - "LatentTwist", - "LatentValuePresets", - "LatentWarpPresets", - "LeakyReLU", - "LogSigmoid", - "LogSoftmax", - "Mish", - "PReLU", - "RReLU", - "ReLU", - "ReLU6", - "SELU", - "SamplerCustomLCMCFGPP", - "SamplerCustomModelSamplingDiscreteDistilledAncestralCFGPP", - "SamplerCustomModelSamplingDiscreteDistilledCFGPP", - "SamplerCustomX0AncestralCFGPP", - "SamplerCustomX0CFGPP", - "SamplerDPMCFGPP", - "SamplerDynamicCFGPP", - "SamplerEulerAttnCFGPP", - "SamplerEulerStepControlAncestralCFGPP", - "SamplerHeunCFGPP", - "SamplerLCMUpscaleW", - "SamplerLCMUpscaleWCFGPP", - "SamplerLCMUpscaleWGPU", - "SamplerStepSizeControlCFGPP", - "SamplerWeightedCFGPP", - "SiLU", - "Softmax", - "Softmax2D", - "SoftmaxScheduler", - "Softmin", - "Softplus", - "Softshrink", - "Softsign", - "Tanh", - "Tanhshrink", - "Threshold", - "tcd_euler_a_w", - "tcd_w" - ], - { - "title_aux": "ComfyUI_CAS" - } - ], - "https://github.com/BenNarum/SigmaWaveFormNode": [ - [ - "AttenuatorNode", - "FourierFilterNode", - "PhaseLockedLoopNode", - "SigmaWaveFormNode", - "SigmaWaveFormNodeAdvanced", - "SigmaWaveFormNodeSimple" - ], - { - "title_aux": "SigmaWaveFormNodes" - } - ], - "https://github.com/BennyKok/comfyui-deploy": [ - [ - "ComfyDeployOutputImage", - "ComfyDeployWebscoketImageInput", - "ComfyDeployWebscoketImageOutput", - "ComfyUIDeployExternalBoolean", - "ComfyUIDeployExternalCheckpoint", - "ComfyUIDeployExternalFaceModel", - "ComfyUIDeployExternalImage", - "ComfyUIDeployExternalImageAlpha", - "ComfyUIDeployExternalImageBatch", - "ComfyUIDeployExternalLora", - "ComfyUIDeployExternalNumber", - "ComfyUIDeployExternalNumberInt", - "ComfyUIDeployExternalNumberSlider", - "ComfyUIDeployExternalText", - "ComfyUIDeployExternalTextAny", - "ComfyUIDeployExternalVid", - "ComfyUIDeployExternalVideo", - "ComfyUIDeployModelList", - "ComfyUIDeployStringCombine" - ], - { - "author": "BennyKok", - "description": "", - "nickname": "Comfy Deploy", - "title": "comfyui-deploy", - "title_aux": "ComfyUI Deploy" - } - ], - "https://github.com/BetaDoggo/ComfyUI-FastSDCPU": [ - [ - "fastsdcpu", - "fastsdcpu_lcm_models", - "fastsdcpu_loadModel", - "fastsdcpu_vino_models" - ], - { - "title_aux": "ComfyUI-FastSDCPU" - } - ], - "https://github.com/BetaDoggo/ComfyUI-Gatcha-Embedding": [ - [ - "GatchaEmbedding" - ], - { - "title_aux": "Gatcha Embeddings" - } - ], - "https://github.com/BetaDoggo/ComfyUI-VideoPlayer": [ - [ - "AllInOnePlayer", - "ImageToEmoji", - "LoadFrame", - "LoadJPGFrame", - "LoadVideoFrame" - ], - { - "title_aux": "ComfyUI Video Player" - } - ], - "https://github.com/BetaDoggo/ComfyUI-WDV-Nodes": [ - [ - "ModelSamplingWaifuDiffusionV" - ], - { - "title_aux": "neggles/ComfyUI-WDV-Nodes [gist-wrapper]" - } - ], - "https://github.com/BetaDoggo/ComfyUI-YetAnotherSafetyChecker": [ - [ - "YetAnotherSafetyChecker" - ], - { - "title_aux": "ComfyUI YetAnotherSafetyChecker" - } - ], - "https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools": [ - [ - "BTPromptSchedule", - "BTPromptSelector", - "EndQueue", - "ImageTextOverlay", - "Loop", - "LoopEnd", - "LoopStart" - ], - { - "title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI" - } - ], - "https://github.com/Big-Idea-Technology/ComfyUI_LLM_Node": [ - [ - "AdvOptions_Node", - "CodingOptionsNode", - "LLM_Node", - "Output_Node", - "QuantizationConfig_Node" - ], - { - "title_aux": "LLM Node for ComfyUI" - } - ], - "https://github.com/Billius-AI/ComfyUI-Path-Helper": [ - [ - "Add File Name Prefix", - "Add File Name Prefix Advanced", - "Add Folder", - "Add Folder Advanced", - "Create Project Root", - "Join Variables", - "Show Path", - "Show String" - ], - { - "title_aux": "ComfyUI-Path-Helper" - } - ], - "https://github.com/Bin-sam/DynamicPose-ComfyUI": [ - [ - "DynamicPose_Sampler", - "Load_Pose_Guider", - "Load_denoising_unet", - "Load_reference_unet", - "Pose_Guider_Encode", - "align", - "load_pose_model", - "pose_extraction" - ], - { - "title_aux": "DynamicPose-ComfyUI" - } - ], - "https://github.com/Black-Lioness/ComfyUI-PromptUtils": [ - [ - "FilenameGenerator", - "KeywordGenerator" - ], - { - "title_aux": "ComfyUI-PromptUtils" - } - ], - "https://github.com/BlackVortexAI/ComfyUI-BVortexNodes": [ - [ - "BV Conditional ImagePipe Splitter", - "BV Image Caption Saver", - "BV Image Difference Heatmap", - "BV Image Size with Math", - "BV ImagePipe Junction", - "BV ImagePipe Loader", - "BV ImagePipe Merger", - "BV Show LoRA Blocks", - "BV String to Combo", - "BV Upscale Config", - "BV Vector Edit", - "BV Vector Edit Dropdown FLUX", - "BV Vector Edit Range", - "BV Vector Edit Range Dropdown FLUX", - "BV Vector Edit Selector FLUX", - "BV Vector Permutation", - "BV Vector of Length-n", - "BV Vector to String", - "BV Vector to String List" - ], - { - "title_aux": "BV Nodes" - } - ], - "https://github.com/BlakeOne/ComfyUI-CustomScheduler": [ - [ - "CustomScheduler" - ], - { - "title_aux": "ComfyUI CustomScheduler" - } - ], - "https://github.com/BlakeOne/ComfyUI-SchedulerMixer": [ - [ - "SchedulerMixer" - ], - { - "title_aux": "ComfyUI SchedulerMixer" - } - ], - "https://github.com/BlenderNeko/ComfyUI_ADV_CLIP_emb": [ - [ - "BNK_AddCLIPSDXLParams", - "BNK_AddCLIPSDXLRParams", - "BNK_CLIPTextEncodeAdvanced", - "BNK_CLIPTextEncodeSDXLAdvanced" - ], - { - "title_aux": "Advanced CLIP Text Encode" - } - ], - "https://github.com/BlenderNeko/ComfyUI_Cutoff": [ - [ - "BNK_CutoffBasePrompt", - "BNK_CutoffRegionsToConditioning", - "BNK_CutoffRegionsToConditioning_ADV", - "BNK_CutoffSetRegions" - ], - { - "title_aux": "ComfyUI Cutoff" - } - ], - "https://github.com/BlenderNeko/ComfyUI_Noise": [ - [ - "BNK_DuplicateBatchIndex", - "BNK_GetSigma", - "BNK_InjectNoise", - "BNK_NoisyLatentImage", - "BNK_SlerpLatent", - "BNK_Unsampler" - ], - { - "title_aux": "ComfyUI Noise" - } - ], - "https://github.com/BlenderNeko/ComfyUI_SeeCoder": [ - [ - "ConcatConditioning", - "SEECoderImageEncode" - ], - { - "title_aux": "SeeCoder [WIP]" - } - ], - "https://github.com/BlenderNeko/ComfyUI_TiledKSampler": [ - [ - "BNK_TiledKSampler", - "BNK_TiledKSamplerAdvanced" - ], - { - "title_aux": "Tiled sampling for ComfyUI" - } - ], - "https://github.com/Blonicx/ComfyUI-X-Rework": [ - [ - "ClearNode", - "LoadImageURL", - "StopNode", - "UploadImage", - "XSampler", - "XSave" - ], - { - "title_aux": "ComfyUI-Rework-X" - } - ], - "https://github.com/BoyuanJiang/FitDiT-ComfyUI": [ - [ - "FitDiTLoader", - "FitDiTMaskGenerator", - "FitDiTTryOn" - ], - { - "title_aux": "FitDiT[official] - High-fidelity Virtual Try-on" - } - ], - "https://github.com/Bria-AI/ComfyUI-BRIA-API": [ - [ - "BriaEraser", - "BriaGenFill", - "BriaTailoredGen", - "ReimagineNode", - "ShotByImageNode", - "ShotByTextNode", - "TailoredModelInfoNode", - "Text2ImageBaseNode", - "Text2ImageFastNode", - "Text2ImageHDNode" - ], - { - "title_aux": "BRIA AI API nodes" - } - ], - "https://github.com/Burgstall-labs/ComfyUI-BS_Kokoro-onnx": [ - [ - "Kokoro TTS" - ], - { - "title_aux": "ComfyUI-BS_Kokoro-onnx" - } - ], - "https://github.com/CC-BryanOttho/ComfyUI_API_Manager": [ - [ - "APIRequestNode", - "PostImageToAPI", - "TextPromptCombinerNode" - ], - { - "title_aux": "ComfyUI_API_Manager" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-InpaintEasy": [ - [ - "CropByMask", - "ImageAndMaskResizeNode", - "ImageCropMerge", - "InpaintEasyModel" - ], - { - "title_aux": "ComfyUI-InpaintEasy" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-Plus": [ - [ - "MiniCPM3_4B", - "MiniCPM3_4B_GPTQ_Int4", - "MiniCPM_V_2_6", - "MiniCPM_V_2_6_Int4", - "TextDisplay" - ], - { - "author": "CY-CHENYUE", - "description": "Custom nodes for MiniCPM language models in ComfyUI", - "nickname": "MiniCPM-Plus", - "title": "MiniCPM-Plus", - "title_aux": "ComfyUI-MiniCPM-Plus" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-o": [ - [ - "Load MiniCPM Model", - "MiniCPM Image Chat" - ], - { - "title_aux": "ComfyUI-MiniCPM-o" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-Molmo": [ - [ - "Molmo7BDbnb" - ], - { - "title_aux": "ComfyUI-Molmo" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-OmniGenX": [ - [ - "LoadOmniGen" - ], - { - "title_aux": "ComfyUI-OmniGenX" - } - ], - "https://github.com/CY-CHENYUE/ComfyUI-Redux-Prompt": [ - [ - "ReduxPromptStyler" - ], - { - "title_aux": "ComfyUI-Redux-Prompt" - } - ], - "https://github.com/CYBERLOOM-INC/ComfyUI-nodes-hnmr": [ - [ - "CLIPIter", - "Dict2Model", - "GridImage", - "ImageBlend2", - "KSamplerOverrided", - "KSamplerSetting", - "KSamplerXYZ", - "LatentToHist", - "LatentToImage", - "ModelIter", - "RandomLatentImage", - "SaveStateDict", - "SaveText", - "StateDictLoader", - "StateDictMerger", - "StateDictMergerBlockWeighted", - "StateDictMergerBlockWeightedMulti", - "VAEDecodeBatched", - "VAEEncodeBatched", - "VAEIter" - ], - { - "title_aux": "ComfyUI-nodes-hnmr" - } - ], - "https://github.com/Chan-0312/ComfyUI-EasyDeforum": [ - [ - "Easy2DDeforum" - ], - { - "title_aux": "ComfyUI-EasyDeforum" - } - ], - "https://github.com/Chan-0312/ComfyUI-IPAnimate": [ - [ - "IPAdapterAnimate" - ], - { - "title_aux": "ComfyUI-IPAnimate" - } - ], - "https://github.com/Chan-0312/ComfyUI-Prompt-Preview": [ - [ - "SDXLPromptStylerAdvancedPreview", - "SDXLPromptStylerPreview" - ], - { - "title_aux": "ComfyUI-Prompt-Preview" - } - ], - "https://github.com/Chaoses-Ib/ComfyUI_Ib_CustomNodes": [ - [ - "ImageToPIL", - "LoadImageFromPath", - "PILToImage", - "PILToMask" - ], - { - "title_aux": "ComfyUI_Ib_CustomNodes" - } - ], - "https://github.com/Charlweed/image_transceiver": [ - [ - "ImageTransceiver" - ], - { - "title_aux": "ImageTransceiver - ComfyUI" - } - ], - "https://github.com/ChenDarYen/ComfyUI-TimestepShiftModel": [ - [ - "Timestep Shift Model" - ], - { - "title_aux": "ComfyUI-TimestepShiftModel" - } - ], - "https://github.com/ChrisColeTech/ComfyUI-Elegant-Resource-Monitor": [ - [ - "Resource Monitor" - ], - { - "title_aux": "ComfyUI-Elegant-Resource-Monitor" - } - ], - "https://github.com/ChrisColeTech/ComfyUI-Line-counter": [ - [ - "Directory File Counter", - "Simple Number Counter", - "Text File Line Counter" - ], - { - "title_aux": "ComfyUI-Line-counter" - } - ], - "https://github.com/ClownsharkBatwing/RES4LYF": [ - [ - "AdvancedNoise", - "Base64ToConditioning", - "CLIPTextEncodeFluxUnguided", - "ClownInpaint", - "ClownInpaintSimple", - "ClownSampler", - "ClownSamplerAdvanced", - "ClownsharKSampler", - "ClownsharKSamplerAutomation", - "ClownsharKSamplerAutomation_Beta", - "ClownsharKSamplerGuide", - "ClownsharKSamplerGuides", - "ClownsharKSamplerOptions", - "ClownsharKSamplerOptions_SDE_Noise", - "ClownsharkSamplerOptions_FrameWeights", - "Conditioning Recast FP64", - "ConditioningAdd", - "ConditioningAverageScheduler", - "ConditioningMultiply", - "ConditioningOrthoCollin", - "ConditioningToBase64", - "ConditioningTruncate", - "ConditioningZeroAndTruncate", - "EmptyLatentImage64", - "EmptyLatentImageCustom", - "Film Grain", - "FluxGuidanceDisable", - "FluxLoader", - "FluxOrthoCFGPatcher", - "FluxRegionalConditioning", - "FluxRegionalPrompt", - "Frequency Separation Hard Light", - "Frequency Separation Hard Light LAB", - "Image Channels LAB", - "Image Crop Location Exact", - "Image Median Blur", - "Image Pair Split", - "Latent Batcher", - "Latent Match Channelwise", - "Latent Normalize Channels", - "Latent to Cuda", - "LatentBatch_channels", - "LatentBatch_channels_16", - "LatentNoiseBatch_fractal", - "LatentNoiseBatch_gaussian", - "LatentNoiseBatch_gaussian_channels", - "LatentNoiseBatch_perlin", - "LatentNoiseList", - "LatentNoised", - "LatentPhaseMagnitude", - "LatentPhaseMagnitudeMultiply", - "LatentPhaseMagnitudeOffset", - "LatentPhaseMagnitudePower", - "Legacy_ClownSampler", - "Legacy_ClownsharKSampler", - "Legacy_ClownsharKSamplerGuides", - "Legacy_SharkSampler", - "ModelSamplingAdvanced", - "ModelSamplingAdvancedResolution", - "ModelTimestepPatcher", - "PrepForUnsampling", - "ReFluxPatcher", - "SD35Loader", - "SamplerOptions_GarbageCollection", - "SamplerOptions_TimestepScaling", - "SamplerRK_Test", - "Set Precision", - "Set Precision Advanced", - "Set Precision Universal", - "SharkSampler", - "Sigmas Abs", - "Sigmas Add", - "Sigmas Cleanup", - "Sigmas Concat", - "Sigmas DeleteBelowFloor", - "Sigmas DeleteDuplicates", - "Sigmas From Text", - "Sigmas Iteration Karras", - "Sigmas Iteration Polyexp", - "Sigmas Math1", - "Sigmas Math3", - "Sigmas Modulus", - "Sigmas Mult", - "Sigmas Noise Inversion", - "Sigmas Pad", - "Sigmas Power", - "Sigmas Quotient", - "Sigmas Recast", - "Sigmas Rescale", - "Sigmas SetFloor", - "Sigmas Split", - "Sigmas Start", - "Sigmas Truncate", - "Sigmas Unpad", - "Sigmas Variance Floor", - "Sigmas2 Add", - "Sigmas2 Mult", - "SigmasPreview", - "SigmasSchedulePreview", - "StableCascade_StageB_Conditioning64", - "StableCascade_StageC_VAEEncode_Exact", - "StyleModelApplyAdvanced", - "Tan Scheduler", - "Tan Scheduler 2", - "Tan Scheduler 2 Simple", - "TextBox1", - "TextBox3", - "TorchCompileModelFluxAdv", - "UNetSave", - "UltraSharkSampler", - "UltraSharkSampler Tiled", - "UltraSharkSamplerRBTest", - "VAEEncodeAdvanced", - "VGG19StyleTransfer", - "Zampler_Test" - ], - { - "title_aux": "RES4LYF" - } - ], - "https://github.com/Clybius/ComfyUI-Extra-Samplers": [ - [ - "GeometricCFGGuider", - "ImageAssistedCFGGuider", - "MegaCFGGuider", - "SamplerCLYB_4M_SDE_Momentumized", - "SamplerCustomModelMixtureDuo", - "SamplerCustomNoise", - "SamplerCustomNoiseDuo", - "SamplerDPMPP_3M_SDE_DynETA", - "SamplerDPMPP_DualSDE_Momentumized", - "SamplerEulerAncestralDancing_Experimental", - "SamplerLCMCustom", - "SamplerRES_Momentumized", - "SamplerSupreme", - "SamplerTTM", - "ScaledCFGGuider", - "SimpleExponentialScheduler", - "WarmupDecayCFGGuider" - ], - { - "title_aux": "ComfyUI Extra Samplers" - } - ], - "https://github.com/Clybius/ComfyUI-Latent-Modifiers": [ - [ - "Latent Diffusion Mega Modifier" - ], - { - "title_aux": "ComfyUI-Latent-Modifiers" - } - ], - "https://github.com/ComfyUI-JH/ComfyUI-JH-Misc-Nodes": [ - [ - "JHDaisyChainableStringConstantNode", - "JHPreviewImage", - "JHThreeWaySwitchNode", - "JHTwoWaySwitchNode" - ], - { - "title_aux": "JH Misc. Nodes" - } - ], - "https://github.com/CosmicLaca/ComfyUI_Primere_Nodes": [ - [ - "DebugToFile", - "PrimereAestheticCKPTScorer", - "PrimereAnyDetailer", - "PrimereAnyOutput", - "PrimereCKPT", - "PrimereCKPTLoader", - "PrimereCLIPEncoder", - "PrimereClearNetworkTagsPrompt", - "PrimereConceptDataTuple", - "PrimereDiTPurifyPrompt", - "PrimereDynamicParser", - "PrimereEmbedding", - "PrimereEmbeddingHandler", - "PrimereEmbeddingKeywordMerger", - "PrimereEmotionsStyles", - "PrimereFaceAnalyzer", - "PrimereFastSeed", - "PrimereHypernetwork", - "PrimereImageSegments", - "PrimereKSampler", - "PrimereLLMEnhancer", - "PrimereLORA", - "PrimereLYCORIS", - "PrimereLatentNoise", - "PrimereLensStyles", - "PrimereLoraKeywordMerger", - "PrimereLoraStackMerger", - "PrimereLycorisKeywordMerger", - "PrimereLycorisStackMerger", - "PrimereMetaCollector", - "PrimereMetaDistributor", - "PrimereMetaDistributorStage2", - "PrimereMetaHandler", - "PrimereMetaSave", - "PrimereMetaTupleCollector", - "PrimereMidjourneyStyles", - "PrimereModelConceptSelector", - "PrimereModelKeyword", - "PrimereNetworkDataCollector", - "PrimereNetworkTagLoader", - "PrimerePreviewImage", - "PrimerePrompt", - "PrimerePromptOrganizer", - "PrimerePromptOrganizerCSV", - "PrimerePromptSwitch", - "PrimereRefinerPrompt", - "PrimereResolution", - "PrimereResolutionCoordinatorMPX", - "PrimereResolutionMultiplierMPX", - "PrimereSamplersSteps", - "PrimereSeed", - "PrimereStyleLoader", - "PrimereStylePile", - "PrimereTextOutput", - "PrimereUpscaleModel", - "PrimereVAE", - "PrimereVAELoader", - "PrimereVisualCKPT", - "PrimereVisualEmbedding", - "PrimereVisualHypernetwork", - "PrimereVisualLORA", - "PrimereVisualLYCORIS", - "PrimereVisualPromptOrganizerCSV", - "PrimereVisualStyle" - ], - { - "title_aux": "Primere nodes for ComfyUI" - } - ], - "https://github.com/CpreForEver/CFE_comfyui": [ - [ - "CFE Aspect Ratio", - "CFE FLUX Guidance", - "CFE FLUX Sampler", - "CFE FLUX Sampler (Pipe)", - "CFE Flux In Pipe", - "CFE Flux Out Pipe", - "CFE Lora Params", - "CFE Scheduler", - "CFE Sigma Sampler", - "CFE Sigma Sampler Strings" - ], - { - "title_aux": "CFE_comfyui" - } - ], - "https://github.com/Creeper-MZ/comfyui_nai_api": [ - [ - "NovelAI", - "NovelAI_Declutter_Preprocessor", - "NovelAI_Lineart_Processor", - "NovelAI_Prompt", - "NovelAI_Sketch_Processor", - "NovelAI_VIBE" - ], - { - "title_aux": "comfyui_nai_api" - } - ], - "https://github.com/CyanAutumn/ComfyUi_Random_Manage_Cyan": [ - [ - "Random Prompt Cyan", - "Remove Prompt Cyan" - ], - { - "title_aux": "ComfyUi Random Manage Cyan" - } - ], - "https://github.com/Cyber-BCat/ComfyUI_Auto_Caption": [ - [ - "Auto Caption", - "Joy Model load", - "LoadManyImages" - ], - { - "title_aux": "ComfyUI_Auto_Caption" - } - ], - "https://github.com/Cyber-Blacat/ComfyUI-Yuan": [ - [ - "Black and white", - "Image Judgment", - "ImageMinusMask", - "Light or Dark", - "Load Random Images", - "Mask Preprocess Morphology", - "PhotoShop Transfer", - "Yuan" - ], - { - "title_aux": "ComfyUI-Yuan" - } - ], - "https://github.com/Cyberschorsch/ComfyUI-checkpoint-config-loader": [ - [ - "Checkpoint Loader Config" - ], - { - "title_aux": "ComfyUI Checkpoint Loader Config" - } - ], - "https://github.com/DJ-Tribefull/Comfyui_FOCUS_nodes": [ - [ - "Control Pipe (DJ Nodes)", - "Global Seed (DJ Nodes)", - "KSampler Settings (DJ Nodes)", - "Model Unloader (DJ Nodes)", - "Prompt Box (DJ Nodes)", - "SDXL All-In-One (DJ Nodes)", - "SDXL Control Module (DJ Nodes)", - "SDXL Preprocess (DJ Nodes)", - "Style Injector (DJ Nodes)", - "Style Selector (DJ Nodes)", - "Wildcard Processor (DJ Nodes)" - ], - { - "title_aux": "Comfyui FOCUS nodes" - } - ], - "https://github.com/Danand/ComfyUI-ComfyCouple": [ - [ - "Attention couple", - "Comfy Couple" - ], - { - "author": "Rei D.", - "description": "If you want to draw two different characters together without blending their features, so you could try to check out this custom node.", - "nickname": "Danand", - "title": "Comfy Couple", - "title_aux": "Comfy Couple" - } - ], - "https://github.com/DanielHabib/ComfyUI-Voxels": [ - [ - "ImageBatchToImageList", - "MaskBatchToMaskList", - "MeshToVoxel", - "VoxelBlockLoader", - "VoxelBlockSaver", - "VoxelBlocksIntoVoxelVideo", - "VoxelVideoAPIInputNode", - "VoxelVideoLoader", - "VoxelVideoPreview", - "VoxelVideoViewer", - "VoxelViewer", - "VoxelizeMesh" - ], - { - "title_aux": "ComfyUI-Voxels" - } - ], - "https://github.com/DareFail/ComfyUI-Roboflow": [ - [ - "CustomWorkflow_1image", - "LabelEmotions", - "RemoveBackground" - ], - { - "title_aux": "ComfyUI-Roboflow" - } - ], - "https://github.com/DarioFT/ComfyUI-VideoDirCombiner": [ - [ - "VideoDirCombiner" - ], - { - "title_aux": "ComfyUI-VideoDirCombiner" - } - ], - "https://github.com/DataCTE/prompt_injection": [ - [ - "AdvancedPromptInjection", - "PromptInjection", - "SVDPromptInjection", - "SimplePromptInjection" - ], - { - "title_aux": "Prompt Injection Node for ComfyUI" - } - ], - "https://github.com/Dayuppy/ComfyUI-DiscordWebhook": [ - [ - "DiscordPostViaWebhook", - "DiscordSetWebhook", - "Set Discord Webhook", - "Use Discord Webhook" - ], - { - "author": "Dayuppy", - "description": "A very simple Discord webhook integration node for ComfyUI that lets you post images and text.", - "nickname": "DiscordWebhook", - "title": "Discord Webhook", - "title_aux": "Discord Webhook" - } - ], - "https://github.com/DeJoker/pipeline-parallel-comfy": [ - [ - "PipelineParallel" - ], - { - "title_aux": "Pipeline Parallel ComfyUI" - } - ], - "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": [ - [], - { - "author": "Derfuu", - "description": "Pack of simple (or not) and modded nodes for scaling images/latents, editing numbers or text. Automate calculations depending on image sizes or any other thing you want. Or randomize any number in your workflow. Debug node included.", - "nickname": "Derfuu simple/modded Nodes", - "nodename_pattern": "^DF_", - "title": "Derfuu simple/modded Nodes", - "title_aux": "Derfuu_ComfyUI_ModdedNodes" - } - ], - "https://github.com/DesertPixelAi/ComfyUI-Desert-Pixel-Nodes": [ - [ - "DP 10 String Switch", - "DP 2 String Switch", - "DP 5 Find And Replace", - "DP 5 String Switch", - "DP Add Weight To String Sdxl", - "DP Advanced Weight String Sdxl", - "DP Animation Calculator 10 Inputs", - "DP Animation Calculator 5 Inputs", - "DP Art Style Generator", - "DP Aspect Ratio Picker", - "DP Big Letters", - "DP Broken Token", - "DP Clean Prompt", - "DP Clean Prompt Travel", - "DP Combo Controller", - "DP Condition Mixer", - "DP ControlNet Apply Advanced", - "DP Crazy Prompt Mixer", - "DP Create Json File", - "DP Custom Aspect Ratio", - "DP Diff Int 8step Selector", - "DP Draggable Floats 1", - "DP Draggable Floats 2", - "DP Draggable Floats 3", - "DP Fast Slow Motion", - "DP Five Lora", - "DP Five Lora Random", - "DP Image And String Pairs Switch", - "DP Image Color Analyzer", - "DP Image Color Analyzer Small", - "DP Image Color Effect", - "DP Image Effect Processor", - "DP Image Effect Processor Small", - "DP Image Empty Latent Switch Flux", - "DP Image Empty Latent Switch SDXL", - "DP Image Slide Show", - "DP Image Strip", - "DP Image Switch 10", - "DP Image Switch 3", - "DP Image Switch 5", - "DP Int 0-1000", - "DP Int 0-1000 4 Step", - "DP Int 0-1000 8 Step", - "DP Line Cycler", - "DP Load Checkpoint With Info", - "DP Load Controlnet Model With Name", - "DP Load Dual CLIP With Info", - "DP Load Image Effects", - "DP Load Image Effects Small", - "DP Load Image Minimal", - "DP Load UNET With Info", - "DP Logo Animator", - "DP Logo Animator Advanced", - "DP Lora Random Strength Controller", - "DP Lora Strength Controller", - "DP Lora Strength Stepper", - "DP Mask Settings", - "DP Prompt Inverter", - "DP Prompt Manager", - "DP Prompt Manager Small", - "DP Prompt Mode Controller", - "DP Prompt Styler", - "DP Prompt Token Compressor", - "DP Random Character", - "DP Random Crazy Prompt Generator", - "DP Random Logo Style Generator", - "DP Random Min Max", - "DP Random Mode Controller", - "DP Random Mode Switch", - "DP Random Psychedelic Punk Generator", - "DP Random Superhero Prompt Generator", - "DP Random Vehicle Generator", - "DP Sampler", - "DP Save Preview Image", - "DP Set New Model Folder Link", - "DP String Text", - "DP String Text With Weight", - "DP String With Switch", - "DP Strings Connector", - "DP Strip Edge Masks", - "DP Switch Controller", - "DP Text Preview", - "DP Transition Frames Selector", - "DP Video Effect Receiver", - "DP Video Effect Sender", - "DP Video Flicker", - "DP Video Looper", - "DP Video Transition", - "DP_Crazy_Prompt_Mixer", - "DP_Logo_Animator_Advanced", - "DP_Lora_Strength_Stepper", - "DP_Prompt_Inverter", - "DP_Strings_Connector" - ], - { - "title_aux": "ComfyUI-Desert-Pixel-Nodes" - } - ], - "https://github.com/Dobidop/ComfyStereo": [ - [ - "LazyStereo", - "StereoImageNode" - ], - { - "title_aux": "Dobidop ComfyStereo" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-BEN": [ - [ - "BackgroundEraseNetwork" - ], - { - "title_aux": "ComfyUI BEN - Background Erase Network" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-MediaMixer": [ - [ - "FinalFrameSelector", - "FirstFrameSelector", - "PromptJournal", - "ReverseFrameSequence", - "VideoMerge", - "YouTubeVideoDownloader" - ], - { - "title_aux": "MediaMixer" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-Schedulizer": [ - [ - "prompt_schedule_converter", - "whisper_node" - ], - { - "title_aux": "Schedulizer" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-SnakeOil": [ - [ - "NegativeLoRALoader" - ], - { - "title_aux": "ComfyUI-SnakeOil" - } - ], - "https://github.com/DoctorDiffusion/ComfyUI-basic-pitch": [ - [ - "AudioToMidi", - "SaveMidi" - ], - { - "title_aux": "ComfyUI-basic-pitch" - } - ], - "https://github.com/DrMWeigand/ComfyUI-StereoVision": [ - [ - "AutostereogramGenerator", - "StereoscopicGenerator" - ], - { - "title_aux": "StereoVision Plugin for ComfyUI" - } - ], - "https://github.com/DrMWeigand/ComfyUI_ColorImageDetection": [ - [ - "LABColorDetection", - "RGBColorDetection" - ], - { - "title_aux": "ComfyUI Color Detection Nodes" - } - ], - "https://github.com/DraconicDragon/ComfyUI-Venice-API": [ - [ - "FluxPro11_TOGETHER", - "FluxPro_TOGETHER", - "GenerateImage_VENICE", - "GenerateText_VENICE", - "UpscaleImage_VENICE", - "testaaaaa" - ], - { - "title_aux": "ComfyUI-Venice-API" - } - ], - "https://github.com/Eagle-CN/ComfyUI-Addoor": [ - [ - "AD_AnyFileList", - "AD_BatchImageLoadFromDir", - "AD_CSVPromptStyler", - "AD_CSVReader", - "AD_CSVTranslator", - "AD_DeleteLocalAny", - "AD_FluxTrainStepMath", - "AD_HFDownload", - "AD_ImageDrawRectangleSimple", - "AD_ImageIndexer", - "AD_ImageSaver", - "AD_LoadImageAdvanced", - "AD_PromptReplace", - "AD_TextIndexer", - "AD_TextListToString", - "AD_TextSaver", - "AD_TxtToCSVCombiner", - "AD_ZipSave", - "AD_advanced-padding", - "AD_color-image", - "AD_image-concat", - "AD_image-resize", - "AD_mockup-maker", - "AD_poster-maker", - "AD_prompt-saver", - "ImageCaptioner", - "ImageResize", - "Incrementer \ud83e\udeb4", - "TextAppendNode", - "Width and height for scaling image to ideal resolution \ud83e\udeb4", - "Width and height from aspect ratio \ud83e\udeb4", - "YANC.MultilineString", - "comfyui-easy-padding", - "image concat mask" - ], - { - "author": "ComfyUI Addoor", - "description": "Save prompts to CSV file with customizable naming pattern", - "title": "ComfyUI-PromptSaver", - "title_aux": "ComfyUI-Addoor" - } - ], - "https://github.com/EeroHeikkinen/ComfyUI-eesahesNodes": [ - [ - "InstantX Flux Union ControlNet Loader" - ], - { - "author": "eesahe", - "description": "InstantX's Flux union ControlNet loader and implementation", - "nickname": "eesahesNodes", - "title": "eesahe's Nodes", - "title_aux": "ComfyUI-eesahesNodes" - } - ], - "https://github.com/Elaine-chennn/comfyui-overlay-media": [ - [ - "OverlayMediaNode", - "VideoUpload" - ], - { - "title_aux": "ComfyUI Overlay Media Node" - } - ], - "https://github.com/Electrofried/ComfyUI-OpenAINode": [ - [ - "OpenAINode" - ], - { - "title_aux": "OpenAINode" - } - ], - "https://github.com/EllangoK/ComfyUI-post-processing-nodes": [ - [ - "ArithmeticBlend", - "AsciiArt", - "Blend", - "Blur", - "CannyEdgeMask", - "ChromaticAberration", - "ColorCorrect", - "ColorTint", - "Dissolve", - "Dither", - "DodgeAndBurn", - "FilmGrain", - "Glow", - "HSVThresholdMask", - "KMeansQuantize", - "KuwaharaBlur", - "Parabolize", - "PencilSketch", - "PixelSort", - "Pixelize", - "Quantize", - "Sharpen", - "SineWave", - "Solarize", - "Vignette" - ], - { - "title_aux": "ComfyUI-post-processing-nodes" - } - ], - "https://github.com/EnragedAntelope/ComfyUI-ConstrainResolution": [ - [ - "ConstrainResolution" - ], - { - "title_aux": "ComfyUI-ConstrainResolution" - } - ], - "https://github.com/EnragedAntelope/ComfyUI-Doubutsu-Describer": [ - [ - "DoubutsuDescriber" - ], - { - "title_aux": "ComfyUI-Doubutsu-Describer" - } - ], - "https://github.com/EnragedAntelope/ComfyUI-EACloudNodes": [ - [ - "GroqNode", - "OpenRouterModels", - "OpenrouterNode" - ], - { - "title_aux": "ComfyUI-EACloudNodes" - } - ], - "https://github.com/EvilBT/ComfyUI_SLK_joy_caption_two": [ - [ - "Batch_joy_caption_two", - "Batch_joy_caption_two_advanced", - "Joy_caption_two", - "Joy_caption_two_advanced", - "Joy_caption_two_load", - "Joy_extra_options" - ], - { - "title_aux": "JoyCaptionAlpha Two for ComfyUI" - } - ], - "https://github.com/Excidos/ComfyUI-Documents": [ - [ - "ChunkRouter", - "DocumentLoader", - "ImageSelector", - "PDFPageSplitter", - "PDFToImage", - "TextChunker" - ], - { - "title_aux": "ComfyUI-Documents" - } - ], - "https://github.com/Excidos/ComfyUI-Lumina-Next-SFT-DiffusersWrapper": [ - [ - "LuminaDiffusersNode" - ], - { - "title_aux": "ComfyUI-Lumina-Next-SFT-DiffusersWrapper" - } - ], - "https://github.com/ExponentialML/ComfyUI_ModelScopeT2V": [ - [ - "ModelScopeT2VLoader" - ], - { - "title_aux": "ComfyUI_ModelScopeT2V" - } - ], - "https://github.com/ExponentialML/ComfyUI_Native_DynamiCrafter": [ - [ - "DynamiCrafterLoader", - "DynamiCrafterProcessor" - ], - { - "title_aux": "ComfyUI - Native DynamiCrafter" - } - ], - "https://github.com/ExponentialML/ComfyUI_VisualStylePrompting": [ - [ - "ApplyVisualStyle" - ], - { - "title_aux": "ComfyUI_VisualStylePrompting" - } - ], - "https://github.com/ExterminanzHS/Gecco-Discord-Autosend": [ - [ - "GeccoAutosend", - "GeccoImageSave", - "GeccoSelectchannel" - ], - { - "title_aux": "Gecco Discord Autosend" - } - ], - "https://github.com/Extraltodeus/ComfyUI-AutomaticCFG": [ - [ - "Automatic CFG", - "Automatic CFG - Advanced", - "Automatic CFG - Attention modifiers", - "Automatic CFG - Attention modifiers tester", - "Automatic CFG - Custom attentions", - "Automatic CFG - Excellent attention", - "Automatic CFG - Negative", - "Automatic CFG - Post rescale only", - "Automatic CFG - Preset Loader", - "Automatic CFG - Unpatch function", - "Automatic CFG - Warp Drive", - "SAG delayed activation", - "Temperature separate settings CLIP SDXL", - "Temperature settings CLIP", - "Temperature settings SD 1.5", - "Temperature settings SDXL", - "Zero Uncond CFG - standalone patch (incompatible with the others)" - ], - { - "title_aux": "ComfyUI-AutomaticCFG" - } - ], - "https://github.com/Extraltodeus/LoadLoraWithTags": [ - [ - "LoraLoaderTagsQuery" - ], - { - "title_aux": "LoadLoraWithTags" - } - ], - "https://github.com/Extraltodeus/Skimmed_CFG": [ - [ - "Skimmed CFG", - "Skimmed CFG - Clean Skim", - "Skimmed CFG - Difference CFG", - "Skimmed CFG - Timed flip", - "Skimmed CFG - linear interpolation", - "Skimmed CFG - linear interpolation dual scales", - "Skimmed CFG - replace" - ], - { - "title_aux": "DistanceSampler" - } - ], - "https://github.com/Extraltodeus/Stable-Diffusion-temperature-settings": [ - [ - "CLIP Temperature", - "Unet Temperature" - ], - { - "title_aux": "Stable-Diffusion-temperature-settings" - } - ], - "https://github.com/Extraltodeus/Uncond-Zero-for-ComfyUI": [ - [ - "Conditioning combine positive and negative", - "Conditioning crop or fill", - "Uncond Zero", - "interrupt on NaN" - ], - { - "title_aux": "Uncond-Zero-for-ComfyUI" - } - ], - "https://github.com/Extraltodeus/Vector_Sculptor_ComfyUI": [ - [ - "CLIP Vector Sculptor text encode", - "Conditioning (Average keep magnitude)", - "Conditioning (Slerp)", - "Conditioning SDXL merge clip_g / clip_l", - "Conditioning normalize magnitude to empty" - ], - { - "title_aux": "Vector_Sculptor_ComfyUI" - } - ], - "https://github.com/Extraltodeus/noise_latent_perlinpinpin": [ - [ - "NoisyLatentPerlin", - "NoisyLatentPerlin16ch" - ], - { - "title_aux": "noise latent perlinpinpin" - } - ], - "https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler": [ - [ - "Aligned Scheduler", - "Gaussian Tail Scheduler", - "Get sigmas as float", - "Graph sigmas", - "Manual scheduler", - "Merge many sigmas by average", - "Merge sigmas by average", - "Merge sigmas gradually", - "Multiply sigmas", - "Output min/max sigmas", - "Split and concatenate sigmas", - "The Golden Scheduler" - ], - { - "title_aux": "sigmas_tools_and_the_golden_scheduler" - } - ], - "https://github.com/Fannovel16/ComfyUI-Frame-Interpolation": [ - [ - "AMT VFI", - "CAIN VFI", - "FILM VFI", - "FLAVR VFI", - "GMFSS Fortuna VFI", - "IFRNet VFI", - "IFUnet VFI", - "KSampler Gradually Adding More Denoise (efficient)", - "M2M VFI", - "Make Interpolation State List", - "RIFE VFI", - "STMFNet VFI", - "Sepconv VFI", - "VFI FloatToInt" - ], - { - "title_aux": "ComfyUI Frame Interpolation" - } - ], - "https://github.com/Fannovel16/ComfyUI-MagickWand": [ - [ - "ImageMagick Adaptive Blur", - "ImageMagick Adaptive Resize", - "ImageMagick Adaptive Sharpen", - "ImageMagick Adaptive Threshold", - "ImageMagick Auto Gamma", - "ImageMagick Auto Level", - "ImageMagick Auto Orient", - "ImageMagick Auto Threshold", - "ImageMagick Blue Shift", - "ImageMagick Blur", - "ImageMagick Brightness Contrast", - "ImageMagick Canny", - "ImageMagick Charcoal", - "ImageMagick Chop", - "ImageMagick Clahe", - "ImageMagick Clamp", - "ImageMagick Coalesce", - "ImageMagick Color Decision List", - "ImageMagick Color Matrix", - "ImageMagick Combine", - "ImageMagick Concat", - "ImageMagick Contrast", - "ImageMagick Contrast Stretch", - "ImageMagick Crop", - "ImageMagick Cycle Color Map", - "ImageMagick Decipher", - "ImageMagick Despeckle", - "ImageMagick Distort", - "ImageMagick Edge", - "ImageMagick Emboss", - "ImageMagick Encipher", - "ImageMagick Enhance", - "ImageMagick Equalize", - "ImageMagick Evaluate", - "ImageMagick Extent", - "ImageMagick Flip", - "ImageMagick Flop", - "ImageMagick Forward Fourier Transform", - "ImageMagick Function", - "ImageMagick Gamma", - "ImageMagick Gaussian Blur", - "ImageMagick Hough Lines", - "ImageMagick Implode", - "ImageMagick Kmeans", - "ImageMagick Kuwahara", - "ImageMagick Level", - "ImageMagick Levelize", - "ImageMagick Linear Stretch", - "ImageMagick Liquid Rescale", - "ImageMagick Local Contrast", - "ImageMagick Magnify", - "ImageMagick Mean Shift", - "ImageMagick Merge Layers", - "ImageMagick Mode", - "ImageMagick Modulate", - "ImageMagick Morphology", - "ImageMagick Motion Blur", - "ImageMagick Negate", - "ImageMagick Noise", - "ImageMagick Normalize", - "ImageMagick Oil Paint", - "ImageMagick Ordered Dither", - "ImageMagick Polynomial", - "ImageMagick Posterize", - "ImageMagick Quantize", - "ImageMagick Random Threshold", - "ImageMagick Range Threshold", - "ImageMagick Resample", - "ImageMagick Resize", - "ImageMagick Roll", - "ImageMagick Rotational Blur", - "ImageMagick Sample", - "ImageMagick Scale", - "ImageMagick Selective Blur", - "ImageMagick Sepia Tone", - "ImageMagick Shade", - "ImageMagick Shadow", - "ImageMagick Sharpen", - "ImageMagick Shave", - "ImageMagick Sigmoidal Contrast", - "ImageMagick Sketch", - "ImageMagick Smush", - "ImageMagick Solarize", - "ImageMagick Splice", - "ImageMagick Spread", - "ImageMagick Statistic", - "ImageMagick Swirl", - "ImageMagick Threshold", - "ImageMagick Thumbnail", - "ImageMagick Transform", - "ImageMagick Transform Colorspace", - "ImageMagick Transparentize", - "ImageMagick Transpose", - "ImageMagick Transverse", - "ImageMagick Unsharp Mask", - "ImageMagick Vignette", - "ImageMagick Wave", - "ImageMagick Wavelet Denoise", - "ImageMagick White Balance" - ], - { - "title_aux": "ComfyUI-MagickWand" - } - ], - "https://github.com/Fannovel16/ComfyUI-MotionDiff": [ - [ - "EmptyMotionData", - "ExportSMPLTo3DSoftware", - "Export_SMPLMultipleSubjects_To_3DSoftware", - "Human4D_Img2SMPL", - "Humans4DLoader", - "MotionCLIPTextEncode", - "MotionDataVisualizer", - "MotionDiffLoader", - "MotionDiffSimpleSampler", - "RenderMultipleSubjectsSMPLMesh", - "RenderSMPLMesh", - "Render_OpenPose_From_SMPL_Mesh_Multiple_Subjects", - "SMPLLoader", - "SMPLShapeParameters", - "SaveSMPL", - "SmplifyMotionData", - "SpectreFaceReconLoader", - "SpectreImg2SMPL", - "mgpt_model_loader", - "mgpt_t2m" - ], - { - "title_aux": "ComfyUI MotionDiff" - } - ], - "https://github.com/Fannovel16/ComfyUI-Video-Matting": [ - [ - "BRIAAI Matting", - "Robust Video Matting" - ], - { - "title_aux": "ComfyUI-Video-Matting" - } - ], - "https://github.com/Fannovel16/comfyui_controlnet_aux": [ - [ - "AIO_Preprocessor", - "AnimalPosePreprocessor", - "AnimeFace_SemSegPreprocessor", - "AnimeLineArtPreprocessor", - "AnyLineArtPreprocessor_aux", - "BAE-NormalMapPreprocessor", - "BinaryPreprocessor", - "CannyEdgePreprocessor", - "ColorPreprocessor", - "ControlNetAuxSimpleAddText", - "ControlNetPreprocessorSelector", - "DSINE-NormalMapPreprocessor", - "DWPreprocessor", - "DensePosePreprocessor", - "DepthAnythingPreprocessor", - "DepthAnythingV2Preprocessor", - "DiffusionEdge_Preprocessor", - "ExecuteAllControlNetPreprocessors", - "FacialPartColoringFromPoseKps", - "FakeScribblePreprocessor", - "HEDPreprocessor", - "HintImageEnchance", - "ImageGenResolutionFromImage", - "ImageGenResolutionFromLatent", - "ImageIntensityDetector", - "ImageLuminanceDetector", - "InpaintPreprocessor", - "LeReS-DepthMapPreprocessor", - "LineArtPreprocessor", - "LineartStandardPreprocessor", - "M-LSDPreprocessor", - "Manga2Anime_LineArt_Preprocessor", - "MaskOptFlow", - "MediaPipe-FaceMeshPreprocessor", - "MeshGraphormer+ImpactDetector-DepthMapPreprocessor", - "MeshGraphormer-DepthMapPreprocessor", - "Metric3D-DepthMapPreprocessor", - "Metric3D-NormalMapPreprocessor", - "Metric_DepthAnythingV2Preprocessor", - "MiDaS-DepthMapPreprocessor", - "MiDaS-NormalMapPreprocessor", - "OneFormer-ADE20K-SemSegPreprocessor", - "OneFormer-COCO-SemSegPreprocessor", - "OpenposePreprocessor", - "PiDiNetPreprocessor", - "PixelPerfectResolution", - "PyraCannyPreprocessor", - "RenderAnimalKps", - "RenderPeopleKps", - "SAMPreprocessor", - "SavePoseKpsAsJsonFile", - "ScribblePreprocessor", - "Scribble_PiDiNet_Preprocessor", - "Scribble_XDoG_Preprocessor", - "SemSegPreprocessor", - "ShufflePreprocessor", - "TEEDPreprocessor", - "TTPlanet_TileGF_Preprocessor", - "TTPlanet_TileSimple_Preprocessor", - "TilePreprocessor", - "UniFormer-SemSegPreprocessor", - "Unimatch_OptFlowPreprocessor", - "UpperBodyTrackingFromPoseKps", - "Zoe-DepthMapPreprocessor", - "Zoe_DepthAnythingPreprocessor" - ], - { - "author": "tstandley", - "preemptions": [ - "AIO_Preprocessor", - "AnimalPosePreprocessor", - "AnimeFace_SemSegPreprocessor", - "AnimeLineArtPreprocessor", - "BAE-NormalMapPreprocessor", - "BinaryPreprocessor", - "CannyEdgePreprocessor", - "ColorPreprocessor", - "DSINE-NormalMapPreprocessor", - "DWPreprocessor", - "DensePosePreprocessor", - "DepthAnythingPreprocessor", - "DiffusionEdge_Preprocessor", - "FacialPartColoringFromPoseKps", - "FakeScribblePreprocessor", - "HEDPreprocessor", - "HintImageEnchance", - "ImageGenResolutionFromImage", - "ImageGenResolutionFromLatent", - "ImageIntensityDetector", - "ImageLuminanceDetector", - "InpaintPreprocessor", - "LeReS-DepthMapPreprocessor", - "LineArtPreprocessor", - "LineartStandardPreprocessor", - "M-LSDPreprocessor", - "Manga2Anime_LineArt_Preprocessor", - "MaskOptFlow", - "MediaPipe-FaceMeshPreprocessor", - "MeshGraphormer-DepthMapPreprocessor", - "MiDaS-DepthMapPreprocessor", - "MiDaS-NormalMapPreprocessor", - "OneFormer-ADE20K-SemSegPreprocessor", - "OneFormer-COCO-SemSegPreprocessor", - "OpenposePreprocessor", - "PiDiNetPreprocessor", - "PixelPerfectResolution", - "SAMPreprocessor", - "SavePoseKpsAsJsonFile", - "ScribblePreprocessor", - "Scribble_XDoG_Preprocessor", - "SemSegPreprocessor", - "ShufflePreprocessor", - "TEEDPreprocessor", - "TilePreprocessor", - "UniFormer-SemSegPreprocessor", - "Unimatch_OptFlowPreprocessor", - "Zoe-DepthMapPreprocessor", - "Zoe_DepthAnythingPreprocessor" - ], - "title_aux": "ComfyUI's ControlNet Auxiliary Preprocessors" - } - ], - "https://github.com/Fantaxico/ComfyUI-GCP-Storage": [ - [ - "GCPStorageNode" - ], - { - "title_aux": "ComfyUI-GCP-Storage" - } - ], - "https://github.com/Feidorian/feidorian-ComfyNodes": [ - [], - { - "nodename_pattern": "^Feidorian_", - "title_aux": "feidorian-ComfyNodes" - } - ], - "https://github.com/Fictiverse/ComfyUI_Fictiverse": [ - [ - "Add Margin With Color", - "Essential Params", - "If Image Valid", - "Image Params", - "Is Image Valid ?", - "None if same Image", - "Video Params" - ], - { - "title_aux": "ComfyUI Fictiverse Nodes" - } - ], - "https://github.com/Fihade/IC-Light-ComfyUI-Node": [ - [ - "LoadICLightUnetDiffusers", - "diffusers_model_loader", - "iclight_diffusers_sampler" - ], - { - "title_aux": "IC-Light-ComfyUI-Node" - } - ], - "https://github.com/FinetunersAI/ComfyUI_Finetuners_Suite": [ - [ - "AutoImageResize", - "GroupLink", - "ModelListNode", - "VariablesInjector", - "VariablesLogicNode" - ], - { - "title_aux": "ComfyUI_Finetuners_Suite" - } - ], - "https://github.com/FizzleDorf/ComfyUI-AIT": [ - [ - "AIT_Unet_Loader", - "AIT_VAE_Encode_Loader" - ], - { - "title_aux": "ComfyUI-AIT" - } - ], - "https://github.com/FizzleDorf/ComfyUI_FizzNodes": [ - [ - "AbsCosWave", - "AbsSinWave", - "BatchGLIGENSchedule", - "BatchPromptSchedule", - "BatchPromptScheduleEncodeSDXL", - "BatchPromptScheduleLatentInput", - "BatchPromptScheduleNodeFlowEnd", - "BatchPromptScheduleSDXLLatentInput", - "BatchStringSchedule", - "BatchValueSchedule", - "BatchValueScheduleLatentInput", - "CalculateFrameOffset", - "ConcatStringSingle", - "CosWave", - "FizzFrame", - "FizzFrameConcatenate", - "ImagesFromBatchSchedule", - "Init FizzFrame", - "InvCosWave", - "InvSinWave", - "Lerp", - "PromptSchedule", - "PromptScheduleEncodeSDXL", - "PromptScheduleNodeFlow", - "PromptScheduleNodeFlowEnd", - "SawtoothWave", - "SinWave", - "SquareWave", - "StringConcatenate", - "StringSchedule", - "TriangleWave", - "ValueSchedule", - "convertKeyframeKeysToBatchKeys" - ], - { - "title_aux": "FizzNodes" - } - ], - "https://github.com/FlyingFireCo/tiled_ksampler": [ - [ - "Asymmetric Tiled KSampler", - "Circular VAEDecode", - "Tiled KSampler" - ], - { - "title_aux": "tiled_ksampler" - } - ], - "https://github.com/ForeignGods/ComfyUI-Mana-Nodes": [ - [ - "Canvas Properties", - "Combine Video", - "Font Properties", - "Generate Audio", - "Preset Color Animations", - "Save/Preview Text", - "Scheduled Values", - "Speech Recognition", - "Split Video", - "Text to Image Generator" - ], - { - "title_aux": "ComfyUI-Mana-Nodes" - } - ], - "https://github.com/Franck-Demongin/NX_HuggingFace_Flux": [ - [ - "HFFlux" - ], - { - "title_aux": "NX_HuggingFace_Flux" - } - ], - "https://github.com/Franck-Demongin/NX_PromptStyler": [ - [ - "NX_PromptStyler" - ], - { - "title_aux": "NX_PromptStyler" - } - ], - "https://github.com/Franck-Demongin/NX_Translator": [ - [ - "Nx_Translator" - ], - { - "title_aux": "NX_Translator" - } - ], - "https://github.com/FuouM/ComfyUI-EbSynth": [ - [ - "ES_Guides7", - "ES_Translate", - "ES_VideoTransfer", - "ES_VideoTransferExtra" - ], - { - "author": "Fuou Marinas", - "description": "Run EbSynth in ComfyUI.", - "nickname": "EbSynth", - "title": "ComfyUI-EbSynth", - "title_aux": "ComfyUI-EbSynth" - } - ], - "https://github.com/FuouM/ComfyUI-FirstOrderMM": [ - [ - "Articulate_Runner", - "FOMM_Partswap", - "FOMM_Runner", - "FOMM_Seg10Chooser", - "FOMM_Seg15Chooser", - "FOMM_Seg5Chooser", - "FSRT_Runner", - "MRFA_Runner", - "Spline_Runner" - ], - { - "author": "Fuou Marinas", - "description": "ComfyUI-native nodes to run First Order Motion Model for Image Animation and its non-diffusion-based successors.", - "nickname": "FOMM", - "title": "ComfyUI-FirstOrderMM", - "title_aux": "ComfyUI-FirstOrderMM" - } - ], - "https://github.com/FuouM/ComfyUI-StyleTransferPlus": [ - [ - "AESFA", - "AesFAStyleBlend", - "AesPA", - "CAST", - "CoralColorTransfer", - "EFDM", - "MicroAST", - "NeuralNeighbor", - "TSSAT", - "UniST", - "UniST_Video" - ], - { - "author": "ZJU", - "description": "A collection of style transfer nodes.", - "nickname": "StyleTransferPlus", - "title": "ComfyUI-StyleTransferPlus", - "title_aux": "ComfyUI-StyleTransferPlus" - } - ], - "https://github.com/FuouM/FM_nodes": [ - [ - "CoLIE_LowLight_Enhance", - "ConvIR_DeHaze", - "ConvIR_DeRain", - "ConvIR_DeSnow", - "ConvIR_DefocusDeblur", - "ConvIR_MotionDeBlur", - "ProPIH_Harmonizer", - "RealViFormerSR", - "StabStitch", - "StabStitch_Crop_Resize", - "StabStitch_Stabilize", - "WFEN" - ], - { - "author": "Fuou Marinas", - "description": "A collection of nodes.", - "nickname": "FM_nodes", - "title": "FM Nodes", - "title_aux": "FM_nodes" - } - ], - "https://github.com/Fuwuffyi/ComfyUI-VisualArea-Nodes": [ - [ - "VisualAreaPrompt", - "VisualAreaPromptAdvanced" - ], - { - "author": "Fuwuffy", - "description": "This is a collection of nodes created to aid when managing area conditionings.", - "nickname": "comfy-visual-area", - "title": "ComfyUI Visual Area Nodes", - "title_aux": "ComfyUI-VisualArea-Nodes" - } - ], - "https://github.com/G-370/ComfyUI-SD3-Powerlab": [ - [ - "G370SD3PowerLab_AttentionToImage", - "G370SD3PowerLab_ImageIntoAttention", - "G370SD3PowerLab_ImageIntoLayer", - "G370SD3PowerLab_LayerToImage", - "G370SD3PowerLab_RenderAttention" - ], - { - "title_aux": "ComfyUI-SD3-Powerlab" - } - ], - "https://github.com/GMapeSplat/ComfyUI_ezXY": [ - [ - "ConcatenateString", - "ItemFromDropdown", - "IterationDriver", - "JoinImages", - "LineToConsole", - "NumberFromList", - "NumbersToList", - "PlotImages", - "StringFromList", - "StringToLabel", - "StringsToList", - "ezMath", - "ezXY_AssemblePlot", - "ezXY_Driver" - ], - { - "title_aux": "ezXY scripts and nodes" - } - ], - "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes": [ - [ - "Danbooru (ID)", - "Danbooru (Random)", - "Random File From Path", - "Replace Strings", - "Simple Wildcards", - "Simple Wildcards (Dir.)", - "Wildcards Nodes" - ], - { - "title_aux": "ComfyUI-GTSuya-Nodes" - } - ], - "https://github.com/GadzoinksOfficial/gadzoinks_ComfyUI": [ - [ - "Gadzoinks" - ], - { - "author": "gadzoinksofficial", - "description": "Custom node for integrating with gadzoinks iPhone app", - "nickname": "Gadzoinks", - "title": "Gadzoinks", - "title_aux": "Gadzoinks" - } - ], - "https://github.com/GavChap/ComfyUI-SD3LatentSelectRes": [ - [ - "SD3LatentSelectRes" - ], - { - "title_aux": "ComfyUI-SD3LatentSelectRes" - } - ], - "https://github.com/GeekyGhost/ComfyUI-GeekyRemB": [ - [ - "GeekyRemB" - ], - { - "title_aux": "ComfyUI-GeekyRemB" - } - ], - "https://github.com/GentlemanHu/ComfyUI-SunoAI": [ - [ - "GentlemanHu_SunoAI", - "GentlemanHu_SunoAI_NotSafe" - ], - { - "title_aux": "ComfyUI Suno API" - } - ], - "https://github.com/GiusTex/ComfyUI-DiffusersImageOutpaint": [ - [ - "DiffusersImageOutpaint", - "EncodeDiffusersOutpaintPrompt", - "LoadDiffusersOutpaintModels", - "PadImageForDiffusersOutpaint" - ], - { - "title_aux": "ComfyUI-DiffusersImageOutpaint" - } - ], - "https://github.com/GoingAI1998/Comfyui_imgcanvas": [ - [ - "WebCanvas" - ], - { - "title_aux": "ComfyUI Web Canvas Node" - } - ], - "https://github.com/Goktug/comfyui-saveimage-plus": [ - [ - "SaveImagePlus" - ], - { - "title_aux": "Save Image Plus for ComfyUI" - } - ], - "https://github.com/Gourieff/ComfyUI-ReActor": [ - [ - "ImageRGBA2RGB", - "ReActorBuildFaceModel", - "ReActorFaceBoost", - "ReActorFaceSwap", - "ReActorFaceSwapOpt", - "ReActorImageDublicator", - "ReActorLoadFaceModel", - "ReActorMakeFaceModelBatch", - "ReActorMaskHelper", - "ReActorOptions", - "ReActorRestoreFace", - "ReActorSaveFaceModel", - "ReActorUnload" - ], - { - "title_aux": "comfyui-reactor-node" - } - ], - "https://github.com/GraftingRayman/ComfyUI-PuLID-Flux-GR": [ - [ - "GRApplyPulidFlux", - "GRPulidFluxEvaClipLoader", - "GRPulidFluxInsightFaceLoader", - "GRPulidFluxModelLoader" - ], - { - "title_aux": "ComfyUI-PuLID-Flux-GR" - } - ], - "https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [ - [ - "GR Background Remover REMBG", - "GR Checkered Board", - "GR Counter", - "GR Flip Tile Random Inverted", - "GR Flip Tile Random Red Ring", - "GR Image Details Displayer", - "GR Image Details Saver", - "GR Image Paste", - "GR Image Paste With Mask", - "GR Image Resize", - "GR Image Resize Methods", - "GR Image Size", - "GR Image/Depth Mask", - "GR Mask", - "GR Mask Create", - "GR Mask Create Random", - "GR Mask Create Random Multi", - "GR Mask Resize", - "GR Multi Mask Create", - "GR Onomatopoeia", - "GR Pan Or Zoom", - "GR Prompt Generator", - "GR Prompt Generator Extended", - "GR Prompt HUB", - "GR Prompt Selector", - "GR Prompt Selector Multi", - "GR Prompty", - "GR Scroller", - "GR Stack Image", - "GR Text Overlay", - "GR Tile and Border Image", - "GR Tile and Border Image Random Flip" - ], - { - "title_aux": "GraftingRayman" - } - ], - "https://github.com/GraftingRayman/ComfyUI_QueueTube": [ - [ - "GR QueueTube" - ], - { - "title_aux": "ComfyUI QueueTube" - } - ], - "https://github.com/GreenLandisaLie/AuraSR-ComfyUI": [ - [ - "AuraSR.AuraSRUpscaler" - ], - { - "title_aux": "AuraSR-ComfyUI" - } - ], - "https://github.com/GrenKain/PixelArt-Processing-Nodes-for-ComfyUI": [ - [ - "PixelArtDownscaleNode", - "PixelArtNode" - ], - { - "title_aux": "PixelArt Processing Nodes" - } - ], - "https://github.com/GrvBdgr/comfyui-negativewildcardsprocessor": [ - [ - "custom_token_processor", - "neg_wildcard_processor" - ], - { - "title_aux": "Negative Wildcard Processor Node for ComfyUI" - } - ], - "https://github.com/Guillaume-Fgt/ComfyUI_StableCascadeLatentRatio": [ - [ - "StableCascadeLatentRatio" - ], - { - "title_aux": "ComfyUI_StableCascadeLatentRatio" - } - ], - "https://github.com/HAL41/ComfyUI-aichemy-nodes": [ - [ - "aichemyYOLOv8Segmentation" - ], - { - "title_aux": "ComfyUI aichemy nodes" - } - ], - "https://github.com/HECer/ComfyUI-FilePathCreator": [ - [ - "FilePathCreator", - "FilePathExtractor" - ], - { - "title_aux": "ComfyUI-FilePathCreator" - } - ], - "https://github.com/HM-RunningHub/ComfyUI_RH_APICall": [ - [ - "RH_ExecuteNode", - "RH_ImageUploaderNode", - "RH_NodeInfoListNode", - "RH_SettingsNode", - "RH_Utils" - ], - { - "title_aux": "ComfyUI_RH_APICall" - } - ], - "https://github.com/HM-RunningHub/ComfyUI_RH_OminiControl": [ - [ - "RunningHub_Omini_Fill", - "RunningHub_Omini_Spatial", - "RunningHub_Omini_Subject" - ], - { - "title_aux": "ComfyUI_RH_OminiControl" - } - ], - "https://github.com/Haiper-ai/ComfyUI-HaiperAI-API": [ - [ - "HaiperImage2Video", - "HaiperKeyframeConditioning", - "HaiperText2Image", - "HaiperText2Video" - ], - { - "title_aux": "ComfyUI-HaiperAI-API" - } - ], - "https://github.com/Hangover3832/ComfyUI-Hangover-Moondream": [ - [ - "Moondream Interrogator" - ], - { - "author": "AlexL", - "description": "An implementation of the moondream visual LLM", - "nickname": "Hangover-Moondream", - "title": "ComfyUI-Hangover-Moondream", - "title_aux": "ComfyUI-Hangover-Moondream" - } - ], - "https://github.com/Hangover3832/ComfyUI-Hangover-Nodes": [ - [ - "Image Scale Bounding Box", - "MS kosmos-2 Interrogator", - "Make Inpaint Model", - "Save Image w/o Metadata" - ], - { - "author": "AlexL", - "description": "An implementation of Microsoft kosmos-2 image to text transformer.", - "nickname": "Hangover-ms_kosmos2", - "title": "ComfyUI-Hangover-Kosmos2", - "title_aux": "ComfyUI-Hangover-Nodes" - } - ], - "https://github.com/Hangover3832/ComfyUI-Hangover-Recognize_Anything": [ - [ - "Recognize Anything Model (RAM)" - ], - { - "author": "AlexL", - "description": "An implementation of the Recognize Anything Model (RAM++) for ComfyUI. The counterpart of Segment Anything Model (SAM).", - "nickname": "Hangover-Recognize_Anything", - "title": "ComfyUI-Hangover-Recognize_Anything", - "title_aux": "Recognize Anything Model (RAM) for ComfyUI" - } - ], - "https://github.com/Haoming02/comfyui-diffusion-cg": [ - [ - "Normalization", - "Recenter", - "Recenter XL" - ], - { - "title_aux": "Diffusion CG" - } - ], - "https://github.com/Haoming02/comfyui-floodgate": [ - [ - "FloodGate" - ], - { - "title_aux": "Floodgate" - } - ], - "https://github.com/Haoming02/comfyui-resharpen": [ - [ - "Resharpen" - ], - { - "title_aux": "ComfyUI ReSharpen" - } - ], - "https://github.com/HaydenReeve/ComfyUI-Better-Strings": [ - [ - "BetterString" - ], - { - "title_aux": "ComfyUI Better Strings" - } - ], - "https://github.com/HeadshotPro/ComfyUI-HeadshotPro": [ - [ - "[HSP] Download Dreambooth Checkpoint", - "[HSP] Download Flux Lora", - "[HSP] Get Random Value From List", - "[HSP] Load Canny Pose Face", - "[HSP] Transparent to White Background" - ], - { - "title_aux": "ComfyUI-HeadshotPro" - } - ], - "https://github.com/HebelHuber/comfyui-enhanced-save-node": [ - [ - "EnhancedSaveNode" - ], - { - "title_aux": "comfyui-enhanced-save-node" - } - ], - "https://github.com/HellerCommaA/ComfyUI-VideoResolutions": [ - [ - "HunyuanResolutions" - ], - { - "title_aux": "Hunyuan Video Resolutions" - } - ], - "https://github.com/HelloVision/ComfyUI_HelloMeme": [ - [ - "CropPortrait", - "GetDriveExpression", - "GetDriveExpression2", - "GetDrivePose", - "GetFaceLandmarks", - "HMFaceToolkitsLoader", - "HMImagePipelineLoader", - "HMPipelineImage", - "HMPipelineVideo", - "HMVideoPipelineLoader" - ], - { - "title_aux": "ComfyUI_HelloMeme" - } - ], - "https://github.com/Hellrunner2k/ComfyUI-HellrunnersMagicalNodes": [ - [ - "AdjustMojo", - "LoadMaskMap", - "MagicalSaveNode", - "MojoLoader", - "MojoMaker", - "SaveMojo", - "ThermalLatenator" - ], - { - "title_aux": "Hellrunner's Magical Nodes" - } - ], - "https://github.com/Hiero207/ComfyUI-Hiero-Nodes": [ - [ - "Load Prompt Travel file", - "Post to Discord w/ Webhook", - "Save Prompt Travel file" - ], - { - "author": "Hiero", - "description": "Just some nodes that I wanted/needed, so I made them.", - "nickname": "HNodes", - "title": "Hiero-Nodes", - "title_aux": "Hiero-Nodes" - } - ], - "https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": [ - [ - "AgentMemoryProvider", - "AgentNode", - "BasicRecursionFilterNode", - "DocumentChunkRecursionFilterNode", - "DocumentProcessor", - "LinuxMemoryDirectory", - "QueryNode" - ], - { - "description": "Nodes for interfacing with LiteLLM", - "nickname": "Tasha", - "title": "ComfyUI_LiteLLM", - "title_aux": "ComfyUI_LiteLLM" - } - ], - "https://github.com/Hullabalo/ComfyUI-Loop": [ - [ - "ImageCutLoop", - "ImagePasteLoop", - "LoadImageSimple", - "SaveImageSimple" - ], - { - "title_aux": "ComfyUI-Loop" - } - ], - "https://github.com/IDGallagher/ComfyUI-IG-Motion-I2V": [ - [ - "MI2V Flow Animator", - "MI2V Flow Predictor", - "MI2V PauseNode", - "MotionPainter" - ], - { - "author": "IDGallagher", - "description": "Custom nodes to aid in the exploration of Latent Space", - "nickname": "IG Interpolation Nodes", - "title": "IG Interpolation Nodes", - "title_aux": "ComfyUI-IG-Motion-I2V" - } - ], - "https://github.com/IDGallagher/ComfyUI-IG-Nodes": [ - [ - "IG Analyze SSIM", - "IG Cross Fade Images", - "IG Explorer", - "IG Float", - "IG Float List", - "IG Folder", - "IG Int", - "IG Interpolate", - "IG Load Image", - "IG Load Images", - "IG MotionPredictor", - "IG Multiply", - "IG Path Join", - "IG String", - "IG String List", - "IG ZFill", - "SM Video Base", - "SM Video Base Control" - ], - { - "author": "IDGallagher", - "description": "Custom nodes to aid in the exploration of Latent Space", - "nickname": "IG Interpolation Nodes", - "title": "IG Interpolation Nodes", - "title_aux": "IG Interpolation Nodes" - } - ], - "https://github.com/IDGallagher/MotionVideoSearch": [ - [ - "IG Motion Video Frame", - "IG Motion Video Search" - ], - { - "author": "IDGallagher", - "description": "Search an index of videos by motion image", - "nickname": "IG Motion Video Search", - "title": "IG Motion Video Search", - "title_aux": "IG-Motion-Search" - } - ], - "https://github.com/ITurchenko/ComfyUI-SizeFromArray": [ - [ - "SizeFromArray" - ], - { - "title_aux": "ComfyUI-SizeFromArray" - } - ], - "https://github.com/IamCreateAI/Ruyi-Models": [ - [ - "Ruyi_EnhanceAVideo", - "Ruyi_I2VSampler", - "Ruyi_LoadLora", - "Ruyi_LoadModel", - "Ruyi_TeaCache" - ], - { - "title_aux": "ComfyUI-Ruyi" - } - ], - "https://github.com/IgalOgonov/ComfyUI_Simple_String_Repository": [ - [ - "SimpleStringRepository", - "SimpleStringRepositoryCompact", - "SimpleStringRepositoryLarge", - "SimpleStringRepositoryLargeCompact", - "SimpleStringRepositorySmall", - "SimpleStringRepositorySmallCompact" - ], - { - "title_aux": "Simple String Repository" - } - ], - "https://github.com/ImmortalPie/ComfyUI-PonySwitch": [ - [ - "PonySwitch" - ], - { - "title_aux": "PonySwitch Node" - } - ], - "https://github.com/InstantStudioAI/ComfyUI-InstantStudio": [ - [ - "HuggingFace Classify", - "Moondream", - "UploadImagesToInstantStudio" - ], - { - "title_aux": "ComfyUI-InstantStudio" - } - ], - "https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes": [ - [ - "MX_AlphaBlend", - "MX_Blend", - "MX_Blur", - "MX_Canny", - "MX_ChromaticAberration", - "MX_ColorCorrect", - "MX_ColorMatch", - "MX_ColorTint", - "MX_Glow", - "MX_HSVThresholdMask", - "MX_KuwaharaBlur(Cartoon)", - "MX_LUT", - "MX_LensBokeh", - "MX_LensOpticAxis", - "MX_LensZoomBurst", - "MX_Mosaic", - "MX_Noise", - "MX_Posterize", - "MX_SineWave", - "MX_Solarize", - "MX_Vignette" - ], - { - "title_aux": "ComfyUI-MX-post-processing-nodes" - } - ], - "https://github.com/Inzaniak/comfyui-ranbooru": [ - [ - "LockSeed", - "PromptBackground", - "PromptLimit", - "PromptMix", - "PromptRandomWeight", - "PromptRemove", - "Ranbooru", - "RanbooruURL", - "RandomPicturePath", - "TimestampFileName" - ], - { - "title_aux": "Ranbooru for ComfyUI" - } - ], - "https://github.com/IsItDanOrAi/ComfyUI-Stereopsis": [ - [ - "Dan_FrameDelay", - "Dan_Stereopsis" - ], - { - "title_aux": "ComfyUI-Stereopsis" - } - ], - "https://github.com/Isi-dev/ComfyUI-Animation_Nodes_and_Workflows": [ - [ - "CLIPTextEncodeStyles", - "JoinVideos", - "MakeDrivingVideoForLivePortrait", - "MakePortraitWalk", - "MoveInOrOut", - "MoveLeftOrRight", - "MoveUpOrDown", - "Replace_Img_or_Vid_Bg_Assistant" - ], - { - "title_aux": "ComfyUI-Animation_Nodes_and_Workflows" - } - ], - "https://github.com/Isi-dev/ComfyUI-Img2DrawingAssistants": [ - [ - "LineArt_Assistant", - "LineArt_Assistant_2", - "Sketch_Assistant", - "Sketch_Assistant_grayScale" - ], - { - "title_aux": "ComfyUI-Img2DrawingAssistants" - } - ], - "https://github.com/Isi-dev/ComfyUI-Img2PaintingAssistant": [ - [ - "Painting", - "ProcessInspyrenetRembg" - ], - { - "title_aux": "Image to Painting and Inspyrenet Assistant Nodes" - } - ], - "https://github.com/Isi-dev/ComfyUI-UniAnimate-W": [ - [ - "Animate_X_Image", - "Animate_X_Image_Long", - "Animate_X_Image_v2", - "Animate_X_ReposeImage", - "Animate_X_ReposeImage_v2", - "Gen_align_pose", - "Gen_align_pose2", - "ReposeImage", - "UniAnimateImage", - "UniAnimateImageLong" - ], - { - "title_aux": "UniAnimate Nodes for ComfyUI" - } - ], - "https://github.com/Isulion/ComfyUI_Isulion": [ - [ - "CustomTextNode", - "DisplayImageFromURL", - "IsuCollage_Node", - "Isulion Civitai Image Display", - "Isulion Civitai Model Explorer", - "Isulion Civitai Trending", - "IsulionActionGenerator", - "IsulionAlienWorldGenerator", - "IsulionAnimalBehaviorGenerator", - "IsulionAnimalRandom", - "IsulionArtStyleGenerator", - "IsulionArtifactGenerator", - "IsulionCivitaiImageDisplay", - "IsulionCivitaiModelExplorer", - "IsulionCivitaiTrending", - "IsulionClothingGenerator", - "IsulionCuteAnimalRandom", - "IsulionEmotionGenerator", - "IsulionEpochGenerator", - "IsulionFantasyRaceGenerator", - "IsulionHabitatGenerator", - "IsulionLoadImagesNode", - "IsulionMagicalEffectGenerator", - "IsulionMegaPromptV3", - "IsulionMultiplePromptGenerator", - "IsulionMythicalLocationGenerator", - "IsulionNegativePromptGenerator", - "IsulionProfessionGenerator", - "IsulionPromptEnhancer", - "IsulionSceneComposition", - "IsulionSpacecraftGenerator", - "IsulionStyleMixer", - "IsulionTechGenerator", - "IsulionTimeOfDayGenerator", - "IsulionVideoPromptGenerator", - "IsulionWeatherGenerator", - "\ud83d\udca4 IsulionShutdown" - ], - { - "title_aux": "ComfyUI_Isulion Random Prompt Generator" - } - ], - "https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4": [ - [ - "DisplayText", - "LoadVideo", - "MiniCPM_VQA", - "MiniCPM_VQA_Polished", - "MultipleImagesInput", - "PreviewVideo" - ], - { - "title_aux": "ComfyUI_MiniCPM-V-2_6-int4" - } - ], - "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-Audio-7B-Instruct-Int4": [ - [ - "AudioLoader", - "AudioPreviewer", - "Qwen2_AQA" - ], - { - "title_aux": "ComfyUI_Qwen2-Audio-7B-Instruct-Int4" - } - ], - "https://github.com/IuvenisSapiens/ComfyUI_Qwen2-VL-Instruct": [ - [ - "ImageLoader", - "MultiplePathsInput", - "Qwen2_VQA" - ], - { - "title_aux": "ComfyUI_Qwen2-VL-Instruct" - } - ], - "https://github.com/JEONG-JIWOO/ComfyUI_Eugene_Nodes": [ - [ - "DictBus", - "DictBusEdit", - "DictBusUnpack", - "DictMultilineSelect", - "DictTemplate", - "DictUpdate1", - "DictUpdate10", - "DictUpdate5", - "LoraPresetListLoader", - "LoraPresetLoader", - "LoraPresetSaver", - "LoraPresetSelector" - ], - { - "title_aux": "ComfyUI_Eugene_Nodes" - } - ], - "https://github.com/JPS-GER/ComfyUI_JPS-Nodes": [ - [ - "CLIPTextEncode SDXL Plus (JPS)", - "Conditioning Switch (JPS)", - "ControlNet Switch (JPS)", - "Crop Image Pipe (JPS)", - "Crop Image Settings (JPS)", - "Crop Image Square (JPS)", - "Crop Image TargetSize (JPS)", - "CtrlNet CannyEdge Pipe (JPS)", - "CtrlNet CannyEdge Settings (JPS)", - "CtrlNet MiDaS Pipe (JPS)", - "CtrlNet MiDaS Settings (JPS)", - "CtrlNet OpenPose Pipe (JPS)", - "CtrlNet OpenPose Settings (JPS)", - "CtrlNet ZoeDepth Pipe (JPS)", - "CtrlNet ZoeDepth Settings (JPS)", - "Disable Enable Switch (JPS)", - "Enable Disable Switch (JPS)", - "Generation TXT IMG Settings (JPS)", - "Get Date Time String (JPS)", - "Get Image Size (JPS)", - "IP Adapter Settings (JPS)", - "IP Adapter Settings Pipe (JPS)", - "IP Adapter Tiled Settings (JPS)", - "IP Adapter Tiled Settings Pipe (JPS)", - "IPA Switch (JPS)", - "Image Prepare Pipe (JPS)", - "Image Prepare Settings (JPS)", - "Image Switch (JPS)", - "ImageToImage Pipe (JPS)", - "ImageToImage Settings (JPS)", - "Images Masks MultiPipe (JPS)", - "InstantID Mask Prepare Pipe (JPS)", - "InstantID Mask Prepare Settings (JPS)", - "InstantID Pipe (JPS)", - "InstantID Pose Prepare Pipe (JPS)", - "InstantID Pose Prepare Settings (JPS)", - "InstantID Settings (JPS)", - "InstantID Source Prepare Pipe (JPS)", - "InstantID Source Prepare Settings (JPS)", - "Integer Switch (JPS)", - "Largest Int (JPS)", - "Latent Switch (JPS)", - "Lora Loader (JPS)", - "Mask Switch (JPS)", - "Model Switch (JPS)", - "Multiply Float Float (JPS)", - "Multiply Int Float (JPS)", - "Multiply Int Int (JPS)", - "Prepare Image (JPS)", - "Prepare Image Plus (JPS)", - "Prepare Image Tiled IPA (JPS)", - "Resolution Multiply (JPS)", - "Revision Settings (JPS)", - "Revision Settings Pipe (JPS)", - "SDXL Basic Settings (JPS)", - "SDXL Basic Settings Pipe (JPS)", - "SDXL Fundamentals MultiPipe (JPS)", - "SDXL Prompt Handling (JPS)", - "SDXL Prompt Handling Plus (JPS)", - "SDXL Prompt Styler (JPS)", - "SDXL Recommended Resolution Calc (JPS)", - "SDXL Resolutions (JPS)", - "SDXL Settings (JPS)", - "SDXL Settings Pipe (JPS)", - "Sampler Scheduler Settings (JPS)", - "Save Images Plus (JPS)", - "Substract Int Int (JPS)", - "Text Concatenate (JPS)", - "Text Prompt (JPS)", - "Text Prompt Combo (JPS)", - "Time Seed (JPS)", - "VAE Switch (JPS)" - ], - { - "author": "JPS", - "description": "Various nodes to handle SDXL Resolutions, SDXL Basic Settings, IP Adapter Settings, Revision Settings, SDXL Prompt Styler, Crop Image to Square, Crop Image to Target Size, Get Date-Time String, Resolution Multiply, Largest Integer, 5-to-1 Switches for Integer, Images, Latents, Conditioning, Model, VAE, ControlNet", - "nickname": "JPS Custom Nodes", - "title": "JPS Custom Nodes for ComfyUI", - "title_aux": "JPS Custom Nodes for ComfyUI" - } - ], - "https://github.com/JPrevots/ComfyUI-PhyCV": [ - [ - "PAGE", - "PST", - "VEVID" - ], - { - "title_aux": "ComfyUI-PhyCV" - } - ], - "https://github.com/JTriggerFish/ComfyLatentTools": [ - [ - "LatentNormalizedLanczosResize" - ], - { - "title_aux": "Comfy Latent Tools" - } - ], - "https://github.com/JackEllie/ComfyUI_AI_Assistant": [ - [ - "apply_lighting_effects", - "clean_prompt_tags", - "noline_process", - "prompt_blacklist", - "prompt_sorting", - "resize_image_sdxl_ratio" - ], - { - "title_aux": "ComfyUI-AI-Assistant" - } - ], - "https://github.com/Jaminanim/ComfyUI-Random-Int-Divisor-Node": [ - [ - "RandomIntegerNodeEfficient", - "RandomIntegerNodeEfficientAdvanced", - "RandomIntegerNodeList" - ], - { - "title_aux": "ComfyUI-Random-Int-Divisor-Node" - } - ], - "https://github.com/Jannchie/ComfyUI-J": [ - [ - "DiffusersCompelPromptEmbedding", - "DiffusersControlnetLoader", - "DiffusersControlnetUnit", - "DiffusersControlnetUnitStack", - "DiffusersDecoder", - "DiffusersGenerator", - "DiffusersPipeline", - "DiffusersPrepareLatents", - "DiffusersTextureInversionLoader", - "DiffusersXLPipeline", - "GetAverageColorFromImage", - "GetFilledColorImage" - ], - { - "title_aux": "ComfyUI-J" - } - ], - "https://github.com/JaredTherriault/ComfyUI-JNodes": [ - [ - "JNodes_AddOrSetMetaDataKey", - "JNodes_AnyToString", - "JNodes_AppendReversedFrames", - "JNodes_AudioInputOptions", - "JNodes_BooleanSelectorWithString", - "JNodes_BreakMediaInfo", - "JNodes_CheckpointSelectorWithString", - "JNodes_ConditioningInOut", - "JNodes_CreateStereoscopicImageFromDepth", - "JNodes_DiffusionModelSelector", - "JNodes_FloatLiteral", - "JNodes_GetCleanFilename", - "JNodes_GetComfyDirectory", - "JNodes_GetLeafDirectory", - "JNodes_GetOutputDirectory", - "JNodes_GetParameterFromList", - "JNodes_GetParameterGlobal", - "JNodes_GetTempDirectory", - "JNodes_ImageFormatSelector", - "JNodes_ImageSizeSelector", - "JNodes_IntLiteral", - "JNodes_JoinVideosInDirectory", - "JNodes_LoadVideo", - "JNodes_LoadVisualMediaFromPath", - "JNodes_LoadVisualMediaFromPath_Batch", - "JNodes_LoadVisualMediaFromPath_List", - "JNodes_LoraExtractor", - "JNodes_MediaInfoToString", - "JNodes_ModelInOut", - "JNodes_OutVideoInfo", - "JNodes_ParseDynamicPrompts", - "JNodes_ParseParametersToGlobalList", - "JNodes_ParseWildcards", - "JNodes_PromptBuilderSingleSubject", - "JNodes_RemoveCommentedText", - "JNodes_RemoveMetaDataKey", - "JNodes_RemoveParseableDataForInference", - "JNodes_SamplerSelectorWithString", - "JNodes_SaveImageWithOutput", - "JNodes_SaveVideo", - "JNodes_SaveVideoWithOptions", - "JNodes_SchedulerSelectorWithString", - "JNodes_SearchAndReplace", - "JNodes_SearchAndReplaceFromFile", - "JNodes_SearchAndReplaceFromList", - "JNodes_SelectRandomFileFromDirectory", - "JNodes_SeparateStringByDelimiters", - "JNodes_SetMetadataA1111", - "JNodes_SetNegativePromptInMetaData", - "JNodes_SetPositivePromptInMetaData", - "JNodes_SplitAndJoin", - "JNodes_StringLiteral", - "JNodes_SubdirectorySelector", - "JNodes_SyncedStringLiteral", - "JNodes_TokenCounter", - "JNodes_TrimAndStrip", - "JNodes_UploadVideo", - "JNodes_UploadVisualMedia", - "JNodes_VaeSelectorWithString" - ], - { - "title_aux": "ComfyUI-JNodes" - } - ], - "https://github.com/Jash-Vora/ComfyUI-GarmentDiT": [ - [ - "GarmentEnhancementNode" - ], - { - "title_aux": "FitDiT" - } - ], - "https://github.com/JcandZero/ComfyUI_GLM4Node": [ - [ - "GLM3_turbo_CHAT", - "GLM4_CHAT", - "GLM4_Vsion_IMGURL" - ], - { - "title_aux": "ComfyUI_GLM4Node" - } - ], - "https://github.com/Jcd1230/rembg-comfyui-node": [ - [ - "Image Remove Background (rembg)" - ], - { - "title_aux": "Rembg Background Removal Node for ComfyUI" - } - ], - "https://github.com/JerryOrbachJr/ComfyUI-RandomSize": [ - [ - "JOJR_RandomSize" - ], - { - "author": "JerryOrbachJr", - "description": "A ComfyUI custom node that randomly selects a height and width pair from a list in a config file", - "nickname": "Random Size", - "title": "Random Size", - "title_aux": "Random Size" - } - ], - "https://github.com/JettHu/ComfyUI-TCD": [ - [ - "TCDModelSamplingDiscrete" - ], - { - "title_aux": "ComfyUI-TCD" - } - ], - "https://github.com/JettHu/ComfyUI_TGate": [ - [ - "TGateApply", - "TGateApplyAdvanced", - "TGateApplySimple" - ], - { - "title_aux": "ComfyUI_TGate" - } - ], - "https://github.com/JichaoLiang/Immortal_comfyUI": [ - [ - "AppendNode", - "CombineVideos", - "ImAppendFreeChatAction", - "ImAppendImageActionNode", - "ImAppendQuickbackNode", - "ImAppendQuickbackVideoNode", - "ImAppendVideoNode", - "ImDumpEntity", - "ImDumpNode", - "ImLoadPackage", - "ImNodeTitleOverride", - "ImSetActionKeywordMapping", - "MergeNode", - "NewNode", - "Node2String", - "OllamaChat", - "SaveImagePath", - "SaveToDirectory", - "SetEvent", - "SetNodeMapping", - "SetProperties", - "String2Node", - "TurnOnOffNodeOnEnter", - "batchNodes", - "grepNodeByText", - "mergeEntityAndPointer", - "redirectToNode" - ], - { - "title_aux": "Immortal_comfyUI" - } - ], - "https://github.com/JohnDoeSmithee/ComfyUI-SoX-Mixdown": [ - [ - "SoxMixNode" - ], - { - "title_aux": null - } - ], - "https://github.com/Jonseed/ComfyUI-Detail-Daemon": [ - [ - "DetailDaemonGraphSigmasNode", - "DetailDaemonSamplerNode", - "LyingSigmaSampler", - "MultiplySigmas" - ], - { - "title_aux": "ComfyUI-Detail-Daemon" - } - ], - "https://github.com/Jordach/comfy-plasma": [ - [ - "JDC_AutoContrast", - "JDC_BlendImages", - "JDC_BrownNoise", - "JDC_Contrast", - "JDC_EqualizeGrey", - "JDC_GaussianBlur", - "JDC_GreyNoise", - "JDC_Greyscale", - "JDC_ImageLoader", - "JDC_ImageLoaderMeta", - "JDC_PinkNoise", - "JDC_Plasma", - "JDC_PlasmaSampler", - "JDC_PowerImage", - "JDC_RandNoise", - "JDC_ResizeFactor" - ], - { - "title_aux": "comfy-plasma" - } - ], - "https://github.com/JosefKuchar/ComfyUI-AdvancedTiling": [ - [ - "AdvancedTiling", - "AdvancedTilingSettings", - "AdvancedTilingVAEDecode" - ], - { - "title_aux": "ComfyUI-AdvancedTiling" - } - ], - "https://github.com/JosephThomasParker/ComfyUI-DrawThingsWrapper": [ - [ - "DrawThingsGenerateFromPipeline", - "DrawThingsImg2Img", - "DrawThingsImg2ImgPipeline", - "DrawThingsPipelineAddControl", - "DrawThingsPipelineAddCustom", - "DrawThingsPipelineAddLora", - "DrawThingsTxt2Img", - "DrawThingsTxt2ImgPipeline" - ], - { - "title_aux": "ComfyUI-DrawThingsWrapper" - } - ], - "https://github.com/Julian-adv/WildDivide": [ - [ - "Attention couple wild divide", - "Comfy Divide", - "WildPromptGenerator", - "WildcardDivide", - "WildcardEncode" - ], - { - "author": "Julian Adventurer.", - "description": "This node is used to encode a wildcard string.", - "nickname": "WildDivide", - "title": "Wild Divide", - "title_aux": "Wild Divide" - } - ], - "https://github.com/JustinMatters/comfyUI-JMNodes": [ - [ - "JMBinaryNot", - "JMIntegerToBooleans", - "JMNumberList", - "JMSWitchablePrompt" - ], - { - "title_aux": "ComfyUI JMNodes" - } - ], - "https://github.com/KLL535/ComfyUI_SimpleButcher": [ - [ - "Simple Extract Lora From Text", - "Simple Image Saver (as Forge)", - "Simple Load Line From Text File", - "Simple Lora Loader" - ], - { - "title_aux": "ComfyUI_SimpleButcher" - } - ], - "https://github.com/Kangkang625/ComfyUI-paint-by-example": [ - [ - "PaintbyExamplePipeLoader", - "PaintbyExampleSampler" - ], - { - "title_aux": "ComfyUI-Paint-by-Example" - } - ], - "https://github.com/Kayarte/AudioDriven-Latent-Space-Tools-for-ComfyUI": [ - [ - "AdvancedNoisePatterns", - "AudioNoiseMapper", - "LibrosaAnalysisNode", - "NoiseToLatentConverter" - ], - { - "title_aux": "AudioDriven-Latent-Space-Tools-for-ComfyUI" - } - ], - "https://github.com/Kesin11/ComfyUI-list-filter": [ - [ - "list_filter_FilterImageListByIndexList", - "list_filter_FilterStringListByIndexList", - "list_filter_FindAnyStrings", - "list_filter_FindNotAnyStrings", - "list_filter_StringToIndex", - "random_normal_dist" - ], - { - "title_aux": "ComfyUI-list-filter" - } - ], - "https://github.com/KewkLW/ComfyUI-kewky_tools": [ - [ - "CLIPInterrogator", - "FormattedPromptNode", - "ImageBatcher", - "LoadImagePlus", - "LoadVideoPlus", - "TensorDebugPlus", - "TextAppendNode", - "TextSearchNode", - "VRAM_Debug_Plus" - ], - { - "title_aux": "ComfyUI-kewky_tools" - } - ], - "https://github.com/Kidev/ComfyUI-Fisheye-effects": [ - [ - "Defisheye", - "Fisheye" - ], - { - "title_aux": "ComfyUI Fisheye Effects Nodes" - } - ], - "https://github.com/KohakuBlueleaf/z-tipo-extension": [ - [ - "TIPO", - "TIPOFormat", - "TIPOOperation" - ], - { - "title_aux": "TIPO-extension" - } - ], - "https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack": [ - [ - "Brightness Image", - "ColorMatch2", - "Contrast Image", - "Get Text", - "Image Difference", - "ImageConcatenate", - "ImageDesaturate", - "ImageExtend", - "ImageFlip", - "ImageRotate", - "LoadImageNai", - "Math Operation", - "NoteAdvanced", - "Set Text" - ], - { - "title_aux": "ComfyUI Production Nodes Pack" - } - ], - "https://github.com/KoreTeknology/ComfyUI-Universal-Styler": [ - [ - "Load Nai Styles Complex CSV", - "ShowText|pysssss", - "Universal_Styler_Node", - "concat" - ], - { - "title_aux": "ComfyUI Universal Styler" - } - ], - "https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet": [ - [ - "ACN_AdvancedControlNetApply", - "ACN_AdvancedControlNetApplySingle", - "ACN_AdvancedControlNetApplySingle_v2", - "ACN_AdvancedControlNetApply_v2", - "ACN_ControlNet++InputNode", - "ACN_ControlNet++LoaderAdvanced", - "ACN_ControlNet++LoaderSingle", - "ACN_ControlNetLoaderAdvanced", - "ACN_ControlNetLoaderWithLoraAdvanced", - "ACN_CtrLoRALoader", - "ACN_CustomControlNetWeightsFlux", - "ACN_CustomControlNetWeightsSD15", - "ACN_CustomT2IAdapterWeights", - "ACN_DefaultUniversalWeights", - "ACN_DiffControlNetLoaderAdvanced", - "ACN_ExtrasMiddleMult", - "ACN_ReferenceControlNet", - "ACN_ReferenceControlNetFinetune", - "ACN_ReferencePreprocessor", - "ACN_ScaledSoftControlNetWeights", - "ACN_SoftControlNetWeightsSD15", - "ACN_SoftT2IAdapterWeights", - "ACN_SparseCtrlIndexMethodNode", - "ACN_SparseCtrlLoaderAdvanced", - "ACN_SparseCtrlMergedLoaderAdvanced", - "ACN_SparseCtrlRGBPreprocessor", - "ACN_SparseCtrlSpreadMethodNode", - "ACN_SparseCtrlWeightExtras", - "ACN_TimestepKeyframeFromStrengthList", - "ACN_TimestepKeyframeInterpolation", - "ControlNetLoaderAdvanced", - "CustomControlNetWeights", - "CustomT2IAdapterWeights", - "DiffControlNetLoaderAdvanced", - "LatentKeyframe", - "LatentKeyframeBatchedGroup", - "LatentKeyframeGroup", - "LatentKeyframeTiming", - "LoadImagesFromDirectory", - "ScaledSoftControlNetWeights", - "ScaledSoftMaskedUniversalWeights", - "SoftControlNetWeights", - "SoftT2IAdapterWeights", - "TimestepKeyframe" - ], - { - "title_aux": "ComfyUI-Advanced-ControlNet" - } - ], - "https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved": [ - [ - "ADE_AdjustPEFullStretch", - "ADE_AdjustPEManual", - "ADE_AdjustPESweetspotStretch", - "ADE_AdjustWeightAllAdd", - "ADE_AdjustWeightAllMult", - "ADE_AdjustWeightIndivAdd", - "ADE_AdjustWeightIndivAttnAdd", - "ADE_AdjustWeightIndivAttnMult", - "ADE_AdjustWeightIndivMult", - "ADE_AnimateDiffCombine", - "ADE_AnimateDiffKeyframe", - "ADE_AnimateDiffLoRALoader", - "ADE_AnimateDiffLoaderGen1", - "ADE_AnimateDiffLoaderV1Advanced", - "ADE_AnimateDiffLoaderWithContext", - "ADE_AnimateDiffModelSettings", - "ADE_AnimateDiffModelSettingsAdvancedAttnStrengths", - "ADE_AnimateDiffModelSettingsSimple", - "ADE_AnimateDiffModelSettings_Release", - "ADE_AnimateDiffSamplingSettings", - "ADE_AnimateDiffSettings", - "ADE_AnimateDiffUniformContextOptions", - "ADE_AnimateDiffUnload", - "ADE_ApplyAnimateDiffModel", - "ADE_ApplyAnimateDiffModelSimple", - "ADE_ApplyAnimateDiffModelWithCameraCtrl", - "ADE_ApplyAnimateDiffModelWithPIA", - "ADE_ApplyAnimateLCMI2VModel", - "ADE_AttachLoraHookToCLIP", - "ADE_AttachLoraHookToConditioning", - "ADE_BatchedContextOptions", - "ADE_CFGExtrasPAG", - "ADE_CFGExtrasPAGSimple", - "ADE_CFGExtrasRescaleCFG", - "ADE_CFGExtrasRescaleCFGSimple", - "ADE_CameraCtrlAnimateDiffKeyframe", - "ADE_CameraManualPoseAppend", - "ADE_CameraPoseAdvanced", - "ADE_CameraPoseBasic", - "ADE_CameraPoseCombo", - "ADE_CombineLoraHooks", - "ADE_CombineLoraHooksEight", - "ADE_CombineLoraHooksFour", - "ADE_ConditioningCombine", - "ADE_ConditioningSetMask", - "ADE_ConditioningSetMaskAndCombine", - "ADE_ConditioningSetUnmaskedAndCombine", - "ADE_ContextExtras_ContextRef", - "ADE_ContextExtras_ContextRef_Keyframe", - "ADE_ContextExtras_ContextRef_KeyframeFromList", - "ADE_ContextExtras_ContextRef_KeyframeInterpolation", - "ADE_ContextExtras_ContextRef_ModeFirst", - "ADE_ContextExtras_ContextRef_ModeIndexes", - "ADE_ContextExtras_ContextRef_ModeSliding", - "ADE_ContextExtras_ContextRef_TuneAttn", - "ADE_ContextExtras_ContextRef_TuneAttnAdain", - "ADE_ContextExtras_NaiveReuse", - "ADE_ContextExtras_NaiveReuse_Keyframe", - "ADE_ContextExtras_NaiveReuse_KeyframeFromList", - "ADE_ContextExtras_NaiveReuse_KeyframeInterpolation", - "ADE_ContextExtras_Set", - "ADE_CustomCFG", - "ADE_CustomCFGKeyframe", - "ADE_CustomCFGKeyframeFromList", - "ADE_CustomCFGKeyframeInterpolation", - "ADE_CustomCFGKeyframeSimple", - "ADE_CustomCFGSimple", - "ADE_EmptyLatentImageLarge", - "ADE_InjectI2VIntoAnimateDiffModel", - "ADE_InjectPIAIntoAnimateDiffModel", - "ADE_InputPIA_Multival", - "ADE_InputPIA_PaperPresets", - "ADE_IterationOptsDefault", - "ADE_IterationOptsFreeInit", - "ADE_LoadAnimateDiffModel", - "ADE_LoadAnimateDiffModelWithCameraCtrl", - "ADE_LoadAnimateLCMI2VModel", - "ADE_LoadCameraPoses", - "ADE_LoadCameraPosesFromPath", - "ADE_LoopedUniformContextOptions", - "ADE_LoopedUniformViewOptions", - "ADE_LoraHookKeyframe", - "ADE_LoraHookKeyframeFromStrengthList", - "ADE_LoraHookKeyframeInterpolation", - "ADE_MultivalConvertToMask", - "ADE_MultivalDynamic", - "ADE_MultivalDynamicFloatInput", - "ADE_MultivalDynamicFloats", - "ADE_MultivalScaledMask", - "ADE_NoiseCalibration", - "ADE_NoiseLayerAdd", - "ADE_NoiseLayerAddWeighted", - "ADE_NoiseLayerNormalizedSum", - "ADE_NoiseLayerReplace", - "ADE_NoisedImageInjectOptions", - "ADE_NoisedImageInjection", - "ADE_PIA_AnimateDiffKeyframe", - "ADE_PairedConditioningCombine", - "ADE_PairedConditioningSetMask", - "ADE_PairedConditioningSetMaskAndCombine", - "ADE_PairedConditioningSetUnmaskedAndCombine", - "ADE_PerturbedAttentionGuidanceMultival", - "ADE_RawSigmaSchedule", - "ADE_RegisterLoraHook", - "ADE_RegisterLoraHookModelOnly", - "ADE_RegisterModelAsLoraHook", - "ADE_RegisterModelAsLoraHookModelOnly", - "ADE_ReplaceCameraParameters", - "ADE_ReplaceOriginalPoseAspectRatio", - "ADE_RescaleCFGMultival", - "ADE_SetLoraHookKeyframe", - "ADE_SigmaSchedule", - "ADE_SigmaScheduleSplitAndCombine", - "ADE_SigmaScheduleToSigmas", - "ADE_SigmaScheduleWeightedAverage", - "ADE_SigmaScheduleWeightedAverageInterp", - "ADE_StandardStaticContextOptions", - "ADE_StandardStaticViewOptions", - "ADE_StandardUniformContextOptions", - "ADE_StandardUniformViewOptions", - "ADE_TimestepsConditioning", - "ADE_UpscaleAndVAEEncode", - "ADE_UseEvolvedSampling", - "ADE_ViewsOnlyContextOptions", - "ADE_VisualizeContextOptionsK", - "ADE_VisualizeContextOptionsKAdv", - "ADE_VisualizeContextOptionsSCustom", - "AnimateDiffLoaderV1", - "CheckpointLoaderSimpleWithNoiseSelect" - ], - { - "title_aux": "AnimateDiff Evolved" - } - ], - "https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite": [ - [ - "VHS_AudioToVHSAudio", - "VHS_BatchManager", - "VHS_DuplicateImages", - "VHS_DuplicateLatents", - "VHS_DuplicateMasks", - "VHS_GetImageCount", - "VHS_GetLatentCount", - "VHS_GetMaskCount", - "VHS_LoadAudio", - "VHS_LoadAudioUpload", - "VHS_LoadImagePath", - "VHS_LoadImages", - "VHS_LoadImagesPath", - "VHS_LoadVideo", - "VHS_LoadVideoFFmpeg", - "VHS_LoadVideoFFmpegPath", - "VHS_LoadVideoPath", - "VHS_MergeImages", - "VHS_MergeLatents", - "VHS_MergeMasks", - "VHS_PruneOutputs", - "VHS_SelectEveryNthImage", - "VHS_SelectEveryNthLatent", - "VHS_SelectEveryNthMask", - "VHS_SelectFilename", - "VHS_SelectImages", - "VHS_SelectLatents", - "VHS_SelectMasks", - "VHS_SplitImages", - "VHS_SplitLatents", - "VHS_SplitMasks", - "VHS_Unbatch", - "VHS_VAEDecodeBatched", - "VHS_VAEEncodeBatched", - "VHS_VHSAudioToAudio", - "VHS_VideoCombine", - "VHS_VideoInfo", - "VHS_VideoInfoLoaded", - "VHS_VideoInfoSource" - ], - { - "title_aux": "ComfyUI-VideoHelperSuite" - } - ], - "https://github.com/Koushakur/ComfyUI-DenoiseChooser": [ - [ - "DenoiseChooser|Koushakur" - ], - { - "title_aux": "ComfyUI-DenoiseChooser" - } - ], - "https://github.com/KunmyonChoi/ComfyUI_S3_direct": [ - [ - "Direct Load Image From S3", - "Direct Save Image To S3", - "Save VHS Video to S3" - ], - { - "title_aux": "ComfyUI_S3_direct" - } - ], - "https://github.com/Kurdknight/Kurdknight_comfycheck": [ - [ - "SystemCheck", - "SystemViz" - ], - { - "title_aux": "KurdKnight ComfyUI System Check Node" - } - ], - "https://github.com/KwaiVGI/ComfyUI-KLingAI-API": [ - [ - "Client", - "Image Generator", - "Image2Video", - "KLingAI Preview Video", - "Lip Sync", - "Lip Sync Audio Input", - "Lip Sync Text Input", - "Text2Video", - "Video Extend", - "Virtual Try On" - ], - { - "title_aux": "ComfyUI-KLingAI-API" - } - ], - "https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP": [ - [ - "SendToDiscordWebhook" - ], - { - "title_aux": "ComfyUI_KytraWebhookHTTP" - } - ], - "https://github.com/LAOGOU-666/ComfyUI_LG_FFT": [ - [ - "LG_FFTNode", - "LG_IFFTNode" - ], - { - "title_aux": "ComfyUI_LG_FFT" - } - ], - "https://github.com/LAOGOU-666/Comfyui-LG_Relight": [ - [ - "LG_Relight", - "LG_Relight_Basic", - "LG_Relight_V2" - ], - { - "title_aux": "Comfyui-LG_Relight" - } - ], - "https://github.com/LEv145/images-grid-comfy-plugin": [ - [ - "GridAnnotation", - "ImageCombine", - "ImagesGridByColumns", - "ImagesGridByRows", - "LatentCombine" - ], - { - "title_aux": "ImagesGrid" - } - ], - "https://github.com/LarryJane491/Image-Captioning-in-ComfyUI": [ - [ - "LoRA Caption Load", - "LoRA Caption Save" - ], - { - "title_aux": "Image-Captioning-in-ComfyUI" - } - ], - "https://github.com/LarryJane491/Lora-Training-in-Comfy": [ - [ - "Lora Training in Comfy (Advanced)", - "Lora Training in ComfyUI", - "Tensorboard Access" - ], - { - "title_aux": "Lora-Training-in-Comfy" - } - ], - "https://github.com/LatentSpaceDirective/ComfyUI-Texturaizer": [ - [ - "Texturaizer_ApplyControlNets", - "Texturaizer_ApplyStyleToPrompt", - "Texturaizer_CachedCNLoader", - "Texturaizer_CachedCheckpointLoader", - "Texturaizer_ClipEncodeSwitchVersion", - "Texturaizer_CombinedConditioningFromColors", - "Texturaizer_ExtractCNData", - "Texturaizer_GenerateNoise", - "Texturaizer_GetCNData", - "Texturaizer_GetClipModelName", - "Texturaizer_GetFluxGuidance", - "Texturaizer_GetIPAdapterData", - "Texturaizer_GetImageData", - "Texturaizer_GetJsonData", - "Texturaizer_GetLoraData", - "Texturaizer_GetMaterialTileData", - "Texturaizer_GetModelName", - "Texturaizer_GetPromptData", - "Texturaizer_GetRenderData", - "Texturaizer_GetSamplerData", - "Texturaizer_GetSegData", - "Texturaizer_GetStyleData", - "Texturaizer_GetVAEName", - "Texturaizer_IPAdapterEmbeds", - "Texturaizer_KSamplerAdvanced", - "Texturaizer_Placeholder", - "Texturaizer_PowerLoraLoader", - "Texturaizer_SendImage", - "Texturaizer_SetGlobalDir", - "Texturaizer_SigmasSelector", - "Texturaizer_SwitchAny", - "Texturaizer_SwitchLazy", - "Texturaizer_UseSDXL" - ], - { - "title_aux": "ComfyUI-Texturaizer" - } - ], - "https://github.com/Layer-norm/comfyui-lama-remover": [ - [ - "LamaRemover", - "LamaRemoverIMG" - ], - { - "title_aux": "Comfyui lama remover" - } - ], - "https://github.com/Lerc/canvas_tab": [ - [ - "Canvas_Tab", - "Send_To_Editor" - ], - { - "author": "Lerc", - "description": "This extension provides a full page image editor with mask support. There are two nodes, one to receive images from the editor and one to send images to the editor.", - "nickname": "Canvas Tab", - "title": "Canvas Tab", - "title_aux": "Canvas Tab" - } - ], - "https://github.com/LevelPixel/ComfyUI-LevelPixel": [ - [ - "Autotagger|LP", - "BoolToInt|LP", - "BoolToString|LP", - "CLIPTextEncodeTranslate|LP", - "FastCheckerPattern|LP", - "FileCounter|LP", - "FloatToInt|LP", - "FloatToString|LP", - "HardModelUnloader|LP", - "HundredthsSimpleFloatSlider|LP", - "ImageLoaderFromPath|LP", - "ImageOverlay|LP", - "ImageRemoveBackground|LP", - "IntToBool|LP", - "IntToFloat|LP", - "IntToString|LP", - "LLMAdvanced|LP", - "LLMLoader|LP", - "LLMSampler|LP", - "LLavaAdvanced|LP", - "LLavaClipLoader|LP", - "LLavaLoader|LP", - "LLavaSamplerAdvanced|LP", - "LLavaSamplerSimple|LP", - "LLavaSimple|LP", - "LoadImage|LP", - "LoraTagLoader|LP", - "ModelUnloader|LP", - "PreviewImageForConditions|LP", - "ShowTextBridge|LP", - "ShowText|LP", - "SimpleFloatSlider|LP", - "SoftModelUnloader|LP", - "StringToBool|LP", - "StringToCombo|LP", - "StringToFloat|LP", - "StringToInt|LP", - "StringToNumber|LP", - "String|LP", - "TagCategoryFilter|LP", - "TagCategoryKeeper|LP", - "TagCategoryRemover|LP", - "TagCategory|LP", - "TagMerger|LP", - "TagRemover|LP", - "TagReplace|LP", - "TagSwitcher|LP", - "TenthsSimpleFloatSlider|LP", - "TextChoiceParser|LP", - "TextTranslate|LP", - "Text|LP" - ], - { - "title_aux": "ComfyUI_LevelPixel" - } - ], - "https://github.com/Lhyejin/ComfyUI-Fill-Image-for-Outpainting": [ - [ - "FillImageForOutpainting" - ], - { - "title_aux": "ComfyUI-Fill-Image-for-Outpainting" - } - ], - "https://github.com/LiJT/ComfyUI-Gemini-Prompt-Generator-JT": [ - [ - "GeminiPromptGeneratorJT" - ], - { - "title_aux": "Gemini prompt generator JT version" - } - ], - "https://github.com/Light-x02/ComfyUI-FluxSettingsNode": [ - [ - "DisableNoise", - "FluxSettingsNode" - ], - { - "title_aux": "Flux Settings Node" - } - ], - "https://github.com/Light-x02/ComfyUI-Image-Metadata-Nodes": [ - [ - "ImageMetadataLoader", - "ImageMetadataSaver" - ], - { - "title_aux": "Image Metadata Nodes" - } - ], - "https://github.com/LightSketch-ai/ComfyUI-LivePortraitNode": [ - [ - "LightSketch Live Portrait", - "Preview Video" - ], - { - "title_aux": "ComfyUI-LivePortraitNode (Replicate API)" - } - ], - "https://github.com/Limitex/ComfyUI-Calculation": [ - [ - "CenterCalculation", - "CreateQRCode" - ], - { - "title_aux": "ComfyUI-Calculation" - } - ], - "https://github.com/Limitex/ComfyUI-Diffusers": [ - [ - "CreateIntListNode", - "DiffusersClipTextEncode", - "DiffusersModelMakeup", - "DiffusersPipelineLoader", - "DiffusersSampler", - "DiffusersSchedulerLoader", - "DiffusersVaeLoader", - "LcmLoraLoader", - "StreamDiffusionCreateStream", - "StreamDiffusionFastSampler", - "StreamDiffusionSampler", - "StreamDiffusionWarmup" - ], - { - "title_aux": "ComfyUI-Diffusers" - } - ], - "https://github.com/Ling-APE/ComfyUI-PixelResolutionCalculator": [ - [ - "LatentSizeToPixelSize", - "PixelResolutionCalculator" - ], - { - "title_aux": "ComfyUI-PixelResolutionCalculator" - } - ], - "https://github.com/Loewen-Hob/rembg-comfyui-node-better": [ - [ - "Image Remove Background (rembg)" - ], - { - "title_aux": "Rembg Background Removal Node for ComfyUI (Better)" - } - ], - "https://github.com/LonicaMewinsky/ComfyUI-MakeFrame": [ - [ - "BreakFrames", - "BreakGrid", - "GetKeyFrames", - "MakeGrid", - "RandomImageFromDir" - ], - { - "title_aux": "ComfyBreakAnim" - } - ], - "https://github.com/LonicaMewinsky/ComfyUI-RawSaver": [ - [ - "SaveTifImage" - ], - { - "title_aux": "ComfyUI-RawSaver" - } - ], - "https://github.com/LucipherDev/ComfyUI-AniDoc": [ - [ - "AniDocLoader", - "AniDocSampler", - "GetAniDocControlnetImages", - "LoadCoTracker" - ], - { - "title_aux": "ComfyUI-AniDoc" - } - ], - "https://github.com/LucipherDev/ComfyUI-Golden-Noise": [ - [ - "GoldenNoise" - ], - { - "title_aux": "ComfyUI-Golden-Noise" - } - ], - "https://github.com/LucipherDev/ComfyUI-TangoFlux": [ - [ - "TangoFluxLoader", - "TangoFluxSampler", - "TangoFluxVAEDecodeAndPlay" - ], - { - "title_aux": "ComfyUI-TangoFlux" - } - ], - "https://github.com/Ludobico/ComfyUI-ScenarioPrompt": [ - [ - "ScenarioPrompt" - ], - { - "title_aux": "ComfyUI-ScenarioPrompt" - } - ], - "https://github.com/LyazS/comfyui-anime-seg": [ - [ - "Anime Character Seg" - ], - { - "title_aux": "Anime Character Segmentation node for comfyui" - } - ], - "https://github.com/LyazS/comfyui-nettools": [ - [ - "NTL_LoadImagesBase64", - "NTL_SendImagesWebSocket" - ], - { - "title_aux": "net tool node for comfyui" - } - ], - "https://github.com/M1kep/ComfyLiterals": [ - [ - "Checkpoint", - "Float", - "Int", - "KepStringLiteral", - "Lora", - "Operation", - "String" - ], - { - "title_aux": "ComfyLiterals" - } - ], - "https://github.com/M1kep/ComfyUI-KepOpenAI": [ - [ - "KepOpenAI_ImageWithPrompt" - ], - { - "title_aux": "ComfyUI-KepOpenAI" - } - ], - "https://github.com/M1kep/ComfyUI-OtherVAEs": [ - [ - "OtherVAE_Taesd" - ], - { - "title_aux": "ComfyUI-OtherVAEs" - } - ], - "https://github.com/M1kep/Comfy_KepKitchenSink": [ - [ - "KepRotateImage" - ], - { - "title_aux": "Comfy_KepKitchenSink" - } - ], - "https://github.com/M1kep/Comfy_KepListStuff": [ - [ - "Empty Images", - "Image Overlay", - "ImageListLoader", - "Join Float Lists", - "Join Image Lists", - "KepStringList", - "KepStringListFromNewline", - "Kep_JoinListAny", - "Kep_RepeatList", - "Kep_ReverseList", - "Kep_VariableImageBuilder", - "List Length", - "Range(Num Steps) - Float", - "Range(Num Steps) - Int", - "Range(Step) - Float", - "Range(Step) - Int", - "Stack Images", - "XYAny", - "XYImage" - ], - { - "title_aux": "Comfy_KepListStuff" - } - ], - "https://github.com/M1kep/Comfy_KepMatteAnything": [ - [ - "MatteAnything_DinoBoxes", - "MatteAnything_GenerateVITMatte", - "MatteAnything_InitSamPredictor", - "MatteAnything_LoadDINO", - "MatteAnything_LoadVITMatteModel", - "MatteAnything_SAMLoader", - "MatteAnything_SAMMaskFromBoxes", - "MatteAnything_ToTrimap" - ], - { - "title_aux": "Comfy_KepMatteAnything" - } - ], - "https://github.com/M1kep/KepPromptLang": [ - [ - "Build Gif", - "Special CLIP Loader" - ], - { - "title_aux": "KepPromptLang" - } - ], - "https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes": [ - [ - "StringCleaning", - "TiktokenTokenizer", - "\u26d4 Generate Negative Prompt", - "\u2728\ud83c\udf10 Groq ALM API - Translate [EN only]", - "\u2728\ud83d\udcac Groq LLM API", - "\u2728\ud83d\udcdd Groq ALM API - Transcribe", - "\u2728\ud83d\udcf7 Groq VLM API", - "\ud83d\udcbe Save Text File With Path", - "\ud83d\udcc1 Get File Path", - "\ud83d\udd20 Tiktoken Tokenizer Info", - "\ud83d\uddbc\ufe0f Download Image from URL", - "\ud83e\uddf9 String Cleaning" - ], - { - "title_aux": "ComfyUI-mnemic-nodes" - } - ], - "https://github.com/Makeezi/ComfyUI-promptLAB": [ - [ - "PromptLAB" - ], - { - "title_aux": "ComfyUI-promptLAB" - } - ], - "https://github.com/MakkiShizu/ComfyUI-Prompt-Wildcards": [ - [ - "makiwildcards", - "textconcatenate" - ], - { - "title_aux": "ComfyUI-Prompt-Wildcards" - } - ], - "https://github.com/MakkiShizu/ComfyUI-SaveAnimatedGIF": [ - [ - "SaveAnimatedGIF", - "SaveAnimatedWEBPRevise" - ], - { - "title_aux": "ComfyUI-SaveAnimatedGIF" - } - ], - "https://github.com/MakkiShizu/comfyui_reimgsize": [ - [ - "Cropimg", - "Reimgsize", - "Resizebyratio" - ], - { - "title_aux": "comfyui_reimgsize" - } - ], - "https://github.com/Mamaaaamooooo/batchImg-rembg-ComfyUI-nodes": [ - [ - "Image Remove Background (rembg)" - ], - { - "title_aux": "Batch Rembg for ComfyUI" - } - ], - "https://github.com/ManglerFTW/ComfyI2I": [ - [ - "Color Transfer", - "Combine and Paste", - "Inpaint Segments", - "Mask Ops" - ], - { - "author": "ManglerFTW", - "title": "ComfyI2I", - "title_aux": "ComfyI2I" - } - ], - "https://github.com/MarcusNyne/m9-prompts-comfyui": [ - [ - "ScramblePrompts_m9", - "TweakWeights_m9" - ], - { - "title_aux": "m9-prompts-comfyui" - } - ], - "https://github.com/MariusKM/ComfyUI-BadmanNodes": [ - [ - "BadmanBrightness", - "BadmanCLIPTextEncodeSDXLRegion", - "BadmanDesaturate", - "BadmanDilateErodeMask", - "BadmanIO", - "BadmanIntUtil", - "BadmanMaskBlur", - "BadmanStringSelect", - "BadmanStringToInteger", - "BadmanWildCardProcessor", - "Badman_Blend", - "Badman_ColorTransferLab", - "Badman_Concat_String", - "Badman_HexGenerator", - "Badman_PalletteGenerator", - "Badman_Print", - "Badman_String" - ], - { - "title_aux": "ComfyUI-BadmanNodes" - } - ], - "https://github.com/MarkoCa1/ComfyUI-Text": [ - [ - "CombinationText", - "PlaceholderText", - "ReplaceText", - "ShowText" - ], - { - "title_aux": "ComfyUI-Text" - } - ], - "https://github.com/MarkoCa1/ComfyUI_Segment_Mask": [ - [ - "AutomaticMask(segment anything)" - ], - { - "title_aux": "ComfyUI_Segment_Mask" - } - ], - "https://github.com/Marksusu/ComfyUI_MTCLIPEncode": [ - [ - "MTCLIPEncode" - ], - { - "title_aux": "ComfyUI_MTCLIPEncode" - } - ], - "https://github.com/Mason-McGough/ComfyUI-Mosaica": [ - [ - "ApplyLUTToLabelImage", - "KMeans", - "LoadLUTFromMatplotlib", - "MeanShift", - "RandomLUT", - "Watershed" - ], - { - "title_aux": "Mosaica" - } - ], - "https://github.com/Mcmillian/ComfyUI-SimpleToolsNodes": [ - [ - "GetModelStep", - "GlmPromptNode" - ], - { - "title_aux": "SimpleToolsNodes" - } - ], - "https://github.com/Meettya/ComfyUI-OneForOne": [ - [ - "OFO Image Fit" - ], - { - "title_aux": "ComfyUI-OneForOne" - } - ], - "https://github.com/MetaGLM/ComfyUI-ZhipuAI-Platform": [ - [ - "VideoReportData", - "VideoReportGenerate", - "VideoReportPull" - ], - { - "title_aux": "ComfyUI ZhipuAI Platform" - } - ], - "https://github.com/MiddleKD/ComfyUI-denoise-mask-scheduler": [ - [ - "ApplyDenoiseMaskSchedulerWithSigma", - "ApplyDenoiseMaskSchedulerWithStep", - "DynamicImageResize" - ], - { - "title_aux": "ComfyUI-denoise-mask-scheduler" - } - ], - "https://github.com/MiddleKD/ComfyUI-mem-safe-wrapper": [ - [ - "MakeModelMemorySafe-safewrapper", - "ResetModelPatcher-safewrapper", - "SimpleDummyModel-safewrapper", - "SimpleDummyRun-safewrapper" - ], - { - "title_aux": "ComfyUI-mem-safe-wrapper" - } - ], - "https://github.com/MiddleKD/ComfyUI-productfix": [ - [ - "ApplyLatentInjection", - "DetailTransferAdd", - "DetailTransferLatentAdd", - "DynamicImageResize", - "GetTextMask", - "ResetModelPatcherCalculateWeight", - "VQDecoder", - "VQEncoder", - "VQLoader" - ], - { - "title_aux": "ComfyUI-productfix" - } - ], - "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack": [ - [ - "FluxModelSave_v2", - "IntegratedRandomPromptGenerator", - "ModelAnalyserNode", - "TextAppender_v2" - ], - { - "author": "Militant Hitchhiker", - "description": "Militant Hitchhiker's multi-function nodes.", - "nickname": "Switchblade", - "title": "Switchblade Pack", - "title_aux": "MilitantHitchhiker-SwitchbladePack" - } - ], - "https://github.com/Mintbeer96/ComfyUI-KerasOCR": [ - [ - "KerasOCR" - ], - { - "title_aux": "ComfyUI-KerasOCR" - } - ], - "https://github.com/Miosp/ComfyUI-FBCNN": [ - [ - "JPEG artifacts removal FBCNN" - ], - { - "title_aux": "ComfyUI-FBCNN" - } - ], - "https://github.com/MitoshiroPJ/comfyui_slothful_attention": [ - [ - "NearSightedAttention", - "NearSightedAttentionSimple", - "NearSightedTile", - "SlothfulAttention" - ], - { - "title_aux": "ComfyUI Slothful Attention" - } - ], - "https://github.com/Miyuutsu/comfyui-save-vpred": [ - [ - "CheckpointSaveVpred" - ], - { - "author": "miyuu", - "description": "Used to save SDXL V-Prediction models directly with correct tensors.", - "nickname": "vpred-save", - "title": "vpred-save", - "title_aux": "comfyui-save-vpred" - } - ], - "https://github.com/MohammadAboulEla/ComfyUI-iTools": [ - [ - "iToolsAddOverlay", - "iToolsCheckerBoard", - "iToolsGridFiller", - "iToolsKSampler", - "iToolsLineLoader", - "iToolsLoadImagePlus", - "iToolsLoadImages", - "iToolsPromptLoader", - "iToolsPromptSaver", - "iToolsPromptStyler", - "iToolsPromptStylerExtra", - "iToolsTextReplacer", - "iToolsVaePreview" - ], - { - "title_aux": "ComfyUI-iTools" - } - ], - "https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1": [ - [ - "AnimeCosplayDir", - "AspectRatioCondition", - "ChooseImage", - "Colors", - "CombinedCrop", - "ConnectFloat", - "ConnectImage", - "ConnectInteger", - "ConnectInteger2", - "ConnectLatent", - "ConnectString", - "CycleInteger", - "DirSelector", - "DoubleClipTextEncode", - "DoubleConditioningMixer", - "EmbeddingLoader", - "FilmCharDir", - "FlexEmptyLatent", - "FloatEvaluate", - "FuseImages", - "FuseImages2", - "HashText", - "HueSatLum", - "HueShift", - "ImageDimensions", - "ImageDimensionsBatch", - "ImageOverlayResized", - "ImageResizeLong", - "ImageZigzag", - "IndoorBackgrounds", - "IndoorDir", - "IntEvaluate", - "IntFloatDict", - "IntStringDict", - "JsonSearch", - "KillWorkflow", - "LandscapeBackgrounds", - "LandscapeDir", - "LinEqEval", - "MakeupStylesDir", - "Mbsampler", - "OptimalCrop", - "Overlay", - "PhotomontageA", - "PhotomontageB", - "PhotomontageC", - "PostSamplerCrop", - "PresetLoad", - "PresetRemove", - "PresetSave", - "PromptSwitcher", - "QuadClipTextEncode", - "RandomString", - "SDXLEmptyLatent", - "SavePrompt", - "SaveWithMetaData", - "SaveWithMetaData2", - "SearchReplace", - "SimplePrompts", - "SpecificStylesDir", - "SplitImages", - "StringJoin", - "TimeStamp", - "TintnShift", - "TricolorComposition", - "WorkflowSettings", - "WrapText", - "X_In_a_Dress", - "X_In_a_Suit", - "X_In_a_Suit)", - "ZoomCrop", - "imageborder" - ], - { - "title_aux": "Node Pack mostly for manipulating strings and integers" - } - ], - "https://github.com/MontagenAI/ComfyUI-Montagen": [ - [ - "MontagenDefaultLoadVideo", - "MontagenImagesPreview" - ], - { - "title_aux": "ComfyUI-Montagen" - } - ], - "https://github.com/MoonHugo/ComfyUI-BiRefNet-Hugo": [ - [ - "BiRefNet_Hugo" - ], - { - "title_aux": "ComfyUI-BiRefNet-Hugo" - } - ], - "https://github.com/MoonHugo/ComfyUI-FFmpeg": [ - [ - "AddAudio", - "AddImgWatermark", - "AddTextWatermark", - "ExtractAudio", - "Frames2Video", - "ImageCopy", - "ImagePath2Tensor", - "ImagesSave", - "LoadImageFromDir", - "MergingVideoByPlenty", - "MergingVideoByTwo", - "MultiCuttingVideo", - "SingleCuttingVideo", - "StitchingVideo", - "Video2Frames", - "VideoFlip" - ], - { - "title_aux": "ComfyUI-FFmpeg" - } - ], - "https://github.com/MoonHugo/ComfyUI-StableAudioOpen": [ - [ - "Text2Audio" - ], - { - "title_aux": "ComfyUI-StableAudioOpen" - } - ], - "https://github.com/Moooonet/ComfyUI-ArteMoon": [ - [ - "LoadPrompts" - ], - { - "title_aux": "ComfyUI-ArteMoon" - } - ], - "https://github.com/MrForExample/ComfyUI-3D-Pack": [ - [], - { - "nodename_pattern": "^\\[Comfy3D\\]", - "title_aux": "ComfyUI-3D-Pack" - } - ], - "https://github.com/MrForExample/ComfyUI-AnimateAnyone-Evolved": [ - [], - { - "nodename_pattern": "^\\[AnimateAnyone\\]", - "title_aux": "ComfyUI-AnimateAnyone-Evolved" - } - ], - "https://github.com/MrSamSeen/ComfyUI_SSStereoscope": [ - [ - "SBS_by_SamSeen" - ], - { - "title_aux": "ComfyUI_SSStereoscope" - } - ], - "https://github.com/Munkyfoot/ComfyUI-TextOverlay": [ - [ - "Text Overlay" - ], - { - "title_aux": "ComfyUI-TextOverlay" - } - ], - "https://github.com/MushroomFleet/DJZ-Nodes": [ - [ - "AnamorphicEffect", - "AspectSize", - "AspectSizeV2", - "BatchOffset", - "BatchRangeInsert", - "BatchRangeSwap", - "BatchThief", - "BlackBarsV1", - "BlackBarsV2", - "BlackBarsV3", - "CRT_Effect_v1", - "CathodeRayEffect", - "ClassicFilmEffect", - "CombineAudio", - "DJZ-LoadLatent", - "DJZ-LoadLatentV2", - "DJZDatamosh", - "DJZDatamoshV2", - "DatasetWordcloud", - "DinskyPlus", - "DinskyPlusV2", - "DjzDatabendingV1", - "DjzDatamoshV3", - "DjzDatamoshV4", - "DjzDatamoshV5", - "DjzDatamoshV6", - "DjzDatamoshV7", - "DjzDatamoshV8", - "FilmGateWeave", - "FilmGrainEffect", - "FilmGrainEffect_v2", - "FishEyeEffect", - "FishEyeV2", - "FractalGenerator", - "FractalGeneratorV2", - "FractalGeneratorV3", - "HalationBloom", - "ImageInterleavedUpscaler", - "ImageInterleavedUpscalerV2", - "ImageSizeAdjuster", - "ImageSizeAdjusterV2", - "ImageSizeAdjusterV3", - "JitterEffect", - "KeyframeBasedUpscalerV1", - "KinescopeEffectV1", - "LensLeaks", - "LoadTextDirectory", - "LoadVideoDirectory", - "LoadVideoDirectoryV2", - "MotionBlending", - "NoiseFactory", - "NoiseFactoryV2", - "NoiseFactoryV3", - "NonSquarePixelsV1", - "PanavisionLensV2", - "ParametricMeshGen", - "ParametricMeshGenV2", - "ProjectFilePathNode", - "PromptCleaner", - "PromptDupeRemover", - "PromptDupeRemoverV2", - "PromptInject", - "PromptSwap", - "RetroVideoText", - "ScreensaverGenerator", - "ScreensaverGeneratorV2", - "SequentialNumberGenerator", - "StringChaos", - "StringWeights", - "Technicolor3Strip_v1", - "Technicolor3Strip_v2", - "ThreeToneStyler", - "TrianglesPlus", - "TrianglesPlusV2", - "UncleanSpeech", - "VGA_Effect_v1", - "VHS_Effect_V3", - "VHS_Effect_v1", - "VHS_Effect_v2", - "VideoBitClamp", - "VideoChromaticAberration", - "VideoCorridorV1", - "VideoCubeV1", - "VideoFilmDamage", - "VideoInterlaceFastV4", - "VideoInterlaceGANV3", - "VideoInterlaced", - "VideoInterlacedV2", - "VideoMazeV1", - "VideoMazeV2", - "VideoNoiseFactory", - "VideoRingPainter", - "VideoTemperatureV1", - "VideoTimecode", - "VideoTrails", - "VideoTrailsV2", - "VideoVignettingV1", - "WaveletCompose", - "WaveletDecompose", - "WinampViz", - "WinampVizV2", - "ZenkaiPrompt", - "ZenkaiPromptV2", - "ZenkaiPromptV3", - "ZenkaiPromptV4", - "ZenkaiWildcard", - "ZenkaiWildcardV2" - ], - { - "author": "DJZ-Nodes", - "title_aux": "DJZ-Nodes" - } - ], - "https://github.com/MuziekMagie/ComfyUI-Matchering": [ - [ - "Matchering", - "MatcheringAdvanced", - "MatcheringLimiterConfig" - ], - { - "title_aux": "ComfyUI-Matchering" - } - ], - "https://github.com/MzMaXaM/ComfyUi-MzMaXaM": [ - [ - "SelectLatentSize", - "TextEncode3in1" - ], - { - "title_aux": "ComfyUi-MzMaXaM" - } - ], - "https://github.com/N3rd00d/ComfyUI-Paint3D-Nodes": [ - [ - "3D_GenerateDepthImage", - "3D_GenerateInpaintMask", - "3D_GenerateInpaintUVMapMask", - "3D_GeneratePreviewVideo", - "3D_LoadMeshModel", - "3D_Projection", - "3D_SaveUVMapImage", - "3D_TrainConfig", - "3D_TrainConfigPipe" - ], - { - "title_aux": "ComfyUI-Paint3D-Nodes" - } - ], - "https://github.com/NMWave/ComfyUI-Nader-Tagging": [ - [ - "Load Text List", - "Split Sentences", - "Split Tags", - "Tag Alternating Combiner", - "Tag Duplicate Remover", - "Token Counter" - ], - { - "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/NakamuraShippo/ComfyUI-NS-ManySliders": [ - [ - "NS_ManySliders" - ], - { - "title_aux": "ComfyUI-NS-ManySliders" - } - ], - "https://github.com/NakamuraShippo/ComfyUI-PromptList": [ - [ - "ComfyUI-PromptList" - ], - { - "author": "NakamuraShippo", - "description": "Custom node to manage prompts in YAML format.", - "title": "ComfyUI-PromptList", - "title_aux": "ComfyUI-PromptList" - } - ], - "https://github.com/NeoGriever/ComfyUI-NeoGriever": [ - [ - "NGs_BetterCLIPTextEncode", - "NGs_Checkerboard_Generator", - "NGs_Create_Solid_Color", - "NGs_Discord_Webhook", - "NGs_Fill_with_Color", - "NGs_Image_Progress_Bar", - "NGs_Multimask_Read", - "NGs_Multimask_Write", - "NGs_ResolutionProvider", - "NGs_Sliders_FLOAT", - "NGs_Sliders_INT", - "NGs_Sliders_PERCENTAGECUT", - "NGs_String_Operator", - "NGs_String_Squisher", - "NGs_Tag_Source", - "NGs_TextBox_JOIN", - "NGs_TextBox_SIMPLE", - "NGs_TextBox_x2", - "NGs_TextBox_x3", - "NGs_Text_Cut_String" - ], - { - "title_aux": "ComfyUI - NeoGriever" - } - ], - "https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin": [ - [ - "NoisyLatentPerlinD" - ], - { - "title_aux": "Dimensional Latent Perlin for ComfyUI" - } - ], - "https://github.com/NeuralSamurAI/ComfyUI-FluxPseudoNegativePrompt": [ - [ - "FluxPseudoNegativeNode" - ], - { - "title_aux": "FluxPseudoNegative" - } - ], - "https://github.com/NeuralSamurAI/ComfyUI-PromptJSON": [ - [ - "PromptJSON" - ], - { - "title_aux": "PromptJSON Node for ComfyUI" - } - ], - "https://github.com/NeuralSamurAI/Comfyui-Superprompt-Unofficial": [ - [ - "SuperPrompterNode" - ], - { - "title_aux": "SuperPrompter Node for ComfyUI" - } - ], - "https://github.com/NguynHungNguyen/Segment-Bedroom-Interior": [ - [ - "BedroomFurnitureMask" - ], - { - "title_aux": "Segment Any Bedroom Interior" - } - ], - "https://github.com/NicholasMcCarthy/ComfyUI_TravelSuite": [ - [ - "LatentTravel" - ], - { - "title_aux": "ComfyUI_TravelSuite" - } - ], - "https://github.com/NimaNzrii/comfyui-photoshop": [ - [ - "\ud83d\udd39 Photoshop RemoteConnection", - "\ud83d\udd39ClipPass", - "\ud83d\udd39Photoshop ComfyUI Plugin", - "\ud83d\udd39SendTo Photoshop Plugin", - "\ud83d\udd39modelPass" - ], - { - "title_aux": "comfyui-photoshop" - } - ], - "https://github.com/NimaNzrii/comfyui-popup_preview": [ - [ - "PreviewPopup" - ], - { - "title_aux": "comfyui-popup_preview" - } - ], - "https://github.com/Niutonian/ComfyUi-NoodleWebcam": [ - [ - "WebcamNode" - ], - { - "title_aux": "ComfyUi-NoodleWebcam" - } - ], - "https://github.com/Nlar/ComfyUI_CartoonSegmentation": [ - [ - "AnimeSegmentation", - "KenBurnsConfigLoader", - "KenBurns_Processor", - "LoadImageFilename" - ], - { - "author": "Nels Larsen", - "description": "This extension offers a front end to the Cartoon Segmentation Project (https://github.com/CartoonSegmentation/CartoonSegmentation)", - "nickname": "CfyCS", - "title": "ComfyUI_CartoonSegmentation", - "title_aux": "ComfyUI_CartoonSegmentation" - } - ], - "https://github.com/Nojahhh/ComfyUI_GLM4_Wrapper": [ - [ - "GLM-4 Inferencing", - "GLM-4 Model Loader", - "GLM-4 Prompt Enhancer" - ], - { - "title_aux": "ComfyUI GLM-4 Wrapper" - } - ], - "https://github.com/NotHarroweD/Harronode": [ - [ - "Harronode" - ], - { - "author": "HarroweD and quadmoon (https://github.com/traugdor)", - "description": "This extension to ComfyUI will build a prompt for the Harrlogos LoRA for SDXL.", - "nickname": "Harronode", - "nodename_pattern": "Harronode", - "title": "Harrlogos Prompt Builder Node", - "title_aux": "Harrlogos Prompt Builder Node" - } - ], - "https://github.com/Nourepide/ComfyUI-Allor": [ - [ - "AlphaChanelAdd", - "AlphaChanelAddByMask", - "AlphaChanelAsMask", - "AlphaChanelRemove", - "AlphaChanelRestore", - "ClipClamp", - "ClipVisionClamp", - "ClipVisionOutputClamp", - "ConditioningClamp", - "ControlNetClamp", - "GligenClamp", - "ImageBatchCopy", - "ImageBatchFork", - "ImageBatchGet", - "ImageBatchJoin", - "ImageBatchPermute", - "ImageBatchRemove", - "ImageClamp", - "ImageCompositeAbsolute", - "ImageCompositeAbsoluteByContainer", - "ImageCompositeRelative", - "ImageCompositeRelativeByContainer", - "ImageContainer", - "ImageContainerInheritanceAdd", - "ImageContainerInheritanceMax", - "ImageContainerInheritanceScale", - "ImageContainerInheritanceSum", - "ImageDrawArc", - "ImageDrawArcByContainer", - "ImageDrawChord", - "ImageDrawChordByContainer", - "ImageDrawEllipse", - "ImageDrawEllipseByContainer", - "ImageDrawLine", - "ImageDrawLineByContainer", - "ImageDrawPieslice", - "ImageDrawPiesliceByContainer", - "ImageDrawPolygon", - "ImageDrawRectangle", - "ImageDrawRectangleByContainer", - "ImageDrawRectangleRounded", - "ImageDrawRectangleRoundedByContainer", - "ImageEffectsAdjustment", - "ImageEffectsGrayscale", - "ImageEffectsLensBokeh", - "ImageEffectsLensChromaticAberration", - "ImageEffectsLensOpticAxis", - "ImageEffectsLensVignette", - "ImageEffectsLensZoomBurst", - "ImageEffectsNegative", - "ImageEffectsSepia", - "ImageFilterBilateralBlur", - "ImageFilterBlur", - "ImageFilterBoxBlur", - "ImageFilterContour", - "ImageFilterDetail", - "ImageFilterEdgeEnhance", - "ImageFilterEdgeEnhanceMore", - "ImageFilterEmboss", - "ImageFilterFindEdges", - "ImageFilterGaussianBlur", - "ImageFilterGaussianBlurAdvanced", - "ImageFilterMax", - "ImageFilterMedianBlur", - "ImageFilterMin", - "ImageFilterMode", - "ImageFilterRank", - "ImageFilterSharpen", - "ImageFilterSmooth", - "ImageFilterSmoothMore", - "ImageFilterStackBlur", - "ImageNoiseBeta", - "ImageNoiseBinomial", - "ImageNoiseBytes", - "ImageNoiseGaussian", - "ImageSegmentation", - "ImageSegmentationCustom", - "ImageSegmentationCustomAdvanced", - "ImageText", - "ImageTextMultiline", - "ImageTextMultilineOutlined", - "ImageTextOutlined", - "ImageTransformCropAbsolute", - "ImageTransformCropCorners", - "ImageTransformCropRelative", - "ImageTransformPaddingAbsolute", - "ImageTransformPaddingRelative", - "ImageTransformResizeAbsolute", - "ImageTransformResizeClip", - "ImageTransformResizeRelative", - "ImageTransformRotate", - "ImageTransformTranspose", - "LatentClamp", - "MaskClamp", - "ModelClamp", - "StyleModelClamp", - "UpscaleModelClamp", - "VaeClamp" - ], - { - "title_aux": "Allor Plugin" - } - ], - "https://github.com/Nuked88/ComfyUI-N-Nodes": [ - [ - "CLIPTextEncodeAdvancedNSuite [n-suite]", - "DynamicPrompt [n-suite]", - "Float Variable [n-suite]", - "FrameInterpolator [n-suite]", - "GPT Loader Simple [n-suite]", - "GPT Sampler [n-suite]", - "ImagePadForOutpaintAdvanced [n-suite]", - "Integer Variable [n-suite]", - "Llava Clip Loader [n-suite]", - "LoadFramesFromFolder [n-suite]", - "LoadImageFromFolder [n-suite]", - "LoadVideo [n-suite]", - "SaveVideo [n-suite]", - "SetMetadataForSaveVideo [n-suite]", - "String Variable [n-suite]" - ], - { - "title_aux": "ComfyUI-N-Nodes" - } - ], - "https://github.com/NyaamZ/ComfyUI-GetBooruTag-ED": [ - [ - "Get Booru Tag \ud83d\udcacED" - ], - { - "author": "NyaamZ", - "description": "Get tag from Booru site.", - "nickname": "Get Booru Tag ED", - "title": "Get Booru Tag ExtendeD", - "title_aux": "Get Booru Tag ExtendeD" - } - ], - "https://github.com/NyaamZ/efficiency-nodes-ED": [ - [ - "Context To BasicPipe", - "Context To DetailerPipe", - "Control Net Script \ud83d\udcacED", - "Detailer (SEGS) \ud83d\udcacED", - "Efficient Loader \ud83d\udcacED", - "Embedding Stacker \ud83d\udcacED", - "FaceDetailer \ud83d\udcacED", - "Get Booru Tag \ud83d\udcacED", - "Int Holder \ud83d\udcacED", - "KSampler (Efficient) \ud83d\udcacED", - "KSampler Text \ud83d\udcacED", - "LoRA Stacker \ud83d\udcacED", - "Load Image \ud83d\udcacED", - "MaskDetailer \ud83d\udcacED", - "Refiner Script \ud83d\udcacED", - "Regional Processor \ud83d\udcacED", - "Regional Script \ud83d\udcacED", - "Regional Stacker \ud83d\udcacED", - "SUPIR Sampler \ud83d\udcacED", - "SUPIR model loader \ud83d\udcacED", - "Save Image \ud83d\udd14ED", - "Ultimate SD Upscale \ud83d\udcacED", - "Wildcard Encode \ud83d\udcacED" - ], - { - "author": "NyaamZ", - "description": "Expansion of Efficiency Nodes for ComfyUI. Significant UX improvements.", - "nickname": "Efficiency Nodes ED", - "title": "Efficiency Nodes ExtendeD", - "title_aux": "Efficiency Nodes ExtendeD" - } - ], - "https://github.com/Off-Live/ComfyUI-off-suite": [ - [ - "Apply CLAHE", - "Cached Image Load From URL", - "CalcMaskBound", - "Crop Center wigh SEGS", - "Crop Center with SEGS", - "Dilate Mask for Each Face", - "GW Number Formatting", - "Grid Image from batch (OFF)", - "Image Crop Fit", - "Image Resize Fit", - "OFF SEGS to Image", - "Paste Face Segment to Image", - "Query Gender and Age", - "RandomSeedfromList", - "SEGS to Face Crop Data", - "Safe Mask to Image", - "VAE Encode For Inpaint V2", - "Watermarking" - ], - { - "title_aux": "ComfyUI-off-suite" - } - ], - "https://github.com/OpalSky-AI/OpalSky_Nodes": [ - [ - "PromptAssistantOpalSky", - "StringSwitchOpalSky", - "string_switch_opalsky" - ], - { - "title_aux": "OpalSky Nodes" - } - ], - "https://github.com/OuticNZ/ComfyUI-Simple-Of-Complex": [ - [ - "Pipe From Parameters", - "Pipe To Parameters", - "Prompt Tidy", - "Text Switch 2 Way", - "Text With Context" - ], - { - "title_aux": "ComfyUI-Simple-Of-Complex" - } - ], - "https://github.com/PCMonsterx/ComfyUI-CSV-Loader": [ - [ - "Load Artists CSV", - "Load Artmovements CSV", - "Load Characters CSV", - "Load Colors CSV", - "Load Composition CSV", - "Load Lighting CSV", - "Load Negative CSV", - "Load Positive CSV", - "Load Settings CSV", - "Load Styles CSV" - ], - { - "title_aux": "ComfyUI-CSV-Loader" - } - ], - "https://github.com/Parameshvadivel/ComfyUI-SVGview": [ - [ - "SVGPreview" - ], - { - "title_aux": "ComfyUI-SVGview" - } - ], - "https://github.com/ParisNeo/lollms_nodes_suite": [ - [ - "Artbot", - "Lollms_Text_Gen", - "Lollms_Text_Saver", - "RandomizeVideo" - ], - { - "title_aux": "lollms_nodes_suite" - } - ], - "https://github.com/ParmanBabra/ComfyUI-Malefish-Custom-Scripts": [ - [ - "CSVPromptsLoader", - "CombinePrompt", - "MultiLoraLoader", - "RandomPrompt" - ], - { - "title_aux": "ComfyUI-Malefish-Custom-Scripts" - } - ], - "https://github.com/PauldeLavallaz/comfyui_claude_prompt_generator": [ - [ - "ClaudeCustomPrompt" - ], - { - "title_aux": "Claude Prompt Generator" - } - ], - "https://github.com/Pfaeff/pfaeff-comfyui": [ - [ - "AstropulsePixelDetector", - "BackgroundRemover", - "ImagePadForBetterOutpaint", - "Inpainting", - "InpaintingPipelineLoader" - ], - { - "title_aux": "pfaeff-comfyui" - } - ], - "https://github.com/Phando/ComfyUI-PhandoNodes": [ - [ - "SearchBySubstring", - "TextConcatenateDynamic" - ], - { - "title_aux": "ComfyUI-PhandoNodes" - } - ], - "https://github.com/Pheat-AI/Remade_nodes": [ - [ - "Batch Enlarged Overlay", - "Batch Image Blend by Mask", - "Batch Image Overlay", - "CannyImageCropper", - "MaskBoundingBox", - "Place Canny On Canvas", - "REMADE Batch Color Blend", - "REMADE Batch Image Blend", - "REMADE Batch Image Composite Masked", - "REMADE Batch Image Select Channel", - "Remove Black To Transparent", - "Shrink Canny Image" - ], - { - "title_aux": "Remade_nodes" - } - ], - "https://github.com/PixelFunAI/ComfyUI_PixelFun": [ - [ - "HunyuanLoadAndEditLoraBlocks", - "HunyuanLoadFromBlockCache", - "HunyuanLoraFromJson", - "HunyuanLoraFromPrompt" - ], - { - "title_aux": "Hunyuan LoRA Loader Nodes" - } - ], - "https://github.com/PixelML/ComfyUI-PixelML-CustomNodes": [ - [ - "AgenticflowAIVariable", - "BooleanInput_PixelML", - "FloatInput_PixelML", - "IntegerInput_PixelML", - "LoadImageFromURL_PixelML", - "SaveImage_PixelML", - "StringInput_PixelML" - ], - { - "title_aux": "PixelML ComfyUI Nodes" - } - ], - "https://github.com/PnthrLeo/comfyUI-PL-data-tools": [ - [ - "AreasGenerator", - "BatchImageGetter", - "CloseImagesSearcher" - ], - { - "title_aux": "comfyUI-PL-data-tools" - } - ], - "https://github.com/Poseidon-fan/ComfyUI-RabbitMQ-Publisher": [ - [ - "Publish Image To RabbitMQ" - ], - { - "title_aux": "ComfyUI-RabbitMQ-Publisher" - } - ], - "https://github.com/Positliver/comfyui-zegr": [ - [ - "ZEGR_ALI_UF", - "ZEGR_LF" - ], - { - "title_aux": "comfyui-zegr" - } - ], - "https://github.com/PowerHouseMan/ComfyUI-AdvancedLivePortrait": [ - [ - "AdvancedLivePortrait", - "ExpData", - "ExpressionEditor", - "LoadExpData", - "PrintExpData:", - "SaveExpData" - ], - { - "title_aux": "ComfyUI-AdvancedLivePortrait" - } - ], - "https://github.com/PressWagon/ComfyUI-StringsAndThings": [ - [ - "DebugString", - "FormatConcatStrings", - "FormattingSingle", - "FourierAnalysisNode", - "MosaicEffectNode", - "PWLoraNameCollector", - "PWLoraSelector", - "TextEmbeddingsInterrogator" - ], - { - "title_aux": "ComfyUI-StringsAndThings" - } - ], - "https://github.com/Pseudotools/Pseudocomfy": [ - [ - "Combiner", - "LoadJSONAuto", - "LoadJSONFromFolder", - "MakeMaskBatch", - "MixedBuiltinCombinerIPAdaper", - "ProcessJSON" - ], - { - "title_aux": "Pseudocomfy" - } - ], - "https://github.com/Q-Bug4/Comfyui-Qb-DateNodes": [ - [ - "DateTimeFormatterNode" - ], - { - "title_aux": "Comfyui-Qb-Date-Nodes" - } - ], - "https://github.com/Q-Bug4/Comfyui-Simple-Json-Node": [ - [ - "JSONArrayIteratorNode", - "JSONGeneratorNode", - "JSONKeyCheckerNode", - "JSONLengthNode", - "JSONMergeNode", - "JSONModifierNode", - "JSONObjectIteratorNode", - "JSONParserNode", - "JSONStringifierNode", - "RandomJSONValueNode" - ], - { - "title_aux": "Simple JSON Parser Node for ComfyUI" - } - ], - "https://github.com/QaisMalkawi/ComfyUI-QaisHelper": [ - [ - "Bool Binary Operation", - "Bool Unary Operation", - "Item Debugger", - "Item Switch", - "Nearest SDXL Resolution", - "SDXL Resolution", - "Size Swapper" - ], - { - "title_aux": "ComfyUI-Qais-Helper" - } - ], - "https://github.com/Raapys/ComfyUI-LatentGC_Aggressive": [ - [ - "LatentGC" - ], - { - "title_aux": "LatentGC Aggressive" - } - ], - "https://github.com/Ravenmelt/ComfyUI-Rodin": [ - [ - "LoadRodinAPIKEY", - "Preview_3DMesh", - "PromptForRodin", - "RodinImage3D", - "RodinMultipleImage3D", - "RodinText3D" - ], - { - "title_aux": "ComfyUI-Rodin" - } - ], - "https://github.com/RenderRift/ComfyUI-RenderRiftNodes": [ - [ - "AnalyseMetadata", - "DateIntegerNode", - "DisplayMetaOptions", - "LoadImageWithMeta", - "MetadataOverlayNode", - "VideoPathMetaExtraction" - ], - { - "title_aux": "ComfyUI-RenderRiftNodes" - } - ], - "https://github.com/RhizoNymph/ComfyUI-CLIPSlider": [ - [ - "CLIPSlider" - ], - { - "title_aux": "ComfyUI-CLIPSlider" - } - ], - "https://github.com/RhizoNymph/ComfyUI-ColorWheel": [ - [ - "AccurateColorWheelNode" - ], - { - "title_aux": "ComfyUI-ColorWheel" - } - ], - "https://github.com/RhizoNymph/ComfyUI-Latte": [ - [ - "LatteVideoGenerator" - ], - { - "title_aux": "ComfyUI-Latte" - } - ], - "https://github.com/RiceRound/ComfyUI_CryptoCat": [ - [ - "CryptoCatImage", - "DecodeCryptoNode", - "ExcuteCryptoNode", - "RandomSeedNode", - "SaveCryptoBridgeNode", - "SaveCryptoNode" - ], - { - "title_aux": "ComfyUI Compression and Encryption Node" - } - ], - "https://github.com/Rinsanga1/comfyui-florence2xy": [ - [ - "Florence2toCoordinatesButxy", - "LoadImageWithName", - "LoadPhi35VisionModel", - "Phi35VisionRun" - ], - { - "title_aux": "comfyui-florence2xy" - } - ], - "https://github.com/RodrigoSKohl/ComfyUI-Panoramic-ImgStitcher": [ - [ - "Image Stitching Node" - ], - { - "title_aux": "Panoramic Image Stitcher" - } - ], - "https://github.com/RomanKuschanow/ComfyUI-Advanced-Latent-Control": [ - [ - "LatentAddTransform", - "LatentInterpolateTransform", - "LatentMirror", - "LatentNormalize", - "LatentShift", - "MirrorTransform", - "MultiplyTransform", - "OffsetCombine", - "OneTimeLatentAddTransform", - "OneTimeLatentInterpolateTransform", - "OneTimeMirrorTransform", - "OneTimeMultiplyTransform", - "OneTimeShiftTransform", - "ShiftTransform", - "TransformHijack", - "TransformOffset", - "TransformSampler", - "TransformSamplerAdvanced", - "TransformsCombine" - ], - { - "title_aux": "Advanced Latent Control" - } - ], - "https://github.com/Ron-Digital/ComfyUI-SceneGenerator": [ - [ - "Scene Generator" - ], - { - "title_aux": "ComfyUI-SceneGenerator" - } - ], - "https://github.com/Runware/ComfyUI-Runware": [ - [ - "Runware API Manager", - "Runware Background Removal", - "Runware ControlNet", - "Runware ControlNet Combine", - "Runware ControlNet PreProcessor", - "Runware Embedding Search", - "Runware Embeddings Combine", - "Runware Image Caption", - "Runware Image Inference", - "Runware Image Masking", - "Runware Image Upscaler", - "Runware Lora Combine", - "Runware Lora Search", - "Runware Model Search", - "Runware PhotoMaker V2", - "Runware Refiner", - "Runware VAE Search" - ], - { - "title_aux": "Runware.ai ComfyUI Inference API Integration" - } - ], - "https://github.com/Ryuukeisyou/comfyui_face_parsing": [ - [ - "BBoxDecompose(FaceParsing)", - "BBoxDetect(FaceParsing)", - "BBoxDetectorLoader(FaceParsing)", - "BBoxListItemSelect(FaceParsing)", - "BBoxResize(FaceParsing)", - "ColorAdjust(FaceParsing)", - "FaceParse(FaceParsing)", - "FaceParsingModelLoader(FaceParsing)", - "FaceParsingProcessorLoader(FaceParsing)", - "FaceParsingResultsParser(FaceParsing)", - "GuidedFilter(FaceParsing)", - "ImageCropWithBBox(FaceParsing)", - "ImageCropWithBBoxList(FaceParsing)", - "ImageInsertWithBBox(FaceParsing)", - "ImageListSelect(FaceParsing)", - "ImagePadWithBBox(FaceParsing)", - "ImageResizeCalculator(FaceParsing)", - "ImageResizeWithBBox(FaceParsing)", - "ImageSize(FaceParsing)", - "LatentCropWithBBox(FaceParsing)", - "LatentInsertWithBBox(FaceParsing)", - "LatentSize(FaceParsing)", - "MaskBatchComposite(FaceParsing)", - "MaskBlackOut(FaceParsing)", - "MaskBorderDissolve(FaceParsing)", - "MaskComposite(FaceParsing)", - "MaskCropWithBBox(FaceParsing)", - "MaskInsertWithBBox(FaceParsing)", - "MaskListSelect(FaceParsing)", - "MaskToBBoxList(FaceParsing)", - "SkinDetectTraditional(FaceParsing)" - ], - { - "title_aux": "comfyui_face_parsing" - } - ], - "https://github.com/Ryuukeisyou/comfyui_io_helpers": [ - [ - "ImageLoadAsMaskByPath(IOHelpers)", - "ImageLoadByPath(IOHelpers)", - "ImageLoadFromBase64(IOHelpers)", - "ImageSaveAsBase64(IOHelpers)", - "ImageSaveToPath(IOHelpers)", - "TypeConversion(IOHelpers)", - "VHSFileNamesToStrings(IOHelpers)" - ], - { - "title_aux": "comfyui_io_helpers" - } - ], - "https://github.com/SEkINVR/ComfyUI-SaveAs": [ - [ - "ComfyUISaveAs" - ], - { - "title_aux": "ComfyUI SaveAS" - } - ], - "https://github.com/SKBv0/ComfyUI_SKBundle": [ - [ - "AspectRatioAdvanced", - "DisplayEverything", - "ImageComparer", - "MultiFloat", - "MultiTextNode", - "SKB_AnySwitch", - "SeamlessTexture", - "TextBox", - "TitlePlus" - ], - { - "title_aux": "ComfyUI SKBundle" - } - ], - "https://github.com/SLAPaper/ComfyUI-Image-Selector": [ - [ - "ImageDuplicator", - "ImageSelector", - "LatentDuplicator", - "LatentSelector" - ], - { - "title_aux": "ComfyUI-Image-Selector" - } - ], - "https://github.com/SOELexicon/ComfyUI-LexMSDBNodes": [ - [ - "MSSqlSelectNode", - "MSSqlTableNode" - ], - { - "title_aux": "LexMSDBNodes" - } - ], - "https://github.com/SOELexicon/ComfyUI-LexTools": [ - [ - "AesthetlcScoreSorter", - "AgeClassifierNode", - "ArtOrHumanClassifierNode", - "CalculateAestheticScore", - "DocumentClassificationNode", - "FoodCategoryClassifierNode", - "ImageAspectPadNode", - "ImageCaptioning", - "ImageFilterByFloatScoreNode", - "ImageFilterByIntScoreNode", - "ImageQualityScoreNode", - "ImageRankingNode", - "ImageScaleToMin", - "LoadAesteticModel", - "MD5ImageHashNode", - "SamplerPropertiesNode", - "ScoreConverterNode", - "SeedIncrementerNode", - "SegformerNode", - "SegformerNodeMasks", - "SegformerNodeMergeSegments", - "StepCfgIncrementNode" - ], - { - "title_aux": "ComfyUI-LexTools" - } - ], - "https://github.com/SS-snap/ComfyUI-Snap_Processing": [ - [ - "AreaCalculator", - "PyQtCanvasNode", - "Snapload" - ], - { - "title_aux": "Snap Processing for Comfyui" - } - ], - "https://github.com/SamKhoze/ComfyUI-DeepFuze": [ - [ - "DeepFuze Save", - "DeepFuzeAdavance", - "DeepFuzeFaceSwap", - "DeepfuzePreview", - "LLM_node", - "PlayBackAudio", - "TTS_generation" - ], - { - "title_aux": "DeepFuze" - } - ], - "https://github.com/SayanoAI/Comfy-RVC": [ - [ - "Any2ListNode", - "AudioBatchValueNode", - "AudioInfoNode", - "AudioTranscriptionNode", - "BatchedTranscriptionEncoderNode", - "DownloadAudio", - "ImageRepeatInterleavedNode", - "LatentRepeatInterleavedNode", - "List2AnyNode", - "LoadHubertModel", - "LoadPitchExtractionParams", - "LoadRVCModelNode", - "LoadWhisperModelNode", - "MergeAudioNode", - "MergeImageBatches", - "MergeLatentBatches", - "MuseAudioFeatureExtractionNode", - "MuseImageFeatureExtractionNode", - "MuseTalkNode", - "ProcessAudioNode", - "RVC-Studio.LoadAudio", - "RVC-Studio.PreviewAudio", - "RVCNode", - "RVCProcessDatasetNode", - "RVCTrainModelNode", - "RVCTrainParamsNode", - "SimpleMathNode", - "SliceNode", - "SortImagesNode", - "UVR5Node", - "ZipNode" - ], - { - "title_aux": "Comfy-RVC" - } - ], - "https://github.com/Scholar01/ComfyUI-Keyframe": [ - [ - "KeyframeApply", - "KeyframeInterpolationPart", - "KeyframePart" - ], - { - "title_aux": "SComfyUI-Keyframe" - } - ], - "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader": [ - [ - "CombinedDiffusersLoader", - "DiffusersClipLoader", - "DiffusersUNETLoader", - "DiffusersVAELoader" - ], - { - "title_aux": "ComfyUI-DiffusersLoader" - } - ], - "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode": [ - [ - "OllamaCLIPTextEncode", - "OllamaPromptGenerator" - ], - { - "author": "Michael Standen", - "description": "Use AI to generate prompts and perform CLIP text encoding", - "nickname": "Ollama Prompt Encode", - "title": "Ollama Prompt Encode", - "title_aux": "Ollama Prompt Encode" - } - ], - "https://github.com/SeaArtLab/ComfyUI-Long-CLIP": [ - [ - "LongCLIPTextEncodeFlux", - "SeaArtLongClip", - "SeaArtLongXLClipMerge" - ], - { - "title_aux": "ComfyUI-Long-CLIP" - } - ], - "https://github.com/SeanScripts/ComfyUI-PixtralLlamaMolmoVision": [ - [ - "AutoVisionModelLoader", - "JoinString", - "LlamaVisionGenerateText", - "LlamaVisionModelLoader", - "MolmoGenerateText", - "MolmoModelLoader", - "ParseBoundingBoxes", - "ParsePoints", - "PixtralGenerateText", - "PixtralImageEncode", - "PixtralModelLoader", - "PixtralTextEncode", - "PlotPoints", - "RegexFindAll", - "RegexSearch", - "RegexSplitString", - "RegexSubstitution", - "SelectIndex", - "SliceList" - ], - { - "title_aux": "ComfyUI-PixtralLlamaMolmoVision" - } - ], - "https://github.com/SeanScripts/ComfyUI-Unload-Model": [ - [ - "UnloadAllModels", - "UnloadModel" - ], - { - "title_aux": "ComfyUI-Unload-Model" - } - ], - "https://github.com/SeargeDP/ComfyUI_Searge_LLM": [ - [ - "Searge_AdvOptionsNode", - "Searge_LLM_Node", - "Searge_Output_Node" - ], - { - "title_aux": "Searge-LLM for ComfyUI v1.0" - } - ], - "https://github.com/SeargeDP/SeargeSDXL": [ - [ - "SeargeAdvancedParameters", - "SeargeCheckpointLoader", - "SeargeConditionMixing", - "SeargeConditioningMuxer2", - "SeargeConditioningMuxer5", - "SeargeConditioningParameters", - "SeargeControlnetAdapterV2", - "SeargeControlnetModels", - "SeargeCustomAfterUpscaling", - "SeargeCustomAfterVaeDecode", - "SeargeCustomPromptMode", - "SeargeDebugPrinter", - "SeargeEnablerInputs", - "SeargeFloatConstant", - "SeargeFloatMath", - "SeargeFloatPair", - "SeargeFreeU", - "SeargeGenerated1", - "SeargeGenerationParameters", - "SeargeHighResolution", - "SeargeImage2ImageAndInpainting", - "SeargeImageAdapterV2", - "SeargeImageSave", - "SeargeImageSaving", - "SeargeInput1", - "SeargeInput2", - "SeargeInput3", - "SeargeInput4", - "SeargeInput5", - "SeargeInput6", - "SeargeInput7", - "SeargeIntegerConstant", - "SeargeIntegerMath", - "SeargeIntegerPair", - "SeargeIntegerScaler", - "SeargeLatentMuxer3", - "SeargeLoraLoader", - "SeargeLoras", - "SeargeMagicBox", - "SeargeModelSelector", - "SeargeOperatingMode", - "SeargeOutput1", - "SeargeOutput2", - "SeargeOutput3", - "SeargeOutput4", - "SeargeOutput5", - "SeargeOutput6", - "SeargeOutput7", - "SeargeParameterProcessor", - "SeargePipelineStart", - "SeargePipelineTerminator", - "SeargePreviewImage", - "SeargePromptAdapterV2", - "SeargePromptCombiner", - "SeargePromptStyles", - "SeargePromptText", - "SeargeSDXLBasePromptEncoder", - "SeargeSDXLImage2ImageSampler", - "SeargeSDXLImage2ImageSampler2", - "SeargeSDXLPromptEncoder", - "SeargeSDXLRefinerPromptEncoder", - "SeargeSDXLSampler", - "SeargeSDXLSampler2", - "SeargeSDXLSamplerV3", - "SeargeSamplerAdvanced", - "SeargeSamplerInputs", - "SeargeSaveFolderInputs", - "SeargeSeparator", - "SeargeStylePreprocessor", - "SeargeTextInputV2", - "SeargeUpscaleModelLoader", - "SeargeUpscaleModels", - "SeargeVAELoader" - ], - { - "title_aux": "SeargeSDXL" - } - ], - "https://github.com/Seedsa/Fooocus_Nodes": [ - [ - "BasicScheduler", - "CLIPLoader", - "CLIPMergeSimple", - "CLIPSave", - "CLIPSetLastLayer", - "CLIPTextEncode", - "CLIPTextEncodeSDXL", - "CLIPTextEncodeSDXLRefiner", - "CLIPVisionEncode", - "CLIPVisionLoader", - "Canny", - "CheckpointLoader", - "CheckpointLoaderSimple", - "CheckpointSave", - "ConditioningAverage", - "ConditioningCombine", - "ConditioningConcat", - "ConditioningSetArea", - "ConditioningSetAreaPercentage", - "ConditioningSetMask", - "ConditioningSetTimestepRange", - "ConditioningZeroOut", - "ControlNetApply", - "ControlNetApplyAdvanced", - "ControlNetLoader", - "CropMask", - "DiffControlNetLoader", - "DiffusersLoader", - "DualCLIPLoader", - "EmptyImage", - "EmptyLatentImage", - "ExponentialScheduler", - "FeatherMask", - "FlipSigmas", - "Fooocus ApplyImagePrompt", - "Fooocus Controlnet", - "Fooocus Describe", - "Fooocus Expansion", - "Fooocus ImagePrompt", - "Fooocus Inpaint", - "Fooocus KSampler", - "Fooocus Loader", - "Fooocus LoraStack", - "Fooocus PipeOut", - "Fooocus PreKSampler", - "Fooocus Styles", - "Fooocus Upscale", - "Fooocus detailerFix", - "Fooocus negative", - "Fooocus positive", - "Fooocus preDetailerFix", - "Fooocus samLoaderPipe", - "Fooocus ultralyticsDetectorPipe", - "FreeU", - "FreeU_V2", - "GLIGENLoader", - "GLIGENTextBoxApply", - "GrowMask", - "HyperTile", - "HypernetworkLoader", - "ImageBatch", - "ImageBlend", - "ImageBlur", - "ImageColorToMask", - "ImageCompositeMasked", - "ImageCrop", - "ImageInvert", - "ImageOnlyCheckpointLoader", - "ImageOnlyCheckpointSave", - "ImagePadForOutpaint", - "ImageQuantize", - "ImageScale", - "ImageScaleBy", - "ImageScaleToTotalPixels", - "ImageSharpen", - "ImageToMask", - "ImageUpscaleWithModel", - "InpaintModelConditioning", - "InvertMask", - "JoinImageWithAlpha", - "KSampler", - "KSamplerAdvanced", - "KSamplerSelect", - "KarrasScheduler", - "LatentAdd", - "LatentBatch", - "LatentBatchSeedBehavior", - "LatentBlend", - "LatentComposite", - "LatentCompositeMasked", - "LatentCrop", - "LatentFlip", - "LatentFromBatch", - "LatentInterpolate", - "LatentMultiply", - "LatentRotate", - "LatentSubtract", - "LatentUpscale", - "LatentUpscaleBy", - "LoadImage", - "LoadImageMask", - "LoadLatent", - "LoraLoader", - "LoraLoaderModelOnly", - "MaskComposite", - "MaskToImage", - "ModelMergeAdd", - "ModelMergeBlocks", - "ModelMergeSimple", - "ModelMergeSubtract", - "ModelSamplingContinuousEDM", - "ModelSamplingDiscrete", - "PatchModelAddDownscale", - "PerpNeg", - "PhotoMakerEncode", - "PhotoMakerLoader", - "PolyexponentialScheduler", - "PorterDuffImageComposite", - "PreviewImage", - "RebatchImages", - "RebatchLatents", - "RepeatImageBatch", - "RepeatLatentBatch", - "RescaleCFG", - "SDTurboScheduler", - "SD_4XUpscale_Conditioning", - "SVD_img2vid_Conditioning", - "SamplerCustom", - "SamplerDPMPP_2M_SDE", - "SamplerDPMPP_SDE", - "SaveAnimatedPNG", - "SaveAnimatedWEBP", - "SaveImage", - "SaveLatent", - "SelfAttentionGuidance", - "SetLatentNoiseMask", - "SolidMask", - "SplitImageWithAlpha", - "SplitSigmas", - "StableZero123_Conditioning", - "StableZero123_Conditioning_Batched", - "StyleModelApply", - "StyleModelLoader", - "TomePatchModel", - "UNETLoader", - "UpscaleModelLoader", - "VAEDecode", - "VAEDecodeTiled", - "VAEEncode", - "VAEEncodeForInpaint", - "VAEEncodeTiled", - "VAELoader", - "VAESave", - "VPScheduler", - "VideoLinearCFGGuidance", - "unCLIPCheckpointLoader", - "unCLIPConditioning" - ], - { - "title_aux": "ComfyUI Fooocus Nodes" - } - ], - "https://github.com/Shadetail/ComfyUI_Eagleshadow": [ - [ - "Batch 12 Images", - "Detect Transparency", - "Fix Checkpoint Name", - "ImageLinearGammaCompositeMasked", - "KSampler Same Noise", - "MaskGlow", - "OffsetImage", - "Round Float to String", - "SaveImageToFolder", - "Select ControlNet", - "Select Model 20", - "Simple Load Image Batch" - ], - { - "title_aux": "Eagleshadow Custom Nodes" - } - ], - "https://github.com/Shakker-Labs/ComfyUI-IPAdapter-Flux": [ - [ - "ApplyIPAdapterFlux", - "ApplyIPAdapterFluxAdvanced", - "IPAdapterFluxLoader", - "IPAdapterFluxLoaderAdvanced" - ], - { - "title_aux": "ComfyUI-IPAdapter-Flux" - } - ], - "https://github.com/Shannooty/ComfyUI-Timer-Nodes": [ - [ - "TimerStart", - "TimerStringConcat" - ], - { - "title_aux": "ComfyUI Timer Nodes" - } - ], - "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting": [ - [ - "CropImageByRect", - "INPAINT_ColorCorrection", - "INPAINT_CropImage", - "INPAINT_InpaintingWithModel", - "INPAINT_LoadModel", - "INPAINT_PasteBackCropImage", - "INPAINT_VAEDecode", - "INPAINT_VAEEncode", - "ImagePostprocess", - "ImagePreprocess" - ], - { - "title_aux": "ComfyUI-Image-Inpainting" - } - ], - "https://github.com/Shiba-2-shiba/ComfyUI_DiffusionModel_fp8_converter": [ - [ - "ClipFP8ConverterNode", - "ModelFP8ConverterNode" - ], - { - "title_aux": "ComfyUI_DiffusionModel_fp8_converter" - } - ], - "https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node": [ - [ - "ASCIIArtNode", - "ASCIIArtNodev2", - "ASCIIArtSinglefontNode" - ], - { - "author": "Shiba-2-shiba", - "description": "This node generates colorful ASCII art using custom character sets and fonts.", - "nickname": "ColorASCII", - "title": "Colorful ASCII Art Node", - "title_aux": "ComfyUI-color-ascii-art-node" - } - ], - "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools": [ - [ - "Cascade", - "Luts", - "Waifu2x" - ], - { - "title_aux": "Shibiko AI ComfyUI Tools" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust": [ - [ - "ApplyStyleModelAdjust" - ], - { - "title_aux": "Apply Style Model Adjust for ComfyUI" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-AstralAnimator": [ - [ - "AstralAnimator" - ], - { - "title_aux": "ComfyUI-AstralAnimator" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-CohernetVideoSampler": [ - [ - "CohernetVideoSampler" - ], - { - "title_aux": "ComfyUI Coherent Video Sampler Node" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-EmptyHunyuanLatent": [ - [ - "EmptyHunyuanLatentForImage", - "EmptyHunyuanLatentForVideo" - ], - { - "title_aux": "ComfyUI-EmptyHunyuanLatent" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-FreeMemory": [ - [ - "FreeMemoryCLIP", - "FreeMemoryImage", - "FreeMemoryLatent", - "FreeMemoryModel" - ], - { - "title_aux": "ComfyUI-FreeMemory" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-Gemini_Flash_2.0_Exp": [ - [ - "AudioRecorder", - "Gemini_Flash_200_Exp" - ], - { - "title_aux": "ComfyUI-Gemini_Flash_2.0_Exp" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave": [ - [ - "EmptyVideoLatentForHunyuan", - "HunyuanVideoSamplerSave", - "ImageMotionInfluance", - "ResizeImageForHunyuan" - ], - { - "title_aux": "ComfyUI-HunyuanVideoSamplerSave" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoStyler": [ - [ - "HunyuanVideoStyler" - ], - { - "title_aux": "ComfyUI-HunyuanVideoStyler" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-ImageMotionGuider": [ - [ - "ImageMotionGuider" - ], - { - "title_aux": "ComfyUI-ImageMotionGuider" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-LatentSyncWrapper": [ - [ - "D_LatentSyncNode", - "D_VideoLengthAdjuster" - ], - { - "title_aux": "ComfyUI-LatentSyncWrapper" - } - ], - "https://github.com/ShmuelRonen/ComfyUI-SVDResizer": [ - [ - "SVDRsizer" - ], - { - "title_aux": "ComfyUI-SVDResizer" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_Flux_1.1_RAW_API": [ - [ - "FluxPro11WithFinetune" - ], - { - "title_aux": "ComfyUI Flux 1.1 Ultra & Raw Node" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_Gemini_Flash": [ - [ - "Gemini_Flash_002" - ], - { - "title_aux": "ComfyUI_Gemini_Flash" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_pixtral_large": [ - [ - "ComfyUIPixtralLarge", - "MultiImagesInput", - "preview_text" - ], - { - "title_aux": "ComfyUI Pixtral Large Extension" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_pixtral_vision": [ - [ - "ComfyUIPixtralVision", - "MultiImagesInput", - "preview_text" - ], - { - "title_aux": "ComfyUI_pixtral_vision" - } - ], - "https://github.com/ShmuelRonen/ComfyUI_wav2lip": [ - [ - "LoadAudio", - "Wav2Lip" - ], - { - "title_aux": "Wav2Lip Node for ComfyUI" - } - ], - "https://github.com/Shraknard/ComfyUI-Remover": [ - [ - "Remover" - ], - { - "title_aux": "ComfyUI-Remover" - } - ], - "https://github.com/Siberpone/lazy-pony-prompter": [ - [ - "LPP_Danbooru", - "LPP_Deleter", - "LPP_Derpibooru", - "LPP_E621", - "LPP_Loader_Danbooru", - "LPP_Loader_Derpibooru", - "LPP_Loader_E621", - "LPP_Saver" - ], - { - "title_aux": "Lazy Pony Prompter" - } - ], - "https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders": [ - [ - "CheckPointLoader_Text", - "EmptyLatentImage_Text", - "LoRALoader_Text", - "LoadImage_Text" - ], - { - "title_aux": "ComfyUI_Textarea_Loaders" - } - ], - "https://github.com/SimonHeese/ComfyUI_AnimationNodes/raw/refs/heads/main/animated_offset_pad.py": [ - [ - "AnimatedOffsetPadding" - ], - { - "title_aux": "ComfyUI_AnimationNodes" - } - ], - "https://github.com/SlackinJack/asyncdiff_comfyui": [ - [ - "ADADIPASampler", - "ADADSampler", - "ADIPAdapterSelector", - "ADLoraSelector", - "ADModelSelector", - "ADMultiLoraSelector", - "ADPipelineConfig", - "ADSD1Sampler", - "ADSD2Sampler", - "ADSD3Sampler", - "ADSDUpscaleSampler", - "ADSDXLSampler", - "ADSVDSampler" - ], - { - "title_aux": "asyncdiff_comfyui" - } - ], - "https://github.com/SlackinJack/distrifuser_comfyui": [ - [ - "DFPipelineConfig", - "DFSampler" - ], - { - "title_aux": "distrifuser_comfyui" - } - ], - "https://github.com/SleeeepyZhou/ComfyUI-CNtranslator": [ - [ - "CNtranslator", - "TextShow" - ], - { - "title_aux": "CNtranslator" - } - ], - "https://github.com/Slickytail/ComfyUI-InstantX-IPAdapter-SD3": [ - [ - "ApplyIPAdapterSD3", - "IPAdapterSD3Loader" - ], - { - "title_aux": "ComfyUI-InstantX-IPAdapter-SD3" - } - ], - "https://github.com/Smirnov75/ComfyUI-mxToolkit": [ - [ - "mxSeed", - "mxSlider", - "mxSlider2D", - "mxStop" - ], - { - "title_aux": "ComfyUI-mxToolkit" - } - ], - "https://github.com/Smuzzies/comfyui_meme_maker": [ - [ - "MemeMaker" - ], - { - "title_aux": "comfyui_meme_maker" - } - ], - "https://github.com/SoftMeng/ComfyUI-DeepCache-Fix": [ - [ - "DeepCache_Fix" - ], - { - "title_aux": "ComfyUI-DeepCache-Fix" - } - ], - "https://github.com/SoftMeng/ComfyUI-PIL": [ - [ - "PIL Effects (Mexx)", - "PIL Merge Image (Mexx)", - "PIL Remove Black Dots (Mexx)", - "PIL TITLE (Mexx)" - ], - { - "title_aux": "ComfyUI-PIL" - } - ], - "https://github.com/SoftMeng/ComfyUI_ImageToText": [ - [ - "ComfyUI_ImageToText" - ], - { - "title_aux": "ComfyUI_ImageToText" - } - ], - "https://github.com/SoftMeng/ComfyUI_Mexx_Poster": [ - [ - "ComfyUI_Mexx_Poster" - ], - { - "title_aux": "ComfyUI_Mexx_Poster" - } - ], - "https://github.com/SoftMeng/ComfyUI_Mexx_Styler": [ - [ - "MexxSDXLPromptStyler", - "MexxSDXLPromptStylerAdvanced" - ], - { - "title_aux": "ComfyUI_Mexx_Styler" - } - ], - "https://github.com/SongGuo11/ComfyUI-SaveAnything-SG11": [ - [ - "SG11_SaveAnything" - ], - { - "title_aux": "ComfyUI SaveAnything Node (SG11)" - } - ], - "https://github.com/Sorcerio/MBM-Music-Visualizer": [ - [ - "id", - "mbmAudioFeatureCalculator", - "mbmAudioLoader", - "mbmImageConcat", - "mbmPromptSequenceBuilder", - "mbmPromptSequenceBuilderAdv", - "mbmPromptSequenceInterpolator", - "mbmPromptSequenceLoader", - "mbmPromptSequenceRenderer" - ], - { - "title_aux": "MBM's Music Visualizer" - } - ], - "https://github.com/SozeInc/ComfyUI-Mobile": [ - [ - "Mobile_Settings_Launcher_Data", - "Send Notification (Mobile)", - "Settings Launcher (Mobile)", - "Ultimate Concat (Mobile)" - ], - { - "title_aux": "ComfyUI-Mobile" - } - ], - "https://github.com/SozeInc/ComfyUI_Soze": [ - [ - "CSV Reader", - "CSV Writer", - "Empty Images", - "Get Most Common Image Colors", - "Image Batch Process Switch", - "Image List Loader", - "Image Overlay", - "Is Input In List", - "Load Image", - "Load Image From URL", - "Load Images From Folder", - "Multiline Concatenate Strings", - "Output Filename", - "Prompt Cache", - "Prompt X Lora", - "Range(Num Steps) - Float", - "Range(Num Steps) - Int", - "Range(Step) - Float", - "Range(Step) - Int", - "String Replacer", - "Text Contains (Return Bool)", - "Text Contains (Return String)", - "Variable Image Builder", - "XY Any", - "XY Image" - ], - { - "title_aux": "Quality of Life Nodes for ComfyUI" - } - ], - "https://github.com/SpaceKendo/ComfyUI-svd_txt2vid": [ - [ - "SVD_txt2vid_ConditioningwithLatent" - ], - { - "title_aux": "Text to video for Stable Video Diffusion in ComfyUI" - } - ], - "https://github.com/SparknightLLC/ComfyUI-ConditionalInterrupt": [ - [ - "Conditional Interrupt" - ], - { - "title_aux": "ComfyUI-ConditionalInterrupt" - } - ], - "https://github.com/SparknightLLC/ComfyUI-LatentClamp": [ - [ - "LatentClamp" - ], - { - "title_aux": "ComfyUI-LatentClamp" - } - ], - "https://github.com/SparknightLLC/ComfyUI-MaskArbiter": [ - [ - "GroundingDinoSAM2SegmentList", - "MaskArbiter" - ], - { - "title_aux": "ComfyUI-MaskArbiter" - } - ], - "https://github.com/SpenserCai/ComfyUI-FunAudioLLM": [ - [ - "CosyVoiceCrossLingualNode", - "CosyVoiceInstructNode", - "CosyVoiceLoadSpeakerModelFromUrlNode", - "CosyVoiceLoadSpeakerModelNode", - "CosyVoiceSFTNode", - "CosyVoiceSaveSpeakerModelNode", - "CosyVoiceZeroShotNode", - "SenseVoiceNode" - ], - { - "title_aux": "ComfyUI-FunAudioLLM" - } - ], - "https://github.com/Stability-AI/ComfyUI-SAI_API": [ - [ - "Stability Conservative Upscale", - "Stability Control Skech", - "Stability Control Structure", - "Stability Creative Upscale", - "Stability Erase", - "Stability Image Core", - "Stability Image Ultra", - "Stability Inpainting", - "Stability Outpainting", - "Stability Remove Background", - "Stability SD3", - "Stability Search and Replace" - ], - { - "title_aux": "Stability API nodes for ComfyUI" - } - ], - "https://github.com/Stability-AI/stability-ComfyUI-nodes": [ - [ - "ColorBlend", - "ControlLoraSave", - "GetImageSize" - ], - { - "title_aux": "stability-ComfyUI-nodes" - } - ], - "https://github.com/StableDiffusionVN/SDVN_Comfy_node": [ - [ - "SDVM Image List Repeat", - "SDVN API chatbot", - "SDVN Any From List", - "SDVN Any Input Type", - "SDVN Any List", - "SDVN Any Repeat", - "SDVN Any Show", - "SDVN Apply Style Model", - "SDVN Auto Generate", - "SDVN Boolean", - "SDVN CLIP Download", - "SDVN CLIP Text Encode", - "SDVN CLIPVision Download", - "SDVN Checkpoint Download", - "SDVN ControlNet Download", - "SDVN Controlnet Apply", - "SDVN DALL-E Generate Image", - "SDVN Dic Convert", - "SDVN Easy IPAdapter weight", - "SDVN Exif check", - "SDVN Filter List", - "SDVN IC-Light v2", - "SDVN Image Adjust", - "SDVN Image Film Grain", - "SDVN Image HSL", - "SDVN Image Info", - "SDVN Image Layout", - "SDVN Image Repeat", - "SDVN Image Scraper", - "SDVN Image Size", - "SDVN Image White Balance", - "SDVN Inpaint", - "SDVN Join Parameter", - "SDVN Joy Caption", - "SDVN KSampler", - "SDVN Load Checkpoint", - "SDVN Load Image", - "SDVN Load Image Folder", - "SDVN Load Image From List", - "SDVN Load Image Url", - "SDVN Load Lora", - "SDVN Load Model", - "SDVN Load Text", - "SDVN Logic", - "SDVN Lora Download", - "SDVN Lora info", - "SDVN Menu Option", - "SDVN Merge Flux", - "SDVN Merge SD1", - "SDVN Merge SDXL", - "SDVN Metadata Check", - "SDVN Model Merge", - "SDVN Model info editor", - "SDVN Pipe In", - "SDVN Pipe Out", - "SDVN Pipe Out All", - "SDVN Quick Menu", - "SDVN Run Python Code", - "SDVN Run Test", - "SDVN Save Text", - "SDVN Seed", - "SDVN Simple Any Input", - "SDVN StyleModel Download", - "SDVN Styles", - "SDVN Switch", - "SDVN Translate", - "SDVN UNET Download", - "SDVN UPscale Latent", - "SDVN Upscale Image", - "SDVN UpscaleModel Download", - "SDVN VAE Download" - ], - { - "title_aux": "SDVN Comfy node" - } - ], - "https://github.com/StarMagicAI/comfyui_tagger": [ - [ - "DownloadAndLoadFlorence2Lora_jsonL", - "DownloadAndLoadFlorence2Model_jsonL", - "Florence2ModelLoader_jsonL", - "Florence2Run_jsonL", - "batch_text_save_jsonL" - ], - { - "title_aux": "ComfyUI-tagger" - } - ], - "https://github.com/Starnodes2024/ComfyUI_StarNodes": [ - [ - "DetailStarDaemon", - "FluxStartSettings", - "Fluxstarsampler", - "OllamaModelChooser", - "SD35StartSettings", - "SDXLStartSettings", - "SDstarsampler", - "StarFiveWildcards", - "StarImageSwitch", - "StarTextFilter", - "Starupscale" - ], - { - "title_aux": "ComfyUI_StarNodes" - } - ], - "https://github.com/StartHua/ComfyUI_OOTDiffusion_CXH": [ - [ - "Ood_CXH" - ], - { - "title_aux": "ComfyUI_OOTDiffusion_CXH" - } - ], - "https://github.com/StartHua/ComfyUI_PCDMs": [ - [ - "PCDMS_CXH" - ], - { - "title_aux": "ComfyUI_PCDMs" - } - ], - "https://github.com/StartHua/ComfyUI_Seg_VITON": [ - [ - "segformer_agnostic", - "segformer_clothes", - "segformer_remove_bg", - "stabel_vition" - ], - { - "title_aux": "ComfyUI_Seg_VITON" - } - ], - "https://github.com/StartHua/Comfyui_CXH_DeepLX": [ - [ - "CXH_DeepLX_Free", - "CXH_DeepLX_translate" - ], - { - "title_aux": "Comfyui_CXH_DeepLX" - } - ], - "https://github.com/StartHua/Comfyui_CXH_FluxLoraMerge": [ - [ - "CXH_Lora_Merge" - ], - { - "title_aux": "Comfyui_CXH_FluxLoraMerge" - } - ], - "https://github.com/StartHua/Comfyui_CXH_Phi_3.5": [ - [ - "CXH_Phi_Run", - "CXH_Phi_chat_load", - "CXH_Phi_chat_min", - "CXH_Phi_load" - ], - { - "title_aux": "Comfyui_CXH_Phi_3.5" - } - ], - "https://github.com/StartHua/Comfyui_CXH_joy_caption": [ - [ - "CXH_DownloadAndLoadFlorence2Model", - "CXH_Florence2Run", - "CXH_HG_Model_Load", - "CXH_IC_Lora_Florence2Run", - "CXH_IC_lora_reversal", - "CXH_Ic_lora_Joy_batch", - "CXH_Min2_6_classifiy", - "CXH_Min2_6_prompt_Run", - "CXH_MinCP3_4B_Chat", - "CXH_MinCP3_4B_Load", - "CXH_SmolVlm_Load", - "CXH_SmolVlm_Run", - "Joy_caption", - "Joy_caption_alpha_batch", - "Joy_caption_alpha_batch_Dirs", - "Joy_caption_alpha_load", - "Joy_caption_alpha_prompt", - "Joy_caption_alpha_run", - "Joy_caption_load" - ], - { - "title_aux": "Comfyui_CXH_joy_caption" - } - ], - "https://github.com/StartHua/Comfyui_Gemini2": [ - [ - "CXH_Gemini2_TX", - "CXH_Gemini2_Vision", - "CXH_Local_Prompt" - ], - { - "title_aux": "Comfyui_Gemini2" - } - ], - "https://github.com/StartHua/Comfyui_joytag": [ - [ - "CXH_JoyTag" - ], - { - "title_aux": "Comfyui_joytag" - } - ], - "https://github.com/StartHua/Comfyui_segformer_b2_clothes": [ - [ - "segformer_b2_clothes", - "segformer_b3_fashion" - ], - { - "title_aux": "comfyui_segformer_b2_clothes" - } - ], - "https://github.com/Steudio/ComfyUI_Steudio": [ - [ - "Combine Tiles", - "Divide Image", - "Divide Image and Select Tile", - "Divide and Conquer Algorithm", - "Divide and Conquer Algorithm (No Upscale)", - "Load Images into List", - "Make Size", - "Seed Shifter", - "Sequence Generator" - ], - { - "title_aux": "ComfyUI Steudio" - } - ], - "https://github.com/SuperBeastsAI/ComfyUI-SuperBeasts": [ - [ - "Deflicker - Experimental (SuperBeasts.AI)", - "HDR Effects (SuperBeasts.AI)", - "Image Batch Manager (SuperBeasts.AI)", - "Make Resized Mask Batch (SuperBeasts.AI)", - "Mask Batch Manager (SuperBeasts.AI)", - "Pixel Deflicker - Experimental (SuperBeasts.AI)", - "String List Manager (SuperBeasts.AI)" - ], - { - "title_aux": "ComfyUI-SuperBeasts" - } - ], - "https://github.com/SuperMasterBlasterLaser/ComfyUI_YOLO_Classifiers": [ - [ - "YOLO Classifier Model Loader", - "YOLO Classify" - ], - { - "title_aux": "ComfyUI_YOLO_Classifiers" - } - ], - "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes": [ - [ - "CR 8 Channel In", - "CR 8 Channel Out", - "CR Apply ControlNet", - "CR Apply LoRA Stack", - "CR Apply Model Merge", - "CR Apply Multi Upscale", - "CR Apply Multi-ControlNet", - "CR Arabic Text RTL", - "CR Aspect Ratio", - "CR Aspect Ratio Banners", - "CR Aspect Ratio SDXL", - "CR Aspect Ratio Social Media", - "CR Batch Images From List", - "CR Batch Process Switch", - "CR Binary Pattern", - "CR Binary To Bit List", - "CR Bit Schedule", - "CR Central Schedule", - "CR Checker Pattern", - "CR Clamp Value", - "CR Clip Input Switch", - "CR Color Bars", - "CR Color Gradient", - "CR Color Panel", - "CR Color Tint", - "CR Combine Prompt", - "CR Combine Schedules", - "CR Comic Panel Templates", - "CR Composite Text", - "CR Conditioning Input Switch", - "CR Conditioning Mixer", - "CR ControlNet Input Switch", - "CR Current Frame", - "CR Cycle Images", - "CR Cycle Images Simple", - "CR Cycle LoRAs", - "CR Cycle Models", - "CR Cycle Text", - "CR Cycle Text Simple", - "CR Data Bus In", - "CR Data Bus Out", - "CR Debatch Frames", - "CR Diamond Panel", - "CR Draw Perspective Text", - "CR Draw Pie", - "CR Draw Shape", - "CR Draw Text", - "CR Encode Scheduled Prompts", - "CR Feathered Border", - "CR Float Range List", - "CR Float To Integer", - "CR Float To String", - "CR Font File List", - "CR Get Parameter From Prompt", - "CR Gradient Float", - "CR Gradient Integer", - "CR Half Drop Panel", - "CR Halftone Filter", - "CR Halftone Grid", - "CR Hires Fix Process Switch", - "CR Image Border", - "CR Image Grid Panel", - "CR Image Input Switch", - "CR Image Input Switch (4 way)", - "CR Image List", - "CR Image List Simple", - "CR Image Output", - "CR Image Panel", - "CR Image Pipe Edit", - "CR Image Pipe In", - "CR Image Pipe Out", - "CR Image Size", - "CR Img2Img Process Switch", - "CR Increment Float", - "CR Increment Integer", - "CR Index", - "CR Index Increment", - "CR Index Multiply", - "CR Index Reset", - "CR Input Text List", - "CR Integer Multiple", - "CR Integer Range List", - "CR Integer To String", - "CR Interpolate Latents", - "CR Intertwine Lists", - "CR Keyframe List", - "CR Latent Batch Size", - "CR Latent Input Switch", - "CR LoRA List", - "CR LoRA Stack", - "CR Load Animation Frames", - "CR Load Flow Frames", - "CR Load GIF As List", - "CR Load Image List", - "CR Load Image List Plus", - "CR Load LoRA", - "CR Load Prompt Style", - "CR Load Schedule From File", - "CR Load Scheduled ControlNets", - "CR Load Scheduled LoRAs", - "CR Load Scheduled Models", - "CR Load Text List", - "CR Mask Text", - "CR Math Operation", - "CR Model Input Switch", - "CR Model List", - "CR Model Merge Stack", - "CR Module Input", - "CR Module Output", - "CR Module Pipe Loader", - "CR Multi Upscale Stack", - "CR Multi-ControlNet Stack", - "CR Multiline Text", - "CR Output Flow Frames", - "CR Output Schedule To File", - "CR Overlay Text", - "CR Overlay Transparent Image", - "CR Page Layout", - "CR Pipe Switch", - "CR Polygons", - "CR Prompt List", - "CR Prompt List Keyframes", - "CR Prompt Scheduler", - "CR Prompt Text", - "CR Radial Gradient", - "CR Random Hex Color", - "CR Random LoRA Stack", - "CR Random Multiline Colors", - "CR Random Multiline Values", - "CR Random Panel Codes", - "CR Random RGB", - "CR Random RGB Gradient", - "CR Random Shape Pattern", - "CR Random Weight LoRA", - "CR Repeater", - "CR SD1.5 Aspect Ratio", - "CR SDXL Aspect Ratio", - "CR SDXL Base Prompt Encoder", - "CR SDXL Prompt Mix Presets", - "CR SDXL Prompt Mixer", - "CR SDXL Style Text", - "CR Save Text To File", - "CR Schedule Input Switch", - "CR Schedule To ScheduleList", - "CR Seamless Checker", - "CR Seed", - "CR Seed to Int", - "CR Select Font", - "CR Select ISO Size", - "CR Select Model", - "CR Select Resize Method", - "CR Set Switch From String", - "CR Set Value On Binary", - "CR Set Value On Boolean", - "CR Set Value on String", - "CR Simple Banner", - "CR Simple Binary Pattern", - "CR Simple Binary Pattern Simple", - "CR Simple Image Compare", - "CR Simple List", - "CR Simple Meme Template", - "CR Simple Prompt List", - "CR Simple Prompt List Keyframes", - "CR Simple Prompt Scheduler", - "CR Simple Schedule", - "CR Simple Text Panel", - "CR Simple Text Scheduler", - "CR Simple Text Watermark", - "CR Simple Titles", - "CR Simple Value Scheduler", - "CR Split String", - "CR Starburst Colors", - "CR Starburst Lines", - "CR String To Boolean", - "CR String To Combo", - "CR String To Number", - "CR Style Bars", - "CR Switch Model and CLIP", - "CR Text", - "CR Text Blacklist", - "CR Text Concatenate", - "CR Text Cycler", - "CR Text Input Switch", - "CR Text Input Switch (4 way)", - "CR Text Length", - "CR Text List", - "CR Text List Simple", - "CR Text List To String", - "CR Text Operation", - "CR Text Replace", - "CR Text Scheduler", - "CR Thumbnail Preview", - "CR Trigger", - "CR Upscale Image", - "CR VAE Decode", - "CR VAE Input Switch", - "CR Value", - "CR Value Cycler", - "CR Value Scheduler", - "CR Vignette Filter", - "CR XY From Folder", - "CR XY Index", - "CR XY Interpolate", - "CR XY List", - "CR XY Product", - "CR XY Save Grid Image", - "CR XYZ Index", - "CR_Aspect Ratio For Print" - ], - { - "author": "Suzie1", - "description": "175 custom nodes for artists, designers and animators.", - "nickname": "Comfyroll Studio", - "title": "Comfyroll Studio", - "title_aux": "Comfyroll Studio" - } - ], - "https://github.com/Sxela/ComfyWarp": [ - [ - "ExtractOpticalFlow", - "FixedQueue", - "LoadFrame", - "LoadFrameFromDataset", - "LoadFrameFromFolder", - "LoadFramePairFromDataset", - "LoadFrameSequence", - "MakeFrameDataset", - "MixConsistencyMaps", - "OffsetNumber", - "RenderVideo", - "ResizeToFit", - "SaveFrame", - "SchedulerFloat", - "SchedulerInt", - "SchedulerString", - "WarpFrame" - ], - { - "title_aux": "ComfyWarp" - } - ], - "https://github.com/TGu-97/ComfyUI-TGu-utils": [ - [ - "MPNReroute", - "MPNSwitch", - "PNSwitch" - ], - { - "title_aux": "TGu Utilities" - } - ], - "https://github.com/THtianhao/ComfyUI-FaceChain": [ - [ - "FC CropAndPaste", - "FC CropBottom", - "FC CropToOrigin", - "FC FaceDetectCrop", - "FC FaceFusion", - "FC FaceSegAndReplace", - "FC FaceSegment", - "FC MaskOP", - "FC RemoveCannyFace", - "FC ReplaceByMask", - "FC StyleLoraLoad" - ], - { - "title_aux": "ComfyUI-FaceChain" - } - ], - "https://github.com/THtianhao/ComfyUI-Portrait-Maker": [ - [ - "PM_BoxCropImage", - "PM_ColorTransfer", - "PM_ExpandMaskBox", - "PM_FaceFusion", - "PM_FaceShapMatch", - "PM_FaceSkin", - "PM_GetImageInfo", - "PM_ImageResizeTarget", - "PM_ImageScaleShort", - "PM_MakeUpTransfer", - "PM_MaskDilateErode", - "PM_MaskMerge2Image", - "PM_PortraitEnhancement", - "PM_RatioMerge2Image", - "PM_ReplaceBoxImg", - "PM_RetinaFace", - "PM_Similarity", - "PM_SkinRetouching", - "PM_SuperColorTransfer", - "PM_SuperMakeUpTransfer" - ], - { - "title_aux": "ComfyUI-Portrait-Maker" - } - ], - "https://github.com/TJ16th/comfyUI_TJ_NormalLighting": [ - [ - "EulerLightingNode" - ], - { - "title_aux": "comfyUI_TJ_NormalLighting" - } - ], - "https://github.com/TKRLAB/ComfyUI_Prompt_List_JSON": [ - [ - "ComfyUI_Prompt_JSON" - ], - { - "author": "TKRLAB", - "description": "ComfyUI JSON-based prompt management tool.", - "title": "ComfyUI_Prompt_List_JSON", - "title_aux": "Prompt List JSON" - } - ], - "https://github.com/TMElyralab/Comfyui-MusePose": [ - [ - "filenamestring", - "musepose", - "museposealign" - ], - { - "title_aux": "Comfyui-MusePose" - } - ], - "https://github.com/TRI3D-LC/ComfyUI-MiroBoard": [ - [ - "add-image-miro-board" - ], - { - "title_aux": "ComfyUI-MiroBoard" - } - ], - "https://github.com/TRI3D-LC/tri3d-comfyui-nodes": [ - [ - "get_histogram_limits", - "main_light_layer", - "main_scaled_paste", - "simple_rescale_histogram", - "tri3d-HistogramEqualization", - "tri3d-LAB_2_RGB", - "tri3d-RGB_2_LAB", - "tri3d-adjust-neck", - "tri3d-atr-parse", - "tri3d-atr-parse-batch", - "tri3d-bgremove-mega", - "tri3d-clean_mask", - "tri3d-clear-memory", - "tri3d-clipdrop-bgremove-api", - "tri3d-clipdrop-bgreplace-api", - "tri3d-composite-image-splitter", - "tri3d-dwpose", - "tri3d-extract-hand", - "tri3d-extract-masks-batch", - "tri3d-extract-parts-batch", - "tri3d-extract-parts-batch2", - "tri3d-extract-parts-mask-batch", - "tri3d-extract-pascal-parts-batch", - "tri3d-extract_pose_part", - "tri3d-face-recognise", - "tri3d-flexible_color_extract", - "tri3d-float-to-image", - "tri3d-fuzzification", - "tri3d-get_histogram_limits", - "tri3d-get_mean_and_standard_deviation", - "tri3d-get_threshold_for_bg_swap", - "tri3d-image-mask-2-box", - "tri3d-image-mask-box-2-image", - "tri3d-interaction-canny", - "tri3d-levindabhi-cloth-seg", - "tri3d-load-pose-json", - "tri3d-load_AEMatter_Model", - "tri3d-luminosity-match", - "tri3d-main_transparent_background", - "tri3d-photoroom-bgremove-api", - "tri3d-pose-adaption", - "tri3d-pose-to-image", - "tri3d-position-hands", - "tri3d-position-parts-batch", - "tri3d-position-pascal-parts-batch", - "tri3d-recolor-mask", - "tri3d-recolor-mask-LAB_space", - "tri3d-recolor-mask-LAB_space_manual", - "tri3d-recolor-mask-RGB_space", - "tri3d-renormalize_array", - "tri3d-run_AEMatter_inference", - "tri3d-scaled-paste", - "tri3d-scaled-paste_unsafe", - "tri3d-simple_bg_swap", - "tri3d-simple_rescale_histogram", - "tri3d-skin-feathered-padded-mask", - "tri3d-swap-pixels", - "tri3d_H_Stack_Images", - "tri3d_NSFWFilter", - "tri3d_SaveImage_absolute", - "tri3d_SaveText_absolute", - "tri3d_Skip_HeadMask", - "tri3d_Skip_HeadMask_AddNeck", - "tri3d_SmartBox", - "tri3d_Wait_And_Read_File", - "tri3d_extract_facer_mask", - "tri3d_fill_mask", - "tri3d_is_only_trouser", - "tri3d_position_pose_part" - ], - { - "title_aux": "tri3d-comfyui-nodes" - } - ], - "https://github.com/TTPlanetPig/Comfyui_Hunyuan3D": [ - [ - "GifImageViewerNode", - "Hunyuan3DNode", - "SquareImage" - ], - { - "title_aux": "Comfyui_Hunyuan3D" - } - ], - "https://github.com/TTPlanetPig/Comfyui_JC2": [ - [ - "ExtraOptionsNode", - "JoyCaption2", - "JoyCaption2_simple" - ], - { - "title_aux": "Comfyui_JC2" - } - ], - "https://github.com/TTPlanetPig/Comfyui_Object_Migration": [ - [ - "TTP_Expand_And_Mask", - "TTP_text_mix" - ], - { - "title_aux": "Clothing Migration Kit" - } - ], - "https://github.com/TTPlanetPig/Comfyui_TTP_CN_Preprocessor": [ - [ - "TTPlanet_Tile_Preprocessor_GF", - "TTPlanet_Tile_Preprocessor_Simple", - "TTPlanet_Tile_Preprocessor_cufoff", - "TTPlanet_inpainting_Preprecessor" - ], - { - "title_aux": "for comfyui image proprocessor" - } - ], - "https://github.com/TTPlanetPig/Comfyui_TTP_Toolset": [ - [ - "TTP_CoordinateSplitter", - "TTP_Expand_And_Mask", - "TTP_Image_Assy", - "TTP_Image_Tile_Batch", - "TTP_Tile_image_size", - "TTP_condsetarea_merge", - "TTP_condsetarea_merge_test", - "TTP_condtobatch", - "TTP_text_mix", - "TTPlanet_Tile_Preprocessor_Simple", - "TeaCacheHunyuanVideoSampler" - ], - { - "title_aux": "Comfyui_TTP_Toolset" - } - ], - "https://github.com/TW-CUI/TW-CUI-Util": [ - [ - "TWCUI_Util_CommonSDXLResolutions", - "TWCUI_Util_FloatLiteral", - "TWCUI_Util_GenerationParameters", - "TWCUI_Util_GenerationPrompts", - "TWCUI_Util_IntLiteral", - "TWCUI_Util_ModelVAELORALoader", - "TWCUI_Util_ModelVAELoader", - "TWCUI_Util_MultilineStringLiteral", - "TWCUI_Util_SaveImage", - "TWCUI_Util_SaveImageAdvanced", - "TWCUI_Util_StringLiteral" - ], - { - "title_aux": "TW-CUI-Util" - } - ], - "https://github.com/TZOOTZ/ComfyUI-TZOOTZ_VHS": [ - [ - "TZOOTZ_VHSNode" - ], - { - "title_aux": "TZOOTZ VHS Effect Node" - } - ], - "https://github.com/TaiTair/comfyui-simswap": [ - [ - "Simswap", - "SimswapBuildFaceModel", - "SimswapFaceSwapOpt", - "SimswapImageDublicator", - "SimswapLoadFaceModel", - "SimswapMaskHelper", - "SimswapOptions", - "SimswapRestoreFace", - "SimswapSaveFaceModel" - ], - { - "title_aux": "Simswap Node for ComfyUI" - } - ], - "https://github.com/Taremin/comfyui-prompt-extranetworks": [ - [ - "PromptExtraNetworks" - ], - { - "title_aux": "ComfyUI Prompt ExtraNetworks" - } - ], - "https://github.com/Taremin/comfyui-string-tools": [ - [ - "StringToolsBalancedChoice", - "StringToolsConcat", - "StringToolsRandomChoice", - "StringToolsString", - "StringToolsText" - ], - { - "title_aux": "ComfyUI String Tools" - } - ], - "https://github.com/Taremin/webui-monaco-prompt": [ - [ - "WebuiMonacoPromptFind", - "WebuiMonacoPromptReplace" - ], - { - "title_aux": "WebUI Monaco Prompt" - } - ], - "https://github.com/TeaCrab/ComfyUI-TeaNodes": [ - [ - "TC_ColorFill", - "TC_CropTo", - "TC_EqualizeCLAHE", - "TC_ImageResize", - "TC_ImageScale", - "TC_KorniaGamma", - "TC_RandomColorFill", - "TC_SizeApproximation" - ], - { - "title_aux": "ComfyUI-TeaNodes" - } - ], - "https://github.com/TechnoByteJS/ComfyUI-TechNodes": [ - [ - "ClipQuant", - "MBW Layers String", - "ModelQuant", - "SD1 MBW Layers", - "SD1 MBW Layers Binary", - "SDNext Merge", - "SDXL MBW Layers", - "SDXL MBW Layers Binary", - "VAE Merge", - "VAEQuant", - "VAERepeat" - ], - { - "title_aux": "TechNodes" - } - ], - "https://github.com/TemryL/ComfyS3": [ - [ - "DownloadFileS3", - "LoadImageS3", - "SaveImageS3", - "SaveVideoFilesS3", - "UploadFileS3" - ], - { - "title_aux": "ComfyS3" - } - ], - "https://github.com/TemryL/ComfyUI-IDM-VTON": [ - [ - "IDM-VTON", - "PipelineLoader" - ], - { - "title_aux": "ComfyUI-IDM-VTON [WIP]" - } - ], - "https://github.com/TencentQQGYLab/ComfyUI-ELLA": [ - [ - "CombineClipEllaEmbeds", - "ConcatConditionEllaEmbeds", - "ConditionToEllaEmbeds", - "ELLALoader", - "EllaApply", - "EllaCombineEmbeds", - "EllaEncode", - "EllaTextEncode", - "SetEllaTimesteps", - "T5TextEncode #ELLA", - "T5TextEncoderLoader #ELLA" - ], - { - "title_aux": "ComfyUI-ELLA" - } - ], - "https://github.com/TheBarret/ZSuite": [ - [ - "ZSuite: Prompter", - "ZSuite: RF Noise", - "ZSuite: SeedMod" - ], - { - "title_aux": "ZSuite" - } - ], - "https://github.com/TheBill2001/comfyui-upscale-by-model": [ - [ - "UpscaleImageByUsingModel" - ], - { - "author": "Tr\u1ea7n Nam Tu\u1ea5n", - "description": "This custom node allow upscaling an image by a factor using a model.", - "nickname": "Upscale Image By (Using Model)", - "title": "Upscale Image By (Using Model)", - "title_aux": "comfyui-upscale-by-model" - } - ], - "https://github.com/TheMistoAI/ComfyUI-Anyline": [ - [ - "AnyLinePreprocessor" - ], - { - "title_aux": "Anyline" - } - ], - "https://github.com/ThepExcel/aiangelgallery-comfyui": [ - [ - "ThepExcel_AiAngel_MultilineTextChoiceNode" - ], - { - "title_aux": "Multiline Text Choice Node for ComfyUI" - } - ], - "https://github.com/ThereforeGames/ComfyUI-Unprompted": [ - [ - "Unprompted", - "UnpromptedSetRack" - ], - { - "title_aux": "ComfyUI-Unprompted" - } - ], - "https://github.com/TinyTerra/ComfyUI_tinyterraNodes": [ - [ - "ttN KSampler_v2", - "ttN advPlot combo", - "ttN advPlot images", - "ttN advPlot range", - "ttN advPlot string", - "ttN advanced xyPlot", - "ttN compareInput", - "ttN concat", - "ttN conditioning", - "ttN debugInput", - "ttN float", - "ttN hiresfixScale", - "ttN imageOutput", - "ttN imageREMBG", - "ttN int", - "ttN multiModelMerge", - "ttN pipe2BASIC", - "ttN pipe2DETAILER", - "ttN pipeEDIT", - "ttN pipeEncodeConcat", - "ttN pipeIN", - "ttN pipeKSampler", - "ttN pipeKSamplerAdvanced", - "ttN pipeKSamplerAdvanced_v2", - "ttN pipeKSamplerSDXL", - "ttN pipeKSamplerSDXL_v2", - "ttN pipeKSampler_v2", - "ttN pipeLoader", - "ttN pipeLoaderSDXL", - "ttN pipeLoaderSDXL_v2", - "ttN pipeLoader_v2", - "ttN pipeLoraStack", - "ttN pipeOUT", - "ttN seed", - "ttN text", - "ttN text3BOX_3WAYconcat", - "ttN text7BOX_concat", - "ttN textCycleLine", - "ttN textDebug", - "ttN textOutput", - "ttN tinyLoader", - "ttN xyPlot" - ], - { - "author": "tinyterra", - "description": "This extension offers extensive xyPlot, various pipe nodes, fullscreen image viewer based on node history, dynamic widgets, interface customization, and more.", - "nickname": "\ud83c\udf0f", - "nodename_pattern": "^ttN ", - "title": "tinyterraNodes", - "title_aux": "ComfyUI_tinyterraNodes" - } - ], - "https://github.com/Tlant/ComfyUI-OllamaPromptsGeneratorTlant": [ - [ - "LoadRandomTxtFileTlant", - "OllamaPromptsGeneratorTlant" - ], - { - "title_aux": "ComfyUI-OllamaPromptsGeneratorTlant" - } - ], - "https://github.com/Trgtuan10/ComfyUI_YoloSegment_Mask": [ - [ - "Object Mask" - ], - { - "title_aux": "ComfyUI_YoloSegment_Mask" - } - ], - "https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler": [ - [ - "menus" - ], - { - "title_aux": "ComfyUI_MileHighStyler" - } - ], - "https://github.com/Tropfchen/ComfyUI-Embedding_Picker": [ - [ - "EmbeddingPicker" - ], - { - "title_aux": "Embedding Picker" - } - ], - "https://github.com/Tropfchen/ComfyUI-yaResolutionSelector": [ - [ - "YARS", - "YARSAdv" - ], - { - "title_aux": "YARS: Yet Another Resolution Selector" - } - ], - "https://github.com/Trung0246/ComfyUI-0246": [ - [ - "0246.Beautify", - "0246.BoxRange", - "0246.CastReroute", - "0246.Cloud", - "0246.Count", - "0246.Highway", - "0246.HighwayBatch", - "0246.Hold", - "0246.Hub", - "0246.Junction", - "0246.JunctionBatch", - "0246.Loop", - "0246.Merge", - "0246.Meta", - "0246.RandomInt", - "0246.Script", - "0246.ScriptNode", - "0246.ScriptPile", - "0246.ScriptRule", - "0246.Stringify", - "0246.Switch", - "0246.Tag" - ], - { - "author": "Trung0246", - "description": "Random nodes for ComfyUI I made to solve my struggle with ComfyUI (ex: pipe, process). Have varying quality.", - "nickname": "ComfyUI-0246", - "title": "ComfyUI-0246", - "title_aux": "ComfyUI-0246" - } - ], - "https://github.com/Ttl/ComfyUi_NNLatentUpscale": [ - [ - "NNLatentUpscale" - ], - { - "preemptions": [ - "NNLatentUpscale" - ], - "title_aux": "ComfyUI Neural Network Latent Upscale" - } - ], - "https://github.com/TylerZoro/SD3-Scaling": [ - [ - "SD3ImageScaleToTotalPixels" - ], - { - "title_aux": "SD3-Scaling" - } - ], - "https://github.com/Umikaze-job/select_folder_path_easy": [ - [ - "SelectFolderPathEasy" - ], - { - "title_aux": "select_folder_path_easy" - } - ], - "https://github.com/VAST-AI-Research/ComfyUI-Tripo": [ - [ - "TripoAPIDraft", - "TripoAnimateRetargetNode", - "TripoAnimateRigNode", - "TripoConvertNode", - "TripoGLBViewer", - "TripoRefineModel", - "TripoTextureModel" - ], - { - "title_aux": "Tripo for ComfyUI" - } - ], - "https://github.com/Vaibhavs10/ComfyUI-DDUF": [ - [ - "DDUFLoader", - "DiffusersModelMakeup", - "DiffusersPipelineLoader", - "DiffusersSchedulerLoader", - "DiffusersSimpleSampler" - ], - { - "title_aux": "ComfyUI-DDUF" - } - ], - "https://github.com/VangengLab/ComfyUI-LivePortrait_v2": [ - [ - "LivePortraitProcess_animal" - ], - { - "title_aux": "ComfyUI-LivePortrait_v2" - } - ], - "https://github.com/VangengLab/ComfyUI-LivePortrait_v3": [ - [ - "LivePortraitp2p" - ], - { - "title_aux": "ComfyUI-LivePortrait_v3" - } - ], - "https://github.com/VertexStudio/roblox-comfyui-nodes": [ - [ - "FirstLetterNode", - "FlowNodes", - "MirrorEffectNode", - "SaveImageNode", - "ScaleImageNode", - "SwitchImageNode", - "SwitchTextNode", - "TextToImageNode" - ], - { - "title_aux": "roblox-comfyui-nodes" - } - ], - "https://github.com/VikramxD/VEnhancer-ComfyUI-Wrapper": [ - [ - "MultiGPUInference", - "MultiGPUVEnhancerLoader", - "SingleGPUInference", - "SingleGPUVEnhancerLoader", - "VideoLoader", - "VideoSaver" - ], - { - "title_aux": "VEnhancer ComfyUI Extension" - } - ], - "https://github.com/Visionatrix/ComfyUI-Visionatrix": [ - [ - "VixDynamicLoraDefinition", - "VixUiCheckbox", - "VixUiCheckboxLogic", - "VixUiList", - "VixUiListLogic", - "VixUiPrompt", - "VixUiRangeFloat", - "VixUiRangeInt", - "VixUiRangeScaleFloat", - "VixUiWorkflowMetadata" - ], - { - "title_aux": "ComfyUI-Visionatrix" - } - ], - "https://github.com/VrchStudio/comfyui-web-viewer": [ - [ - "VrchAnyOSCControlNode", - "VrchAudioGenresNode", - "VrchAudioRecorderNode", - "VrchAudioSaverNode", - "VrchBooleanKeyControlNode", - "VrchChannelOSCControlNode", - "VrchChannelX4OSCControlNode", - "VrchDelayOSCControlNode", - "VrchFloatKeyControlNode", - "VrchFloatOSCControlNode", - "VrchImageFlipBookWebViewerNode", - "VrchImageSaverNode", - "VrchImageSwitchOSCControlNode", - "VrchImageWebViewerNode", - "VrchInstantQueueKeyControlNode", - "VrchIntKeyControlNode", - "VrchIntOSCControlNode", - "VrchJsonUrlLoaderNode", - "VrchOSCControlSettingsNode", - "VrchSwitchOSCControlNode", - "VrchTextConcatOSCControlNode", - "VrchTextKeyControlNode", - "VrchTextSwitchOSCControlNode", - "VrchVideoWebViewerNode", - "VrchWebViewerNode", - "VrchXYOSCControlNode", - "VrchXYZOSCControlNode" - ], - { - "title_aux": "ComfyUI Web Viewer" - } - ], - "https://github.com/VykosX/ControlFlowUtils": [ - [ - "Cycle", - "CycleContinue", - "CycleEnd", - "DataMonitor", - "FallbackAnyBatch", - "FallbackImagePreviewer", - "FolderSearch", - "GarbageCollector", - "HaltExecution", - "IfConditionSelector", - "ImageResolutionAdjust", - "InvertCondition", - "LoopClose", - "LoopOpen", - "LoraSelector", - "MemoryStorage", - "ModelSelector", - "NullInput", - "NullOutput", - "ReadTextFile", - "SaveTextFile", - "SimpleToggle", - "StringOperation", - "UniversalSwitch", - "UnloadModels", - "VAESelector", - "Wait" - ], - { - "title_aux": "ControlFlowUtils" - } - ], - "https://github.com/WASasquatch/ComfyUI_Preset_Merger": [ - [ - "Preset_Model_Merge" - ], - { - "title_aux": "ComfyUI Preset Merger" - } - ], - "https://github.com/WASasquatch/FreeU_Advanced": [ - [ - "FreeU (Advanced)", - "FreeU_V2 (Advanced)" - ], - { - "title_aux": "FreeU_Advanced" - } - ], - "https://github.com/WASasquatch/PPF_Noise_ComfyUI": [ - [ - "Blend Latents (PPF Noise)", - "Cross-Hatch Power Fractal (PPF Noise)", - "Images as Latents (PPF Noise)", - "Perlin Power Fractal Latent (PPF Noise)" - ], - { - "title_aux": "PPF_Noise_ComfyUI" - } - ], - "https://github.com/WASasquatch/PowerNoiseSuite": [ - [ - "Blend Latents (PPF Noise)", - "Cross-Hatch Power Fractal (PPF Noise)", - "Cross-Hatch Power Fractal Settings (PPF Noise)", - "Images as Latents (PPF Noise)", - "Latent Adjustment (PPF Noise)", - "Latents to CPU (PPF Noise)", - "Linear Cross-Hatch Power Fractal (PPF Noise)", - "Perlin Power Fractal Latent (PPF Noise)", - "Perlin Power Fractal Settings (PPF Noise)", - "Power KSampler Advanced (PPF Noise)", - "Power-Law Noise (PPF Noise)" - ], - { - "title_aux": "Power Noise Suite for ComfyUI" - } - ], - "https://github.com/WASasquatch/WAS_Extras": [ - [ - "BLVAEEncode", - "CLIPTextEncodeList", - "CLIPTextEncodeSequence2", - "ConditioningBlend", - "DebugInput", - "KSamplerSeq", - "KSamplerSeq2", - "VAEEncodeForInpaint (WAS)", - "VividSharpen" - ], - { - "title_aux": "WAS_Extras" - } - ], - "https://github.com/WASasquatch/was-node-suite-comfyui": [ - [ - "BLIP Analyze Image", - "BLIP Model Loader", - "Blend Latents", - "Boolean To Text", - "Bounded Image Blend", - "Bounded Image Blend with Mask", - "Bounded Image Crop", - "Bounded Image Crop with Mask", - "Bus Node", - "CLIP Input Switch", - "CLIP Vision Input Switch", - "CLIPSEG2", - "CLIPSeg Batch Masking", - "CLIPSeg Masking", - "CLIPSeg Model Loader", - "CLIPTextEncode (BlenderNeko Advanced + NSP)", - "CLIPTextEncode (NSP)", - "Cache Node", - "Checkpoint Loader", - "Checkpoint Loader (Simple)", - "Conditioning Input Switch", - "Constant Number", - "Control Net Model Input Switch", - "Convert Masks to Images", - "Create Grid Image", - "Create Grid Image from Batch", - "Create Morph Image", - "Create Morph Image from Path", - "Create Video from Path", - "Debug Number to Console", - "Dictionary to Console", - "Diffusers Hub Model Down-Loader", - "Diffusers Model Loader", - "Export API", - "HSL to Hex", - "Hex to HSL", - "Image Analyze", - "Image Aspect Ratio", - "Image Batch", - "Image Blank", - "Image Blend", - "Image Blend by Mask", - "Image Blending Mode", - "Image Bloom Filter", - "Image Bounds", - "Image Bounds to Console", - "Image Canny Filter", - "Image Chromatic Aberration", - "Image Color Palette", - "Image Crop Face", - "Image Crop Location", - "Image Crop Square Location", - "Image Displacement Warp", - "Image Dragan Photography Filter", - "Image Edge Detection Filter", - "Image Film Grain", - "Image Filter Adjustments", - "Image Flip", - "Image Generate Gradient", - "Image Gradient Map", - "Image High Pass Filter", - "Image History Loader", - "Image Input Switch", - "Image Levels Adjustment", - "Image Load", - "Image Lucy Sharpen", - "Image Median Filter", - "Image Mix RGB Channels", - "Image Monitor Effects Filter", - "Image Nova Filter", - "Image Padding", - "Image Paste Crop", - "Image Paste Crop by Location", - "Image Paste Face", - "Image Perlin Noise", - "Image Perlin Power Fractal", - "Image Pixelate", - "Image Power Noise", - "Image Rembg (Remove Background)", - "Image Remove Background (Alpha)", - "Image Remove Color", - "Image Resize", - "Image Rotate", - "Image Rotate Hue", - "Image SSAO (Ambient Occlusion)", - "Image SSDO (Direct Occlusion)", - "Image Save", - "Image Seamless Texture", - "Image Select Channel", - "Image Select Color", - "Image Send HTTP", - "Image Shadows and Highlights", - "Image Size to Number", - "Image Stitch", - "Image Style Filter", - "Image Threshold", - "Image Tiled", - "Image Transpose", - "Image Voronoi Noise Filter", - "Image fDOF Filter", - "Image to Latent Mask", - "Image to Noise", - "Image to Seed", - "Images to Linear", - "Images to RGB", - "Inset Image Bounds", - "Integer place counter", - "KSampler (WAS)", - "KSampler Cycle", - "Latent Batch", - "Latent Input Switch", - "Latent Noise Injection", - "Latent Size to Number", - "Latent Upscale by Factor (WAS)", - "Load Cache", - "Load Image Batch", - "Load Lora", - "Load Text File", - "Logic Boolean", - "Logic Boolean Primitive", - "Logic Comparison AND", - "Logic Comparison OR", - "Logic Comparison XOR", - "Logic NOT", - "Lora Input Switch", - "Lora Loader", - "Mask Arbitrary Region", - "Mask Batch", - "Mask Batch to Mask", - "Mask Ceiling Region", - "Mask Crop Dominant Region", - "Mask Crop Minority Region", - "Mask Crop Region", - "Mask Dilate Region", - "Mask Dominant Region", - "Mask Erode Region", - "Mask Fill Holes", - "Mask Floor Region", - "Mask Gaussian Region", - "Mask Invert", - "Mask Minority Region", - "Mask Paste Region", - "Mask Rect Area", - "Mask Rect Area (Advanced)", - "Mask Smooth Region", - "Mask Threshold Region", - "Masks Add", - "Masks Combine Batch", - "Masks Combine Regions", - "Masks Subtract", - "MiDaS Depth Approximation", - "MiDaS Mask Image", - "MiDaS Model Loader", - "Model Input Switch", - "Number Counter", - "Number Input Condition", - "Number Input Switch", - "Number Multiple Of", - "Number Operation", - "Number PI", - "Number to Float", - "Number to Int", - "Number to Seed", - "Number to String", - "Number to Text", - "Prompt Multiple Styles Selector", - "Prompt Styles Selector", - "Random Number", - "SAM Image Mask", - "SAM Model Loader", - "SAM Parameters", - "SAM Parameters Combine", - "Samples Passthrough (Stat System)", - "Save Text File", - "Seed", - "String to Text", - "Tensor Batch to Image", - "Text Add Token by Input", - "Text Add Tokens", - "Text Compare", - "Text Concatenate", - "Text Contains", - "Text Dictionary Convert", - "Text Dictionary Get", - "Text Dictionary Keys", - "Text Dictionary New", - "Text Dictionary To Text", - "Text Dictionary Update", - "Text File History Loader", - "Text Find", - "Text Find and Replace", - "Text Find and Replace Input", - "Text Find and Replace by Dictionary", - "Text Input Switch", - "Text List", - "Text List Concatenate", - "Text List to Text", - "Text Load Line From File", - "Text Multiline", - "Text Multiline (Code Compatible)", - "Text Parse A1111 Embeddings", - "Text Parse Noodle Soup Prompts", - "Text Parse Tokens", - "Text Random Line", - "Text Random Prompt", - "Text Shuffle", - "Text Sort", - "Text String", - "Text String Truncate", - "Text to Conditioning", - "Text to Console", - "Text to Number", - "Text to String", - "True Random.org Number Generator", - "Upscale Model Loader", - "Upscale Model Switch", - "VAE Input Switch", - "Video Dump Frames", - "Write to GIF", - "Write to Video", - "unCLIP Checkpoint Loader" - ], - { - "title_aux": "WAS Node Suite" - } - ], - "https://github.com/WUYUDING2583/ComfyUI-Save-Image-Callback": [ - [ - "Save Image With Callback" - ], - { - "title_aux": "Save Image With Callback" - } - ], - "https://github.com/WX-NPS1598/ComfyUI-Auto_Crop_By_NPS": [ - [ - "AutoCropByNPS" - ], - { - "title_aux": "Auto Crop By NPS" - } - ], - "https://github.com/WaddingtonHoldings/ComfyUI-InstaSD": [ - [ - "InstaCBoolean", - "InstaCFloat", - "InstaCInteger", - "InstaCLoadImageFromS3", - "InstaCLoraLoader", - "InstaCSaveImageToS3", - "InstaCSeed", - "InstaCText", - "InstaCTextML", - "InstaLoadImageLocal", - "InstaPromptMultipleStyleSelector", - "InstaPromptStyleSelector", - "LoadVideo", - "PreViewVideo" - ], - { - "title_aux": "InstaSD nodes for ComfyUI" - } - ], - "https://github.com/WainWong/ComfyUI-Loop-image": [ - [ - "CyberEve_BatchImageLoopClose", - "CyberEve_BatchImageLoopOpen", - "CyberEve_LoopIndexSwitch", - "CyberEve_MaskMerge", - "CyberEve_MaskSegmentation", - "CyberEve_SingleImageLoopClose", - "CyberEve_SingleImageLoopOpen" - ], - { - "title_aux": "ComfyUI-Loop-image" - } - ], - "https://github.com/Wakfull33/ComfyUI-SaveImageCivitAI": [ - [ - "SaveCivitai" - ], - { - "title_aux": "ComfyUI-SaveImageCivitAI" - } - ], - "https://github.com/WangPengxing/ComfyUI_WPX_Node": [ - [ - "AnimalContour", - "AnimalContourSilhouette", - "CircleContour", - "DetermineRowsAndCols", - "PenetrateStyle", - "RectangleContour", - "SplitMaskElements", - "SplitStickers" - ], - { - "title_aux": "ComfyUI WPX Nodes" - } - ], - "https://github.com/WebDev9000/WebDev9000-Nodes": [ - [ - "IgnoreBraces", - "SettingsSwitch" - ], - { - "title_aux": "WebDev9000-Nodes" - } - ], - "https://github.com/Wenaka2004/ComfyUI-TagClassifier": [ - [ - "LLMProcessingNode" - ], - { - "title_aux": "ComfyUI-TagClassifier" - } - ], - "https://github.com/Wicloz/ComfyUI-Simply-Nodes": [ - [ - "WF_ConditionalLoraLoader", - "WF_FixupPixelArt", - "WF_MultilineText", - "WF_RandomStyle", - "WF_ResolutionSDXL", - "WF_TextFlow" - ], - { - "title_aux": "ComfyUI Simply Nodes" - } - ], - "https://github.com/X-T-E-R/ComfyUI-EasyCivitai-XTNodes": [ - [ - "CheckpointLoaderSimpleWithPreviews", - "CivitaiCheckpointLoaderSimple", - "CivitaiLoraLoader", - "CivitaiLoraLoaderStacked", - "CivitaiLoraLoaderStackedAdvanced", - "LoraLoaderStackedAdvancedWithPreviews", - "LoraLoaderStackedWithPreviews", - "LoraLoaderWithPreviews", - "XTNodesCleanPrompt", - "XTNodesPromptConcatenate" - ], - { - "title_aux": "ComfyUI Easy Civitai (XTNodes)" - } - ], - "https://github.com/XLabs-AI/x-flux-comfyui": [ - [ - "ApplyAdvancedFluxControlNet", - "ApplyAdvancedFluxIPAdapter", - "ApplyFluxControlNet", - "ApplyFluxIPAdapter", - "FluxLoraLoader", - "LoadFluxControlNet", - "LoadFluxIPAdapter", - "XlabsSampler" - ], - { - "title_aux": "x-flux-comfyui" - } - ], - "https://github.com/Xclbr7/ComfyUI-Merlin": [ - [ - "GeminiPromptExpander", - "Magic Photo Prompter \ud83e\ude84" - ], - { - "title_aux": "ComfyUI-Merlin: Magic Photo Prompter" - } - ], - "https://github.com/Xiangyu-CAS/HandFixer": [ - [ - "MediapipeHandNode" - ], - { - "title_aux": "HandFixer" - } - ], - "https://github.com/XieChengYuan/comfyui_kj": [ - [ - "cpm_textInput", - "sdCpm" - ], - { - "title_aux": "comfyui_kj" - } - ], - "https://github.com/XmYx/deforum-comfy-nodes": [ - [ - "DeforumAddNoiseNode", - "DeforumAnimParamsNode", - "DeforumAreaPromptNode", - "DeforumBaseParamsNode", - "DeforumCacheLatentNode", - "DeforumCadenceNode", - "DeforumCadenceParamsNode", - "DeforumColorMatchNode", - "DeforumColorParamsNode", - "DeforumConditioningBlendNode", - "DeforumDepthParamsNode", - "DeforumDiffusionParamsNode", - "DeforumFILMInterpolationNode", - "DeforumFrameWarpNode", - "DeforumGetCachedLatentNode", - "DeforumHybridMotionNode", - "DeforumHybridParamsNode", - "DeforumHybridScheduleNode", - "DeforumIteratorNode", - "DeforumKSampler", - "DeforumLoadVideo", - "DeforumNoiseParamsNode", - "DeforumPromptNode", - "DeforumSeedNode", - "DeforumSetVAEDownscaleRatioNode", - "DeforumSimpleInterpolationNode", - "DeforumSingleSampleNode", - "DeforumTranslationParamsNode", - "DeforumVideoSaveNode" - ], - { - "title_aux": "Deforum Nodes" - } - ], - "https://github.com/Xyem/Xycuno-Oobabooga": [ - [ - "Oobabooga" - ], - { - "title_aux": "Xycuno Oobabooga" - } - ], - "https://github.com/YMC-GitHub/ymc-node-suite-comfyui": [ - [ - "canvas-util-cal-size", - "conditioning-util-input-switch", - "cutoff-region-util", - "hks-util-cal-denoise-step", - "img-util-get-image-size", - "img-util-switch-input-image", - "io-image-save", - "io-text-save", - "io-util-file-list-get", - "io-util-file-list-get-text", - "number-util-random-num", - "pipe-util-to-basic-pipe", - "region-util-get-by-center-and-size", - "region-util-get-by-lt", - "region-util-get-crop-location-from-center-size-text", - "region-util-get-pad-out-location-by-size", - "text-preset-colors", - "text-util-join-text", - "text-util-loop-text", - "text-util-path-list", - "text-util-prompt-add-prompt", - "text-util-prompt-adv-dup", - "text-util-prompt-adv-search", - "text-util-prompt-del", - "text-util-prompt-dup", - "text-util-prompt-join", - "text-util-prompt-search", - "text-util-prompt-shuffle", - "text-util-prompt-std", - "text-util-prompt-unweight", - "text-util-random-text", - "text-util-search-text", - "text-util-show-text", - "text-util-switch-text", - "xyz-util-txt-to-int" - ], - { - "title_aux": "ymc-node-suite-comfyui" - } - ], - "https://github.com/YOUR-WORST-TACO/ComfyUI-TacoNodes": [ - [ - "Example", - "TacoAnimatedLoader", - "TacoGifMaker", - "TacoImg2ImgAnimatedLoader", - "TacoImg2ImgAnimatedProcessor", - "TacoLatent" - ], - { - "title_aux": "ComfyUI-TacoNodes" - } - ], - "https://github.com/Yanick112/ComfyUI-ToSVG": [ - [ - "ConvertRasterToVectorBW", - "ConvertRasterToVectorColor", - "ConvertVectorToRaster", - "SaveSVG" - ], - { - "title_aux": "ComfyUI-ToSVG" - } - ], - "https://github.com/YarvixPA/ComfyUI-NeuralMedia": [ - [ - "ApplyControlNet", - "InpaintConditioningNode", - "LoadImagesFromFolderNode", - "MultiControlnet", - "MultiControlnetApply", - "MultiControlnetUnion", - "RemoveBackgroundNode", - "SDXLTextEncoderSimpleNode", - "SaveCaptionsImages", - "SaveImageNode", - "StyleModelApplyAdvanced", - "StyleModelApplySimple", - "TextFieldNode", - "TileCheckpointPatchNode", - "UpscaleImageWithModel", - "VTracerImageVectorizerNode" - ], - { - "title_aux": "ComfyUI-NeuralMedia" - } - ], - "https://github.com/YinBailiang/MergeBlockWeighted_fo_ComfyUI": [ - [ - "MergeBlockWeighted" - ], - { - "title_aux": "MergeBlockWeighted_fo_ComfyUI" - } - ], - "https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh": [ - [ - "Apply Gradient Color", - "Chat LLaMa Mesh", - "Visualize Mesh" - ], - { - "title_aux": "ComfyUI-LLaMA-Mesh" - } - ], - "https://github.com/Yuan-ManX/ComfyUI-SoundHub": [ - [ - "Load Audio", - "Preview Audio", - "Save Audio" - ], - { - "title_aux": "ComfyUI-SoundHub" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR": [ - [ - "APISR_Lterative_Zho", - "APISR_ModelLoader_Zho", - "APISR_Zho" - ], - { - "title_aux": "APISR IN COMFYUI" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Animated-optical-illusions": [ - [ - "AOI_Processing_Zho" - ], - { - "title_aux": "ComfyUI-Animated-optical-illusions" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-ArtGallery": [ - [ - "ArtGallery_Zho", - "ArtistsImage_Zho", - "CamerasImage_Zho", - "FilmsImage_Zho", - "MovementsImage_Zho", - "StylesImage_Zho" - ], - { - "title_aux": "ComfyUI-ArtGallery" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BRIA_AI-RMBG": [ - [ - "BRIA_RMBG_ModelLoader_Zho", - "BRIA_RMBG_Zho" - ], - { - "title_aux": "ComfyUI-BRIA_AI-RMBG" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-DepthFM": [ - [ - "DepthFM_Literative_Zho", - "DepthFM_ModelLoader_Zho", - "DepthFM_Zho" - ], - { - "title_aux": "DepthFM IN COMFYUI" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Gemini": [ - [ - "ConcatText_Zho", - "DisplayText_Zho", - "Gemini_15P_API_S_Advance_Zho", - "Gemini_15P_API_S_Chat_Advance_Zho", - "Gemini_API_Chat_Zho", - "Gemini_API_S_Chat_Zho", - "Gemini_API_S_Vsion_ImgURL_Zho", - "Gemini_API_S_Zho", - "Gemini_API_Vsion_ImgURL_Zho", - "Gemini_API_Zho", - "Gemini_FileUpload_API_S_Zho", - "Gemini_File_API_S_Zho" - ], - { - "title_aux": "ComfyUI-Gemini" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-InstantID": [ - [ - "IDBaseModelLoader_fromhub", - "IDBaseModelLoader_local", - "IDControlNetLoader", - "IDGenerationNode", - "ID_Prompt_Styler", - "InsightFaceLoader_Zho", - "Ipadapter_instantidLoader" - ], - { - "title_aux": "ComfyUI-InstantID" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Phi-3-mini": [ - [ - "Phi3mini_4k_Chat_Zho", - "Phi3mini_4k_ModelLoader_Zho", - "Phi3mini_4k_Zho" - ], - { - "title_aux": "Phi-3-mini in ComfyUI" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker-ZHO": [ - [ - "BaseModel_Loader_fromhub", - "BaseModel_Loader_local", - "LoRALoader", - "NEW_PhotoMaker_Generation", - "PhotoMakerAdapter_Loader_fromhub", - "PhotoMakerAdapter_Loader_local", - "PhotoMaker_Generation", - "Prompt_Styler", - "Ref_Image_Preprocessing" - ], - { - "title_aux": "ComfyUI PhotoMaker (ZHO)" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PixArt-alpha-Diffusers": [ - [ - "PA_BaseModelLoader_fromhub_Zho", - "PA_Generation_Zho", - "PA_Styler_Zho" - ], - { - "title_aux": "ComfyUI-PixArt-alpha-Diffusers" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Q-Align": [ - [ - "QAlign_Zho" - ], - { - "title_aux": "ComfyUI-Q-Align" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen": [ - [ - "Qwen2_Chat_Zho", - "Qwen2_ModelLoader_Zho", - "Qwen2_Zho" - ], - { - "title_aux": "Qwen-2.5 in ComfyUI" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen-VL-API": [ - [ - "QWenVL_API_S_Multi_Zho", - "QWenVL_API_S_Zho" - ], - { - "title_aux": "ComfyUI-Qwen-VL-API" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO": [ - [ - "SVD_Aspect_Ratio_Zho", - "SVD_Steps_MotionStrength_Seed_Zho", - "SVD_Styler_Zho" - ], - { - "title_aux": "ComfyUI-SVD-ZHO (WIP)" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SegMoE": [ - [ - "SMoE_Generation_Zho", - "SMoE_ModelLoader_Zho" - ], - { - "title_aux": "ComfyUI SegMoE" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Text_Image-Composite": [ - [ - "AlphaChanelAddByMask", - "ImageCompositeBy_BG_Zho", - "ImageCompositeBy_Zho", - "ImageComposite_BG_Zho", - "ImageComposite_Zho", - "RGB_Image_Zho", - "Text_Image_Frame_Zho", - "Text_Image_Multiline_Zho", - "Text_Image_Zho" - ], - { - "title_aux": "ComfyUI-Text_Image-Composite [WIP]" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-UltraEdit-ZHO": [ - [ - "UltraEdit_Generation_Zho", - "UltraEdit_ModelLoader_Zho", - "UltraEdit_ModelLoader_local_Zho" - ], - { - "title_aux": "ComfyUI-UltraEdit-ZHO" - } - ], - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-YoloWorld-EfficientSAM": [ - [ - "ESAM_ModelLoader_Zho", - "Yoloworld_ESAM_DetectorProvider_Zho", - "Yoloworld_ESAM_Zho", - "Yoloworld_ModelLoader_Zho" - ], - { - "title_aux": "ComfyUI YoloWorld-EfficientSAM" - } - ], - "https://github.com/ZHO-ZHO-ZHO/comfyui-portrait-master-zh-cn": [ - [ - "PortraitMaster_\u4e2d\u6587\u7248" - ], - { - "title_aux": "comfyui-portrait-master-zh-cn" - } - ], - "https://github.com/ZZXYWQ/ComfyUI-ZZXYWQ": [ - [ - "StreamRecorder", - "VideoFormatConverter", - "ZZX_PaintsUndo" - ], - { - "title_aux": "ZZX Nodes" - } - ], - "https://github.com/ZaneA/ComfyUI-ImageReward": [ - [ - "ImageRewardLoader", - "ImageRewardScore" - ], - { - "title_aux": "ImageReward" - } - ], - "https://github.com/ZeDarkAdam/ComfyUI-Embeddings-Tools": [ - [ - "EmbeddingsNameLoader", - "EmbendingList" - ], - { - "title_aux": "ComfyUI-Embeddings-Tools" - } - ], - "https://github.com/Zeks/comfyui-rapidfire": [ - [ - "CachedCheckpoint", - "CsvWriterNode", - "ImmatureImageCounter", - "ImmatureImageDataLoader" - ], - { - "title_aux": "comfyui-rapidfire" - } - ], - "https://github.com/a-und-b/ComfyUI_Delay": [ - [ - "Add Delay" - ], - { - "title_aux": "ComfyUI_Delay" - } - ], - "https://github.com/a-und-b/ComfyUI_JSON_Helper": [ - [ - "JSONStringToObjectNode" - ], - { - "title_aux": "ComfyUI_JSON_Helper" - } - ], - "https://github.com/a-und-b/ComfyUI_LoRA_from_URL": [ - [ - "Load LoRA From URL" - ], - { - "title_aux": "ComfyUI_LoRA_from_URL" - } - ], - "https://github.com/a1lazydog/ComfyUI-AudioScheduler": [ - [ - "AmplitudeToGraph", - "AmplitudeToNumber", - "AudioToAmplitudeGraph", - "AudioToAudioData", - "AudioToFFTs", - "BatchAmplitudeSchedule", - "ClipAmplitude", - "FloatArrayToGraph", - "GateNormalizedAmplitude", - "NormalizeAmplitude", - "NormalizedAmplitudeDrivenString", - "NormalizedAmplitudeToGraph", - "NormalizedAmplitudeToNumber", - "TransientAmplitudeBasic" - ], - { - "title_aux": "ComfyUI-AudioScheduler" - } - ], - "https://github.com/abdozmantar/ComfyUI-DeepExtract": [ - [ - "VocalAndSoundRemoverNode" - ], - { - "title_aux": "DeepExtract" - } - ], - "https://github.com/aburahamu/ComfyUI-IsNiceParts": [ - [ - "NiceHand" - ], - { - "title_aux": "ComfyUI-IsNiceParts" - } - ], - "https://github.com/aburahamu/ComfyUI-RequestsPoster": [ - [ - "GetImageFromSD3byI2I", - "GetImageFromSD3byT2I", - "PostImage2Discord", - "PostImage2X", - "PostText" - ], - { - "title_aux": "ComfyUI-RequestPoster" - } - ], - "https://github.com/abyz22/image_control": [ - [ - "abyz22_AddPrompt", - "abyz22_Convertpipe", - "abyz22_Editpipe", - "abyz22_FirstNonNull", - "abyz22_FromBasicPipe_v2", - "abyz22_Frompipe", - "abyz22_ImpactWildcardEncode", - "abyz22_ImpactWildcardEncode_GetPrompt", - "abyz22_Ksampler", - "abyz22_Padding Image", - "abyz22_RandomMask", - "abyz22_RemoveControlnet", - "abyz22_ResizeOpenpose", - "abyz22_SaveImage", - "abyz22_SetQueue", - "abyz22_ToBasicPipe", - "abyz22_Topipe", - "abyz22_blend_onecolor", - "abyz22_blendimages", - "abyz22_bypass", - "abyz22_censoring", - "abyz22_drawmask", - "abyz22_lamaInpaint", - "abyz22_lamaPreprocessor", - "abyz22_makecircles", - "abyz22_path_generator", - "abyz22_setimageinfo", - "abyz22_smallhead" - ], - { - "title_aux": "image_control" - } - ], - "https://github.com/acorderob/sd-webui-prompt-postprocessor": [ - [ - "ACBPromptPostProcessor" - ], - { - "author": "ACB", - "description": "Node for processing prompts. Includes the following options: send to negative prompt, set variables, if/elif/else command for conditional content, wildcards and choices.", - "nickname": "ACB PPP", - "title": "Prompt Post Processor", - "title_aux": "Prompt PostProcessor" - } - ], - "https://github.com/adbrasi/ComfyUI-TrashNodes-DownloadHuggingface": [ - [ - "DownloadLinkChecker", - "ShowFileNames" - ], - { - "title_aux": "ComfyUI-TrashNodes-DownloadHuggingface" - } - ], - "https://github.com/adieyal/comfyui-dynamicprompts": [ - [ - "DPCombinatorialGenerator", - "DPFeelingLucky", - "DPJinja", - "DPMagicPrompt", - "DPOutput", - "DPRandomGenerator" - ], - { - "title_aux": "DynamicPrompts Custom Nodes" - } - ], - "https://github.com/adigayung/ComfyUI-Translator": [ - [ - "CLIP Text Encode (Auto Translate)", - "Prompt Text (Auto Translate)" - ], - { - "title_aux": "ComfyUI-Translator" - } - ], - "https://github.com/adriflex/ComfyUI_Blender_Texdiff": [ - [ - "ViewportColor", - "ViewportDepth" - ], - { - "title_aux": "ComfyUI_Blender_Texdiff" - } - ], - "https://github.com/aegis72/aegisflow_utility_nodes": [ - [ - "Add Text To Image", - "Aegisflow CLIP Pass", - "Aegisflow Conditioning Pass", - "Aegisflow Image Pass", - "Aegisflow Latent Pass", - "Aegisflow Mask Pass", - "Aegisflow Model Pass", - "Aegisflow Pos/Neg Pass", - "Aegisflow SDXL Tuple Pass", - "Aegisflow VAE Pass", - "Aegisflow controlnet preprocessor bus", - "Apply Instagram Filter", - "Binary INT Switch", - "Brightness_Contrast_Ally", - "Flatten Colors", - "Gaussian Blur_Ally", - "GlitchThis Effect", - "Hue Rotation", - "Image Flip_ally", - "Placeholder Tuple", - "Swap Color Mode", - "aegisflow Multi_Pass", - "aegisflow Multi_Pass XL", - "af_pipe_in_15", - "af_pipe_in_xl", - "af_pipe_out_15", - "af_pipe_out_xl" - ], - { - "title_aux": "AegisFlow Utility Nodes" - } - ], - "https://github.com/aegis72/comfyui-styles-all": [ - [ - "menus" - ], - { - "title_aux": "ComfyUI-styles-all" - } - ], - "https://github.com/ahernandezmiro/ComfyUI-GCP_Storage_tools": [ - [ - "GCPReadImageNode", - "GCPWriteImageNode" - ], - { - "title_aux": "ComfyUI-GCP_Storage_tools" - } - ], - "https://github.com/ai-liam/comfyui-liam": [ - [ - "AiStoreAzureGPTLiam", - "GetBetterDepthImage", - "LiamLibDisplayText", - "LiamLibFillImage", - "LiamLibImageToGray", - "LiamLibLoadImage", - "LiamLibMergeText", - "LiamLibSaveImg", - "LiamLibSaveText", - "OllamaApiTNodeLiam", - "PreviewReliefImage", - "SpeechRecognitionLiam", - "SpeechSynthesisLiam" - ], - { - "title_aux": "LiamUtil" - } - ], - "https://github.com/ai-liam/comfyui_liam_util": [ - [ - "LiamLoadImage" - ], - { - "title_aux": "LiamUtil (single node)" - } - ], - "https://github.com/ai-shizuka/ComfyUI-tbox": [ - [ - "AnimalPosePreprocessor", - "BatchManager", - "CannyPreprocessor", - "ConstrainImageNode", - "DWPosePreprocessor", - "DWPreprocessor", - "DensePosePreprocessor", - "GFPGANNode", - "ImageLoader", - "ImageResize", - "ImageSaver", - "ImageSize", - "ImagesSaver", - "LineArtPreprocessor", - "LineartStandardPreprocessor", - "MaskAddNode", - "MiDaSDepthPreprocessor", - "PurgeVRAMNode", - "VideoInfo", - "VideoLoader", - "VideoSaver", - "WatermarkNode" - ], - { - "author": "tstandley", - "title_aux": "ComfyUI-tbox" - } - ], - "https://github.com/aianimation55/ComfyUI-FatLabels": [ - [ - "FatLabels" - ], - { - "title_aux": "Comfy UI FatLabels" - } - ], - "https://github.com/aidec/Comfyui_TextBatch_aidec": [ - [ - "TextBatch", - "TextQueueProcessor", - "TextSplitCounter" - ], - { - "title_aux": "Comfyui_TextBatch_aidec" - } - ], - "https://github.com/aidenli/ComfyUI_NYJY": [ - [ - "CivitaiPrompt", - "ConverAnyToString", - "CustomLatentImage-NYJY", - "CustomLatentImageSimple", - "FloatSlider-NYJY", - "GetItemFromList", - "JoyCaption", - "JoyCaptionAlpha1Online", - "JoyCaptionAlpha2Online", - "JoyTag", - "JsonDumps", - "JsonLoads", - "SplitString", - "Translate" - ], - { - "title_aux": "ComfyUI_NYJY" - } - ], - "https://github.com/aigc-apps/EasyAnimate": [ - [ - "CameraBasicFromChaoJie", - "CameraCombineFromChaoJie", - "CameraJoinFromChaoJie", - "CameraTrajectoryFromChaoJie", - "CreateTrajectoryBasedOnKJNodes", - "EasyAnimateI2VSampler", - "EasyAnimateT2VSampler", - "EasyAnimateV2VSampler", - "EasyAnimateV5_I2VSampler", - "EasyAnimateV5_T2VSampler", - "EasyAnimateV5_V2VSampler", - "EasyAnimate_TextBox", - "ImageMaximumNode", - "LoadEasyAnimateLora", - "LoadEasyAnimateModel", - "TextBox" - ], - { - "title_aux": "Video Generation Nodes for EasyAnimate" - } - ], - "https://github.com/aimerib/ComfyUI_HigherBitDepthSaveImage": [ - [ - "SaveImageHigherBitDepth" - ], - { - "title_aux": "ComfyUI-HigherBitDepthSaveImage" - } - ], - "https://github.com/ainewsto/comfyui-labs-google": [ - [ - "ComfyUI-ImageFx", - "ComfyUI-Whisk", - "ComfyUI-Whisk-Prompts" - ], - { - "title_aux": "comfyui-labs-google" - } - ], - "https://github.com/aisabervisionlab/ComfyUI_merge_ASVL": [ - [ - "ASVL" - ], - { - "title_aux": "ComfyUI_merge_ASVL" - } - ], - "https://github.com/akatz-ai/ComfyUI-AKatz-Nodes": [ - [ - "AK_AdjustDepthmapBrightness", - "AK_AdjustListSize", - "AK_AnimatedDilationMaskLinear", - "AK_AudioFramesyncSchedule", - "AK_AudioreactiveDilateMaskInfinite", - "AK_AudioreactiveDilationMask", - "AK_AudioreactiveDynamicDilationMask", - "AK_BinaryAmplitudeGate", - "AK_BlobTrack", - "AK_BrightnessToFloatList", - "AK_ConvertAudioToSaltAudio", - "AK_ConvertListToFloatList", - "AK_ConvertSaltAudioToAudio", - "AK_DilateMaskLinearInfinite", - "AK_FadeBetweenBatches", - "AK_FlexFeatureToFloatList", - "AK_FloatListToDilateMaskSchedule", - "AK_FloatListToFlexFeature", - "AK_IPAdapterCustomWeights", - "AK_KeyframeScheduler", - "AK_LagChop", - "AK_ListToNumpyFloatArray", - "AK_MakeDepthmapSeamless", - "AK_NormalizeMaskImage", - "AK_RescaleFloatList", - "AK_ScaleMask", - "AK_ScheduledBinaryComparison", - "AK_ShrinkNumSequence", - "AK_SplitImageBatch", - "AK_VideoSpeedAdjust", - "Scale Mask Node" - ], - { - "author": "akatz", - "description": "Custom node pack for nodes I use in my workflows.", - "nickname": "Akatz Custom Nodes", - "title": "Akatz Custom Nodes", - "title_aux": "Akatz Custom Nodes" - } - ], - "https://github.com/akatz-ai/ComfyUI-DepthCrafter-Nodes": [ - [ - "DepthCrafter", - "DownloadAndLoadDepthCrafterModel" - ], - { - "author": "akatz", - "description": "Custom nodes for use with DepthCrafter. Create consistent depth maps for your videos.", - "nickname": "DepthCrafter Nodes", - "title": "DepthCrafter Nodes", - "title_aux": "DepthCrafter Nodes" - } - ], - "https://github.com/akatz-ai/ComfyUI-Depthflow-Nodes": [ - [ - "Depthflow", - "DepthflowEffectDOF", - "DepthflowEffectVignette", - "DepthflowMotionArc", - "DepthflowMotionCosine", - "DepthflowMotionExponential", - "DepthflowMotionLinear", - "DepthflowMotionPresetCircle", - "DepthflowMotionPresetDolly", - "DepthflowMotionPresetHorizontal", - "DepthflowMotionPresetOrbital", - "DepthflowMotionPresetVertical", - "DepthflowMotionPresetZoom", - "DepthflowMotionSetTarget", - "DepthflowMotionSine" - ], - { - "author": "akatz", - "description": "Custom nodes for use with Tremeschin's Depthflow library.", - "nickname": "Depthflow Nodes", - "title": "Depthflow Nodes", - "title_aux": "\ud83c\udf0a Depthflow Nodes" - } - ], - "https://github.com/akatz-ai/ComfyUI-X-Portrait-Nodes": [ - [ - "DownloadXPortraitModel", - "XPortrait" - ], - { - "author": "akatz", - "description": "Custom nodes for use with X-Portrait. Animate portraits with an input video and a reference image.", - "nickname": "X-Portrait Nodes", - "title": "X-Portrait Nodes", - "title_aux": "ComfyUI-X-Portrait-Nodes" - } - ], - "https://github.com/akierson/ComfyUI-textnodes": [ - [ - "Prompt Truncate", - "Tidy Tags" - ], - { - "title_aux": "ComfyUI-textnodes" - } - ], - "https://github.com/akierson/comfyui-colornodes": [ - [ - "Color Picker", - "Color to Hex", - "Color to RGB", - "Image Replace Color", - "Invert Color" - ], - { - "title_aux": "comfyui-colornodes" - } - ], - "https://github.com/akspa0/ComfyUI-FapMixPlus": [ - [ - "fapMix", - "preFapMix" - ], - { - "title_aux": "ComfyUI-FapMixPlus" - } - ], - "https://github.com/al-swaiti/All-IN-ONE-style": [ - [ - "ComfyUIStyler", - "menus" - ], - { - "title_aux": "All-IN-ONE-style" - } - ], - "https://github.com/al-swaiti/ComfyUI-CascadeResolutions": [ - [ - "CascadeResolutions" - ], - { - "title_aux": "ComfyUI-CascadeResolutions" - } - ], - "https://github.com/al-swaiti/ComfyUI-OllamaGemini": [ - [ - "BRIA_RMBG", - "BRIA_RMBG_ModelLoader", - "ComfyUIStyler", - "ConvertRasterToVector", - "FLUXResolutions", - "GeminiAPI", - "OllamaAPI", - "Save text", - "SaveSVG", - "TextSplitByDelimiter", - "menus" - ], - { - "title_aux": "GeminiOllama ComfyUI Extension" - } - ], - "https://github.com/alanhuang67/ComfyUI-FAI-Node": [ - [ - "FAIDynamicMask", - "FAIScaleScheduler", - "FAI_Voronoi_Generator" - ], - { - "title_aux": "FAI-Node" - } - ], - "https://github.com/alessandrozonta/ComfyUI-CenterNode": [ - [ - "BBoxCrop" - ], - { - "title_aux": "ComfyUI-CenterNode" - } - ], - "https://github.com/alessandrozonta/ComfyUI-Layers": [ - [ - "LayersSaver - Save Layer", - "LayersSaver - Save Layer From Images" - ], - { - "title_aux": "Save Layers Node for ComfyUI" - } - ], - "https://github.com/alessandrozonta/ComfyUI-OpenPose": [ - [ - "OpenPose - Get poses" - ], - { - "author": "joe", - "title_aux": "OpenPose Node" - } - ], - "https://github.com/alexcong/ComfyUI_QwenVL": [ - [ - "Qwen2.5", - "Qwen2VL" - ], - { - "title_aux": "Qwen2-VL wrapper for ComfyUI" - } - ], - "https://github.com/alexgenovese/ComfyUI_HF_Servelress_Inference": [ - [ - "HF_QuestionAnswer", - "Job_Caption", - "Joy_caption", - "Joy_caption_load" - ], - { - "author": "Alex Genovese", - "description": "Huggingface Api Serverless request", - "nickname": "alexgenovese", - "title": "Huggingface Api Serverless", - "title_aux": "Huggingface Api Serverless" - } - ], - "https://github.com/alexisrolland/ComfyUI-Phi": [ - [ - "LoadPhi", - "LoadPhiVision", - "RunPhi", - "RunPhiVision" - ], - { - "title_aux": "ComfyUI-Phi" - } - ], - "https://github.com/alexopus/ComfyUI-Image-Saver": [ - [ - "Cfg Literal (Image Saver)", - "Checkpoint Loader with Name (Image Saver)", - "Float Literal (Image Saver)", - "Image Saver", - "Int Literal (Image Saver)", - "Sampler Selector (Image Saver)", - "SamplerToString (Image Saver)", - "Scheduler Selector (Comfy) (Image Saver)", - "Scheduler Selector (Image Saver)", - "SchedulerComfyToString (Image Saver)", - "SchedulerToString (Image Saver)", - "Seed Generator (Image Saver)", - "String Literal (Image Saver)", - "UNet loader with Name (Image Saver)", - "Width/Height Literal (Image Saver)" - ], - { - "title_aux": "ComfyUI Image Saver" - } - ], - "https://github.com/alisson-anjos/ComfyUI-Ollama-Describer": [ - [ - "InputText", - "OllamaCaptionerExtraOptions", - "OllamaImageCaptioner", - "OllamaImageDescriber", - "OllamaTextDescriber", - "ShowText", - "TextTransformer" - ], - { - "title_aux": "ComfyUI-Ollama-Describer" - } - ], - "https://github.com/alpertunga-bile/image-caption-comfyui": [ - [ - "Image Caption Node", - "Insert Prompt Node" - ], - { - "title_aux": "image-caption-comfyui" - } - ], - "https://github.com/alpertunga-bile/prompt-generator-comfyui": [ - [ - "Prompt Generator" - ], - { - "title_aux": "prompt-generator" - } - ], - "https://github.com/alsritter/asymmetric-tiling-comfyui": [ - [ - "Asymmetric_Tiling_KSampler" - ], - { - "title_aux": "asymmetric-tiling-comfyui" - } - ], - "https://github.com/alt-key-project/comfyui-dream-project": [ - [ - "Analyze Palette [Dream]", - "Beat Curve [Dream]", - "Big Float Switch [Dream]", - "Big Image Switch [Dream]", - "Big Int Switch [Dream]", - "Big Latent Switch [Dream]", - "Big Palette Switch [Dream]", - "Big Text Switch [Dream]", - "Boolean To Float [Dream]", - "Boolean To Int [Dream]", - "Build Prompt [Dream]", - "CSV Curve [Dream]", - "CSV Generator [Dream]", - "Calculation [Dream]", - "Common Frame Dimensions [Dream]", - "Compare Palettes [Dream]", - "FFMPEG Video Encoder [Dream]", - "File Count [Dream]", - "Finalize Prompt [Dream]", - "Float Input [Dream]", - "Float to Log Entry [Dream]", - "Frame Count Calculator [Dream]", - "Frame Counter (Directory) [Dream]", - "Frame Counter (Simple) [Dream]", - "Frame Counter Info [Dream]", - "Frame Counter Offset [Dream]", - "Frame Counter Time Offset [Dream]", - "Image Brightness Adjustment [Dream]", - "Image Color Shift [Dream]", - "Image Contrast Adjustment [Dream]", - "Image Motion [Dream]", - "Image Sequence Blend [Dream]", - "Image Sequence Loader [Dream]", - "Image Sequence Saver [Dream]", - "Image Sequence Tweening [Dream]", - "Int Input [Dream]", - "Int to Log Entry [Dream]", - "Laboratory [Dream]", - "Linear Curve [Dream]", - "Log Entry Joiner [Dream]", - "Log File [Dream]", - "Noise from Area Palettes [Dream]", - "Noise from Palette [Dream]", - "Palette Color Align [Dream]", - "Palette Color Shift [Dream]", - "Sample Image Area as Palette [Dream]", - "Sample Image as Palette [Dream]", - "Saw Curve [Dream]", - "Sine Curve [Dream]", - "Smooth Event Curve [Dream]", - "String Input [Dream]", - "String Tokenizer [Dream]", - "String to Log Entry [Dream]", - "Text Input [Dream]", - "Triangle Curve [Dream]", - "Triangle Event Curve [Dream]", - "WAV Curve [Dream]" - ], - { - "title_aux": "Dream Project Animation Nodes" - } - ], - "https://github.com/alt-key-project/comfyui-dream-video-batches": [ - [ - "Blended Transition [DVB]", - "Calculation [DVB]", - "Create Frame Set [DVB]", - "Divide [DVB]", - "Fade From Black [DVB]", - "Fade To Black [DVB]", - "Float Input [DVB]", - "For Each Done [DVB]", - "For Each Filename [DVB]", - "Frame Set Append [DVB]", - "Frame Set Frame Dimensions Scaled [DVB]", - "Frame Set Index Offset [DVB]", - "Frame Set Merger [DVB]", - "Frame Set Reindex [DVB]", - "Frame Set Repeat [DVB]", - "Frame Set Reverse [DVB]", - "Frame Set Split Beginning [DVB]", - "Frame Set Split End [DVB]", - "Frame Set Splitter [DVB]", - "Generate Inbetween Frames [DVB]", - "Int Input [DVB]", - "Linear Camera Pan [DVB]", - "Linear Camera Roll [DVB]", - "Linear Camera Zoom [DVB]", - "Load Image From Path [DVB]", - "Multiply [DVB]", - "Sine Camera Pan [DVB]", - "Sine Camera Roll [DVB]", - "Sine Camera Zoom [DVB]", - "String Input [DVB]", - "Text Input [DVB]", - "Trace Memory Allocation [DVB]", - "Unwrap Frame Set [DVB]" - ], - { - "title_aux": "Dream Video Batches" - } - ], - "https://github.com/an90ray/ComfyUI_RErouter_CustomNodes": [ - [ - "CLIPTextEncode (RE)", - "CLIPTextEncodeSDXL (RE)", - "CLIPTextEncodeSDXLRefiner (RE)", - "Int (RE)", - "RErouter <=", - "RErouter =>", - "String (RE)" - ], - { - "title_aux": "ComfyUI_RErouter_CustomNodes" - } - ], - "https://github.com/andersxa/comfyui-PromptAttention": [ - [ - "CLIPAttentionMaskEncode" - ], - { - "title_aux": "CLIP Directional Prompt Attention" - } - ], - "https://github.com/andygill/comfyui-sunflower-nodes": [ - [ - "DepthViewToIsometric", - "DisparityToDepthView", - "EquirectangularToRectilinear", - "ImageChannelSelect", - "MaskChannelSelect", - "ResizeDown" - ], - { - "title_aux": "comfyui-sunflower-nodes" - } - ], - "https://github.com/angeloshredder/StableCascadeResizer": [ - [ - "CascadeResize" - ], - { - "title_aux": "StableCascadeResizer" - } - ], - "https://github.com/anhkhoatranle30/Handy-Nodes-ComfyUI": [ - [ - "Custom Save Image //Handy" - ], - { - "author": "Khoa Tran", - "description": "This extension offers various handy nodes.", - "nickname": "Handy-Nodes-ComfyUI", - "title": "Handy-Nodes-ComfyUI", - "title_aux": "Handy Node ComfyUI" - } - ], - "https://github.com/arcum42/ComfyUI_SageUtils": [ - [ - "Sage_AdvSamplerInfo", - "Sage_CacheMaintenance", - "Sage_CheckpointLoaderRecent", - "Sage_CheckpointLoaderSimple", - "Sage_CleanText", - "Sage_CollectKeywordsFromLoraStack", - "Sage_ConditioningOneOut", - "Sage_ConditioningRngOut", - "Sage_ConditioningZeroOut", - "Sage_ConstructMetadata", - "Sage_ConstructMetadataLite", - "Sage_DualCLIPTextEncode", - "Sage_EmptyLatentImagePassthrough", - "Sage_GetFileHash", - "Sage_JoinText", - "Sage_KSampler", - "Sage_LastLoraInfo", - "Sage_LoadImage", - "Sage_LogicalSwitch", - "Sage_LoraStack", - "Sage_LoraStackLoader", - "Sage_LoraStackRecent", - "Sage_ModelInfo", - "Sage_ModelReport", - "Sage_PonyPrefix", - "Sage_SamplerInfo", - "Sage_SaveImageWithMetadata", - "Sage_SetBool", - "Sage_SetFloat", - "Sage_SetInteger", - "Sage_SetText", - "Sage_TripleJoinText", - "Sage_UNETLoader", - "Sage_ViewText" - ], - { - "title_aux": "Sage Utils" - } - ], - "https://github.com/asaddi/ComfyUI-YALLM-node": [ - [ - "LLMChat", - "LLMMinP", - "LLMModel", - "LLMPrependAppend", - "LLMProvider", - "LLMTemperature", - "LLMTextLatch", - "LLMTopK", - "LLMTopP" - ], - { - "title_aux": "ComfyUI-YALLM-node" - } - ], - "https://github.com/asagi4/ComfyUI-Adaptive-Guidance": [ - [ - "AdaptiveGuidance", - "AdaptiveProjectedGuidance", - "PerpNegAdaptiveGuidanceGuider" - ], - { - "title_aux": "Adaptive Guidance for ComfyUI" - } - ], - "https://github.com/asagi4/ComfyUI-CADS": [ - [ - "CADS" - ], - { - "title_aux": "ComfyUI-CADS" - } - ], - "https://github.com/asagi4/ComfyUI-NPNet": [ - [ - "NPNetGoldenNoise" - ], - { - "title_aux": "ComfyUI NPNet (Golden Noise)" - } - ], - "https://github.com/asagi4/comfyui-prompt-control": [ - [ - "AttentionMaskHookExperimental", - "PCAddMaskToCLIP", - "PCAddMaskToCLIPMany", - "PCLazyLoraLoader", - "PCLazyLoraLoaderAdvanced", - "PCLazyTextEncode", - "PCLazyTextEncodeAdvanced", - "PCLoraHooksFromText", - "PCSetLogLevel", - "PCSetPCTextEncodeSettings", - "PCTextEncode", - "PCTextEncodeWithRange" - ], - { - "author": "asagi4", - "description": "Control LoRA and prompt scheduling, advanced text encoding, regional prompting, and much more, through your text prompt. Generates dynamic graphs that are literally identical to handcrafted noodle soup.", - "nickname": "ComfyUI Prompt Control", - "title": "ComfyUI Prompt Control", - "title_aux": "ComfyUI Prompt Control" - } - ], - "https://github.com/asagi4/comfyui-utility-nodes": [ - [ - "MUForceCacheClear", - "MUJinjaRender", - "MUReplaceModelWeights", - "MUSimpleWildcard" - ], - { - "title_aux": "asagi4/comfyui-utility-nodes" - } - ], - "https://github.com/asutermo/ComfyUI-Flux-TryOff": [ - [ - "TryOffFluxFillModelNode", - "TryOffModelNode", - "TryOffRunNode" - ], - { - "title_aux": "Try Off w/ Flux and CatVTON" - } - ], - "https://github.com/aszc-dev/ComfyUI-CoreMLSuite": [ - [ - "Core ML Converter", - "Core ML LCM Converter", - "Core ML LoRA Loader", - "CoreMLModelAdapter", - "CoreMLSampler", - "CoreMLSamplerAdvanced", - "CoreMLUNetLoader" - ], - { - "title_aux": "Core ML Suite for ComfyUI" - } - ], - "https://github.com/audioscavenger/ComfyUI-Thumbnails": [ - [ - "LoadImage" - ], - { - "author": "AudioscavengeR", - "description": "Load Image thumbnails and show input subfolders.", - "nickname": "LoadImageThumbnails", - "title": "LoadImageThumbnails", - "title_aux": "ComfyUI-Thumbnails" - } - ], - "https://github.com/audioscavenger/save-image-extended-comfyui": [ - [ - "SaveImageExtended" - ], - { - "author": "AudioscavengeR", - "description": "1 custom node to save your pictures in various folders and formats.", - "nickname": "Save Image Extended", - "title": "Save Image Extended", - "title_aux": "Save Image Extended for ComfyUI" - } - ], - "https://github.com/avatechai/avatar-graph-comfyui": [ - [ - "ApplyMeshTransformAsShapeKey", - "B_ENUM", - "B_VECTOR3", - "B_VECTOR4", - "Combine Points", - "CreateShapeFlow", - "ExportBlendshapes", - "ExportGLTF", - "Extract Boundary Points", - "Image Alpha Mask Merge", - "ImageBridge", - "LoadImageFromRequest", - "LoadImageWithAlpha", - "LoadValueFromRequest", - "SAM MultiLayer", - "Save Image With Workflow" - ], - { - "author": "Avatech Limited", - "description": "Include nodes for sam + bpy operation, that allows workflow creations for generative 2d character rig.", - "nickname": "Avatar Graph", - "title": "Avatar Graph", - "title_aux": "Avatar Graph" - } - ], - "https://github.com/aws-samples/comfyui-llm-node-for-amazon-bedrock": [ - [ - "Bedrock - Amazon Nova Canvas Text to Image", - "Bedrock - Claude", - "Bedrock - Claude Multimodal", - "Bedrock - Nova", - "Bedrock - Nova Background Prompt Replace", - "Bedrock - Nova IpAdapter", - "Bedrock - Nova Text to Image", - "Bedrock - Nova Video", - "Bedrock - Ray2 Video", - "Bedrock - SDXL", - "Bedrock - Titan Inpainting", - "Bedrock - Titan Outpainting", - "Bedrock - Titan Text to Image", - "Bedrock - Titan Variation", - "Image From S3", - "Image From URL", - "Image OCR By Textract", - "Image OCR By Textract V2", - "Image OCR By Textract V3", - "Image OCR by PaddleOCR", - "Image To S3", - "JSON Text Extraction", - "Prompt Regex Remove", - "Prompt Template", - "Prompt Template with Two Inputs" - ], - { - "title_aux": "Amazon Bedrock nodes for ComfyUI" - } - ], - "https://github.com/azure-dragon-ai/ComfyUI-ClipScore-Nodes": [ - [ - "HaojihuiClipScoreFakeImageProcessor", - "HaojihuiClipScoreImageProcessor", - "HaojihuiClipScoreImageScore", - "HaojihuiClipScoreLoader", - "HaojihuiClipScoreRealImageProcessor", - "HaojihuiClipScoreTextProcessor" - ], - { - "title_aux": "ComfyUI-ClipScore-Nodes" - } - ], - "https://github.com/badayvedat/ComfyUI-fal-Connector": [ - [ - "RemoteCheckpointLoader_fal", - "RemoteLoraLoader_fal" - ], - { - "title_aux": "ComfyUI-fal-Connector" - } - ], - "https://github.com/badjeff/comfyui_lora_tag_loader": [ - [ - "LoraTagLoader" - ], - { - "title_aux": "LoRA Tag Loader for ComfyUI" - } - ], - "https://github.com/baicai99/ComfyUI-FrameSkipping": [ - [ - "FrameSelector", - "FrameSkipping", - "FrameTruncating", - "IntOperationsNode", - "MaskFrameSkipping", - "MaskGenerator", - "MaskSelector" - ], - { - "title_aux": "ComfyUI-FrameSkipping" - } - ], - "https://github.com/bananasss00/ComfyUI-SP-Nodes": [ - [ - "BoolSwitchOutStr", - "CivitaiPrompts", - "ComfyuiRuntimeArgs", - "FaceScatter", - "FaceScatter2", - "FluxInspireLbw_Batch", - "FluxInspireLbw_BlockVectorPreset", - "GodnessMerger_Apply", - "GodnessMerger_InputBlocks", - "GodnessMerger_InputBlocksExperimental", - "GodnessMerger_LabelEmb", - "GodnessMerger_MiddleBlock", - "GodnessMerger_MiddleBlockExperimental", - "GodnessMerger_NoiseInjection", - "GodnessMerger_Out", - "GodnessMerger_OutputBlocks", - "GodnessMerger_OutputBlocksExperimental", - "GodnessMerger_RAW_Apply", - "GodnessMerger_TimeEmbed", - "ImageMonitor", - "ImgMetaValueExtractor", - "LoraLoaderByPath", - "LoraLoaderFromFolder", - "LoraLoaderOnlyModelByPath", - "NoiseInjectionEssentialsHookProvider", - "PreviewImageWEBP", - "PromptChecker", - "RandomPromptFromBook", - "Random_Model_Merge", - "SD3BlocksMultiply", - "SD3Multiply", - "SP-CheckpointSave", - "SP-UnetSave", - "SP_DDInpaint_Pipe", - "SP_DictValue", - "SP_DynamicCombo", - "SP_FlorenceCaption", - "SP_FluxFastMergePatchFP8 [Experimental]", - "SP_FluxLoader", - "SP_FluxUnsampler", - "SP_FluxUnsampler_ForwardODESampler", - "SP_FluxUnsampler_InverseSampler", - "SP_HiresGen", - "SP_HiresGen_Dynamic", - "SP_HiresGen_HiresCfg", - "SP_HiresGen_Sharpen", - "SP_HunyuanLoader", - "SP_KSampler", - "SP_KSamplerSelect", - "SP_KoboldCpp", - "SP_KoboldCppWithContext", - "SP_KoboldCpp_BannedTokens", - "SP_KoboldCpp_OverrideCfg", - "SP_ListAny", - "SP_Pass", - "SP_Pipe", - "SP_Pipe_ToBasicPipe", - "SP_SD3Loader", - "SP_SDLoader", - "SP_Supir", - "SP_SupirSampler", - "SP_SupirSampler_DPMPP2M", - "SP_SupirSampler_EDM", - "SP_UnlistValues", - "SP_WebsocketSendImage", - "SP_XYGrid", - "SP_XYValues", - "ScatterParams", - "ScatterParamsBatch", - "SendTelegramChatBot", - "StrToCombo", - "TextSplitJoinByDelimiter" - ], - { - "author": "SeniorPioner", - "description": "Node Pack: PromptChecker for token toggling, KoboldCPP API, ModelMerging, Telegram-Bot-API, and more", - "nickname": "SP-Nodes", - "title": "SP-Nodes", - "title_aux": "SP-Nodes" - } - ], - "https://github.com/bananasss00/ComfyUI-flux_fill_patcher": [ - [ - "ApplyFluxFillPatch" - ], - { - "title_aux": "ComfyUI-flux_fill_patcher" - } - ], - "https://github.com/banodoco/steerable-motion": [ - [ - "BatchCreativeInterpolation", - "IpaConfiguration", - "RemoveAndInterpolateFrames" - ], - { - "title_aux": "Steerable Motion" - } - ], - "https://github.com/banqingyuan/ComfyUI-text-replace": [ - [ - "ChatOverlayNode", - "ExtractJsonNode", - "ImageEraseNode", - "OCRLocNode" - ], - { - "title_aux": "ComfyUI-text-replace" - } - ], - "https://github.com/bartly/Comfyui_babel_removebg_api": [ - [ - "BabelRemovebg" - ], - { - "title_aux": "Babel Removebg Api Node for ComfyUI" - } - ], - "https://github.com/bash-j/mikey_nodes": [ - [ - "AddMetaData", - "Batch Crop Image", - "Batch Crop Resize Inplace", - "Batch Load Images", - "Batch Resize Image for SDXL", - "Checkpoint Loader Simple Mikey", - "CheckpointHash", - "CheckpointSaveModelOnly", - "CinematicLook", - "Empty Latent Ratio Custom SDXL", - "Empty Latent Ratio Select SDXL", - "EvalFloats", - "FaceFixerOpenCV", - "FileNamePrefix", - "FileNamePrefixDateDirFirst", - "Float to String", - "GetSubdirectories", - "HaldCLUT", - "Image Caption", - "ImageBorder", - "ImageOverlay", - "ImagePaste", - "Int to String", - "LMStudioPrompt", - "Load Image Based on Number", - "LoraSyntaxProcessor", - "Mikey Sampler", - "Mikey Sampler Base Only", - "Mikey Sampler Base Only Advanced", - "Mikey Sampler Tiled", - "Mikey Sampler Tiled Base Only", - "MikeyLatentTileSampler", - "MikeyLatentTileSamplerCustom", - "MikeySamplerTiledAdvanced", - "MikeySamplerTiledAdvancedBaseOnly", - "ModelMergePixArtSigmaXL2_1024MS", - "ModelMergeTrainDiff", - "ModelMergeTrainDiffPixartSigmaXL2_1024MS", - "MosaicExpandImage", - "OobaPrompt", - "PresetRatioSelector", - "Prompt With SDXL", - "Prompt With Style", - "Prompt With Style V2", - "Prompt With Style V3", - "Range Float", - "Range Integer", - "Ratio Advanced", - "Resize Image for SDXL", - "SD3TextConditioningWithOptionsOnePrompt", - "SRFloatPromptInput", - "SRIntPromptInput", - "SRStringPromptInput", - "Save Image If True", - "Save Image With Prompt Data", - "Save Images Mikey", - "Save Images No Display", - "SaveMetaData", - "SearchAndReplace", - "Seed String", - "Style Conditioner", - "Style Conditioner Base Only", - "Text2InputOr3rdOption", - "TextCombinations", - "TextCombinations3", - "TextConcat", - "TextPadderMikey", - "TextPreserve", - "Upscale Tile Calculator", - "Wildcard Processor", - "WildcardAndLoraSyntaxProcessor", - "WildcardOobaPrompt" - ], - { - "title_aux": "Mikey Nodes" - } - ], - "https://github.com/bear2b/comfyui-argo-nodes": [ - [ - "ColorMatrixGPU", - "LoadGridFromURL", - "SaveGridToS3" - ], - { - "title_aux": "ColorMatrixGPU Node for ComfyUI" - } - ], - "https://github.com/bedovyy/ComfyUI_NAIDGenerator": [ - [ - "ColorizeNAID", - "DeclutterNAID", - "EmotionNAID", - "GenerateNAID", - "Img2ImgOptionNAID", - "InpaintingOptionNAID", - "LineArtNAID", - "MaskImageToNAID", - "ModelOptionNAID", - "NetworkOptionNAID", - "PromptToNAID", - "RemoveBGNAID", - "SketchNAID", - "V4BasePrompt", - "V4NegativePrompt", - "VibeTransferOptionNAID" - ], - { - "title_aux": "ComfyUI_NAIDGenerator" - } - ], - "https://github.com/benjiyaya/ComfyUI-HunyuanVideoImagesGuider": [ - [ - "Hunyuan Video Image To Guider" - ], - { - "title_aux": "ComfyUI-HunyuanVideoImagesGuider" - } - ], - "https://github.com/benjiyaya/ComfyUI-KokoroTTS": [ - [ - "Kokoro TextToSpeech" - ], - { - "title_aux": "ComfyUI-KokoroTTS" - } - ], - "https://github.com/bentoml/comfy-pack": [ - [ - "CPackInputAny", - "CPackInputFile", - "CPackInputImage", - "CPackInputInt", - "CPackInputString", - "CPackOutputFile", - "CPackOutputImage" - ], - { - "title_aux": "Comfy-Pack" - } - ], - "https://github.com/bilal-arikan/ComfyUI_TextAssets": [ - [ - "LoadTextAsset" - ], - { - "title_aux": "ComfyUI_TextAssets" - } - ], - "https://github.com/billwuhao/ComfyUI_OneButtonPrompt_Flux": [ - [ - "OneButtonPromptFlux" - ], - { - "title_aux": "ComfyUI_OneButtonPrompt_Flux" - } - ], - "https://github.com/bitaffinity/ComfyUI_HF_Inference": [ - [ - "Classification", - "FeatureExtraction", - "Generation", - "ObjectDetection", - "QuestionAnswering", - "Segmentation", - "TextToImage", - "Translation" - ], - { - "title_aux": "ComfyUI_HF_Inference" - } - ], - "https://github.com/black-forest-labs/bfl-comfy-nodes": [ - [ - "FLUX 1.0 [canny]", - "FLUX 1.0 [canny] Finetuned", - "FLUX 1.0 [depth]", - "FLUX 1.0 [depth] Finetuned", - "FLUX 1.0 [dev]", - "FLUX 1.0 [fill]", - "FLUX 1.0 [fill] Finetuned", - "FLUX 1.0 [pro]", - "FLUX 1.0 [pro] Finetuned", - "FLUX 1.1 [pro]", - "FLUX 1.1 [ultra]", - "FLUX 1.1 [ultra] Finetuned" - ], - { - "title_aux": "Black Forest Labs API Nodes" - } - ], - "https://github.com/blackcodetavern/ComfyUI-Benripack": [ - [ - "AnimationExtractor", - "CharacterPipe", - "Load3DModel" - ], - { - "title_aux": "ComfyUI-Benripack" - } - ], - "https://github.com/blepping/ComfyUI-bleh": [ - [ - "BlehBlockCFG", - "BlehBlockOps", - "BlehCast", - "BlehDeepShrink", - "BlehDisableNoise", - "BlehDiscardPenultimateSigma", - "BlehForceSeedSampler", - "BlehGlobalSageAttention", - "BlehHyperTile", - "BlehInsaneChainSampler", - "BlehLatentBlend", - "BlehLatentOps", - "BlehLatentScaleBy", - "BlehModelPatchConditional", - "BlehPlug", - "BlehRefinerAfter", - "BlehSageAttentionSampler", - "BlehSetSamplerPreset", - "BlehSetSigmas" - ], - { - "title_aux": "ComfyUI-bleh" - } - ], - "https://github.com/blepping/ComfyUI-sonar": [ - [ - "NoisyLatentLike", - "SONAR_CUSTOM_NOISE to NOISE", - "SamplerConfigOverride", - "SamplerSonarDPMPPSDE", - "SamplerSonarEuler", - "SamplerSonarEulerA", - "SonarAdvanced1fNoise", - "SonarAdvancedPowerLawNoise", - "SonarAdvancedPyramidNoise", - "SonarBlendedNoise", - "SonarChannelNoise", - "SonarCompositeNoise", - "SonarCustomNoise", - "SonarGuidanceConfig", - "SonarGuidedNoise", - "SonarModulatedNoise", - "SonarRandomNoise", - "SonarRepeatedNoise", - "SonarScheduledNoise" - ], - { - "title_aux": "ComfyUI-sonar" - } - ], - "https://github.com/blepping/comfyui_jankdiffusehigh": [ - [ - "DiffuseHighParam", - "DiffuseHighSampler" - ], - { - "title_aux": "comfyui_jankdiffusehigh" - } - ], - "https://github.com/blepping/comfyui_jankhidiffusion": [ - [ - "ApplyMSWMSAAttention", - "ApplyMSWMSAAttentionSimple", - "ApplyRAUNet", - "ApplyRAUNetSimple" - ], - { - "title_aux": "comfyui_jankhidiffusion" - } - ], - "https://github.com/blepping/comfyui_overly_complicated_sampling": [ - [ - "OCS Group", - "OCS ModelSetMaxSigma", - "OCS MultiParam", - "OCS Param", - "OCS Sampler", - "OCS SimpleRestartSchedule", - "OCS Substeps", - "OCSNoise PerlinAdvanced", - "OCSNoise PerlinSimple", - "OCSNoise to SONAR_CUSTOM_NOISE" - ], - { - "title_aux": "comfyui_overly_complicated_sampling" - } - ], - "https://github.com/blob8/ComfyUI_sloppy-comic": [ - [ - "Generate Comic", - "LLM API Request" - ], - { - "title_aux": "ComfyUI_sloppy-comic" - } - ], - "https://github.com/blueraincoatli/comfyUI_SillyNodes": [ - [ - "BooleanJumper|SillyNode", - "CloseErrorWindowNode|SillyNode", - "QueueSequence|SillyNode", - "Screenshots|SillyNode", - "dummyInput|SillyNode", - "dummyInput|blueraincoat" - ], - { - "title_aux": "comfyUI_SillyNodes" - } - ], - "https://github.com/bluevisor/ComfyUI_PS_Blend_Node": [ - [ - "PSBlendNode" - ], - { - "title_aux": "ComfyUI_PS_Blend_Node" - } - ], - "https://github.com/bmad4ever/comfyui_ab_samplercustom": [ - [ - "AB SamplerCustom (experimental)" - ], - { - "title_aux": "comfyui_ab_sampler" - } - ], - "https://github.com/bmad4ever/comfyui_lists_cartesian_product": [ - [ - "AnyListCartesianProduct" - ], - { - "title_aux": "Lists Cartesian Product" - } - ], - "https://github.com/bmad4ever/comfyui_quilting": [ - [ - "GuessQuiltingBlockSize_Bmad", - "ImageQuiltingSeamlessMB_Bmad", - "ImageQuiltingSeamlessSB_Bmad", - "ImageQuilting_Bmad", - "LatentQuiltingSeamlessMB_Bmad", - "LatentQuiltingSeamlessSB_Bmad", - "LatentQuilting_Bmad" - ], - { - "title_aux": "comfyui_quilting" - } - ], - "https://github.com/bmad4ever/comfyui_wfc_like": [ - [ - "WFC_CustomTemperature_Bmad", - "WFC_CustomValueWeights_Bmad", - "WFC_Decode_BMad", - "WFC_EmptyState_Bmad", - "WFC_Encode_BMad", - "WFC_Filter_Bmad", - "WFC_GenParallel_Bmad", - "WFC_Generate_BMad", - "WFC_SampleNode_BMad" - ], - { - "title_aux": "comfyui_wfc_like" - } - ], - "https://github.com/bobmagicii/comfykit-custom-nodes": [ - [ - "LoraStackFiveSimple", - "LoraThree", - "LoraWithMeta", - "TypecasterClip", - "TypecasterCond", - "TypecasterImage", - "TypecasterLatent", - "TypecasterModel", - "TypecasterVae" - ], - { - "title_aux": "ComfyKit Custom Nodes" - } - ], - "https://github.com/bombax-xiaoice/ComfyUI-Allegro": [ - [ - "AllegroDecoder", - "AllegroEncoder", - "AllegroSampler", - "AllegroTI2VEncoder", - "AllegroTI2VSampler", - "AllegroTextEncoder", - "LoadAllegroModel", - "LoadAllegroTI2VModel" - ], - { - "title_aux": "ComfyUI-Allegro" - } - ], - "https://github.com/bombax-xiaoice/ComfyUI-MagicDance": [ - [ - "LoadMagicDanceModel", - "MagicDanceDecoder", - "MagicDanceEncoder", - "MagicDanceSampler" - ], - { - "title_aux": "ComfyUI-MagicDance" - } - ], - "https://github.com/bombax-xiaoice/ComfyUI-Open-Sora-I2V": [ - [ - "OpenSoraDecoder", - "OpenSoraEncoder", - "OpenSoraLoader", - "OpenSoraSampler", - "OpenSoraTextEncoder" - ], - { - "title_aux": "ComfyUI-Open-Sora-I2V" - } - ], - "https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan": [ - [ - "OpenSoraPlan0LoaderT2V", - "OpenSoraPlan1LoaderT2V", - "OpenSoraPlan2LoaderI2V", - "OpenSoraPlan2LoaderT2V", - "OpenSoraPlan2SamplerI2V", - "OpenSoraPlan3LoaderI2V", - "OpenSoraPlan3LoaderT2V", - "OpenSoraPlan3SamplerI2V", - "OpenSoraPlanDecoder", - "OpenSoraPlanPromptRefiner", - "OpenSoraPlanSamplerT2V" - ], - { - "title_aux": "ComfyUI-OpenSoraPlan" - } - ], - "https://github.com/bombless/comfyUI-RememberingUtils": [ - [ - "RememberLastSeed", - "ShowLastSeed", - "ShowLastText" - ], - { - "title_aux": "Remembering utils" - } - ], - "https://github.com/bongsang/ComfyUI-Bongsang": [ - [ - "AnyInfo", - "RgbChannel" - ], - { - "title_aux": "ComfyUI-Bongsang" - } - ], - "https://github.com/boredofnames/ComfyUI-ntfy": [ - [ - "Ntfy", - "SaveImageAndNtfy" - ], - { - "title_aux": "ComfyUI-ntfy" - } - ], - "https://github.com/bradsec/ComfyUI_ResolutionSelector": [ - [ - "ResolutionSelector" - ], - { - "title_aux": "ResolutionSelector for ComfyUI" - } - ], - "https://github.com/bradsec/ComfyUI_StringEssentials": [ - [ - "StringPreview", - "StringReplace", - "StringStrip", - "StringTextbox" - ], - { - "title_aux": "ComfyUI_StringEssentials" - } - ], - "https://github.com/braintacles/braintacles-comfyui-nodes": [ - [ - "CLIPTextEncodeSDXL-Multi-IO", - "CLIPTextEncodeSDXL-Pipe", - "Empty Latent Image from Aspect-Ratio", - "Interval Sampler", - "Random Find and Replace" - ], - { - "title_aux": "braintacles-nodes" - } - ], - "https://github.com/brayevalerien/ComfyUI-resynthesizer": [ - [ - "Resynthesize" - ], - { - "title_aux": "ComfyUI Resynthesizer" - } - ], - "https://github.com/brianfitzgerald/style_aligned_comfy": [ - [ - "StyleAlignedBatchAlign", - "StyleAlignedReferenceSampler", - "StyleAlignedSampleReferenceLatents" - ], - { - "title_aux": "StyleAligned for ComfyUI" - } - ], - "https://github.com/bronkula/comfyui-fitsize": [ - [ - "FS: Crop Image Into Even Pieces", - "FS: Fit Image And Resize", - "FS: Fit Size From Image", - "FS: Fit Size From Int", - "FS: Image Region To Mask", - "FS: Load Image And Resize To Fit", - "FS: Pick Image From Batch", - "FS: Pick Image From Batches", - "FS: Pick Image From List" - ], - { - "title_aux": "comfyui-fitsize" - } - ], - "https://github.com/bruefire/ComfyUI-SeqImageLoader": [ - [ - "VFrame Loader With Mask Editor", - "Video Loader With Mask Editor" - ], - { - "title_aux": "ComfyUI Sequential Image Loader" - } - ], - "https://github.com/budihartono/comfyui_otonx_nodes": [ - [ - "OTX Integer Multiple Inputs 4", - "OTX Integer Multiple Inputs 5", - "OTX Integer Multiple Inputs 6", - "OTX KSampler Feeder", - "OTX Versatile Multiple Inputs 4", - "OTX Versatile Multiple Inputs 5", - "OTX Versatile Multiple Inputs 6" - ], - { - "title_aux": "Otonx's Custom Nodes" - } - ], - "https://github.com/bugltd/ComfyLab-Pack": [ - [ - "Convert to Any (lab)", - "File Queue (lab)", - "Format: Multiline (lab)", - "Format: String (lab)", - "Generic Queue (lab)", - "Image Queue (lab)", - "Input: Boolean (lab)", - "Input: Float (lab)", - "Input: Folder (lab)", - "Input: Integer (lab)", - "Input: Multiline (lab)", - "Input: String (lab)", - "List: Limit (lab)", - "List: Merge (lab)", - "List: from Elements (lab)", - "List: from File (backend) (lab)", - "List: from Multiline (lab)", - "List: from String (lab)", - "Load Image (RGBA) (lab)", - "Output Config: Load (lab)", - "Output Config: Retrieve (backend) (lab)", - "Plot Config: Grid (lab)", - "Plot Config: Header/Footer (lab)", - "Resolution to Dimensions (lab)", - "Save Text File (lab)", - "Sleep (lab)", - "XY Plot: Queue (lab)", - "XY Plot: Render (lab)", - "XY Plot: Split Data (lab)" - ], - { - "nodename_pattern": " \\(lab\\)$", - "title_aux": "ComfyLab Pack" - } - ], - "https://github.com/bvhari/ComfyUI_ImageProcessing": [ - [ - "BilateralFilter", - "Brightness", - "Gamma", - "Hue", - "Saturation", - "SigmoidCorrection", - "UnsharpMask" - ], - { - "title_aux": "ImageProcessing" - } - ], - "https://github.com/bvhari/ComfyUI_PerpCFG": [ - [ - "PerpCFG" - ], - { - "title_aux": "ComfyUI_PerpCFG" - } - ], - "https://github.com/bvhari/ComfyUI_PerpWeight": [ - [ - "CLIPTextEncodePerpWeight" - ], - { - "title_aux": "ComfyUI_PerpWeight" - } - ], - "https://github.com/bvhari/ComfyUI_SUNoise": [ - [ - "SUNoiseLatent", - "SamplersSUNoise", - "SamplersSUNoiseAdvanced" - ], - { - "title_aux": "ComfyUI_SUNoise" - } - ], - "https://github.com/c0ffymachyne/ComfyUI_BeatByte": [ - [ - "BytebeatSynth" - ], - { - "title_aux": "Bytebeat Synthesizer: Composing with Operators" - } - ], - "https://github.com/c0ffymachyne/ComfyUI_SignalProcessing": [ - [ - "SignalProcessingBaxandall3BandEQ", - "SignalProcessingBaxandallEQ", - "SignalProcessingCompressor", - "SignalProcessingConvolutionReverb", - "SignalProcessingFilter", - "SignalProcessingHarmonicsEnhancer", - "SignalProcessingLimiter", - "SignalProcessingLoadAudio", - "SignalProcessingLoudness", - "SignalProcessingMixdown", - "SignalProcessingNormalizer", - "SignalProcessingPadSynth", - "SignalProcessingPadSynthChoir", - "SignalProcessingPaulStretch", - "SignalProcessingPitchShifter", - "SignalProcessingSaturation", - "SignalProcessingSpectrogram", - "SignalProcessingStereoWidening", - "SignalProcessingWaveform" - ], - { - "title_aux": "ComfyUI Signal Processing" - } - ], - "https://github.com/cake-ml/tiny-sana-preview": [ - [ - "TinySanaPreview" - ], - { - "title_aux": "TinySanaPreview" - } - ], - "https://github.com/calcuis/gguf": [ - [ - "ClipLoaderGGUF", - "DualClipLoaderGGUF", - "GGUFSave", - "GGUFUndo", - "LoaderGGUF", - "LoaderGGUFAdvanced", - "TENSORCut", - "TripleClipLoaderGGUF" - ], - { - "preemptions": [ - "LoaderGGUF", - "ClipLoaderGGUF", - "DualClipLoaderGGUF", - "TripleClipLoaderGGUF", - "LoaderGGUFAdvanced", - "GGUFSave" - ], - "title_aux": "gguf" - } - ], - "https://github.com/caleboleary/ComfyUI-Arc2Face": [ - [ - "Arc2FaceEncoderLoader", - "Arc2FaceFaceExtractor", - "Arc2FaceGenerator", - "Arc2FaceImageGridGenerator", - "Arc2FaceImg2ImgGenerator", - "Arc2FaceUNetLoader" - ], - { - "title_aux": "Arc2Face ComfyUI Node Library" - } - ], - "https://github.com/camenduru/ComfyUI-TostAI": [ - [ - "SendToTostAI" - ], - { - "title_aux": "ComfyUI-TostAI" - } - ], - "https://github.com/catboxanon/comfyui_stealth_pnginfo": [ - [ - "CatboxAnonSaveImageStealth" - ], - { - "title_aux": "comfyui_stealth_pnginfo" - } - ], - "https://github.com/cdb-boop/ComfyUI-Bringing-Old-Photos-Back-to-Life": [ - [ - "BOPBTL_BlendFaces", - "BOPBTL_DetectEnhanceBlendFaces", - "BOPBTL_DetectFaces", - "BOPBTL_EnhanceFaces", - "BOPBTL_EnhanceFacesAdvanced", - "BOPBTL_LoadFaceDetectorModel", - "BOPBTL_LoadFaceEnhancerModel", - "BOPBTL_LoadRestoreOldPhotosModel", - "BOPBTL_LoadScratchMaskModel", - "BOPBTL_RestoreOldPhotos", - "BOPBTL_ScratchMask" - ], - { - "title_aux": "ComfyUI Bringing Old Photos Back to Life" - } - ], - "https://github.com/cdb-boop/comfyui-image-round": [ - [ - "ComfyUI_Image_Round__ImageCropAdvanced", - "ComfyUI_Image_Round__ImageRound", - "ComfyUI_Image_Round__ImageRoundAdvanced" - ], - { - "title_aux": "comfyui-image-round" - } - ], - "https://github.com/cdxOo/comfyui-text-node-with-comments": [ - [ - "text-node-with-comments" - ], - { - "title_aux": "Text Node With Comments (@cdxoo)" - } - ], - "https://github.com/celoron/ComfyUI-VisualQueryTemplate": [ - [ - "VisualQueryTemplateNode" - ], - { - "title_aux": "ComfyUI-VisualQueryTemplate" - } - ], - "https://github.com/celsojr2013/comfyui_jamworks_client": [ - [ - "Jamworks_Download", - "Jamworks_Login", - "Shell_Command" - ], - { - "title_aux": "comfyui_jamworks_client" - } - ], - "https://github.com/celsojr2013/comfyui_simpletools": [ - [ - "GoogleTranslator", - "Parameters", - "ResolutionSolver" - ], - { - "title_aux": "ComfyUI SimpleTools Suit" - } - ], - "https://github.com/cenzijing/ComfyUI-Markmap": [ - [ - "MarkmapNode", - "ReadHtmlNode" - ], - { - "title_aux": "ComfyUI-Markmap" - } - ], - "https://github.com/cerspense/ComfyUI_cspnodes": [ - [ - "DepthToNormalMap", - "GetMP4Prompt", - "ImageDirIterator", - "IncrementEveryN", - "Modelscopet2v", - "Modelscopev2v", - "RemapRange", - "ResizeByImage", - "SplitImageChannels", - "VidDirIterator" - ], - { - "title_aux": "cspnodes" - } - ], - "https://github.com/ceruleandeep/ComfyUI-LLaVA-Captioner": [ - [ - "LlavaCaptioner" - ], - { - "title_aux": "ComfyUI LLaVA Captioner" - } - ], - "https://github.com/chakib-belgaid/ComfyUI-autosize": [ - [ - "CustomAutoSize", - "SDXLAutoSize" - ], - { - "title_aux": "ComfyUI-autosize" - } - ], - "https://github.com/chakib-belgaid/Comfyui_Prompt_styler": [ - [ - "Prompt_Styler" - ], - { - "title_aux": "ComfyUI Style Plugin" - } - ], - "https://github.com/chandlergis/ComfyUI-IMG_Query": [ - [ - "ImageRequestNode" - ], - { - "title_aux": "ComfyUI-IMG_Query" - } - ], - "https://github.com/chandlergis/ComfyUI_EmojiOverlay": [ - [ - "Image Emoji Overlay" - ], - { - "title_aux": "ComfyUI_EmojiOverlay" - } - ], - "https://github.com/changwook987/ComfyUI-Small-Utility": [ - [ - "Eval", - "RandomEmptyLatent" - ], - { - "title_aux": "ComfyUI-Small-Utility" - } - ], - "https://github.com/chaojie/ComfyUI-AniPortrait": [ - [ - "AniPortraitLoader", - "AniPortraitRun", - "Box2Video", - "CoverVideo", - "MaskList2Video" - ], - { - "title_aux": "ComfyUI-AniPortrait" - } - ], - "https://github.com/chaojie/ComfyUI-CameraCtrl-Wrapper": [ - [ - "CameraBasic", - "CameraCombine", - "CameraCtrlLoader", - "CameraCtrlRun", - "CameraJoin", - "CameraTrajectory" - ], - { - "title_aux": "ComfyUI-CameraCtrl-Wrapper" - } - ], - "https://github.com/chaojie/ComfyUI-Champ": [ - [ - "ChampLoader", - "ChampRun", - "ImageCombineOneColumn", - "ImageCombineOneRow" - ], - { - "title_aux": "ComfyUI-Champ" - } - ], - "https://github.com/chaojie/ComfyUI-DragAnything": [ - [ - "DragAnythingLoader", - "DragAnythingPipelineRun", - "DragAnythingPipelineRunRandom", - "DragAnythingRun", - "DragAnythingRunRandom", - "LoadText", - "SaveText", - "VHS_FILENAMES_STRING" - ], - { - "title_aux": "ComfyUI-DragAnything" - } - ], - "https://github.com/chaojie/ComfyUI-DragNUWA": [ - [ - "BrushMotion", - "CompositeMotionBrush", - "CompositeMotionBrushWithoutModel", - "DragNUWA Run", - "DragNUWA Run MotionBrush", - "Get First Image", - "Get Last Image", - "InstantCameraMotionBrush", - "InstantObjectMotionBrush", - "Load CheckPoint DragNUWA", - "Load MotionBrush From Optical Flow", - "Load MotionBrush From Optical Flow Directory", - "Load MotionBrush From Optical Flow Without Model", - "Load MotionBrush From Tracking Points", - "Load MotionBrush From Tracking Points Without Model", - "Load Pose KeyPoints", - "Loop", - "LoopEnd_IMAGE", - "LoopStart_IMAGE", - "Split Tracking Points" - ], - { - "title_aux": "ComfyUI-DragNUWA" - } - ], - "https://github.com/chaojie/ComfyUI-DynamiCrafter": [ - [ - "DynamiCrafter Simple", - "DynamiCrafterInterp Simple", - "DynamiCrafterInterpLoader", - "DynamiCrafterLoader" - ], - { - "title_aux": "ComfyUI-DynamiCrafter" - } - ], - "https://github.com/chaojie/ComfyUI-EasyAnimate": [ - [ - "EasyAnimateLoader", - "EasyAnimateRun" - ], - { - "title_aux": "ComfyUI-EasyAnimate" - } - ], - "https://github.com/chaojie/ComfyUI-Gemma": [ - [ - "GemmaLoader", - "GemmaRun" - ], - { - "title_aux": "ComfyUI-Gemma" - } - ], - "https://github.com/chaojie/ComfyUI-I2VGEN-XL": [ - [ - "I2VGEN-XL Simple", - "Modelscope Pipeline Loader" - ], - { - "title_aux": "ComfyUI-I2VGEN-XL" - } - ], - "https://github.com/chaojie/ComfyUI-Img2Img-Turbo": [ - [ - "Img2ImgTurboEdgeLoader", - "Img2ImgTurboEdgeRun", - "Img2ImgTurboSketchLoader", - "Img2ImgTurboSketchRun" - ], - { - "title_aux": "ComfyUI-Img2Img-Turbo" - } - ], - "https://github.com/chaojie/ComfyUI-LaVIT": [ - [ - "VHS_FILENAMES_STRING_LaVIT", - "VideoLaVITI2I", - "VideoLaVITI2V", - "VideoLaVITI2VLong", - "VideoLaVITLoader", - "VideoLaVITT2V", - "VideoLaVITT2VLong", - "VideoLaVITUnderstandingImage", - "VideoLaVITUnderstandingLoader", - "VideoLaVITUnderstandingVideo", - "VideoLaVITVideoDetokenizerLoader", - "VideoLaVITVideoReconstruction" - ], - { - "title_aux": "ComfyUI-LaVIT" - } - ], - "https://github.com/chaojie/ComfyUI-LightGlue": [ - [ - "LightGlue Loader", - "LightGlue Simple", - "LightGlue Simple Multi" - ], - { - "title_aux": "ComfyUI-LightGlue" - } - ], - "https://github.com/chaojie/ComfyUI-Moore-AnimateAnyone": [ - [ - "Moore-AnimateAnyone Denoising Unet", - "Moore-AnimateAnyone Image Encoder", - "Moore-AnimateAnyone Pipeline Loader", - "Moore-AnimateAnyone Pose Guider", - "Moore-AnimateAnyone Reference Unet", - "Moore-AnimateAnyone Simple", - "Moore-AnimateAnyone VAE" - ], - { - "title_aux": "ComfyUI-Moore-AnimateAnyone" - } - ], - "https://github.com/chaojie/ComfyUI-Motion-Vector-Extractor": [ - [ - "Motion Vector Extractor", - "VideoCombineThenPath" - ], - { - "title_aux": "ComfyUI-Motion-Vector-Extractor" - } - ], - "https://github.com/chaojie/ComfyUI-MotionCtrl": [ - [ - "Load Motion Camera Preset", - "Load Motion Traj Preset", - "Load Motionctrl Checkpoint", - "Motionctrl Cond", - "Motionctrl Sample", - "Motionctrl Sample Simple", - "Select Image Indices" - ], - { - "title_aux": "ComfyUI-MotionCtrl" - } - ], - "https://github.com/chaojie/ComfyUI-MotionCtrl-SVD": [ - [ - "Load Motionctrl-SVD Camera Preset", - "Load Motionctrl-SVD Checkpoint", - "Motionctrl-SVD Sample Simple" - ], - { - "title_aux": "ComfyUI-MotionCtrl-SVD" - } - ], - "https://github.com/chaojie/ComfyUI-MuseTalk": [ - [ - "MuseTalkCupAudio", - "MuseTalkRun", - "VHS_FILENAMES_STRING_MuseTalk" - ], - { - "title_aux": "ComfyUI-MuseTalk" - } - ], - "https://github.com/chaojie/ComfyUI-MuseV": [ - [ - "MuseVRun", - "MuseVRunVid2Vid", - "VHS_FILENAMES_STRING_MuseV" - ], - { - "author": "infguo", - "title_aux": "ComfyUI-MuseV" - } - ], - "https://github.com/chaojie/ComfyUI-Open-Sora": [ - [ - "OpenSoraLoader", - "OpenSoraRun", - "OpenSoraSampler" - ], - { - "title_aux": "ComfyUI-Open-Sora" - } - ], - "https://github.com/chaojie/ComfyUI-Open-Sora-Plan": [ - [ - "OpenSoraPlanDecode", - "OpenSoraPlanLoader", - "OpenSoraPlanRun", - "OpenSoraPlanSample" - ], - { - "title_aux": "ComfyUI-Open-Sora-Plan" - } - ], - "https://github.com/chaojie/ComfyUI-Panda3d": [ - [ - "Panda3dAmbientLight", - "Panda3dAttachNewNode", - "Panda3dBase", - "Panda3dDirectionalLight", - "Panda3dLoadDepthModel", - "Panda3dLoadModel", - "Panda3dLoadTexture", - "Panda3dModelMerge", - "Panda3dTest", - "Panda3dTextureMerge" - ], - { - "title_aux": "ComfyUI-Panda3d" - } - ], - "https://github.com/chaojie/ComfyUI-Pymunk": [ - [ - "PygameRun", - "PygameSurface", - "PymunkDynamicBox", - "PymunkDynamicCircle", - "PymunkRun", - "PymunkShapeMerge", - "PymunkSpace", - "PymunkStaticLine" - ], - { - "title_aux": "ComfyUI-Pymunk" - } - ], - "https://github.com/chaojie/ComfyUI-RAFT": [ - [ - "Load MotionBrush", - "RAFT Run", - "Save MotionBrush", - "VizMotionBrush" - ], - { - "title_aux": "ComfyUI-RAFT" - } - ], - "https://github.com/chaojie/ComfyUI-SimDA": [ - [ - "SimDALoader", - "SimDARun", - "SimDATrain", - "VHS_FILENAMES_STRING_SimDA" - ], - { - "title_aux": "ComfyUI-SimDA" - } - ], - "https://github.com/chaojie/ComfyUI-Trajectory": [ - [ - "Trajectory_Canvas_Tab" - ], - { - "author": "Lerc", - "description": "This extension provides a full page image editor with mask support. There are two nodes, one to receive images from the editor and one to send images to the editor.", - "nickname": "Canvas Tab", - "title": "Canvas Tab", - "title_aux": "ComfyUI-Trajectory" - } - ], - "https://github.com/chaojie/ComfyUI-Video-Editing-X-Attention": [ - [ - "StringList", - "VEXAGuidance", - "VEXALoader", - "VEXARun" - ], - { - "title_aux": "ComfyUI-Video-Editing-X-Attention" - } - ], - "https://github.com/chaojie/ComfyUI-dust3r": [ - [ - "CameraPoseVideo", - "Dust3rLoader", - "Dust3rRun" - ], - { - "title_aux": "ComfyUI-dust3r" - } - ], - "https://github.com/chaojie/ComfyUI_StreamingT2V": [ - [ - "LoadText_StreamingT2V", - "PromptTravelIndex", - "SaveText_StreamingT2V", - "StreamingT2VLoaderAnimateDiff", - "StreamingT2VLoaderAnimateDiffModel", - "StreamingT2VLoaderEnhanceModel", - "StreamingT2VLoaderModelscopeModel", - "StreamingT2VLoaderModelscopeT2V", - "StreamingT2VLoaderSVD", - "StreamingT2VLoaderSVDModel", - "StreamingT2VLoaderStreamModel", - "StreamingT2VLoaderVidXTendModel", - "StreamingT2VRunEnhanceStep", - "StreamingT2VRunI2V", - "StreamingT2VRunLongStep", - "StreamingT2VRunLongStepVidXTendPipeline", - "StreamingT2VRunLongStepVidXTendPipelineCustomRef", - "StreamingT2VRunLongStepVidXTendPipelineCustomRefOutExtendOnly", - "StreamingT2VRunLongStepVidXTendPipelinePromptTravel", - "StreamingT2VRunShortStepAnimateDiff", - "StreamingT2VRunShortStepModelscopeT2V", - "StreamingT2VRunShortStepSVD", - "StreamingT2VRunT2V", - "VHS_FILENAMES_STRING_StreamingT2V" - ], - { - "title_aux": "ComfyUI_StreamingT2V" - } - ], - "https://github.com/chaosaiart/Chaosaiart-Nodes": [ - [ - "chaosaiart_Any_Switch", - "chaosaiart_Any_Switch_Big_Number", - "chaosaiart_Any_Switch_small", - "chaosaiart_AutoNone_Switch_small", - "chaosaiart_CheckpointLoader", - "chaosaiart_CheckpointPrompt", - "chaosaiart_CheckpointPrompt2", - "chaosaiart_CheckpointPrompt_Frame", - "chaosaiart_CheckpointPrompt_FrameMixer", - "chaosaiart_ControlNetApply", - "chaosaiart_ControlNetApply2", - "chaosaiart_ControlNetApply3", - "chaosaiart_Denoising_Switch", - "chaosaiart_EmptyLatentImage", - "chaosaiart_FramePromptCLIPEncode", - "chaosaiart_Frame_Switch", - "chaosaiart_KSampler1", - "chaosaiart_KSampler2", - "chaosaiart_KSampler3", - "chaosaiart_KSampler4", - "chaosaiart_KSampler5", - "chaosaiart_KSampler7", - "chaosaiart_KSampler_a1", - "chaosaiart_KSampler_a1a", - "chaosaiart_KSampler_a2", - "chaosaiart_KSampler_expert_0", - "chaosaiart_KSampler_expert_1", - "chaosaiart_Ksampler_attribut", - "chaosaiart_Load_Image_Batch", - "chaosaiart_Load_Image_Batch_2img", - "chaosaiart_MainPromptCLIPEncode", - "chaosaiart_Number", - "chaosaiart_Number2", - "chaosaiart_Number_Counter", - "chaosaiart_Number_Switch", - "chaosaiart_Prompt", - "chaosaiart_Prompt_Frame", - "chaosaiart_Prompt_mixer_byFrame", - "chaosaiart_SaveImage", - "chaosaiart_Show_Info", - "chaosaiart_Simple_Prompt", - "chaosaiart_Style_Node", - "chaosaiart_TextCLIPEncode", - "chaosaiart_TextCLIPEncode_lora", - "chaosaiart_adjust_color", - "chaosaiart_any_array2input_1Input", - "chaosaiart_any_array2input_all_big", - "chaosaiart_any_array2input_all_small", - "chaosaiart_any_input2array_big", - "chaosaiart_any_input2array_small", - "chaosaiart_controlnet_weidgth", - "chaosaiart_convert", - "chaosaiart_convert_Prompt", - "chaosaiart_forPreview", - "chaosaiart_image_loop", - "chaosaiart_img2gif", - "chaosaiart_img2video", - "chaosaiart_lora", - "chaosaiart_lora_advanced", - "chaosaiart_merge_Folders", - "chaosaiart_oneNode", - "chaosaiart_reloadAny_Load", - "chaosaiart_reloadAny_Save", - "chaosaiart_reloadIMG_Load", - "chaosaiart_reloadIMG_Save", - "chaosaiart_reloadLatent_Load", - "chaosaiart_reloadLatent_Save", - "chaosaiart_restarter", - "chaosaiart_restarter_advanced", - "chaosaiart_video2img1", - "chaosaiart_zoom_frame" - ], - { - "title_aux": "Chaosaiart-Nodes" - } - ], - "https://github.com/chenbaiyujason/ComfyUI_StepFun": [ - [ - "CombineStrings", - "JSONParser", - "StepFunClient", - "TextImageChat", - "VideoChat", - "VideoFileUploader" - ], - { - "title_aux": "ComfyUI-SCStepFun" - } - ], - "https://github.com/cherninlab/logo-generator-comfyui": [ - [ - "GoogleFontsLogo" - ], - { - "title_aux": "Logo Generator Node for ComfyUI" - } - ], - "https://github.com/chesnokovivan/ComfyUI-Novakid": [ - [ - "Novakid Styler" - ], - { - "title_aux": "ComfyUI-Novakid" - } - ], - "https://github.com/chflame163/ComfyUI_CatVTON_Wrapper": [ - [ - "CatVTONWrapper" - ], - { - "author": "chflame", - "description": "CatVTON warpper for ComfyUI", - "nickname": "CatVTON_Wrapper", - "title": "CatVTON_Wrapper", - "title_aux": "ComfyUI_CatVTON_Wrapper" - } - ], - "https://github.com/chflame163/ComfyUI_FaceSimilarity": [ - [ - "Face Similarity" - ], - { - "title_aux": "ComfyUI Face Similarity" - } - ], - "https://github.com/chflame163/ComfyUI_LayerStyle": [ - [ - "LayerColor: AutoAdjust", - "LayerColor: AutoAdjustV2", - "LayerColor: AutoBrightness", - "LayerColor: Brightness & Contrast", - "LayerColor: BrightnessContrastV2", - "LayerColor: Color of Shadow & Highlight", - "LayerColor: ColorAdapter", - "LayerColor: ColorBalance", - "LayerColor: ColorTemperature", - "LayerColor: ColorofShadowHighlightV2", - "LayerColor: Exposure", - "LayerColor: Gamma", - "LayerColor: HSV", - "LayerColor: LAB", - "LayerColor: LUT Apply", - "LayerColor: Levels", - "LayerColor: RGB", - "LayerColor: YUV", - "LayerFilter: AddGrain", - "LayerFilter: ChannelShake", - "LayerFilter: ColorMap", - "LayerFilter: Film", - "LayerFilter: FilmV2", - "LayerFilter: GaussianBlur", - "LayerFilter: GaussianBlurV2", - "LayerFilter: HDREffects", - "LayerFilter: LightLeak", - "LayerFilter: MotionBlur", - "LayerFilter: Sharp & Soft", - "LayerFilter: SkinBeauty", - "LayerFilter: SoftLight", - "LayerFilter: WaterColor", - "LayerMask: BlendIf Mask", - "LayerMask: CreateGradientMask", - "LayerMask: ImageToMask", - "LayerMask: MaskBoxDetect", - "LayerMask: MaskByColor", - "LayerMask: MaskEdgeShrink", - "LayerMask: MaskEdgeUltraDetail", - "LayerMask: MaskEdgeUltraDetail V2", - "LayerMask: MaskGradient", - "LayerMask: MaskGrain", - "LayerMask: MaskGrow", - "LayerMask: MaskInvert", - "LayerMask: MaskMotionBlur", - "LayerMask: MaskPreview", - "LayerMask: MaskStroke", - "LayerMask: PixelSpread", - "LayerMask: RemBgUltra", - "LayerMask: RmBgUltra V2", - "LayerMask: SegformerB2ClothesUltra", - "LayerMask: SegformerClothesPipelineLoader", - "LayerMask: SegformerFashionPipelineLoader", - "LayerMask: SegformerUltraV2", - "LayerMask: Shadow & Highlight Mask", - "LayerMask: ShadowHighlightMaskV2", - "LayerStyle: ColorOverlay", - "LayerStyle: ColorOverlay V2", - "LayerStyle: DropShadow", - "LayerStyle: DropShadow V2", - "LayerStyle: DropShadow V3", - "LayerStyle: Gradient Map", - "LayerStyle: GradientOverlay", - "LayerStyle: GradientOverlay V2", - "LayerStyle: InnerGlow", - "LayerStyle: InnerGlow V2", - "LayerStyle: InnerShadow", - "LayerStyle: InnerShadow V2", - "LayerStyle: OuterGlow", - "LayerStyle: OuterGlow V2", - "LayerStyle: Stroke", - "LayerStyle: Stroke V2", - "LayerUtility: AnyRerouter", - "LayerUtility: BatchSelector", - "LayerUtility: Boolean", - "LayerUtility: BooleanOperator", - "LayerUtility: BooleanOperatorV2", - "LayerUtility: CheckMask", - "LayerUtility: CheckMaskV2", - "LayerUtility: ChoiceTextPreset", - "LayerUtility: ColorImage", - "LayerUtility: ColorImage V2", - "LayerUtility: ColorName", - "LayerUtility: ColorPicker", - "LayerUtility: CropBoxResolve", - "LayerUtility: CropByMask", - "LayerUtility: CropByMask V2", - "LayerUtility: CropByMask V3", - "LayerUtility: ExtendCanvas", - "LayerUtility: ExtendCanvasV2", - "LayerUtility: Float", - "LayerUtility: GetImageSize", - "LayerUtility: GetMainColors", - "LayerUtility: GetMainColorsV2", - "LayerUtility: GradientImage", - "LayerUtility: GradientImage V2", - "LayerUtility: GrayValue", - "LayerUtility: HLFrequencyDetailRestore", - "LayerUtility: HSV Value", - "LayerUtility: ICMask", - "LayerUtility: ICMaskCropBack", - "LayerUtility: If", - "LayerUtility: ImageBlend", - "LayerUtility: ImageBlend V2", - "LayerUtility: ImageBlendAdvance", - "LayerUtility: ImageBlendAdvance V2", - "LayerUtility: ImageBlendAdvance V3", - "LayerUtility: ImageChannelMerge", - "LayerUtility: ImageChannelSplit", - "LayerUtility: ImageCombineAlpha", - "LayerUtility: ImageHub", - "LayerUtility: ImageMaskScaleAs", - "LayerUtility: ImageMaskScaleAsV2", - "LayerUtility: ImageOpacity", - "LayerUtility: ImageReel", - "LayerUtility: ImageReelComposit", - "LayerUtility: ImageRemoveAlpha", - "LayerUtility: ImageScaleByAspectRatio", - "LayerUtility: ImageScaleByAspectRatio V2", - "LayerUtility: ImageScaleRestore", - "LayerUtility: ImageScaleRestore V2", - "LayerUtility: ImageShift", - "LayerUtility: ImageTaggerSave", - "LayerUtility: Integer", - "LayerUtility: LayerImageTransform", - "LayerUtility: LayerMaskTransform", - "LayerUtility: LoadVQAModel", - "LayerUtility: NameToColor", - "LayerUtility: NumberCalculator", - "LayerUtility: NumberCalculatorV2", - "LayerUtility: PrintInfo", - "LayerUtility: PurgeVRAM", - "LayerUtility: QueueStop", - "LayerUtility: RGB Value", - "LayerUtility: RandomGenerator", - "LayerUtility: RandomGeneratorV2", - "LayerUtility: RestoreCropBox", - "LayerUtility: RoundedRectangle", - "LayerUtility: Seed", - "LayerUtility: SimpleTextImage", - "LayerUtility: String", - "LayerUtility: StringCondition", - "LayerUtility: SwitchCase", - "LayerUtility: TextBox", - "LayerUtility: TextImage", - "LayerUtility: TextImage V2", - "LayerUtility: TextJoin", - "LayerUtility: TextJoinV2", - "LayerUtility: TextPreseter", - "LayerUtility: VQAPrompt", - "LayerUtility: XY to Percent" - ], - { - "author": "chflame", - "description": "A set of nodes for ComfyUI that can composite layer and mask to achieve Photoshop like functionality.", - "nickname": "LayerStyle", - "title": "LayerStyle", - "title_aux": "ComfyUI Layer Style" - } - ], - "https://github.com/chflame163/ComfyUI_LayerStyle_Advance": [ - [ - "LayerMask: BBoxJoin", - "LayerMask: BenUltra", - "LayerMask: BiRefNetUltra", - "LayerMask: BiRefNetUltraV2", - "LayerMask: DrawBBoxMask", - "LayerMask: DrawBBoxMaskV2", - "LayerMask: EVFSAMUltra", - "LayerMask: Florence2Ultra", - "LayerMask: HumanPartsUltra", - "LayerMask: LoadBenModel", - "LayerMask: LoadBiRefNetModel", - "LayerMask: LoadBiRefNetModelV2", - "LayerMask: LoadFlorence2Model", - "LayerMask: LoadSegmentAnythingModels", - "LayerMask: MaskByDifferent", - "LayerMask: MediapipeFacialSegment", - "LayerMask: ObjectDetectorFL2", - "LayerMask: ObjectDetectorGemini", - "LayerMask: ObjectDetectorMask", - "LayerMask: ObjectDetectorYOLO8", - "LayerMask: ObjectDetectorYOLOWorld", - "LayerMask: PersonMaskUltra", - "LayerMask: PersonMaskUltra V2", - "LayerMask: SAM2Ultra", - "LayerMask: SAM2VideoUltra", - "LayerMask: SegmentAnythingUltra", - "LayerMask: SegmentAnythingUltra V2", - "LayerMask: SegmentAnythingUltra V3", - "LayerMask: TransparentBackgroundUltra", - "LayerMask: YoloV8Detect", - "LayerUtility: AddBlindWaterMark", - "LayerUtility: CreateQRCode", - "LayerUtility: DecodeQRCode", - "LayerUtility: DeepSeekAPI", - "LayerUtility: Florence2Image2Prompt", - "LayerUtility: Gemini", - "LayerUtility: GetColorTone", - "LayerUtility: GetColorToneV2", - "LayerUtility: ImageAutoCrop", - "LayerUtility: ImageAutoCrop V2", - "LayerUtility: ImageAutoCrop V3", - "LayerUtility: ImageRewardFilter", - "LayerUtility: JoyCaption2", - "LayerUtility: JoyCaption2ExtraOptions", - "LayerUtility: JoyCaption2Split", - "LayerUtility: LaMa", - "LayerUtility: LlamaVision", - "LayerUtility: LoadJoyCaption2Model", - "LayerUtility: LoadPSD", - "LayerUtility: LoadSmolLM2Model", - "LayerUtility: LoadSmolVLMModel", - "LayerUtility: PhiPrompt", - "LayerUtility: PromptEmbellish", - "LayerUtility: PromptTagger", - "LayerUtility: QWenImage2Prompt", - "LayerUtility: SD3NegativeConditioning", - "LayerUtility: SaveImagePlus", - "LayerUtility: ShowBlindWaterMark", - "LayerUtility: SmolLM2", - "LayerUtility: SmolVLM", - "LayerUtility: UserPromptGeneratorReplaceWord", - "LayerUtility: UserPromptGeneratorTxt2ImgPrompt", - "LayerUtility: UserPromptGeneratorTxt2ImgPromptWithReference", - "LayerUtility: ZhipuGLM4", - "LayerUtility: ZhipuGLM4V" - ], - { - "author": "chflame", - "description": "A set of nodes for ComfyUI that can composite layer and mask to achieve Photoshop like functionality.", - "nickname": "LayerStyle", - "title": "LayerStyle", - "title_aux": "ComfyUI_LayerStyle_Advance" - } - ], - "https://github.com/chflame163/ComfyUI_MSSpeech_TTS": [ - [ - "Input Trigger", - "MicrosoftSpeech_TTS", - "Play Sound", - "Play Sound (loop)" - ], - { - "title_aux": "ComfyUI_MSSpeech_TTS" - } - ], - "https://github.com/chflame163/ComfyUI_OmniGen_Wrapper": [ - [ - "dzOmniGenWrapper" - ], - { - "title_aux": "ComfyUI_OmniGen_Wrapper" - } - ], - "https://github.com/chflame163/ComfyUI_WordCloud": [ - [ - "ComfyWordCloud", - "LoadTextFile", - "RGB_Picker" - ], - { - "title_aux": "ComfyUI_WordCloud" - } - ], - "https://github.com/chibiace/ComfyUI-Chibi-Nodes": [ - [ - "ConditionText", - "ConditionTextMulti", - "ConditionTextPrompts", - "ImageAddText", - "ImageSimpleResize", - "ImageSizeInfo", - "ImageTool", - "Int2String", - "LoadEmbedding", - "LoadImageExtended", - "Loader", - "Prompts", - "RandomResolutionLatent", - "SaveImages", - "SeedGenerator", - "SimpleSampler", - "TextSplit", - "Textbox", - "Wildcards" - ], - { - "title_aux": "ComfyUI-Chibi-Nodes" - } - ], - "https://github.com/choey/Comfy-Topaz": [ - [ - "TopazPhotoAI", - "TopazSharpenSettings", - "TopazUpscaleSettings" - ], - { - "title_aux": "Comfy-Topaz" - } - ], - "https://github.com/chris-arsenault/ComfyUI-AharaNodes": [ - [ - "FrameSegmenter", - "FrameSegmenterIndexer", - "RepeatSampler", - "RepeatSamplerConfigNode", - "RepeatSamplerConfigPatchLatent", - "RepeatSamplerConfigPatchModel" - ], - { - "title_aux": "ComfyUI-AharaNodes" - } - ], - "https://github.com/chris-the-wiz/EmbeddingsCurveEditor_ComfyUI": [ - [ - "Embeddings Curve Editor" - ], - { - "title_aux": "EmbeddingsCurveEditor_ComfyUI" - } - ], - "https://github.com/chrisfreilich/virtuoso-nodes": [ - [ - "BlackAndWhite", - "BlendIf", - "BlendModes", - "ColorBalance", - "ColorBalanceAdvanced", - "GaussianBlur", - "GaussianBlurDepth", - "HueSat", - "HueSatAdvanced", - "LensBlur", - "LensBlurDepth", - "Levels", - "MergeRGB", - "MotionBlur", - "MotionBlurDepth", - "SelectiveColor", - "SolidColor", - "SolidColorHSV", - "SolidColorRGB", - "SplitRGB" - ], - { - "author": "Chris Freilich", - "description": "This extension provides a \"Levels\" node.", - "nickname": "Virtuoso Pack - Contrast", - "title": "Virtuoso Pack - Contrast", - "title_aux": "Virtuoso Nodes for ComfyUI" - } - ], - "https://github.com/chrisgoringe/cg-image-picker": [ - [ - "Preview Chooser", - "Preview Chooser Fabric", - "Simple Chooser" - ], - { - "author": "chrisgoringe", - "description": "Custom nodes that preview images and pause the workflow to allow the user to select one or more to progress", - "nickname": "Image Chooser", - "title": "Image Chooser", - "title_aux": "Image chooser" - } - ], - "https://github.com/chrisgoringe/cg-noisetools": [ - [ - "Batch Noise Simulate", - "Mix Noise", - "Seperable Batch Noise", - "Shape Noise", - "Split Sigmas with Rewind" - ], - { - "title_aux": "Noise variation and batch noise tools" - } - ], - "https://github.com/chrisgoringe/cg-use-everywhere": [ - [ - "Seed Everywhere" - ], - { - "nodename_pattern": "(^(Prompts|Anything) Everywhere|Simple String)", - "title_aux": "Use Everywhere (UE Nodes)" - } - ], - "https://github.com/chrissy0/chris-comfyui-nodes": [ - [ - "PadImageSquare" - ], - { - "title_aux": "chris-comfyui-nodes" - } - ], - "https://github.com/christian-byrne/audio-separation-nodes-comfyui": [ - [ - "AudioCombine", - "AudioCrop", - "AudioGetTempo", - "AudioSeparation", - "AudioSpeedShift", - "AudioTempoMatch", - "AudioVideoCombine" - ], - { - "title_aux": "audio-separation-nodes-comfyui" - } - ], - "https://github.com/christian-byrne/img2colors-comfyui-node": [ - [ - "bmy_Img2ColorNode" - ], - { - "author": "christian-byrne", - "description": "", - "nickname": "img2color", - "title": "Img2Color Node - Detect and describe color palettes in images", - "title_aux": "Img2color - Extract Colors from Image" - } - ], - "https://github.com/christian-byrne/img2txt-comfyui-nodes": [ - [ - "img2txt BLIP/Llava Multimodel Tagger" - ], - { - "author": "christian-byrne", - "title": "Img2Txt auto captioning", - "title_aux": "img2txt-comfyui-nodes" - } - ], - "https://github.com/christian-byrne/size-match-compositing-nodes": [ - [ - "Composite Alpha Layer", - "Size Match Images/Masks" - ], - { - "title_aux": "Node - Size Matcher" - } - ], - "https://github.com/christian-byrne/youtube-dl-comfyui": [ - [ - "YoutubeDL" - ], - { - "title_aux": "youtube-dl-comfyui" - } - ], - "https://github.com/ciga2011/ComfyUI-MarkItDown": [ - [ - "WIZ_AUDIO2MARKDOWN", - "WIZ_EXCEL2MARKDOWN", - "WIZ_HTML2MARKDOWN", - "WIZ_IMAGE2MARKDOWN", - "WIZ_IPYNB2MARKDOWN", - "WIZ_LLM_CLIENT", - "WIZ_MARKITDOWN", - "WIZ_PDF2MARKDOWN", - "WIZ_POWERPOINT2MARKDOWN", - "WIZ_WORD2MARKDOWN" - ], - { - "title_aux": "ComfyUI MarkItDown" - } - ], - "https://github.com/ciga2011/ComfyUI-Pollinations": [ - [ - "PollinationsNode" - ], - { - "title_aux": "ComfyUI Pollinations" - } - ], - "https://github.com/ciga2011/ComfyUI-PromptOptimizer": [ - [ - "PromptOptimizer" - ], - { - "title_aux": "ComfyUI Prompt Optimizer" - } - ], - "https://github.com/ciri/comfyui-model-downloader": [ - [ - "Auto Model Downloader", - "CivitAI Downloader", - "HF Downloader" - ], - { - "title_aux": "ComfyUI Model Downloader" - } - ], - "https://github.com/city96/ComfyUI-GGUF": [ - [ - "CLIPLoaderGGUF", - "DualCLIPLoaderGGUF", - "TripleCLIPLoaderGGUF", - "UnetLoaderGGUF", - "UnetLoaderGGUFAdvanced" - ], - { - "preemptions": [ - "CLIPLoaderGGUF", - "DualCLIPLoaderGGUF", - "TripleCLIPLoaderGGUF", - "UnetLoaderGGUF", - "UnetLoaderGGUFAdvanced" - ], - "title_aux": "ComfyUI-GGUF" - } - ], - "https://github.com/city96/ComfyUI_ColorMod": [ - [ - "CV2Tonemap", - "CV2TonemapDrago", - "CV2TonemapDurand", - "CV2TonemapMantiuk", - "CV2TonemapReinhard", - "ColorModCompress", - "ColorModEdges", - "ColorModMove", - "ColorModPivot", - "ColorspaceConvert", - "HDRCreate", - "HDRExposureFusion", - "LoadImageHDR", - "LoadImageHighPrec", - "PreviewImageHighPrec", - "SaveImageHDR", - "SaveImageHighPrec" - ], - { - "title_aux": "ComfyUI_ColorMod" - } - ], - "https://github.com/city96/ComfyUI_DiT": [ - [ - "DiTCheckpointLoader", - "DiTCheckpointLoaderSimple", - "DiTLabelCombine", - "DiTLabelSelect", - "DiTSampler" - ], - { - "title_aux": "ComfyUI_DiT [WIP]" - } - ], - "https://github.com/city96/ComfyUI_ExtraModels": [ - [ - "DiTCondLabelEmpty", - "DiTCondLabelSelect", - "DitCheckpointLoader", - "EmptyDCAELatentImage", - "EmptySanaLatentImage", - "ExtraVAELoader", - "GemmaLoader", - "GemmaTextEncode", - "HYDiTCheckpointLoader", - "HYDiTSrcSizeCond", - "HYDiTTextEncode", - "HYDiTTextEncodeSimple", - "HYDiTTextEncoderLoader", - "MiaoBiCLIPLoader", - "MiaoBiDiffusersLoader", - "OverrideCLIPDevice", - "OverrideVAEDevice", - "PixArtCheckpointLoader", - "PixArtCheckpointLoaderSimple", - "PixArtControlNetCond", - "PixArtLoraLoader", - "PixArtResolutionCond", - "PixArtResolutionSelect", - "PixArtT5FromSD3CLIP", - "PixArtT5TextEncode", - "SanaCheckpointLoader", - "SanaResolutionCond", - "SanaResolutionSelect", - "SanaTextEncode", - "T5TextEncode", - "T5v11Loader" - ], - { - "title_aux": "Extra Models for ComfyUI" - } - ], - "https://github.com/city96/ComfyUI_NetDist": [ - [ - "CombineImageBatch", - "FetchRemote", - "LoadCurrentWorkflowJSON", - "LoadDiskWorkflowJSON", - "LoadImageUrl", - "LoadLatentNumpy", - "LoadLatentUrl", - "RemoteChainEnd", - "RemoteChainStart", - "RemoteQueueSimple", - "RemoteQueueWorker", - "SaveDiskWorkflowJSON", - "SaveImageUrl", - "SaveLatentNumpy" - ], - { - "title_aux": "ComfyUI_NetDist" - } - ], - "https://github.com/city96/SD-Latent-Interposer": [ - [ - "LatentInterposer" - ], - { - "title_aux": "Latent-Interposer" - } - ], - "https://github.com/city96/SD-Latent-Upscaler": [ - [ - "LatentUpscaler" - ], - { - "title_aux": "SD-Latent-Upscaler" - } - ], - "https://github.com/civen-cn/ComfyUI-PaddleOcr": [ - [ - "OcrBlur", - "OcrBoxMask", - "OcrImageText" - ], - { - "title_aux": "ComfyUI-PaddleOcr" - } - ], - "https://github.com/civen-cn/ComfyUI-Whisper-Translator": [ - [ - "Add Subtitles To FramesX", - "Apply WhisperX" - ], - { - "title_aux": "ComfyUI Whisper Translator" - } - ], - "https://github.com/civitai/civitai_comfy_nodes": [ - [ - "CivitAI_Checkpoint_Loader", - "CivitAI_Lora_Loader" - ], - { - "title_aux": "Civitai Comfy Nodes" - } - ], - "https://github.com/claussteinmassl/ComfyUI-CS-CustomNodes": [ - [ - "CS Transform" - ], - { - "title_aux": "CS Transform Node for ComfyUI" - } - ], - "https://github.com/clhui/ComfyUi-clh-Tool": [ - [ - "EchartGraph_clh", - "EchartOptionByPath_clh", - "EchartOption_clh", - "INTConstant_clh", - "JavaScript_clh", - "JoinStringMulti_clh", - "MathExpression_clh", - "SetRedis|clh", - "ShowText_clh", - "SomethingToString_clh", - "String2FatLabels_clh", - "String2Image_clh", - "StringConstant_clh" - ], - { - "author": "Dr.Lt.Data", - "description": "This extension offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler.", - "nickname": "CLH Simple Tool", - "title": "CLH simple Tool", - "title_aux": "Clh Tool for ComfyUI" - } - ], - "https://github.com/codeprimate/ComfyUI-MaskContourProcessor": [ - [ - "MaskContourProcessor" - ], - { - "title_aux": "ComfyUI Mask Contour Processor" - } - ], - "https://github.com/comfyanonymous/ComfyUI": [ - [ - "AddNoise", - "AlignYourStepsScheduler", - "BasicGuider", - "BasicScheduler", - "BetaSamplingScheduler", - "CFGGuider", - "CLIPAttentionMultiply", - "CLIPLoader", - "CLIPMergeAdd", - "CLIPMergeSimple", - "CLIPMergeSubtract", - "CLIPSave", - "CLIPSetLastLayer", - "CLIPTextEncode", - "CLIPTextEncodeControlnet", - "CLIPTextEncodeFlux", - "CLIPTextEncodeHunyuanDiT", - "CLIPTextEncodePixArtAlpha", - "CLIPTextEncodeSD3", - "CLIPTextEncodeSDXL", - "CLIPTextEncodeSDXLRefiner", - "CLIPVisionEncode", - "CLIPVisionLoader", - "Canny", - "CheckpointLoader", - "CheckpointLoaderSimple", - "CheckpointSave", - "ConditioningAverage", - "ConditioningCombine", - "ConditioningConcat", - "ConditioningSetArea", - "ConditioningSetAreaPercentage", - "ConditioningSetAreaStrength", - "ConditioningSetMask", - "ConditioningSetTimestepRange", - "ConditioningStableAudio", - "ConditioningZeroOut", - "ControlNetApply", - "ControlNetApplyAdvanced", - "ControlNetApplySD3", - "ControlNetInpaintingAliMamaApply", - "ControlNetLoader", - "CosmosImageToVideoLatent", - "CropMask", - "DiffControlNetLoader", - "DifferentialDiffusion", - "DiffusersLoader", - "DisableNoise", - "DualCFGGuider", - "DualCLIPLoader", - "EmptyCosmosLatentVideo", - "EmptyHunyuanLatentVideo", - "EmptyImage", - "EmptyLTXVLatentVideo", - "EmptyLatentAudio", - "EmptyLatentImage", - "EmptyMochiLatentVideo", - "EmptySD3LatentImage", - "ExponentialScheduler", - "FeatherMask", - "FlipSigmas", - "FluxDisableGuidance", - "FluxGuidance", - "FreeU", - "FreeU_V2", - "GITSScheduler", - "GLIGENLoader", - "GLIGENTextBoxApply", - "GrowMask", - "HyperTile", - "HypernetworkLoader", - "ImageBatch", - "ImageBlend", - "ImageBlur", - "ImageColorToMask", - "ImageCompositeMasked", - "ImageCrop", - "ImageFromBatch", - "ImageInvert", - "ImageOnlyCheckpointLoader", - "ImageOnlyCheckpointSave", - "ImagePadForOutpaint", - "ImageQuantize", - "ImageScale", - "ImageScaleBy", - "ImageScaleToTotalPixels", - "ImageSharpen", - "ImageToMask", - "ImageUpscaleWithModel", - "InpaintModelConditioning", - "InstructPixToPixConditioning", - "InvertMask", - "JoinImageWithAlpha", - "KSampler", - "KSamplerAdvanced", - "KSamplerSelect", - "KarrasScheduler", - "LTXVConditioning", - "LTXVImgToVideo", - "LTXVScheduler", - "LaplaceScheduler", - "LatentAdd", - "LatentApplyOperation", - "LatentApplyOperationCFG", - "LatentBatch", - "LatentBatchSeedBehavior", - "LatentBlend", - "LatentComposite", - "LatentCompositeMasked", - "LatentCrop", - "LatentFlip", - "LatentFromBatch", - "LatentInterpolate", - "LatentMultiply", - "LatentOperationSharpen", - "LatentOperationTonemapReinhard", - "LatentRotate", - "LatentSubtract", - "LatentUpscale", - "LatentUpscaleBy", - "Load3D", - "Load3DAnimation", - "LoadAudio", - "LoadImage", - "LoadImageMask", - "LoadLatent", - "LoraLoader", - "LoraLoaderModelOnly", - "LoraSave", - "Mahiro", - "MaskComposite", - "MaskToImage", - "ModelMergeAdd", - "ModelMergeAuraflow", - "ModelMergeBlocks", - "ModelMergeFlux1", - "ModelMergeLTXV", - "ModelMergeMochiPreview", - "ModelMergeSD1", - "ModelMergeSD2", - "ModelMergeSD35_Large", - "ModelMergeSD3_2B", - "ModelMergeSDXL", - "ModelMergeSimple", - "ModelMergeSubtract", - "ModelSamplingAuraFlow", - "ModelSamplingContinuousEDM", - "ModelSamplingContinuousV", - "ModelSamplingDiscrete", - "ModelSamplingFlux", - "ModelSamplingLTXV", - "ModelSamplingSD3", - "ModelSamplingStableCascade", - "ModelSave", - "Morphology", - "PatchModelAddDownscale", - "PerpNeg", - "PerpNegGuider", - "PerturbedAttentionGuidance", - "PhotoMakerEncode", - "PhotoMakerLoader", - "PolyexponentialScheduler", - "PorterDuffImageComposite", - "Preview3D", - "PreviewAudio", - "PreviewImage", - "RandomNoise", - "RebatchImages", - "RebatchLatents", - "RepeatImageBatch", - "RepeatLatentBatch", - "RescaleCFG", - "SDTurboScheduler", - "SD_4XUpscale_Conditioning", - "SV3D_Conditioning", - "SVD_img2vid_Conditioning", - "SamplerCustom", - "SamplerCustomAdvanced", - "SamplerDPMAdaptative", - "SamplerDPMPP_2M_SDE", - "SamplerDPMPP_2S_Ancestral", - "SamplerDPMPP_3M_SDE", - "SamplerDPMPP_SDE", - "SamplerEulerAncestral", - "SamplerEulerAncestralCFGPP", - "SamplerEulerCFGpp", - "SamplerLCMUpscale", - "SamplerLMS", - "SaveAnimatedPNG", - "SaveAnimatedWEBP", - "SaveAudio", - "SaveImage", - "SaveImageWebsocket", - "SaveLatent", - "SelfAttentionGuidance", - "SetFirstSigma", - "SetLatentNoiseMask", - "SetUnionControlNetType", - "SkipLayerGuidanceDiT", - "SkipLayerGuidanceSD3", - "SolidMask", - "SplitImageWithAlpha", - "SplitSigmas", - "SplitSigmasDenoise", - "StableCascade_EmptyLatentImage", - "StableCascade_StageB_Conditioning", - "StableCascade_StageC_VAEEncode", - "StableCascade_SuperResolutionControlnet", - "StableZero123_Conditioning", - "StableZero123_Conditioning_Batched", - "StubConstantImage", - "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", - "TestIsChangedWithConstants", - "TestLazyMixImages", - "TestListToAccumulationNode", - "TestMakeListNode", - "TestMixedExpansionReturns", - "TestStringConditions", - "TestToBoolNode", - "TestVariadicAverage", - "TestWhileLoopClose", - "TestWhileLoopOpen", - "ThresholdMask", - "TomePatchModel", - "TorchCompileModel", - "TripleCLIPLoader", - "UNETLoader", - "UNetCrossAttentionMultiply", - "UNetSelfAttentionMultiply", - "UNetTemporalAttentionMultiply", - "UpscaleModelLoader", - "VAEDecode", - "VAEDecodeAudio", - "VAEDecodeTiled", - "VAEEncode", - "VAEEncodeAudio", - "VAEEncodeForInpaint", - "VAEEncodeTiled", - "VAELoader", - "VAESave", - "VPScheduler", - "VideoLinearCFGGuidance", - "VideoTriangleCFGGuidance", - "WebcamCapture", - "unCLIPCheckpointLoader", - "unCLIPConditioning" - ], - { - "title_aux": "ComfyUI" - } - ], - "https://github.com/comfyanonymous/ComfyUI_TensorRT": [ - [ - "DYNAMIC_TRT_MODEL_CONVERSION", - "STATIC_TRT_MODEL_CONVERSION", - "TensorRTLoader" - ], - { - "title_aux": "TensorRT Node for ComfyUI" - } - ], - "https://github.com/comfyanonymous/ComfyUI_experiments": [ - [ - "ModelMergeBlockNumber", - "ModelMergeSDXL", - "ModelMergeSDXLDetailedTransformers", - "ModelMergeSDXLTransformers", - "ModelSamplerTonemapNoiseTest", - "ReferenceOnlySimple", - "RescaleClassifierFreeGuidanceTest", - "TonemapNoiseWithRescaleCFG" - ], - { - "title_aux": "ComfyUI_experiments" - } - ], - "https://github.com/concarne000/ConCarneNode": [ - [ - "BingImageGrabber", - "Hermes", - "Zephyr" - ], - { - "title_aux": "ConCarneNode" - } - ], - "https://github.com/conquestace/ComfyUI-ImageUploader": [ - [ - "ImageUploader" - ], - { - "author": "ConquestAce", - "description": "Upload to temporary websites with API.", - "nickname": "Image Uploader", - "title": "Image Uploader", - "title_aux": "Image Uploader" - } - ], - "https://github.com/coreyryanhanson/ComfyQR": [ - [ - "comfy-qr-by-image-size", - "comfy-qr-by-module-size", - "comfy-qr-by-module-split", - "comfy-qr-mask_errors" - ], - { - "title_aux": "ComfyQR" - } - ], - "https://github.com/coreyryanhanson/ComfyQR-scanning-nodes": [ - [ - "comfy-qr-read", - "comfy-qr-validate" - ], - { - "title_aux": "ComfyQR-scanning-nodes" - } - ], - "https://github.com/cozy-comfyui/cozy_comm": [ - [ - "CozyDiscordPost" - ], - { - "nodename_pattern": " \\(cozy\\)", - "title_aux": "Cozy Communication" - } - ], - "https://github.com/cozymantis/cozy-utils-comfyui-nodes": [ - [ - "Cozy Sampler Options" - ], - { - "title_aux": "Cozy Utils" - } - ], - "https://github.com/cozymantis/human-parser-comfyui-node": [ - [ - "Cozy Human Parser ATR", - "Cozy Human Parser LIP", - "Cozy Human Parser Pascal" - ], - { - "title_aux": "Cozy Human Parser" - } - ], - "https://github.com/cozymantis/pose-generator-comfyui-node": [ - [ - "Cozy Pose Body Reference", - "Cozy Pose Face Reference" - ], - { - "title_aux": "Cozy Reference Pose Generator" - } - ], - "https://github.com/cr7Por/ComfyUI_DepthFlow": [ - [ - "DepthFlowSimple" - ], - { - "title_aux": "ComfyUI_DepthFlow" - } - ], - "https://github.com/crystian/ComfyUI-Crystools": [ - [], - { - "author": "Crystian", - "description": "Plugins for multiples uses, mainly for debugging, you need them! IG: https://www.instagram.com/crystian.ia", - "nickname": "Crystools", - "nodename_pattern": " \\[Crystools\\]$", - "title": "Crystools", - "title_aux": "Crystools" - } - ], - "https://github.com/cubiq/Block_Patcher_ComfyUI": [ - [ - "FluxBlockPatcherSampler", - "FluxBlockShareKV", - "PlotBlockParams" - ], - { - "title_aux": "Flux blocks patcher sampler" - } - ], - "https://github.com/cubiq/ComfyUI_FaceAnalysis": [ - [ - "FaceAlign", - "FaceAnalysisModels", - "FaceBoundingBox", - "FaceEmbedDistance", - "FaceSegmentation", - "FaceWarp" - ], - { - "title_aux": "Face Analysis for ComfyUI" - } - ], - "https://github.com/cubiq/ComfyUI_IPAdapter_plus": [ - [ - "IPAAdapterFaceIDBatch", - "IPAdapter", - "IPAdapterAdvanced", - "IPAdapterBatch", - "IPAdapterClipVisionEnhancer", - "IPAdapterClipVisionEnhancerBatch", - "IPAdapterCombineEmbeds", - "IPAdapterCombineParams", - "IPAdapterCombineWeights", - "IPAdapterEmbeds", - "IPAdapterEmbedsBatch", - "IPAdapterEncoder", - "IPAdapterFaceID", - "IPAdapterFaceIDKolors", - "IPAdapterFromParams", - "IPAdapterInsightFaceLoader", - "IPAdapterLoadEmbeds", - "IPAdapterMS", - "IPAdapterModelLoader", - "IPAdapterNoise", - "IPAdapterPreciseComposition", - "IPAdapterPreciseCompositionBatch", - "IPAdapterPreciseStyleTransfer", - "IPAdapterPreciseStyleTransferBatch", - "IPAdapterPromptScheduleFromWeightsStrategy", - "IPAdapterRegionalConditioning", - "IPAdapterSaveEmbeds", - "IPAdapterStyleComposition", - "IPAdapterStyleCompositionBatch", - "IPAdapterTiled", - "IPAdapterTiledBatch", - "IPAdapterUnifiedLoader", - "IPAdapterUnifiedLoaderCommunity", - "IPAdapterUnifiedLoaderFaceID", - "IPAdapterWeights", - "IPAdapterWeightsFromStrategy", - "PrepImageForClipVision" - ], - { - "preemptions": [ - "IPAAdapterFaceIDBatch", - "IPAdapter", - "IPAdapterAdvanced", - "IPAdapterBatch", - "IPAdapterClipVisionEnhancer", - "IPAdapterClipVisionEnhancerBatch", - "IPAdapterCombineEmbeds", - "IPAdapterCombineParams", - "IPAdapterCombineWeights", - "IPAdapterEmbeds", - "IPAdapterEmbedsBatch", - "IPAdapterEncoder", - "IPAdapterFaceID", - "IPAdapterFromParams", - "IPAdapterInsightFaceLoader", - "IPAdapterLoadEmbeds", - "IPAdapterMS", - "IPAdapterModelLoader", - "IPAdapterNoise", - "IPAdapterPreciseComposition", - "IPAdapterPreciseCompositionBatch", - "IPAdapterPreciseStyleTransfer", - "IPAdapterPreciseStyleTransferBatch", - "IPAdapterPromptScheduleFromWeightsStrategy", - "IPAdapterRegionalConditioning", - "IPAdapterSaveEmbeds", - "IPAdapterStyleComposition", - "IPAdapterStyleCompositionBatch", - "IPAdapterTiled", - "IPAdapterTiledBatch", - "IPAdapterUnifiedLoader", - "IPAdapterUnifiedLoaderCommunity", - "IPAdapterUnifiedLoaderFaceID", - "IPAdapterWeights", - "IPAdapterWeightsFromStrategy", - "PrepImageForClipVision" - ], - "title_aux": "ComfyUI_IPAdapter_plus" - } - ], - "https://github.com/cubiq/ComfyUI_InstantID": [ - [ - "ApplyInstantID", - "ApplyInstantIDAdvanced", - "ApplyInstantIDControlNet", - "FaceKeypointsPreprocessor", - "InstantIDAttentionPatch", - "InstantIDFaceAnalysis", - "InstantIDModelLoader" - ], - { - "title_aux": "ComfyUI InstantID (Native Support)" - } - ], - "https://github.com/cubiq/ComfyUI_SimpleMath": [ - [ - "SimpleMath", - "SimpleMathDebug" - ], - { - "title_aux": "Simple Math" - } - ], - "https://github.com/cubiq/ComfyUI_essentials": [ - [ - "ApplyCLIPSeg+", - "BatchCount+", - "CLIPTextEncodeSDXL+", - "ConditioningCombineMultiple+", - "ConsoleDebug+", - "DebugTensorShape+", - "DisplayAny", - "DrawText+", - "ExtractKeyframes+", - "FluxAttentionSeeker+", - "FluxBlocksBuster+", - "FluxSamplerParams+", - "GetImageSize+", - "GuidanceTimestepping+", - "ImageApplyLUT+", - "ImageBatchMultiple+", - "ImageBatchToList+", - "ImageCASharpening+", - "ImageColorMatch+", - "ImageColorMatchAdobe+", - "ImageComposite+", - "ImageCompositeFromMaskBatch+", - "ImageCrop+", - "ImageDesaturate+", - "ImageEnhanceDifference+", - "ImageExpandBatch+", - "ImageFlip+", - "ImageFromBatch+", - "ImageHistogramMatch+", - "ImageListToBatch+", - "ImagePosterize+", - "ImagePreviewFromLatent+", - "ImageRandomTransform+", - "ImageRemoveAlpha+", - "ImageRemoveBackground+", - "ImageResize+", - "ImageSeamCarving+", - "ImageSmartSharpen+", - "ImageTile+", - "ImageToDevice+", - "ImageUntile+", - "InjectLatentNoise+", - "KSamplerVariationsStochastic+", - "KSamplerVariationsWithNoise+", - "LoadCLIPSegModels+", - "LorasForFluxParams+", - "MaskBatch+", - "MaskBlur+", - "MaskBoundingBox+", - "MaskExpandBatch+", - "MaskFix+", - "MaskFlip+", - "MaskFromBatch+", - "MaskFromColor+", - "MaskFromList+", - "MaskFromRGBCMYBW+", - "MaskFromSegmentation+", - "MaskPreview+", - "MaskSmooth+", - "ModelCompile+", - "ModelSamplingSD3Advanced+", - "NoiseFromImage+", - "PixelOEPixelize+", - "PlotParameters+", - "RemBGSession+", - "RemoveLatentMask+", - "SD3AttentionSeekerLG+", - "SD3AttentionSeekerT5+", - "SD3NegativeConditioning+", - "SDXLEmptyLatentSizePicker+", - "SamplerSelectHelper+", - "SchedulerSelectHelper+", - "SimpleComparison+", - "SimpleCondition+", - "SimpleMath+", - "SimpleMathBoolean+", - "SimpleMathCondition+", - "SimpleMathDual+", - "SimpleMathFloat+", - "SimpleMathInt+", - "SimpleMathPercent+", - "SimpleMathSlider+", - "SimpleMathSliderLowRes+", - "TextEncodeForSamplerParams+", - "TransitionMask+", - "TransparentBGSession+" - ], - { - "title_aux": "ComfyUI Essentials" - } - ], - "https://github.com/cubiq/PuLID_ComfyUI": [ - [ - "ApplyPulid", - "ApplyPulidAdvanced", - "PulidEvaClipLoader", - "PulidInsightFaceLoader", - "PulidModelLoader" - ], - { - "title_aux": "PuLID_ComfyUI" - } - ], - "https://github.com/cuongloveit/comfy_http_request": [ - [ - "Send Http Request", - "Send Http request" - ], - { - "title_aux": "comfy_http_request" - } - ], - "https://github.com/curiousjp/ComfyUI-MaskBatchPermutations": [ - [ - "CombinatorialDetailer", - "FlattenAgainstOriginal", - "PermuteMaskBatch" - ], - { - "title_aux": "ComfyUI-MaskBatchPermutations" - } - ], - "https://github.com/czcz1024/Comfyui-FaceCompare": [ - [ - "FaceCompare" - ], - { - "author": "czcz1024", - "description": "Face Compare", - "nickname": "Face Compare", - "title": "Face Compare", - "title_aux": "Face Compare" - } - ], - "https://github.com/da2el-ai/ComfyUI-d2-send-eagle": [ - [ - "D2 Send Eagle" - ], - { - "author": "da2el", - "description": "Send images to Eagle, an image management application", - "title": "D2 Send Eagle", - "title_aux": "D2 Send Eagle" - } - ], - "https://github.com/da2el-ai/ComfyUI-d2-size-selector": [ - [ - "D2_SizeSelector" - ], - { - "author": "da2el", - "description": "Easy select image size", - "title": "D2 Size Selector", - "title_aux": "D2 Size Selector" - } - ], - "https://github.com/da2el-ai/ComfyUI-d2-steps": [ - [ - "D2 Refiner Steps", - "D2 Refiner Steps A1111", - "D2 Refiner Steps Tester" - ], - { - "author": "da2el", - "description": "Calculate the steps for the refiner", - "title": "D2 Steps", - "title_aux": "D2 Steps" - } - ], - "https://github.com/da2el-ai/ComfyUI-d2-xyplot-utils": [ - [ - "D2 Checkpoint List", - "D2 Checkpoint Loader", - "D2 Multi Output", - "D2 Prompt SR", - "D2 Regex Switcher" - ], - { - "author": "da2el", - "description": "A parameter output node compatible with qq-nodes-comfyui. It outputs parameters such as Prompt S/R and seed.", - "title": "D2 XYPlot Utils", - "title_aux": "D2 XYPlot Utils" - } - ], - "https://github.com/da2el-ai/D2-nodes-ComfyUI": [ - [ - "D2 Checkpoint Loader", - "D2 Controlnet Loader", - "D2 EmptyImage Alpha", - "D2 Filename Template", - "D2 Folder Image Queue", - "D2 Get Image Size", - "D2 Grid Image", - "D2 Image Resize", - "D2 Image Stack", - "D2 KSampler", - "D2 KSampler(Advanced)", - "D2 List To String", - "D2 Load Folder Images", - "D2 Load Image", - "D2 Multi Output", - "D2 Pipe", - "D2 Preview Image", - "D2 Refiner Steps", - "D2 Refiner Steps A1111", - "D2 Refiner Steps Tester", - "D2 Regex Replace", - "D2 Regex Switcher", - "D2 Resize Calculator", - "D2 Size Slector", - "D2 XY Annotation", - "D2 XY Checkpoint List", - "D2 XY Folder Images", - "D2 XY Grid Image", - "D2 XY List To Plot", - "D2 XY Lora List", - "D2 XY Model List", - "D2 XY Plot", - "D2 XY Plot Easy", - "D2 XY Prompt SR", - "D2 XY Prompt SR2", - "D2 XY Seed", - "D2 XY Seed2", - "D2 XY String To Plot" - ], - { - "author": "da2el", - "description": "A Collection of Handy Custom Nodes for ComfyUI", - "title": "D2 Nodes", - "title_aux": "D2 Nodes ComfyUI" - } - ], - "https://github.com/dadoirie/ComfyUI_Dados_Nodes": [ - [ - "PinterestImageNode" - ], - { - "title_aux": "ComfyUI_Dados_Nodes" - } - ], - "https://github.com/dafeng012/comfyui-imgmake": [ - [ - "LoadImageListPlus", - "LoadImagesFromPath_lp", - "SaveImage_lp", - "SelectImageName", - "VideoKeyFramesExtractor", - "ebsynth_hecheng", - "ebsynth_main", - "ebsynth_process", - "image2mask", - "video2image" - ], - { - "title_aux": "comfyui-imgmake" - } - ], - "https://github.com/dagthomas/comfyui_dagthomas": [ - [ - "APNLatent", - "CustomPromptLoader", - "DynamicStringCombinerNode", - "FileReaderNode", - "FlexibleStringMergerNode", - "GPT4MiniNode", - "GPT4VisionNode", - "GeminiCustomVision", - "GeminiTextOnly", - "Gpt4CustomVision", - "Gpt4VisionCloner", - "OllamaNode", - "OllamaVisionNode", - "PGSD3LatentGenerator", - "PhiCustomModelInference", - "PhiModelInference", - "PhiModelLoader", - "PromptGenerator", - "RandomIntegerNode", - "SentenceMixerNode", - "StringMergerNode" - ], - { - "title_aux": "SDXL Auto Prompter" - } - ], - "https://github.com/daniabib/ComfyUI_ProPainter_Nodes": [ - [ - "ProPainterInpaint", - "ProPainterOutpaint" - ], - { - "title_aux": "ComfyUI ProPainter Nodes" - } - ], - "https://github.com/daniel-lewis-ab/ComfyUI-Llama": [ - [ - "Call LLM Advanced", - "Call LLM Basic", - "LLM_Create_Completion Advanced", - "LLM_Detokenize", - "LLM_Embed", - "LLM_Eval", - "LLM_Load_State", - "LLM_Reset", - "LLM_Sample", - "LLM_Save_State", - "LLM_Token_BOS", - "LLM_Token_EOS", - "LLM_Tokenize", - "Load LLM Model Advanced", - "Load LLM Model Basic" - ], - { - "title_aux": "ComfyUI-Llama" - } - ], - "https://github.com/daniel-lewis-ab/ComfyUI-TTS": [ - [ - "Load_Piper_Model", - "Piper_Speak_Text" - ], - { - "title_aux": "ComfyUI-TTS" - } - ], - "https://github.com/darkpixel/darkprompts": [ - [ - "DarkAnyToString", - "DarkCheckpointRandomizer", - "DarkCheckpointSwitcher", - "DarkCombine", - "DarkFaceIndexGenerator", - "DarkFaceIndexShuffle", - "DarkFolders", - "DarkLoRALoader", - "DarkLoraStackFromString", - "DarkPopLoraFromStack", - "DarkPrompt" - ], - { - "title_aux": "DarkPrompts" - } - ], - "https://github.com/darth-veitcher/comfydv": [ - [ - "CircuitBreaker", - "FormatString", - "ModelUnloader", - "RandomChoice" - ], - { - "author": "Darth Veitcher", - "description": "This collection of nodes provides string formatting, random choices, model memory management, and other quality of life improvements.", - "nickname": "DV Nodes", - "title": "Comfy DV Nodes", - "title_aux": "Comfy DV" - } - ], - "https://github.com/daryltucker/ComfyUI-LoadFiles": [ - [ - "CountLines", - "ListFilenames", - "LoadImages" - ], - { - "title_aux": "ComfyUI-LoadFiles" - } - ], - "https://github.com/dave-palt/comfyui_DSP_imagehelpers": [ - [ - "dsp-imagehelpers-concat" - ], - { - "title_aux": "comfyui_DSP_imagehelpers" - } - ], - "https://github.com/davidgressett/comfyui-systemlevel": [ - [ - "CartesianCSVNode" - ], - { - "title_aux": "CartesianCSVNode for ComfyUI" - } - ], - "https://github.com/daxcay/ComfyUI-DataSet": [ - [ - "DataSet_ClaudeAIChat", - "DataSet_ClaudeAIChatImage", - "DataSet_ConceptManager", - "DataSet_CopyFiles", - "DataSet_FindAndReplace", - "DataSet_GroqChat", - "DataSet_GroqChatImage", - "DataSet_LoadImage", - "DataSet_OpenAIChat", - "DataSet_OpenAIChatImage", - "DataSet_OpenAIChatImageBatch", - "DataSet_PathSelector", - "DataSet_SaveImage", - "DataSet_SaveImagePro", - "DataSet_TextFilesLoad", - "DataSet_TextFilesLoadFromList", - "DataSet_TextFilesSave", - "DataSet_TriggerWords", - "DataSet_Visualizer" - ], - { - "author": "Daxton Caylor", - "description": "Data Research, Preparation, and Manipulation Nodes for Model Trainers, Artists, Designers, and Animators.", - "nickname": "ComfyUI-DataSet", - "title": "ComfyUI-DataSet", - "title_aux": "ComfyUI-DataSet" - } - ], - "https://github.com/daxcay/ComfyUI-JDCN": [ - [ - "JDCN_AnyCheckpointLoader", - "JDCN_AnyFileList", - "JDCN_AnyFileListHelper", - "JDCN_AnyFileListRandom", - "JDCN_AnyFileSelector", - "JDCN_BatchCounter", - "JDCN_BatchCounterAdvance", - "JDCN_BatchImageLoadFromDir", - "JDCN_BatchImageLoadFromList", - "JDCN_BatchLatentLoadFromDir", - "JDCN_BatchLatentLoadFromList", - "JDCN_BatchSaveLatent", - "JDCN_BoolInt", - "JDCN_EnableDisable", - "JDCN_FileMover", - "JDCN_ImageSaver", - "JDCN_ListToString", - "JDCN_LoadImage", - "JDCN_ReBatch", - "JDCN_SeamlessExperience", - "JDCN_ShowAny", - "JDCN_SplitString", - "JDCN_StringManipulator", - "JDCN_StringToList", - "JDCN_SwapInputs", - "JDCN_TXTFileSaver", - "JDCN_VHSFileMover" - ], - { - "author": "Daxton Caylor & Jerry Davos", - "description": "Custom Utility Nodes for Artists, Designers and Animators.", - "nickname": "ComfyUI-JDCN", - "title": "ComfyUI-JDCN", - "title_aux": "ComfyUI-JDCN" - } - ], - "https://github.com/daxcay/ComfyUI-TG": [ - [ - "TG_ImageSaver" - ], - { - "author": "Daxton Caylor", - "description": "This node enables someone to run comfyui in telegram.", - "nickname": "ComfyUI-TG", - "title": "ComfyUI-TG", - "title_aux": "ComfyUI-TG" - } - ], - "https://github.com/daxcay/ComfyUI-WA": [ - [ - "WA_ImageSaver" - ], - { - "author": "Daxton Caylor", - "description": "This node enables someone to run comfyui in whatsapp.", - "nickname": "ComfyUI-WA", - "title": "ComfyUI-WA", - "title_aux": "ComfyUI-WA" - } - ], - "https://github.com/daxcay/ComfyUI-YouTubeVideoPlayer": [ - [ - "YouTubeVideoPlayer" - ], - { - "author": "Daxton Caylor & Jerry Davos", - "description": "YouTube Video Player in Comfy.", - "nickname": "ComfyUI-YouTubeVideoPlayer", - "title": "ComfyUI-YouTubeVideoPlayer", - "title_aux": "ComfyUI-YouTubeVideoPlayer" - } - ], - "https://github.com/dchatel/comfyui_davcha": [ - [ - "ApplyMask", - "ConditioningCompress", - "DStack", - "DavchaCLIPMergeSimple", - "DavchaCLIPTextEncode", - "DavchaConditioningConcat", - "DavchaEmptyLatentImage", - "DavchaLoadVideo", - "DavchaMaskImage", - "DavchaModelMergeSD1", - "DavchaModelMergeSDXL", - "DavchaModelMergeSimple", - "DavchaPop", - "PercentPadding", - "ResizeCropFit", - "SmartMask", - "SoftErosion", - "StringScheduleHelper" - ], - { - "title_aux": "comfyui_davcha" - } - ], - "https://github.com/dchatel/comfyui_facetools": [ - [ - "BiSeNetMask", - "CropFaces", - "DetectFaces", - "GenderFaceFilter", - "JonathandinuMask", - "MergeWarps", - "OrderedFaceFilter", - "WarpFacesBack" - ], - { - "title_aux": "comfyui_facetools" - } - ], - "https://github.com/denfrost/Den_ComfyUI_Workflow": [ - [ - "Den_BatchIndex_AS", - "Den_CropImage_AS", - "Den_Eval_AS", - "Den_FaceRestoreCFWithModel", - "Den_GPTLoaderSimple_llama", - "Den_GPTSampler_llama", - "Den_ImageMixMasked_As", - "Den_ImageToLatentSpace", - "Den_ImageToMask_AS", - "Den_Int2Any_AS", - "Den_LatentAdd_AS", - "Den_LatentMixMasked_As", - "Den_LatentMix_AS", - "Den_LatentToImages_AS", - "Den_LoadLatent_AS", - "Den_MapRange_AS", - "Den_MaskToImage_AS", - "Den_Math_AS", - "Den_NoiseImage_AS", - "Den_Number2Float_AS", - "Den_Number2Int_AS", - "Den_Number_AS", - "Den_SVD_img2vid", - "Den_SaveLatent_AS", - "Den_TextToImage_AS", - "Den_TextWildcardList_AS", - "Increment_AS" - ], - { - "title_aux": "Den_ComfyUI_Workflows" - } - ], - "https://github.com/deroberon/StableZero123-comfyui": [ - [ - "SDZero ImageSplit", - "Stablezero123", - "Stablezero123WithDepth" - ], - { - "title_aux": "StableZero123-comfyui" - } - ], - "https://github.com/deroberon/demofusion-comfyui": [ - [ - "Batch Unsampler", - "Demofusion", - "Demofusion From Single File", - "Iterative Mixing KSampler" - ], - { - "title_aux": "demofusion-comfyui" - } - ], - "https://github.com/dfghsdh/ComfyUI_FluxPromptGen": [ - [ - "FluxImageCaptionNode", - "FluxPromptGeneratorNode" - ], - { - "title_aux": "ComfyUI_FluxPromptGen" - } - ], - "https://github.com/dfl/comfyui-clip-with-break": [ - [ - "AdvancedCLIPTextEncodeWithBreak", - "CLIPTextEncodeWithBreak" - ], - { - "author": "dfl", - "description": "CLIP text encoder that does BREAK prompting like A1111", - "nickname": "CLIP with BREAK", - "title": "CLIP with BREAK syntax", - "title_aux": "CLIP with BREAK syntax" - } - ], - "https://github.com/dfl/comfyui-tcd-scheduler": [ - [ - "SamplerTCD", - "SamplerTCD EulerA", - "TCDScheduler" - ], - { - "title_aux": "ComfyUI-TCD-scheduler" - } - ], - "https://github.com/diStyApps/ComfyUI-disty-Flow": [ - [ - "Flow" - ], - { - "title_aux": "Flow - Streamlined Way to ComfyUI" - } - ], - "https://github.com/diStyApps/ComfyUI_FrameMaker": [ - [ - "FrameMaker", - "FrameMakerBatch" - ], - { - "title_aux": "ComfyUI Frame Maker" - } - ], - "https://github.com/dicksondickson/ComfyUI-Dickson-Nodes": [ - [ - "DicksonColorMatch", - "DicksonLoadImage", - "Dickson_TTP_Preprocessor_Simple", - "Dickson_TTP_Preprocessor_cufoff", - "Dickson_TTP_Tile_Preprocessor_GF" - ], - { - "description": "This is a set of custom nodes that I've either written myself or adapted from other authors for my own convenience. Currently includes color matching node forked from StableSR and TTPlanet's controlnet preprocessor. https://github.com/dicksondickson", - "nickname": "Dickson Nodes", - "title": "Dickson Nodes", - "title_aux": "ComfyUI-Dickson-Nodes" - } - ], - "https://github.com/digitaljohn/comfyui-propost": [ - [ - "ProPostApplyLUT", - "ProPostDepthMapBlur", - "ProPostFilmGrain", - "ProPostRadialBlur", - "ProPostVignette" - ], - { - "title_aux": "ComfyUI-ProPost" - } - ], - "https://github.com/dimtoneff/ComfyUI-PixelArt-Detector": [ - [ - "PixelArtAddDitherPattern", - "PixelArtDetectorConverter", - "PixelArtDetectorSave", - "PixelArtDetectorToImage", - "PixelArtLoadPalettes" - ], - { - "title_aux": "ComfyUI PixelArt Detector" - } - ], - "https://github.com/diontimmer/ComfyUI-Vextra-Nodes": [ - [ - "Add Text To Image", - "Apply Instagram Filter", - "Create Solid Color", - "Flatten Colors", - "Generate Noise Image", - "GlitchThis Effect", - "Hue Rotation", - "Load Picture Index", - "Pixel Sort", - "Play Sound At Execution", - "Prettify Prompt Using distilgpt2", - "Swap Color Mode" - ], - { - "title_aux": "ComfyUI-Vextra-Nodes" - } - ], - "https://github.com/discopixel-studio/comfyui-discopixel": [ - [ - "PhotoroomRemoveBG" - ], - { - "author": "Anson Kao", - "description": "A small collection of custom nodes for use with ComfyUI, by Discopixel", - "nickname": "ComfyUI Discopixel", - "title": "ComfyUI Discopixel", - "title_aux": "PhotoRoom Nodes by Discopixel" - } - ], - "https://github.com/discus0434/comfyui-caching-embeddings": [ - [ - "CachingCLIPTextEncode" - ], - { - "title_aux": "ComfyUI Caching Embeddings" - } - ], - "https://github.com/discus0434/comfyui-flux-accelerator": [ - [ - "\ud83c\udf6dFluxAccelerator" - ], - { - "title_aux": "ComfyUI Flux Accelerator" - } - ], - "https://github.com/djbielejeski/a-person-mask-generator": [ - [ - "APersonFaceLandmarkMaskGenerator", - "APersonMaskGenerator" - ], - { - "title_aux": "a-person-mask-generator" - } - ], - "https://github.com/dmMaze/sketch2manga": [ - [ - "BlendScreentone", - "EmptyLatentImageAdvanced" - ], - { - "title_aux": "Sketch2Manga" - } - ], - "https://github.com/dmarx/ComfyUI-AudioReactive": [ - [ - "OpAbs", - "OpBandpass", - "OpClamp", - "OpHarmonic", - "OpModulo", - "OpNormalize", - "OpNovelty", - "OpPercussive", - "OpPow", - "OpPow2", - "OpPredominant_pulse", - "OpQuantize", - "OpRms", - "OpSmoosh", - "OpSmooth", - "OpSqrt", - "OpStretch", - "OpSustain", - "OpThreshold" - ], - { - "title_aux": "ComfyUI-AudioReactive" - } - ], - "https://github.com/dmarx/ComfyUI-Keyframed": [ - [ - "Example", - "KfAddCurveToPGroup", - "KfAddCurveToPGroupx10", - "KfApplyCurveToCond", - "KfConditioningAdd", - "KfConditioningAddx10", - "KfCurveConstant", - "KfCurveDraw", - "KfCurveFromString", - "KfCurveFromYAML", - "KfCurveInverse", - "KfCurveToAcnLatentKeyframe", - "KfCurvesAdd", - "KfCurvesAddx10", - "KfCurvesDivide", - "KfCurvesMultiply", - "KfCurvesMultiplyx10", - "KfCurvesSubtract", - "KfDebug_Clip", - "KfDebug_Cond", - "KfDebug_Curve", - "KfDebug_Float", - "KfDebug_Image", - "KfDebug_Int", - "KfDebug_Latent", - "KfDebug_Model", - "KfDebug_Passthrough", - "KfDebug_Segs", - "KfDebug_String", - "KfDebug_Vae", - "KfDrawSchedule", - "KfEvaluateCurveAtT", - "KfGetCurveFromPGroup", - "KfGetScheduleConditionAtTime", - "KfGetScheduleConditionSlice", - "KfKeyframedCondition", - "KfKeyframedConditionWithText", - "KfPGroupCurveAdd", - "KfPGroupCurveMultiply", - "KfPGroupDraw", - "KfPGroupProd", - "KfPGroupSum", - "KfSetCurveLabel", - "KfSetKeyframe", - "KfSinusoidalAdjustAmplitude", - "KfSinusoidalAdjustFrequency", - "KfSinusoidalAdjustPhase", - "KfSinusoidalAdjustWavelength", - "KfSinusoidalEntangledZeroOneFromFrequencyx2", - "KfSinusoidalEntangledZeroOneFromFrequencyx3", - "KfSinusoidalEntangledZeroOneFromFrequencyx4", - "KfSinusoidalEntangledZeroOneFromFrequencyx5", - "KfSinusoidalEntangledZeroOneFromFrequencyx6", - "KfSinusoidalEntangledZeroOneFromFrequencyx7", - "KfSinusoidalEntangledZeroOneFromFrequencyx8", - "KfSinusoidalEntangledZeroOneFromFrequencyx9", - "KfSinusoidalEntangledZeroOneFromWavelengthx2", - "KfSinusoidalEntangledZeroOneFromWavelengthx3", - "KfSinusoidalEntangledZeroOneFromWavelengthx4", - "KfSinusoidalEntangledZeroOneFromWavelengthx5", - "KfSinusoidalEntangledZeroOneFromWavelengthx6", - "KfSinusoidalEntangledZeroOneFromWavelengthx7", - "KfSinusoidalEntangledZeroOneFromWavelengthx8", - "KfSinusoidalEntangledZeroOneFromWavelengthx9", - "KfSinusoidalGetAmplitude", - "KfSinusoidalGetFrequency", - "KfSinusoidalGetPhase", - "KfSinusoidalGetWavelength", - "KfSinusoidalWithFrequency", - "KfSinusoidalWithWavelength" - ], - { - "title_aux": "ComfyUI-Keyframed" - } - ], - "https://github.com/drago87/ComfyUI_Dragos_Nodes": [ - [ - "file_padding", - "image_info", - "lora_loader", - "vae_loader" - ], - { - "title_aux": "ComfyUI_Dragos_Nodes" - } - ], - "https://github.com/dreamhartley/ComfyUI_show_seed": [ - [ - "Show Seed" - ], - { - "title_aux": "ComfyUI_show_seed" - } - ], - "https://github.com/drmbt/comfyui-dreambait-nodes": [ - [ - "AudioInfoPlus", - "BoolPlusPlus", - "DRMBT_AspectPadImageForOutpainting", - "DRMBT_LoadMedia", - "DRMBT_MultiMinMax", - "DRMBT_String_Item_Menu", - "DictToOutputs", - "DownloadAndLoadMiniCPMV", - "DreambaitFolderOpener", - "DynamicDictionary", - "ImageFrameBlend", - "ImageResizeFaceAware", - "ListItemExtract", - "ListItemSelector", - "LoadAudioPlus", - "MiniCPMVNode", - "MusicGen", - "NormalizeAudio", - "NumberPlusPlus", - "NumberRemap", - "Qwen2AudioInstruct", - "StringToDict", - "SwitchDuo", - "TextLineSelect", - "TextLinesToList", - "TextPlusPlus" - ], - { - "title_aux": "comfyui-dreambait-nodes" - } - ], - "https://github.com/drustan-hawk/primitive-types": [ - [ - "float", - "int", - "string", - "string_multiline" - ], - { - "title_aux": "primitive-types" - } - ], - "https://github.com/duchamps0305/comfyui-white-extractor": [ - [ - "WhitePercentage" - ], - { - "title_aux": "comfyui-white-extractor" - } - ], - "https://github.com/ducido/ObjectFusion_ComfyUI_nodes": [ - [ - "Custom ESAM_ModelLoader_Zho", - "Custom Generate Stable Diffsution Prompt With LLM", - "Custom Yoloworld_ESAM_Zho", - "Custom Yoloworld_ModelLoader_Zho", - "ObjectCrop" - ], - { - "title_aux": "ObjectFusion_ComfyUI_nodes" - } - ], - "https://github.com/duskfallcrew/Comfyui_EmbeddingMerge_Node/raw/refs/heads/main/merge_embed.py": [ - [ - "EmbeddingMerger" - ], - { - "title_aux": "Embedding Merge for ComfyUI" - } - ], - "https://github.com/dymokomi/comfyui_dygen": [ - [ - "AdaptiveColorCircles", - "AdaptiveColorLines", - "AdaptiveColorRectangles", - "BinaryPatternStamper", - "DYImageCluster", - "DYImageMasks", - "DYImagePalette", - "DYImageQuantize", - "ImageListToGrid", - "ImageScaler", - "RandomLines" - ], - { - "title_aux": "comfyui_dygen" - } - ], - "https://github.com/e7mac/ComfyUI-ShadertoyGL": [ - [ - "ColorChannelOffset", - "Shader", - "Shadertoy" - ], - { - "title_aux": "ComfyUI-ShadertoyGL" - } - ], - "https://github.com/ealkanat/comfyui-easy-padding": [ - [ - "comfyui-easy-padding" - ], - { - "title_aux": "ComfyUI Easy Padding" - } - ], - "https://github.com/eastoc/ComfyUI_SemanticSAM": [ - [ - "PointPrompt", - "SemanticSAMLoader", - "SemanticSAMSegment" - ], - { - "title_aux": "Semantic-SAM" - } - ], - "https://github.com/edelvarden/ComfyUI-ImageMetadataExtension": [ - [ - "CreateExtraMetaData", - "SaveImageWithMetaData" - ], - { - "title_aux": "ComfyUI-ImageMetadataExtension" - } - ], - "https://github.com/edenartlab/eden_comfy_pipelines": [ - [ - "Animation_RGB_Mask", - "AspectPadImageForOutpainting", - "CLIP_Interrogator", - "ConvertToGrayscale", - "DepthSlicer", - "Eden_Bool", - "Eden_BoolBinaryOperation", - "Eden_Compare", - "Eden_DebugPrint", - "Eden_DepthSlice_MaskVideo", - "Eden_DetermineFrameCount", - "Eden_Float", - "Eden_FloatToInt", - "Eden_GPTPromptEnhancer", - "Eden_IMG_padder", - "Eden_IMG_unpadder", - "Eden_Image_Math", - "Eden_Int", - "Eden_IntToFloat", - "Eden_MaskBoundingBox", - "Eden_MaskCombiner", - "Eden_Math", - "Eden_RandomPromptFromFile", - "Eden_RepeatLatentBatch", - "Eden_Seed", - "Eden_String", - "Eden_StringHash", - "Eden_StringReplace", - "Eden_gpt4_node", - "Extend_Sequence", - "FolderScanner", - "GetRandomFile", - "Get_Prefixed_Imgs", - "HistogramMatching", - "IMG_blender", - "IMG_resolution_multiple_of", - "IMG_scaler", - "IP_Adapter_Settings_Distribution", - "If ANY execute A else B", - "ImageDescriptionNode", - "ImageFolderIterator", - "KeyframeBlender", - "LatentTypeConversion", - "Linear_Combine_IP_Embeds", - "LoadImagesByFilename", - "LoadRandomImage", - "Load_Embeddings_From_Folder", - "MaskFromRGB_KMeans", - "ParallaxZoom", - "Random_Style_Mixture", - "SaveImageAdvanced", - "SavePosEmbeds", - "VAEDecode_to_folder", - "VideoFrameSelector", - "WidthHeightPicker" - ], - { - "title_aux": "Eden.art nodesuite" - } - ], - "https://github.com/edenartlab/sd-lora-trainer": [ - [ - "Eden_LoRa_trainer" - ], - { - "title_aux": "Eden.art LoRa Trainer" - } - ], - "https://github.com/educator-art/ComfyUI-Load-DirectoryFiles": [ - [ - "Load Images and Prompts from Directory", - "Load Images and Prompts from Directory(Advanced)" - ], - { - "title_aux": "ComfyUI-Load-DirectoryFiles" - } - ], - "https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes": [ - [ - "BatchImageProcessor", - "Caption", - "CaptionDownload", - "KolorsMultiTextEncode", - "MultiTextEncode" - ], - { - "title_aux": "ComfyUI_Emojiiii_Custom_Nodes" - } - ], - "https://github.com/envy-ai/ComfyUI-ConDelta": [ - [ - "ApplyConDelta", - "ApplyConDeltaAutoScale", - "ClampConDelta", - "ConditioningAddConDelta", - "ConditioningAddConDeltaAutoScale", - "ConditioningAverageMultiple", - "ConditioningGetNoise", - "ConditioningScale", - "ConditioningSubtract", - "ExtendedConditioningAverage", - "HardClampConDelta", - "LoadConditioningDelta", - "MaskConDelta", - "SaveConditioningDelta", - "ThresholdConditioning" - ], - { - "title_aux": "ComfyUI-ConDelta" - } - ], - "https://github.com/erosDiffusion/ComfyUI-enricos-nodes": [ - [ - "Compositor3", - "CompositorConfig3", - "CompositorTools3", - "CompositorTransformsOutV3" - ], - { - "title_aux": "Compositor Node" - } - ], - "https://github.com/evanspearman/ComfyMath": [ - [ - "CM_BoolBinaryOperation", - "CM_BoolToInt", - "CM_BoolUnaryOperation", - "CM_BreakoutVec2", - "CM_BreakoutVec3", - "CM_BreakoutVec4", - "CM_ComposeVec2", - "CM_ComposeVec3", - "CM_ComposeVec4", - "CM_FloatBinaryCondition", - "CM_FloatBinaryOperation", - "CM_FloatToInt", - "CM_FloatToNumber", - "CM_FloatUnaryCondition", - "CM_FloatUnaryOperation", - "CM_IntBinaryCondition", - "CM_IntBinaryOperation", - "CM_IntToBool", - "CM_IntToFloat", - "CM_IntToNumber", - "CM_IntUnaryCondition", - "CM_IntUnaryOperation", - "CM_NearestSDXLExtendedResolution", - "CM_NearestSDXLResolution", - "CM_NumberBinaryCondition", - "CM_NumberBinaryOperation", - "CM_NumberToFloat", - "CM_NumberToInt", - "CM_NumberUnaryCondition", - "CM_NumberUnaryOperation", - "CM_SDXLExtendedResolution", - "CM_SDXLResolution", - "CM_Vec2BinaryCondition", - "CM_Vec2BinaryOperation", - "CM_Vec2ScalarOperation", - "CM_Vec2ToScalarBinaryOperation", - "CM_Vec2ToScalarUnaryOperation", - "CM_Vec2UnaryCondition", - "CM_Vec2UnaryOperation", - "CM_Vec3BinaryCondition", - "CM_Vec3BinaryOperation", - "CM_Vec3ScalarOperation", - "CM_Vec3ToScalarBinaryOperation", - "CM_Vec3ToScalarUnaryOperation", - "CM_Vec3UnaryCondition", - "CM_Vec3UnaryOperation", - "CM_Vec4BinaryCondition", - "CM_Vec4BinaryOperation", - "CM_Vec4ScalarOperation", - "CM_Vec4ToScalarBinaryOperation", - "CM_Vec4ToScalarUnaryOperation", - "CM_Vec4UnaryCondition", - "CM_Vec4UnaryOperation" - ], - { - "title_aux": "ComfyMath" - } - ], - "https://github.com/exdysa/comfyui-selector": [ - [ - "RecourseAny", - "RecourseCkpt", - "RecourseImage", - "RecoursePolar", - "RecourseStrings", - "SelInClip", - "SelInGuider", - "SelInLatent", - "SelInModel", - "SelInPolar", - "SelInVae", - "SelOutCLIP", - "SelOutModel", - "SelOutPolar", - "Selector" - ], - { - "author": "\"\u02f6\ud835\udfa2\u292c\u2ad2\u2d56s\u143c\u02f6\"", - "description": "\"EXDYSA. Selector and Recourse. Presets & failsafes. Work flow.\"", - "nickname": "\"Selector\"", - "title": "\"Selector\"", - "title_aux": "comfyui-selector" - } - ], - "https://github.com/exectails/comfyui-et_dynamicprompts": [ - [ - "ETDynamicPrompt" - ], - { - "title_aux": "Dynamic Prompts" - } - ], - "https://github.com/exectails/comfyui-et_infoutils": [ - [ - "ETInspectTextNode", - "ETIntBoxNode", - "ETPresentImageNode", - "ETShowDataNode", - "ETStringBoxNode", - "ETTextBoxNode", - "ETTokenCountNode" - ], - { - "title_aux": "Info Utils" - } - ], - "https://github.com/exectails/comfyui-et_stringutils": [ - [ - "ETATOI", - "ETITOA", - "ETJoinTextNode", - "ETReplaceTextNode", - "ETSplitTextNode", - "ETSwitchTextNode", - "ETTextFormatter10Node", - "ETTextFormatter2Node", - "ETTextFormatter5Node" - ], - { - "title_aux": "String Utils" - } - ], - "https://github.com/ez-af/ComfyUI-EZ-AF-Nodes": [ - [ - "EZ Concatenate Text", - "EZ Load from CSV", - "EZ String" - ], - { - "title_aux": "ComfyUI-EZ-AF-Nodes" - } - ], - "https://github.com/fablestudio/ComfyUI-Showrunner-Utils": [ - [ - "AlignFace", - "GenerateTimestamp", - "GetMostCommonColors", - "ReadImage", - "RenderOpenStreetMapTile" - ], - { - "title_aux": "ComfyUI-Showrunner-Utils" - } - ], - "https://github.com/facok/ComfyUI-HunyuanVideoMultiLora": [ - [ - "HunyuanVideoLoraLoader" - ], - { - "title_aux": "ComfyUI-HunyuanVideoMultiLora" - } - ], - "https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo": [ - [ - "TeaCacheHunyuanVideoSampler_FOK" - ], - { - "title_aux": "ComfyUI-TeaCacheHunyuanVideo" - } - ], - "https://github.com/fairy-root/ComfyUI-GLHF": [ - [ - "glhf_chat" - ], - { - "title_aux": "ComfyUI-GLHF" - } - ], - "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/fallingmeteorite/nsfw-image-check-comfyui": [ - [ - "NsfwCheckNode" - ], - { - "title_aux": "nsfw-image-check-comfyui" - } - ], - "https://github.com/fashn-AI/ComfyUI-FASHN": [ - [ - "FASHN" - ], - { - "title_aux": "FASHN Virtual Try-On" - } - ], - "https://github.com/fblissjr/ComfyUI-EmbeddingPipelineAnalytics": [ - [ - "EmbeddingAnalyzer", - "EmbeddingPipelineCapture" - ], - { - "title_aux": "ComfyUI-EmbeddingPipelineAnalytics" - } - ], - "https://github.com/fearnworks/ComfyUI_FearnworksNodes": [ - [ - "Count Files in Directory (FW)", - "Count Tokens (FW)", - "CountTokens", - "FileCountInDirectory", - "Token Count Ranker(FW)", - "TokenCountRanker", - "Trim To Tokens (FW)", - "TrimToTokens" - ], - { - "title_aux": "Fearnworks Nodes" - } - ], - "https://github.com/feixuetuba/Spleeter": [ - [ - "Spleeter" - ], - { - "title_aux": "Spleeter" - } - ], - "https://github.com/fexli/fexli-util-node-comfyui": [ - [ - "FEBCPrompt", - "FEBatchGenStringBCDocker", - "FEColor2Image", - "FEColorOut", - "FEDataInsertor", - "FEDataPacker", - "FEDataUnpacker", - "FEDeepClone", - "FEDictPacker", - "FEDictUnpacker", - "FEEncLoraLoader", - "FEExtraInfoAdd", - "FEGenStringBCDocker", - "FEGenStringGPT", - "FEImageNoiseGenerate", - "FEImagePadForOutpaint", - "FEImagePadForOutpaintByImage", - "FEOperatorIf", - "FEPythonStrOp", - "FERandomBool", - "FERandomLoraSelect", - "FERandomPrompt", - "FERandomizedColor2Image", - "FERandomizedColorOut", - "FERerouteWithName", - "FESaveEncryptImage", - "FETextCombine", - "FETextCombine2Any", - "FETextInput" - ], - { - "title_aux": "fexli-util-node-comfyui" - } - ], - "https://github.com/fexploit/ComfyUI-AutoLabel": [ - [ - "AutoLabel" - ], - { - "title_aux": "ComfyUI-AutoLabel" - } - ], - "https://github.com/fexploit/ComfyUI-AutoTrimBG": [ - [ - "RonLayers/TrimBg: RonLayersTrimBgUltraV2" - ], - { - "title_aux": "ComfyUI-AutoTrimBG" - } - ], - "https://github.com/fexploit/ComfyUI-Classifier": [ - [ - "ClassifierNode" - ], - { - "title_aux": "ComfyUI-Classifier" - } - ], - "https://github.com/filipemeneses/comfy_pixelization": [ - [ - "Pixelization" - ], - { - "title_aux": "Pixelization" - } - ], - "https://github.com/filliptm/ComfyUI_FL-Trainer": [ - [ - "FL_ImageCaptionSaver", - "FL_KohyaSSAdvConfig", - "FL_KohyaSSDatasetConfig", - "FL_KohyaSSInitWorkspace", - "FL_KohyaSSTrain", - "FL_Kohya_EasyTrain", - "FL_LoadImagesFromDirectoryPath", - "FL_SliderLoraAdvConfig", - "FL_SliderLoraDatasetConfig", - "FL_SliderLoraInitWorkspace", - "FL_SliderLoraTrain" - ], - { - "title_aux": "ComfyUI_FL-Trainer" - } - ], - "https://github.com/filliptm/ComfyUI_Fill-Nodes": [ - [ - "FL_API_ImageSaver", - "FL_ApplyMask", - "FL_Ascii", - "FL_Base64ImageLoader", - "FL_BatchAlign", - "FL_BulkPDFLoader", - "FL_BulletHellGame", - "FL_CaptionSaver_V2", - "FL_CaptionToCSV", - "FL_CodeNode", - "FL_ColorPicker", - "FL_Dalle3", - "FL_DirectoryCrawl", - "FL_Dither", - "FL_FractalKSampler", - "FL_GPT_Vision", - "FL_Glitch", - "FL_GoogleDriveDownloader", - "FL_GradGenerator", - "FL_HFHubModelUploader", - "FL_HF_Character", - "FL_HF_UploaderAbsolute", - "FL_HalftonePattern", - "FL_HexagonalPattern", - "FL_ImageAdjuster", - "FL_ImageBatchToGrid", - "FL_ImageBatchToImageList", - "FL_ImageCaptionLayout", - "FL_ImageCaptionLayoutPDF", - "FL_ImageCaptionSaver", - "FL_ImageCollage", - "FL_ImageDimensionDisplay", - "FL_ImageListToImageBatch", - "FL_ImageNotes", - "FL_ImagePixelator", - "FL_ImageRandomizer", - "FL_ImageSlicer", - "FL_ImagesToPDF", - "FL_InfiniteZoom", - "FL_InpaintCrop", - "FL_Inpaint_Stitch", - "FL_KSamplerXYZPlot", - "FL_KsamplerBasic", - "FL_KsamplerPlus", - "FL_KsamplerSettings", - "FL_LoadImage", - "FL_MadLibGenerator", - "FL_Math", - "FL_MirrorAndAppendCaptions", - "FL_NFTGenerator", - "FL_NodeLoader", - "FL_NodePackLoader", - "FL_OllamaCaptioner", - "FL_PDFImageExtractor", - "FL_PDFLoader", - "FL_PDFMerger", - "FL_PDFSaver", - "FL_PDFTextExtractor", - "FL_PDFToImages", - "FL_Padding", - "FL_PaperDrawn", - "FL_PasteOnCanvas", - "FL_PathTypeChecker", - "FL_PixelArtShader", - "FL_PixelSort", - "FL_ProResVideo", - "FL_PromptSelector", - "FL_RandomNumber", - "FL_RetroEffect", - "FL_Ripple", - "FL_SDUltimate_Slices", - "FL_SamplerStrings", - "FL_SaveAndDisplayImage", - "FL_SaveCSV", - "FL_SaveImages", - "FL_SaveWebPImage(SaveImage)", - "FL_SchedulerStrings", - "FL_SendToDiscordWebhook", - "FL_SeparateMaskComponents", - "FL_Shadertoy", - "FL_SimpleGPTVision", - "FL_SystemCheck", - "FL_TetrisGame", - "FL_TimeLine", - "FL_UpscaleModel", - "FL_VideoCropMask", - "FL_VideoRecompose", - "FL_ZipDirectory", - "FL_ZipSave", - "GradientImageGenerator", - "SaveWebPImage" - ], - { - "title_aux": "ComfyUI_Fill-Nodes" - } - ], - "https://github.com/florestefano1975/ComfyUI-Advanced-Sequence-Seed": [ - [ - "AdvancedSequenceSeedNode" - ], - { - "title_aux": "Advanced Sequence Seed Generator" - } - ], - "https://github.com/florestefano1975/ComfyUI-CogVideoX": [ - [ - "CogVideoX Image-2-Video Extended", - "CogVideoX Save Video" - ], - { - "title_aux": "ComfyUI-CogVideoX" - } - ], - "https://github.com/florestefano1975/ComfyUI-HiDiffusion": [ - [ - "HiDiffusionSD15", - "HiDiffusionSD21", - "HiDiffusionSDXL", - "HiDiffusionSDXLTurbo" - ], - { - "title_aux": "ComfyUI HiDiffusion" - } - ], - "https://github.com/florestefano1975/ComfyUI-StabilityAI-Suite": [ - [ - "StabilityAI Suite - Creative Upscale", - "StabilityAI Suite - Creative Upscale Recover File", - "StabilityAI Suite - Image Core + Style Preset", - "StabilityAI Suite - Inpainting", - "StabilityAI Suite - Outpainting", - "StabilityAI Suite - Remove Background", - "StabilityAI Suite - SD3", - "StabilityAI Suite - Search and Replace" - ], - { - "title_aux": "ComfyUI StabilityAI Suite" - } - ], - "https://github.com/florestefano1975/comfyui-portrait-master": [ - [ - "PortraitMaster", - "PortraitMasterBaseCharacter", - "PortraitMasterMakeup", - "PortraitMasterSkinDetails", - "PortraitMasterStylePose" - ], - { - "title_aux": "comfyui-portrait-master" - } - ], - "https://github.com/florestefano1975/comfyui-prompt-composer": [ - [ - "PromptComposerCustomLists", - "PromptComposerEffect", - "PromptComposerGrouping", - "PromptComposerMerge", - "PromptComposerStyler", - "PromptComposerTextSingle", - "promptComposerTextMultiple" - ], - { - "title_aux": "comfyui-prompt-composer" - } - ], - "https://github.com/flowtyone/ComfyUI-Flowty-CRM": [ - [ - "CCMSampler", - "CRMModelLoader", - "CRMModeler", - "CRMModelerCuda", - "CRMPoseSampler", - "CRMPoserConfig", - "CRMPreprocessForPoser", - "CRMViewer" - ], - { - "title_aux": "ComfyUI-Flowty-CRM" - } - ], - "https://github.com/flowtyone/ComfyUI-Flowty-LDSR": [ - [ - "LDSRModelLoader", - "LDSRUpscale", - "LDSRUpscaler" - ], - { - "title_aux": "ComfyUI-Flowty-LDSR" - } - ], - "https://github.com/flowtyone/ComfyUI-Flowty-TripoSR": [ - [ - "TripoSRModelLoader", - "TripoSRSampler", - "TripoSRViewer" - ], - { - "title_aux": "ComfyUI-Flowty-TripoSR" - } - ], - "https://github.com/flycarl/ComfyUI-Pixelate": [ - [ - "ComfyUIPixelate" - ], - { - "title_aux": "ComfyUI-Pixelate" - } - ], - "https://github.com/flyingshutter/As_ComfyUI_CustomNodes": [ - [ - "BatchIndex_AS", - "CropImage_AS", - "Eval_AS", - "ImageMixMasked_As", - "ImageToMask_AS", - "Increment_AS", - "Int2Any_AS", - "LatentAdd_AS", - "LatentMixMasked_As", - "LatentMix_AS", - "LatentToImages_AS", - "LoadLatent_AS", - "MapRange_AS", - "MaskToImage_AS", - "Math_AS", - "NoiseImage_AS", - "Number2Float_AS", - "Number2Int_AS", - "Number_AS", - "SaveLatent_AS", - "TextToImage_AS", - "TextWildcardList_AS" - ], - { - "title_aux": "As_ComfyUI_CustomNodes" - } - ], - "https://github.com/fmatray/ComfyUI_BattlemapGrid": [ - [ - "Battlemap Grid", - "Compass", - "Map Generator", - "Map Generator(Outdoors)" - ], - { - "title_aux": "ComfyUI_BattlemapGrid" - } - ], - "https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler": [ - [ - "HyperSDXL1StepUnetScheduler" - ], - { - "title_aux": "ComfyUI-HyperSDXL1StepUnetScheduler (ByteDance)" - } - ], - "https://github.com/fofr/ComfyUI-Prompter-fofrAI": [ - [ - "List sampler \ud83e\udeb4", - "Prompt from template \ud83e\udeb4" - ], - { - "title_aux": "ComfyUI-Prompter-fofrAI" - } - ], - "https://github.com/fofr/comfyui-fofr-toolkit": [ - [ - "Incrementer \ud83e\udeb4", - "Width and height for scaling image to ideal resolution \ud83e\udeb4", - "Width and height from aspect ratio \ud83e\udeb4" - ], - { - "title_aux": "comfyui-fofr-toolkit" - } - ], - "https://github.com/forever22777/comfyui-self-guidance": [ - [ - "CLIPConditioning", - "CheckpointLoaderMixWithDiffusers", - "SelfGuidanceSampler" - ], - { - "title_aux": "Self-Guidance nodes" - } - ], - "https://github.com/foxtrot-roger/comfyui-rf-nodes": [ - [ - "LogBool", - "LogFloat", - "LogInt", - "LogNumber", - "LogString", - "LogVec2", - "LogVec3", - "RF_AtIndexString", - "RF_BoolToString", - "RF_FloatToString", - "RF_IntToString", - "RF_JsonStyleLoader", - "RF_MergeLines", - "RF_NumberToString", - "RF_OptionsString", - "RF_RangeFloat", - "RF_RangeInt", - "RF_RangeNumber", - "RF_SavePromptInfo", - "RF_SplitLines", - "RF_TextConcatenate", - "RF_TextInput", - "RF_TextReplace", - "RF_Timestamp", - "RF_ToString", - "RF_Vec2ToString", - "RF_Vec3ToString", - "TextLine" - ], - { - "title_aux": "RF Nodes" - } - ], - "https://github.com/frankchieng/ComfyUI_Aniportrait": [ - [ - "AniPortrait_Audio2Video", - "AniPortrait_Audio_Path", - "AniPortrait_LoadVideoPath", - "AniPortrait_Pose_Gen_Video", - "AniPortrait_Ref_Image_Path", - "AniPortrait_Video_Gen_Pose" - ], - { - "title_aux": "ComfyUI_Aniportrait" - } - ], - "https://github.com/frankchieng/ComfyUI_MagicClothing": [ - [ - "MagicClothing_Animatediff", - "MagicClothing_Generate", - "MagicClothing_Inpainting" - ], - { - "title_aux": "ComfyUI_MagicClothing" - } - ], - "https://github.com/frankchieng/ComfyUI_llm_easyanimiate": [ - [], - { - "nodename_pattern": "^FrankChiengEasyAnimate", - "title_aux": "ComfyUI_llm_easyanimiate" - } - ], - "https://github.com/freelifehacker/ComfyUI-ImgMask2PNG": [ - [ - "ImageMask2PNG" - ], - { - "title_aux": "ComfyUI-ImgMask2PNG" - } - ], - "https://github.com/fsdymy1024/ComfyUI_fsdymy": [ - [ - "IPAdapterLayerWeight", - "Preview Image Without Metadata", - "PreviewImageWithoutMetadata", - "Save Image Without Metadata", - "SaveImageWithoutMetadata", - "ShowText", - "ZhiPuAiNode" - ], - { - "title_aux": "ComfyUI_fsdymy" - } - ], - "https://github.com/fssorc/ComfyUI_FFT": [ - [ - "FFTNode", - "FindFFTSpot", - "InvertFFTNode", - "InvertFFTWithMask" - ], - { - "title_aux": "ComfyUI_FFT" - } - ], - "https://github.com/fssorc/ComfyUI_FaceShaper": [ - [ - "FaceAlignmentCropper", - "FaceShaper", - "FaceShaperComposite", - "FaceShaperCropper", - "FaceShaperFaceMask", - "FaceShaperLoadInsightFaceCropper", - "FaceShaperLoadMediaPipeCropper", - "FaceShaperMatchV2", - "FaceShaperModels", - "FaceShaperShowLandMarks" - ], - { - "title_aux": "ComfyUI_FaceShaper" - } - ], - "https://github.com/fssorc/ComfyUI_RopeWrapper": [ - [ - "RopeVideoCombine", - "RopeWrapper_DetectNode", - "RopeWrapper_FaceRestore", - "RopeWrapper_LoadModels", - "RopeWrapper_LoadSwapInfo", - "RopeWrapper_OptionNode", - "RopeWrapper_SaveSwapInfo", - "RopeWrapper_SwapNode", - "RopeWrapper_SwapNodeTEST" - ], - { - "title_aux": "ComfyUI_RopeWrapper" - } - ], - "https://github.com/fssorc/ComfyUI_pose_inter": [ - [ - "Pose_Inter" - ], - { - "title_aux": "ComfyUI_pose_inter" - } - ], - "https://github.com/fuselayer/comfyui-mosaic-blur": [ - [ - "ImageMosaic" - ], - { - "title_aux": "comfyui-mosaic-blur" - } - ], - "https://github.com/gelasdev/ComfyUI-FLUX-BFL-API": [ - [ - "FluxDevRedux_BFL", - "FluxDev_BFL", - "FluxPro11Redux_BFL", - "FluxPro11UltraRedux_BFL", - "FluxPro11Ultra_BFL", - "FluxPro11_BFL", - "FluxProCanny_BFL", - "FluxProDepth_BFL", - "FluxProFill_BFL", - "FluxPro_BFL" - ], - { - "title_aux": "ComfyUI-FLUX-BFL-API" - } - ], - "https://github.com/gemell1/ComfyUI_GMIC": [ - [ - "GmicCliWrapper", - "GmicQtWrapper" - ], - { - "title_aux": "ComfyUI_GMIC" - } - ], - "https://github.com/geocine/geocine-comfyui": [ - [ - "Image Scale", - "Image Selector", - "LoRA Name List", - "Seed to Noise" - ], - { - "title_aux": "geocine-comfyui" - } - ], - "https://github.com/ggarra13/ComfyUI-mrv2": [ - [ - "mrv2AnnotationsImageNode", - "mrv2SaveEXRImage" - ], - { - "title_aux": "ComfyUI-mrv2" - } - ], - "https://github.com/giriss/comfy-image-saver": [ - [ - "Cfg Literal", - "Checkpoint Selector", - "Int Literal", - "Sampler Selector", - "Save Image w/Metadata", - "Scheduler Selector", - "Seed Generator", - "String Literal", - "Width/Height Literal" - ], - { - "title_aux": "Save Image with Generation Metadata" - } - ], - "https://github.com/gisu/comfyui-foxpack": [ - [ - "Add_To_List", - "BaseSamplerSetup", - "Big_Prompter", - "Change_Entries_In_A_List", - "Change_Entry_From_List", - "CheckpointMetaExtractor", - "CheckpointSelector", - "Complete_Setup", - "Convert_Into", - "Negate_Boolean", - "Optional_Value_Override", - "OverrideSamplerSetup", - "Override_Value_If_Unset", - "Pick_Value_From_Dict", - "Pick_Values_From_List", - "Refine_Prompt", - "Refine_Setup", - "Remap_Values", - "Remove_Values_From_List", - "Select_By_Index", - "Select_Line_By_Index", - "Select_String_By_Index", - "SetupSelector", - "Show_Type", - "Split_Entry_In_2Chunks", - "Split_Entry_In_4Chunks", - "Split_Entry_In_6Chunks", - "Split_Entry_In_8Chunks", - "Step_Denoise", - "UniversalLatentHelper", - "Universal_VAE_Loader" - ], - { - "title_aux": "foxpack" - } - ], - "https://github.com/githubYiheng/ComfyUI_Change_IMAGE_BOREDER": [ - [ - "ChangeImageBorder" - ], - { - "title_aux": "ComfyUI_Change_IMAGE_BOREDER" - } - ], - "https://github.com/githubYiheng/ComfyUI_GetFileNameFromURL": [ - [ - "GetFileNameFromURL" - ], - { - "title_aux": "ComfyUI_GetFileNameFromURL" - } - ], - "https://github.com/githubYiheng/comfyui_kmeans_filter": [ - [ - "ImageKmeansFilter" - ], - { - "title_aux": "comfyui_kmeans_filter" - } - ], - "https://github.com/githubYiheng/comfyui_meanshift_filter": [ - [ - "ImageMeanshiftFilter" - ], - { - "title_aux": "comfyui_meanshift_filter" - } - ], - "https://github.com/githubYiheng/comfyui_private_postprocessor": [ - [ - "ImageCPostprocessor", - "PrivateImageMask" - ], - { - "title_aux": "comfyui_private_postprocessor" - } - ], - "https://github.com/glibsonoran/Plush-for-ComfyUI": [ - [ - "AI Chooser", - "Add Parameters", - "AdvPromptEnhancer", - "Custom API Key", - "DalleImage", - "Enhancer", - "Image Mixer", - "ImgTextSwitch", - "Load Remote Models", - "LoadText|plush", - "ParseJSON", - "Plush-Exif Wrangler", - "Random Image Output", - "Random Mixer", - "Random Output", - "SaveText|plush", - "Tagger", - "Text (Any)", - "Type Converter", - "mulTextSwitch" - ], - { - "title_aux": "Plush-for-ComfyUI" - } - ], - "https://github.com/glifxyz/ComfyUI-GlifNodes": [ - [ - "FilmGrain", - "FluxReduxFloatRamp", - "GlifConsistencyDecoder", - "GlifPatchConsistencyDecoderTiled", - "GlifVariable", - "HFHubEmbeddingLoader", - "HFHubLoraLoader", - "ImagePaddingAdvanced", - "ImageToMultipleOf", - "LoraLoaderFromURL", - "SDXLAspectRatio" - ], - { - "title_aux": "ComfyUI-GlifNodes" - } - ], - "https://github.com/glowcone/comfyui-base64-to-image": [ - [ - "LoadImageFromBase64" - ], - { - "title_aux": "Load Image From Base64 URI" - } - ], - "https://github.com/glowcone/comfyui-string-converter": [ - [ - "StringToFloat", - "StringToInt" - ], - { - "title_aux": "String Converter" - } - ], - "https://github.com/goburiin/nsfwrecog-comfyui": [ - [ - "NSFWDetectorNode" - ], - { - "title_aux": "nsfwrecog-comfyui" - } - ], - "https://github.com/godmt/ComfyUI-List-Utils": [ - [ - "GODMT_AnyCast", - "GODMT_AnyToDict", - "GODMT_BatchGetByIndex", - "GODMT_BatchItemCast", - "GODMT_BatchSlice", - "GODMT_BatchToList", - "GODMT_CreateArange", - "GODMT_CreateBatch", - "GODMT_CreateLinspace", - "GODMT_CreateList", - "GODMT_CreateRange", - "GODMT_Exec", - "GODMT_GetLength", - "GODMT_GetShape", - "GODMT_GetWidgetsValues", - "GODMT_ListDir", - "GODMT_ListGetByIndex", - "GODMT_ListSlice", - "GODMT_ListToBatch", - "GODMT_MergeBatch", - "GODMT_MergeList", - "GODMT_Pack", - "GODMT_SplitString", - "GODMT_Unpack" - ], - { - "title_aux": "ComfyUI-List-Utils" - } - ], - "https://github.com/godspede/ComfyUI_Substring": [ - [ - "SubstringTheory" - ], - { - "title_aux": "ComfyUI Substring" - } - ], - "https://github.com/gokayfem/ComfyUI-Depth-Visualization": [ - [ - "DepthViewer" - ], - { - "title_aux": "ComfyUI-Depth-Visualization" - } - ], - "https://github.com/gokayfem/ComfyUI-Dream-Interpreter": [ - [ - "DreamViewer" - ], - { - "title_aux": "ComfyUI-Dream-Interpreter" - } - ], - "https://github.com/gokayfem/ComfyUI-Texture-Simple": [ - [ - "TextureViewer" - ], - { - "title_aux": "ComfyUI-Texture-Simple" - } - ], - "https://github.com/gokayfem/ComfyUI_VLM_nodes": [ - [ - "AudioLDM2Node", - "ChatMusician", - "CreativeArtPromptGenerator", - "Joytag", - "JsonToText", - "KeywordExtraction", - "Kosmos2model", - "LLMLoader", - "LLMOptionalMemoryFreeAdvanced", - "LLMOptionalMemoryFreeSimple", - "LLMPromptGenerator", - "LLMSampler", - "LLava Loader Simple", - "LLavaOptionalMemoryFreeAdvanced", - "LLavaOptionalMemoryFreeSimple", - "LLavaPromptGenerator", - "LLavaSamplerAdvanced", - "LLavaSamplerSimple", - "LlavaClipLoader", - "MCLLaVAModel", - "MiniCPMNode", - "MolmoNode", - "MoonDream", - "Moondream2model", - "Paligemma", - "PlayMusic", - "PromptGenerateAPI", - "Qwen2VLNode", - "SaveAudioNode", - "SimpleText", - "StructuredOutput", - "Suggester", - "UformGen2QwenNode", - "ViewText" - ], - { - "title_aux": "VLM_nodes" - } - ], - "https://github.com/gonzalu/ComfyUI_YFG_Comical": [ - [ - "Image10Switcher_node", - "Image15Switcher_node", - "Image20Switcher_node", - "Image3Switcher_node", - "Image5Switcher_node", - "MonoClip_node", - "PixelArt_node", - "VAEDecodePreview_node", - "image2contrastMask_node", - "image2imbgg_node", - "image_halftone", - "image_histograms_node", - "image_histograms_node_compact", - "images_side_by_side", - "imgbbLoader_node", - "smartCheckpointLoader_node", - "storeURL_node", - "textMaskOverlay_node" - ], - { - "author": "Manny Gonzalez", - "description": "Utility custom nodes for special effects, image manipulation and quality of life tools.", - "nickname": "\ud83d\udc2f YFG Comical Nodes", - "title": "\ud83d\udc2f YFG Comical Nodes", - "title_aux": "\ud83d\ude38 YFG Comical Nodes" - } - ], - "https://github.com/gorillaframeai/GF_nodes": [ - [ - "GFrbmg2" - ], - { - "title_aux": "GFrbmg2" - } - ], - "https://github.com/gremlation/ComfyUI-ImageLabel": [ - [ - "gremlation:ComfyUI-ImageLabel:ImageLabel" - ], - { - "title_aux": "ComfyUI-ImageLabel" - } - ], - "https://github.com/gremlation/ComfyUI-JMESPath": [ - [ - "gremlation:ComfyUI-JMESPath" - ], - { - "title_aux": "ComfyUI-JMESPath" - } - ], - "https://github.com/gremlation/ComfyUI-ViewData": [ - [ - "gremlation:ComfyUI-ViewData:ViewData" - ], - { - "title_aux": "ComfyUI-ViewData" - } - ], - "https://github.com/gremlation/ComfyUI-jq": [ - [ - "gremlation:ComfyUI-jq" - ], - { - "title_aux": "ComfyUI-jq" - } - ], - "https://github.com/griptape-ai/ComfyUI-Griptape": [ - [ - "Griptape Agent Config: Amazon Bedrock Drivers", - "Griptape Agent Config: Amazon Bedrock [DEPRECATED]", - "Griptape Agent Config: Anthropic Drivers", - "Griptape Agent Config: Anthropic [DEPRECATED]", - "Griptape Agent Config: Azure OpenAI Drivers", - "Griptape Agent Config: Azure OpenAI [DEPRECATED]", - "Griptape Agent Config: Cohere Drivers", - "Griptape Agent Config: Custom Structure", - "Griptape Agent Config: Environment Variables", - "Griptape Agent Config: Expand", - "Griptape Agent Config: Google Drivers", - "Griptape Agent Config: Google [DEPRECATED]", - "Griptape Agent Config: Groq Drivers", - "Griptape Agent Config: HuggingFace Drivers", - "Griptape Agent Config: HuggingFace [DEPRECATED]", - "Griptape Agent Config: LM Studio Drivers", - "Griptape Agent Config: LM Studio [DEPRECATED]", - "Griptape Agent Config: Ollama Drivers", - "Griptape Agent Config: Ollama [DEPRECATED]", - "Griptape Agent Config: OpenAI Compatible Drivers", - "Griptape Agent Config: OpenAI Compatible [DEPRECATED]", - "Griptape Agent Config: OpenAI Drivers", - "Griptape Agent Config: OpenAI [DEPRECATED]", - "Griptape Audio Transcription Driver: Groq", - "Griptape Audio Transcription Driver: OpenAI", - "Griptape Code: Run Griptape Cloud Structure", - "Griptape Code: Run Python", - "Griptape Combine: Merge Inputs", - "Griptape Combine: Merge Texts", - "Griptape Combine: RAG Module List", - "Griptape Combine: Rules List", - "Griptape Combine: Tool List", - "Griptape Config: Environment Variables", - "Griptape Convert: Agent to Tool", - "Griptape Convert: Text to CLIP Encode", - "Griptape Convert: Text to Combo", - "Griptape Create: Agent", - "Griptape Create: Agent from Config", - "Griptape Create: CLIP Text Encode", - "Griptape Create: Image Inpainting Variation", - "Griptape Create: Image Variation", - "Griptape Create: Image from Text", - "Griptape Create: Rules", - "Griptape Create: Text", - "Griptape Display: Artifact", - "Griptape Display: Data as Text", - "Griptape Display: Image", - "Griptape Display: Text", - "Griptape Driver: Amazon Bedrock Stable Diffusion", - "Griptape Driver: Amazon Bedrock Titan", - "Griptape Driver: Azure OpenAI Image Generation", - "Griptape Driver: Black Forest Labs Image Generation", - "Griptape Driver: Leonardo.AI", - "Griptape Driver: OpenAI Compatible Image Generation", - "Griptape Driver: OpenAI Image Generation", - "Griptape Embedding Driver: Amazon Bedrock Titan", - "Griptape Embedding Driver: Amazon SageMaker Jumpstart", - "Griptape Embedding Driver: Azure OpenAI", - "Griptape Embedding Driver: Cohere", - "Griptape Embedding Driver: Google", - "Griptape Embedding Driver: HuggingFace", - "Griptape Embedding Driver: LM Studio", - "Griptape Embedding Driver: Ollama", - "Griptape Embedding Driver: OpenAI", - "Griptape Embedding Driver: OpenAI Compatible", - "Griptape Embedding Driver: Voyage AI", - "Griptape Expand: Agent Nodes", - "Griptape Load: Audio", - "Griptape Load: Image From URL", - "Griptape Load: Text", - "Griptape Prompt Driver: Amazon Bedrock", - "Griptape Prompt Driver: Amazon SageMaker Jumpstart", - "Griptape Prompt Driver: Anthropic", - "Griptape Prompt Driver: Azure OpenAI", - "Griptape Prompt Driver: Cohere", - "Griptape Prompt Driver: Google", - "Griptape Prompt Driver: Groq", - "Griptape Prompt Driver: HuggingFace", - "Griptape Prompt Driver: LM Studio", - "Griptape Prompt Driver: Ollama", - "Griptape Prompt Driver: OpenAI", - "Griptape Prompt Driver: OpenAI Compatible", - "Griptape RAG Query: Translate Module", - "Griptape RAG Rerank: Text Chunks Module", - "Griptape RAG Response: Footnote Prompt Module", - "Griptape RAG Response: Prompt Module", - "Griptape RAG Response: Text Chunks Module", - "Griptape RAG Retrieve: Text Loader Module", - "Griptape RAG Retrieve: Vector Store Module", - "Griptape RAG: Engine", - "Griptape Replace: Rulesets on Agent", - "Griptape Replace: Tools on Agent", - "Griptape Rerank Driver: Cohere", - "Griptape Run: Agent", - "Griptape Run: Audio Transcription", - "Griptape Run: Image Description", - "Griptape Run: Parallel Image Description", - "Griptape Run: Prompt Task", - "Griptape Run: Task", - "Griptape Run: Text Extraction", - "Griptape Run: Text Summary", - "Griptape Run: Text to Speech", - "Griptape Run: Tool Task", - "Griptape Run: Toolkit Task", - "Griptape Save: Text", - "Griptape Set: Default Agent", - "Griptape Text To Speech Driver: ElevenLabs", - "Griptape Text To Speech Driver: OpenAI", - "Griptape Tool: Audio Transcription", - "Griptape Tool: Calculator", - "Griptape Tool: DateTime", - "Griptape Tool: Extraction", - "Griptape Tool: FileManager", - "Griptape Tool: Griptape Cloud KnowledgeBase", - "Griptape Tool: Prompt Summary", - "Griptape Tool: Query", - "Griptape Tool: RAG", - "Griptape Tool: Text to Speech", - "Griptape Tool: VectorStore", - "Griptape Tool: WebScraper", - "Griptape Tool: WebSearch", - "Griptape Util: Create Agent Modelfile", - "Griptape Util: Create Model from Modelfile", - "Griptape Util: Remove Ollama Model", - "Griptape Util: Switch Node", - "Griptape Vector Store Driver: Amazon OpenSearch", - "Griptape Vector Store Driver: Azure MongoDB", - "Griptape Vector Store Driver: Griptape Cloud", - "Griptape Vector Store Driver: Local", - "Griptape Vector Store Driver: Marqo", - "Griptape Vector Store Driver: MongoDB Atlas", - "Griptape Vector Store Driver: PGVector", - "Griptape Vector Store Driver: Pinecone", - "Griptape Vector Store Driver: Qdrant", - "Griptape Vector Store Driver: Redis", - "Griptape Vector Store: Add Text", - "Griptape Vector Store: Query", - "Griptape WebSearch Driver: DuckDuckGo", - "Griptape WebSearch Driver: Exa", - "Griptape WebSearch Driver: Google", - "Griptape WebSearch Driver: Serper", - "Griptape WebSearch Driver: Tavily" - ], - { - "author": "Jason Schleifer", - "description": "This extension offers various nodes that allow you to work with LLMs using the Griptape Python Framework (https://griptape.ai)", - "nickname": "ComfyUI-Griptape", - "title": "ComfyUI Griptape Nodes", - "title_aux": "ComfyUI Griptape Nodes" - } - ], - "https://github.com/gseth/ControlAltAI-Nodes": [ - [ - "BooleanBasic", - "BooleanReverse", - "ChooseUpscaleModel", - "FluxAttentionCleanup", - "FluxAttentionControl", - "FluxControlNetApply", - "FluxResolutionNode", - "FluxSampler", - "FluxUnionControlNetApply", - "GetImageSizeRatio", - "IntegerSettings", - "NoisePlusBlend", - "RegionMaskConditioning", - "RegionMaskGenerator", - "RegionMaskProcessor", - "RegionMaskValidator", - "RegionOverlayVisualizer" - ], - { - "title_aux": "ControlAltAI Nodes" - } - ], - "https://github.com/gt732/ComfyUI-DreamWaltz-G": [ - [ - "DreamWaltzGStageOneTrainer", - "DreamWaltzGStageTwoTrainer" - ], - { - "title_aux": "ComfyUI-DreamWaltz-G" - } - ], - "https://github.com/guill/abracadabra-comfyui": [ - [ - "AbracadabraNode", - "AbracadabraNodeDefSummary" - ], - { - "title_aux": "abracadabra-comfyui" - } - ], - "https://github.com/guyaton/guy-nodes-comfyui": [ - [ - "GuyRecommendedLatentResCalc" - ], - { - "title_aux": "guy-nodes-comfyui" - } - ], - "https://github.com/hackkhai/ComfyUI-Image-Matting": [ - [ - "ApplyMatting", - "CreateTrimap", - "MattingModelLoader" - ], - { - "title_aux": "ComfyUI-Image-Matting" - } - ], - "https://github.com/hanoixan/ComfyUI-DataBeast": [ - [ - "DBConvertToBoolean //DataBeast", - "DBConvertToFloat //DataBeast", - "DBConvertToInt //DataBeast", - "DBConvertToString //DataBeast", - "DBFloatExpression //DataBeast", - "DBGetBatchList //DataBeast", - "DBGetItem //DataBeast", - "DBLoadData //DataBeast", - "DBStringExpression //DataBeast" - ], - { - "author": "hanoixan", - "description": "This extension provides nodes for controlling data-driven processing in Comfy-UI", - "nickname": "DataBeast", - "title": "DataBeast", - "title_aux": "ComfyUI DataBeast" - } - ], - "https://github.com/haohaocreates/ComfyUI-HH-Image-Selector": [ - [ - "Image Selector" - ], - { - "title_aux": "ComfyUI-HH-Image-Selector" - } - ], - "https://github.com/hay86/ComfyUI_DDColor": [ - [ - "D_DDColor" - ], - { - "title_aux": "ComfyUI DDColor" - } - ], - "https://github.com/hay86/ComfyUI_Dreamtalk": [ - [ - "D_DreamTalk" - ], - { - "title_aux": "ComfyUI Dreamtalk" - } - ], - "https://github.com/hay86/ComfyUI_Hallo": [ - [ - "D_HalloNode" - ], - { - "title_aux": "ComfyUI Hallo" - } - ], - "https://github.com/hay86/ComfyUI_LatentSync": [ - [ - "D_LatentSyncNode" - ], - { - "title_aux": "ComfyUI LatentSync" - } - ], - "https://github.com/hay86/ComfyUI_MiniCPM-V": [ - [ - "D_MiniCPM_VQA" - ], - { - "title_aux": "ComfyUI MiniCPM-V" - } - ], - "https://github.com/hay86/ComfyUI_OpenVoice": [ - [ - "D_OpenVoice_STS", - "D_OpenVoice_TTS", - "D_OpenVoice_TTS_V2" - ], - { - "title_aux": "ComfyUI OpenVoice" - } - ], - "https://github.com/hben35096/ComfyUI-ReplenishNodes": [ - [ - "Batch Image Blend", - "FLOAT Output", - "Fill Alpha", - "Get Batch Count", - "Image Blend BG", - "Integer Output", - "Load CLIP Name", - "Load Ckpt Name", - "Load Lora Name", - "Load Sampler Name", - "Load Scheduler Name", - "Load UNET Name", - "Mask Levels Adjust", - "Multi Line Text", - "Multiple Image Blend", - "RN_MultipleImageBlend_2", - "Seed Output" - ], - { - "title_aux": "ComfyUI-ReplenishNodes" - } - ], - "https://github.com/hben35096/ComfyUI-ToolBox": [ - [ - "AutoDLDownload", - "CreatePaths", - "FolderDeleter", - "FolderViewe", - "PathOutput" - ], - { - "title_aux": "ComfyUI-ToolBox" - } - ], - "https://github.com/heshengtao/comfyui_LLM_party": [ - [ - "About_us", - "AmapRegeoTool", - "AmapWeatherTool", - "Browser_display", - "CLIPTextEncode_party", - "Combine_Videos_party", - "Dingding", - "Dingding_tool", - "EasyOCR_advance", - "EasyOCR_choose", - "FeishuDownloadAudio", - "FeishuDownloadImage", - "FeishuGetHistory", - "FeishuSendMsg", - "FileOnlineDelete_gitee", - "FileOnlineStorage_gitee", - "FilePathExists", - "FolderCleaner", - "GGUFLoader", - "GeocodeTool", - "Image2Video_party", - "Images2Image", - "KG_csv_toolkit_developer", - "KG_csv_toolkit_user", - "KG_json_toolkit_developer", - "KG_json_toolkit_user", - "KG_neo_toolkit_developer", - "KG_neo_toolkit_user", - "KSampler_party", - "LLM", - "LLM_api_loader", - "LLM_local", - "LLM_local_loader", - "LLavaLoader", - "LorapathLoader", - "Lorebook", - "Mcp_tool", - "RSS_loader", - "RSS_tool", - "SpeedChange", - "URL2IMG", - "VAEDecode_party", - "accuweather_tool", - "advance_ebd_tool", - "aisuite_loader", - "any2str", - "any_switcher", - "api_function", - "api_tool", - "arxiv_tool", - "bing_loader", - "bing_tool", - "bool_logic", - "browser_use_tool", - "check_text", - "check_web_tool", - "classify_function", - "classify_function_plus", - "classify_persona", - "classify_persona_plus", - "clear_file", - "clear_model", - "custom_persona", - "custom_string_format", - "dall_e_tool", - "discord_bot", - "discord_file_monitor", - "discord_send", - "duckduckgo_loader", - "duckduckgo_tool", - "easy_GGUFLoader", - "easy_LLM_api_loader", - "easy_LLM_local_loader", - "easy_LLavaLoader", - "easy_load_llm_lora", - "easy_vlmLoader", - "ebd_tool", - "embeddings_function", - "end_anything", - "end_dialog", - "end_workflow", - "extra_parameters", - "feishu", - "feishu_tool", - "file_combine", - "file_combine_plus", - "file_path_iterator", - "files_read_tool", - "fish_tts", - "fish_whisper", - "flux_persona", - "genai_api_loader", - "get_string", - "github_tool", - "google_loader", - "google_tool", - "got_ocr", - "gpt_sovits", - "graph_md_to_html", - "html2img_function", - "ic_lora_persona", - "image_iterator", - "img2path", - "img_hosting", - "interpreter_function", - "interpreter_tool", - "interrupt_loop", - "json2text", - "json_extractor", - "json_get_value", - "json_iterator", - "json_parser", - "json_writing", - "keyword_tool", - "list_append", - "list_append_plus", - "list_extend", - "list_extend_plus", - "listen_audio", - "load_SQL_memo", - "load_bool", - "load_ebd", - "load_excel", - "load_file", - "load_file_folder", - "load_float", - "load_img_path", - "load_int", - "load_keyword", - "load_llm_lora", - "load_memo", - "load_name", - "load_openai_ebd", - "load_persona", - "load_redis_memo", - "load_url", - "load_wikipedia", - "md_to_excel", - "md_to_html", - "mini_error_correction", - "mini_flux_prompt", - "mini_flux_tag", - "mini_intent_recognition", - "mini_ocr", - "mini_party", - "mini_sd_prompt", - "mini_sd_tag", - "mini_story", - "mini_summary", - "mini_translate", - "none2false", - "omost_decode", - "omost_json2py", - "omost_setting", - "open_url_function", - "open_url_tool", - "openai_dall_e", - "openai_ebd_tool", - "openai_tts", - "openai_whisper", - "parameter_combine", - "parameter_combine_plus", - "parameter_function", - "path2img_tool", - "red_book_text_persona", - "replace_string", - "save_SQL_memo", - "save_ebd_database", - "save_memo", - "save_openai_ebd", - "save_redis_memo", - "savepersona", - "searxng_tool", - "send_to_wechat_official", - "show_text_party", - "sql_tool", - "srt2txt", - "start_anything", - "start_dialog", - "start_workflow", - "story_json_tool", - "str2float", - "str2int", - "string_combine", - "string_combine_plus", - "string_logic", - "substring", - "svg2html", - "svg2img_function", - "text2json", - "text2parameters", - "text_iterator", - "text_writing", - "time_sleep", - "time_tool", - "tool_combine", - "tool_combine_plus", - "translate_persona", - "txt2srt", - "url2img_tool", - "vlmLoader", - "weekday_tool", - "whisper_local", - "wikipedia_tool", - "work_wechat", - "work_wechat_tool", - "workflow_tool", - "workflow_transfer", - "workflow_transfer_v2" - ], - { - "title_aux": "comfyui_LLM_party" - } - ], - "https://github.com/heshengtao/comfyui_LLM_schools": [ - [ - "CausalLM_trainer", - "IA3_Arguments", - "LLM_Arguments", - "Lora_or_adapter_Arguments", - "P_or_Prompt_Arguments", - "Prefix_Arguments", - "download_dataset", - "get_dataset_name", - "split_dataset" - ], - { - "title_aux": "comfyui_LLM_schools" - } - ], - "https://github.com/hhhzzyang/Comfyui_Lama": [ - [ - "LamaApply", - "LamaModelLoader", - "YamlConfigLoader" - ], - { - "title_aux": "Comfyui-Lama" - } - ], - "https://github.com/hieuck/ComfyUI-BiRefNet": [ - [ - "BiRefNet" - ], - { - "title_aux": "ComfyUI-BiRefNet-Fix utils" - } - ], - "https://github.com/hiforce/comfyui-hiforce-plugin": [ - [ - "HfBoolSwitchKSampleStatus", - "HfImageAutoExpansionSquare", - "HfImageToRGB", - "HfImageToRGBA", - "HfInitImageWithMaxSize", - "HfIterativeLatentUpscale", - "HfLoadImageWithCropper", - "HfLookbackSamplerLoader", - "HfLoopback", - "HfResizeImage", - "HfSampler", - "HfSamplerLoader", - "HfSamplerLoopback", - "HfSaveImage", - "HfSwitchKSampleStatus", - "HfTwoSamplersForMask", - "HfTwoStepSamplers", - "LoadImageFromURL" - ], - { - "title_aux": "Comfyui HiFORCE Plugin" - } - ], - "https://github.com/hinablue/ComfyUI_3dPoseEditor": [ - [ - "Hina.PoseEditor3D" - ], - { - "title_aux": "ComfyUI 3D Pose Editor" - } - ], - "https://github.com/hmwl/ComfyUI_zip": [ - [ - "CleanFolders", - "CompressImages", - "UnzipToInput" - ], - { - "title_aux": "ComfyUI_zip" - } - ], - "https://github.com/hodanajan/optimal-crop-resolution": [ - [ - "AspectRatioCalculator", - "ResolutionMatcher" - ], - { - "title_aux": "optimal-crop-resolution" - } - ], - "https://github.com/holchan/ComfyUI-ModelDownloader": [ - [ - "LoRADownloader", - "ModelDownloader" - ], - { - "title_aux": "ComfyUI-ModelDownloader" - } - ], - "https://github.com/hoveychen/ComfyUI-MusePose-Remaster": [ - [ - "musepose_getposes", - "musepose_inference" - ], - { - "title_aux": "ComfyUI-MusePose-Remaster" - } - ], - "https://github.com/huagetai/ComfyUI-Gaffer": [ - [ - "ApplyICLight", - "CalculateNormalMap", - "GrayScaler", - "ICLightModelLoader", - "LightSource" - ], - { - "title_aux": "comfyui's gaffer(ComfyUI native implementation of IC-Light. )" - } - ], - "https://github.com/huagetai/ComfyUI_LightGradient": [ - [ - "ImageGradient", - "MaskGradient" - ], - { - "title_aux": "Light Gradient for ComfyUI" - } - ], - "https://github.com/huanngzh/ComfyUI-MVAdapter": [ - [ - "BiRefNet", - "ControlImagePreprocessor", - "ControlNetModelLoader", - "DiffusersMVSampler", - "DiffusersModelMakeup", - "DiffusersPipelineLoader", - "DiffusersSampler", - "DiffusersSchedulerLoader", - "DiffusersVaeLoader", - "ImagePreprocessor", - "LdmPipelineLoader", - "LdmVaeLoader", - "LoraModelLoader", - "ViewSelector" - ], - { - "title_aux": "ComfyUI-MVAdapter" - } - ], - "https://github.com/huchenlei/ComfyUI-IC-Light-Native": [ - [ - "ICLightApplyMaskGrey", - "ICLightAppply", - "VAEEncodeArgMax" - ], - { - "title_aux": "ComfyUI-IC-Light-Native" - } - ], - "https://github.com/huchenlei/ComfyUI-layerdiffuse": [ - [ - "LayeredDiffusionApply", - "LayeredDiffusionCondApply", - "LayeredDiffusionCondJointApply", - "LayeredDiffusionDecode", - "LayeredDiffusionDecodeRGBA", - "LayeredDiffusionDecodeSplit", - "LayeredDiffusionDiffApply", - "LayeredDiffusionJointApply" - ], - { - "title_aux": "ComfyUI-layerdiffuse (layerdiffusion)" - } - ], - "https://github.com/huchenlei/ComfyUI-openpose-editor": [ - [ - "huchenlei.LoadOpenposeJSON" - ], - { - "title_aux": "ComfyUI-openpose-editor" - } - ], - "https://github.com/huchenlei/ComfyUI_DanTagGen": [ - [ - "PromptDanTagGen" - ], - { - "title_aux": "ComfyUI_DanTagGen" - } - ], - "https://github.com/huchenlei/ComfyUI_densediffusion": [ - [ - "DenseDiffusionAddCondNode", - "DenseDiffusionApplyNode" - ], - { - "title_aux": "ComfyUI DenseDiffusion" - } - ], - "https://github.com/huchenlei/ComfyUI_omost": [ - [ - "OmostDenseDiffusionLayoutNode", - "OmostGreedyBagsTextEmbeddingNode", - "OmostLLMChatNode", - "OmostLLMHTTPServerNode", - "OmostLLMLoaderNode", - "OmostLayoutCondNode", - "OmostLoadCanvasConditioningNode", - "OmostLoadCanvasPythonCodeNode", - "OmostRenderCanvasConditioningNode" - ], - { - "title_aux": "ComfyUI_omost" - } - ], - "https://github.com/hughescr/ComfyUI-OpenPose-Keypoint-Extractor": [ - [ - "Openpose Keypoint Extractor" - ], - { - "title_aux": "OpenPose Keypoint Extractor" - } - ], - "https://github.com/huixingyun/ComfyUI-HX-Captioner": [ - [ - "HXOllamaCaptioner" - ], - { - "title_aux": "ComfyUI-HX-Captioner" - } - ], - "https://github.com/hustille/ComfyUI_Fooocus_KSampler": [ - [ - "KSampler With Refiner (Fooocus)" - ], - { - "title_aux": "ComfyUI_Fooocus_KSampler" - } - ], - "https://github.com/hustille/ComfyUI_hus_utils": [ - [ - "3way Prompt Styler", - "Batch State", - "Date Time Format", - "Debug Extra", - "Fetch widget value", - "Text Hash" - ], - { - "title_aux": "hus' utils for ComfyUI" - } - ], - "https://github.com/hwhaocool/ComfyUI-Select-Any": [ - [ - "SelectAnyValues" - ], - { - "title_aux": "ComfyUI-Select-Any" - } - ], - "https://github.com/hylarucoder/comfyui-copilot": [ - [ - "EagleImageNode", - "SDXLPromptStyler", - "SDXLPromptStylerAdvanced", - "SDXLResolutionPresets" - ], - { - "title_aux": "comfyui-copilot" - } - ], - "https://github.com/hyunamy/comfy-ui-on-complete-email-me": [ - [ - "OnCompleteEmailMe", - "OnCompletePlaySound", - "OnCompleteWebhook" - ], - { - "title_aux": "Comfy-UI on-complete-email-me" - } - ], - "https://github.com/iFREEGROUP/comfyui-undistort": [ - [ - "IG_LoadCheckerboardImageForCalibrateCamera", - "IG_MatrixAndDistCoefToText", - "IG_Undistort" - ], - { - "title_aux": "comfyui-undistort" - } - ], - "https://github.com/iamandeepsandhu/ComfyUI-NSFW-Check": [ - [ - "NSFWScore" - ], - { - "title_aux": "NSFW Check for ComfyUI" - } - ], - "https://github.com/icesun963/ComfyUI_HFDownLoad": [ - [ - "Apply EasyOCR V2", - "HFDownLoad_Tool", - "LayerMask: SegmentAnythingUltra V2.1", - "LayerUtility: LaMa V2" - ], - { - "author": "chflame", - "description": "A set of nodes for ComfyUI that can composite layer and mask to achieve Photoshop like functionality.", - "nickname": "LayerStyle", - "title": "LayerStyle", - "title_aux": "HFDownLoad Node for ComfyUI" - } - ], - "https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words": [ - [ - "FusionText", - "LoraListNames", - "LoraLoaderAdvanced", - "LoraLoaderStackedAdvanced", - "LoraLoaderStackedVanilla", - "LoraLoaderVanilla", - "LoraTagsOnly", - "Randomizer", - "TagsFormater", - "TagsSelector", - "TextInputBasic" - ], - { - "title_aux": "ComfyUI-Lora-Auto-Trigger-Words" - } - ], - "https://github.com/iemesowum/ComfyUI_IsaacNodes": [ - [ - "I_AmplitudeToWeights", - "I_BinaryAmplitudeGate", - "I_UnmixAudio", - "I_WeightsListToWeights" - ], - { - "author": "Isaac Emesowum", - "description": "This extension offers automatic drums extraction from audio files, as well as a few helper nodes to support my audio synchronization AnimateDiff workflows.", - "nickname": "Isaac's Nodes", - "title": "Isaac's Nodes", - "title_aux": "Isaac's Nodes" - } - ], - "https://github.com/if-ai/ComfyUI-IF_AI_HFDownloaderNode": [ - [ - "IF_HFDownload", - "IF_HFDownloadNode" - ], - { - "title_aux": "ComfyUI-IF_AI_HFDownloaderNode" - } - ], - "https://github.com/if-ai/ComfyUI-IF_AI_WishperSpeechNode": [ - [ - "IF_WhisperSpeech" - ], - { - "title_aux": "ComfyUI-IF_AI_WishperSpeechNode" - } - ], - "https://github.com/if-ai/ComfyUI-IF_AI_tools": [ - [ - "IF_ChatPrompt", - "IF_DisplayOmni", - "IF_DisplayText", - "IF_DisplayTextWildcard", - "IF_ImagePrompt", - "IF_JoinText", - "IF_LoadImagesS", - "IF_PromptMkr", - "IF_SaveText", - "IF_StepCounter", - "IF_TextTyper", - "IF_VisualizeGraph", - "IF_tools_LoadImagesS" - ], - { - "title_aux": "ComfyUI-IF_AI_tools" - } - ], - "https://github.com/if-ai/ComfyUI-IF_MemoAvatar": [ - [ - "IF_MemoAvatar", - "IF_MemoCheckpointLoader" - ], - { - "title_aux": "ComfyUI-IF_MemoAvatar" - } - ], - "https://github.com/if-ai/ComfyUI-IF_Trellis": [ - [ - "IF_TrellisCheckpointLoader", - "IF_TrellisImageTo3D" - ], - { - "title_aux": "ComfyUI-IF_Trellis" - } - ], - "https://github.com/ihmily/ComfyUI-Light-Tool": [ - [ - "Light-Tool: AddBackground", - "Light-Tool: AddBackgroundV2", - "Light-Tool: BoundingBoxCropping", - "Light-Tool: GetImageSize", - "Light-Tool: ImageConcat", - "Light-Tool: ImageMaskApply", - "Light-Tool: ImageOverlay", - "Light-Tool: ImageToMask", - "Light-Tool: InputText", - "Light-Tool: InputTextList", - "Light-Tool: InvertMask", - "Light-Tool: IsTransparent", - "Light-Tool: LoadImage", - "Light-Tool: LoadImageFromURL", - "Light-Tool: LoadImagesFromDir", - "Light-Tool: MaskBoundingBoxCropping", - "Light-Tool: MaskContourExtractor", - "Light-Tool: MaskImageToTransparent", - "Light-Tool: MaskToImage", - "Light-Tool: PhantomTankEffect", - "Light-Tool: PreviewVideo", - "Light-Tool: RGB2RGBA", - "Light-Tool: RGBA2RGB", - "Light-Tool: ResizeImage", - "Light-Tool: SaveToAliyunOSS", - "Light-Tool: SaveVideo", - "Light-Tool: ShowText", - "Light-Tool: SimpleImageOverlay", - "Light-Tool: SolidColorBackground", - "Light-Tool: TextConnect" - ], - { - "author": "Hmily", - "description": "An awesome light image processing tool nodes for ComfyUI.", - "nickname": "ComfyUI-Light-Tool", - "title": "ComfyUI-Light-Tool", - "title_aux": "ComfyUI-Light-Tool" - } - ], - "https://github.com/imb101/ComfyUI-FaceSwap": [ - [ - "FaceSwapNode" - ], - { - "title_aux": "FaceSwap" - } - ], - "https://github.com/inflamously/comfyui-prompt-enhancer": [ - [ - "PROMPT_ENHANCER", - "PROMPT_ENHANCER_CHAIN_CONTROL", - "PROMPT_ENHANCER_CHAIN_RANDOM" - ], - { - "title_aux": "comfyui-prompt-enhancer" - } - ], - "https://github.com/injet-zhou/comfyui_extra_api": [ - [ - "SimpleGenImageInterface" - ], - { - "title_aux": "comfyui_extra_api" - } - ], - "https://github.com/inventorado/ComfyUI_NNT": [ - [ - "NntAnalyzeInferenceMetrics", - "NntAnalyzeModel", - "NntCompileModel", - "NntDatasetToImageTensor", - "NntDatasetToTargetTensor", - "NntDatasetToTensor", - "NntDatasetToTextTensor", - "NntDefineActivationLayer", - "NntDefineAlibiPositionalBias", - "NntDefineConvLayer", - "NntDefineDenseLayer", - "NntDefineFlattenLayer", - "NntDefineGRULayer", - "NntDefineLSTMLayer", - "NntDefineLinearAttention", - "NntDefineLocalAttention", - "NntDefineMultiheadAttention", - "NntDefineNormLayer", - "NntDefinePoolingLayer", - "NntDefinePositionalEncoding", - "NntDefineRNNLayer", - "NntDefineReformerAttention", - "NntDefineRelativePositionBias", - "NntDefineReshapeLayer", - "NntDefineRotaryPositionalEmbedding", - "NntDefineTransformerEncoderLayer", - "NntDefineTransformerXLAttention", - "NntDefineVanillaAttention", - "NntEditModelLayers", - "NntEvaluatePredictions", - "NntFileLoader", - "NntFineTuneModel", - "NntHuggingFaceDataLoader", - "NntImageToTensor", - "NntInference", - "NntInputLayer", - "NntLoadModel", - "NntMergeExtendModel", - "NntPlotTensors", - "NntRandomTensorGenerator", - "NntSHAPSummaryNode", - "NntSaveModel", - "NntShowLayerStack", - "NntShowModelInfo", - "NntTensorElementToImage", - "NntTensorOperations", - "NntTensorSlice", - "NntTensorToText", - "NntTextBatchProcessor", - "NntTextToTensor", - "NntTimeSeriesDataLoader", - "NntTorchvisionDataLoader", - "NntTorchvisionDatasets", - "NntTrainModel", - "NntTrainingHyperparameters", - "NntVisualizeConfidenceScores", - "NntVisualizeGraph", - "NntVisualizePredictionMetrics", - "NntVisualizeTrainingMetrics" - ], - { - "title_aux": "ComfyUI Neural Network Toolkit NNT " - } - ], - "https://github.com/iwanders/ComfyUI_nodes": [ - [ - "IW_JsonPickItem", - "IW_ModelHook", - "IW_StringConcat", - "IW_StringFromInt", - "IW_StringNode", - "IW_StringPrint", - "IW_StringReplace", - "IW_StringSave", - "IW_TokenizerVocab" - ], - { - "title_aux": "iwanders/ComfyUI_nodes" - } - ], - "https://github.com/jacklukai/ComfyUI_DeployCash": [ - [ - "DeployCash", - "DeployCash_saveImage", - "DeployCash_textInput" - ], - { - "title_aux": "ComfyUI_DeployCash" - } - ], - "https://github.com/jags111/ComfyUI_Jags_Audiotools": [ - [ - "BatchJoinAudio", - "BatchToList", - "BitCrushAudioFX", - "BulkVariation", - "ChorusAudioFX", - "ClippingAudioFX", - "CompressorAudioFX", - "ConcatAudioList", - "ConvolutionAudioFX", - "CutAudio", - "DelayAudioFX", - "DistortionAudioFX", - "DuplicateAudio", - "GainAudioFX", - "GenerateAudioSample", - "GenerateAudioWave", - "GetAudioFromFolderIndex", - "GetSingle", - "GetStringByIndex", - "HighShelfFilter", - "HighpassFilter", - "ImageToSpectral", - "InvertAudioFX", - "JoinAudio", - "LadderFilter", - "LimiterAudioFX", - "ListToBatch", - "LoadAudioDir", - "LoadAudioFile", - "LoadAudioModel (DD)", - "LoadVST3", - "LowShelfFilter", - "LowpassFilter", - "MP3CompressorAudioFX", - "MixAudioTensors", - "NoiseGateAudioFX", - "OTTAudioFX", - "PeakFilter", - "PhaserEffectAudioFX", - "PitchShiftAudioFX", - "PlotSpectrogram", - "PreviewAudioFile", - "PreviewAudioTensor", - "ResampleAudio", - "ReverbAudioFX", - "ReverseAudio", - "SaveAudioTensor", - "SequenceVariation", - "SliceAudio", - "SoundPlayer", - "StretchAudio", - "samplerate" - ], - { - "author": "jags111", - "description": "This extension offers various audio generation tools", - "nickname": "Audiotools", - "title": "Jags_Audiotools", - "title_aux": "Jags_Audiotools" - } - ], - "https://github.com/jags111/ComfyUI_Jags_VectorMagic": [ - [ - "CircularVAEDecode", - "JagsCLIPSeg", - "JagsClipseg", - "JagsCombineMasks", - "SVG", - "YoloSEGdetectionNode", - "YoloSegNode", - "color_drop", - "xy_Tiling_KSampler" - ], - { - "author": "jags111", - "description": "This extension offers various vector manipulation and generation tools", - "nickname": "Jags_VectorMagic", - "title": "Jags_VectorMagic", - "title_aux": "Jags_VectorMagic" - } - ], - "https://github.com/jags111/efficiency-nodes-comfyui": [ - [ - "AnimateDiff Script", - "Apply ControlNet Stack", - "Control Net Stacker", - "Eff. Loader SDXL", - "Efficient Loader", - "HighRes-Fix Script", - "Image Overlay", - "Join XY Inputs of Same Type", - "KSampler (Efficient)", - "KSampler Adv. (Efficient)", - "KSampler SDXL (Eff.)", - "LatentUpscaler", - "LoRA Stack to String converter", - "LoRA Stacker", - "Manual XY Entry Info", - "NNLatentUpscale", - "Noise Control Script", - "Pack SDXL Tuple", - "Tiled Upscaler Script", - "Unpack SDXL Tuple", - "XY Input: Add/Return Noise", - "XY Input: Aesthetic Score", - "XY Input: CFG Scale", - "XY Input: Checkpoint", - "XY Input: Clip Skip", - "XY Input: Control Net", - "XY Input: Control Net Plot", - "XY Input: Denoise", - "XY Input: LoRA", - "XY Input: LoRA Plot", - "XY Input: LoRA Stacks", - "XY Input: Manual XY Entry", - "XY Input: Prompt S/R", - "XY Input: Refiner On/Off", - "XY Input: Sampler/Scheduler", - "XY Input: Seeds++ Batch", - "XY Input: Steps", - "XY Input: VAE", - "XY Plot" - ], - { - "title_aux": "Efficiency Nodes for ComfyUI Version 2.0+" - } - ], - "https://github.com/jakechai/ComfyUI-JakeUpgrade": [ - [ - "Animation Prompt JK", - "Animation Value JK", - "Base Image Parameters Extract JK", - "Base Model Parameters Extract JK", - "Base Model Parameters JK", - "Base Model Parameters SD3API JK", - "Base Model Pipe Extract JK", - "Base Model Pipe JK", - "Bool Binary And JK", - "Bool Binary OR JK", - "CM_BoolBinaryOperation JK", - "CM_BoolToInt JK", - "CM_BoolUnaryOperation JK", - "CM_BreakoutVec2 JK", - "CM_BreakoutVec3 JK", - "CM_BreakoutVec4 JK", - "CM_ComposeVec2 JK", - "CM_ComposeVec3 JK", - "CM_ComposeVec4 JK", - "CM_FloatBinaryCondition JK", - "CM_FloatBinaryOperation JK", - "CM_FloatToInt JK", - "CM_FloatToNumber JK", - "CM_FloatUnaryCondition JK", - "CM_FloatUnaryOperation JK", - "CM_IntBinaryCondition JK", - "CM_IntBinaryOperation JK", - "CM_IntToBool JK", - "CM_IntToFloat JK", - "CM_IntToNumber JK", - "CM_IntUnaryCondition JK", - "CM_IntUnaryOperation JK", - "CM_NumberBinaryCondition JK", - "CM_NumberBinaryOperation JK", - "CM_NumberToFloat JK", - "CM_NumberToInt JK", - "CM_NumberUnaryCondition JK", - "CM_NumberUnaryOperation JK", - "CM_PromptCombine_JK", - "CM_StringBinaryCondition_JK", - "CM_Vec2BinaryCondition JK", - "CM_Vec2BinaryOperation JK", - "CM_Vec2FloatOperation_JK", - "CM_Vec2ToFloatBinaryOperation JK", - "CM_Vec2ToFloatUnaryOperation JK", - "CM_Vec2UnaryCondition JK", - "CM_Vec2UnaryOperation JK", - "CM_Vec3BinaryCondition JK", - "CM_Vec3BinaryOperation JK", - "CM_Vec3FloatOperation_JK", - "CM_Vec3ToFloatBinaryOperation JK", - "CM_Vec3ToFloatUnaryOperation JK", - "CM_Vec3UnaryCondition JK", - "CM_Vec3UnaryOperation JK", - "CM_Vec4BinaryCondition JK", - "CM_Vec4BinaryOperation JK", - "CM_Vec4FloatOperation_JK", - "CM_Vec4ToFloatBinaryOperation JK", - "CM_Vec4ToFloatUnaryOperation JK", - "CM_Vec4UnaryCondition JK", - "CM_Vec4UnaryOperation JK", - "CR Apply ControlNet JK", - "CR Apply LoRA Stack JK", - "CR Apply Multi-ControlNet Adv JK", - "CR Apply Multi-ControlNet JK", - "CR Aspect Ratio JK", - "CR Boolean JK", - "CR Clip Input Switch JK", - "CR Conditioning Input Switch JK", - "CR ControlNet Input Switch JK", - "CR ControlNet Loader JK", - "CR ControlNet Stack Input Switch JK", - "CR Float Input Switch JK", - "CR Guider Input Switch JK", - "CR Image Input Switch JK", - "CR Impact Pipe Input Switch JK", - "CR Int Input Switch JK", - "CR Latent Input Switch JK", - "CR LoRA Stack JK", - "CR Load LoRA JK", - "CR Mask Input Switch JK", - "CR Mesh Input Switch JK", - "CR Model Input Switch JK", - "CR Multi-ControlNet Param Stack JK", - "CR Multi-ControlNet Stack JK", - "CR Noise Input Switch JK", - "CR Obit Pose Input Switch JK", - "CR Orbit Pose Input Switch JK", - "CR Pipe Input Switch JK", - "CR Ply Input Switch JK", - "CR SD1.5 Aspect Ratio JK", - "CR SD3 Aspect Ratio JK", - "CR SDXL Aspect Ratio JK", - "CR Sampler Input Switch JK", - "CR Sigmas Input Switch JK", - "CR Text Input Switch JK", - "CR VAE Input Switch JK", - "Ckpt Loader JK", - "Color Grading JK", - "Detailer Parameters JK", - "Embedding Picker JK", - "Embedding Picker Multi JK", - "Empty Latent Color JK", - "Evaluate Examples JK", - "Evaluate Floats JK", - "Evaluate Ints JK", - "Evaluate Strings JK", - "Get Size JK", - "Guidance Default JK", - "HintImageEnchance JK", - "IPAAdapterFaceIDBatch", - "IPAdapter", - "IPAdapterAdvanced", - "IPAdapterBatch", - "IPAdapterClipVisionEnhancer", - "IPAdapterClipVisionEnhancerBatch", - "IPAdapterCombineEmbeds", - "IPAdapterCombineParams", - "IPAdapterCombineWeights", - "IPAdapterEmbeds", - "IPAdapterEmbedsBatch", - "IPAdapterEncoder", - "IPAdapterFaceID", - "IPAdapterFaceIDKolors", - "IPAdapterFromParams", - "IPAdapterInsightFaceLoader", - "IPAdapterLoadEmbeds", - "IPAdapterMS", - "IPAdapterModelLoader", - "IPAdapterNoise", - "IPAdapterPreciseComposition", - "IPAdapterPreciseCompositionBatch", - "IPAdapterPreciseStyleTransfer", - "IPAdapterPreciseStyleTransferBatch", - "IPAdapterPromptScheduleFromWeightsStrategy", - "IPAdapterRegionalConditioning", - "IPAdapterSaveEmbeds", - "IPAdapterStyleComposition", - "IPAdapterStyleCompositionBatch", - "IPAdapterTiled", - "IPAdapterTiledBatch", - "IPAdapterUnifiedLoader", - "IPAdapterUnifiedLoaderCommunity", - "IPAdapterUnifiedLoaderFaceID", - "IPAdapterWeights", - "IPAdapterWeightsFromStrategy", - "Image Crop by Mask Params JK", - "Image Crop by Mask Resolution JK", - "Image Remove Alpha JK", - "Image Resize Mode JK", - "Image Upscale Parameters Extract JK", - "Is Mask Empty JK", - "Ksampler Parameters Default JK", - "Ksampler Parameters JK", - "Latent Crop Offset JK", - "Latent Upscale Parameters Extract JK", - "Load Image With Alpha JK", - "Load Image With Metadata JK", - "Make Image Grid JK", - "Metadata Pipe Extract JK", - "Metadata Pipe JK", - "NodesState JK", - "Noise Injection Parameters JK", - "Noise Injection Pipe Extract JK", - "Orbit Poses JK", - "OrbitLists to OrbitPoses JK", - "OrbitPoses to OrbitLists JK", - "Pipe End JK", - "PrepImageForClipVision", - "Project Setting JK", - "Random Beats JK", - "Refine 1 Parameters Extract JK", - "Refine 2 Parameters Extract JK", - "Refine Model Parameters JK", - "Refine Pipe Extract JK", - "Refine Pipe JK", - "Reroute Ckpt JK", - "Reroute List JK", - "Reroute Resize JK", - "Reroute Sampler JK", - "Reroute String JK", - "Reroute Upscale JK", - "Reroute Vae JK", - "SDXL Target Res JK", - "SDXLPromptStylerAll", - "SDXLPromptStylerHorror", - "SDXLPromptStylerMisc", - "SDXLPromptStylerbyArtist", - "SDXLPromptStylerbyCamera", - "SDXLPromptStylerbyComposition", - "SDXLPromptStylerbyCyberpunkSurrealism", - "SDXLPromptStylerbyDepth", - "SDXLPromptStylerbyDiva", - "SDXLPromptStylerbyEnvironment", - "SDXLPromptStylerbyFantasySetting", - "SDXLPromptStylerbyFilter", - "SDXLPromptStylerbyFocus", - "SDXLPromptStylerbyFooocus", - "SDXLPromptStylerbyImpressionism", - "SDXLPromptStylerbyLighting", - "SDXLPromptStylerbyMarc", - "SDXLPromptStylerbyMileHigh", - "SDXLPromptStylerbyMood", - "SDXLPromptStylerbyMre", - "SDXLPromptStylerbyMythicalCreature", - "SDXLPromptStylerbyOriginal", - "SDXLPromptStylerbyQuantumRealism", - "SDXLPromptStylerbySai", - "SDXLPromptStylerbySteamPunkRealism", - "SDXLPromptStylerbySubject", - "SDXLPromptStylerbySurrealism", - "SDXLPromptStylerbyTheme", - "SDXLPromptStylerbyTimeofDay", - "SDXLPromptStylerbyTwri", - "SDXLPromptStylerbyWyvern", - "SDXLPromptbyCelticArt", - "SDXLPromptbyContemporaryNordicArt", - "SDXLPromptbyFashionArt", - "SDXLPromptbyGothicRevival", - "SDXLPromptbyIrishFolkArt", - "SDXLPromptbyRomanticNationalismArt", - "SDXLPromptbySportsArt", - "SDXLPromptbyStreetArt", - "SDXLPromptbyVikingArt", - "SDXLPromptbyWildlifeArt", - "Sampler Loader JK", - "Save Image with Metadata Flow JK", - "Save Image with Metadata JK", - "Scale To Resolution JK", - "Split Image Grid JK", - "Stability Conservative Upscale", - "Stability Control Sketch", - "Stability Control Structure", - "Stability Control Style", - "Stability Creative Upscale", - "Stability Erase", - "Stability Fast Upscale", - "Stability Image Core", - "Stability Image Ultra", - "Stability Inpainting", - "Stability Outpainting", - "Stability Remove Background", - "Stability Replace Background and Relight", - "Stability SD3", - "Stability Search And Recolor", - "Stability Search and Replace", - "String To Combo JK", - "Tiling Mode JK", - "Upscale Method JK", - "Upscale Model Loader JK", - "Upscale Model Parameters Extract JK", - "Upscale Model Parameters JK", - "Vae Loader JK" - ], - { - "title_aux": "ComfyUI-JakeUpgrade" - } - ], - "https://github.com/jamal-alkharrat/ComfyUI_rotate_image": [ - [ - "RotateImage" - ], - { - "title_aux": "ComfyUI_rotate_image" - } - ], - "https://github.com/jamesWalker55/comfyui-p2ldgan": [ - [ - "P2LDGAN" - ], - { - "title_aux": "ComfyUI - P2LDGAN Node" - } - ], - "https://github.com/jamesWalker55/comfyui-various": [ - [ - "BatchLoadImage", - "BatchSaveImage", - "GroupInfoExtractFloat", - "GroupInfoExtractInt", - "GroupLoadBatchImages", - "GroupLoadImage", - "JWDatetimeString", - "JWImageBatchCount", - "JWImageContrast", - "JWImageExtractFromBatch", - "JWImageFlip", - "JWImageLevels", - "JWImageLoadRGB", - "JWImageLoadRGBA", - "JWImageLoadRGBA From Clipboard", - "JWImageLoadRGBFromClipboard", - "JWImageLoadRGBIfExists", - "JWImageMix", - "JWImageResize", - "JWImageResizeByFactor", - "JWImageResizeByLongerSide", - "JWImageResizeByShorterSide", - "JWImageResizeToSquare", - "JWImageSaturation", - "JWImageSaveToPath", - "JWImageSequenceExtractFromBatch", - "JWImageStackChannels", - "JWInfoHashExtractFloat", - "JWInfoHashExtractInteger", - "JWInfoHashExtractString", - "JWInfoHashFromInfoHashList", - "JWInfoHashFromRangedInfo", - "JWInfoHashListExtractStringList", - "JWInfoHashListFromRangedInfo", - "JWInfoHashPrint", - "JWLoadImageSequence", - "JWLoadImagesFromString", - "JWLoopImageSequence", - "JWMaskLikeImageSize", - "JWMaskResize", - "JWMaskSequenceApplyToLatent", - "JWMaskSequenceFromMask", - "JWMaskSequenceJoin", - "JWPrintFloat", - "JWPrintImage", - "JWPrintInteger", - "JWPrintLatent", - "JWPrintMask", - "JWPrintString", - "JWRangedInfoCalculateSubBatch", - "JWReferenceOnly", - "JWSaveImageSequence", - "JWStringListCLIPEncode", - "JWStringListFromString", - "JWStringListFromStrings", - "JWStringListJoin", - "JWStringListRepeat", - "JWStringListToFormatedString", - "JWStringListToString", - "JWUncropCrop", - "JWUncropNewRect", - "JWUncropUncrop", - "JamesLoadImageGroup", - "RAFTEstimate", - "RAFTFlowToImage", - "RAFTLoadFlowFromEXRChannels", - "RCReceiveFloat", - "RCReceiveFloatList", - "RCReceiveInt", - "RCReceiveIntList", - "RCReceiveLatent", - "RCSendLatent" - ], - { - "nodename_pattern": "^JW", - "title_aux": "Various ComfyUI Nodes by Type" - } - ], - "https://github.com/jammyfu/ComfyUI_PaintingCoderUtils": [ - [ - "ClickPopup", - "ColorPicker", - "PaintingCoder::DynamicImageCombiner", - "PaintingCoder::DynamicMaskCombiner", - "PaintingCoder::ImageLatentCreator", - "PaintingCoder::ImageLatentCreatorPlus", - "PaintingCoder::ImageResolutionAdjuster", - "PaintingCoder::ImageSizeCreator", - "PaintingCoder::ImageSizeCreatorPlus", - "PaintingCoder::ImageSwitch", - "PaintingCoder::ImageToBase64", - "PaintingCoder::LatentSwitch", - "PaintingCoder::MaskPreview", - "PaintingCoder::MaskSwitch", - "PaintingCoder::MultilineTextInput", - "PaintingCoder::RemoveEmptyLinesAndLeadingSpaces", - "PaintingCoder::ShowTextPlus", - "PaintingCoder::SimpleTextInput", - "PaintingCoder::TextCombiner", - "PaintingCoder::TextSwitch", - "PaintingCoder::WebImageLoader", - "RemoveEmptyLinesAndLeadingSpacesAdvance" - ], - { - "title_aux": "Painting Coder Utils" - } - ], - "https://github.com/jax-explorer/comfyui-model-dynamic-loader": [ - [ - "ComfyOnlineSaveFile", - "ComfyOnlineUploadAnything", - "EmbeddingLoader", - "LoadCheckpointFromCivitAI", - "LoadHunyuanLoraFromCivitAI", - "LoadHunyuanLoraFromComfyOnline", - "LoadHunyuanLoraFromHF", - "LoadLoraFromCivitAI", - "LoadLoraFromComfyOnline", - "LoadLoraFromHF", - "SaveAudioAsWav", - "SaveText" - ], - { - "title_aux": "comfyui-model-dynamic-loader" - } - ], - "https://github.com/jax-explorer/fast_video_comfyui": [ - [ - "FastImageListToImageBatch" - ], - { - "title_aux": "fast_video_comfyui" - } - ], - "https://github.com/jeffrey2212/ComfyUI-PonyCharacterPrompt": [ - [ - "Pony Character Prompt Picker" - ], - { - "title_aux": "Pony Character Prompt Picker for ComfyUI" - } - ], - "https://github.com/jeffy5/comfyui-faceless-node": [ - [ - "FacelessFaceRestore", - "FacelessFaceSwap", - "FacelessLoadImageUrl", - "FacelessLoadVideo", - "FacelessLoadVideoImages", - "FacelessLoadVideoUrl", - "FacelessMergeVideos", - "FacelessRemoveBackground", - "FacelessSaveVideo", - "FacelessUploadVideo", - "FacelessVideoFaceRestore", - "FacelessVideoFaceSwap", - "FacelessVideoRemoveBackground" - ], - { - "title_aux": "Faceless Node for ComfyUI" - } - ], - "https://github.com/jerrylongyan/ComfyUI-My-Mask": [ - [ - "MaskToBottonHalfConvexMask", - "MaskToConvexMask" - ], - { - "title_aux": "ComfyUI-My-Mask" - } - ], - "https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [ - [ - "StreamDiffusion_Loader", - "StreamDiffusion_Sampler" - ], - { - "title_aux": "ComfyUI_StreamDiffusion" - } - ], - "https://github.com/jhj0517/ComfyUI-Moondream-Gaze-Detection": [ - [ - "(Down)Load Moondream Model", - "Gaze Detection", - "Gaze Detection Video" - ], - { - "title_aux": "ComfyUI-Moondream-Gaze-Detection" - } - ], - "https://github.com/jhj0517/ComfyUI-jhj-Kokoro-Onnx": [ - [ - "(Down)Load Kokoro Model", - "Kokoro Audio Generator" - ], - { - "title_aux": "ComfyUI jhj Kokoro Onnx" - } - ], - "https://github.com/jiaqianjing/ComfyUI-MidjourneyHub": [ - [ - "MidjourneyActionNode", - "MidjourneyBatchActionNode", - "MidjourneyImagineNode" - ], - { - "title_aux": "ComfyUI-MidjourneyHub" - } - ], - "https://github.com/jiaxiangc/ComfyUI-ResAdapter": [ - [ - "ResAdapterLoader" - ], - { - "title_aux": "ResAdapter for ComfyUI" - } - ], - "https://github.com/jitcoder/lora-info": [ - [ - "ImageFromURL", - "LoraInfo" - ], - { - "title_aux": "LoraInfo" - } - ], - "https://github.com/jjkramhoeft/ComfyUI-Jjk-Nodes": [ - [ - "JjkConcat", - "JjkShowText", - "JjkText", - "SDXLRecommendedImageSize" - ], - { - "title_aux": "ComfyUI-Jjk-Nodes" - } - ], - "https://github.com/jkrauss82/ultools-comfyui": [ - [ - "CLIPTextEncodeWithStats", - "OpenPoseEditorAdv", - "SaveImgAdv", - "SolidMaskAdv" - ], - { - "title_aux": "ULTools for ComfyUI" - } - ], - "https://github.com/jn-jairo/jn_comfyui": [ - [ - "JN_AreaAround", - "JN_AreaInfo", - "JN_AreaNormalize", - "JN_AreaToMask", - "JN_AreaWidthHeight", - "JN_AreaXY", - "JN_AudioArrayToBatch", - "JN_AudioAutoTune", - "JN_AudioBatchToArray", - "JN_AudioCompare", - "JN_AudioConcatenation", - "JN_AudioGetChannels", - "JN_AudioInfo", - "JN_AudioNoiseReduction", - "JN_AudioNormalize", - "JN_AudioPitch", - "JN_AudioPlot", - "JN_AudioReverberation", - "JN_AudioSampleRate", - "JN_AudioSetChannels", - "JN_AudioSlice", - "JN_AudioSpeed", - "JN_AudioSplitChannels", - "JN_AudioStackChannels", - "JN_AudioTempo", - "JN_AudioTrimSilence", - "JN_AudioVolume", - "JN_Blip", - "JN_BlipLoader", - "JN_BooleanOperation", - "JN_Condition", - "JN_CoolDown", - "JN_CoolDownOutput", - "JN_DatetimeFormat", - "JN_DatetimeInfo", - "JN_DatetimeNow", - "JN_Dump", - "JN_DumpOutput", - "JN_Exec", - "JN_ExecOutput", - "JN_FaceCrop", - "JN_FaceRestoreModelLoader", - "JN_FaceRestoreWithModel", - "JN_FirstActive", - "JN_Flow", - "JN_FlowOutput", - "JN_ImageAddBackground", - "JN_ImageAddMask", - "JN_ImageBatch", - "JN_ImageCenterArea", - "JN_ImageCrop", - "JN_ImageGrid", - "JN_ImageInfo", - "JN_ImageRemoveBackground", - "JN_ImageSharpness", - "JN_ImageSquare", - "JN_ImageToMask", - "JN_ImageUncrop", - "JN_KSampler", - "JN_KSamplerAdvancedParams", - "JN_KSamplerFaceRestoreParams", - "JN_KSamplerResizeInputParams", - "JN_KSamplerResizeMaskAreaParams", - "JN_KSamplerResizeOutputParams", - "JN_KSamplerSeamlessParams", - "JN_KSamplerTileParams", - "JN_KeyValue", - "JN_LoadAudioDirectory", - "JN_LoadImageDirectory", - "JN_LogicOperation", - "JN_MaskBatch", - "JN_MaskInfo", - "JN_MaskToArea", - "JN_MaskToImage", - "JN_MathOperation", - "JN_MathOperationArray", - "JN_MeowHrtfAudio3d", - "JN_MeowHrtfModel", - "JN_MeowHrtfPosition", - "JN_MeowLoadVoice", - "JN_MeowSaveVoice", - "JN_MeowSentenceSplit", - "JN_MeowTts", - "JN_MeowTtsAudioToContext", - "JN_MeowTtsCoarse", - "JN_MeowTtsDecode", - "JN_MeowTtsFine", - "JN_MeowTtsLoadContext", - "JN_MeowTtsModel", - "JN_MeowTtsModelCoarse", - "JN_MeowTtsModelEncodec", - "JN_MeowTtsModelFine", - "JN_MeowTtsModelHubert", - "JN_MeowTtsModelSemantic", - "JN_MeowTtsSaveContext", - "JN_MeowTtsSemantic", - "JN_MeowTtsTokenizerHubert", - "JN_MeowVc", - "JN_MeowVcConvertVoice", - "JN_MeowVcEncodeSource", - "JN_MeowVcEncodeTarget", - "JN_MeowVcLoadSpeaker", - "JN_MeowVcModelFreeVC", - "JN_MeowVcModelWavLM", - "JN_MeowVcSaveSpeaker", - "JN_PreviewAudio", - "JN_PreviewImage", - "JN_PreviewMask", - "JN_PrimitiveArrayInfo", - "JN_PrimitiveBatchToArray", - "JN_PrimitiveBoolean", - "JN_PrimitiveFloat", - "JN_PrimitiveInt", - "JN_PrimitivePrompt", - "JN_PrimitiveString", - "JN_PrimitiveStringMultiline", - "JN_PrimitiveStringToArray", - "JN_PrimitiveToArray", - "JN_PrimitiveToBoolean", - "JN_PrimitiveToFloat", - "JN_PrimitiveToInt", - "JN_PrimitiveToString", - "JN_RemBGSession", - "JN_SaveAudio", - "JN_SaveImage", - "JN_Seamless", - "JN_SeamlessBorder", - "JN_SeamlessBorderCrop", - "JN_SelectItem", - "JN_Sleep", - "JN_SleepOutput", - "JN_SliceOperation", - "JN_StopIf", - "JN_StopIfOutput", - "JN_TensorInfo", - "JN_TextConcatenation", - "JN_TextReplace", - "JN_TimedeltaFormat", - "JN_TimedeltaInfo" - ], - { - "title_aux": "JNComfy" - } - ], - "https://github.com/jnxmx/ComfyUI_HuggingFace_Downloader": [ - [ - "HuggingFace Downloader" - ], - { - "title_aux": "ComfyUI_HuggingFace_Downloader" - } - ], - "https://github.com/john-mnz/ComfyUI-Inspyrenet-Rembg": [ - [ - "InspyrenetRembg", - "InspyrenetRembgAdvanced" - ], - { - "title_aux": "ComfyUI-Inspyrenet-Rembg" - } - ], - "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative": [ - [ - "LCMScheduler", - "SamplerLCMAlternative", - "SamplerLCMCycle", - "SamplerLCMDualNoise", - "SamplerLCMDuoFusion", - "SamplerLCMParallel" - ], - { - "title_aux": "ComfyUI-sampler-lcm-alternative" - } - ], - "https://github.com/jordoh/ComfyUI-Deepface": [ - [ - "DeepfaceExtractFaces", - "DeepfaceVerify" - ], - { - "title_aux": "ComfyUI Deepface" - } - ], - "https://github.com/jroc22/ComfyUI-CSV-prompt-builder": [ - [ - "BuildPromptFromCSV" - ], - { - "title_aux": "ComfyUI-CSV-prompt-builder" - } - ], - "https://github.com/jstit/comfyui_custom_node_image": [ - [ - "ImageCropCircle" - ], - { - "title_aux": "comfyui_custom_node_image" - } - ], - "https://github.com/jtrue/ComfyUI-JaRue": [ - [ - "Text2Image_jru", - "YouTube2Prompt_jru" - ], - { - "nodename_pattern": "_jru$", - "title_aux": "ComfyUI-JaRue" - } - ], - "https://github.com/jtydhr88/ComfyUI-Hunyuan3D-1-wrapper": [ - [ - "Hunyuan3D V1 - Image Loader", - "Hunyuan3D V1 - Image2Views", - "Hunyuan3D V1 - Image2Views Pipeline Load", - "Hunyuan3D V1 - Text2Image", - "Hunyuan3D V1 - Text2Image Pipeline Load", - "Hunyuan3D V1 - Views2Mesh", - "Hunyuan3D V1 - Views2Mesh Pipeline Load" - ], - { - "title_aux": "ComfyUI-Hunyuan3D-1-wrapper" - } - ], - "https://github.com/jtydhr88/ComfyUI-LayerDivider": [ - [ - "LayerDivider - Color Base", - "LayerDivider - Divide Layer", - "LayerDivider - Load SAM Mask Generator", - "LayerDivider - Segment Mask" - ], - { - "title_aux": "ComfyUI LayerDivider" - } - ], - "https://github.com/jurdnisglobby/ComfyUI-Jurdns-Groq-Node": [ - [ - "JurdnsGroqAPIPromptEnhancer" - ], - { - "title_aux": "Jurdns Groq API Node" - } - ], - "https://github.com/justUmen/Bjornulf_custom_nodes": [ - [ - "Bjornulf_APIGenerateCivitAI", - "Bjornulf_APIGenerateCivitAIAddLORA", - "Bjornulf_APIGenerateFalAI", - "Bjornulf_APIGenerateFlux", - "Bjornulf_APIGenerateStability", - "Bjornulf_AddLineNumbers", - "Bjornulf_AnythingToFloat", - "Bjornulf_AnythingToInt", - "Bjornulf_AnythingToText", - "Bjornulf_AudioVideoSync", - "Bjornulf_CharacterDescriptionGenerator", - "Bjornulf_CivitAILoraSelector", - "Bjornulf_CivitAILoraSelectorHunyuan", - "Bjornulf_CivitAILoraSelectorPONY", - "Bjornulf_CivitAILoraSelectorSD15", - "Bjornulf_CivitAILoraSelectorSDXL", - "Bjornulf_CivitAIModelSelectorFLUX_D", - "Bjornulf_CivitAIModelSelectorFLUX_S", - "Bjornulf_CivitAIModelSelectorPony", - "Bjornulf_CivitAIModelSelectorSD15", - "Bjornulf_CivitAIModelSelectorSDXL", - "Bjornulf_CombineBackgroundOverlay", - "Bjornulf_CombineImages", - "Bjornulf_CombineTexts", - "Bjornulf_CombineTextsByLines", - "Bjornulf_CombineVideoAudio", - "Bjornulf_ConcatVideos", - "Bjornulf_ConcatVideosFromList", - "Bjornulf_ConvertVideo", - "Bjornulf_EmptyVideoLatentWithSingle", - "Bjornulf_FFmpegConfig", - "Bjornulf_FreeVRAM", - "Bjornulf_GrayscaleTransform", - "Bjornulf_GreenScreenToTransparency", - "Bjornulf_HiResFix", - "Bjornulf_IfElse", - "Bjornulf_ImageBlend", - "Bjornulf_ImageDetails", - "Bjornulf_ImageMaskCutter", - "Bjornulf_ImagesListToVideo", - "Bjornulf_KokoroTTS", - "Bjornulf_LatentResolutionSelector", - "Bjornulf_LineSelector", - "Bjornulf_ListLooper", - "Bjornulf_ListLooperCharacter", - "Bjornulf_ListLooperOutfitFemale", - "Bjornulf_ListLooperOutfitMale", - "Bjornulf_ListLooperScene", - "Bjornulf_ListLooperStyle", - "Bjornulf_LoadImageWithTransparency", - "Bjornulf_LoadImagesFromSelectedFolder", - "Bjornulf_LoadTextFromFolder", - "Bjornulf_LoadTextFromPath", - "Bjornulf_LoaderLoraWithPath", - "Bjornulf_LoopAllLines", - "Bjornulf_LoopBasicBatch", - "Bjornulf_LoopCombosSamplersSchedulers", - "Bjornulf_LoopFloat", - "Bjornulf_LoopImages", - "Bjornulf_LoopInteger", - "Bjornulf_LoopIntegerSequential", - "Bjornulf_LoopLinesSequential", - "Bjornulf_LoopLoraSelector", - "Bjornulf_LoopModelClipVae", - "Bjornulf_LoopModelSelector", - "Bjornulf_LoopSamplers", - "Bjornulf_LoopSchedulers", - "Bjornulf_LoopTexts", - "Bjornulf_LoopWriteText", - "Bjornulf_MergeImagesHorizontally", - "Bjornulf_MergeImagesVertically", - "Bjornulf_OllamaConfig", - "Bjornulf_OllamaImageVision", - "Bjornulf_OllamaSystemJobSelector", - "Bjornulf_OllamaSystemPersonaSelector", - "Bjornulf_OllamaTalk", - "Bjornulf_PassPreviewImage", - "Bjornulf_PauseResume", - "Bjornulf_PickInput", - "Bjornulf_RandomImage", - "Bjornulf_RandomLineFromInput", - "Bjornulf_RandomLoraSelector", - "Bjornulf_RandomModelClipVae", - "Bjornulf_RandomModelSelector", - "Bjornulf_RandomTexts", - "Bjornulf_RemoveTransparency", - "Bjornulf_ResizeImage", - "Bjornulf_ResizeImagePercentage", - "Bjornulf_SaveBjornulfLobeChat", - "Bjornulf_SaveImagePath", - "Bjornulf_SaveImageToFolder", - "Bjornulf_SaveText", - "Bjornulf_SaveTmpImage", - "Bjornulf_ScramblerCharacter", - "Bjornulf_SelectImageFromList", - "Bjornulf_ShowFloat", - "Bjornulf_ShowInt", - "Bjornulf_ShowJson", - "Bjornulf_ShowStringText", - "Bjornulf_ShowText", - "Bjornulf_SpeechToText", - "Bjornulf_TextGenerator", - "Bjornulf_TextGeneratorCharacterCreature", - "Bjornulf_TextGeneratorCharacterFemale", - "Bjornulf_TextGeneratorCharacterMale", - "Bjornulf_TextGeneratorCharacterObject", - "Bjornulf_TextGeneratorCharacterPose", - "Bjornulf_TextGeneratorOutfitFemale", - "Bjornulf_TextGeneratorOutfitMale", - "Bjornulf_TextGeneratorScene", - "Bjornulf_TextGeneratorStyle", - "Bjornulf_TextGeneratorText2Video", - "Bjornulf_TextReplace", - "Bjornulf_TextSplitin5", - "Bjornulf_TextToAnything", - "Bjornulf_TextToSpeech", - "Bjornulf_TextToStringAndSeed", - "Bjornulf_VideoDetails", - "Bjornulf_VideoPingPong", - "Bjornulf_VideoPreview", - "Bjornulf_VideoToImagesList", - "Bjornulf_WriteText", - "Bjornulf_WriteTextAdvanced", - "Bjornulf_XTTSConfig", - "Bjornulf_imagesToVideo", - "Bjornulf_ollamaLoader" - ], - { - "title_aux": "Bjornulf_custom_nodes" - } - ], - "https://github.com/k-komarov/comfyui-bunny-cdn-storage": [ - [ - "Save Image to BunnyStorage" - ], - { - "title_aux": "comfyui-bunny-cdn-storage" - } - ], - "https://github.com/ka-puna/comfyui-yanc": [ - [ - "YANC.ConcatStrings", - "YANC.FormatDatetimeString", - "YANC.GetWidgetValueString", - "YANC.IntegerCaster", - "YANC.MultilineString", - "YANC.SaveImageWEBP", - "YANC.TruncateString" - ], - { - "title_aux": "comfyui-yanc" - } - ], - "https://github.com/kaanyalova/ComfyUI_ExtendedImageFormats": [ - [ - "DDSSaveImage", - "ExtendedSaveImage" - ], - { - "title_aux": "Extended Image Formats for ComfyUI" - } - ], - "https://github.com/kadirnar/ComfyUI-Transformers": [ - [ - "DepthEstimationInference", - "ImageClassificationPipeline", - "ImageSegmentationPipeline", - "LoadDepthModel", - "ObjectDetectionPipeline" - ], - { - "title_aux": "ComfyUI-Transformers" - } - ], - "https://github.com/kadirnar/ComfyUI-YOLO": [ - [ - "BBoxToCoco", - "BBoxToXYWH", - "BBoxVisNode", - "CocoToNumber", - "ConvertToDict", - "CustomUltralyticsModelLoader", - "GetImageSize", - "ImageResizeAdvanced", - "UltralyticsInference", - "UltralyticsModelLoader", - "UltralyticsVisualization", - "ViewText" - ], - { - "title_aux": "ComfyUI-YOLO" - } - ], - "https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl": [ - [ - "ReduxAdvanced", - "StyleModelApplySimple" - ], - { - "title_aux": "Advanced Reflux control" - } - ], - "https://github.com/kale4eat/ComfyUI-path-util": [ - [ - "path_util_PathAbspath", - "path_util_PathBasename", - "path_util_PathDirname", - "path_util_PathExists", - "path_util_PathIsdir", - "path_util_PathIsfile", - "path_util_PathJoin", - "path_util_PathRelpath", - "path_util_PathSplitext" - ], - { - "title_aux": "ComfyUI_demucus" - } - ], - "https://github.com/kale4eat/ComfyUI-speech-dataset-toolkit": [ - [ - "SDT_AudioProperty", - "SDT_BSRoFormerApply", - "SDT_BSRoFormerLoader", - "SDT_ConcatAudio", - "SDT_CutAudio", - "SDT_DemucsApply", - "SDT_DemucsLoader", - "SDT_FasterWhisperListSegments", - "SDT_FasterWhisperLoader", - "SDT_FasterWhisperSegmentProperty", - "SDT_FasterWhisperTextFromSegments", - "SDT_FasterWhisperTranscribe", - "SDT_GriffinLim", - "SDT_JoinAudio", - "SDT_KotobaWhisperListSegments", - "SDT_KotobaWhisperLoaderLong", - "SDT_KotobaWhisperLoaderShort", - "SDT_KotobaWhisperSegmentProperty", - "SDT_KotobaWhisperTranscribeLong", - "SDT_KotobaWhisperTranscribeShort", - "SDT_LFCC", - "SDT_LoadAudio", - "SDT_LoadAudios", - "SDT_MFCC", - "SDT_MakeSilenceAudio", - "SDT_MelBandRoformerLoader", - "SDT_MelSpectrogram", - "SDT_NemoAsrListSegments", - "SDT_NemoAsrListSubwords", - "SDT_NemoAsrLoader", - "SDT_NemoAsrSegmentProperty", - "SDT_NemoAsrSubwordProperty", - "SDT_NemoAsrTranscribe", - "SDT_NueAsrLoader", - "SDT_NueAsrTranscribe", - "SDT_PlayAudio", - "SDT_PlotMelFilterBank", - "SDT_PlotPitch", - "SDT_PlotSpecgram", - "SDT_PlotSpectrogram", - "SDT_PlotWaveForm", - "SDT_ResampleAudio", - "SDT_SaveAudio", - "SDT_SaveAudioWithSequentialNumbering", - "SDT_SilenceAudio", - "SDT_SileroVADApply", - "SDT_SileroVADCollectChunks", - "SDT_SileroVADListTimestamps", - "SDT_SileroVADLoader", - "SDT_SileroVADTimestampProperty", - "SDT_Spectrogram", - "SDT_SpeechMOSLoader", - "SDT_SpeechMOSScore", - "SDT_SplitAudio", - "SDT_TrimAudio", - "SDT_TrimAudioBySample" - ], - { - "title_aux": "ComfyUI-speech-dataset-toolkit" - } - ], - "https://github.com/kale4eat/ComfyUI-string-util": [ - [ - "string_util_Str", - "string_util_StrConcat", - "string_util_StrCount", - "string_util_StrEndsWith", - "string_util_StrEqual", - "string_util_StrFind", - "string_util_StrFormat", - "string_util_StrJoin", - "string_util_StrLen", - "string_util_StrLower", - "string_util_StrLstrip", - "string_util_StrNotEqual", - "string_util_StrReplace", - "string_util_StrRstrip", - "string_util_StrSlice", - "string_util_StrSplit", - "string_util_StrStartsWith", - "string_util_StrStrip", - "string_util_StrUpper" - ], - { - "title_aux": "ComfyUI-string-util" - } - ], - "https://github.com/kale4eat/ComfyUI-text-file-util": [ - [ - "text_file_util_ReadAllLines", - "text_file_util_ReadAllText", - "text_file_util_WriteText", - "text_file_util_WriteTextLines", - "text_file_util_WriteTextWithSequentialNumbering" - ], - { - "title_aux": "ComfyUI-text-file-util" - } - ], - "https://github.com/kappa54m/ComfyUI_Usability": [ - [ - "KLoadImageByPath", - "KLoadImageByPathAdvanced", - "KLoadImageDedup" - ], - { - "title_aux": "ComfyUI Usability" - } - ], - "https://github.com/kasukanra/ComfyUI_StringToHex": [ - [ - "ColorNameToHex" - ], - { - "title_aux": "ComfyUI_StringToHex" - } - ], - "https://github.com/katalist-ai/comfyUI-nsfw-detection": [ - [ - "NudenetDetector" - ], - { - "title_aux": "comfyUI-nsfw-detection" - } - ], - "https://github.com/kazeyori/ComfyUI-QuickImageSequenceProcess": [ - [ - "QuickImageSequenceProcess" - ], - { - "author": "kazeyori", - "description": "A ComfyUI plugin for efficient image sequence processing. Features frame insertion, duplication, and removal with intuitive controls.", - "nickname": "QuickSeq", - "title": "Quick Image Sequence Process", - "title_aux": "Quick Image Sequence Process" - } - ], - "https://github.com/kealiu/ComfyUI-S3-Tools": [ - [ - "Load Image From S3", - "Save Image To S3" - ], - { - "title_aux": "ComfyUI Load and Save file to S3" - } - ], - "https://github.com/kealiu/ComfyUI-Zero123-Porting": [ - [ - "Zero123: Image Preprocess", - "Zero123: Image Rotate in 3D" - ], - { - "title_aux": "ComfyUI-Zero123-Porting" - } - ], - "https://github.com/kealiu/ComfyUI-ZeroShot-MTrans": [ - [ - "ZeST: Grayout Subject" - ], - { - "title_aux": "ComfyUI-ZeroShot-MTrans" - } - ], - "https://github.com/kenjiqq/qq-nodes-comfyui": [ - [ - "Any List", - "Any List Iterator", - "Any To Any", - "Axis Pack", - "Axis To Any", - "Axis Unpack", - "Load Lines From Text File", - "Slice List", - "Text Splitter", - "XY Grid Accumulator", - "XY Grid Helper" - ], - { - "title_aux": "qq-nodes-comfyui" - } - ], - "https://github.com/kevinmcmahondev/comfyui-skin-tone-detector": [ - [ - "SkinToneDetector" - ], - { - "title_aux": "Skin Tone Detector for ComfyUI" - } - ], - "https://github.com/kft334/Knodes": [ - [ - "Image(s) To Websocket (Base64)", - "ImageOutput", - "Load Image (Base64)", - "Load Images (Base64)" - ], - { - "title_aux": "Knodes" - } - ], - "https://github.com/kijai/ComfyUI-ADMotionDirector": [ - [ - "ADMD_AdditionalModelSelect", - "ADMD_CheckpointLoader", - "ADMD_ComfyModelLoader", - "ADMD_DiffusersLoader", - "ADMD_InitializeTraining", - "ADMD_LoadLora", - "ADMD_MakeBatchList", - "ADMD_SaveLora", - "ADMD_TrainLora", - "ADMD_ValidationSampler", - "ADMD_ValidationSettings" - ], - { - "title_aux": "Animatediff MotionLoRA Trainer" - } - ], - "https://github.com/kijai/ComfyUI-APISR-KJ": [ - [ - "APISR_upscale" - ], - { - "title_aux": "ComfyUI-APISR" - } - ], - "https://github.com/kijai/ComfyUI-BrushNet-Wrapper": [ - [ - "brushnet_ella_loader", - "brushnet_ipadapter_matteo", - "brushnet_model_loader", - "brushnet_sampler", - "brushnet_sampler_ella", - "powerpaint_brushnet_sampler" - ], - { - "title_aux": "ComfyUI-BrushNet-Wrapper" - } - ], - "https://github.com/kijai/ComfyUI-CCSR": [ - [ - "CCSR_Model_Select", - "CCSR_Upscale", - "DownloadAndLoadCCSRModel" - ], - { - "title_aux": "ComfyUI-CCSR" - } - ], - "https://github.com/kijai/ComfyUI-CogVideoXWrapper": [ - [ - "CogVideoContextOptions", - "CogVideoControlNet", - "CogVideoDecode", - "CogVideoEnhanceAVideo", - "CogVideoImageEncode", - "CogVideoImageEncodeFunInP", - "CogVideoLatentPreview", - "CogVideoLoraSelect", - "CogVideoLoraSelectComfy", - "CogVideoSampler", - "CogVideoTextEncode", - "CogVideoTextEncodeCombine", - "CogVideoTransformerEdit", - "CogVideoXFasterCache", - "CogVideoXFunResizeToClosestBucket", - "CogVideoXModelLoader", - "CogVideoXTeaCache", - "CogVideoXTorchCompileSettings", - "CogVideoXVAELoader", - "DownloadAndLoadCogVideoControlNet", - "DownloadAndLoadCogVideoGGUFModel", - "DownloadAndLoadCogVideoModel", - "DownloadAndLoadToraModel", - "ToraEncodeOpticalFlow", - "ToraEncodeTrajectory" - ], - { - "title_aux": "ComfyUI CogVideoX Wrapper" - } - ], - "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" - ], - { - "title_aux": "ComfyUI-DDColor" - } - ], - "https://github.com/kijai/ComfyUI-DepthAnythingV2": [ - [ - "DepthAnything_V2", - "DownloadAndLoadDepthAnythingV2Model" - ], - { - "title_aux": "ComfyUI-DepthAnythingV2" - } - ], - "https://github.com/kijai/ComfyUI-DiffusionLight": [ - [ - "chrome_ball_to_envmap", - "exposure_to_hdr" - ], - { - "title_aux": "DiffusionLight implementation for ComfyUI" - } - ], - "https://github.com/kijai/ComfyUI-DynamiCrafterWrapper": [ - [ - "DownloadAndLoadCLIPModel", - "DownloadAndLoadCLIPVisionModel", - "DownloadAndLoadDynamiCrafterCNModel", - "DownloadAndLoadDynamiCrafterModel", - "DynamiCrafterBatchInterpolation", - "DynamiCrafterCNLoader", - "DynamiCrafterControlnetApply", - "DynamiCrafterI2V", - "DynamiCrafterLoadInitNoise", - "DynamiCrafterModelLoader", - "ToonCrafterDecode", - "ToonCrafterInterpolation" - ], - { - "title_aux": "ComfyUI-DynamiCrafterWrapper" - } - ], - "https://github.com/kijai/ComfyUI-ELLA-wrapper": [ - [ - "diffusers_model_loader", - "diffusers_sampler", - "ella_model_loader", - "ella_sampler", - "ella_t5_embeds" - ], - { - "title_aux": "ComfyUI-ELLA-wrapper" - } - ], - "https://github.com/kijai/ComfyUI-Florence2": [ - [ - "DownloadAndLoadFlorence2Lora", - "DownloadAndLoadFlorence2Model", - "Florence2ModelLoader", - "Florence2Run" - ], - { - "preemptions": [ - "DownloadAndLoadFlorence2Lora", - "DownloadAndLoadFlorence2Model", - "Florence2ModelLoader", - "Florence2Run" - ], - "title_aux": "ComfyUI-Florence2" - } - ], - "https://github.com/kijai/ComfyUI-FluxTrainer": [ - [ - "ExtractFluxLoRA", - "FluxKohyaInferenceSampler", - "FluxTrainAndValidateLoop", - "FluxTrainBlockSelect", - "FluxTrainEnd", - "FluxTrainLoop", - "FluxTrainModelSelect", - "FluxTrainResume", - "FluxTrainSave", - "FluxTrainSaveModel", - "FluxTrainValidate", - "FluxTrainValidationSettings", - "FluxTrainerLossConfig", - "InitFluxLoRATraining", - "InitFluxTraining", - "InitSD3LoRATraining", - "InitSDXLLoRATraining", - "OptimizerConfig", - "OptimizerConfigAdafactor", - "OptimizerConfigProdigy", - "OptimizerConfigProdigyPlusScheduleFree", - "SD3ModelSelect", - "SD3TrainValidationSettings", - "SDXLModelSelect", - "SDXLTrainValidate", - "SDXLTrainValidationSettings", - "TrainDatasetAdd", - "TrainDatasetGeneralConfig", - "TrainDatasetRegularization", - "TrainNetworkConfig", - "UploadToHuggingFace", - "VisualizeLoss" - ], - { - "title_aux": "ComfyUI Flux Trainer" - } - ], - "https://github.com/kijai/ComfyUI-GIMM-VFI": [ - [ - "DownloadAndLoadGIMMVFIModel", - "GIMMVFI_interpolate" - ], - { - "title_aux": "ComfyUI-GIMM-VFI" - } - ], - "https://github.com/kijai/ComfyUI-Geowizard": [ - [ - "geowizard_model_loader", - "geowizard_sampler" - ], - { - "title_aux": "Geowizard depth and normal estimation in ComfyUI" - } - ], - "https://github.com/kijai/ComfyUI-HunyuanVideoWrapper": [ - [ - "DownloadAndLoadHyVideoTextEncoder", - "HyVideoBlockSwap", - "HyVideoCFG", - "HyVideoContextOptions", - "HyVideoCustomPromptTemplate", - "HyVideoDecode", - "HyVideoEmptyTextEmbeds", - "HyVideoEncode", - "HyVideoEnhanceAVideo", - "HyVideoInverseSampler", - "HyVideoLatentPreview", - "HyVideoLoraBlockEdit", - "HyVideoLoraSelect", - "HyVideoModelLoader", - "HyVideoPromptMixSampler", - "HyVideoReSampler", - "HyVideoSTG", - "HyVideoSampler", - "HyVideoTeaCache", - "HyVideoTextEmbedsLoad", - "HyVideoTextEmbedsSave", - "HyVideoTextEncode", - "HyVideoTextImageEncode", - "HyVideoTorchCompileSettings", - "HyVideoVAELoader" - ], - { - "title_aux": "ComfyUI-HunyuanVideoWrapper" - } - ], - "https://github.com/kijai/ComfyUI-IC-Light": [ - [ - "BackgroundScaler", - "CalculateNormalsFromImages", - "DetailTransfer", - "ICLightConditioning", - "LightSource", - "LoadAndApplyICLightUnet", - "LoadHDRImage" - ], - { - "title_aux": "ComfyUI-IC-Light" - } - ], - "https://github.com/kijai/ComfyUI-KJNodes": [ - [ - "AddLabel", - "AppendInstanceDiffusionTracking", - "AppendStringsToList", - "AudioConcatenate", - "BOOLConstant", - "BatchCLIPSeg", - "BatchCropFromMask", - "BatchCropFromMaskAdvanced", - "BatchUncrop", - "BatchUncropAdvanced", - "BboxToInt", - "BboxVisualize", - "CameraPoseVisualizer", - "CheckpointLoaderKJ", - "CheckpointPerturbWeights", - "ColorMatch", - "ColorToMask", - "CondPassThrough", - "ConditioningMultiCombine", - "ConditioningSetMaskAndCombine", - "ConditioningSetMaskAndCombine3", - "ConditioningSetMaskAndCombine4", - "ConditioningSetMaskAndCombine5", - "CreateAudioMask", - "CreateFadeMask", - "CreateFadeMaskAdvanced", - "CreateFluidMask", - "CreateGradientFromCoords", - "CreateGradientMask", - "CreateInstanceDiffusionTracking", - "CreateMagicMask", - "CreateShapeImageOnPath", - "CreateShapeMask", - "CreateShapeMaskOnPath", - "CreateTextMask", - "CreateTextOnPath", - "CreateVoronoiMask", - "CrossFadeImages", - "CrossFadeImagesMulti", - "CustomControlNetWeightsFluxFromList", - "CustomSigmas", - "CutAndDragOnPath", - "DifferentialDiffusionAdvanced", - "DiffusionModelLoaderKJ", - "DownloadAndLoadCLIPSeg", - "DrawInstanceDiffusionTracking", - "DummyOut", - "EmptyLatentImageCustomPresets", - "EmptyLatentImagePresets", - "FastPreview", - "FilterZeroMasksAndCorrespondingImages", - "FlipSigmasAdjusted", - "FloatConstant", - "FloatToMask", - "FloatToSigmas", - "FluxBlockLoraLoader", - "FluxBlockLoraSelect", - "GLIGENTextBoxApplyBatchCoords", - "GenerateNoise", - "GetImageRangeFromBatch", - "GetImageSizeAndCount", - "GetImagesFromBatchIndexed", - "GetLatentsFromBatchIndexed", - "GetMaskSizeAndCount", - "GradientToFloat", - "GrowMaskWithBlur", - "INTConstant", - "ImageAddMulti", - "ImageAndMaskPreview", - "ImageBatchMulti", - "ImageBatchRepeatInterleaving", - "ImageBatchTestPattern", - "ImageConcanate", - "ImageConcatFromBatch", - "ImageConcatMulti", - "ImageCropByMaskAndResize", - "ImageGrabPIL", - "ImageGridComposite2x2", - "ImageGridComposite3x3", - "ImageGridtoBatch", - "ImageNormalize_Neg1_To_1", - "ImagePadForOutpaintMasked", - "ImagePadForOutpaintTargetSize", - "ImagePass", - "ImageResizeKJ", - "ImageTransformByNormalizedAmplitude", - "ImageUncropByMask", - "ImageUpscaleWithModelBatched", - "InjectNoiseToLatent", - "InsertImageBatchByIndexes", - "InsertImagesToBatchIndexed", - "InterpolateCoords", - "Intrinsic_lora_sampling", - "JoinStringMulti", - "JoinStrings", - "LoadAndResizeImage", - "LoadImagesFromFolderKJ", - "LoadResAdapterNormalization", - "MaskBatchMulti", - "MaskOrImageToWeight", - "MergeImageChannels", - "ModelPassThrough", - "ModelSaveKJ", - "NormalizedAmplitudeToFloatList", - "NormalizedAmplitudeToMask", - "OffsetMask", - "OffsetMaskByNormalizedAmplitude", - "PatchModelPatcherOrder", - "PathchSageAttentionKJ", - "PlotCoordinates", - "PointsEditor", - "PreviewAnimation", - "RemapImageRange", - "RemapMaskRange", - "ReplaceImagesInBatch", - "ResizeMask", - "ReverseImageBatch", - "RoundMask", - "SV3D_BatchSchedule", - "SaveImageKJ", - "SaveImageWithAlpha", - "ScaleBatchPromptSchedule", - "Screencap_mss", - "SetShakkerLabsUnionControlNetType", - "ShuffleImageBatch", - "SigmasToFloat", - "Sleep", - "SomethingToString", - "SoundReactive", - "SplineEditor", - "SplitBboxes", - "SplitImageChannels", - "StabilityAPI_SD3", - "StableZero123_BatchSchedule", - "StringConstant", - "StringConstantMultiline", - "StyleModelApplyAdvanced", - "Superprompt", - "TorchCompileControlNet", - "TorchCompileCosmosModel", - "TorchCompileLTXModel", - "TorchCompileModelFluxAdvanced", - "TorchCompileVAE", - "TransitionImagesInBatch", - "TransitionImagesMulti", - "VRAM_Debug", - "WebcamCaptureCV2", - "WeightScheduleConvert", - "WeightScheduleExtend", - "WidgetToString" - ], - { - "title_aux": "KJNodes for ComfyUI" - } - ], - "https://github.com/kijai/ComfyUI-KwaiKolorsWrapper": [ - [ - "DownloadAndLoadChatGLM3", - "DownloadAndLoadKolorsModel", - "KolorsSampler", - "KolorsTextEncode", - "LoadChatGLM3" - ], - { - "title_aux": "ComfyUI-KwaiKolorsWrapper" - } - ], - "https://github.com/kijai/ComfyUI-LLaVA-OneVision": [ - [ - "DownloadAndLoadLLaVAOneVisionModel", - "LLaVA_OneVision_Run", - "OneVisionCaptionFolder", - "SaveCaptionToTextFile" - ], - { - "title_aux": "ComfyUI Llava-OneVision" - } - ], - "https://github.com/kijai/ComfyUI-LVCDWrapper": [ - [ - "LVCDDecoder", - "LVCDSampler", - "LoadLVCDModel" - ], - { - "title_aux": "ComfyUI wrapper nodes for LVCD" - } - ], - "https://github.com/kijai/ComfyUI-LaVi-Bridge-Wrapper": [ - [ - "lavi_bridge_llama_encoder", - "lavi_bridge_t5_encoder", - "lavibridge_model_loader", - "lavibridge_sampler" - ], - { - "title_aux": "ComfyUI-LaVi-Bridge-Wrapper" - } - ], - "https://github.com/kijai/ComfyUI-LivePortraitKJ": [ - [ - "DownloadAndLoadLivePortraitModels", - "KeypointScaler", - "KeypointsToImage", - "LivePortraitComposite", - "LivePortraitCropper", - "LivePortraitLoadCropper", - "LivePortraitLoadFaceAlignmentCropper", - "LivePortraitLoadMediaPipeCropper", - "LivePortraitProcess", - "LivePortraitRetargeting" - ], - { - "title_aux": "ComfyUI-LivePortraitKJ" - } - ], - "https://github.com/kijai/ComfyUI-Lotus": [ - [ - "LoadLotusModel", - "LotusSampler" - ], - { - "title_aux": "ComfyUI-Lotus" - } - ], - "https://github.com/kijai/ComfyUI-LuminaWrapper": [ - [ - "DownloadAndLoadGemmaModel", - "DownloadAndLoadLuminaModel", - "GemmaSampler", - "LuminaGemmaTextEncode", - "LuminaGemmaTextEncodeArea", - "LuminaT2ISampler", - "LuminaTextAreaAppend" - ], - { - "title_aux": "ComfyUI-LuminaWrapper" - } - ], - "https://github.com/kijai/ComfyUI-Marigold": [ - [ - "ColorizeDepthmap", - "MarigoldDepthEstimation", - "MarigoldDepthEstimationVideo", - "MarigoldDepthEstimation_v2", - "MarigoldDepthEstimation_v2_video", - "MarigoldModelLoader", - "RemapDepth", - "SaveImageOpenEXR" - ], - { - "title_aux": "Marigold depth estimation in ComfyUI" - } - ], - "https://github.com/kijai/ComfyUI-MimicMotionWrapper": [ - [ - "DiffusersScheduler", - "DownloadAndLoadMimicMotionModel", - "MimicMotionDecode", - "MimicMotionGetPoses", - "MimicMotionSampler" - ], - { - "title_aux": "ComfyUI-MimicMotionWrapper" - } - ], - "https://github.com/kijai/ComfyUI-MoGe": [ - [ - "DownloadAndLoadMoGeModel", - "MoGeProcess" - ], - { - "title_aux": "ComfyUI-MoGe" - } - ], - "https://github.com/kijai/ComfyUI-OpenDiTWrapper": [ - [ - "DownloadAndLoadOpenDiTT5Model", - "DownloadAndLoadOpenSoraModel", - "DownloadAndLoadOpenSoraVAE", - "OpenDiTConditioning", - "OpenDiTSampler", - "OpenSoraDecode", - "OpenSoraEncodeReference" - ], - { - "title_aux": "ComfyUI-OpenDiTWrapper" - } - ], - "https://github.com/kijai/ComfyUI-PyramidFlowWrapper": [ - [ - "PyramidFlowLatentPreview", - "PyramidFlowSampler", - "PyramidFlowTextEncode", - "PyramidFlowTorchCompileSettings", - "PyramidFlowTransformerLoader", - "PyramidFlowVAEDecode", - "PyramidFlowVAEEncode", - "PyramidFlowVAELoader" - ], - { - "title_aux": "ComfyUI PyramidFlow Wrapper" - } - ], - "https://github.com/kijai/ComfyUI-SUPIR": [ - [ - "SUPIR_Upscale", - "SUPIR_conditioner", - "SUPIR_decode", - "SUPIR_encode", - "SUPIR_first_stage", - "SUPIR_model_loader", - "SUPIR_model_loader_v2", - "SUPIR_model_loader_v2_clip", - "SUPIR_sample", - "SUPIR_tiles" - ], - { - "title_aux": "ComfyUI-SUPIR" - } - ], - "https://github.com/kijai/ComfyUI-depth-fm": [ - [ - "Depth_fm" - ], - { - "title_aux": "ComfyUI-depth-fm" - } - ], - "https://github.com/kijai/ComfyUI-moondream": [ - [ - "MoondreamQuery", - "MoondreamQueryCaptions" - ], - { - "title_aux": "ComfyUI-moondream" - } - ], - "https://github.com/kijai/ComfyUI-segment-anything-2": [ - [ - "DownloadAndLoadSAM2Model", - "Florence2toCoordinates", - "Sam2AutoSegmentation", - "Sam2Segmentation", - "Sam2VideoSegmentation", - "Sam2VideoSegmentationAddPoints" - ], - { - "preemptions": [ - "DownloadAndLoadSAM2Model", - "Florence2toCoordinates", - "Sam2AutoSegmentation", - "Sam2Segmentation", - "Sam2VideoSegmentation", - "Sam2VideoSegmentationAddPoints" - ], - "title_aux": "ComfyUI-segment-anything-2" - } - ], - "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": [ - [ - "KimaraAIBatchImages", - "KimaraAIWatermarker" - ], - { - "title_aux": "Kimara.ai's Advanced Watermarking Tools" - } - ], - "https://github.com/kinfolk0117/ComfyUI_GradientDeepShrink": [ - [ - "GradientPatchModelAddDownscale", - "GradientPatchModelAddDownscaleAdvanced" - ], - { - "title_aux": "ComfyUI_GradientDeepShrink" - } - ], - "https://github.com/kinfolk0117/ComfyUI_GridSwapper": [ - [ - "GridSwapper" - ], - { - "title_aux": "Gridswapper" - } - ], - "https://github.com/kinfolk0117/ComfyUI_Pilgram": [ - [ - "Pilgram" - ], - { - "title_aux": "ComfyUI_Pilgram" - } - ], - "https://github.com/kinfolk0117/ComfyUI_SimpleTiles": [ - [ - "DynamicTileMerge", - "DynamicTileSplit", - "TileCalc", - "TileMerge", - "TileSplit" - ], - { - "title_aux": "SimpleTiles" - } - ], - "https://github.com/kk8bit/KayTool": [ - [ - "Abc_Math", - "Baidu_Translater", - "Color_Adjustment", - "Custom_Save_Image", - "Display_Any", - "Image_Size_Extractor", - "Strong_Prompt" - ], - { - "title_aux": "KayTool" - } - ], - "https://github.com/klinter007/klinter_nodes": [ - [ - "AspectSelector", - "FolderLoader", - "Json Extractor - klinter", - "LoadImagePlus", - "LoadVideoForExtendingKlinter", - "OutpaintPadding", - "PrepVideoForExtendKlinter", - "SizeSelector", - "SpeedRamp", - "YellowBus", - "ZoomOutComposer", - "concat", - "filter", - "nodevalue2stringmulti", - "string_contact_multi" - ], - { - "title_aux": "Klinter_nodes" - } - ], - "https://github.com/knuknX/ComfyUI-Image-Tools": [ - [ - "BatchImagePathLoader", - "ImageBgRemoveProcessor", - "ImageCheveretoUploader", - "ImageStandardResizeProcessor", - "JSONMessageNotifyTool", - "PreviewJSONNode", - "SingleImagePathLoader", - "SingleImageUrlLoader" - ], - { - "title_aux": "ComfyUI-Image-Tools" - } - ], - "https://github.com/kohya-ss/ControlNet-LLLite-ComfyUI": [ - [ - "LLLiteLoader" - ], - { - "title_aux": "ControlNet-LLLite-ComfyUI" - } - ], - "https://github.com/komojini/ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes": [ - [ - "S3 Bucket LoRA", - "S3Bucket_Load_LoRA", - "XL DreamBooth LoRA", - "XLDB_LoRA" - ], - { - "title_aux": "ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes" - } - ], - "https://github.com/komojini/komojini-comfyui-nodes": [ - [ - "BatchCreativeInterpolationNodeDynamicSettings", - "CachedGetter", - "DragNUWAImageCanvas", - "FlowBuilder", - "FlowBuilder (adv)", - "FlowBuilder (advanced)", - "FlowBuilder (advanced) Setter", - "FlowBuilderSetter", - "FlowBuilderSetter (adv)", - "Getter", - "ImageCropByRatio", - "ImageCropByRatioAndResize", - "ImageGetter", - "ImageMerger", - "ImagesCropByRatioAndResizeBatch", - "KSamplerAdvancedCacheable", - "KSamplerCacheable", - "Setter", - "UltimateVideoLoader", - "UltimateVideoLoader (simple)", - "YouTubeVideoLoader" - ], - { - "title_aux": "komojini-comfyui-nodes" - } - ], - "https://github.com/kostenickj/jk-comfyui-helpers": [ - [ - "EasyHRFix", - "EasyHRFix_Context", - "JKAnythingToString", - "JKBigContext", - "JKDynamicThresholdingMultiModel", - "JKEasyCheckpointLoader", - "JKEasyDetailer", - "JKEasyDetailer_Context", - "JKEasyKSampler_Context", - "JKEasyUpscaleImage", - "JKEasyWatermark", - "JKInspireSchedulerAdapter", - "JKLilContext", - "JKMultiModelSamplerUnpatch", - "JKStringEmpty", - "JKStringEquals", - "JKStringNotEmpty", - "JKStringNotEquals", - "JKStringToSamplerAdapter" - ], - { - "title_aux": "comfyui-jk-easy-nodes" - } - ], - "https://github.com/kunieone/ComfyUI_alkaid": [ - [ - "A_EmptyLatentImageLongside", - "A_Face3DSwapper", - "A_FaceCrop", - "A_FacePaste", - "A_GetImageSize", - "A_OpenPosePreprocessor", - "AdapterFace", - "AdapterFaceLoader", - "AdapterStyle", - "AdapterStyleLoader", - "AlkaidLoader", - "ApplyAdapter", - "ApplyControlNet_KPS", - "CombineAdapterPatch", - "KSamplerHires" - ], - { - "title_aux": "ComfyUI_alkaid" - } - ], - "https://github.com/kwaroran/abg-comfyui": [ - [ - "Remove Image Background (abg)" - ], - { - "title_aux": "abg-comfyui" - } - ], - "https://github.com/kycg/comfyui-Lora-auto-downloader": [ - [ - "Kw_JsonLoraLoader", - "Kw_Json_Lora_CivitAIDownloader" - ], - { - "title_aux": "Kw_Json_Lora_CivitAIDownloader" - } - ], - "https://github.com/l-comm/WatermarkRemoval": [ - [ - "FindWatermarkNode", - "RemoveWatermarkNode" - ], - { - "author": "l-comm", - "description": "Remove watermark", - "nickname": "Watermark Removal", - "title": "Watermark Removal", - "title_aux": "WatermarkRemoval" - } - ], - "https://github.com/l1yongch1/ComfyUI_PhiCaption": [ - [ - "PhiInfer", - "PhiModelLoder" - ], - { - "title_aux": "ComfyUI_PhiCaption" - } - ], - "https://github.com/l20richo/ComfyUI-Azure-Blob-Storage": [ - [ - "DownloadFileBLOB", - "LoadImageBLOB", - "SaveImageBLOB", - "SaveVideoFilesBLOB", - "UploadFileBLOB" - ], - { - "title_aux": "ComfyUI-Azure-Blob-Storage" - } - ], - "https://github.com/laksjdjf/Batch-Condition-ComfyUI": [ - [ - "Batch String", - "CLIP Text Encode (Batch)", - "String Input" - ], - { - "title_aux": "Batch-Condition-ComfyUI" - } - ], - "https://github.com/laksjdjf/LCMSampler-ComfyUI": [ - [ - "SamplerLCM", - "TAESDLoader" - ], - { - "title_aux": "LCMSampler-ComfyUI" - } - ], - "https://github.com/laksjdjf/LoRTnoC-ComfyUI": [ - [ - "LortnocLoader" - ], - { - "title_aux": "LoRTnoC-ComfyUI" - } - ], - "https://github.com/laksjdjf/cd-tuner_negpip-ComfyUI": [ - [ - "CDTuner", - "Negapip", - "Negpip" - ], - { - "title_aux": "cd-tuner_negpip-ComfyUI" - } - ], - "https://github.com/laksjdjf/cgem156-ComfyUI": [ - [ - "GradualLatentSampler", - "LCMSamplerRCFG", - "LoadAestheticShadow", - "PredictAesthetic", - "TCDSampler", - "TextScheduler" - ], - { - "title_aux": "cgem156-ComfyUI\ud83c\udf4c" - } - ], - "https://github.com/laksjdjf/pfg-ComfyUI": [ - [ - "PFG" - ], - { - "title_aux": "pfg-ComfyUI" - } - ], - "https://github.com/larsupb/LoRA-Merger-ComfyUI": [ - [ - "PM LoRA Apply", - "PM LoRA Loader", - "PM LoRA Merger", - "PM LoRA Resizer", - "PM LoRA SVD Merger", - "PM LoRA Save", - "XY: PM LoRA Modes", - "XY: PM LoRA SVD Rank", - "XY: PM LoRA Strengths" - ], - { - "title_aux": "LoRA Power-Merger ComfyUI" - } - ], - "https://github.com/latenightlabs/ComfyUI-LNL": [ - [ - "LNL_FrameSelectorV3", - "LNL_FrameSelectorV4" - ], - { - "title_aux": "LNL Frame Selector" - } - ], - "https://github.com/lazniak/Head-Orientation-Node-for-ComfyUI---by-PabloGFX": [ - [ - "HeadOrientationNode" - ], - { - "title_aux": "Head-Orientation-Node - by PabloGFX" - } - ], - "https://github.com/lazniak/LiquidTime-Interpolation": [ - [ - "LiquidTime" - ], - { - "title_aux": "LiquidTime - by PabloGFX" - } - ], - "https://github.com/lazniak/comfyui-google-photos-loader": [ - [ - "ContentFilter", - "DatePicker", - "Google Photos Album Lister", - "Google Photos Album Loader", - "Google Photos Album Selector", - "Google Photos Cache Manager", - "Google Photos Clear Cache", - "Google Photos Images Loader", - "Google Photos Login/Logout" - ], - { - "title_aux": "Google Photos Loader - by PabloGFX" - } - ], - "https://github.com/leeguandong/ComfyUI_CompareModelWeights": [ - [ - "CheckPointLoader_Compare", - "CompareModelWeightsDiff", - "CompareModelWeightsDiffNormalized", - "PreviewImageCompareModelWeights" - ], - { - "title_aux": "ComfyUI_CompareModelWeights" - } - ], - "https://github.com/leeguandong/ComfyUI_CrossImageAttention": [ - [ - "AppearanceTransferInference", - "AppearanceTransferModelModelLoader", - "CIAConfig", - "LoadImagePath", - "LoadLatents" - ], - { - "title_aux": "ComfyUI nodes to use CrossImageAttention" - } - ], - "https://github.com/leeguandong/ComfyUI_FluxCustomId": [ - [ - "ApplyCustomIDFlux", - "CustomIDModelLoader" - ], - { - "title_aux": "ComfyUI_FluxCustomId" - } - ], - "https://github.com/leeguandong/ComfyUI_InternVL2": [ - [ - "DynamicPreprocess", - "InternVLHFInference", - "InternVLLMDEPLOYInference", - "InternVLModelLoader" - ], - { - "title_aux": "ComfyUI_InternVL2" - } - ], - "https://github.com/leeguandong/ComfyUI_LLaSM": [ - [ - "LLaSM2Interface", - "LLaSM2ModelLoader", - "LLaSMLoadAudio" - ], - { - "title_aux": "ComfyUI_LLaSM" - } - ], - "https://github.com/leeguandong/ComfyUI_M3Net": [ - [ - "M3Net_Interface", - "M3Net_ModelLoader" - ], - { - "title_aux": "ComfyUI_M3Net" - } - ], - "https://github.com/leeguandong/ComfyUI_MasaCtrl": [ - [ - "DirectSampler", - "MasaCtrlConcatImage", - "MasaCtrlInversion", - "MasaCtrlLoadImage", - "MasaCtrlModelLoader", - "MutualSelfAttentionControlMaskAutoSampler", - "MutualSelfAttentionControlSampler" - ], - { - "title_aux": "ComfyUI nodes to use MasaCtrl" - } - ], - "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/leeguandong/ComfyUI_VisualAttentionMap": [ - [ - "DecodeLatent", - "HFModelLoader", - "ShowCrossAttn", - "ShowImages", - "ShowSelfAttn", - "Text2ImageInference" - ], - { - "title_aux": "ComfyUI_VisualAttentionMap" - } - ], - "https://github.com/leestuartx/ComfyUI-GG": [ - [ - "AddPaddingToImage", - "ForLoopNode", - "ImageMetadataExtractor", - "InputNode", - "MetadataExtractBySeed", - "MetadataExtractorBySeed", - "OutputNode", - "ResizeImageProportionally", - "WorkspaceNode" - ], - { - "title_aux": "ComfyUI-GG" - } - ], - "https://github.com/lenskikh/ComfyUI-Prompt-Worker": [ - [ - "Prompt Worker" - ], - { - "title_aux": "Propmt Worker" - } - ], - "https://github.com/leoleelxh/ComfyUI-LLMs": [ - [ - "LLMs Chat", - "LLMs Vision Unified", - "LLMs_Vision_Unified" - ], - { - "title_aux": "ComfyUI-LLMs" - } - ], - "https://github.com/lgldlk/ComfyUI-PC-ding-dong": [ - [ - "pc ding dong", - "pc ding dong text", - "pc time sleep" - ], - { - "title_aux": "ComfyUI-PC-ding-dong" - } - ], - "https://github.com/liangt/comfyui-loadimagewithsubfolder": [ - [ - "LoadImageWithSubfolder" - ], - { - "title_aux": "comfyui-loadimagewithsubfolder" - } - ], - "https://github.com/licyk/ComfyUI-HakuImg": [ - [ - "BlendImage", - "Blur", - "Chromatic", - "Color", - "Curve", - "CustomExif", - "Flip", - "Glow", - "InOutPaint", - "LenDistortion", - "PixelOE", - "Pixelize", - "SaveImageWithCustomExif", - "Sketch", - "TiltShift" - ], - { - "title_aux": "ComfyUI-HakuImg" - } - ], - "https://github.com/licyk/ComfyUI-TCD-Sampler": [ - [ - "TCDScheduler" - ], - { - "title_aux": "ComfyUI-TCD-Sampler" - } - ], - "https://github.com/linshier/comfyui-remote-tools": [ - [ - "LoadBase64(js)", - "LoadBase64FromRemote", - "SendBase64ToRemote" - ], - { - "title_aux": "comfyui-remote-tools" - } - ], - "https://github.com/liuqianhonga/ComfyUI-Html2Image": [ - [ - "CameraWatermark", - "TemplateToImage", - "WebpageScreenshot" - ], - { - "title_aux": "ComfyUI-Html2Image" - } - ], - "https://github.com/liuqianhonga/ComfyUI-Image-Compressor": [ - [ - "BatchImageCompressor", - "ImageCompressor" - ], - { - "title_aux": "ComfyUI-Image-Compressor" - } - ], - "https://github.com/liuqianhonga/ComfyUI-QHNodes": [ - [ - "BatchImageCompressor", - "CameraWatermark", - "DownloadCheckpoint", - "DownloadControlNet", - "DownloadLora", - "DownloadUNET", - "DownloadVAE", - "DynamicExpression", - "FileSave", - "Gemini", - "ImageCompressor", - "ImageCountFromFolder", - "JsonToCSV", - "JsonUnpack", - "LoadImageFromFolder", - "LoadLoraFromFolder", - "PresetSizeLatent", - "SamplerSettings", - "ShowTranslateString", - "StringConverter", - "StringFormatter", - "StringList", - "StringListFromCSV", - "StringListToCSV", - "StringMatcher", - "StringTranslate", - "TemplateToImage", - "TimeFormatter", - "UnifiedPromptGenerator", - "WebpageScreenshot" - ], - { - "title_aux": "ComfyUI-QHNodes" - } - ], - "https://github.com/liuqianhonga/ComfyUI-String-Helper": [ - [ - "JsonToCSV", - "ShowTranslateString", - "StringConverter", - "StringFormatter", - "StringList", - "StringListFromCSV", - "StringListToCSV", - "StringMatcher", - "StringTranslate", - "TimeFormatter" - ], - { - "title_aux": "ComfyUI-String-Helper" - } - ], - "https://github.com/liushuchun/ComfyUI_Lora_List_With_Url_Loader": [ - [ - "LoraListUrlLoader" - ], - { - "title_aux": "ComfyUI_Lora_List_With_Url_Loader" - } - ], - "https://github.com/liusida/ComfyUI-AutoCropFaces": [ - [ - "AutoCropFaces" - ], - { - "title_aux": "ComfyUI-AutoCropFaces" - } - ], - "https://github.com/liusida/ComfyUI-B-LoRA": [ - [ - "LoadBLoRA" - ], - { - "title_aux": "ComfyUI-B-LoRA" - } - ], - "https://github.com/liusida/ComfyUI-Debug": [ - [ - "DebugInspectorNode", - "DebugModelInspectorNode", - "DebugModelPrintOutNode" - ], - { - "title_aux": "ComfyUI-Debug" - } - ], - "https://github.com/liusida/ComfyUI-Login": [ - [ - "LoadImageIncognito" - ], - { - "title_aux": "ComfyUI-Login" - } - ], - "https://github.com/liusida/ComfyUI-SD3-nodes": [ - [ - "SD3EmptyLatent", - "SD3LoadCLIPs", - "SD3LoadCheckpoint" - ], - { - "title_aux": "ComfyUI-SD3-nodes" - } - ], - "https://github.com/ljleb/comfy-mecha": [ - [ - "Blocks Mecha Hyper", - "Float Mecha Hyper", - "Lora Mecha Recipe", - "Mecha Deserializer", - "Mecha Merger", - "Mecha Recipe List", - "Mecha Serializer", - "Model Mecha Recipe" - ], - { - "title_aux": "Mecha Merge Node Pack" - } - ], - "https://github.com/lks-ai/ComfyUI-StableAudioSampler": [ - [ - "StableAudioConditioning", - "StableAudioLoadModel", - "StableAudioPrompt", - "StableAudioSampler" - ], - { - "author": "lks-ai", - "description": "A Simple integration of Stable Audio Diffusion with knobs and stuff!", - "nickname": "stableaudio", - "title": "StableAudioSampler", - "title_aux": "ComfyUI Stable Audio Open 1.0 Sampler" - } - ], - "https://github.com/lks-ai/anynode": [ - [ - "AnyNode", - "AnyNodeAnthropic", - "AnyNodeCodeViewer", - "AnyNodeExport", - "AnyNodeGemini", - "AnyNodeLocal" - ], - { - "author": "newsbubbles", - "description": "This single node uses an LLM to generate a functionality based on your request. You can make the node do anything.", - "nickname": "AnyNode", - "title": "AnyNode v0.1.1", - "title_aux": "ComfyUI AnyNode: Any Node you ask for" - } - ], - "https://github.com/lldacing/ComfyUI_BiRefNet_ll": [ - [ - "AutoDownloadBiRefNetModel", - "BlurFusionForegroundEstimation", - "GetMaskByBiRefNet", - "LoadRembgByBiRefNetModel", - "RembgByBiRefNet", - "RembgByBiRefNetAdvanced" - ], - { - "title_aux": "ComfyUI_BiRefNet_ll" - } - ], - "https://github.com/lldacing/ComfyUI_Patches_ll": [ - [ - "ApplyFirstBlockCachePatch", - "ApplyFirstBlockCachePatchAdvanced", - "ApplyTeaCachePatch", - "ApplyTeaCachePatchAdvanced", - "DitForwardOverrider", - "FluxForwardOverrider", - "VideoForwardOverrider" - ], - { - "title_aux": "ComfyUI_Patches_ll" - } - ], - "https://github.com/lldacing/ComfyUI_PuLID_Flux_ll": [ - [ - "ApplyPulidFlux", - "FixPulidFluxPatch", - "PulidFluxEvaClipLoader", - "PulidFluxInsightFaceLoader", - "PulidFluxModelLoader" - ], - { - "title_aux": "ComfyUI_PuLID_Flux_ll" - } - ], - "https://github.com/lldacing/ComfyUI_StableDelight_ll": [ - [ - "ApplyStableDelight", - "LoadStableDelightModel" - ], - { - "title_aux": "ComfyUI_StableDelight_ll" - } - ], - "https://github.com/lldacing/ComfyUI_StableHair_ll": [ - [ - "ApplyHairRemover", - "ApplyHairTransfer", - "LoadStableHairRemoverModel", - "LoadStableHairTransferModel" - ], - { - "title_aux": "ComfyUI_StableHair_ll" - } - ], - "https://github.com/lldacing/comfyui-easyapi-nodes": [ - [ - "Base64ToImage", - "Base64ToMask", - "BboxToBbox", - "BboxToCropData", - "BboxesToBboxes", - "ColorPicker", - "ConvertToJsonStr", - "ConvertTypeToAny", - "CopyAndRenameFiles", - "CropImageByBbox", - "CropTargetSizeImageByBbox", - "EmptyOutputNode", - "FilterValueForList", - "ForEachClose", - "ForEachOpen", - "GetImageBatchSize", - "GetValueFromJsonObj", - "ImageEqual", - "ImageToBase64", - "ImageToBase64Advanced", - "IndexOfList", - "IndexesOfList", - "InnerIntCompare", - "InnerIntMathOperation", - "InnerLoopClose", - "InsightFaceBBOXDetect", - "IntToList", - "IntToNumber", - "IsNoneOrEmpty", - "IsNoneOrEmptyOptional", - "JoinList", - "ListMerge", - "ListUnWrapper", - "ListWrapper", - "LoadImageFromLocalPath", - "LoadImageFromURL", - "LoadImageToBase64", - "LoadJsonStrToList", - "LoadLocalFilePath", - "LoadMaskFromLocalPath", - "LoadMaskFromURL", - "MaskByBboxes", - "MaskImageToBase64", - "MaskToBase64", - "MaskToBase64Image", - "MaskToRle", - "ReadTextFromLocalFile", - "RleToMask", - "SDBaseVerNumber", - "SamAutoMaskSEGS", - "SamAutoMaskSEGSAdvanced", - "SaveImagesWithoutOutput", - "SaveSingleImageWithoutOutput", - "SaveTextToFileByImagePath", - "SaveTextToLocalFile", - "SelectBbox", - "SelectBboxes", - "ShowBoolean", - "ShowFloat", - "ShowInt", - "ShowNumber", - "ShowString", - "SliceList", - "SplitStringToList", - "StringArea", - "StringToList", - "TryFreeMemory" - ], - { - "title_aux": "comfyui-easyapi-nodes" - } - ], - "https://github.com/lo-th/Comfyui_three_js": [ - [ - "ThreeView" - ], - { - "title_aux": "Comfyui_three_js" - } - ], - "https://github.com/logtd/ComfyUI-4DHumans": [ - [ - "LoadDetectron", - "LoadHMR", - "ProcessHumans", - "SelectHuman" - ], - { - "title_aux": "ComfyUI-4DHumans" - } - ], - "https://github.com/logtd/ComfyUI-APGScaling": [ - [ - "APGFunction" - ], - { - "title_aux": "ComfyUI-APGScaling" - } - ], - "https://github.com/logtd/ComfyUI-DiLightNet": [ - [ - "LoadDiLightControlNet", - "PrepareDiLightCond" - ], - { - "title_aux": "ComfyUI-DiLightNet" - } - ], - "https://github.com/logtd/ComfyUI-FLATTEN": [ - [ - "ApplyFlattenAttentionNode", - "CreateFlowNoiseNode", - "FlattenCheckpointLoaderNode", - "KSamplerFlattenNode", - "TrajectoryNode", - "UnsamplerFlattenNode" - ], - { - "title_aux": "ComfyUI-FLATTEN" - } - ], - "https://github.com/logtd/ComfyUI-Fluxtapoz": [ - [ - "AddFluxFlow", - "ApplyFluxRaveAttention", - "ApplyRefFlux", - "ApplyRegionalConds", - "ConfigureModifiedFlux", - "CreateRegionalCond", - "FlowEditForwardSampler", - "FlowEditGuider", - "FlowEditReverseSampler", - "FlowEditSampler", - "FluxAttnOverride", - "FluxDeGuidance", - "FluxForwardODESampler", - "FluxInverseSampler", - "FluxNoiseMixer", - "FluxReverseODESampler", - "InFluxFlipSigmas", - "InFluxModelSamplingPred", - "OutFluxModelSamplingPred", - "PAGAttention", - "PrepareAttnBank", - "RFDoubleBlocksOverride", - "RFSingleBlocksOverride", - "RegionalStyleModelApply", - "SEGAttention" - ], - { - "title_aux": "ComfyUI-Fluxtapoz" - } - ], - "https://github.com/logtd/ComfyUI-InstanceDiffusion": [ - [ - "ApplyScaleUModelNode", - "DownloadInstanceDiffusionModels", - "InstanceDiffusionTrackingPrompt", - "LoadInstanceFusersNode", - "LoadInstancePositionNetModel", - "LoadInstanceScaleUNode" - ], - { - "title_aux": "InstanceDiffusion Nodes" - } - ], - "https://github.com/logtd/ComfyUI-InversedNoise": [ - [ - "CombineNoiseLatentNode", - "MixNoiseNode", - "SamplerInversedEulerNode" - ], - { - "title_aux": "ComfyUI-InversedNoise" - } - ], - "https://github.com/logtd/ComfyUI-LTXTricks": [ - [ - "AddLatentGuide", - "LTXAttentioOverride", - "LTXAttentionBank", - "LTXAttnOverride", - "LTXFetaEnhance", - "LTXFlowEditCFGGuider", - "LTXFlowEditSampler", - "LTXForwardModelSamplingPred", - "LTXPerturbedAttention", - "LTXPrepareAttnInjections", - "LTXRFForwardODESampler", - "LTXRFReverseODESampler", - "LTXReverseModelSamplingPred", - "ModifyLTXModel" - ], - { - "title_aux": "ComfyUI-LTXTricks" - } - ], - "https://github.com/logtd/ComfyUI-MochiEdit": [ - [ - "MochiPrepareSigmas", - "MochiResampler", - "MochiUnsampler", - "MochiWrapperResampler", - "MochiWrapperSamplerCustom", - "MochiWrapperUnsampler" - ], - { - "title_aux": "ComfyUI-MochiEdit" - } - ], - "https://github.com/logtd/ComfyUI-MotionThiefExperiment": [ - [ - "ApplyRefMotionNode", - "MotionRefSettingsCustomNode", - "MotionRefSettingsDefaultNode" - ], - { - "title_aux": "ComfyUI-MotionThiefExperiment" - } - ], - "https://github.com/logtd/ComfyUI-RAVE_ATTN": [ - [ - "ApplyRaveAttentionNode", - "AttentionOverrideSD15Node", - "AttentionOverrideSDXLNode" - ], - { - "title_aux": "ComfyUI-RAVE Attention" - } - ], - "https://github.com/logtd/ComfyUI-ReNoise": [ - [ - "ReNoiseModelSamplingPred", - "ReNoiseSampler" - ], - { - "title_aux": "ComfyUI-ReNoise" - } - ], - "https://github.com/logtd/ComfyUI-RefSampling": [ - [ - "ApplyRefContentNode", - "ApplyRefStyleNode", - "ApplyRefUNetNode" - ], - { - "title_aux": "ComfyUI-RefSampling" - } - ], - "https://github.com/logtd/ComfyUI-RefUNet": [ - [ - "ConfigRefMapAdv", - "ConfigureRefNet", - "CreateRefBank", - "CustomRefMapSD1", - "PrepareRefLatents", - "ReadSampler", - "RefModelSamplingPred", - "VisionClipEncode", - "WriteSampler" - ], - { - "title_aux": "ComfyUI-RefUNet" - } - ], - "https://github.com/logtd/ComfyUI-SEGAttention": [ - [ - "SEGAttention" - ], - { - "title_aux": "ComfyUI-SEGAttention" - } - ], - "https://github.com/logtd/ComfyUI-SSREncoder": [ - [ - "ApplySSR", - "EncodeSSRQuery", - "LoadSSRAligner", - "LoadSSRAttention" - ], - { - "title_aux": "ComfyUI-SSREncoder" - } - ], - "https://github.com/logtd/ComfyUI-SeeCoder": [ - [ - "LoadSeeCoder", - "LoadSeeCoderUncond", - "SeecoderEncode" - ], - { - "title_aux": "ComfyUI-SeeCoder" - } - ], - "https://github.com/logtd/ComfyUI-TrackingNodes": [ - [ - "OpenPoseTrackerNode", - "YOLOTrackerNode" - ], - { - "title_aux": "Tracking Nodes for Videos" - } - ], - "https://github.com/logtd/ComfyUI-ViewCrafter": [ - [ - "ApplyViewCrafter", - "LoadViewCrafter", - "ScaleImages" - ], - { - "title_aux": "ComfyUI-ViewCrafter" - } - ], - "https://github.com/longgui0318/comfyui-common-util": [ - [ - "Added Layer Info To Array", - "Enhanced Random Light Source", - "Float Relay", - "HLFrequencyDetailRestore", - "Image Add Alpha", - "Image Frequency Analyzer", - "Image Relay", - "Image Remove Alpha", - "Image Resize With Padding", - "Init Layer Info Array", - "Int Relay", - "Layer Image Seleted", - "Layer Images IPAdapter Advanced", - "Layer Info Array Fuse", - "Mask Relay", - "String Relay" - ], - { - "title_aux": "comfyui-common-util" - } - ], - "https://github.com/longgui0318/comfyui-llm-assistant": [ - [ - "Chat With LLM", - "Generate Stable Diffsution Prompt With LLM", - "Translate Text With LLM" - ], - { - "title_aux": "comfyui-llm-assistant" - } - ], - "https://github.com/longgui0318/comfyui-magic-clothing": [ - [ - "Add Magic Clothing Attention", - "Change Pipeline Dtype And Device", - "Change Pixel Value Normalization", - "Diffusers Model Makeup &MC", - "Diffusers Scheduler Loader &MC", - "Load Magic Clothing Adapter", - "Load Magic Clothing Model", - "Load Magic Clothing Pipeline", - "Load Magic Clothing Pipeline With Path", - "RUN Magic Clothing Diffusers Model" - ], - { - "title_aux": "comfyui-magic-clothing" - } - ], - "https://github.com/longgui0318/comfyui-mask-util": [ - [ - "Image Adaptive Crop M&R", - "Image Adaptive Crop With Mask", - "Image Change DType", - "Image Change Device", - "Image Resolution Adaptive With X", - "Image Resolution Limit With 8K", - "Load Image With Name", - "Mask Change DType", - "Mask Change Device", - "Mask Selection Of Masks", - "Model Change Device", - "Model Change Device Repeaters", - "Output Image To Input", - "Split Masks" - ], - { - "title_aux": "comfyui-mask-util" - } - ], - "https://github.com/lordgasmic/comfyui_save_image_with_options": [ - [ - "SaveImageWithOptions" - ], - { - "title_aux": "comfyui_save_image_with_options" - } - ], - "https://github.com/lordgasmic/comfyui_wildcards": [ - [ - "CLIPTextEncodeWithWildcards" - ], - { - "title_aux": "comfyui_wildcards" - } - ], - "https://github.com/lquesada/ComfyUI-Inpaint-CropAndStitch": [ - [ - "InpaintCrop", - "InpaintExtendOutpaint", - "InpaintResize", - "InpaintStitch" - ], - { - "title_aux": "ComfyUI-Inpaint-CropAndStitch" - } - ], - "https://github.com/lquesada/ComfyUI-Interactive": [ - [ - "InteractiveFloat", - "InteractiveInteger", - "InteractiveReset", - "InteractiveSave", - "InteractiveSeed", - "InteractiveSelector", - "InteractiveSelectorWithParameters", - "InteractiveString", - "InteractiveStringAppend", - "InteractiveStringMultiline", - "InteractiveSwitch", - "InteractiveSwitchWithParameters" - ], - { - "title_aux": "ComfyUI-Interactive" - } - ], - "https://github.com/lquesada/ComfyUI-Prompt-Combinator": [ - [ - "PromptCombinator", - "PromptCombinatorExportGallery", - "PromptCombinatorMerger", - "PromptCombinatorRandomPrompt" - ], - { - "title_aux": "ComfyUI-Prompt-Combinator" - } - ], - "https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils": [ - [ - "AddMaskForICLora", - "AutoPatch", - "ConcatContextWindow", - "CreateContextWindow" - ], - { - "title_aux": "Comfyui-In-Context-Lora-Utils" - } - ], - "https://github.com/lrzjason/Comfyui-Kolors-Utils": [ - [ - "SaveKolors", - "SaveWeightAsKolorsUnet" - ], - { - "title_aux": "Comfyui Kolors Utils" - } - ], - "https://github.com/ltdrdata/ComfyUI-Impact-Pack": [ - [ - "AddMask", - "AnyPipeToBasic", - "BasicPipeToDetailerPipe", - "BasicPipeToDetailerPipeSDXL", - "BboxDetectorCombined", - "BboxDetectorCombined_v2", - "BboxDetectorForEach", - "BboxDetectorSEGS", - "BitwiseAndMask", - "BitwiseAndMaskForEach", - "CLIPSegDetectorProvider", - "CfgScheduleHookProvider", - "CombineRegionalPrompts", - "CoreMLDetailerHookProvider", - "CustomNoiseDetailerHookProvider", - "DenoiseScheduleHookProvider", - "DenoiseSchedulerDetailerHookProvider", - "DetailerForEach", - "DetailerForEachDebug", - "DetailerForEachDebugPipe", - "DetailerForEachPipe", - "DetailerForEachPipeForAnimateDiff", - "DetailerHookCombine", - "DetailerPipeToBasicPipe", - "EditBasicPipe", - "EditDetailerPipe", - "EditDetailerPipeSDXL", - "EmptySegs", - "FaceDetailer", - "FaceDetailerPipe", - "FromBasicPipe", - "FromBasicPipe_v2", - "FromDetailerPipe", - "FromDetailerPipeSDXL", - "FromDetailerPipe_v2", - "GITSSchedulerFuncProvider", - "ImageListToImageBatch", - "ImageMaskSwitch", - "ImageReceiver", - "ImageSender", - "ImpactAssembleSEGS", - "ImpactBoolean", - "ImpactCombineConditionings", - "ImpactCompare", - "ImpactConcatConditionings", - "ImpactConditionalBranch", - "ImpactConditionalBranchSelMode", - "ImpactConditionalStopIteration", - "ImpactControlBridge", - "ImpactControlNetApplyAdvancedSEGS", - "ImpactControlNetApplySEGS", - "ImpactControlNetClearSEGS", - "ImpactConvertDataType", - "ImpactCount_Elts_in_SEGS", - "ImpactDecomposeSEGS", - "ImpactDilateMask", - "ImpactDilateMaskInSEGS", - "ImpactDilate_Mask_SEG_ELT", - "ImpactDummyInput", - "ImpactEdit_SEG_ELT", - "ImpactExecutionOrderController", - "ImpactFlattenMask", - "ImpactFloat", - "ImpactFrom_SEG_ELT", - "ImpactFrom_SEG_ELT_bbox", - "ImpactFrom_SEG_ELT_crop_region", - "ImpactGaussianBlurMask", - "ImpactGaussianBlurMaskInSEGS", - "ImpactHFTransformersClassifierProvider", - "ImpactIPAdapterApplySEGS", - "ImpactIfNone", - "ImpactImageBatchToImageList", - "ImpactImageInfo", - "ImpactInt", - "ImpactInversedSwitch", - "ImpactIsNotEmptySEGS", - "ImpactKSamplerAdvancedBasicPipe", - "ImpactKSamplerBasicPipe", - "ImpactLatentInfo", - "ImpactListBridge", - "ImpactLogger", - "ImpactLogicalOperators", - "ImpactMakeAnyList", - "ImpactMakeImageBatch", - "ImpactMakeImageList", - "ImpactMakeMaskBatch", - "ImpactMakeMaskList", - "ImpactMakeTileSEGS", - "ImpactMinMax", - "ImpactNeg", - "ImpactNegativeConditioningPlaceholder", - "ImpactNodeSetMuteState", - "ImpactQueueTrigger", - "ImpactQueueTriggerCountdown", - "ImpactRemoteBoolean", - "ImpactRemoteInt", - "ImpactSEGSClassify", - "ImpactSEGSConcat", - "ImpactSEGSLabelAssign", - "ImpactSEGSLabelFilter", - "ImpactSEGSMerge", - "ImpactSEGSOrderedFilter", - "ImpactSEGSPicker", - "ImpactSEGSRangeFilter", - "ImpactSEGSToMaskBatch", - "ImpactSEGSToMaskList", - "ImpactScaleBy_BBOX_SEG_ELT", - "ImpactSchedulerAdapter", - "ImpactSegsAndMask", - "ImpactSegsAndMaskForEach", - "ImpactSetWidgetValue", - "ImpactSimpleDetectorSEGS", - "ImpactSimpleDetectorSEGSPipe", - "ImpactSimpleDetectorSEGS_for_AD", - "ImpactSleep", - "ImpactStringSelector", - "ImpactSwitch", - "ImpactValueReceiver", - "ImpactValueSender", - "ImpactWildcardEncode", - "ImpactWildcardProcessor", - "IterativeImageUpscale", - "IterativeLatentUpscale", - "KSamplerAdvancedProvider", - "KSamplerProvider", - "LatentPixelScale", - "LatentReceiver", - "LatentSender", - "LatentSwitch", - "MMDetDetectorProvider", - "MMDetLoader", - "MaskDetailerPipe", - "MaskListToMaskBatch", - "MaskPainter", - "MaskRectArea", - "MaskRectAreaAdvanced", - "MaskToSEGS", - "MaskToSEGS_for_AnimateDiff", - "MasksToMaskList", - "MediaPipeFaceMeshToSEGS", - "NoiseInjectionDetailerHookProvider", - "NoiseInjectionHookProvider", - "ONNXDetectorProvider", - "ONNXDetectorSEGS", - "PixelKSampleHookCombine", - "PixelKSampleUpscalerProvider", - "PixelKSampleUpscalerProviderPipe", - "PixelTiledKSampleUpscalerProvider", - "PixelTiledKSampleUpscalerProviderPipe", - "PreviewBridge", - "PreviewBridgeLatent", - "PreviewDetailerHookProvider", - "ReencodeLatent", - "ReencodeLatentPipe", - "RegionalPrompt", - "RegionalSampler", - "RegionalSamplerAdvanced", - "RemoveImageFromSEGS", - "RemoveNoiseMask", - "SAMDetectorCombined", - "SAMDetectorSegmented", - "SAMLoader", - "SEGSDetailer", - "SEGSDetailerForAnimateDiff", - "SEGSLabelFilterDetailerHookProvider", - "SEGSOrderedFilterDetailerHookProvider", - "SEGSPaste", - "SEGSPreview", - "SEGSPreviewCNet", - "SEGSRangeFilterDetailerHookProvider", - "SEGSSwitch", - "SEGSToImageList", - "SEGSUpscaler", - "SEGSUpscalerPipe", - "SegmDetectorCombined", - "SegmDetectorCombined_v2", - "SegmDetectorForEach", - "SegmDetectorSEGS", - "Segs Mask", - "Segs Mask ForEach", - "SegsMaskCombine", - "SegsToCombinedMask", - "SetDefaultImageForSEGS", - "StepsScheduleHookProvider", - "StringListToString", - "SubtractMask", - "SubtractMaskForEach", - "TiledKSamplerProvider", - "ToBasicPipe", - "ToBinaryMask", - "ToDetailerPipe", - "ToDetailerPipeSDXL", - "TwoAdvancedSamplersForMask", - "TwoSamplersForMask", - "TwoSamplersForMaskUpscalerProvider", - "TwoSamplersForMaskUpscalerProviderPipe", - "UnsamplerDetailerHookProvider", - "UnsamplerHookProvider", - "VariationNoiseDetailerHookProvider", - "WildcardPromptFromString" - ], - { - "author": "Dr.Lt.Data", - "description": "This extension offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler.", - "nickname": "Impact Pack", - "preemptions": [ - "SAMLoader" - ], - "title": "Impact Pack", - "title_aux": "ComfyUI Impact Pack" - } - ], - "https://github.com/ltdrdata/ComfyUI-Impact-Subpack": [ - [ - "UltralyticsDetectorProvider" - ], - { - "author": "Dr.Lt.Data", - "description": "This extension provides UltralyticsDetectorProvider node", - "nickname": "Impact Subpack", - "title": "Impact Subpack", - "title_aux": "ComfyUI Impact Subpack" - } - ], - "https://github.com/ltdrdata/ComfyUI-Inspire-Pack": [ - [ - "AnimeLineArt_Preprocessor_Provider_for_SEGS //Inspire", - "ApplyLBW //Inspire", - "ApplyRegionalIPAdapters //Inspire", - "BindImageListPromptList //Inspire", - "CLIPTextEncodeWithWeight //Inspire", - "CacheBackendData //Inspire", - "CacheBackendDataList //Inspire", - "CacheBackendDataNumberKey //Inspire", - "CacheBackendDataNumberKeyList //Inspire", - "CacheBridge //Inspire", - "Canny_Preprocessor_Provider_for_SEGS //Inspire", - "ChangeImageBatchSize //Inspire", - "ChangeLatentBatchSize //Inspire", - "CheckpointLoaderSimpleShared //Inspire", - "ColorMapToMasks //Inspire", - "ColorMaskToDepthMask //Inspire", - "Color_Preprocessor_Provider_for_SEGS //Inspire", - "CompositeNoise //Inspire", - "ConcatConditioningsWithMultiplier //Inspire", - "ConditioningStretch //Inspire", - "ConditioningUpscale //Inspire", - "DWPreprocessor_Provider_for_SEGS //Inspire", - "FakeScribblePreprocessor_Provider_for_SEGS //Inspire", - "FloatRange //Inspire", - "ForeachListBegin //Inspire", - "ForeachListEnd //Inspire", - "FromIPAdapterPipe //Inspire", - "GlobalSampler //Inspire", - "GlobalSeed //Inspire", - "HEDPreprocessor_Provider_for_SEGS //Inspire", - "HyperTile //Inspire", - "IPAdapterModelHelper //Inspire", - "ImageBatchSplitter //Inspire", - "InpaintPreprocessor_Provider_for_SEGS //Inspire", - "IsCached //Inspire", - "KSampler //Inspire", - "KSamplerAdvanced //Inspire", - "KSamplerAdvancedPipe //Inspire", - "KSamplerAdvancedProgress //Inspire", - "KSamplerPipe //Inspire", - "KSamplerProgress //Inspire", - "LatentBatchSplitter //Inspire", - "LeRes_DepthMap_Preprocessor_Provider_for_SEGS //Inspire", - "LineArt_Preprocessor_Provider_for_SEGS //Inspire", - "ListCounter //Inspire", - "LoadDiffusionModelShared //Inspire", - "LoadImage //Inspire", - "LoadImageListFromDir //Inspire", - "LoadImagesFromDir //Inspire", - "LoadLBW //Inspire", - "LoadPromptsFromDir //Inspire", - "LoadPromptsFromFile //Inspire", - "LoadSinglePromptFromFile //Inspire", - "LoadTextEncoderShared //Inspire", - "LoraBlockInfo //Inspire", - "LoraLoaderBlockWeight //Inspire", - "MakeBasicPipe //Inspire", - "MakeLBW //Inspire", - "Manga2Anime_LineArt_Preprocessor_Provider_for_SEGS //Inspire", - "MediaPipeFaceMeshDetectorProvider //Inspire", - "MediaPipe_FaceMesh_Preprocessor_Provider_for_SEGS //Inspire", - "MeshGraphormerDepthMapPreprocessorProvider_for_SEGS //Inspire", - "MiDaS_DepthMap_Preprocessor_Provider_for_SEGS //Inspire", - "OpenPose_Preprocessor_Provider_for_SEGS //Inspire", - "PromptBuilder //Inspire", - "PromptExtractor //Inspire", - "RGB_HexToHSV //Inspire", - "RandomGeneratorForList //Inspire", - "RandomNoise //Inspire", - "RegionalCFG //Inspire", - "RegionalConditioningColorMask //Inspire", - "RegionalConditioningSimple //Inspire", - "RegionalIPAdapterColorMask //Inspire", - "RegionalIPAdapterEncodedColorMask //Inspire", - "RegionalIPAdapterEncodedMask //Inspire", - "RegionalIPAdapterMask //Inspire", - "RegionalPromptColorMask //Inspire", - "RegionalPromptSimple //Inspire", - "RegionalSeedExplorerColorMask //Inspire", - "RegionalSeedExplorerMask //Inspire", - "RemoveBackendData //Inspire", - "RemoveBackendDataNumberKey //Inspire", - "RemoveControlNet //Inspire", - "RemoveControlNetFromRegionalPrompts //Inspire", - "RetrieveBackendData //Inspire", - "RetrieveBackendDataNumberKey //Inspire", - "SaveLBW //Inspire", - "ScheduledCFGGuider //Inspire", - "ScheduledPerpNegCFGGuider //Inspire", - "SeedExplorer //Inspire", - "SelectNthMask //Inspire", - "ShowCachedInfo //Inspire", - "StableCascade_CheckpointLoader //Inspire", - "TilePreprocessor_Provider_for_SEGS //Inspire", - "ToIPAdapterPipe //Inspire", - "UnzipPrompt //Inspire", - "WildcardEncode //Inspire", - "WorklistToItemList //Inspire", - "XY Input: Lora Block Weight //Inspire", - "ZipPrompt //Inspire", - "Zoe_DepthMap_Preprocessor_Provider_for_SEGS //Inspire" - ], - { - "author": "Dr.Lt.Data", - "description": "This extension provides various nodes to support Lora Block Weight, Regional Nodes, Backend Cache, Prompt Utils, List Utils and the Impact Pack.", - "nickname": "Inspire Pack", - "nodename_pattern": "Inspire$", - "title": "Inspire Pack", - "title_aux": "ComfyUI Inspire Pack" - } - ], - "https://github.com/luandev/ComfyUI-CrewAI": [ - [ - "DisplayText", - "\ud83d\udcceCrewAI Agent", - "\ud83d\udcceCrewAI Agent List", - "\ud83d\udcceCrewAI Crew", - "\ud83d\udcceCrewAI LLM Chat GPT", - "\ud83d\udcceCrewAI LLM Hugging Face", - "\ud83d\udcceCrewAI LLM Ollama", - "\ud83d\udcceCrewAI LLM OpenAI", - "\ud83d\udcceCrewAI Task", - "\ud83d\udcceCrewAI Task List", - "\ud83d\udcceCrewAI Text" - ], - { - "title_aux": "ComfyUI CrewAI" - } - ], - "https://github.com/lucafoscili/comfyui-lf": [ - [ - "LF_Blend", - "LF_BlurImages", - "LF_Boolean", - "LF_Brightness", - "LF_CharacterImpersonator", - "LF_CheckpointSelector", - "LF_CivitAIMetadataSetup", - "LF_Clarity", - "LF_ColorAnalysis", - "LF_CompareImages", - "LF_Contrast", - "LF_ControlPanel", - "LF_Desaturation", - "LF_DisplayBoolean", - "LF_DisplayFloat", - "LF_DisplayInteger", - "LF_DisplayJSON", - "LF_DisplayPrimitiveAsJSON", - "LF_DisplayString", - "LF_EmbeddingSelector", - "LF_ExtractPromptFromLoraTag", - "LF_ExtractString", - "LF_FilmGrain", - "LF_Float", - "LF_GaussianBlur", - "LF_GetRandomKeyFromJSON", - "LF_GetValueFromJSON", - "LF_ImageClassifier", - "LF_ImageHistogram", - "LF_ImageListFromJSON", - "LF_ImagesEditingBreakpoint", - "LF_ImagesSlideshow", - "LF_Integer", - "LF_IsLandscape", - "LF_KeywordCounter", - "LF_KeywordToggleFromJSON", - "LF_LLMChat", - "LF_LLMMessenger", - "LF_LUTApplication", - "LF_LUTGeneration", - "LF_Line", - "LF_LoadAndEditImages", - "LF_LoadFileOnce", - "LF_LoadImages", - "LF_LoadLocalJSON", - "LF_LoadLoraTags", - "LF_LoadMetadata", - "LF_LoraAndEmbeddingSelector", - "LF_LoraSelector", - "LF_MarkdownDocGenerator", - "LF_MathOperation", - "LF_MultipleImageResizeForWeb", - "LF_Notify", - "LF_ParsePromptWithLoraTags", - "LF_RandomBoolean", - "LF_RegexReplace", - "LF_RegionExtractor", - "LF_ResizeImageByEdge", - "LF_ResizeImageToDimension", - "LF_ResizeImageToSquare", - "LF_ResolutionSwitcher", - "LF_SamplerSelector", - "LF_SaveImageForCivitAI", - "LF_SaveJSON", - "LF_SaveMarkdown", - "LF_SchedulerSelector", - "LF_Sepia", - "LF_SequentialSeedsGenerator", - "LF_SetValueInJSON", - "LF_ShuffleJSONKeys", - "LF_Something2Number", - "LF_Something2String", - "LF_SortJSONKeys", - "LF_String", - "LF_StringReplace", - "LF_StringTemplate", - "LF_StringToJSON", - "LF_SwitchFloat", - "LF_SwitchImage", - "LF_SwitchInteger", - "LF_SwitchJSON", - "LF_SwitchString", - "LF_UpdateUsageStatistics", - "LF_UpscaleModelSelector", - "LF_UrandomSeedGenerator", - "LF_UsageStatistics", - "LF_VAESelector", - "LF_ViewImages", - "LF_Vignette", - "LF_WallOfText", - "LF_WriteJSON" - ], - { - "title_aux": "LF Nodes" - } - ], - "https://github.com/lujiazho/ComfyUI-CatvtonFluxWrapper": [ - [ - "CatvtonFluxSampler", - "LoadCatvtonFlux", - "LoadCatvtonFluxLoRA", - "ModelPrinter" - ], - { - "title_aux": "ComfyUI-CatvtonFluxWrapper" - } - ], - "https://github.com/lumalabs/ComfyUI-LumaAI-API": [ - [ - "CharacterReference", - "ConcatReferences", - "ImgBBUpload", - "LumaAIClient", - "LumaExtendGeneration", - "LumaImage2Video", - "LumaImageGeneration", - "LumaInterpolateGenerations", - "LumaModifyImage", - "LumaPreviewVideo", - "LumaText2Video", - "Reference" - ], - { - "title_aux": "ComfyUI-LumaAI-API" - } - ], - "https://github.com/m-sokes/ComfyUI-Sokes-Nodes": [ - [ - "Custom Date Format | sokes \ud83e\uddac", - "Latent Switch x9 | sokes \ud83e\uddac" - ], - { - "title_aux": "ComfyUI Sokes Nodes" - } - ], - "https://github.com/maepopi/Diffusers-in-ComfyUI": [ - [ - "BLoRALoader", - "GenerateImg2Image", - "GenerateInpaintImage", - "GenerateTxt2Image", - "Img2ImgStableDiffusionPipeline", - "InpaintingStableDiffusionPipeline", - "LoRALoader", - "MakeCanny", - "Text2ImgStableDiffusionPipeline" - ], - { - "title_aux": "Diffusers-in-ComfyUI" - } - ], - "https://github.com/magic-quill/ComfyUI_MagicQuill": [ - [ - "MagicQuill" - ], - { - "author": "Zichen LIU (https://zliucz.github.io/) and Yue YU (https://bruceyyu.github.io/)", - "description": "Official ComfyUI Implementations for Paper - MagicQuill: An Intelligent Interactive Image Editing System", - "nickname": "MagicQuill nodes", - "title": "MagicQuill", - "title_aux": "ComfyUI_MagicQuill" - } - ], - "https://github.com/mango-rgb/ComfyUI-Mango-Random-node": [ - [ - "RandomFilePathNode", - "RandomImageNode", - "RandomImagePathNode", - "RandomTextNode", - "RandomVideoPathNode" - ], - { - "title_aux": "ComfyUI-Mango-Random" - } - ], - "https://github.com/mape/ComfyUI-mape-Helpers": [ - [ - "mape Variable" - ], - { - "author": "mape", - "description": "Various QoL improvements like prompt tweaking, variable assignment, image preview, fuzzy search, error reporting, organizing and node navigation.", - "nickname": "\ud83d\udfe1 mape's helpers", - "title": "mape's helpers", - "title_aux": "mape's helpers" - } - ], - "https://github.com/maracman/ComfyUI-SubjectStyle-CSV": [ - [ - "CSVPromptProcessor" - ], - { - "title_aux": "ComfyUI-SubjectStyle-CSV" - } - ], - "https://github.com/marcoc2/ComfyUI-AnotherUtils": [ - [ - "CustomCrop", - "LoadImagesOriginal", - "NearestUpscale", - "PixelArtNormalizer", - "SmartResize" - ], - { - "title_aux": "Image Processing Suite for ComfyUI" - } - ], - "https://github.com/marduk191/ComfyUI-Fluxpromptenhancer": [ - [ - "FluxPromptEnhance" - ], - { - "title_aux": "Flux Prompt Enhance Node for ComfyUI" - } - ], - "https://github.com/marduk191/comfyui-marnodes": [ - [ - "ImageToDevice", - "marduk191_5_text_string", - "marduk191_5way_text_switch", - "marduk191_s_random_latent", - "marduk191_workflow_settings" - ], - { - "author": "\u02f6marduk191", - "description": "marduk191s nodes.", - "nickname": "marduk191 workflow settings", - "title": "marduk191 workflow settings", - "title_aux": "marduk191 workflow settings" - } - ], - "https://github.com/marhensa/sdxl-recommended-res-calc": [ - [ - "RecommendedResCalc" - ], - { - "title_aux": "Recommended Resolution Calculator" - } - ], - "https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver": [ - [ - "FluxPromptSaver", - "FluxTextSampler", - "ModelName" - ], - { - "title_aux": "ComfyUI Flux Prompt Saver" - } - ], - "https://github.com/martijnat/comfyui-previewlatent": [ - [ - "PreviewLatent", - "PreviewLatentAdvanced", - "PreviewLatentXL" - ], - { - "title_aux": "comfyui-previewlatent" - } - ], - "https://github.com/massao000/ComfyUI_aspect_ratios": [ - [ - "Aspect Ratios Node" - ], - { - "title_aux": "ComfyUI_aspect_ratios" - } - ], - "https://github.com/matan1905/ComfyUI-Serving-Toolkit": [ - [ - "AlwaysExecute", - "CommandPickerServing", - "DiscordServing", - "ServingInputImage", - "ServingInputImageAsLatent", - "ServingInputNumber", - "ServingInputText", - "ServingInputTextImage", - "ServingMultiImageOutput", - "ServingOutput", - "ServingTextOutput", - "TelegramServing", - "WebSocketServing" - ], - { - "title_aux": "ComfyUI Serving toolkit" - } - ], - "https://github.com/mattjohnpowell/comfyui-lmstudio-image-to-text-node": [ - [ - "LM Studio Image To Text", - "LM Studio Text Generation" - ], - { - "author": "Matt John Powell", - "description": "This extension provides two custom nodes for ComfyUI that integrate LM Studio's capabilities:", - "nickname": "LM Studio Nodes", - "title": "LM Studio Nodes for ComfyUI", - "title_aux": "LM Studio Image to Text Node for ComfyUI" - } - ], - "https://github.com/mav-rik/facerestore_cf": [ - [ - "CropFace", - "FaceRestoreCFWithModel", - "FaceRestoreModelLoader" - ], - { - "title_aux": "Facerestore CF (Code Former)" - } - ], - "https://github.com/mbrostami/ComfyUI-HF": [ - [ - "GPT2Node" - ], - { - "title_aux": "ComfyUI-HF" - } - ], - "https://github.com/mbrostami/ComfyUI-TITrain": [ - [ - "TextualInversionTraining", - "TextualInversionTrainingSDXL" - ], - { - "title_aux": "ComfyUI-TITrain" - } - ], - "https://github.com/mcmonkeyprojects/sd-dynamic-thresholding": [ - [ - "DynamicThresholdingFull", - "DynamicThresholdingSimple" - ], - { - "title_aux": "Dynamic Thresholding" - } - ], - "https://github.com/meanin2/comfyui-MGnodes": [ - [ - "ImageWatermarkNode", - "TextExtractorNode" - ], - { - "title_aux": "ComfyUI Image Watermarking Node" - } - ], - "https://github.com/meanin2/comfyui-watermarking": [ - [ - "ImageWatermarkNode", - "TextExtractorNode" - ], - { - "title_aux": "ComfyUI Watermark Image Node" - } - ], - "https://github.com/meap158/ComfyUI-Background-Replacement": [ - [ - "BackgroundReplacement", - "ImageComposite" - ], - { - "title_aux": "ComfyUI-Background-Replacement" - } - ], - "https://github.com/meap158/ComfyUI-GPU-temperature-protection": [ - [ - "GPUTemperatureProtection" - ], - { - "title_aux": "GPU temperature protection" - } - ], - "https://github.com/meap158/ComfyUI-Prompt-Expansion": [ - [ - "PromptExpansion" - ], - { - "title_aux": "ComfyUI-Prompt-Expansion" - } - ], - "https://github.com/mech-tools/comfyui-checkpoint-automatic-config": [ - [ - "CheckpointAutomaticConfig", - "ConfigPipe" - ], - { - "title_aux": "ComfyUI Checkpoint Automatic Config" - } - ], - "https://github.com/melMass/comfy_mtb": [ - [ - "Animation Builder (mtb)", - "Any To String (mtb)", - "Batch Float (mtb)", - "Batch Float Assemble (mtb)", - "Batch Float Fill (mtb)", - "Batch Make (mtb)", - "Batch Merge (mtb)", - "Batch Shake (mtb)", - "Batch Shape (mtb)", - "Batch Transform (mtb)", - "Bbox (mtb)", - "Bbox From Mask (mtb)", - "Blur (mtb)", - "Color Correct (mtb)", - "Colored Image (mtb)", - "Concat Images (mtb)", - "Crop (mtb)", - "Debug (mtb)", - "Deep Bump (mtb)", - "Export With Ffmpeg (mtb)", - "Face Swap (mtb)", - "Film Interpolation (mtb)", - "Fit Number (mtb)", - "Float To Number (mtb)", - "Get Batch From History (mtb)", - "Image Compare (mtb)", - "Image Premultiply (mtb)", - "Image Remove Background Rembg (mtb)", - "Image Resize Factor (mtb)", - "Image Tile Offset (mtb)", - "Int To Bool (mtb)", - "Int To Number (mtb)", - "Interpolate Clip Sequential (mtb)", - "Latent Lerp (mtb)", - "Load Face Analysis Model (mtb)", - "Load Face Enhance Model (mtb)", - "Load Face Swap Model (mtb)", - "Load Film Model (mtb)", - "Load Image From Url (mtb)", - "Load Image Sequence (mtb)", - "Mask To Image (mtb)", - "Math Expression (mtb)", - "Model Patch Seamless (mtb)", - "Pick From Batch (mtb)", - "Qr Code (mtb)", - "Restore Face (mtb)", - "Save Gif (mtb)", - "Save Image Grid (mtb)", - "Save Image Sequence (mtb)", - "Save Tensors (mtb)", - "Sharpen (mtb)", - "Smart Step (mtb)", - "Stack Images (mtb)", - "String Replace (mtb)", - "Styles Loader (mtb)", - "Text To Image (mtb)", - "Transform Image (mtb)", - "Uncrop (mtb)", - "Unsplash Image (mtb)", - "Vae Decode (mtb)" - ], - { - "nodename_pattern": "\\(mtb\\)$", - "title_aux": "MTB Nodes" - } - ], - "https://github.com/mephisto83/petty-paint-comfyui-node": [ - [ - "ConvertWhiteToAlpha", - "PPGenerateRandomFloat", - "PPGenerateRandomNumber", - "PPKSamplerAdvanced", - "PPSelectRandomValue", - "PettyImageImageColorToMask", - "PettyPaintAppend", - "PettyPaintApplyLoRAStack", - "PettyPaintArguments", - "PettyPaintBlurs", - "PettyPaintCheckpointLoaderSimple", - "PettyPaintComponent", - "PettyPaintConditioningSetMaskAndCombine", - "PettyPaintControlNetToMasking", - "PettyPaintConvert", - "PettyPaintCountFiles", - "PettyPaintEnsureDirectory", - "PettyPaintExec", - "PettyPaintFakeConvert", - "PettyPaintFileExists", - "PettyPaintImageColorsToMasks", - "PettyPaintImageCompositeMasked", - "PettyPaintImageDims", - "PettyPaintImageMaskCropper", - "PettyPaintImagePlacement", - "PettyPaintImageSave", - "PettyPaintImageStore", - "PettyPaintImageToMask", - "PettyPaintImagesToMasks", - "PettyPaintJsonMap", - "PettyPaintJsonRead", - "PettyPaintJsonReadArray", - "PettyPaintKSampler", - "PettyPaintKSamplerAdvanced", - "PettyPaintLoRAStack", - "PettyPaintLoadImage", - "PettyPaintLoadImageMasks", - "PettyPaintLoadImages", - "PettyPaintMap", - "PettyPaintMasksToImages", - "PettyPaintNot", - "PettyPaintPassThroughNode", - "PettyPaintProcessor", - "PettyPaintRemoveAddText", - "PettyPaintSDTurboScheduler", - "PettyPaintStoryImage", - "PettyPaintText", - "PettyPaintTexts_to_Conditioning", - "PettyPaintToJson", - "PettyPaintVAEDecode", - "SkippableVAEEncode" - ], - { - "title_aux": "petty-paint-comfyui-node" - } - ], - "https://github.com/meshmesh-io/ComfyUI-MeshMesh": [ - [ - "ColorPicker", - "MasksToColoredMasks" - ], - { - "title_aux": "ComfyUI-MeshMesh" - } - ], - "https://github.com/meshmesh-io/mm-comfyui-loopback": [ - [ - "Loop", - "LoopEnd", - "LoopEnd_SEGIMAGE", - "LoopStart", - "LoopStart_SEGIMAGE" - ], - { - "title_aux": "mm-comfyui-loopback" - } - ], - "https://github.com/meshmesh-io/mm-comfyui-megamask": [ - [ - "ColorListMaskToImage", - "FlattenAndCombineMaskImages" - ], - { - "title_aux": "mm-comfyui-megamask" - } - ], - "https://github.com/metal3d/ComfyUI_Human_Parts": [ - [ - "HumanParts" - ], - { - "title_aux": "Human Parts Detector" - } - ], - "https://github.com/metncelik/comfyui_met_suite": [ - [ - "BBOXPadding", - "BBOXResize", - "ImageResizeKeepRatio", - "PrimitiveBBOX", - "RaiseError" - ], - { - "title_aux": "comfyui_met_suite" - } - ], - "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext": [ - [ - "Add zSNR Sigma max", - "ConcatSigmas", - "CosineScheduler", - "GaussianScheduler", - "InvertSigmas", - "LogNormal Scheduler", - "OffsetSigmas", - "PerpNegScheduledCFGGuider", - "ScheduledCFGGuider" - ], - { - "title_aux": "ComfyUI-ScheduledGuider-Ext" - } - ], - "https://github.com/mgfxer/ComfyUI-FrameFX": [ - [ - "DynamicAnimatedWeightsHelper", - "EdgeFXSourceImages", - "FlorencePromptTravelHelper", - "LivePromptInterpolation", - "MaskSequenceHelper", - "PromptStackManager", - "PromptTravelHelper" - ], - { - "author": "mgfxer", - "description": "This extension provides various frame and mask sequence manipulation tools for animation workflows.", - "nickname": "FrameFX \ud83d\udcab", - "title": "FrameFX", - "title_aux": "ComfyUI-FrameFX" - } - ], - "https://github.com/miaoshouai/ComfyUI-Miaoshouai-Tagger": [ - [ - "Miaoshouai_Caption_Analyzer", - "Miaoshouai_Flux_CLIPTextEncode", - "Miaoshouai_SaveTags", - "Miaoshouai_Tagger" - ], - { - "title_aux": "ComfyUI-Miaoshouai-Tagger" - } - ], - "https://github.com/microbote/ComfyUI-StyledCLIPTextEncode": [ - [ - "StyledCLIPTextEncode" - ], - { - "title_aux": "StyledCLIPTextEncode" - } - ], - "https://github.com/mihaiiancu/ComfyUI_Inpaint": [ - [ - "InpaintMediapipe" - ], - { - "title_aux": "mihaiiancu/Inpaint" - } - ], - "https://github.com/mikebilly/Transparent-background-comfyUI": [ - [ - "Transparentbackground RemBg" - ], - { - "title_aux": "Transparent-background-comfyUI" - } - ], - "https://github.com/mikkel/ComfyUI-text-overlay": [ - [ - "Image Text Overlay" - ], - { - "title_aux": "ComfyUI - Text Overlay Plugin" - } - ], - "https://github.com/mikkel/comfyui-mask-boundingbox": [ - [ - "Mask Bounding Box" - ], - { - "title_aux": "ComfyUI - Mask Bounding Box" - } - ], - "https://github.com/mingsky-ai/ComfyUI-MingNodes": [ - [ - "AddWaterMarkNode", - "AdjustBrightnessContrastSaturationNode", - "BaiduTranslateNode", - "ColorBalanceNode", - "ConvertGrayChannelNode", - "HSLColorNode", - "HighlightShadowBrightnessNode", - "ImitationHueNode", - "LightShapeNode", - "RemoveWatermarkNode" - ], - { - "title_aux": "ComfyUI-MingNodes" - } - ], - "https://github.com/mira-6/comfyui-sasolver": [ - [ - "SamplerSASolver", - "SamplerSASolverExperimental" - ], - { - "title_aux": "comfyui-sasolver" - } - ], - "https://github.com/mirabarukaso/ComfyUI_Mira": [ - [ - "BooleanListInterpreter1", - "BooleanListInterpreter4", - "BooleanListInterpreter8", - "CanvasCreatorAdvanced", - "CanvasCreatorBasic", - "CanvasCreatorSimple", - "CreateMaskWithCanvas", - "CreateNestedPNGMask", - "CreateSimpleMask", - "CreateTillingPNGMask", - "CreateWatermarkRemovalMask", - "EightBooleanTrigger", - "EightFloats", - "EvenOrOdd", - "EvenOrOddList", - "FloatListInterpreter1", - "FloatListInterpreter4", - "FloatListInterpreter8", - "FloatMultiplication", - "FourBooleanTrigger", - "FourFloats", - "FunctionSelectAuto", - "FunctionSwap", - "ImageBrightness", - "ImageColorTransferMira", - "ImageContrast", - "ImageGamma", - "ImageGrayscale", - "ImageHUE", - "ImageRGBChannel", - "ImageSaturation", - "ImageSharpness", - "ImageToneCurve", - "IntMultiplication", - "IntSubtraction", - "IntToFloatMultiplication", - "LoRALoaderWithNameStacker", - "LogicNot", - "NoneToZero", - "NumeralToString", - "OneFloat", - "PngColorMasksToMaskList", - "PngColorMasksToRGB", - "PngColorMasksToString", - "PngColorMasksToStringList", - "PngRectanglesToMask", - "PngRectanglesToMaskList", - "RandomNestedLayouts", - "RandomTillingLayouts", - "SN74HC1G86", - "SN74HC86", - "SN74LVC1G125", - "SeedGeneratorMira", - "SingleBooleanTrigger", - "SixBooleanTrigger", - "StepsAndCfg", - "TextBox", - "TextCombinerSix", - "TextCombinerTwo", - "TextLoopCombiner", - "TextSwitcherThreeWays", - "TextSwitcherTwoWays", - "TextWildcardSeprator", - "TextWithBooleanSwitchAndCommonTextInput", - "TwoBooleanTrigger", - "TwoFloats", - "UpscaleImageByModelThenResize" - ], - { - "title_aux": "ComfyUI_Mira" - } - ], - "https://github.com/misterjoessef/MLTask_ComfyUI": [ - [ - "FacebookPosterData", - "InstagramPosterData", - "LinkedinPosterData", - "MLTaskUtilsTextImageGenerator", - "PinterestPosterData", - "SocialManMediaToPoster", - "SocialManPostData", - "SocialManPoster", - "TiktokPosterData", - "TwitterPosterData", - "YoutubePosterData" - ], - { - "title_aux": "MLTask_ComfyUI" - } - ], - "https://github.com/mittimi/ComfyUI_mittimiLoadPreset2": [ - [ - "CombineParamDataMittimi", - "LoadSetParamMittimi", - "SaveImageParamMittimi", - "SaveParamToPresetMittimi" - ], - { - "author": "mittimi", - "description": "This node can easily switch between models and prompts by saving presets.", - "nickname": "mittimiLoadPreset2", - "title": "mittimiLoadPreset2", - "title_aux": "ComfyUI_mittimiLoadPreset2" - } - ], - "https://github.com/mittimi/ComfyUI_mittimiRecalculateSize": [ - [ - "RecalculateSizeMittimi01" - ], - { - "author": "mittimi", - "description": "Switch between vertical and horizontal values with a single button.", - "nickname": "mittimiWidthHeight", - "title": "mittimiWidthHeight", - "title_aux": "ComfyUI_mittimiRecalculateSize" - } - ], - "https://github.com/mittimi/ComfyUI_mittimiWidthHeight": [ - [ - "WidthHeightMittimi01" - ], - { - "author": "mittimi", - "description": "Switch between vertical and horizontal values with a single button.", - "nickname": "mittimiWidthHeight", - "title": "mittimiWidthHeight", - "title_aux": "ComfyUI_mittimiWidthHeight" - } - ], - "https://github.com/modelscope/comfyscope": [ - [ - "DashScopeFLUXAPI" - ], - { - "title_aux": "Dashscope FLUX API for ComfyUI" - } - ], - "https://github.com/modusCell/ComfyUI-dimension-node-modusCell": [ - [ - "DimensionProviderFree modusCell", - "DimensionProviderRatio modusCell", - "String Concat modusCell" - ], - { - "title_aux": "Preset Dimensions" - } - ], - "https://github.com/morino-kumasan/comfyui-toml-prompt": [ - [ - "IntSelector", - "LatentSelector", - "MultipartCLIPTextEncode", - "MultipleLoraTagLoader", - "PromptLoader", - "StringConcat", - "StringSelector", - "StringSub", - "StringViewer", - "SummaryReader", - "TomlPromptDecode" - ], - { - "title_aux": "comfyui-toml-prompt" - } - ], - "https://github.com/moustafa-nasr/ComfyUI-SimpleLogger": [ - [ - "Log Image" - ], - { - "title_aux": "ComfyUI-SimpleLogger" - } - ], - "https://github.com/moyi7712/ComfyUI_Seamless_Patten": [ - [ - "SeamlessApply", - "SeamlessKSampler", - "SeamlessKSamplerAdvanced", - "SeamlessVae" - ], - { - "title_aux": "ComfyUI_Seamless_Patten" - } - ], - "https://github.com/mrchipset/ComfyUI-SaveImageS3": [ - [ - "SaveImageS3" - ], - { - "author": "Mr.Chip", - "description": "This extension offers a custom node to save image to S3-compatible oss.", - "nickname": "SaveImageS3", - "title": "SaveImageS3", - "title_aux": "ComfyUI-SaveImageS3" - } - ], - "https://github.com/mrhan1993/ComfyUI-Fooocus": [ - [ - "AlignYourStepsScheduler", - "BasicScheduler", - "CLIPLoader", - "CLIPMergeSimple", - "CLIPSave", - "CLIPSetLastLayer", - "CLIPTextEncode", - "CLIPTextEncodeSDXL", - "CLIPTextEncodeSDXLRefiner", - "CLIPVisionEncode", - "CLIPVisionLoader", - "Canny", - "CheckpointLoader", - "CheckpointLoaderSimple", - "CheckpointSave", - "ClearVram", - "ConditioningAverage", - "ConditioningCombine", - "ConditioningConcat", - "ConditioningSetArea", - "ConditioningSetAreaPercentage", - "ConditioningSetMask", - "ConditioningSetTimestepRange", - "ConditioningZeroOut", - "ControlNetApply", - "ControlNetApplyAdvanced", - "ControlNetLoader", - "CropMask", - "DiffControlNetLoader", - "DiffusersLoader", - "DualCLIPLoader", - "EmptyImage", - "EmptyLatentImage", - "EnhanceControl", - "EnhanceControls", - "ExponentialScheduler", - "FeatherMask", - "FlipSigmas", - "FooocusSampler", - "FooocusSettings", - "FreeU", - "FreeU_V2", - "GLIGENLoader", - "GLIGENTextBoxApply", - "GrowMask", - "HyperTile", - "HypernetworkLoader", - "ImageBatch", - "ImageBlend", - "ImageBlur", - "ImageColorToMask", - "ImageCompositeMasked", - "ImageCrop", - "ImageInvert", - "ImageOnlyCheckpointLoader", - "ImageOnlyCheckpointSave", - "ImagePadForOutpaint", - "ImagePrompts", - "ImageQuantize", - "ImageScale", - "ImageScaleBy", - "ImageScaleToTotalPixels", - "ImageSharpen", - "ImageToMask", - "ImageUpscaleWithModel", - "InpaintModelConditioning", - "InpaintOutpaint", - "InvertMask", - "JoinImageWithAlpha", - "KSampler", - "KSamplerAdvanced", - "KSamplerSelect", - "KarrasScheduler", - "LatentAdd", - "LatentBatch", - "LatentBatchSeedBehavior", - "LatentBlend", - "LatentComposite", - "LatentCompositeMasked", - "LatentCrop", - "LatentFlip", - "LatentFromBatch", - "LatentInterpolate", - "LatentMultiply", - "LatentRotate", - "LatentSubtract", - "LatentUpscale", - "LatentUpscaleBy", - "LoadImage", - "LoadImageMask", - "LoadLatent", - "LoraLoader", - "LoraLoaderModelOnly", - "LoraStacks", - "MaskComposite", - "MaskToImage", - "ModelMergeAdd", - "ModelMergeBlocks", - "ModelMergeSimple", - "ModelMergeSubtract", - "ModelSamplingContinuousEDM", - "ModelSamplingDiscrete", - "PatchModelAddDownscale", - "PerpNeg", - "PhotoMakerEncode", - "PhotoMakerLoader", - "PolyexponentialScheduler", - "PorterDuffImageComposite", - "PreviewImage", - "RebatchImages", - "RebatchLatents", - "RepeatImageBatch", - "RepeatLatentBatch", - "RescaleCFG", - "SDTurboScheduler", - "SD_4XUpscale_Conditioning", - "SVD_img2vid_Conditioning", - "SamplerCustom", - "SamplerDPMPP_2M_SDE", - "SamplerDPMPP_SDE", - "SamplerTCD", - "SaveAnimatedPNG", - "SaveAnimatedWEBP", - "SaveImage", - "SaveLatent", - "SelfAttentionGuidance", - "SetLatentNoiseMask", - "SolidMask", - "SplitImageWithAlpha", - "SplitSigmas", - "StableZero123_Conditioning", - "StableZero123_Conditioning_Batched", - "StyleModelApply", - "StyleModelLoader", - "TomePatchModel", - "UNETLoader", - "UpscaleModelLoader", - "UpscaleVary", - "VAEDecode", - "VAEDecodeTiled", - "VAEEncode", - "VAEEncodeForInpaint", - "VAEEncodeTiled", - "VAELoader", - "VAESave", - "VPScheduler", - "VideoLinearCFGGuidance", - "unCLIPCheckpointLoader", - "unCLIPConditioning" - ], - { - "author": "Konie", - "title_aux": "ComfyUI-Fooocus" - } - ], - "https://github.com/muhammederem/blip-comfyui": [ - [ - "Blip Processor Node", - "List to Text Node" - ], - { - "title_aux": "BLIP Vision-Language Model Integration" - } - ], - "https://github.com/mullakhmetov/comfyui_dynamic_util_nodes": [ - [ - "ConcatStrings", - "FormatString", - "GetFiles", - "LoadImageByPath", - "StringOutput" - ], - { - "title_aux": "comfyui_dynamic_util_nodes" - } - ], - "https://github.com/muxueChen/ComfyUI_NTCosyVoice": [ - [ - "NTCosyVoiceCrossLingualSampler", - "NTCosyVoiceInstruct2Sampler", - "NTCosyVoiceZeroShotSampler" - ], - { - "title_aux": "CosyVoice2 for ComfyUI" - } - ], - "https://github.com/muzi12888/ComfyUI-PoseKeypoint-Mask": [ - [ - "Image Brightness", - "Openpose Keypoint Mask" - ], - { - "title_aux": "PoseKeypoint Mask" - } - ], - "https://github.com/my-opencode/ComfyUI_IndustrialMagick": [ - [ - "IndustrialMagick", - "IndustrialMagickImageIngest" - ], - { - "title_aux": "ComfyUI_IndustrialMagick" - } - ], - "https://github.com/my-opencode/ComfyUI_KSamplerTimer": [ - [ - "KSamplerTimer" - ], - { - "author": "Ludovic Anterieur", - "description": "This extension provides a wrapper of the native KSampler which outputs generation time.", - "nickname": "\u23f1", - "title": "KSampler (timer)", - "title_aux": "ComfyUI_KSamplerTimer" - } - ], - "https://github.com/myshell-ai/ComfyUI-ShellAgent-Plugin": [ - [ - "ShellAgentPluginInputAudio", - "ShellAgentPluginInputBoolean", - "ShellAgentPluginInputFloat", - "ShellAgentPluginInputImage", - "ShellAgentPluginInputInteger", - "ShellAgentPluginInputText", - "ShellAgentPluginInputVideo", - "ShellAgentPluginOutputBoolean", - "ShellAgentPluginOutputFloat", - "ShellAgentPluginOutputInteger", - "ShellAgentPluginOutputText", - "ShellAgentPluginSaveAudio", - "ShellAgentPluginSaveAudios", - "ShellAgentPluginSaveImage", - "ShellAgentPluginSaveImages", - "ShellAgentPluginSaveVideoVHS" - ], - { - "author": "MyShell", - "description": "", - "title": "comfyui-shellagent-plugin", - "title_aux": "ComfyUI-ShellAgent-Plugin" - } - ], - "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL": [ - [ - "FastLatentToImage" - ], - { - "title_aux": "ComfyUI_FastVAEDecorder_SDXL" - } - ], - "https://github.com/nagolinc/comfyui_openai_node": [ - [ - "OpenAINode" - ], - { - "title_aux": "comfyui_openai_node" - } - ], - "https://github.com/natto-maki/ComfyUI-NegiTools": [ - [ - "NegiTools_CompositeImages", - "NegiTools_DepthEstimationByMarigold", - "NegiTools_DetectFaceRotationForInpainting", - "NegiTools_ImageProperties", - "NegiTools_LatentProperties", - "NegiTools_NoiseImageGenerator", - "NegiTools_OpenAiDalle3", - "NegiTools_OpenAiGpt", - "NegiTools_OpenAiGpt4v", - "NegiTools_OpenAiTranslate", - "NegiTools_OpenPoseToPointList", - "NegiTools_PointListToMask", - "NegiTools_RandomImageLoader", - "NegiTools_SaveImageToDirectory", - "NegiTools_SeedGenerator", - "NegiTools_StereoImageGenerator", - "NegiTools_StringFunction" - ], - { - "title_aux": "ComfyUI-NegiTools" - } - ], - "https://github.com/nchenevey1/comfyui-gimp-nodes": [ - [ - "NC_LoadImageGIMP", - "NC_LoadMaskGIMP", - "NC_SendImageDimsWebSocketGIMP", - "NC_SendImageWebSocketGIMP" - ], - { - "title_aux": "comfyui-gimp-nodes" - } - ], - "https://github.com/neph1/comfyui-smooth-step-lora-loader": [ - [ - "Smooth_Step_Lora_Loader" - ], - { - "title_aux": "comfyui-smooth-step-lora-loader" - } - ], - "https://github.com/neverbiasu/ComfyUI-Dashscope": [ - [ - "DashscopeEmoCaller", - "DashscopeLLMLoader", - "DashscopeModelCaller", - "DashscopeOCRCaller", - "DashscopeVLMLoader" - ], - { - "title_aux": "ComfyUI-Dashscope" - } - ], - "https://github.com/neverbiasu/ComfyUI-Image-Captioner": [ - [ - "ImageCaptioner" - ], - { - "title_aux": "ComfyUI-Image-Captioner" - } - ], - "https://github.com/neverbiasu/ComfyUI-SAM2": [ - [ - "GroundingDinoModelLoader (segment anything2)", - "GroundingDinoSAM2Segment (segment anything2)", - "InvertMask (segment anything)", - "IsMaskEmpty", - "SAM2ModelLoader (segment anything2)" - ], - { - "title_aux": "ComfyUI SAM2(Segment Anything 2)" - } - ], - "https://github.com/neverbiasu/ComfyUI-StyleShot": [ - [ - "StyleShotApply" - ], - { - "title_aux": "ComfyUI-StyleShot" - } - ], - "https://github.com/ngosset/ComfyUI-ImageSimilarity": [ - [ - "Image Similarity" - ], - { - "title_aux": "ImageSimilarity" - } - ], - "https://github.com/nicehero/comfyui-SegGPT": [ - [ - "SegGPT" - ], - { - "title_aux": "comfyui-SegGPT" - } - ], - "https://github.com/nickve28/ComfyUI-Nich-Utils": [ - [ - "Image from Dir Selector (Nich)", - "Select Text with Regular Expression (Nich)" - ], - { - "title_aux": "ComfyUI Nich Utils" - } - ], - "https://github.com/nicofdga/DZ-FaceDetailer": [ - [ - "DZ_Face_Detailer" - ], - { - "title_aux": "DZ-FaceDetailer" - } - ], - "https://github.com/niknah/ComfyUI-F5-TTS": [ - [ - "F5TTSAudio", - "F5TTSAudioInputs" - ], - { - "title_aux": "ComfyUI-F5-TTS" - } - ], - "https://github.com/niknah/ComfyUI-Hunyuan-3D-2": [ - [ - "Hunyuan3D2ImageTo3D" - ], - { - "title_aux": "ComfyUI Hunyuan-3D-2" - } - ], - "https://github.com/nilor-corp/nilor-nodes": [ - [ - "Nilor Count Images In Directory", - "Nilor Int To List Of Bools", - "Nilor Interpolated Float List", - "Nilor Inverse Map Float List", - "Nilor List of Ints", - "Nilor One Minus Float List", - "Nilor Output Filename String", - "Nilor Remap Float List", - "Nilor Repeat & Trim Image Batch", - "Nilor Repeat, Shuffle, & Trim Image Batch", - "Nilor Save EXR Arbitrary", - "Nilor Save Image To HF Dataset", - "Nilor Save Video To HF Dataset", - "Nilor Select Index From List", - "Nilor Shuffle Image Batch", - "Nilor n Fractions of Int" - ], - { - "title_aux": "Nilor Nodes by Nilor Corp" - } - ], - "https://github.com/ningxiaoxiao/comfyui-NDI": [ - [ - "NDI_LoadImage", - "NDI_SendImage" - ], - { - "title_aux": "comfyui-NDI" - } - ], - "https://github.com/nirbhay-faaya/ImgProcessing_ComfyUI": [ - [ - "ImageConcat", - "ImageCropMultEight", - "ImageCut", - "LightingPreprocessor" - ], - { - "title_aux": "ImgProcessing_ComfyUI" - } - ], - "https://github.com/nirex0/ComfyUI_pytorch_openpose": [ - [ - "pytorch_openpose" - ], - { - "title_aux": "ComfyUI_pytorch_openpose" - } - ], - "https://github.com/nisimjoseph/ComfyUI_OpenAI-Prompter": [ - [ - "OpenAI Prompt Generator" - ], - { - "title_aux": "ComfyUI OpenAI Prompter" - } - ], - "https://github.com/nkchocoai/ComfyUI-Dart": [ - [ - "DanbooruTagsTransformerBanTagsFromRegex", - "DanbooruTagsTransformerComposePrompt", - "DanbooruTagsTransformerComposePromptV2", - "DanbooruTagsTransformerDecode", - "DanbooruTagsTransformerDecodeBySplitedParts", - "DanbooruTagsTransformerGenerate", - "DanbooruTagsTransformerGenerateAdvanced", - "DanbooruTagsTransformerGenerationConfig", - "DanbooruTagsTransformerGetAspectRatio", - "DanbooruTagsTransformerLoader", - "DanbooruTagsTransformerRearrangedByAnimagine", - "DanbooruTagsTransformerRemoveTagToken" - ], - { - "title_aux": "ComfyUI-Dart" - } - ], - "https://github.com/nkchocoai/ComfyUI-PromptUtilities": [ - [ - "PromptUtilitiesConstString", - "PromptUtilitiesConstStringMultiLine", - "PromptUtilitiesFormatString", - "PromptUtilitiesJoinStringList", - "PromptUtilitiesLoadPreset", - "PromptUtilitiesLoadPresetAdvanced", - "PromptUtilitiesPromptWeight", - "PromptUtilitiesRandomPreset", - "PromptUtilitiesRandomPresetAdvanced", - "PromptUtilitiesReplaceOrInsertTag", - "PromptUtilitiesRoundPromptWeight", - "PromptUtilitiesSampleTags", - "PromptUtilitiesSampleTagsWithWeight" - ], - { - "title_aux": "ComfyUI-PromptUtilities" - } - ], - "https://github.com/nkchocoai/ComfyUI-SaveImageWithMetaData": [ - [ - "CreateExtraMetaData", - "SaveImageWithMetaData" - ], - { - "title_aux": "ComfyUI-SaveImageWithMetaData" - } - ], - "https://github.com/nkchocoai/ComfyUI-SizeFromPresets": [ - [ - "EmptyLatentImageFromPresetsSD15", - "EmptyLatentImageFromPresetsSDXL", - "GetSimilarResolution", - "GetSimilarResolutionEmptyLatent", - "RandomEmptyLatentImageFromPresetsSD15", - "RandomEmptyLatentImageFromPresetsSDXL", - "RandomSizeFromPresetsSD15", - "RandomSizeFromPresetsSDXL", - "SizeFromPresetsSD15", - "SizeFromPresetsSDXL" - ], - { - "title_aux": "ComfyUI-SizeFromPresets" - } - ], - "https://github.com/nkchocoai/ComfyUI-TextOnSegs": [ - [ - "CalcMaxFontSize", - "ExtractDominantColor", - "GetComplementaryColor", - "SegsToRegion", - "TextOnSegsFloodFill" - ], - { - "title_aux": "ComfyUI-TextOnSegs" - } - ], - "https://github.com/noarche/sd-webui-color-enhance": [ - [ - "MMakerColorBlend", - "MMakerColorEnhance" - ], - { - "title_aux": "noarche/Color Enhance" - } - ], - "https://github.com/noembryo/ComfyUI-noEmbryo": [ - [ - "PromptTermList1", - "PromptTermList2", - "PromptTermList3", - "PromptTermList4", - "PromptTermList5", - "PromptTermList6" - ], - { - "author": "noEmbryo", - "description": "Some useful nodes for ComfyUI", - "nickname": "noEmbryo", - "title": "noEmbryo nodes", - "title_aux": "noEmbryo nodes" - } - ], - "https://github.com/nofunstudio/Node_Fun_ComfyUI": [ - [ - "LayeredInfiniteZoom", - "Replicate flux 1.1 pro ultra", - "ReplicateAPI_flux_1_1_pro_ultra", - "ReplicateAPI_flux_fill_pro" - ], - { - "title_aux": "Node_Fun_ComfyUI" - } - ], - "https://github.com/nosiu/comfyui-instantId-faceswap": [ - [ - "AngleFromFace", - "ComposeRotated", - "ControlNetInstantIdApply", - "FaceEmbed", - "FaceEmbedCombine", - "InstantIdAdapterApply", - "InstantIdAndControlnetApply", - "KpsMaker", - "LoadInsightface", - "LoadInstantIdAdapter", - "PreprocessImage", - "PreprocessImageAdvanced", - "RotateImage" - ], - { - "title_aux": "ComfyUI InstantID Faceswapper" - } - ], - "https://github.com/noxinias/ComfyUI_NoxinNodes": [ - [ - "NoxinChime", - "NoxinPromptLoad", - "NoxinPromptSave", - "NoxinScaledResolution", - "NoxinSimpleMath", - "NoxinSplitPrompt" - ], - { - "title_aux": "ComfyUI_NoxinNodes" - } - ], - "https://github.com/nsdtcloud3d/ComfyUI-3D-Convert": [ - [ - "ConvertTo3DFormat", - "Load3DConvertAPIKEY", - "Load3DFile" - ], - { - "title_aux": "ComfyUI-3D-Convert" - } - ], - "https://github.com/ntc-ai/ComfyUI-DARE-LoRA-Merge": [ - [ - "Apply LoRA", - "DARE Merge LoRA Stack", - "Save LoRA" - ], - { - "title_aux": "ComfyUI - Apply LoRA Stacker with DARE" - } - ], - "https://github.com/nuanarchy/ComfyUI-NuA-BIRD": [ - [ - "Bird_Deblurring_NuA", - "Bird_Denoising_NuA", - "Bird_Inpainting_NuA", - "Bird_Loader_NuA", - "Bird_Non_Uniform_Deblurring_NuA", - "Bird_Super_Resolution_NuA" - ], - { - "title_aux": "ComfyUI-NuA-BIRD" - } - ], - "https://github.com/nuanarchy/ComfyUI-NuA-FlashFace": [ - [ - "FlashFace_Loader_NuA", - "FlashFace_Sampler_NuA" - ], - { - "title_aux": "ComfyUI-NuA-FlashFace" - } - ], - "https://github.com/nullquant/ComfyUI-BrushNet": [ - [ - "BlendInpaint", - "BrushNet", - "BrushNetLoader", - "CutForInpaint", - "PowerPaint", - "PowerPaintCLIPLoader", - "RAUNet", - "Terminal" - ], - { - "author": "nullquant", - "description": "These are custom nodes for ComfyUI native implementation of BrushNet, PowerPaint and RAUNet models", - "nickname": "BrushName nodes", - "title": "BrushNet", - "title_aux": "BrushNet" - } - ], - "https://github.com/numz/ComfyUI-FlowChain": [ - [ - "WorkflowLipSync" - ], - { - "title_aux": "ComfyUI-FlowChain" - } - ], - "https://github.com/nux1111/ComfyUI_NetDist_Plus": [ - [ - "CombineImageBatch", - "ConditioningFromBase64(Nux)", - "ConditioningToBase64(Nux)", - "ExtractBase64FromImage(Nux)", - "ExtractBase64FromImageUpload(Nux)", - "FetchRemote", - "FetchRemoteWithExtras(Nux)", - "LatentToBase64(Nux)", - "LoadCurrentWorkflowJSON", - "LoadDiskWorkflowJSON", - "LoadImageUrl", - "LoadLatentFromBase64(Nux)", - "LoadLatentNumpy", - "LoadLatentUrl", - "LoadWorkflowJSON", - "RemoteApplyValues(Nux)", - "RemoteApplyValuesMulti(Nux)", - "RemoteChainEnd", - "RemoteChainStart", - "RemoteChainStart(Nux)", - "RemoteQueueSimple", - "RemoteQueueSimple(Nux)", - "RemoteQueueWorker", - "SaveDiskWorkflowJSON", - "SaveImageUrl", - "SaveImageWithBase64(Nux)", - "SaveLatentNumpy" - ], - { - "title_aux": "ComfyUI_NetDist_Plus" - } - ], - "https://github.com/okgo4/ComfyUI-Mosaic-Mask": [ - [ - "MosaicMask" - ], - { - "title_aux": "ComfyUI-Mosaic-Mask" - } - ], - "https://github.com/olduvai-jp/ComfyUI-HfLoader": [ - [ - "Lora Loader From HF" - ], - { - "title_aux": "ComfyUI-HfLoader" - } - ], - "https://github.com/oleksandr612/ComfyUI-Counter": [ - [ - "Simple Counter" - ], - { - "title_aux": "ComfyUI-Counter" - } - ], - "https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92": [ - [ - "CLIPStringEncode _O", - "Chat completion _O", - "ChatGPT Simple _O", - "ChatGPT _O", - "ChatGPT compact _O", - "Chat_Completion _O", - "Chat_Message _O", - "Chat_Message_fromString _O", - "Concat Text _O", - "ConcatRandomNSP_O", - "Debug String _O", - "Debug Text _O", - "Debug Text route _O", - "Edit_image _O", - "Equation1param _O", - "Equation2params _O", - "GetImage_(Width&Height) _O", - "GetLatent_(Width&Height) _O", - "ImageScaleFactor _O", - "ImageScaleFactorSimple _O", - "LatentUpscaleFactor _O", - "LatentUpscaleFactorSimple _O", - "LatentUpscaleMultiply", - "Note _O", - "QOL Split String", - "RandomNSP _O", - "Replace Text _O", - "String _O", - "Text _O", - "Text2Image _O", - "Trim Text _O", - "VAEDecodeParallel _O", - "combine_chat_messages _O", - "compine_chat_messages _O", - "concat Strings _O", - "create image _O", - "create_image _O", - "debug Completeion _O", - "debug messages_O", - "float _O", - "floatToInt _O", - "floatToText _O", - "int _O", - "intToFloat _O", - "load_openAI _O", - "replace String _O", - "replace String advanced _O", - "saveTextToFile _O", - "seed _O", - "selectLatentFromBatch _O", - "string2Image _O", - "trim String _O", - "variation_image _O" - ], - { - "title_aux": "Quality of life Suit:V2" - } - ], - "https://github.com/opvelll/ComfyUI_TextListProduct": [ - [ - "ProductedString", - "PromptPairConcat", - "TextListProduct", - "TextListProductWithSingleA", - "TextListProductWithSingleB", - "TextListProductWithSingleBoth" - ], - { - "title_aux": "Comfy UI Text List Product" - } - ], - "https://github.com/osi1880vr/prompt_quill_comfyui": [ - [ - "PromptQuillGenerate", - "PromptQuillGenerateConditioning", - "PromptQuillSail", - "PromptQuillSailConditioning" - ], - { - "title_aux": "ComfyUI_Prompt-Quill" - } - ], - "https://github.com/ostris/ostris_nodes_comfyui": [ - [ - "LLM Pipe Loader - Ostris", - "LLM Prompt Upsampling - Ostris", - "One Seed - Ostris", - "Text Box - Ostris" - ], - { - "nodename_pattern": "- Ostris$", - "title_aux": "Ostris Nodes ComfyUI" - } - ], - "https://github.com/ownimage/ComfyUI-ownimage": [ - [ - "Caching Image Loader" - ], - { - "title_aux": "ComfyUI-ownimage" - } - ], - "https://github.com/oyvindg/ComfyUI-TrollSuite": [ - [ - "BinaryImageMask", - "ImagePadding", - "LoadLastImage", - "RandomMask", - "TransparentImage" - ], - { - "title_aux": "ComfyUI-TrollSuite" - } - ], - "https://github.com/oztrkoguz/ComfyUI_StoryCreator": [ - [ - "Kosmos2SamplerSimple2", - "KosmosLoader2", - "StoryLoader", - "StorySamplerSimple", - "Write2" - ], - { - "title_aux": "ComfyUI StoryCreater" - } - ], - "https://github.com/palant/image-resize-comfyui": [ - [ - "ImageResize" - ], - { - "title_aux": "Image Resize for ComfyUI" - } - ], - "https://github.com/pamparamm/ComfyUI-ppm": [ - [ - "AttentionCouplePPM", - "CFGLimiterGuider", - "CFGPPSamplerSelect", - "CLIPMicroConditioning", - "CLIPNegPip", - "CLIPTextEncodeBREAK", - "CLIPTokenCounter", - "ConditioningZeroOutCombine", - "ConvertTimestepToSigma", - "DynSamplerSelect", - "DynamicThresholdingSimplePost", - "EmptyLatentImageAR", - "FreeU2PPM", - "Guidance Limiter", - "LatentOperationTonemapLuminance", - "LatentToMaskBB", - "LatentToWidthHeight", - "PPMSamplerSelect", - "RescaleCFGPost" - ], - { - "title_aux": "ComfyUI-ppm" - } - ], - "https://github.com/pamparamm/ComfyUI-vectorscope-cc": [ - [ - "DiffusionCG", - "NormalizeLatent", - "VectorscopeCC" - ], - { - "title_aux": "ComfyUI Vectorscope CC" - } - ], - "https://github.com/pamparamm/sd-perturbed-attention": [ - [ - "PerturbedAttention", - "SlidingWindowGuidanceAdvanced", - "SmoothedEnergyGuidanceAdvanced", - "TRTAttachPag", - "TRTPerturbedAttention" - ], - { - "title_aux": "sd-perturbed-attention" - } - ], - "https://github.com/pandaer119/ComfyUI_pandai": [ - [ - "pandai_dsk_node" - ], - { - "title_aux": "ComfyUI_pandai" - } - ], - "https://github.com/pants007/comfy-pants": [ - [ - "CLIPTextEncodeAIO", - "Image Make Square" - ], - { - "title_aux": "pants" - } - ], - "https://github.com/patriciogonzalezvivo/comfyui_glslnodes": [ - [ - "float", - "glslBuffers", - "glslEditor", - "glslEditorPro", - "glslUniforms", - "glslViewer", - "int", - "vec2", - "vec2 (pos)", - "vec3", - "vec3 (pos)", - "vec4", - "vec4 (color)" - ], - { - "author": "Patricio Gonzalez Vivo", - "description": "A set of nodes to work with GLSL shaders", - "nickname": "GLSL Nodes", - "title": "GLSL Nodes", - "title_aux": "GLSL Nodes" - } - ], - "https://github.com/paulo-coronado/comfy_clip_blip_node": [ - [ - "CLIPTextEncodeBLIP", - "CLIPTextEncodeBLIP-2", - "Example" - ], - { - "title_aux": "comfy_clip_blip_node" - } - ], - "https://github.com/pbpbpb2705/ComfyUI-LyraVSIH": [ - [ - "MultiObjectMask" - ], - { - "title_aux": "ComfyUI-LyraVSIH" - } - ], - "https://github.com/pharmapsychotic/comfy-cliption": [ - [ - "CLIPtionBeamSearch", - "CLIPtionGenerate", - "CLIPtionLoader" - ], - { - "title_aux": "comfy-cliption" - } - ], - "https://github.com/phazei/ConfyUI-node-prompt-stash-saver": [ - [ - "PromptStashManager", - "PromptStashSaver" - ], - { - "title_aux": "Prompt Stash Saver Node for ComfyUI" - } - ], - "https://github.com/philiprodriguez/ComfyUI-HunyuanImageLatentToVideoLatent": [ - [ - "HunyuanImageLatentToVideoLatent" - ], - { - "title_aux": "ComfyUI-HunyuanImageLatentToVideoLatent" - } - ], - "https://github.com/philz1337x/ComfyUI-ClarityAI": [ - [ - "Clarity AI Upscaler" - ], - { - "title_aux": "\u2728 Clarity AI - Creative Image Upscaler and Enhancer for ComfyUI" - } - ], - "https://github.com/phuvinh010701/ComfyUI-Nudenet": [ - [ - "ApplyNudenet", - "FilterdLabel", - "NudenetModelLoader" - ], - { - "title_aux": "ComfyUI-Nudenet" - } - ], - "https://github.com/phyblas/paint-by-example_comfyui": [ - [ - "PaintbyExampleAdvanced", - "PaintbyExampleGen", - "PaintbyExampleSimple", - "PaintbyIchimatsu", - "PaintbySingleColor" - ], - { - "title_aux": "paint-by-example @ ComfyUI" - } - ], - "https://github.com/picturesonpictures/comfy_PoP": [ - [ - "AdaptiveCannyDetector_PoP", - "AnyAspectRatio", - "ConditioningMultiplier_PoP", - "ConditioningNormalizer_PoP", - "DallE3_PoP", - "EfficientAttention", - "LoadImageResizer_PoP", - "LoraStackLoader10_PoP", - "LoraStackLoader_PoP", - "VAEDecoderPoP", - "VAEEncoderPoP" - ], - { - "title_aux": "comfy_PoP" - } - ], - "https://github.com/pikenrover/ComfyUI_PRNodes": [ - [ - "CheckpointLoaderSimpleExtended", - "EmptyLatentImageScaleBy", - "ImageScaleTo", - "LoadRandomImage", - "LoraLoaderExtended", - "RandomPrompt", - "RandomPromptMixed", - "Save Image w/Metadata" - ], - { - "title_aux": "ComfyUI_PRNodes" - } - ], - "https://github.com/pkpkTech/ComfyUI-SaveAVIF": [ - [ - "SaveAvif" - ], - { - "title_aux": "ComfyUI-SaveAVIF" - } - ], - "https://github.com/pkpkTech/ComfyUI-TemporaryLoader": [ - [ - "LoadTempCheckpoint", - "LoadTempLoRA", - "LoadTempMultiLoRA" - ], - { - "title_aux": "ComfyUI-TemporaryLoader" - } - ], - "https://github.com/playbook3d/playbook3d-comfyui-nodes": [ - [ - "Beauty Pass Sequence", - "Depth Pass Sequence", - "Mask Pass Sequence", - "Outline Pass Sequence", - "Playbook Aspect Ratio Select", - "Playbook Beauty", - "Playbook Beauty Sequence", - "Playbook Boolean", - "Playbook Depth", - "Playbook Depth Sequence", - "Playbook Float", - "Playbook Image", - "Playbook LoRA Select", - "Playbook LoRA Selection", - "Playbook Mask", - "Playbook Mask Sequence", - "Playbook Number", - "Playbook Outline", - "Playbook Outline Sequence", - "Playbook Render Result", - "Playbook Seed", - "Playbook Text", - "Playbook Video" - ], - { - "title_aux": "Playbook Nodes" - } - ], - "https://github.com/plugcrypt/CRT-Nodes": [ - [ - "Boolean Transform", - "Lora Loader Str", - "Remove Trailing Comma", - "Toggle Lora Unet Blocks L1", - "Toggle Lora Unet Blocks L2" - ], - { - "author": "CRT", - "description": "Single Blocks Arguments for LoRA Training", - "title": "CRT-Nodes", - "title_aux": "CRT-Nodes" - } - ], - "https://github.com/pollockjj/ComfyUI-MultiGPU": [ - [ - "DeviceSelectorMultiGPU" - ], - { - "title_aux": "ComfyUI-MultiGPU" - } - ], - "https://github.com/portu-sim/comfyui_bmab": [ - [ - "BMAB Alpha Composit", - "BMAB Basic", - "BMAB Black And White", - "BMAB Blend", - "BMAB Clip Text Encoder SDXL", - "BMAB Conditioning To Bind", - "BMAB Context", - "BMAB ControlNet", - "BMAB ControlNet IPAdapter", - "BMAB ControlNet Openpose", - "BMAB Crop", - "BMAB Detail Anything", - "BMAB Detect And Mask", - "BMAB Detect And Paste", - "BMAB Detection Crop", - "BMAB Detector", - "BMAB Edge", - "BMAB Extractor", - "BMAB Face Detailer", - "BMAB Flux ControlNet", - "BMAB Flux Integrator", - "BMAB Google Gemini Prompt", - "BMAB Import Integrator", - "BMAB Inpaint", - "BMAB Integrator", - "BMAB KSampler", - "BMAB KSamplerHiresFix", - "BMAB KSamplerHiresFixWithUpscaler", - "BMAB KSamplerKohyaDeepShrink", - "BMAB Lama Inpaint", - "BMAB LoRA Loader", - "BMAB Load Image", - "BMAB Load Output Image", - "BMAB Masks To Images", - "BMAB Model To Bind", - "BMAB Noise Generator", - "BMAB Openpose Hand Detailer", - "BMAB Outpaint By Ratio", - "BMAB Person Detailer", - "BMAB Preview Text", - "BMAB Prompt", - "BMAB Reframe", - "BMAB Remote Access And Save", - "BMAB Remove Background", - "BMAB Resize By Person", - "BMAB Resize By Ratio", - "BMAB Resize and Fill", - "BMAB SD-WebUI API BMAB Extension", - "BMAB SD-WebUI API ControlNet", - "BMAB SD-WebUI API I2I", - "BMAB SD-WebUI API Server", - "BMAB SD-WebUI API T2I", - "BMAB SD-WebUI API T2I Hires.Fix", - "BMAB Save Image", - "BMAB SeedGenerator", - "BMAB Segment Anything", - "BMAB Simple Hand Detailer", - "BMAB Square", - "BMAB Subframe Hand Detailer", - "BMAB Text", - "BMAB ToBind", - "BMAB Upscale With Model", - "BMAB Upscaler", - "BMAB Watermark", - "BMAB Zoom Out" - ], - { - "title_aux": "comfyui_bmab" - } - ], - "https://github.com/prodogape/ComfyUI-EasyOCR": [ - [ - "Apply EasyOCR" - ], - { - "title_aux": "ComfyUI-EasyOCR" - } - ], - "https://github.com/prodogape/ComfyUI-Minio": [ - [ - "Load Image From Minio", - "Save Image To Minio", - "Set Minio Config" - ], - { - "title_aux": "Comfyui-Minio" - } - ], - "https://github.com/prodogape/ComfyUI-OmDet": [ - [ - "Apply OmDet" - ], - { - "title_aux": "ComfyUI-OmDet" - } - ], - "https://github.com/prodogape/Comfyui-Yolov8-JSON": [ - [ - "Apply Yolov8 Model", - "Apply Yolov8 Model Seg", - "Draw Labelme Json", - "Load Yolov8 Model", - "Load Yolov8 Model From Path", - "Save Labelme Json" - ], - { - "title_aux": "Comfyui-Yolov8-JSON" - } - ], - "https://github.com/pschroedl/ComfyUI-SAM2-Realtime": [ - [ - "DownloadAndLoadSAM2RealtimeModel", - "Sam2RealtimeSegmentation" - ], - { - "title_aux": "ComfyUI-SAM2-Realtime" - } - ], - "https://github.com/ptmaster/ComfyUI-Load-Diffusion-Model-to-Muti-GPUs/raw/refs/heads/main/Load%20Diffusion%20Model%20into%20Muti%20GPUs.py": [ - [ - "OverrideLoadedDiffusionDevice" - ], - { - "title_aux": "ComfyUI-Load-Diffusion-Model-to-Muti-GPUs" - } - ], - "https://github.com/purpen/ComfyUI-AIRedoon": [ - [ - "AIRedoonApplyLoRAStack", - "AIRedoonCheckLoraFile", - "AIRedoonCheckModelFile", - "AIRedoonConcatText", - "AIRedoonImageCaptioning", - "AIRedoonImageRGBA2RGB", - "AIRedoonLoRAStack", - "AIRedoonPreviewText", - "AIRedoonQwenModelLoader", - "AIRedoonSaveText", - "AIRedoonTranslator" - ], - { - "title_aux": "AIRedoon" - } - ], - "https://github.com/purpen/ComfyUI-ImageTagger": [ - [ - "AIRedoonImageCaptioning" - ], - { - "title_aux": "ComfyUI-ImageTagger" - } - ], - "https://github.com/pythongosssss/ComfyUI-Custom-Scripts": [ - [ - "CheckpointLoader|pysssss", - "ConstrainImageforVideo|pysssss", - "ConstrainImage|pysssss", - "LoadText|pysssss", - "LoraLoader|pysssss", - "MathExpression|pysssss", - "MultiPrimitive|pysssss", - "PlaySound|pysssss", - "Repeater|pysssss", - "ReroutePrimitive|pysssss", - "SaveText|pysssss", - "ShowText|pysssss", - "StringFunction|pysssss", - "SystemNotification|pysssss" - ], - { - "title_aux": "pythongosssss/ComfyUI-Custom-Scripts" - } - ], - "https://github.com/pythongosssss/ComfyUI-WD14-Tagger": [ - [ - "WD14Tagger|pysssss" - ], - { - "title_aux": "ComfyUI WD 1.4 Tagger" - } - ], - "https://github.com/pzc163/Comfyui_MiniCPMv2_6-prompt-generator": [ - [ - "Prompt_Generator", - "Save_Prompts" - ], - { - "title_aux": "Comfyui_MiniCPMv2_6-prompt-generator" - } - ], - "https://github.com/qwixiwp/queuetools": [ - [ - "load images (queue tools)" - ], - { - "title_aux": "queuetools" - } - ], - "https://github.com/r3dial/redial-discomphy": [ - [ - "DiscordMessage" - ], - { - "title_aux": "Redial Discomphy - Discord Integration for ComfyUI" - } - ], - "https://github.com/r3dsd/comfyui-template-loader": [ - [ - "TemplateLoader" - ], - { - "title_aux": "Comfyui-Template-Loader" - } - ], - "https://github.com/ramesh-x90/ComfyUI_pyannote": [ - [ - "Speaker Diarization", - "Whisper Segments to Speaker" - ], - { - "title_aux": "ComfyUI_pyannote" - } - ], - "https://github.com/ramyma/A8R8_ComfyUI_nodes": [ - [ - "AttentionCouple", - "AttentionCoupleRegion", - "AttentionCoupleRegions", - "Base64ImageInput", - "Base64ImageOutput" - ], - { - "title_aux": "A8R8 ComfyUI Nodes" - } - ], - "https://github.com/randjtw/advance-aesthetic-score": [ - [ - "Adv_Scoring" - ], - { - "title_aux": "advance-aesthetic-score" - } - ], - "https://github.com/randomnoner11/ComfyUI-MistralAI-API": [ - [ - "InvokeMistralEndpoint", - "LoadFewShotPrompt" - ], - { - "title_aux": "ComfyUI-MistralAI-API" - } - ], - "https://github.com/raspie10032/ComfyUI_RS_NAI_Local_Prompt_converter": [ - [ - "ComfyToNovelAIPrompt", - "NAIPromptExtractor", - "NovelAIToComfyPrompt" - ], - { - "title_aux": "ComfyUI NAI Prompt Converter" - } - ], - "https://github.com/ratulrafsan/Comfyui-SAL-VTON": [ - [ - "SALVTON_Apply", - "SV_random" - ], - { - "title_aux": "Comfyui-SAL-VTON" - } - ], - "https://github.com/raysers/Mflux-ComfyUI": [ - [ - "MfluxControlNetLoader", - "MfluxCustomModels", - "MfluxImg2Img", - "MfluxLorasLoader", - "MfluxModelsDownloader", - "MfluxModelsLoader", - "QuickMfluxNode" - ], - { - "title_aux": "Mflux-ComfyUI" - } - ], - "https://github.com/rcfcu2000/zhihuige-nodes-comfyui": [ - [ - "Combine ZHGMasks", - "Cover ZHGMasks", - "From ZHG pip", - "GroundingDinoModelLoader (zhihuige)", - "GroundingDinoPIPESegment (zhihuige)", - "GroundingDinoSAMSegment (zhihuige)", - "InvertMask (zhihuige)", - "SAMModelLoader (zhihuige)", - "To ZHG pip", - "ZHG FaceIndex", - "ZHG GetMaskArea", - "ZHG Image Levels", - "ZHG SaveImage", - "ZHG SmoothEdge", - "ZHG UltimateSDUpscale" - ], - { - "title_aux": "zhihuige-nodes-comfyui" - } - ], - "https://github.com/rcsaquino/comfyui-custom-nodes": [ - [ - "BackgroundRemover | rcsaquino", - "VAELoader | rcsaquino", - "VAEProcessor | rcsaquino" - ], - { - "title_aux": "rcsaquino/comfyui-custom-nodes" - } - ], - "https://github.com/rdancer/ComfyUI_Florence2SAM2": [ - [ - "RdancerFlorence2SAM2GenerateMask" - ], - { - "title_aux": "ComfyUI_Florence2SAM2" - } - ], - "https://github.com/receyuki/comfyui-prompt-reader-node": [ - [ - "SDAnyConverter", - "SDBatchLoader", - "SDLoraLoader", - "SDLoraSelector", - "SDParameterExtractor", - "SDParameterGenerator", - "SDPromptMerger", - "SDPromptReader", - "SDPromptSaver", - "SDTypeConverter" - ], - { - "author": "receyuki", - "description": "The ultimate solution for managing image metadata and multi-tool compatibility. ComfyUI node version of the SD Prompt Reader", - "nickname": "SD Prompt Reader", - "title": "SD Prompt Reader", - "title_aux": "SD Prompt Reader" - } - ], - "https://github.com/recraft-ai/ComfyUI-RecraftAI": [ - [ - "RecraftBackgroundRemover", - "RecraftClarityUpscaler", - "RecraftClient", - "RecraftGenerativeUpscaler", - "RecraftImageGenerator" - ], - { - "title_aux": "ComfyUI-RecraftAI" - } - ], - "https://github.com/redhottensors/ComfyUI-Prediction": [ - [ - "AvoidErasePrediction", - "CFGPrediction", - "CharacteristicGuidancePrediction", - "CombinePredictions", - "ConditionedPrediction", - "EarlyMiddleLatePrediction", - "InterpolatePredictions", - "LogSigmas", - "PerpNegPrediction", - "SamplerCustomPrediction", - "ScalePrediction", - "ScaledGuidancePrediction", - "SelectSigmas", - "SplitAtSigma", - "SwitchPredictions" - ], - { - "author": "RedHotTensors", - "description": "Fully customizable Classifer Free Guidance for ComfyUI", - "nickname": "ComfyUI-Prediction", - "title": "ComfyUI-Prediction", - "title_aux": "ComfyUI-Prediction" - } - ], - "https://github.com/regiellis/ComfyUI-EasyNoobai": [ - [ - "EasyNoobai", - "NoobaiArtists", - "NoobaiCharacters", - "NoobaiE621Artists", - "NoobaiE621Characters" - ], - { - "title_aux": "ComfyUI-EasyNoobai" - } - ], - "https://github.com/regiellis/ComfyUI-EasyPony": [ - [ - "EasyPony" - ], - { - "title_aux": "ComfyUI-EasyPony" - } - ], - "https://github.com/revirevy/Comfyui_saveimage_imgbb": [ - [ - "ImgBBUploader", - "LLM_prompt_generator" - ], - { - "author": "N.RHEVI", - "description": "This custom node allow save image to imgbb.", - "nickname": "save image to imgbb", - "title": "save image to imgbb", - "title_aux": "Comfyui_saveimage_imgbb" - } - ], - "https://github.com/rgthree/rgthree-comfy": [ - [], - { - "author": "rgthree", - "description": "A bunch of nodes I created that I also find useful.", - "nickname": "rgthree", - "nodename_pattern": " \\(rgthree\\)$", - "title": "Comfy Nodes", - "title_aux": "rgthree's ComfyUI Nodes" - } - ], - "https://github.com/rhdunn/comfyui-audio-processing": [ - [ - "ComfyAudio.ApplyFilterBank", - "ComfyAudio.GriffinLim", - "ComfyAudio.InverseSpectrogram", - "ComfyAudio.LinearFilterBank", - "ComfyAudio.LoadAudio", - "ComfyAudio.MelScaleFilterBank", - "ComfyAudio.PlotFilterBank", - "ComfyAudio.PlotSpectrogram", - "ComfyAudio.PlotWaveform", - "ComfyAudio.Spectrogram" - ], - { - "title_aux": "comfyui-audio-processing" - } - ], - "https://github.com/rhdunn/comfyui-bus-plugin": [ - [ - "ComfyBus.CLIPConditioningBusNode", - "ComfyBus.CLIPEncodedPromptBusNode", - "ComfyBus.CheckpointBusNode", - "ComfyBus.ImageBusNode", - "ComfyBus.ImageParameterBusNode", - "ComfyBus.ImageScaleToSideParameterBusNode", - "ComfyBus.ImageSizeBusNode", - "ComfyBus.LatentImageBusNode", - "ComfyBus.LatentImageParameterBusNode", - "ComfyBus.PromptBusNode", - "ComfyBus.PromptSDXLBusNode" - ], - { - "title_aux": "comfyui-bus-plugin" - } - ], - "https://github.com/richinsley/Comfy-LFO": [ - [ - "LFO_Pulse", - "LFO_Sawtooth", - "LFO_Sine", - "LFO_Square", - "LFO_Triangle" - ], - { - "title_aux": "Comfy-LFO" - } - ], - "https://github.com/ricklove/comfyui-ricklove": [ - [ - "RL_BBox", - "RL_CacheImageSequence", - "RL_CacheMaskSequence", - "RL_CivitaiTopImagePrompts", - "RL_Crop_Resize", - "RL_Crop_Resize_Batch", - "RL_Finetune_Analyze", - "RL_Finetune_Analyze_Batch", - "RL_Finetune_Variable", - "RL_ForceDependencyOrder", - "RL_ForceDependencyOrder_ImageString", - "RL_ForceDependencyOrder_Images", - "RL_ForceDependencyOrder_Latents", - "RL_ForceDependencyOrder_String", - "RL_ForceDependencyOrder_Strings", - "RL_IfFileExists", - "RL_Image_Shadow", - "RL_Image_Threshold_Channels", - "RL_Internet_Search", - "RL_LoadImageSequence", - "RL_Load_Flow", - "RL_LoraTextExtractTags", - "RL_Optical_Flow_Dip", - "RL_RebootComfyIfLeaky", - "RL_SaveImageSequence", - "RL_Save_Flow", - "RL_SequenceContext", - "RL_Sequence_ToFilePathList", - "RL_StopIfBlack", - "RL_Uncrop", - "RL_Warp_Image", - "RL_Zoe_Depth_Map_Preprocessor", - "RL_Zoe_Depth_Map_Preprocessor_Raw_Infer", - "RL_Zoe_Depth_Map_Preprocessor_Raw_Process" - ], - { - "title_aux": "comfyui-ricklove" - } - ], - "https://github.com/risunobushi/ComfyUI-Similarity-Score": [ - [ - "ImageSimilarityScores" - ], - { - "title_aux": "ComfyUI-Similarity-Score" - } - ], - "https://github.com/risunobushi/comfyUI_FrequencySeparation_RGB-HSV": [ - [ - "FrequencyCombination", - "FrequencyCombinationHSV", - "FrequencySeparation", - "FrequencySeparationHSV" - ], - { - "title_aux": "comfyUI_FrequencySeparation_RGB-HSV" - } - ], - "https://github.com/robertvoy/ComfyUI-Flux-Continuum": [ - [ - "BatchSlider", - "BooleanToEnabled", - "ConfigurableDrawText", - "ControlNetSlider", - "DenoiseSlider", - "DrawTextConfig", - "FluxContinuumModelRouter", - "GPUSlider", - "GuidanceSlider", - "IPAdapterSlider", - "ImageBatchBoolean", - "ImpactControlBridgeFix", - "LatentPass", - "MaxShiftSlider", - "OutputGetString", - "PipePass", - "ResolutionPicker", - "SEGSPass", - "SamplerParameterPacker", - "SamplerParameterUnpacker", - "SelectFromBatch", - "SimpleTextTruncate", - "SplitVec3", - "StepSlider", - "TextVersions" - ], - { - "title_aux": "ComfyUI Flux Continuum: Modular Interface" - } - ], - "https://github.com/robtl2/ComfyUI-ComfyBridge": [ - [ - "CB_ImageReceiver", - "CB_ImageSender" - ], - { - "title_aux": "ComfyUI-ComfyBridge" - } - ], - "https://github.com/rohitsainier/ComfyUI-InstagramDownloader": [ - [ - "InstagramDownloader", - "MediaOrganizer" - ], - { - "title_aux": "ComfyUI-InstagramDownloader" - } - ], - "https://github.com/romeobuilderotti/ComfyUI-PNG-Metadata": [ - [ - "SetMetadataAll", - "SetMetadataString" - ], - { - "title_aux": "ComfyUI PNG Metadata" - } - ], - "https://github.com/ronaldzgithub/ComfyUI_Appstore": [ - [ - "ComfyUIAppstoreHost", - "ComfyUIAppstoreParam", - "sdAppstore_saveImage" - ], - { - "title_aux": "ComfyUI_Appstore" - } - ], - "https://github.com/ronniebasak/ComfyUI-Tara-LLM-Integration": [ - [ - "TaraAdvancedComposition", - "TaraApiKeyLoader", - "TaraApiKeySaver", - "TaraDaisyChainNode", - "TaraLLMConfig", - "TaraPresetLLMConfig", - "TaraPrompter", - "TaraPrompterAdvanced" - ], - { - "title_aux": "ComfyUI-Tara-LLM-Integration" - } - ], - "https://github.com/ronsantash/Comfyui-flexi-lora-loader": [ - [ - "ComfyUIFlexiLoRALoader" - ], - { - "title_aux": "ComfyUIFlexiLoRALoader" - } - ], - "https://github.com/royceschultz/ComfyUI-Notifications": [ - [ - "Notif-PlaySound", - "Notif-SystemNotification", - "Notif-UnifiedNotification", - "Notif-Webhook" - ], - { - "title_aux": "ComfyUI-Notifications" - } - ], - "https://github.com/royceschultz/ComfyUI-TranscriptionTools": [ - [ - "TT-AudioSink", - "TT-ConvertVhsAudioToAudio", - "TT-LoadAudio", - "TT-LoadBatch", - "TT-LoadVideoAudio", - "TT-LoadWhisperModel", - "TT-WhisperTranscription", - "TT-WhisperTranscriptionBatch" - ], - { - "title_aux": "ComfyUI-TranscriptionTools" - } - ], - "https://github.com/rubi-du/ComfyUI-BiRefNet-Super": [ - [ - "BiRefNet_Lite", - "BiRefNet_Super", - "BiRefNet_onnx" - ], - { - "title_aux": "ComfyUI-BiRefNet-lite" - } - ], - "https://github.com/rubi-du/ComfyUI-Flux-Inpainting": [ - [ - "Flux Inpainting", - "FluxGuffInpainting", - "FluxInpainting", - "FluxSimpleInpainting", - "FluxTransformerInpainting", - "FluxVAELoader" - ], - { - "title_aux": "ComfyUI-Flux-Inpainting" - } - ], - "https://github.com/rubi-du/ComfyUI-ICC-nodes": [ - [ - "LoadImageICC", - "PreviewImageICC", - "SaveImageICC" - ], - { - "title_aux": "ComfyUI-ICC-nodes" - } - ], - "https://github.com/rui40000/RUI-Nodes": [ - [ - "ABCondition", - "CharacterCount" - ], - { - "title_aux": "RUI-Nodes" - } - ], - "https://github.com/ruiqutech/ComfyUI-RuiquNodes": [ - [ - "EvaluateListMultiple1", - "EvaluateListMultiple3", - "EvaluateListMultiple6", - "EvaluateListMultiple9", - "EvaluateMultiple1", - "EvaluateMultiple3", - "EvaluateMultiple6", - "EvaluateMultiple9", - "ImageDilate", - "ImageErode", - "ListPath", - "MaskDilate", - "MaskErode", - "PreviewMask", - "RangeSplit", - "SaveMask", - "StringAsAny", - "StringConcat1", - "StringConcat3", - "StringConcat6", - "StringConcat9", - "StringPathStem", - "TermsToList", - "VAEDecodeSave" - ], - { - "title_aux": "RuiquNodes for ComfyUI" - } - ], - "https://github.com/runtime44/comfyui_r44_nodes": [ - [ - "Runtime44ColorMatch", - "Runtime44DynamicKSampler", - "Runtime44FilmGrain", - "Runtime44ImageEnhance", - "Runtime44ImageOverlay", - "Runtime44ImageResizer", - "Runtime44ImageToNoise", - "Runtime44IterativeUpscaleFactor", - "Runtime44MaskSampler", - "Runtime44TiledMaskSampler", - "Runtime44Upscaler" - ], - { - "title_aux": "Runtime44 ComfyUI Nodes" - } - ], - "https://github.com/ruucm/ruucm-comfy": [ - [ - "BatchAverageImage", - "LoadExternalLoraModelOnly" - ], - { - "nodename_pattern": " \\(ruucm\\)$", - "title_aux": "Ruucm's ComfyUI Nodes" - } - ], - "https://github.com/ryanontheinside/ComfyUI_Doom": [ - [ - "Doom" - ], - { - "title_aux": "Doom" - } - ], - "https://github.com/ryanontheinside/ComfyUI_EfficientTAM": [ - [ - "EfficientTAMLoader", - "EfficientTAMPredictor" - ], - { - "title_aux": "ComfyUI-EfficientTAM" - } - ], - "https://github.com/ryanontheinside/ComfyUI_ProfilerX": [ - [ - "CATEGORY", - "FUNCTION", - "INPUT_TYPES", - "OUTPUT_NODE", - "ProfilerX", - "RETURN_TYPES" - ], - { - "title_aux": "ComfyUI_ProfilerX" - } - ], - "https://github.com/ryanontheinside/ComfyUI_RealTimeNodes": [ - [ - "DTypeConverter", - "DeltaControl", - "FPSMonitor", - "FastWebcamCapture", - "FloatControl", - "FloatSequence", - "IntControl", - "IntSequence", - "IntegerMotionController", - "IntervalControl", - "MotionController", - "QuickShapeMask", - "ROINode", - "StringControl", - "StringSequence", - "TAESDVaeDecode", - "TAESDVaeEncode" - ], - { - "title_aux": "Nodes for use with real-time applications of ComfyUI" - } - ], - "https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside": [ - [ - "AdvancedLuminanceMask", - "AreaFeatureNode", - "AudioChannelMerge", - "AudioChannelSplit", - "AudioDither", - "AudioFade", - "AudioFeatureExtractor", - "AudioFeatureVisualizer", - "AudioFilter", - "AudioGain", - "AudioInfo", - "AudioPad", - "AudioPitchShift", - "AudioResample", - "AudioSeparatorSimple", - "AudioSubtract", - "AudioTimeStretch", - "AudioVolumeNormalization", - "Audio_Combine", - "Audio_Concatenate", - "BrightnessFeatureNode", - "ColorFeatureNode", - "Color_Picker", - "ContextModifier", - "DepthBlender", - "DepthFeatureNode", - "DepthInjection", - "DepthMapProtrusion", - "DepthRippleEffect", - "DepthShapeModifier", - "DepthShapeModifierPrecise", - "Doom_", - "DownloadCREPEModel", - "DownloadOpenUnmixModel", - "DrawableFeatureNode", - "DyeImage", - "EffectVisualizer", - "EmbeddingGuidedLatentInterpolate", - "EmitterEmissionRateModulation", - "EmitterMovement", - "EmptyImageAndMaskFromAudio", - "EmptyImageFromAudio", - "EmptyMaskFromAudio", - "FeatureAccumulate", - "FeatureCombine", - "FeatureContiguousInterpolate", - "FeatureFade", - "FeatureInfoNode", - "FeatureInterpolator", - "FeatureMath", - "FeatureMixer", - "FeatureOscillator", - "FeaturePeakDetector", - "FeatureRebase", - "FeatureRenormalize", - "FeatureScaler", - "FeatureSmoothing", - "FeatureToFlexFloatParam", - "FeatureToFlexIntParam", - "FeatureToFloat", - "FeatureToLatentKeyframe", - "FeatureToMask", - "FeatureToSplineData", - "FeatureToTimestepKeyframe", - "FeatureToWeightsStrategy", - "FeatureTruncateOrExtend", - "FlexAudioPitchShift", - "FlexAudioTimeStretch", - "FlexAudioVisualizerCircular", - "FlexAudioVisualizerContour", - "FlexAudioVisualizerLine", - "FlexFeatureAttentionControl", - "FlexImageBloom", - "FlexImageChromaticAberration", - "FlexImageColorGrade", - "FlexImageContrast", - "FlexImageDepthWarp", - "FlexImageEdgeDetect", - "FlexImageGlitch", - "FlexImageHorizontalToVertical", - "FlexImageHueShift", - "FlexImageKaleidoscope", - "FlexImageParallax", - "FlexImagePixelate", - "FlexImagePosterize", - "FlexImageTiltShift", - "FlexImageTransform", - "FlexImageVignette", - "FlexImageWarp", - "FlexLatentBlend", - "FlexLatentInterpolate", - "FlexLatentNoise", - "FlexMaskBinary", - "FlexMaskDepthChamber", - "FlexMaskEmanatingRings", - "FlexMaskInterpolate", - "FlexMaskMath", - "FlexMaskMorph", - "FlexMaskOpacity", - "FlexMaskRandomShapes", - "FlexMaskTransform", - "FlexMaskVoronoiScheduled", - "FlexMaskWarp", - "FlexMaskWavePropagation", - "FlexVideoDirection", - "FlexVideoFrameBlend", - "FlexVideoSeek", - "FlexVideoSpeed", - "FloatFeatureNode", - "FrequencyFilterCustom", - "FrequencyFilterPreset", - "FrequencyRange", - "GravityWell", - "ImageCASBatch", - "ImageChunk", - "ImageDifference", - "ImageInterval", - "ImageIntervalSelectPercentage", - "ImageScaleToTarget", - "Image_Shuffle", - "LatentFrequencyBlender", - "LocationFromMask", - "LocationFromPoint", - "LocationTransform", - "MIDILoadAndExtract", - "ManualFeatureFromPipe", - "ManualFeatureNode", - "ManualFeaturePipe", - "ManualWhisperAlignmentData", - "MaskCompositePlus", - "MaskMath", - "MaskMorph", - "MaskRings", - "MaskTransform", - "MaskWarp", - "MotionFeatureNode", - "MovingShape", - "OpticalFlowDirectionMask", - "OpticalFlowMaskModulation", - "OpticalFlowParticleSystem", - "ParticleColorModulation", - "ParticleEmissionMask", - "ParticleEmitter", - "ParticleSizeModulation", - "ParticleSpeedModulation", - "PitchFeatureExtractor", - "PitchRange", - "PitchRangeByNoteNode", - "PitchRangePreset", - "PitchVisualizer", - "PoseInterpolator", - "PreviewFeature", - "ProximityFeatureNode", - "ProximityVisualizer", - "RhythmFeatureExtractor", - "SplineFeatureModulator", - "SplineRhythmModulator", - "SpringJointSetting", - "StaticBody", - "SwapDevice", - "TextMaskNode", - "TimeFeatureNode", - "TranslucentComposite", - "TriggerBuilder", - "VideoChunk", - "Vortex", - "WhisperAutoAdjust", - "WhisperFeature", - "WhisperTextRenderer", - "WhisperTimeAdjuster", - "WhisperToPromptTravel", - "_mfc" - ], - { - "title_aux": "RyanOnTheInside" - } - ], - "https://github.com/saftle/uber_comfy_nodes": [ - [ - "ControlNet Selector", - "ControlNetOptionalLoader", - "DiffusersSelector", - "MultiInputVariableRewrite", - "SaveImageJPGNoMeta" - ], - { - "title_aux": "Suplex Misc ComfyUI Nodes" - } - ], - "https://github.com/sakura1bgx/ComfyUI_FlipStreamViewer": [ - [ - "FlipStreamLoader", - "FlipStreamOption", - "FlipStreamPrompt", - "FlipStreamSource", - "FlipStreamSwitchVFI", - "FlipStreamUpdate", - "FlipStreamViewer" - ], - { - "title_aux": "ComfyUI_FlipStreamViewer" - } - ], - "https://github.com/sanbuphy/ComfyUI-AudioLDM": [ - [ - "AudioLDM", - "PreviewAudioLDM", - "SaveAudioLDM" - ], - { - "title_aux": "ComfyUI-AudioLDM" - } - ], - "https://github.com/sdfxai/SDFXBridgeForComfyUI": [ - [ - "SDFXClipTextEncode" - ], - { - "title_aux": "SDFXBridgeForComfyUI - ComfyUI Custom Node for SDFX Integration" - } - ], - "https://github.com/seanlynch/comfyui-optical-flow": [ - [ - "Apply optical flow", - "Compute optical flow", - "Visualize optical flow" - ], - { - "title_aux": "ComfyUI Optical Flow" - } - ], - "https://github.com/seanlynch/srl-nodes": [ - [ - "SRL Conditional Interrrupt", - "SRL Eval", - "SRL Filter Image List", - "SRL Format String" - ], - { - "title_aux": "SRL's nodes" - } - ], - "https://github.com/sebord/ComfyUI-LMCQ": [ - [ - "LmcqAuthLoraDecryption", - "LmcqAuthLoraEncryption", - "LmcqAuthModelDecryption", - "LmcqAuthModelEncryption", - "LmcqAuthWorkflowDecryption", - "LmcqAuthWorkflowEncryption", - "LmcqGetMachineCode", - "LmcqImageSaver", - "LmcqImageSaverTransit", - "LmcqImageSaverWeb", - "LmcqInputValidator", - "LmcqLoadFluxNF4Checkpoint", - "LmcqNumberSliders5", - "LmcqRuntimeLoraDecryption", - "LmcqRuntimeLoraEncryption", - "LmcqRuntimeModelDecryption", - "LmcqRuntimeModelEncryption", - "LmcqRuntimeWorkflowDecryption", - "LmcqRuntimeWorkflowEncryption" - ], - { - "title_aux": "ComfyUI-LMCQ" - } - ], - "https://github.com/sergekatzmann/ComfyUI_Nimbus-Pack": [ - [ - "AdjustAndRoundDimensions", - "AspectRatioMobileDevices", - "ImageResizeAndCropNode", - "ImageSquareAdapterNode", - "PopularScreenResolutions" - ], - { - "title_aux": "ComfyUI_Nimbus-Pack" - } - ], - "https://github.com/sh570655308/ComfyUI-GigapixelAI": [ - [ - "GigapixelAI", - "GigapixelModelSettings", - "GigapixelUpscaleSettings" - ], - { - "title_aux": "ComfyUI-GigapixelAI" - } - ], - "https://github.com/sh570655308/ComfyUI-TopazVideoAI": [ - [ - "TopazUpscaleParams", - "TopazVideoAI" - ], - { - "title_aux": "ComfyUI-TopazVideoAI" - } - ], - "https://github.com/shabri-arrahim/ComfyUI-Safety-Checker": [ - [ - "CompVisSafetyChecker", - "FalconsAISafetyChecker", - "loadImageBase64" - ], - { - "title_aux": "ComfyUI Safety Checker" - } - ], - "https://github.com/shadowcz007/comfyui-Image-reward": [ - [ - "ImageBatchToList_", - "ImageRewardScore_" - ], - { - "title_aux": "comfyui-Image-reward" - } - ], - "https://github.com/shadowcz007/comfyui-consistency-decoder": [ - [ - "VAEDecodeConsistencyDecoder", - "VAELoaderConsistencyDecoder" - ], - { - "title_aux": "Consistency Decoder" - } - ], - "https://github.com/shadowcz007/comfyui-edit-mask": [ - [ - "EditMask" - ], - { - "title_aux": "comfyui-edit-mask" - } - ], - "https://github.com/shadowcz007/comfyui-liveportrait": [ - [ - "ExpressionEditor_", - "ExpressionVideo2VideoNode", - "ExpressionVideoNode", - "FaceCropInfo", - "LivePortraitNode", - "LivePortraitVideoNode", - "Retargeting" - ], - { - "title_aux": "comfyui-liveportrait" - } - ], - "https://github.com/shadowcz007/comfyui-mixlab-nodes": [ - [ - "3DImage", - "AnalyzeAudio", - "AppInfo", - "ApplyVisualStylePrompting_", - "AreaToMask", - "AudioPlay", - "CenterImage", - "CkptNames_", - "Color", - "ComparingTwoFrames_", - "CompositeImages_", - "CreateJsonNode", - "DepthViewer", - "DynamicDelayProcessor", - "EmbeddingPrompt", - "EnhanceImage", - "FaceToMask", - "FeatheredMask", - "FloatSlider", - "FloatingVideo", - "Font", - "GLIGENTextBoxApply_Advanced", - "GetImageSize_", - "GradientImage", - "GridDisplayAndSave", - "GridInput", - "GridOutput", - "ImageBatchToList_", - "ImageColorTransfer", - "ImageCropByAlpha", - "ImageListToBatch_", - "ImagesPrompt_", - "IncrementingListNode_", - "IntNumber", - "JoinWithDelimiter", - "KeyInput", - "LimitNumber", - "ListSplit_", - "LoadImagesFromPath", - "LoadImagesFromURL", - "LoadImagesToBatch", - "LoraNames_", - "LoraPrompt", - "MaskListMerge_", - "MaskListReplace_", - "MergeLayers", - "MirroredImage", - "MultiplicationNode", - "NewLayer", - "NoiseImage", - "OutlineMask", - "P5Input", - "PreviewMask_", - "PromptImage", - "PromptSimplification", - "PromptSlide", - "RandomPrompt", - "ResizeImageMixlab", - "SamplerNames_", - "SaveImageAndMetadata_", - "SaveImageToLocal", - "ScreenShare", - "Seed_", - "ShowLayer", - "SmoothMask", - "SpeechRecognition", - "SpeechSynthesis", - "SplitImage", - "SplitLongMask", - "StyleAlignedBatchAlign_", - "StyleAlignedReferenceSampler_", - "StyleAlignedSampleReferenceLatents_", - "SvgImage", - "SwitchByIndex", - "TESTNODE_", - "TESTNODE_TOKEN", - "TextImage", - "TextInput_", - "TextToNumber", - "TransparentImage", - "VAEDecodeConsistencyDecoder", - "VAELoaderConsistencyDecoder" - ], - { - "title_aux": "comfyui-mixlab-nodes" - } - ], - "https://github.com/shadowcz007/comfyui-sound-lab": [ - [ - "AudioPlay", - "Musicgen_", - "StableAudio_" - ], - { - "title_aux": "comfyui-sound-lab" - } - ], - "https://github.com/shadowcz007/comfyui-try-on": [ - [ - "CatVTONNode", - "FashionClothMask", - "FashionClothMask2" - ], - { - "author": "chflame", - "description": "CatVTON warpper for ComfyUI", - "nickname": "CatVTON_Wrapper", - "title": "CatVTON_Wrapper", - "title_aux": "comfyui-try-on" - } - ], - "https://github.com/shadowcz007/comfyui-ultralytics-yolo": [ - [ - "DetectByLabel" - ], - { - "title_aux": "comfyui-ultralytics-yolo" - } - ], - "https://github.com/shahkoorosh/ComfyUI-KGnodes": [ - [ - "CustomResolutionLatentNode", - "StyleSelector" - ], - { - "author": "ShahKoorosh", - "description": "This Custom node offers various experimental nodes to make it easier to use ComfyUI.", - "nickname": "KGnodes", - "title": "ComfyUI-KGnodes", - "title_aux": "ComfyUI-KGnodes" - } - ], - "https://github.com/shahkoorosh/ComfyUI-PersianText": [ - [ - "PersianText" - ], - { - "author": "ShahKoorosh", - "description": "A powerful ComfyUI node for rendering text with advanced styling options, including full support for Persian/Farsi and Arabic scripts.", - "nickname": "PersianText", - "title": "ComfyUI-PersianText", - "title_aux": "ComfyUI-PersianText" - } - ], - "https://github.com/shenduldh/ComfyUI-Lightning": [ - [ - "ApplyFBCacheAndSkipBlocks", - "ApplyMBCacheAndSkipBlocks", - "ApplyMBCacheAndSkipBlocksForSana", - "ApplySageAttention", - "ApplyTeaCacheAndSkipBlocks", - "CompileAndQuantizeModel", - "SanaCLIPLoader", - "SanaDiffusionLoader", - "SanaEmptyLatentImage", - "SanaTextEncode", - "SanaVAELoader" - ], - { - "title_aux": "ComfyUI-Lightning" - } - ], - "https://github.com/shi3z/ComfyUI_Memeplex_DALLE": [ - [ - "DallERender", - "GPT", - "MemeplexCustomSDXLRender", - "MemeplexRender", - "TextInput", - "TextSend" - ], - { - "title_aux": "ComfyUI_Memeplex_DALLE" - } - ], - "https://github.com/shiimizu/ComfyUI-PhotoMaker-Plus": [ - [ - "PhotoMakerEncodePlus", - "PhotoMakerInsightFaceLoader", - "PhotoMakerLoaderPlus", - "PhotoMakerLoraLoaderPlus", - "PhotoMakerStyles", - "PrepImagesForClipVisionFromPath" - ], - { - "title_aux": "ComfyUI PhotoMaker Plus" - } - ], - "https://github.com/shiimizu/ComfyUI-TiledDiffusion": [ - [ - "NoiseInversion", - "SpotDiffusionParams_TiledDiffusion", - "TiledDiffusion", - "VAEDecodeTiled_TiledDiffusion", - "VAEEncodeTiled_TiledDiffusion" - ], - { - "title_aux": "Tiled Diffusion & VAE for ComfyUI" - } - ], - "https://github.com/shiimizu/ComfyUI-semantic-aware-guidance": [ - [ - "SemanticAwareGuidance" - ], - { - "title_aux": "Semantic-aware Guidance (S-CFG)" - } - ], - "https://github.com/shiimizu/ComfyUI_smZNodes": [ - [ - "smZ CLIPTextEncode", - "smZ Settings" - ], - { - "title_aux": "smZNodes" - } - ], - "https://github.com/shingo1228/ComfyUI-SDXL-EmptyLatentImage": [ - [ - "SDXL Empty Latent Image" - ], - { - "title_aux": "ComfyUI-SDXL-EmptyLatentImage" - } - ], - "https://github.com/shingo1228/ComfyUI-send-eagle-slim": [ - [ - "Send Eagle with text", - "Send Webp Image to Eagle" - ], - { - "title_aux": "ComfyUI-send-Eagle(slim)" - } - ], - "https://github.com/shinich39/comfyui-parse-image": [ - [ - "LoadBooleanFromImage", - "LoadComboFromImage", - "LoadFloatFromImage", - "LoadIntFromImage", - "LoadStringFromImage" - ], - { - "author": "shinich39", - "description": "Extract metadata from image.", - "nickname": "parse-image", - "title": "parse-image", - "title_aux": "comfyui-parse-image" - } - ], - "https://github.com/shinich39/comfyui-put-image": [ - [ - "PutImage" - ], - { - "author": "shinich39", - "description": "Load image from directory.", - "nickname": "put-image", - "title": "put-image", - "title_aux": "comfyui-put-image" - } - ], - "https://github.com/shobhitic/ComfyUI-PlusMinusTextClip": [ - [ - "PlusMinusTextClip" - ], - { - "title_aux": "PlusMinusTextClip - Single node for Positive and Negative Prompts" - } - ], - "https://github.com/shockz0rz/comfy-easy-grids": [ - [ - "FloatToText", - "GridFloatList", - "GridFloats", - "GridIntList", - "GridInts", - "GridLoras", - "GridStringList", - "GridStrings", - "ImageGridCommander", - "IntToText", - "SaveImageGrid", - "TextConcatenator" - ], - { - "title_aux": "comfy-easy-grids" - } - ], - "https://github.com/siliconflow/BizyAir": [ - [ - "BizyAirBAE_NormalMapPreprocessor", - "BizyAirBinaryPreprocessor", - "BizyAirCannyEdgePreprocessor", - "BizyAirColorPreprocessor", - "BizyAirDWPreprocessor", - "BizyAirDepthAnythingV2Preprocessor", - "BizyAirFakeScribblePreprocessor", - "BizyAirGenerateLightningImage", - "BizyAirHEDPreprocessor", - "BizyAirJoyCaption", - "BizyAirJoyCaption2", - "BizyAirLeReS_DepthMapPreprocessor", - "BizyAirLineArtPreprocessor", - "BizyAirM_LSDPreprocessor", - "BizyAirMetric3D_DepthMapPreprocessor", - "BizyAirMetric3D_NormalMapPreprocessor", - "BizyAirMiDaS_DepthMapPreprocessor", - "BizyAirMiDaS_NormalMapPreprocessor", - "BizyAirOneFormer_ADE20K_SemSegPreprocessor", - "BizyAirOneFormer_COCO_SemSegPreprocessor", - "BizyAirOpenposePreprocessor", - "BizyAirPiDiNetPreprocessor", - "BizyAirRemoveBackground", - "BizyAirSAMPreprocessor", - "BizyAirScribblePreprocessor", - "BizyAirSegmentAnythingPointBox", - "BizyAirSegmentAnythingText", - "BizyAirSiliconCloudLLMAPI", - "BizyAirSiliconCloudVLMAPI", - "BizyAirTilePreprocessor", - "BizyAirToggleServerEndpoint", - "BizyAirUniFormer_SemSegPreprocessor", - "BizyAirZoe_DepthMapPreprocessor", - "BizyAir_MinusZoneChatGLM3TextEncode", - "LayerMask: SegmentAnythingUltra V2", - "StableDiffusionXLControlNetUnionPipeline" - ], - { - "title_aux": "\u2601\ufe0fBizyAir Nodes" - } - ], - "https://github.com/sipherxyz/comfyui-art-venture": [ - [ - "AV_AwsBedrockClaudeApi", - "AV_AwsBedrockMistralApi", - "AV_CheckpointMerge", - "AV_CheckpointModelsToParametersPipe", - "AV_CheckpointSave", - "AV_ClaudeApi", - "AV_ControlNetEfficientLoader", - "AV_ControlNetEfficientLoaderAdvanced", - "AV_ControlNetEfficientStacker", - "AV_ControlNetEfficientStackerSimple", - "AV_ControlNetLoader", - "AV_ControlNetPreprocessor", - "AV_LLMApiConfig", - "AV_LLMChat", - "AV_LLMCompletion", - "AV_LLMMessage", - "AV_LoraListLoader", - "AV_LoraListStacker", - "AV_LoraLoader", - "AV_OpenAIApi", - "AV_ParametersPipeToCheckpointModels", - "AV_ParametersPipeToPrompts", - "AV_PromptsToParametersPipe", - "AV_SAMLoader", - "AV_VAELoader", - "AspectRatioSelector", - "BLIPCaption", - "BLIPLoader", - "BooleanPrimitive", - "CheckpointNameSelector", - "ColorBlend", - "ColorCorrect", - "DeepDanbooruCaption", - "DependenciesEdit", - "DownloadAndLoadBlip", - "DownloadISNetModel", - "Fooocus_KSampler", - "Fooocus_KSamplerAdvanced", - "GetBoolFromJson", - "GetFloatFromJson", - "GetIntFromJson", - "GetObjectFromJson", - "GetSAMEmbedding", - "GetTextFromJson", - "ISNetLoader", - "ISNetSegment", - "ImageAlphaComposite", - "ImageApplyChannel", - "ImageExtractChannel", - "ImageGaussianBlur", - "ImageMuxer", - "ImageRepeat", - "ImageScaleDown", - "ImageScaleDownBy", - "ImageScaleDownToSize", - "ImageScaleToMegapixels", - "LaMaInpaint", - "LoadImageAsMaskFromUrl", - "LoadImageFromUrl", - "LoadJsonFromText", - "LoadJsonFromUrl", - "MergeModels", - "NumberScaler", - "OverlayInpaintedImage", - "OverlayInpaintedLatent", - "PrepareImageAndMaskForInpaint", - "QRCodeGenerator", - "RandomFloat", - "RandomInt", - "SAMEmbeddingToImage", - "SDXLAspectRatioSelector", - "SDXLPromptStyler", - "SeedSelector", - "StringToInt", - "StringToNumber", - "TextRandomMultiline", - "TextSwitchCase" - ], - { - "title_aux": "comfyui-art-venture" - } - ], - "https://github.com/sipie800/ComfyUI-PuLID-Flux-Enhanced": [ - [ - "ApplyPulidFlux", - "PulidFluxEvaClipLoader", - "PulidFluxInsightFaceLoader", - "PulidFluxModelLoader" - ], - { - "title_aux": "ComfyUI-PuLID-Flux-Enhanced" - } - ], - "https://github.com/skfoo/ComfyUI-Coziness": [ - [ - "LoraTextExtractor-b1f83aa2", - "MultiLoraLoader-70bf3d77" - ], - { - "title_aux": "ComfyUI-Coziness" - } - ], - "https://github.com/slyt/comfyui-ollama-nodes": [ - [ - "BooleanToString", - "DownloadHuggingfaceModel", - "FloatToString", - "GenerateOllama", - "IntToString", - "ListModels", - "ListToString", - "PullModel" - ], - { - "title_aux": "comfyui-ollama-nodes" - } - ], - "https://github.com/smagnetize/kb-comfyui-nodes": [ - [ - "SingleImageDataUrlLoader" - ], - { - "title_aux": "kb-comfyui-nodes" - } - ], - "https://github.com/smlbiobot/ComfyUI-Flux-Replicate-API": [ - [ - "SML_FluxProUltra_Replicate_Standalone", - "SML_FluxPro_Replicate_Standalone" - ], - { - "title_aux": "ComfyUI-Flux-Replicate-API" - } - ], - "https://github.com/smlbiobot/sml-comfyui-prompt-expansion": [ - [ - "SML_Prompt_Generator" - ], - { - "title_aux": "sml-comfyui-prompt-expansion" - } - ], - "https://github.com/smthemex/ComfyUI_AnyDoor": [ - [ - "AnyDoor_LoadModel", - "AnyDoor_img2img" - ], - { - "title_aux": "ComfyUI_AnyDoor" - } - ], - "https://github.com/smthemex/ComfyUI_CSGO_Wrapper": [ - [ - "Blip_Loader", - "CSGO_Loader", - "CSGO_Sampler" - ], - { - "title_aux": "ComfyUI_CSGO_Wrapper" - } - ], - "https://github.com/smthemex/ComfyUI_ChatGLM_API": [ - [ - "Glm_4_9b_Chat", - "Glm_4v_9b", - "Glm_Lcoal_Or_Repo", - "ZhipuaiApi_Character", - "ZhipuaiApi_Txt", - "ZhipuaiApi_img" - ], - { - "title_aux": "ComfyUI_ChatGLM_API" - } - ], - "https://github.com/smthemex/ComfyUI_CustomNet": [ - [ - "CustomNet_LoadModel", - "CustomNet_Sampler" - ], - { - "title_aux": "ComfyUI_CustomNet" - } - ], - "https://github.com/smthemex/ComfyUI_DeepFakeDefenders": [ - [ - "DeepFakeDefender_Loader", - "DeepFakeDefender_Sampler" - ], - { - "title_aux": "ComfyUI_DeepFakeDefenders" - } - ], - "https://github.com/smthemex/ComfyUI_Demucs": [ - [ - "Demucs_Loader", - "Demucs_Sampler" - ], - { - "title_aux": "ComfyUI_Demucs" - } - ], - "https://github.com/smthemex/ComfyUI_Diffree": [ - [ - "Diffree_Model_Loader", - "Diffree_Sampler" - ], - { - "title_aux": "ComfyUI_Diffree" - } - ], - "https://github.com/smthemex/ComfyUI_EchoMimic": [ - [ - "Echo_LoadModel", - "Echo_Sampler" - ], - { - "title_aux": "ComfyUI_EchoMimic" - } - ], - "https://github.com/smthemex/ComfyUI_Face_Anon_Simple": [ - [ - "Face_Anon_Simple_Align", - "Face_Anon_Simple_LoadModel", - "Face_Anon_Simple_Sampler" - ], - { - "title_aux": "ComfyUI_Face_Anon_Simple" - } - ], - "https://github.com/smthemex/ComfyUI_FoleyCrafter": [ - [ - "FoleyCrafter_LoadModel", - "FoleyCrafter_Sampler" - ], - { - "title_aux": "ComfyUI_FoleyCrafter" - } - ], - "https://github.com/smthemex/ComfyUI_FollowYourEmoji": [ - [ - "Emoji_Make_Temple", - "FollowYouEmoji_LoadModel", - "FollowYouEmoji_Sampler" - ], - { - "title_aux": "ComfyUI_FollowYourEmoji" - } - ], - "https://github.com/smthemex/ComfyUI_Hallo2": [ - [ - "HalloLoader", - "HalloPreImgAndAudio", - "HallosSampler", - "HallosUpscaleloader", - "HallosVideoUpscale" - ], - { - "title_aux": "ComfyUI_Hallo2" - } - ], - "https://github.com/smthemex/ComfyUI_HiDiffusion_Pro": [ - [ - "HI_Diffusers_Model_Loader", - "Hi_Sampler" - ], - { - "title_aux": "ComfyUI_HiDiffusion_Pro" - } - ], - "https://github.com/smthemex/ComfyUI_ID_Animator": [ - [ - "ID_Animator", - "ID_Repo_Choice" - ], - { - "title_aux": "ComfyUI_ID_Animator" - } - ], - "https://github.com/smthemex/ComfyUI_InstantIR_Wrapper": [ - [ - "InstantIR_Loader", - "InstantIR_Sampler" - ], - { - "author": "zhaoyafei", - "title_aux": "ComfyUI_InstantIR_Wrapper" - } - ], - "https://github.com/smthemex/ComfyUI_Llama3_8B": [ - [ - "ChatQA_1p5_8b", - "Local_Or_Repo_Choice", - "Meta_Llama3_8B", - "MiniCPM_Llama3_V25" - ], - { - "title_aux": "ComfyUI_Llama3_8B" - } - ], - "https://github.com/smthemex/ComfyUI_MS_Diffusion": [ - [ - "MS_Object_img_Batch", - "MSdiffusion_Model_Loader", - "MSdiffusion_Sampler" - ], - { - "title_aux": "ComfyUI_MS_Diffusion" - } - ], - "https://github.com/smthemex/ComfyUI_MangaNinjia": [ - [ - "MangaNinjiaLoader", - "MangaNinjiaSampler" - ], - { - "title_aux": "ComfyUI_MangaNinjia" - } - ], - "https://github.com/smthemex/ComfyUI_MooER": [ - [ - "MooER_LoadModel", - "MooER_Sampler" - ], - { - "title_aux": "ComfyUI_MooER" - } - ], - "https://github.com/smthemex/ComfyUI_OmniParser": [ - [ - "OmniParser_Loader", - "OmniParser_Sampler" - ], - { - "title_aux": "ComfyUI_OmniParser" - } - ], - "https://github.com/smthemex/ComfyUI_PBR_Maker": [ - [ - "Load_MatForger", - "MatForger_Sampler" - ], - { - "title_aux": "ComfyUI_PBR_Maker" - } - ], - "https://github.com/smthemex/ComfyUI_ParlerTTS": [ - [ - "ParlerTTS_LoadModel", - "ParlerTTS_Sampler" - ], - { - "title_aux": "ComfyUI_ParlerTTS" - } - ], - "https://github.com/smthemex/ComfyUI_Pic2Story": [ - [ - "Pic2Story_Loader", - "Pic2Story_Sampler" - ], - { - "title_aux": "ComfyUI_Pic2Story" - } - ], - "https://github.com/smthemex/ComfyUI_Pipeline_Tool": [ - [ - "Pipeline_Tool" - ], - { - "title_aux": "ComfyUI_Pipeline_Tool" - } - ], - "https://github.com/smthemex/ComfyUI_Pops": [ - [ - "Pops_Decoder", - "Pops_Repo_Loader", - "Pops_Sampler" - ], - { - "title_aux": "ComfyUI_Pops" - } - ], - "https://github.com/smthemex/ComfyUI_SVFR": [ - [ - "SVFR_LoadModel", - "SVFR_Sampler", - "SVFR_img2mask" - ], - { - "title_aux": "ComfyUI_SVFR" - } - ], - "https://github.com/smthemex/ComfyUI_Sapiens": [ - [ - "SapiensLoader", - "SapiensSampler" - ], - { - "title_aux": "ComfyUI_Sapiens" - } - ], - "https://github.com/smthemex/ComfyUI_StableAudio_Open": [ - [ - "StableAudio_ModelLoader", - "StableAudio_Sampler" - ], - { - "title_aux": "ComfyUI_StableAudio_Open" - } - ], - "https://github.com/smthemex/ComfyUI_Stable_Makeup": [ - [ - "StableMakeup_LoadModel", - "StableMakeup_Sampler" - ], - { - "author": "Sajjad Ayobbi", - "title_aux": "ComfyUI_Stable_Makeup" - } - ], - "https://github.com/smthemex/ComfyUI_StoryDiffusion": [ - [ - "Comic_Type", - "EasyFunction_Lite", - "Pre_Translate_prompt", - "Storydiffusion_Model_Loader", - "Storydiffusion_Sampler" - ], - { - "title_aux": "ComfyUI_StoryDiffusion" - } - ], - "https://github.com/smthemex/ComfyUI_Streamv2v_Plus": [ - [ - "Stream_Lora_Loader", - "Stream_Model_Loader", - "Stream_Sampler" - ], - { - "title_aux": "ComfyUI_Streamv2v_Plus" - } - ], - "https://github.com/smthemex/ComfyUI_TRELLIS": [ - [ - "Trellis_LoadModel", - "Trellis_Sampler", - "Trellis_multiimage_loader" - ], - { - "title_aux": "ComfyUI_TRELLIS" - } - ], - "https://github.com/sn0w12/ComfyUI-Sn0w-Scripts": [ - [ - "Character Selector", - "Copy/Paste Textbox", - "Filter Tags", - "Generate All Characters", - "Get Font Size", - "Load Lora Folder", - "Load Lora Sn0w", - "Lora Selector", - "Lora Tester", - "Prompt Combine", - "Prompt Selector", - "Sn0w KSampler", - "Sn0w Lora Stacker", - "Upscale Image With Model By" - ], - { - "title_aux": "ComfyUI-Sn0w-Scripts" - } - ], - "https://github.com/sneccc/comfyui-snek-nodes": [ - [ - "Aesthetics", - "Aesthetics V2", - "Load AI Toolkit Latent Flux", - "Send_to_Eagle" - ], - { - "title_aux": "comfyui-snek-nodes" - } - ], - "https://github.com/solution9th/Comfyui_mobilesam": [ - [ - "MobileSamDetector", - "MobileSamModelLoader", - "MobileSamPredictor" - ], - { - "title_aux": "Comfyui_mobilesam" - } - ], - "https://github.com/souki202/ComfyUI-LoadImage-Advanced": [ - [ - "ColorAdjustment", - "LoadImageUpscale", - "LoadImageUpscaleBy" - ], - { - "title_aux": "ComfyUI-LoadImage-Advanced" - } - ], - "https://github.com/sourceful-official/LoadLoraModelOnlyWithUrl": [ - [ - "LoadLoraModelOnlyWithUrl" - ], - { - "title_aux": "LoadLoraModelOnlyWithUrl" - } - ], - "https://github.com/sousakujikken/ComfyUI-PixydustQuantizer": [ - [ - "CRTLikeEffectNode", - "Quantizer", - "XYBlurNode" - ], - { - "title_aux": "ComfyUI-PixydustQuantizer" - } - ], - "https://github.com/space-nuko/ComfyUI-Disco-Diffusion": [ - [ - "DiscoDiffusion_DiscoDiffusion", - "DiscoDiffusion_DiscoDiffusionExtraSettings", - "DiscoDiffusion_GuidedDiffusionLoader", - "DiscoDiffusion_OpenAICLIPLoader" - ], - { - "title_aux": "Disco Diffusion" - } - ], - "https://github.com/space-nuko/ComfyUI-OpenPose-Editor": [ - [ - "Nui.OpenPoseEditor" - ], - { - "title_aux": "OpenPose Editor" - } - ], - "https://github.com/space-nuko/nui-suite": [ - [ - "Nui.DynamicPromptsTextGen", - "Nui.FeelingLuckyTextGen", - "Nui.OutputString" - ], - { - "title_aux": "nui suite" - } - ], - "https://github.com/spacepxl/ComfyUI-Depth-Pro": [ - [ - "DepthPro", - "FocalFromList", - "FocalMMtoPX", - "FocalPXtoMM", - "LoadDepthPro", - "MetricDepthToInverse", - "MetricDepthToRelative" - ], - { - "title_aux": "ComfyUI-Depth-Pro" - } - ], - "https://github.com/spacepxl/ComfyUI-Florence-2": [ - [ - "Florence2", - "Florence2Postprocess", - "Florence2PostprocessAll", - "LoadFlorence2Model" - ], - { - "title_aux": "ComfyUI-Florence-2" - } - ], - "https://github.com/spacepxl/ComfyUI-HQ-Image-Save": [ - [ - "LoadEXR", - "LoadEXRFrames", - "LoadLatentEXR", - "SaveEXR", - "SaveEXRFrames", - "SaveLatentEXR", - "SaveTiff" - ], - { - "title_aux": "ComfyUI-HQ-Image-Save" - } - ], - "https://github.com/spacepxl/ComfyUI-Image-Filters": [ - [ - "AdainFilterLatent", - "AdainImage", - "AdainLatent", - "AlphaClean", - "AlphaMatte", - "BatchAlign", - "BatchAverageImage", - "BatchAverageUnJittered", - "BatchNormalizeImage", - "BatchNormalizeLatent", - "BetterFilmGrain", - "BilateralFilterImage", - "BlurImageFast", - "BlurMaskFast", - "ClampImage", - "ClampOutliers", - "ColorMatchImage", - "ConditioningSubtract", - "ConvertNormals", - "CustomNoise", - "DepthToNormals", - "DifferenceChecker", - "DilateErodeMask", - "EnhanceDetail", - "ExposureAdjust", - "ExtractNFrames", - "FrequencyCombine", - "FrequencySeparate", - "GameOfLife", - "GuidedFilterAlpha", - "GuidedFilterImage", - "ImageConstant", - "ImageConstantHSV", - "InpaintConditionApply", - "InpaintConditionEncode", - "InstructPixToPixConditioningAdvanced", - "JitterImage", - "Keyer", - "LatentNormalizeShuffle", - "LatentStats", - "MedianFilterImage", - "MergeFramesByIndex", - "ModelTest", - "NormalMapSimple", - "OffsetLatentImage", - "PrintSigmas", - "RelightSimple", - "RemapRange", - "RestoreDetail", - "SharpenFilterLatent", - "ShuffleChannels", - "Tonemap", - "UnJitterImage", - "UnTonemap", - "VisualizeLatents" - ], - { - "title_aux": "ComfyUI-Image-Filters" - } - ], - "https://github.com/spacepxl/ComfyUI-LossTesting": [ - [ - "Measure Timestep Loss" - ], - { - "title_aux": "ComfyUI-LossTesting" - } - ], - "https://github.com/spacepxl/ComfyUI-RAVE": [ - [ - "ConditioningDebug", - "ImageGridCompose", - "ImageGridDecompose", - "KSamplerRAVE", - "LatentGridCompose", - "LatentGridDecompose" - ], - { - "title_aux": "ComfyUI-RAVE" - } - ], - "https://github.com/spacepxl/ComfyUI-StyleGan": [ - [ - "BatchAverageStyleGANLatents", - "BlendStyleGANLatents", - "GenerateStyleGANLatent", - "LoadStyleGAN", - "StyleGANInversion", - "StyleGANLatentFromBatch", - "StyleGANSampler" - ], - { - "title_aux": "ComfyUI-StyleGan" - } - ], - "https://github.com/spinagon/ComfyUI-seam-carving": [ - [ - "SeamCarving" - ], - { - "title_aux": "ComfyUI-seam-carving" - } - ], - "https://github.com/spinagon/ComfyUI-seamless-tiling": [ - [ - "CircularVAEDecode", - "MakeCircularVAE", - "OffsetImage", - "SeamlessTile" - ], - { - "title_aux": "Seamless tiling Node for ComfyUI" - } - ], - "https://github.com/spro/comfyui-mirror": [ - [ - "LatentMirror" - ], - { - "title_aux": "Latent Mirror node for ComfyUI" - } - ], - "https://github.com/ssitu/ComfyUI_UltimateSDUpscale": [ - [ - "UltimateSDUpscale", - "UltimateSDUpscaleCustomSample", - "UltimateSDUpscaleNoUpscale" - ], - { - "title_aux": "UltimateSDUpscale" - } - ], - "https://github.com/ssitu/ComfyUI_fabric": [ - [ - "FABRICPatchModel", - "FABRICPatchModelAdv", - "KSamplerAdvFABRICAdv", - "KSamplerFABRIC", - "KSamplerFABRICAdv" - ], - { - "title_aux": "ComfyUI fabric" - } - ], - "https://github.com/ssitu/ComfyUI_restart_sampling": [ - [ - "KRestartSampler", - "KRestartSamplerAdv", - "KRestartSamplerCustom", - "KRestartSamplerSimple", - "RestartSampler", - "RestartScheduler" - ], - { - "title_aux": "Restart Sampling" - } - ], - "https://github.com/ssitu/ComfyUI_roop": [ - [ - "RoopImproved", - "roop" - ], - { - "title_aux": "ComfyUI roop" - } - ], - "https://github.com/stavsap/comfyui-kokoro": [ - [ - "KokoroGenerator", - "KokoroSpeaker", - "KokoroSpeakerCombiner" - ], - { - "title_aux": "comfyui-kokoro" - } - ], - "https://github.com/stavsap/comfyui-ollama": [ - [ - "OllamaConnectivityV2", - "OllamaGenerate", - "OllamaGenerateAdvance", - "OllamaGenerateV2", - "OllamaLoadContext", - "OllamaOptionsV2", - "OllamaSaveContext", - "OllamaVision" - ], - { - "title_aux": "ComfyUI Ollama" - } - ], - "https://github.com/stormcenter/ComfyUI-AutoSplitGridImage": [ - [ - "EvenImageResizer", - "GridImageSplitter" - ], - { - "title_aux": "ComfyUI-AutoSplitGridImage" - } - ], - "https://github.com/stormcenter/ComfyUI-LivePhotoCreator": [ - [ - "ImageCompareTransition", - "LivePhotoCreator", - "LivePhotoPreview" - ], - { - "title_aux": "ComfyUI LivePhoto Creator" - } - ], - "https://github.com/stormcenter/ComfyUI-SVGFullfill": [ - [ - "SVGEditor", - "SVGUploader" - ], - { - "title_aux": "ComfyUI-SVGFullfill" - } - ], - "https://github.com/storyicon/comfyui_musev_evolved": [ - [ - "AnimationZoom (comfyui_musev_evolved)", - "ImageSelector (comfyui_musev_evolved)", - "MuseVImg2Vid V1 (comfyui_musev_evolved)", - "MuseVPredictor V1 (comfyui_musev_evolved)" - ], - { - "author": "infguo", - "title_aux": "ComfyUI MuseV Evolved" - } - ], - "https://github.com/storyicon/comfyui_segment_anything": [ - [ - "GroundingDinoModelLoader (segment anything)", - "GroundingDinoSAMSegment (segment anything)", - "InvertMask (segment anything)", - "IsMaskEmpty", - "SAMModelLoader (segment anything)" - ], - { - "title_aux": "segment anything" - } - ], - "https://github.com/strand1/ComfyUI-Autogen": [ - [ - "AutogenAssistantAgent", - "AutogenCodeExecutor", - "AutogenGroupChat", - "AutogenModel" - ], - { - "title_aux": "ComfyUI-Autogen" - } - ], - "https://github.com/strimmlarn/ComfyUI-Strimmlarns-Aesthetic-Score": [ - [ - "AesthetlcScoreSorter", - "CalculateAestheticScore", - "LoadAesteticModel", - "ScoreToNumber" - ], - { - "title_aux": "ComfyUI_Strimmlarns_aesthetic_score" - } - ], - "https://github.com/styler00dollar/ComfyUI-deepcache": [ - [ - "DeepCache" - ], - { - "title_aux": "ComfyUI-deepcache" - } - ], - "https://github.com/styler00dollar/ComfyUI-sudo-latent-upscale": [ - [ - "SudoLatentUpscale" - ], - { - "title_aux": "ComfyUI-sudo-latent-upscale" - } - ], - "https://github.com/sugarkwork/comfyui_cohere": [ - [ - "SimpleCohereNode" - ], - { - "title_aux": "comfyui_cohere" - } - ], - "https://github.com/sugarkwork/comfyui_tag_fillter": [ - [ - "TagComparator", - "TagFilter", - "TagIf", - "TagMerger", - "TagRemover", - "TagReplace", - "TagSelector", - "TagSwitcher" - ], - { - "title_aux": "comfyui_tag_filter" - } - ], - "https://github.com/superyoman/comfyui_lumaAPI": [ - [ - "LUMA_API_YoC", - "LUMA_API_result_YoC" - ], - { - "title_aux": "comfyui_lumaAPI" - } - ], - "https://github.com/sweetndata/ComfyUI-Image-Harmonizer": [ - [ - "harmonizer" - ], - { - "title_aux": "ComfyUI-Image-Harmonizer" - } - ], - "https://github.com/sweetndata/ComfyUI-googletrans": [ - [ - "googletrans" - ], - { - "title_aux": "ComfyUI-googletrans" - } - ], - "https://github.com/sweetndata/ComfyUI_Sticker_Compositer": [ - [ - "Sticker_Compositer" - ], - { - "title_aux": "ComfyUI_Sticker_Compositer" - } - ], - "https://github.com/syaofox/ComfyUI_fnodes": [ - [ - "AddImageBorder-", - "AlignImageByFace-", - "ColorAdjustment-", - "ColorBlockEffect-", - "ColorTint-", - "ComputeImageScaleRatio-", - "CreateBlurredEdgeMask-", - "Depth2Mask-", - "DisplayAny-", - "ExtractBoundingBox-", - "FaceCutout-", - "FaceMorph-", - "FacePaste-", - "FilePathAnalyzer-", - "FillMaskedImageArea-", - "FlatteningEffect-", - "GeneratePreciseFaceMask-", - "GetImageSize-", - "IPAdapterMSLayerWeights-", - "IPAdapterMSTiled-", - "ImageRotate-", - "ImageScaleBySpecifiedSide-", - "ImageScalerForSDModels-", - "LoadImagesFromFolder-", - "MaskChange-", - "MaskScale-", - "MaskScaleBy-", - "OccluderLoader-", - "OutlineMask-", - "PrimitiveText-", - "ReadImage-", - "RegexExtractor-", - "ScheduleSampler-", - "ScheduleSamplerCustomAYS-", - "ScheduleSamplerCustomTurbo-", - "Seed-", - "SelectFace-", - "TrimImageBorders-" - ], - { - "title_aux": "ComfyUI_fnodes" - } - ], - "https://github.com/syllebra/bilbox-comfyui": [ - [ - "BilboXLut", - "BilboXPhotoPrompt", - "BilboXVignette" - ], - { - "title_aux": "BilboX's ComfyUI Custom Nodes" - } - ], - "https://github.com/sylym/comfy_vid2vid": [ - [ - "CheckpointLoaderSimpleSequence", - "DdimInversionSequence", - "KSamplerSequence", - "LoadImageMaskSequence", - "LoadImageSequence", - "LoraLoaderSequence", - "SetLatentNoiseSequence", - "TrainUnetSequence", - "VAEEncodeForInpaintSequence" - ], - { - "title_aux": "Vid2vid" - } - ], - "https://github.com/szhublox/ambw_comfyui": [ - [ - "Auto Merge Block Weighted", - "CLIPMergeSimple", - "CheckpointSave", - "ModelMergeBlocks", - "ModelMergeSimple" - ], - { - "title_aux": "Auto-MBW" - } - ], - "https://github.com/taabata/LCM_Inpaint_Outpaint_Comfy": [ - [ - "ComfyNodesToSaveCanvas", - "FloatNumber", - "FreeU_LCM", - "ImageDims", - "ImageOutputToComfyNodes", - "ImageResize", - "ImageShuffle", - "ImageSwitch", - "LCMGenerate", - "LCMGenerate_ReferenceOnly", - "LCMGenerate_SDTurbo", - "LCMGenerate_img2img", - "LCMGenerate_img2img_IPAdapter", - "LCMGenerate_img2img_controlnet", - "LCMGenerate_inpaintv2", - "LCMGenerate_inpaintv3", - "LCMLoader", - "LCMLoader_RefInpaint", - "LCMLoader_ReferenceOnly", - "LCMLoader_SDTurbo", - "LCMLoader_controlnet", - "LCMLoader_controlnet_inpaint", - "LCMLoader_img2img", - "LCMLoraLoader_inpaint", - "LCMLoraLoader_ipadapter", - "LCMLora_inpaint", - "LCMLora_inpaintV2", - "LCMLora_ipadapter", - "LCMT2IAdapter", - "LCM_IPAdapter", - "LCM_IPAdapter_inpaint", - "LCM_outpaint_prep", - "LoadImageNode_LCM", - "Loader_SegmindVega", - "OutpaintCanvasTool", - "SaveImage_Canvas", - "SaveImage_LCM", - "SaveImage_Puzzle", - "SaveImage_PuzzleV2", - "SegmindVega", - "SettingsSwitch", - "stitch" - ], - { - "title_aux": "LCM_Inpaint-Outpaint_Comfy" - } - ], - "https://github.com/taabata/SANA_LOWVRAM": [ - [ - "SANADiffuse", - "SANATextEncode" - ], - { - "title_aux": "SANA_LOWVRAM" - } - ], - "https://github.com/taches-ai/comfyui-scene-composer": [ - [ - "Action", - "Character", - "Clothes", - "Composition", - "Environment", - "Scene" - ], - { - "title_aux": "ComfyUI Scene Composer" - } - ], - "https://github.com/takemetosiberia/ComfyUI-SAMURAI--SAM2-": [ - [ - "SAMURAIBoxInputNode", - "SAMURAIPointsInputNode", - "SAMURAIRefineNode" - ], - { - "title_aux": "SAMURAI Nodes for ComfyUI" - } - ], - "https://github.com/talesofai/comfyui-browser": [ - [ - "DifyTextGenerator //Browser", - "LoadImageByUrl //Browser", - "SelectInputs //Browser", - "UploadToRemote //Browser", - "XyzPlot //Browser" - ], - { - "title_aux": "ComfyUI Browser" - } - ], - "https://github.com/tanglaoya321/ComfyUI-StoryMaker": [ - [ - "StoryMakerSinglePortraitNode", - "StoryMakerSwapClothNode", - "StoryMakerTwoPortraitNode" - ], - { - "title_aux": "ComfyUI-StoryMaker" - } - ], - "https://github.com/teward/ComfyUI-Helper-Nodes": [ - [ - "HelperNodes_CfgScale", - "HelperNodes_CheckpointSelector", - "HelperNodes_MultilineStringLiteral", - "HelperNodes_Prompt", - "HelperNodes_SDXLCommonResolutions", - "HelperNodes_SamplerSelector", - "HelperNodes_SaveImage", - "HelperNodes_SchedulerSelector", - "HelperNodes_SeedSelector", - "HelperNodes_Steps", - "HelperNodes_StringLiteral", - "HelperNodes_VAESelector", - "HelperNodes_WidthHeight" - ], - { - "title_aux": "ComfyUI-Helper-Nodes" - } - ], - "https://github.com/theAdamColton/ComfyUI-texflow-extension": [ - [ - "Load Texflow Depth Image", - "Save Texflow Image" - ], - { - "title_aux": "ComfyUI-texflow-extension" - } - ], - "https://github.com/theUpsider/ComfyUI-Logic": [ - [ - "Bool-\ud83d\udd2c", - "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" - ], - { - "title_aux": "ComfyUI-Logic" - } - ], - "https://github.com/theUpsider/ComfyUI-Styles_CSV_Loader": [ - [ - "Load Styles CSV" - ], - { - "title_aux": "Styles CSV Loader Extension for ComfyUI" - } - ], - "https://github.com/thecooltechguy/ComfyUI-MagicAnimate": [ - [ - "MagicAnimate", - "MagicAnimateModelLoader" - ], - { - "title_aux": "ComfyUI-MagicAnimate" - } - ], - "https://github.com/thecooltechguy/ComfyUI-Stable-Video-Diffusion": [ - [ - "SVDDecoder", - "SVDModelLoader", - "SVDSampler", - "SVDSimpleImg2Vid" - ], - { - "title_aux": "ComfyUI Stable Video Diffusion" - } - ], - "https://github.com/theshubzworld/ComfyUI-SD3.5-Latent-Size-Picker": [ - [ - "SD3_5EmptyLatent" - ], - { - "title_aux": "SD3.5 Empty Latent Size Picker" - } - ], - "https://github.com/theshubzworld/ComfyUI-TogetherVision": [ - [ - "Together Image \ud83c\udfa8", - "Together Vision \ud83d\udd0d", - "TogetherVisionNode" - ], - { - "title_aux": "Together Vision Node" - } - ], - "https://github.com/theshubzworld/ComfyUI-ollama_killer": [ - [ - "OllamaKiller" - ], - { - "title_aux": "OllamaKiller Node for ComfyUI" - } - ], - "https://github.com/thoddnn/ComfyUI-MLX": [ - [ - "MLXClipTextEncoder", - "MLXDecoder", - "MLXLoadFlux", - "MLXSampler" - ], - { - "title_aux": "ComfyUI MLX Nodes" - } - ], - "https://github.com/tianguanggliu/Utools": [ - [ - "UTools" - ], - { - "title_aux": "comfyui-utools" - } - ], - "https://github.com/tiankuan93/ComfyUI-V-Express": [ - [ - "Load_Audio_Path", - "Load_Audio_Path_From_Video", - "Load_Image_Path", - "Load_Kps_Path", - "Load_Kps_Path_From_Video", - "Load_Video_Path", - "VEINTConstant", - "VEPreview_Video", - "VEStringConstant", - "V_Express_Loader", - "V_Express_Sampler" - ], - { - "title_aux": "V-Express: Conditional Dropout for Progressive Training of Portrait Video Generation" - } - ], - "https://github.com/tianlang0704/ComfyUI-StableProjectorzBridge": [ - [ - "ProjectorzControlnetInput", - "ProjectorzControlnetParameter", - "ProjectorzInitInput", - "ProjectorzOutput", - "ProjectorzParameter", - "ProjectorzStringToFloat", - "ProjectorzStringToInt" - ], - { - "title_aux": "Stable Projectorz Bridge" - } - ], - "https://github.com/tianyuw/ComfyUI-LLM-API": [ - [ - "PromptWithImage" - ], - { - "title_aux": "Custom nodes for llm chat with optional image input" - } - ], - "https://github.com/tkreuziger/comfyui-claude": [ - [ - "Combine Texts", - "Describe Image", - "Transform Text" - ], - { - "title_aux": "ComfyUI and Claude" - } - ], - "https://github.com/tmagara/ComfyUI-Prediction-Boost": [ - [ - "PredictionBoost" - ], - { - "title_aux": "ComfyUI-Prediction-Boost" - } - ], - "https://github.com/tocubed/ComfyUI-AudioReactor": [ - [ - "AudioFrameTransformBeats", - "AudioFrameTransformShadertoy", - "AudioLoadPath", - "Shadertoy" - ], - { - "title_aux": "ComfyUI-AudioReactor" - } - ], - "https://github.com/tocubed/ComfyUI-EvTexture": [ - [ - "EVTEventsToImage", - "EVTLoadEvTextureModel", - "EVTTextureUpscaleVideo", - "EVTVideoToEvents" - ], - { - "title_aux": "ComfyUI-EvTexture" - } - ], - "https://github.com/tomudo/ComfyUI-ascii-art": [ - [ - "ImageToAscii" - ], - { - "author": "dfl", - "description": "CLIP text encoder that does BREAK prompting like A1111", - "nickname": "CLIP with BREAK", - "title": "CLIP with BREAK syntax", - "title_aux": "ComfyUI-ascii-art" - } - ], - "https://github.com/tooldigital/ComfyUI-Yolo-Cropper": [ - [ - "ToolYoloCropper" - ], - { - "title_aux": "Easy automatic (square) image cropper using Yolo" - } - ], - "https://github.com/toxicwind/ComfyUI-TTools": [ - [ - "TTools Extract JSON", - "TTools SD3 Resolution Solver" - ], - { - "title_aux": "TTools for ComfyUI" - } - ], - "https://github.com/toyxyz/ComfyUI_rgbx_Wrapper": [ - [ - "rgb2x" - ], - { - "title_aux": "ComfyUI_rgbx_Wrapper" - } - ], - "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes": [ - [ - "CaptureWebcam", - "Depth to normal", - "Direct Screen Capture", - "Export glb", - "ImageResize_Padding", - "LatentDelay", - "Load Random Text From File", - "LoadWebcamImage", - "Remove noise", - "SaveImagetoPath" - ], - { - "title_aux": "ComfyUI_toyxyz_test_nodes" - } - ], - "https://github.com/traugdor/ComfyUI-quadMoons-nodes": [ - [ - "quadmoonBatchFromLatent", - "quadmoonCLIPTextEncode", - "quadmoonChangeBackground", - "quadmoonConvertBoolToString", - "quadmoonConvertFloatToString", - "quadmoonConvertIntToString", - "quadmoonConvertNormalizeHW", - "quadmoonConvertNumberToString", - "quadmoonINTConditionalOperation", - "quadmoonKSampler", - "quadmoonKSamplerAdvanced", - "quadmoonKSamplerBatched", - "quadmoonLatentImage", - "quadmoonLoadConfigs", - "quadmoonModelLoader", - "quadmoonRotationalSampler", - "quadmoonSaveNeg", - "quadmoonSavePrompt", - "quadmoonSmartNeg", - "quadmoonSmartPrompt", - "quadmoonThebutton" - ], - { - "author": "quadmoon (https://github.com/traugdor)", - "description": "These are just some nodes I wanted and couldn't find where anyone else had made them yet.", - "nickname": "quadmoon's Nodes", - "title": "quadmoon's ComfyUI nodes", - "title_aux": "quadmoon's ComfyUI nodes" - } - ], - "https://github.com/tritant/ComfyUI_CreaPrompt": [ - [ - "CreaPrompt", - "CreaPrompt List", - "CreaPrompt_1", - "CreaPrompt_2", - "CreaPrompt_3", - "CreaPrompt_4" - ], - { - "title_aux": "ComfyUI-CreaPrompt" - } - ], - "https://github.com/trojblue/trNodes": [ - [ - "trColorCorrection", - "trLayering", - "trRouter", - "trRouterLonger" - ], - { - "title_aux": "trNodes" - } - ], - "https://github.com/troyxmccall/ComfyUI-ScaleToTargetMegapixels": [ - [ - "ScaleToTargetMegapixels" - ], - { - "title_aux": "ComfyUI-ScaleToTargetMegapixels" - } - ], - "https://github.com/trumanwong/ComfyUI-NSFW-Detection": [ - [ - "NSFWDetection" - ], - { - "title_aux": "ComfyUI-NSFW-Detection" - } - ], - "https://github.com/tsogzark/ComfyUI-load-image-from-url": [ - [ - "LoadImageFromUrlOrPath" - ], - { - "title_aux": "ComfyUI-load-image-from-url" - } - ], - "https://github.com/ttulttul/ComfyUI-Iterative-Mixer": [ - [ - "Batch Unsampler", - "Iterative Mixing KSampler", - "Iterative Mixing KSampler Advanced", - "IterativeMixingSampler", - "IterativeMixingScheduler", - "IterativeMixingSchedulerAdvanced", - "Latent Batch Comparison Plot", - "Latent Batch Statistics Plot", - "MixingMaskGenerator" - ], - { - "title_aux": "ComfyUI Iterative Mixing Nodes" - } - ], - "https://github.com/ttulttul/ComfyUI-Tensor-Operations": [ - [ - "Fast Image to Noise", - "Image Match Normalize", - "Latent Match Normalize" - ], - { - "title_aux": "ComfyUI-Tensor-Operations" - } - ], - "https://github.com/tungdop2/Comfyui_face_restorer": [ - [ - "FaceRestorer", - "FaceRestorerLoader" - ], - { - "title_aux": "Face Restorer for ComfyUI" - } - ], - "https://github.com/tungdop2/Comfyui_joy-caption-alpha-two": [ - [ - "JoyCaptioner" - ], - { - "title_aux": "Joy Caption Alpha Two for ComfyUI" - } - ], - "https://github.com/turkyden/ComfyUI-SmartCrop": [ - [ - "ImageSmartCrop" - ], - { - "title_aux": "ComfyUI-SmartCrop" - } - ], - "https://github.com/tusharbhutt/Endless-Nodes": [ - [ - "ESS Aesthetic Scoring", - "ESS Combo Parameterizer", - "ESS Combo Parameterizer & Prompts", - "ESS Eight Input Text Switch", - "ESS Float to Integer", - "ESS Float to Number", - "ESS Float to String", - "ESS Float to X", - "ESS Image Reward", - "ESS Image Saver with JSON", - "ESS Integer to Float", - "ESS Integer to Number", - "ESS Integer to String", - "ESS Integer to X", - "ESS Number to Float", - "ESS Number to Integer", - "ESS Number to String", - "ESS Number to X", - "ESS Parameterizer", - "ESS Parameterizer & Prompts", - "ESS Six Float Output", - "ESS Six Input Text Switch", - "ESS Six Integer IO Switch", - "ESS Six Integer IO Widget", - "ESS String to Float", - "ESS String to Integer", - "ESS String to Num", - "ESS String to X", - "\u267e\ufe0f\ud83c\udf0a\u2728 Image Saver with JSON" - ], - { - "author": "BiffMunky", - "description": "A small set of nodes I created for various numerical and text inputs. Features image saver with ability to have JSON saved to separate folder, parameter collection nodes, two aesthetic scoring models, switches for text and numbers, and conversion of string to numeric and vice versa.", - "nickname": "\u267e\ufe0f\ud83c\udf0a\u2728", - "title": "Endless \ufe0f\ud83c\udf0a\u2728 Nodes", - "title_aux": "Endless \ufe0f\ud83c\udf0a\u2728 Nodes" - } - ], - "https://github.com/twri/sdxl_prompt_styler": [ - [ - "SDXLPromptStyler", - "SDXLPromptStylerAdvanced" - ], - { - "title_aux": "SDXL Prompt Styler" - } - ], - "https://github.com/ty0x2333/ComfyUI-Dev-Utils": [ - [ - "TY_ExecutionTime", - "TY_UploadAnything", - "TY_UrlDownload" - ], - { - "title_aux": "ComfyUI-Dev-Utils" - } - ], - "https://github.com/uarefans/ComfyUI-Fans": [ - [ - "Fans Prompt Styler Negative", - "Fans Prompt Styler Positive", - "Fans Styler", - "Fans Text Concatenate" - ], - { - "title_aux": "ComfyUI-Fans" - } - ], - "https://github.com/uetuluk/comfyui-webcam-node": [ - [ - "webcam_capture_node" - ], - { - "title_aux": "comfyui-webcam-node" - } - ], - "https://github.com/umiyuki/comfyui-pad-to-eight": [ - [ - "Pad To Eight" - ], - { - "title_aux": "ComfyUI Pad To Eight" - } - ], - "https://github.com/un-seen/comfyui-tensorops": [ - [ - "BackgroundSelect", - "ChannelSelector", - "DownloadAndLoadFlorence2Model", - "DownloadAndLoadSAM2Model", - "FaceSwap", - "FalDifferentialDiffusion", - "FalDiffusion", - "FetchFromRedis", - "FetchJsonFromSurreal", - "Florence2Run", - "Florence2toCoordinates", - "ForegroundMask", - "GetLayerMask", - "MaskImage", - "Sam2AutoSegmentation", - "Sam2Segmentation", - "Sam2VideoSegmentation", - "Sam2VideoSegmentationAddPoints", - "SaveImageToS3", - "SaveJsonToSurreal", - "SaveTextToSurreal", - "SaveToRedis", - "SendImageOnWebSocket", - "SendJsonOnWebSocket", - "SeparateMask" - ], - { - "title_aux": "comfyui-tensorop" - } - ], - "https://github.com/un-seen/comfyui_segment_anything_plus": [ - [ - "GroundingDinoModelLoader (segment anything plus)", - "GroundingDinoSAMSegment (segment anything plus)", - "InvertMask (segment anything plus)", - "IsMaskEmpty (segment anything plus)", - "SAMModelLoader (segment anything plus)" - ], - { - "title_aux": "ComfyUI Segment Anything" - } - ], - "https://github.com/unwdef/unwdef-nodes-comfyui": [ - [ - "RandomTextFromMultiline", - "RandomizeLoras", - "RandomizeLorasStack", - "TextMultilineWithVariables" - ], - { - "title_aux": "unwdef-nodes" - } - ], - "https://github.com/valofey/Openrouter-Node": [ - [ - "OpenrouterNode" - ], - { - "title_aux": "OpenRouter Node" - } - ], - "https://github.com/vanche1212/ComfyUI-ZMG-Nodes": [ - [ - "VC_Load_Video_Path_Unified_Output", - "VC_Load_Video_Upload_Unified_Output", - "VC_Video_Combine_Unified_Output", - "Waveform2Audio", - "\ud83d\ude0bAPI Request Node", - "\ud83d\ude0bJSON Parser Node", - "\ud83d\ude0bOld Photo Colorization Node", - "\ud83d\ude0bOllama Request Node", - "\ud83d\ude0bSave Image Unified Output" - ], - { - "title_aux": "ZMG PLUGIN" - } - ], - "https://github.com/vanillacode314/SimpleWildcardsComfyUI": [ - [ - "SimpleConcat", - "SimpleWildcard" - ], - { - "author": "VanillaCode314", - "description": "A simple wildcard node for ComfyUI. Can also be used a style prompt node.", - "nickname": "Simple Wildcard", - "title": "Simple Wildcard", - "title_aux": "Simple Wildcard" - } - ], - "https://github.com/var1ableX/ComfyUI_Accessories": [ - [ - "ACC_AnyCast", - "GetMaskDimensions", - "GetRandomDimensions", - "isImageEmpty", - "isMaskEmpty" - ], - { - "title_aux": "ComfyUI_Accessories" - } - ], - "https://github.com/vault-developer/comfyui-image-blender": [ - [ - "ImageBlender" - ], - { - "title_aux": "ImageBlender" - } - ], - "https://github.com/veighnsche/comfyui_gr85": [ - [ - "GR85_CTGPhrases", - "GR85_CTGPhrasesSimple", - "GR85_ContainsWord", - "GR85_FilterAndCombineMasks", - "GR85_Florence2RunCTPG", - "GR85_Florence2toCoordinatesGR85", - "GR85_FluxAttentionSeeker2", - "GR85_FluxAttentionSeeker3", - "GR85_FluxAttentionSeekerGenerator", - "GR85_FluxModelMergeParameters", - "GR85_ImageDimensionResizer", - "GR85_ImageSizer", - "GR85_ImageSizerAll", - "GR85_IntToString", - "GR85_IntegerSequenceModifier", - "GR85_IslandMaskGenerator", - "GR85_MaskBatchToSEGS", - "GR85_MaskConnectMST", - "GR85_MaskSplitter", - "GR85_NextSeed", - "GR85_PasteByMaskGr85", - "GR85_RandomFloat", - "GR85_RandomInt", - "GR85_RandomRatio", - "GR85_RandomizedMaskTransform", - "GR85_Sam2Segmentation", - "GR85_SaveImageFile", - "GR85_SaveTextFile", - "GR85_SeedBasedOutputSelector", - "GR85_ShowText", - "GR85_SimpleWildcardPicker", - "GR85_StrSafe", - "GR85_TagInjector", - "GR85_TagInjectorDuo", - "GR85_TagInjectorLarge", - "GR85_TagInjectorSingle", - "GR85_VerticalWildcardPicker" - ], - { - "title_aux": "comfyui_gr85" - } - ], - "https://github.com/victorchall/comfyui_webcamcapture": [ - [ - "WebcamCapture" - ], - { - "title_aux": "Comfyui Webcam capture node" - } - ], - "https://github.com/vienteck/ComfyUI-Chat-GPT-Integration": [ - [ - "ChatGptPrompt" - ], - { - "title_aux": "ComfyUI-Chat-GPT-Integration" - } - ], - "https://github.com/violet-chen/comfyui-psd2png": [ - [ - "Psd2Png", - "StringInsert" - ], - { - "title_aux": "comfyui-psd2png" - } - ], - "https://github.com/viperyl/ComfyUI-RGT": [ - [ - "RGT_Upscale" - ], - { - "title_aux": "ComfyUI-RGT" - } - ], - "https://github.com/vivax3794/ComfyUI-Sub-Nodes": [ - [ - "VIV_Default", - "VIV_Subgraph", - "VIV_Subgraph_Inputs", - "VIV_Subgraph_Outputs" - ], - { - "title_aux": "ComfyUI-Sub-Nodes" - } - ], - "https://github.com/vivax3794/ComfyUI-Vivax-Nodes": [ - [ - "Any String", - "Chunk Up", - "Get Chunk", - "Inspect", - "Join Chunks", - "Model From URL" - ], - { - "title_aux": "ComfyUI-Vivax-Nodes" - } - ], - "https://github.com/vkff5833/ComfyUI-PromptConverter": [ - [ - "PromptConverter", - "PromptConverterWithFilter" - ], - { - "title_aux": "ComfyUI-PromptConverter" - } - ], - "https://github.com/vsevolod-oparin/comfyui-kandinsky22": [ - [ - "comfy-kandinsky22-decoder-loader", - "comfy-kandinsky22-hint-combiner", - "comfy-kandinsky22-image-encoder", - "comfy-kandinsky22-img-latents", - "comfy-kandinsky22-latents", - "comfy-kandinsky22-movq-decoder", - "comfy-kandinsky22-positive-text-encoder", - "comfy-kandinsky22-prior-averaging-2", - "comfy-kandinsky22-prior-averaging-3", - "comfy-kandinsky22-prior-averaging-4", - "comfy-kandinsky22-prior-loader", - "comfy-kandinsky22-text-encoder", - "comfy-kandinsky22-unet-decoder" - ], - { - "title_aux": "Kandinsky 2.2 ComfyUI Plugin" - } - ], - "https://github.com/vuongminh1907/ComfyUI_ZenID": [ - [ - "ApplyZenID", - "InstantIDFaceAnalysis", - "InstantIDModelLoader", - "ZenIDCombineFace" - ], - { - "title_aux": "ComfyUI_ZenID" - } - ], - "https://github.com/wTechArtist/ComfyUI-CustomNodes": [ - [ - "GPT4 WWL", - "IPAdapter FaceID With Bool", - "IPAdapter Mad Scientist Weight_Type", - "Image Blending Mode Mask", - "Load Image With Bool", - "Load Lora With Shared" - ], - { - "title_aux": "ComfyUI-CustomNodes" - } - ], - "https://github.com/wTechArtist/ComfyUI-StableDelight-weiweiliang": [ - [ - "StableDelight-weiweiliang" - ], - { - "title_aux": "ComfyUI-StableDelight-weiweiliang" - } - ], - "https://github.com/wallish77/wlsh_nodes": [ - [ - "Alternating KSampler (WLSH)", - "Build Filename String (WLSH)", - "CLIP +/- w/Text Unified (WLSH)", - "CLIP Positive-Negative (WLSH)", - "CLIP Positive-Negative XL (WLSH)", - "CLIP Positive-Negative XL w/Text (WLSH)", - "CLIP Positive-Negative w/Text (WLSH)", - "Checkpoint Loader w/Name (WLSH)", - "Empty Latent by Pixels (WLSH)", - "Empty Latent by Ratio (WLSH)", - "Empty Latent by Size (WLSH)", - "Generate Border Mask (WLSH)", - "Grayscale Image (WLSH)", - "Image Load with Metadata (WLSH)", - "Image Save with Prompt (WLSH)", - "Image Save with Prompt File (WLSH)", - "Image Save with Prompt/Info (WLSH)", - "Image Save with Prompt/Info File (WLSH)", - "Image Scale By Factor (WLSH)", - "Image Scale by Shortside (WLSH)", - "KSamplerAdvanced (WLSH)", - "Multiply Integer (WLSH)", - "Outpaint to Image (WLSH)", - "Prompt Weight (WLSH)", - "Quick Resolution Multiply (WLSH)", - "Resolutions by Ratio (WLSH)", - "SDXL Quick Empty Latent (WLSH)", - "SDXL Quick Image Scale (WLSH)", - "SDXL Resolutions (WLSH)", - "SDXL Steps (WLSH)", - "Save Positive Prompt(WLSH)", - "Save Prompt (WLSH)", - "Save Prompt/Info (WLSH)", - "Seed and Int (WLSH)", - "Seed to Number (WLSH)", - "Simple Pattern Replace (WLSH)", - "Simple String Combine (WLSH)", - "Time String (WLSH)", - "Upscale by Factor with Model (WLSH)", - "VAE Encode for Inpaint w/Padding (WLSH)" - ], - { - "title_aux": "wlsh_nodes" - } - ], - "https://github.com/web3nomad/ComfyUI_Invisible_Watermark": [ - [ - "InvisibleWatermarkEncode" - ], - { - "title_aux": "ComfyUI Invisible Watermark" - } - ], - "https://github.com/webfiltered/DebugNode-ComfyUI": [ - [ - "WTFDebugNode" - ], - { - "title_aux": "WTF? - a debug node for ComfyUI" - } - ], - "https://github.com/weilin9999/WeiLin-ComfyUI-prompt-all-in-one": [ - [ - "WeiLinComfyUIPromptAllInOneGreat", - "WeiLinComfyUIPromptAllInOneNeg", - "WeiLinComfyUIPromptToLoras", - "WeiLinComfyUIPromptToLorasOnly", - "WeiLinPromptToString" - ], - { - "title_aux": "WeiLin-ComfyUI-prompt-all-in-one" - } - ], - "https://github.com/weilin9999/WeiLin-Comfyui-Tools": [ - [ - "WeiLinPromptUI" - ], - { - "title_aux": "WeiLin-Comfyui-Tools" - } - ], - "https://github.com/welltop-cn/ComfyUI-TeaCache": [ - [ - "CompileModel", - "TeaCacheForCogVideoX", - "TeaCacheForImgGen", - "TeaCacheForVidGen" - ], - { - "title_aux": "ComfyUI-TeaCache" - } - ], - "https://github.com/wentao-uw/ComfyUI-template-matching": [ - [ - "IsMaskEmptyNode (template matching)", - "TemplateMatching (template matching)" - ], - { - "title_aux": "ComfyUI template matching" - } - ], - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-editor": [ - [ - "OpenposeEditorNode" - ], - { - "title_aux": "ComfyUI-ultimate-openpose-editor" - } - ], - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-estimator": [ - [ - "OpenposeEstimatorNode" - ], - { - "title_aux": "ComfyUI-ultimate-openpose-estimator" - } - ], - "https://github.com/westNeighbor/ComfyUI-ultimate-openpose-render": [ - [ - "OpenposeRenderNode" - ], - { - "title_aux": "ComfyUI-ultimate-openpose-render" - } - ], - "https://github.com/whatbirdisthat/cyberdolphin": [ - [ - "\ud83d\udc2c Gradio ChatInterface", - "\ud83d\udc2c OpenAI Advanced", - "\ud83d\udc2c OpenAI Compatible", - "\ud83d\udc2c OpenAI DALL\u00b7E", - "\ud83d\udc2c OpenAI Simple" - ], - { - "title_aux": "cyberdolphin" - } - ], - "https://github.com/whmc76/ComfyUI-Openpose-Editor-Plus": [ - [ - "CDL.OpenPoseEditorPlus" - ], - { - "title_aux": "ComfyUI-Openpose-Editor-Plus" - } - ], - "https://github.com/willchil/ComfyUI-Environment-Visualizer": [ - [ - "EnvironmentVisualizer", - "InterpolateEdges", - "MapEquirectangular" - ], - { - "title_aux": "ComfyUI-Environment-Visualizer" - } - ], - "https://github.com/windfancy/zsq_prompt": [ - [ - "BatchPromptJson", - "BatchPromptSelector", - "ConnectionString", - "DoubleCLIPEncode", - "FloatMathOperation", - "ImageAddText", - "ImageEmpty", - "IndexString", - "IntMathOperation", - "JoinImageBatch", - "LLMImage", - "LLMText", - "OptionString", - "PortraitStyler", - "SaveJpgImage", - "StringInput", - "ZSQPixelLatent", - "ZSQRatioLatent", - "ZSQShowINT", - "ZSQShowText", - "checkpoint_sampler", - "controlnetStack", - "controlnetStack_2", - "imageConcat", - "imageCount", - "imageCrop", - "imageDetailTransfer", - "imageFilter", - "imageFlip", - "imageGaussianBlur", - "imageHug", - "imageRGB", - "imageRatio", - "imageResize", - "imageRotate", - "imageSaveSimple", - "imageScaleDown", - "imageScaleDownBy", - "imageSharpen", - "imageSize", - "imageTilesFromBatch", - "imagesSplitImage", - "loraStack", - "loraStack_2", - "stylesSelector", - "zsqcheckpoint", - "zsqcontrolnet", - "zsqsampler" - ], - { - "title_aux": "zsq_prompt" - } - ], - "https://github.com/wjl0313/ComfyUI_KimNodes": [ - [ - "Add_ImageMetadata", - "Crop_Paste", - "Distribute_Icons", - "ExtractDifferenceLora", - "IconDistributeByGrid", - "Icon_Position_Cropper", - "ImageResize", - "Image_Classification", - "KimFilter", - "KimHDR", - "LoadImage_Metadata", - "Manual_MetadataInput", - "Prompt_Text", - "Save_Image", - "Seamless_Icon_Generator", - "Text_Match", - "Whitening_Node", - "YOLOWorld_Match", - "YOLO_Crop" - ], - { - "title_aux": "ComfyUI_KimNodes" - } - ], - "https://github.com/wmatson/easy-comfy-nodes": [ - [ - "EZAssocDictNode", - "EZAssocImgNode", - "EZAssocStrNode", - "EZEmptyDictNode", - "EZHttpPostNode", - "EZLoadImgBatchFromUrlsNode", - "EZLoadImgFromUrlNode", - "EZRemoveImgBackground", - "EZS3Uploader" - ], - { - "title_aux": "easy-comfy-nodes" - } - ], - "https://github.com/wmpmiles/comfyui-some-image-processing-stuff": [ - [ - "Blur Mask", - "Color Grading", - "Latent Zero Mask", - "Mask-Crop Inpaint | Post", - "Mask-Crop Inpaint | Pre", - "Mask-Crop | Post", - "Mask-Crop | Pre", - "Resample Image", - "Resample Latent", - "Resample Mask", - "Resampler | Area", - "Resampler | Jinc-Lanczos", - "Resampler | Lanczos", - "Resampler | Mitchell-Netravali", - "Resampler | Nearest-Neighbor", - "Resampler | Triangle", - "Scaler | Area", - "Scaler | Fixed", - "Scaler | Megapixels", - "Scaler | Pixel Deltas", - "Scaler | Side", - "Scaler | Sides Unlinked" - ], - { - "title_aux": "comfyui-some-image-processing-stuff" - } - ], - "https://github.com/wolfden/ComfyUi_PromptStylers": [ - [ - "SDXLPromptStylerAll", - "SDXLPromptStylerHorror", - "SDXLPromptStylerMisc", - "SDXLPromptStylerbyArtist", - "SDXLPromptStylerbyCamera", - "SDXLPromptStylerbyComposition", - "SDXLPromptStylerbyCyberpunkSurrealism", - "SDXLPromptStylerbyDepth", - "SDXLPromptStylerbyEnvironment", - "SDXLPromptStylerbyFantasySetting", - "SDXLPromptStylerbyFilter", - "SDXLPromptStylerbyFocus", - "SDXLPromptStylerbyImpressionism", - "SDXLPromptStylerbyLighting", - "SDXLPromptStylerbyMileHigh", - "SDXLPromptStylerbyMood", - "SDXLPromptStylerbyMythicalCreature", - "SDXLPromptStylerbyOriginal", - "SDXLPromptStylerbyQuantumRealism", - "SDXLPromptStylerbySteamPunkRealism", - "SDXLPromptStylerbySubject", - "SDXLPromptStylerbySurrealism", - "SDXLPromptStylerbyTheme", - "SDXLPromptStylerbyTimeofDay", - "SDXLPromptStylerbyWyvern", - "SDXLPromptbyCelticArt", - "SDXLPromptbyContemporaryNordicArt", - "SDXLPromptbyFashionArt", - "SDXLPromptbyGothicRevival", - "SDXLPromptbyIrishFolkArt", - "SDXLPromptbyRomanticNationalismArt", - "SDXLPromptbySportsArt", - "SDXLPromptbyStreetArt", - "SDXLPromptbyVikingArt", - "SDXLPromptbyWildlifeArt" - ], - { - "title_aux": "SDXL Prompt Styler (customized version by wolfden)" - } - ], - "https://github.com/wolfden/ComfyUi_String_Function_Tree": [ - [ - "StringFunction" - ], - { - "title_aux": "ComfyUi_String_Function_Tree" - } - ], - "https://github.com/wootwootwootwoot/ComfyUI-RK-Sampler": [ - [ - "RungeKuttaSampler" - ], - { - "author": "wootwootwootwoot", - "description": "Batched Runge-Kutta Samplers for ComfyUI", - "nickname": "ComfyUI-RK-Sampler", - "title": "ComfyUI-RK-Sampler", - "title_aux": "ComfyUI-RK-Sampler" - } - ], - "https://github.com/wqjuser/ComfyUI-Chat-Image": [ - [ - "LLMImageDescription" - ], - { - "title_aux": "ComfyUI-Chat-Image" - } - ], - "https://github.com/wu12023/ComfyUI-Image-Evaluation": [ - [ - "Clip_Score-\ud83d\udd2c", - "Dino_Score-\ud83d\udd2c" - ], - { - "title_aux": "ComfyUI-Image-Evaluation" - } - ], - "https://github.com/wujm424606/ComfyUi-Ollama-YN": [ - [ - "MyOllamaDeleteModel", - "MyOllamaGenerate", - "MyOllamaGenerateAdvance", - "MyOllamaLoadContext", - "MyOllamaSaveContext", - "MyOllamaSpecialGenerateAdvance", - "MyOllamaVision" - ], - { - "title_aux": "ComfyUi-Ollama-YN" - } - ], - "https://github.com/wutipong/ComfyUI-TextUtils": [ - [ - "Text Utils - Join N-Elements of String List", - "Text Utils - Join String List", - "Text Utils - Join Strings", - "Text Utils - Split String to List" - ], - { - "title_aux": "ComfyUI-TextUtils" - } - ], - "https://github.com/wwwins/ComfyUI-Simple-Aspect-Ratio": [ - [ - "SimpleAspectRatio" - ], - { - "title_aux": "ComfyUI-Simple-Aspect-Ratio" - } - ], - "https://github.com/xXAdonesXx/NodeGPT": [ - [ - "AppendAgent", - "Assistant", - "Chat", - "ChatGPT", - "CombineInput", - "Conditioning", - "CostumeAgent_1", - "CostumeAgent_2", - "CostumeMaster_1", - "Critic", - "DisplayString", - "DisplayTextAsImage", - "EVAL", - "Engineer", - "Executor", - "GroupChat", - "Image_generation_Conditioning", - "LM_Studio", - "LoadAPIconfig", - "LoadTXT", - "MemGPT", - "Memory_Excel", - "Model_1", - "Ollama", - "Output2String", - "Planner", - "Scientist", - "TextCombine", - "TextGeneration", - "TextGenerator", - "TextInput", - "TextOutput", - "UserProxy", - "llama-cpp", - "llava", - "oobaboogaOpenAI" - ], - { - "title_aux": "NodeGPT" - } - ], - "https://github.com/xfgexo/EXO-Custom-ComfyUI-Nodes": [ - [ - "ComfyUI_EXO_Clip_Text_Encode", - "ComfyUI_EXO_DisplayText", - "ComfyUI_EXO_FluxSampler", - "ComfyUI_EXO_FluxSamplerMini", - "ComfyUI_EXO_ImageRescale", - "ComfyUI_EXO_LatentImageSize", - "ComfyUI_EXO_LatentImageSizeX", - "ComfyUI_EXO_Notes", - "ComfyUI_EXO_NumericValue", - "ComfyUI_EXO_PromptBuilderDeluxe", - "ComfyUI_EXO_SaveText", - "ComfyUI_EXO_TranslateText" - ], - { - "title_aux": "EXO Custom ComfyUI Nodes" - } - ], - "https://github.com/xiaoxiaodesha/hd_node": [ - [ - "Combine HDMasks", - "Cover HDMasks", - "HD FaceIndex", - "HD GetMaskArea", - "HD Image Levels", - "HD SmoothEdge", - "HD UltimateSDUpscale" - ], - { - "title_aux": "hd-nodes-comfyui" - } - ], - "https://github.com/xlinx/ComfyUI-decadetw-auto-messaging-realtime": [ - [ - "Auto-MSG-ALL", - "Auto-MSG-Discord-Bot", - "Auto-MSG-Line-Notify", - "Auto-MSG-Telegram-Bot" - ], - { - "title_aux": "ComfyUI-decadetw-auto-messaging-realtime" - } - ], - "https://github.com/xlinx/ComfyUI-decadetw-auto-prompt-llm": [ - [ - "Auto-LLM-Text", - "Auto-LLM-Text-Vision", - "Auto-LLM-Vision" - ], - { - "title_aux": "ComfyUI-decadetw-auto-prompt-llm" - } - ], - "https://github.com/xlinx/ComfyUI-decadetw-spout-syphon-im-vj": [ - [ - "Im-SD-VJ-SPOUT", - "Im-SD-VJ-SYPHON" - ], - { - "title_aux": "ComfyUI-decadetw-spout-syphon-im-vj" - } - ], - "https://github.com/xliry/ComfyUI_SendDiscord": [ - [ - "SendDiscord" - ], - { - "title_aux": "ComfyUI_SendDiscord" - } - ], - "https://github.com/xobiomesh/ComfyUI_xObiomesh": [ - [ - "OllamaModelSelect", - "OllamaTextGen", - "ShowText_xO", - "xO_ComfyUIPortRunner", - "xO_GetImageFilename", - "xO_LoadRecentFile", - "xO_TestScriptRunner", - "xO_WorkflowRunner" - ], - { - "title_aux": "ComfyUI Neural Nodes" - } - ], - "https://github.com/xs315431/Comfyui_Get_promptId": [ - [ - "GetPromptId", - "SuccessCallback" - ], - { - "title_aux": "Comfyui_Get_promptId" - } - ], - "https://github.com/xuhongming251/ComfyUI-GPEN": [ - [ - "FaceEnhancement" - ], - { - "title_aux": "ComfyUI-GPEN" - } - ], - "https://github.com/xuhongming251/ComfyUI-MuseTalkUtils": [ - [ - "MuseTalkPostprocess", - "MuseTalkPreprocess", - "MuseTalkTrain", - "MuseTalkTrainPreprocess", - "MuseTalkUncropMask" - ], - { - "title_aux": "ComfyUI-MuseTalkUtils" - } - ], - "https://github.com/xuhongming251/ComfyUI_Camera": [ - [ - "Load Image From Local Camera", - "Save Image To Local Camera" - ], - { - "title_aux": "ComfyUI_Camera" - } - ], - "https://github.com/yanlang0123/ComfyUI_Lam": [ - [ - "AspectRatio", - "AutioPath", - "DoWhileEnd", - "DoWhileStart", - "EasyPromptSelecto", - "FaceFusion", - "ForEnd", - "ForInnerEnd", - "ForInnerStart", - "ForStart", - "GLM3Prompt", - "IdentifyingQR", - "IfInnerExecute", - "Image2Video", - "ImageAddMask", - "ImageBlank", - "ImageClone", - "ImageCropFaces", - "ImageLama", - "ImageToMasks", - "LAM.OpenPoseEditorPlus", - "LamCommonNames", - "LamCommonPrint", - "LamCommonPrintNoOutput", - "LamGetPngInfo", - "LamLoadPathImage", - "LamLoadVideo", - "LamSaveOnly", - "LamSwitcherCase", - "LoadDirImgPaths", - "LoadReplaceImage", - "LongTextToList", - "MultiControlNetApply", - "MultiGLIGENTextBoxApply", - "MultiIPAdapterRegional", - "MultiIntFormula", - "MultiParamFormula", - "MultiTextConcatenate", - "MultiTextEncode", - "MultiTextEncodeAdvanced", - "MultiTextSelelct", - "MultiTextSetArea", - "MultiTextSetGligen", - "MultiTextSetMask", - "OutDoWhileEnd", - "OutDoWhileStart", - "PreviewImageLam", - "PromptTranslator", - "QRCode", - "SaveImageLam", - "SectionEnd", - "SectionStart", - "StyleSelecto", - "Text2AutioEdgeTts", - "TextListSelelct", - "VideoAddAudio", - "VideoFaceFusion", - "VideoPath", - "WaitImagSelector", - "ZhPromptTranslator" - ], - { - "title_aux": "ComfyUI_Lam" - } - ], - "https://github.com/ycchanau/ComfyUI_Preview_Magnifier": [ - [ - "YC.ImageComparerMagnifier", - "YC.PreviewImageMagnifier", - "YC.XYPreviewImageMagnifier" - ], - { - "title_aux": "ComfyUI Preview Magnifier" - } - ], - "https://github.com/ycyy/ComfyUI-YCYY-LoraInfo": [ - [ - "LoraInfo" - ], - { - "title_aux": "ComfyUI-YCYY-LoraInfo" - } - ], - "https://github.com/yffyhk/comfyui_auto_danbooru": [ - [ - "GetDanbooru", - "TagEncode" - ], - { - "title_aux": "comfyui_auto_danbooru" - } - ], - "https://github.com/yhayano-ponotech/ComfyUI-Fal-API-Flux": [ - [ - "FalAPIFluxControlNetConfigNode", - "FalAPIFluxControlNetUnionConfigNode", - "FalAPIFluxDevCannyWithLoraNode", - "FalAPIFluxDevImageToImageNode", - "FalAPIFluxDevNode", - "FalAPIFluxDevWithLoraAndControlNetImageToImageNode", - "FalAPIFluxDevWithLoraAndControlNetInpaintNode", - "FalAPIFluxDevWithLoraAndControlNetNode", - "FalAPIFluxDevWithLoraImageToImageNode", - "FalAPIFluxDevWithLoraInpaintNode", - "FalAPIFluxDevWithLoraNode", - "FalAPIFluxLoraConfigNode", - "FalAPIFluxProCannyNode", - "FalAPIFluxProDepthNode", - "FalAPIFluxProFillNode", - "FalAPIFluxProNode", - "FalAPIFluxProReduxNode", - "FalAPIFluxProV11Node", - "FalAPIFluxProV11UltraNode" - ], - { - "title_aux": "ComfyUI-Fal-API-Flux" - } - ], - "https://github.com/yhayano-ponotech/comfyui-save-image-local": [ - [ - "Local Save" - ], - { - "title_aux": "ComfyUI Local Save Node" - } - ], - "https://github.com/yichengup/Comfyui-Deepseek": [ - [ - "DeepseekAdvancedNode", - "DeepseekNode", - "DeepseekReasonerNode" - ], - { - "title_aux": "Comfyui-Deepseek" - } - ], - "https://github.com/yichengup/Comfyui-Ycanvas": [ - [ - "CanvasNode" - ], - { - "title_aux": "Comfyui-Ycanvas" - } - ], - "https://github.com/yichengup/Comfyui_Flux_Style_Adjust": [ - [ - "StyleModelAdvancedApply" - ], - { - "title_aux": "Comfyui_Flux_Style_Adjust (Redux)" - } - ], - "https://github.com/yichengup/Comfyui_Redux_Advanced": [ - [ - "YC_LG_Redux" - ], - { - "title_aux": "Comfyui_Redux_Advanced" - } - ], - "https://github.com/yiwangsimple/ComfyUI_DW_Chat": [ - [ - "DeepSeekChatNode", - "DeepSeekTranslator", - "ErrorLogNode", - "ExecutionTime", - "FileBasedChatNode", - "FluxPromptEngineeringNode", - "Gemini1_5Text", - "Gemini1_5Vision", - "GeminiFluxPrompt", - "Gemma2PromptNode", - "GemmaDialogueNode", - "GithubLinkNode", - "GroqChatNode", - "MoonshotMultiChatNode", - "MoonshotSingleChatNode", - "OllamaImageToText", - "OllamaPromptExtractor", - "OllamaTextToText", - "PaliGemma3bCaptioner", - "PromptEngineeringNode", - "PromptExtractorNode", - "Qwen2VLCaption", - "Qwen2VLLocalCaption", - "SD3LongCaptionerV2", - "SDPromptAgent", - "dwimage2" - ], - { - "title_aux": "ComfyUI_DW_Chat" - } - ], - "https://github.com/yiwangsimple/florence_dw": [ - [ - "Florence2", - "Florence2Postprocess", - "Florence2PostprocessAll", - "LoadFlorence2Model" - ], - { - "title_aux": "florence_dw" - } - ], - "https://github.com/yolain/ComfyUI-Easy-Use": [ - [ - "dynamicThresholdingFull", - "easy LLLiteLoader", - "easy XYInputs: CFG Scale", - "easy XYInputs: Checkpoint", - "easy XYInputs: ControlNet", - "easy XYInputs: Denoise", - "easy XYInputs: FluxGuidance", - "easy XYInputs: Lora", - "easy XYInputs: ModelMergeBlocks", - "easy XYInputs: NegativeCond", - "easy XYInputs: NegativeCondList", - "easy XYInputs: PositiveCond", - "easy XYInputs: PositiveCondList", - "easy XYInputs: PromptSR", - "easy XYInputs: Sampler/Scheduler", - "easy XYInputs: Seeds++ Batch", - "easy XYInputs: Steps", - "easy XYPlot", - "easy XYPlotAdvanced", - "easy a1111Loader", - "easy ab", - "easy anythingIndexSwitch", - "easy anythingInversedSwitch", - "easy applyBrushNet", - "easy applyFooocusInpaint", - "easy applyInpaint", - "easy applyPowerPaint", - "easy batchAnything", - "easy blocker", - "easy boolean", - "easy cascadeKSampler", - "easy cascadeLoader", - "easy ckptNames", - "easy cleanGpuUsed", - "easy clearCacheAll", - "easy clearCacheKey", - "easy comfyLoader", - "easy compare", - "easy conditioningIndexSwitch", - "easy controlnetLoader", - "easy controlnetLoader++", - "easy controlnetLoaderADV", - "easy controlnetNames", - "easy controlnetStack", - "easy controlnetStackApply", - "easy convertAnything", - "easy detailerFix", - "easy float", - "easy fluxLoader", - "easy fluxPromptGenAPI", - "easy forLoopEnd", - "easy forLoopStart", - "easy fullCascadeKSampler", - "easy fullLoader", - "easy fullkSampler", - "easy globalSeed", - "easy hiresFix", - "easy humanSegmentation", - "easy hunyuanDiTLoader", - "easy icLightApply", - "easy if", - "easy ifElse", - "easy imageBatchToImageList", - "easy imageChooser", - "easy imageColorMatch", - "easy imageConcat", - "easy imageCount", - "easy imageCropFromMask", - "easy imageDetailTransfer", - "easy imageIndexSwitch", - "easy imageInsetCrop", - "easy imageInterrogator", - "easy imageListToImageBatch", - "easy imagePixelPerfect", - "easy imageRatio", - "easy imageRemBg", - "easy imageSave", - "easy imageScaleDown", - "easy imageScaleDownBy", - "easy imageScaleDownToSize", - "easy imageScaleToNormPixels", - "easy imageSize", - "easy imageSizeByLongerSide", - "easy imageSizeBySide", - "easy imageSplitGrid", - "easy imageSplitList", - "easy imageSplitTiles", - "easy imageSwitch", - "easy imageTilesFromBatch", - "easy imageToBase64", - "easy imageToMask", - "easy imageUncropFromBBOX", - "easy imagesCountInDirectory", - "easy imagesSplitImage", - "easy indexAnything", - "easy injectNoiseToLatent", - "easy instantIDApply", - "easy instantIDApplyADV", - "easy int", - "easy ipadapterApply", - "easy ipadapterApplyADV", - "easy ipadapterApplyEmbeds", - "easy ipadapterApplyEncoder", - "easy ipadapterApplyFaceIDKolors", - "easy ipadapterApplyFromParams", - "easy ipadapterApplyRegional", - "easy ipadapterStyleComposition", - "easy isFileExist", - "easy isMaskEmpty", - "easy isNone", - "easy isSDXL", - "easy joinImageBatch", - "easy kSampler", - "easy kSamplerCustom", - "easy kSamplerDownscaleUnet", - "easy kSamplerInpainting", - "easy kSamplerLayerDiffusion", - "easy kSamplerSDTurbo", - "easy kSamplerTiled", - "easy kolorsLoader", - "easy latentCompositeMaskedWithCond", - "easy latentNoisy", - "easy lengthAnything", - "easy loadImageBase64", - "easy loadImagesForLoop", - "easy loraStack", - "easy loraStackApply", - "easy makeImageForICLora", - "easy mathFloat", - "easy mathInt", - "easy mathString", - "easy mochiLoader", - "easy negative", - "easy outputToList", - "easy pipeBatchIndex", - "easy pipeEdit", - "easy pipeEditPrompt", - "easy pipeIn", - "easy pipeOut", - "easy pipeToBasicPipe", - "easy pixArtLoader", - "easy pixels", - "easy portraitMaster", - "easy poseEditor", - "easy positive", - "easy preDetailerFix", - "easy preMaskDetailerFix", - "easy preSampling", - "easy preSamplingAdvanced", - "easy preSamplingCascade", - "easy preSamplingCustom", - "easy preSamplingDynamicCFG", - "easy preSamplingLayerDiffusion", - "easy preSamplingLayerDiffusionADDTL", - "easy preSamplingNoiseIn", - "easy preSamplingSdTurbo", - "easy prompt", - "easy promptConcat", - "easy promptLine", - "easy promptList", - "easy promptReplace", - "easy pulIDApply", - "easy pulIDApplyADV", - "easy rangeFloat", - "easy rangeInt", - "easy removeLocalImage", - "easy samLoaderPipe", - "easy saveImageLazy", - "easy saveText", - "easy saveTextLazy", - "easy seed", - "easy showAnything", - "easy showAnythingLazy", - "easy showLoaderSettingsNames", - "easy showSpentTime", - "easy showTensorShape", - "easy sleep", - "easy sliderControl", - "easy stableDiffusion3API", - "easy string", - "easy styleAlignedBatchAlign", - "easy stylesSelector", - "easy sv3dLoader", - "easy svdLoader", - "easy textIndexSwitch", - "easy textSwitch", - "easy ultralyticsDetectorPipe", - "easy unSampler", - "easy whileLoopEnd", - "easy whileLoopStart", - "easy wildcards", - "easy xyAny", - "easy zero123Loader" - ], - { - "title_aux": "ComfyUI Easy Use" - } - ], - "https://github.com/yolanother/ComfyUI-Save16bitPng": [ - [ - "SaveImageARGB16PNG" - ], - { - "title_aux": "Save Uncompressed 16 Bit PNG" - } - ], - "https://github.com/yolanother/DTAIComfyImageSubmit": [ - [ - "DTSimpleSubmitImage", - "DTSubmitImage" - ], - { - "title_aux": "Comfy AI DoubTech.ai Image Sumission Node" - } - ], - "https://github.com/yolanother/DTAIComfyLoaders": [ - [ - "DTCLIPLoader", - "DTCLIPVisionLoader", - "DTCheckpointLoader", - "DTCheckpointLoaderSimple", - "DTControlNetLoader", - "DTDiffControlNetLoader", - "DTDiffusersLoader", - "DTGLIGENLoader", - "DTLoadImage", - "DTLoadImageMask", - "DTLoadLatent", - "DTLoraLoader", - "DTLorasLoader", - "DTStyleModelLoader", - "DTUpscaleModelLoader", - "DTVAELoader", - "DTunCLIPCheckpointLoader" - ], - { - "title_aux": "Comfy UI Online Loaders" - } - ], - "https://github.com/yolanother/DTAIComfyPromptAgent": [ - [ - "DTPromptAgent", - "DTPromptAgentString" - ], - { - "title_aux": "Comfy UI Prompt Agent" - } - ], - "https://github.com/yolanother/DTAIComfyQRCodes": [ - [ - "QRCode" - ], - { - "title_aux": "Comfy UI QR Codes" - } - ], - "https://github.com/yolanother/DTAIComfyVariables": [ - [ - "DTCLIPTextEncode", - "DTSingleLineStringVariable", - "DTSingleLineStringVariableNoClip", - "FloatVariable", - "IntVariable", - "StringFormat", - "StringFormatSingleLine", - "StringVariable" - ], - { - "title_aux": "Variables for Comfy UI" - } - ], - "https://github.com/yolanother/DTAIImageToTextNode": [ - [ - "DTAIImageToTextNode", - "DTAIImageUrlToTextNode" - ], - { - "title_aux": "Image to Text Node" - } - ], - "https://github.com/yondonfu/ComfyUI-Background-Edit": [ - [ - "BackgroundColor", - "Composite", - "GaussianBlur" - ], - { - "title_aux": "ComfyUI-Background-Edit" - } - ], - "https://github.com/yondonfu/ComfyUI-Torch-Compile": [ - [ - "TorchCompileLoadControlNet", - "TorchCompileLoadVAE" - ], - { - "title_aux": "ComfyUI-Torch-Compile" - } - ], - "https://github.com/yorkane/ComfyUI-KYNode": [ - [ - "AdvancedLyingSigmaSampler", - "KY_AnyByIndex", - "KY_AnyToList", - "KY_FilePathAnalyzer-", - "KY_JoinToString", - "KY_LoadImagesFromFolder", - "KY_MathExpression", - "KY_OpenAICaptionImage", - "KY_OpenAIChat", - "KY_ReadImage", - "KY_RegexExtractor", - "KY_RegexReplace", - "KY_SaveImageToPath" - ], - { - "title_aux": "ComfyUI-KYNode" - } - ], - "https://github.com/youyegit/tdxh_node_comfyui": [ - [ - "TdxhBoolNumber", - "TdxhClipVison", - "TdxhControlNetApply", - "TdxhControlNetProcessor", - "TdxhFloatInput", - "TdxhImageToSize", - "TdxhImageToSizeAdvanced", - "TdxhImg2ImgLatent", - "TdxhIntInput", - "TdxhLoraLoader", - "TdxhOnOrOff", - "TdxhReference", - "TdxhStringInput", - "TdxhStringInputTranslator", - "TdxhToggleGuest", - "TdxhToggleMaster" - ], - { - "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" - ], - { - "title_aux": "ComfyUI Depth Anything TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Dwpose-Tensorrt": [ - [ - "DwposeTensorrt" - ], - { - "title_aux": "ComfyUI Dwpose TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Facerestore-Tensorrt": [ - [ - "FaceRestoreTensorrt" - ], - { - "title_aux": "ComfyUI Facerestore TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-PiperTTS": [ - [ - "PiperTTS" - ], - { - "title_aux": "ComfyUI PiperTTS" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Pronodes": [ - [ - "ImagesSeekerNode", - "ImagesShufflerNode", - "LoadImageFromOutputDirectoryNode", - "LoadYoutubeVideoNode", - "PreviewVHSAudioNode", - "SaveAndOverwriteImageNode", - "VHSFilenamesToPathNode" - ], - { - "title_aux": "ComfyUI-Pronodes" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Rife-Tensorrt": [ - [ - "RifeTensorrt" - ], - { - "title_aux": "ComfyUI Rife TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Upscaler-Tensorrt": [ - [ - "UpscalerTensorrt" - ], - { - "title_aux": "ComfyUI Upscaler TensorRT" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Video-Depth-Anything": [ - [ - "LoadVideoDepthAnythingModel", - "VideoDepthAnythingProcess" - ], - { - "title_aux": "ComfyUI Video Depth Anything" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Vsgan": [ - [ - "DepthAnythingTrtNode", - "TTSCapcutNode", - "UpscaleVideoTrtNode" - ], - { - "title_aux": "ComfyUI-Vsgan" - } - ], - "https://github.com/yuvraj108c/ComfyUI-Whisper": [ - [ - "Add Subtitles To Background", - "Add Subtitles To Frames", - "Apply Whisper", - "Resize Cropped Subtitles" - ], - { - "title_aux": "ComfyUI Whisper" - } - ], - "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt": [ - [ - "YoloNasPoseTensorrt" - ], - { - "title_aux": "ComfyUI YoloNasPose Tensorrt" - } - ], - "https://github.com/yvann-ba/ComfyUI_Yvann-Nodes": [ - [ - "Audio Analysis", - "Audio IPAdapter Transitions", - "Audio Peaks Detection", - "Audio Prompt Schedule", - "Audio Remixer", - "Edit Audio Weights", - "Float to Int", - "Floats To Weights Strategy", - "Floats Visualizer", - "Invert Floats", - "Load Audio Separation Model", - "Mask To Float", - "Repeat Image To Count" - ], - { - "title_aux": "ComfyUI_Yvann-Nodes" - } - ], - "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes": [ - [ - "ZwngLoadImagePathOrURL", - "ZwngPreviewImageAndMask", - "ZwngSimpleGoogleTranslater", - "ZwngSimplePhotoshopConnector" - ], - { - "title_aux": "ComfyUI_Zwng_Nodes" - } - ], - "https://github.com/zcfrank1st/Comfyui-Toolbox": [ - [ - "PreviewJson", - "PreviewVideo", - "SaveJson", - "TestJsonPreview" - ], - { - "title_aux": "Comfyui-Toolbox" - } - ], - "https://github.com/zcfrank1st/Comfyui-Yolov8": [ - [ - "Yolov8Detection", - "Yolov8Segmentation" - ], - { - "title_aux": "ComfyUI Yolov8" - } - ], - "https://github.com/zcfrank1st/comfyui_visual_anagrams": [ - [ - "VisualAnagramsAnimate", - "VisualAnagramsSample" - ], - { - "title_aux": "comfyui_visual_anagram" - } - ], - "https://github.com/zer0TF/cute-comfy": [ - [ - "Cute.Placeholder" - ], - { - "title_aux": "Cute Comfy" - } - ], - "https://github.com/zer0thgear/zer0-comfy-utils": [ - [ - "List Combine Node (zer0)", - "Multiline String Node (zer0)", - "Prompt Minimizer And Splitter Node (zer0)", - "Tavern Card Creation Node (zer0)", - "Tavern Card Info Node (zer0)" - ], - { - "author": "zer0gear", - "description": "Dubiously useful nodes that I've made for my own use.", - "nickname": "zer0gear Comfy Utils", - "title": "zer0gear's Comfy Utilities", - "title_aux": "zer0 Comfy Utilities" - } - ], - "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer": [ - [ - "FastStyleTransfer", - "NeuralStyleTransfer", - "TrainFastStyleTransfer" - ], - { - "title_aux": "ComfyUI-Fast-Style-Transfer" - } - ], - "https://github.com/zfkun/ComfyUI_zfkun": [ - [ - "ZFLoadImagePath", - "ZFPreviewText", - "ZFPreviewTextMultiline", - "ZFShareScreen", - "ZFTextTranslation" - ], - { - "title_aux": "ComfyUI_zfkun" - } - ], - "https://github.com/zhangp365/ComfyUI-utils-nodes": [ - [ - "BooleanControlOutput", - "CheckpointLoaderSimpleWithSwitch", - "ColorCorrectOfUtils", - "ConcatTextOfUtils", - "DeepfaceAnalyzeFaceAttributes", - "DetectorForNSFW", - "GenderControlOutput", - "ImageAutoSelector", - "ImageBatchOneOrMore", - "ImageCompositeMaskedOneByOne", - "ImageCompositeMaskedWithSwitch", - "ImageCompositeWatermark", - "ImageConcanateOfUtils", - "ImageResizeTo8x", - "ImageTransition", - "IntAndIntAddOffsetLiteral", - "IntMultipleAddLiteral", - "LoadImageMaskWithSwitch", - "LoadImageMaskWithoutListDir", - "LoadImageWithSwitch", - "LoadImageWithoutListDir", - "MaskAutoSelector", - "MaskCoverFourCorners", - "MaskFastGrow", - "MaskFromFaceModel", - "MaskofCenter", - "MatchImageRatioToPreset", - "ModifyTextGender", - "SplitMask", - "TextInputAutoSelector", - "TextPreview", - "TorchCompileModelAdvanced", - "UpscaleImageWithModelIfNeed" - ], - { - "title_aux": "zhangp365/ComfyUI-utils-nodes" - } - ], - "https://github.com/zhangp365/ComfyUI_photomakerV2_native": [ - [ - "PhotoMakerEncodeV2", - "PhotoMakerLoaderV2" - ], - { - "title_aux": "ComfyUI_photomakerV2_native" - } - ], - "https://github.com/zhilemann/ComfyUI-moondream2": [ - [ - "moondream2_Caption", - "moondream2_DownLoad", - "moondream2_Encode", - "moondream2_Query" - ], - { - "title_aux": "ComfyUI-moondream2" - } - ], - "https://github.com/zhiselfly/ComfyUI-Alimama-ControlNet-compatible": [ - [ - "SD3AlimamaInpaintControlNetApplyAdvanced", - "SD3AlimamaInpaintControlNetLoader" - ], - { - "title_aux": "ComfyUI-Alimama-ControlNet-compatible" - } - ], - "https://github.com/zhongpei/ComfyUI-InstructIR": [ - [ - "InstructIRProcess", - "LoadInstructIRModel" - ], - { - "title_aux": "ComfyUI for InstructIR" - } - ], - "https://github.com/zhuanqianfish/ComfyUI-EasyNode": [ - [ - "EasyCaptureNode", - "EasyVideoOutputNode", - "SendImageWebSocket" - ], - { - "title_aux": "EasyCaptureNode for ComfyUI" - } - ], - "https://github.com/zhulu111/ComfyUI_Bxb": [ - [ - "bxbSwitch", - "sdBxb", - "sdBxb_saveImage", - "sdBxb_textInput" - ], - { - "title_aux": "ComfyUI_Bxb" - } - ], - "https://github.com/ziwang-com/comfyui-deepseek-r1": [ - [ - "deep_gen", - "deep_load" - ], - { - "title_aux": "comfyui-deepseek-r1" - } - ], - "https://github.com/zmwv823/ComfyUI_Anytext": [ - [ - "UL_AnyTextEncoder", - "UL_AnyTextFormatter", - "UL_AnyTextLoaderTest", - "UL_AnyText_Composer", - "UL_AnyText_FontImg", - "UL_AnyText_Loader", - "UL_AnyText_Sampler", - "UL_DiffusersCheckpointLoader", - "UL_DiffusersControlNetApplyAdvanced", - "UL_DiffusersControlNetLoader", - "UL_Image_Generation_Diffusers_Sampler", - "UL_Image_Generation_Glyph_ByT5", - "UL_Image_Generation_Glyph_ByT5_Checkponits_Loader", - "UL_Image_Generation_Glyph_ByT5_Font", - "UL_Image_Generation_JoyType_Font_Img", - "UL_Image_Generation_JoyType_Render_List", - "UL_Image_Process_Common_Cv2_Canny", - "UL_Translator", - "UL_TranslatorLoader" - ], - { - "title_aux": "ComfyUI_Anytext" - } - ], - "https://github.com/zohac/ComfyUI_ZC_DrawShape": [ - [ - "ZcDrawShape" - ], - { - "author": "Zohac", - "description": "nodes for artists, designers and animators.", - "nickname": "Zc DrawShape", - "title": "Zc DrawShape", - "title_aux": "ComfyUI_ZC_DrawShape" - } - ], - "https://github.com/zombieyang/sd-ppp": [ - [ - "CLIP Text Encode PS Regional", - "Get Image From Photoshop Layer", - "Send Images To Photoshop" - ], - { - "title_aux": "SD-PPP" - } - ], - "https://github.com/zubenelakrab/ComfyUI-ASV-Nodes": [ - [ - "ASVPromptGenerator" - ], - { - "title_aux": "ComfyUI-ASV-Nodes Node" - } - ], - "https://raw.githubusercontent.com/1shadow1/hayo_comfyui_nodes/main/LZCNodes.py": [ - [ - "LoadPILImages", - "MergeImages", - "make_transparentmask", - "tensor_trans_pil", - "words_generatee" - ], - { - "title_aux": "Hayo comfyui nodes" - } - ], - "https://raw.githubusercontent.com/CaptainGrock/ComfyUIInvisibleWatermark/main/Invisible%20Watermark.py": [ - [ - "Apply Invisible Watermark", - "Extract Watermark" - ], - { - "title_aux": "ComfyUIInvisibleWatermark" - } - ], - "https://raw.githubusercontent.com/Limbicnation/ComfyUIDepthEstimation/main/depth_estimation_node.py": [ - [ - "DepthEstimationNode" - ], - { - "title_aux": "ComfyUIDepthEstimation" - } - ], - "https://raw.githubusercontent.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/main/EXT_AudioManipulation.py": [ - [ - "BatchJoinAudio", - "CutAudio", - "DuplicateAudio", - "JoinAudio", - "ResampleAudio", - "ReverseAudio", - "StretchAudio" - ], - { - "title_aux": "Waveform Extensions" - } - ], - "https://raw.githubusercontent.com/Onierous/QRNG_Node_ComfyUI/main/qrng_node.py": [ - [ - "QRNG_Node_CSV" - ], - { - "title_aux": "QRNG_Node_ComfyUI" - } - ], - "https://raw.githubusercontent.com/SadaleNet/CLIPTextEncodeA1111-ComfyUI/master/custom_nodes/clip_text_encoder_a1111.py": [ - [ - "CLIPTextEncodeA1111", - "RerouteTextForCLIPTextEncodeA1111" - ], - { - "title_aux": "ComfyUI A1111-like Prompt Custom Node Solution" - } - ], - "https://raw.githubusercontent.com/Ser-Hilary/SDXL_sizing/main/conditioning_sizing_for_SDXL.py": [ - [ - "get_aspect_from_image", - "get_aspect_from_ints", - "sizing_node", - "sizing_node_basic", - "sizing_node_unparsed" - ], - { - "title_aux": "SDXL_sizing" - } - ], - "https://raw.githubusercontent.com/Smuzzies/comfyui_chatbox_overlay/main/chatbox_overlay.py": [ - [ - "Chatbox Overlay" - ], - { - "title_aux": "Chatbox Overlay node for ComfyUI" - } - ], - "https://raw.githubusercontent.com/barckley75/comfyUI_DaVinciResolve/main/custom_nodes/node_text_to_speech.py": [ - [ - "TextToSpeech" - ], - { - "title_aux": "comfyUI_DaVinciResolve" - } - ], - "https://raw.githubusercontent.com/bkunbargi/BrevImage/main/BrevLoadImage.py": [ - [ - "BrevImage" - ], - { - "title_aux": "BrevImage" - } - ], - "https://raw.githubusercontent.com/catscandrive/comfyui-imagesubfolders/main/loadImageWithSubfolders.py": [ - [ - "LoadImagewithSubfolders" - ], - { - "title_aux": "Image loader with subfolders" - } - ], - "https://raw.githubusercontent.com/dawangraoming/ComfyUI_ksampler_gpu/main/ksampler_gpu.py": [ - [ - "KSamplerAdvancedGPU", - "KSamplerGPU" - ], - { - "title_aux": "KSampler GPU" - } - ], - "https://raw.githubusercontent.com/fitCorder/fcSuite/main/fcSuite.py": [ - [ - "fcFloat", - "fcFloatMatic", - "fcHex", - "fcInteger" - ], - { - "title_aux": "fcSuite" - } - ], - "https://raw.githubusercontent.com/folkghost/comfyui_search_csv/main/search_csv_node.py": [ - [ - "Search CSV" - ], - { - "title_aux": "CSV Search Node" - } - ], - "https://raw.githubusercontent.com/lordgasmic/comfyui_wildcards/master/wildcards.py": [ - [ - "CLIPTextEncodeWithWildcards" - ], - { - "title_aux": "Wildcards" - } - ], - "https://raw.githubusercontent.com/lrzjason/ComfyUIJasonNode/main/SDXLMixSampler.py": [ - [ - "SDXLMixSampler" - ], - { - "title_aux": "ComfyUIJasonNode" - } - ], - "https://raw.githubusercontent.com/m957ymj75urz/ComfyUI-Custom-Nodes/main/clip-text-encode-split/clip_text_encode_split.py": [ - [ - "RawText", - "RawTextCombine", - "RawTextEncode", - "RawTextReplace" - ], - { - "title_aux": "m957ymj75urz/ComfyUI-Custom-Nodes" - } - ], - "https://raw.githubusercontent.com/nicolai256/comfyUI_Nodes_nicolai256/main/yugioh-presets.py": [ - [ - "yugioh_Presets" - ], - { - "title_aux": "comfyUI_Nodes_nicolai256" - } - ], - "https://raw.githubusercontent.com/ntdviet/comfyui-ext/main/custom_nodes/gcLatentTunnel/gcLatentTunnel.py": [ - [ - "gcLatentTunnel" - ], - { - "title_aux": "ntdviet/comfyui-ext" - } - ], - "https://raw.githubusercontent.com/s1dlx/comfy_meh/main/meh.py": [ - [ - "MergingExecutionHelper" - ], - { - "title_aux": "comfy_meh" - } - ], - "https://raw.githubusercontent.com/seghier/ComfyUI_LibreTranslate/main/translate_node.py": [ - [ - "LibreTranslateLocally", - "LibreTranslateOnline" - ], - { - "title_aux": "ComfyUI_LibreTranslate" - } - ], - "https://raw.githubusercontent.com/taabata/Comfy_Syrian_Falcon_Nodes/main/SyrianFalconNodes.py": [ - [ - "CompositeImage", - "KSamplerAlternate", - "KSamplerPromptEdit", - "KSamplerPromptEditAndAlternate", - "LoopBack", - "QRGenerate", - "WordAsImage" - ], - { - "title_aux": "Syrian Falcon Nodes" - } - ], - "https://raw.githubusercontent.com/throttlekitty/SDXLCustomAspectRatio/main/SDXLAspectRatio.py": [ - [ - "SDXLAspectRatio" - ], - { - "preemptions": [ - "SAMLoader" - ], - "title_aux": "SDXLCustomAspectRatio" - } - ], - "https://raw.githubusercontent.com/time-river/ComfyUI-CLIPSeg/main/custom_nodes/clipseg.py": [ - [ - "CLIPSeg", - "CombineSegMasks" - ], - { - "title_aux": "CLIPSeg" - } - ], - "https://raw.githubusercontent.com/tudal/Hakkun-ComfyUI-nodes/main/hakkun_nodes.py": [ - [ - "Any Converter", - "Calculate Upscale", - "Image Resize To Height", - "Image Resize To Width", - "Image size to string", - "Load Random Image", - "Load Text", - "Multi Text Merge", - "Prompt Parser", - "Random Line", - "Random Line 4" - ], - { - "title_aux": "Hakkun-ComfyUI-nodes" - } - ], - "https://raw.githubusercontent.com/ultimatech-cn/FaceSimilarity/main/faceSimilarity.py": [ - [ - "Face-analyze", - "Face-similarity" - ], - { - "title_aux": "FaceSimilarity" - } - ], - "https://raw.githubusercontent.com/vxinhao/color2rgb/main/color2rgb.py": [ - [ - "color2RGB" - ], - { - "title_aux": "color2rgb" - } - ], - "https://raw.githubusercontent.com/wsippel/comfyui_ws/main/sdxl_utility.py": [ - [ - "SDXLResolutionPresets" - ], - { - "title_aux": "SDXLResolutionPresets" - } - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/new/model-list.json b/custom_nodes/comfyui-manager/node_db/new/model-list.json deleted file mode 100644 index 7bd32c2558dd3cb0e38903fc4ef4c007b0d00a0d..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/new/model-list.json +++ /dev/null @@ -1,667 +0,0 @@ -{ - "models": [ - { - "name": "Leoxing/pia.ckpt", - "type": "animatediff-pia", - "base": "SD1.x", - "save_path": "animatediff_models", - "description": "AnimateDiff-PIA Model", - "reference": "https://huggingface.co/Leoxing/PIA/tree/main", - "filename": "pia.ckpt", - "url": "https://huggingface.co/Leoxing/PIA/resolve/main/pia.ckpt", - "size": "1.67GB" - }, - - { - "name": "comfyanonymous/cosmos_cv8x8x8_1.0.safetensors", - "type": "VAE", - "base": "Cosmos-1.0", - "save_path": "default", - "description": "VAE model for Cosmos 1.0", - "reference": "https://huggingface.co/comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI/tree/main", - "filename": "cosmos_cv8x8x8_1.0.safetensors", - "url": "https://huggingface.co/comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI/resolve/main/vae/cosmos_cv8x8x8_1.0.safetensors", - "size": "211MB" - }, - { - "name": "mcmonkey/Cosmos-1_0-Diffusion-7B-Text2World.safetensors", - "type": "diffusion_model", - "base": "Cosmos-1.0", - "save_path": "diffusion_models/cosmos-1.0", - "description": "Cosmos 1.0 Text2World Diffusion Model (7B)", - "reference": "https://huggingface.co/mcmonkey/cosmos-1.0", - "filename": "Cosmos-1_0-Diffusion-7B-Text2World.safetensors", - "url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-7B-Text2World.safetensors", - "size": "14.5GB" - }, - { - "name": "mcmonkey/Cosmos-1_0-Diffusion-7B-Video2World.safetensors", - "type": "diffusion_model", - "base": "Cosmos-1.0", - "save_path": "diffusion_models/cosmos-1.0", - "description": "Cosmos 1.0 Video2World Diffusion Model (7B)", - "reference": "https://huggingface.co/mcmonkey/cosmos-1.0", - "filename": "Cosmos-1_0-Diffusion-7B-Video2World.safetensors", - "url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-7B-Video2World.safetensors", - "size": "14.5GB" - }, - { - "name": "mcmonkey/Cosmos-1_0-Diffusion-14B-Text2World.safetensors", - "type": "diffusion_model", - "base": "Cosmos-1.0", - "save_path": "diffusion_models/cosmos-1.0", - "description": "Cosmos 1.0 Text2World Diffusion Model (14B)", - "reference": "https://huggingface.co/mcmonkey/cosmos-1.0", - "filename": "Cosmos-1_0-Diffusion-14B-Text2World.safetensors", - "url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-14B-Text2World.safetensors", - "size": "28.5GB" - }, - { - "name": "mcmonkey/Cosmos-1_0-Diffusion-14B-Video2World.safetensors", - "type": "diffusion_model", - "base": "Cosmos-1.0", - "save_path": "diffusion_models/cosmos-1.0", - "description": "Cosmos 1.0 Video2World Diffusion Model (14B)", - "reference": "https://huggingface.co/mcmonkey/cosmos-1.0", - "filename": "Cosmos-1_0-Diffusion-14B-Video2World.safetensors", - "url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-14B-Video2World.safetensors", - "size": "28.5GB" - }, - - { - "name": "Comfy-Org/llava_llama3_fp8_scaled.safetensors", - "type": "clip", - "base": "LLaVA-Llama-3", - "save_path": "text_encoders", - "description": "llava_llama3_fp8_scaled text encoder model. This is required for using Hunyuan Video.", - "reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged", - "filename": "llava_llama3_fp8_scaled.safetensors", - "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/text_encoders/llava_llama3_fp8_scaled.safetensors", - "size": "9.09GB" - }, - { - "name": "Comfy-Org/llava_llama3_fp16.safetensors", - "type": "clip", - "base": "LLaVA-Llama-3", - "save_path": "text_encoders", - "description": "llava_llama3_fp16 text encoder model. This is required for using Hunyuan Video.", - "reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged", - "filename": "llava_llama3_fp16.safetensors", - "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/text_encoders/llava_llama3_fp16.safetensors", - "size": "16.1GB" - }, - - { - "name": "PixArt-Sigma-XL-2-512-MS.safetensors (diffusion)", - "type": "diffusion_model", - "base": "pixart-sigma", - "save_path": "diffusion_models/PixArt-Sigma", - "description": "PixArt-Sigma Diffusion model", - "reference": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-512-MS", - "filename": "PixArt-Sigma-XL-2-512-MS.safetensors", - "url": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-512-MS/resolve/main/transformer/diffusion_pytorch_model.safetensors", - "size": "2.44GB" - }, - { - "name": "PixArt-Sigma-XL-2-1024-MS.safetensors (diffusion)", - "type": "diffusion_model", - "base": "pixart-sigma", - "save_path": "diffusion_models/PixArt-Sigma", - "description": "PixArt-Sigma Diffusion model", - "reference": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-1024-MS", - "filename": "PixArt-Sigma-XL-2-1024-MS.safetensors", - "url": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-1024-MS/resolve/main/transformer/diffusion_pytorch_model.safetensors", - "size": "2.44GB" - }, - { - "name": "PixArt-XL-2-1024-MS.safetensors (diffusion)", - "type": "diffusion_model", - "base": "pixart-alpha", - "save_path": "diffusion_models/PixArt-Alpha", - "description": "PixArt-Alpha Diffusion model", - "reference": "https://huggingface.co/PixArt-alpha/PixArt-XL-2-1024-MS", - "filename": "PixArt-XL-2-1024-MS.safetensors", - "url": "https://huggingface.co/PixArt-alpha/PixArt-XL-2-1024-MS/resolve/main/transformer/diffusion_pytorch_model.safetensors", - "size": "2.45GB" - }, - - { - "name": "Comfy-Org/hunyuan_video_t2v_720p_bf16.safetensors", - "type": "diffusion_model", - "base": "Hunyuan Video", - "save_path": "diffusion_models/hunyuan_video", - "description": "Huyuan Video diffusion model. repackaged version.", - "reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged", - "filename": "hunyuan_video_t2v_720p_bf16.safetensors", - "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/diffusion_models/hunyuan_video_t2v_720p_bf16.safetensors", - "size": "25.6GB" - }, - { - "name": "Comfy-Org/hunyuan_video_vae_bf16.safetensors", - "type": "VAE", - "base": "Hunyuan Video", - "save_path": "VAE", - "description": "Huyuan Video VAE model. repackaged version.", - "reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged", - "filename": "hunyuan_video_vae_bf16.safetensors", - "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/vae/hunyuan_video_vae_bf16.safetensors", - "size": "493MB" - }, - - { - "name": "LTX-Video 2B v0.9.1 Checkpoint", - "type": "checkpoint", - "base": "LTX-Video", - "save_path": "checkpoints/LTXV", - "description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched. Trained on a large-scale dataset of diverse videos, the model generates high-resolution videos with realistic and varied content.", - "reference": "https://huggingface.co/Lightricks/LTX-Video", - "filename": "ltx-video-2b-v0.9.1.safetensors", - "url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.1.safetensors", - "size": "5.72GB" - }, - - { - "name": "XLabs-AI/flux-canny-controlnet-v3.safetensors", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "xlabs/controlnets", - "description": "ControlNet checkpoints for FLUX.1-dev model by Black Forest Labs.", - "reference": "https://huggingface.co/XLabs-AI/flux-controlnet-collections", - "filename": "flux-canny-controlnet-v3.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-canny-controlnet-v3.safetensors", - "size": "1.49GB" - }, - { - "name": "XLabs-AI/flux-depth-controlnet-v3.safetensors", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "xlabs/controlnets", - "description": "ControlNet checkpoints for FLUX.1-dev model by Black Forest Labs.", - "reference": "https://huggingface.co/XLabs-AI/flux-controlnet-collections", - "filename": "flux-depth-controlnet-v3.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-depth-controlnet-v3.safetensors", - "size": "1.49GB" - }, - { - "name": "XLabs-AI/flux-hed-controlnet-v3.safetensors", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "xlabs/controlnets", - "description": "ControlNet checkpoints for FLUX.1-dev model by Black Forest Labs.", - "reference": "https://huggingface.co/XLabs-AI/flux-controlnet-collections", - "filename": "flux-hed-controlnet-v3.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-hed-controlnet-v3.safetensors", - "size": "1.49GB" - }, - - { - "name": "XLabs-AI/realism_lora.safetensors", - "type": "lora", - "base": "FLUX.1", - "save_path": "xlabs/loras", - "description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs", - "reference": "https://huggingface.co/XLabs-AI/flux-lora-collection", - "filename": "realism_lora.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/realism_lora.safetensors", - "size": "44.8MB" - }, - { - "name": "XLabs-AI/art_lora.safetensors", - "type": "lora", - "base": "FLUX.1", - "save_path": "xlabs/loras", - "description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs", - "reference": "https://huggingface.co/XLabs-AI/flux-lora-collection", - "filename": "art_lora.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/scenery_lora.safetensors", - "size": "44.8MB" - }, - { - "name": "XLabs-AI/mjv6_lora.safetensors", - "type": "lora", - "base": "FLUX.1", - "save_path": "xlabs/loras", - "description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs", - "reference": "https://huggingface.co/XLabs-AI/flux-lora-collection", - "filename": "mjv6_lora.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/mjv6_lora.safetensors", - "size": "44.8MB" - }, - - { - "name": "XLabs-AI/flux-ip-adapter", - "type": "lora", - "base": "FLUX.1", - "save_path": "xlabs/ipadapters", - "description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs", - "reference": "https://huggingface.co/XLabs-AI/flux-ip-adapter", - "filename": "ip_adapter.safetensors", - "url": "https://huggingface.co/XLabs-AI/flux-ip-adapter/resolve/main/ip_adapter.safetensors", - "size": "982MB" - }, - - { - "name": "stabilityai/SD3.5-Large-Controlnet-Blur", - "type": "controlnet", - "base": "SD3.5", - "save_path": "controlnet/SD3.5", - "description": "Blur Controlnet model for SD3.5 Large", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets", - "filename": "sd3.5_large_controlnet_blur.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_blur.safetensors", - "size": "8.65GB" - }, - { - "name": "stabilityai/SD3.5-Large-Controlnet-Canny", - "type": "controlnet", - "base": "SD3.5", - "save_path": "controlnet/SD3.5", - "description": "Canny Controlnet model for SD3.5 Large", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets", - "filename": "sd3.5_large_controlnet_canny.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_canny.safetensors", - "size": "8.65GB" - }, - { - "name": "stabilityai/SD3.5-Large-Controlnet-Depth", - "type": "controlnet", - "base": "SD3.5", - "save_path": "controlnet/SD3.5", - "description": "Depth Controlnet model for SD3.5 Large", - "reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets", - "filename": "sd3.5_large_controlnet_depth.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_depth.safetensors", - "size": "8.65GB" - }, - - { - "name": "LTX-Video 2B v0.9 Checkpoint", - "type": "checkpoint", - "base": "LTX-Video", - "save_path": "checkpoints/LTXV", - "description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched. Trained on a large-scale dataset of diverse videos, the model generates high-resolution videos with realistic and varied content.", - "reference": "https://huggingface.co/Lightricks/LTX-Video", - "filename": "ltx-video-2b-v0.9.safetensors", - "url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.safetensors", - "size": "9.37GB" - }, - { - "name": "InstantX/FLUX.1-dev-IP-Adapter", - "type": "IP-Adapter", - "base": "FLUX.1", - "save_path": "ipadapter-flux", - "description": "FLUX.1-dev-IP-Adapter", - "reference": "https://huggingface.co/InstantX/FLUX.1-dev-IP-Adapter", - "filename": "ip-adapter.bin", - "url": "https://huggingface.co/InstantX/FLUX.1-dev-IP-Adapter/resolve/main/ip-adapter.bin", - "size": "5.29GB" - }, - - { - "name": "Comfy-Org/sigclip_vision_384 (patch14_384)", - "type": "clip_vision", - "base": "sigclip", - "save_path": "clip_vision", - "description": "This clip vision model is required for FLUX.1 Redux.", - "reference": "https://huggingface.co/Comfy-Org/sigclip_vision_384/tree/main", - "filename": "sigclip_vision_patch14_384.safetensors", - "url": "https://huggingface.co/Comfy-Org/sigclip_vision_384/resolve/main/sigclip_vision_patch14_384.safetensors", - "size": "857MB" - }, - - { - "name": "comfyanonymous/flux_text_encoders - t5xxl (fp16)", - "type": "clip", - "base": "t5", - "save_path": "text_encoders/t5", - "description": "Text Encoders for FLUX (fp16)", - "reference": "https://huggingface.co/comfyanonymous/flux_text_encoders", - "filename": "t5xxl_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp16.safetensors", - "size": "9.79GB" - }, - { - "name": "comfyanonymous/flux_text_encoders - t5xxl (fp8_e4m3fn)", - "type": "clip", - "base": "t5", - "save_path": "text_encoders/t5", - "description": "Text Encoders for FLUX (fp8_e4m3fn)", - "reference": "https://huggingface.co/comfyanonymous/flux_text_encoders", - "filename": "t5xxl_fp8_e4m3fn.safetensors", - "url": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn.safetensors", - "size": "4.89GB" - }, - { - "name": "comfyanonymous/flux_text_encoders - t5xxl (fp8_e4m3fn_scaled)", - "type": "clip", - "base": "t5", - "save_path": "text_encoders/t5", - "description": "Text Encoders for FLUX (fp16)", - "reference": "https://huggingface.co/comfyanonymous/flux_text_encoders", - "filename": "t5xxl_fp8_e4m3fn_scaled.safetensors", - "url": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn_scaled.safetensors", - "size": "5.16GB" - }, - - { - "name": "FLUX.1 [Dev] Diffusion model (scaled fp8)", - "type": "diffusion_model", - "base": "FLUX.1", - "save_path": "diffusion_models/FLUX1", - "description": "FLUX.1 [Dev] Diffusion model (scaled fp8)[w/Due to the large size of the model, it is recommended to download it through a browser if possible.]", - "reference": "https://huggingface.co/comfyanonymous/flux_dev_scaled_fp8_test", - "filename": "flux_dev_fp8_scaled_diffusion_model.safetensors", - "url": "https://huggingface.co/comfyanonymous/flux_dev_scaled_fp8_test/resolve/main/flux_dev_fp8_scaled_diffusion_model.safetensors", - "size": "11.9GB" - }, - - { - "name": "kijai/MoGe_ViT_L_fp16.safetensors", - "type": "MoGe", - "base": "MoGe", - "save_path": "MoGe", - "description": "Safetensors versions of [a/https://github.com/microsoft/MoGe](https://github.com/microsoft/MoGe)", - "reference": "https://huggingface.co/Kijai/MoGe_safetensors", - "filename": "MoGe_ViT_L_fp16.safetensors", - "url": "https://huggingface.co/Kijai/MoGe_safetensors/resolve/main/MoGe_ViT_L_fp16.safetensors", - "size": "628MB" - }, - { - "name": "kijai/MoGe_ViT_L_fp16.safetensors", - "type": "MoGe", - "base": "MoGe", - "save_path": "MoGe", - "description": "Safetensors versions of [a/https://github.com/microsoft/MoGe](https://github.com/microsoft/MoGe)", - "reference": "https://huggingface.co/Kijai/MoGe_safetensors", - "filename": "MoGe_ViT_L_fp16.safetensors", - "url": "https://huggingface.co/Kijai/MoGe_safetensors/resolve/main/MoGe_ViT_L_fp16.safetensors", - "size": "1.26GB" - }, - - { - "name": "pulid_flux_v0.9.1.safetensors", - "type": "PuLID", - "base": "FLUX", - "save_path": "pulid", - "description": "This is required for PuLID (FLUX)", - "reference": "https://huggingface.co/guozinan/PuLID", - "filename": "pulid_flux_v0.9.1.safetensors", - "url": "https://huggingface.co/guozinan/PuLID/resolve/main/pulid_flux_v0.9.1.safetensors", - "size": "1.14GB" - }, - { - "name": "pulid_v1.1.safetensors", - "type": "PuLID", - "base": "SDXL", - "save_path": "pulid", - "description": "This is required for PuLID (SDXL)", - "reference": "https://huggingface.co/guozinan/PuLID", - "filename": "pulid_v1.1.safetensors", - "url": "https://huggingface.co/guozinan/PuLID/resolve/main/pulid_v1.1.safetensors", - "size": "984MB" - }, - - { - "name": "Kolors-IP-Adapter-Plus.bin (Kwai-Kolors/Kolors-IP-Adapter-Plus)", - "type": "IP-Adapter", - "base": "Kolors", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-Plus", - "filename": "Kolors-IP-Adapter-Plus.bin", - "url": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-Plus/resolve/main/ip_adapter_plus_general.bin", - "size": "1.01GB" - }, - { - "name": "Kolors-IP-Adapter-FaceID-Plus.bin (Kwai-Kolors/Kolors-IP-Adapter-Plus)", - "type": "IP-Adapter", - "base": "Kolors", - "save_path": "ipadapter", - "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", - "reference": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-FaceID-Plus", - "filename": "Kolors-IP-Adapter-FaceID-Plus.bin", - "url": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-FaceID-Plus/resolve/main/ipa-faceid-plus.bin", - "size": "2.39GB" - }, - { - "name": "CLIPVision model (Kwai-Kolors/Kolors-IP-Adapter-Plus/clip-vit-large)", - "type": "clip_vision", - "base": "ViT-L", - "save_path": "clip_vision", - "description": "CLIPVision model (This is required in cubiq/ComfyUI_IPAdapter_plus)", - "reference": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-Plus", - "filename": "clip-vit-large-patch14-336.bin", - "url": "https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-Plus/resolve/main/image_encoder/pytorch_model.bin", - "size": "1.71GB" - }, - - { - "name": "kijai/lotus depth d model v1.1 (fp16)", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus depth d model v1.1 (fp16). This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-depth-d-v-1-1-fp16.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-depth-d-v-1-1-fp16.safetensors", - "size": "1.74GB" - }, - { - "name": "kijai/lotus depth g model v1.0 (fp16)", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus depth g model v1.0 (fp16). This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-depth-g-v1-0-fp16.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-depth-g-v1-0-fp16.safetensors", - "size": "1.74GB" - }, - { - "name": "kijai/lotus depth g model v1.0", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus depth g model v1.0. This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-depth-g-v1-0.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-depth-g-v1-0.safetensors", - "size": "3.47GB" - }, - { - "name": "kijai/lotus normal d model v1.0 (fp16)", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus normal d model v1.0 (fp16). This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-normal-d-v1-0-fp16.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-normal-d-v1-0-fp16.safetensors", - "size": "1.74GB" - }, - { - "name": "kijai/lotus normal d model v1.0", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus normal d model v1.0. This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-normal-d-v1-0.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-normal-d-v1-0.safetensors", - "size": "3.47GB" - }, - { - "name": "kijai/lotus normal g model v1.0 (fp16)", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus normal g model v1.0 (fp16). This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-normal-g-v1-0-fp16.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-normal-g-v1-0-fp16.safetensors", - "size": "1.74GB" - }, - { - "name": "kijai/lotus normal g model v1.0", - "type": "diffusion_model", - "base": "lotus", - "save_path": "diffusion_models", - "description": "lotus normal g model v1.0. This model can be used in ComfyUI-Lotus custom nodes.", - "reference": "https://huggingface.co/Kijai/lotus-comfyui", - "filename": "lotus-normal-g-v1-0.safetensors", - "url": "https://huggingface.co/Kijai/lotus-comfyui/resolve/main/lotus-normal-g-v1-0.safetensors", - "size": "3.47GB" - }, - - { - "name": "Depth Pro model", - "type": "depth-pro", - "base": "depth-pro", - "save_path": "depth/ml-depth-pro", - "description": "Depth pro model for [a/ComfyUI-Depth-Pro](https://github.com/spacepxl/ComfyUI-Depth-Pro)", - "reference": "https://huggingface.co/spacepxl/ml-depth-pro", - "filename": "depth_pro.fp16.safetensors", - "url": "https://huggingface.co/spacepxl/ml-depth-pro/resolve/main/depth_pro.fp16.safetensors", - "size": "1.9GB" - }, - - { - "name": "jasperai/FLUX.1-dev-Controlnet-Upscaler", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1/jasperai-dev-Upscaler", - "description": "This is Flux.1-dev ControlNet for low resolution images developed by Jasper research team.", - "reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Upscaler", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Upscaler/resolve/main/diffusion_pytorch_model.safetensors", - "size": "3.58GB" - }, - { - "name": "jasperai/FLUX.1-dev-Controlnet-Depth", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1/jasperai-dev-Depth", - "description": "This is Flux.1-dev ControlNet for Depth map developed by Jasper research team.", - "reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Depth", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Depth/resolve/main/diffusion_pytorch_model.safetensors", - "size": "3.58GB" - }, - { - "name": "jasperai/Flux.1-dev-Controlnet-Surface-Normals", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1/jasperai-dev-Surface-Normals", - "description": "This is Flux.1-dev ControlNet for Surface Normals map developed by Jasper research team.", - "reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Surface-Normals", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Surface-Normals/resolve/main/diffusion_pytorch_model.safetensors", - "size": "3.58GB" - }, - - { - "name": "Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro (fp8_e4m3fn) by Kijai", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1", - "description": "FLUX.1 [Dev] Union Controlnet. Supports Canny, Tile, Depth, Blur, Pose, Gray, Low Quality\nVersion quantized to fp8_e4m3fn by Kijai", - "reference": "https://huggingface.co/Kijai/flux-fp8", - "filename": "flux_shakker_labs_union_pro-fp8_e4m3fn.safetensors", - "url": "https://huggingface.co/Kijai/flux-fp8/resolve/main/flux_shakker_labs_union_pro-fp8_e4m3fn.safetensors", - "size": "3.3GB" - }, - - { - "name": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors [Long CLIP L]", - "type": "clip", - "base": "clip", - "save_path": "clip/long_clip", - "description": "Greatly improved TEXT + Detail (as CLIP-L for Flux.1)", - "reference": "https://huggingface.co/zer0int", - "filename": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors", - "url": "https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14/resolve/main/ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors", - "size": "931MB" - }, - { - "name": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors [Long CLIP L]", - "type": "clip", - "base": "clip", - "save_path": "clip/long_clip", - "description": "Greatly improved TEXT + Detail (as CLIP-L for Flux.1)", - "reference": "https://huggingface.co/zer0int", - "filename": "ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors", - "url": "https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14/resolve/main/ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors", - "size": "323MB" - }, - - { - "name": "Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro", - "type": "controlnet", - "base": "FLUX.1", - "save_path": "controlnet/FLUX.1/Shakker-Labs-ControlNet-Union-Pro", - "description": "FLUX.1 [Dev] Union Controlnet. Supports Canny, Tile, Depth, Blur, Pose, Gray, Low Quality", - "reference": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro", - "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro/resolve/main/diffusion_pytorch_model.safetensors", - "size": "6.6GB" - }, - - { - "name": "Hyper-SD LoRA (8steps) - FLUX.1 [Dev]", - "type": "lora", - "base": "FLUX.1", - "save_path": "loras/HyperSD/FLUX.1", - "description": "Hyper-SD LoRA (8steps) - FLUX.1 [Dev]", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-FLUX.1-dev-8steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-FLUX.1-dev-8steps-lora.safetensors", - "size": "1.39GB" - }, - { - "name": "Hyper-SD LoRA (16steps) - FLUX.1 [Dev]", - "type": "lora", - "base": "FLUX.1", - "save_path": "loras/HyperSD/FLUX.1", - "description": "Hyper-SD LoRA (16steps) - FLUX.1 [Dev]", - "reference": "https://huggingface.co/ByteDance/Hyper-SD", - "filename": "Hyper-FLUX.1-dev-16steps-lora.safetensors", - "url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-FLUX.1-dev-16steps-lora.safetensors", - "size": "1.39GB" - }, - - { - "name": "BAAI/SegGPT", - "type": "SegGPT", - "base": "SegGPT", - "save_path": "custom_nodes/comfyui-SegGPT", - "description": "SegGPT", - "reference": "https://huggingface.co/BAAI/SegGPT", - "filename": "seggpt_vit_large.pth", - "url": "https://huggingface.co/BAAI/SegGPT/resolve/main/seggpt_vit_large.pth", - "size": "1.48GB" - }, - - { - "name": "DMD2 LoRA (4steps)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/DMD2", - "description": "DMD2 LoRA (4steps)", - "reference": "https://huggingface.co/tianweiy/DMD2", - "filename": "dmd2_sdxl_4step_lora.safetensors", - "url": "https://huggingface.co/tianweiy/DMD2/resolve/main/dmd2_sdxl_4step_lora.safetensors", - "size": "787MB" - }, - { - "name": "DMD2 LoRA (4steps/fp16)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/DMD2", - "description": "DMD2 LoRA (4steps/fp16)", - "reference": "https://huggingface.co/tianweiy/DMD2", - "filename": "dmd2_sdxl_4step_lora_fp16.safetensors", - "url": "https://huggingface.co/tianweiy/DMD2/resolve/main/dmd2_sdxl_4step_lora_fp16.safetensors", - "size": "394MB" - } - ] -} diff --git a/custom_nodes/comfyui-manager/node_db/tutorial/custom-node-list.json b/custom_nodes/comfyui-manager/node_db/tutorial/custom-node-list.json deleted file mode 100644 index 37faab71caf4b7d076797cd9fc79ae6cdc42b543..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/tutorial/custom-node-list.json +++ /dev/null @@ -1,296 +0,0 @@ -{ - "custom_nodes": [ - { - "author": "Suzie1", - "title": "Guide To Making Custom Nodes in ComfyUI", - "reference": "https://github.com/Suzie1/ComfyUI_Guide_To_Making_Custom_Nodes", - "files": [ - "https://github.com/Suzie1/ComfyUI_Guide_To_Making_Custom_Nodes" - ], - "install_type": "git-clone", - "description": "There is a small node pack attached to this guide. This includes the init file and 3 nodes associated with the tutorials." - }, - { - "author": "bamboodia", - "title": "BAM Nodes", - "reference": "https://github.com/bamboodia/BAM_Nodes", - "files": [ - "https://github.com/bamboodia/BAM_Nodes" - ], - "install_type": "git-clone", - "description": "A collection of comfyui nodes that I have made for nothing more than educational purposes." - }, - { - "author": "BadCafeCode", - "title": "execution-inversion-demo-comfyui", - "reference": "https://github.com/BadCafeCode/execution-inversion-demo-comfyui", - "files": [ - "https://github.com/BadCafeCode/execution-inversion-demo-comfyui" - ], - "install_type": "git-clone", - "description": "These are demo nodes for [a/PR2666](https://github.com/comfyanonymous/ComfyUI/pull/2666)" - }, - { - "author": "ecjojo", - "title": "ecjojo_example_nodes", - "reference": "https://github.com/ecjojo/ecjojo-example-nodes", - "files": [ - "https://github.com/ecjojo/ecjojo-example-nodes" - ], - "install_type": "git-clone", - "description": "Welcome to ecjojo_example_nodes! This example is specifically designed for beginners who want to learn how to write a simple custom node.\nFeel free to modify this example and make it your own. Experiment with different features and functionalities to enhance your understanding of ComfyUI custom nodes. Don't be afraid to explore and customize the code to suit your needs.\nBy diving into this example and making it your own, you'll gain valuable hands-on experience in creating custom nodes in ComfyUI. Enjoy the process of learning and have fun with your custom node development journey!" - }, - { - "author": "dynamixar", - "title": "Atluris", - "reference": "https://github.com/dynamixar/Atluris", - "files": [ - "https://github.com/dynamixar/Atluris" - ], - "install_type": "git-clone", - "description": "Nodes:Random Line" - }, - { - "author": "et118", - "title": "ComfyUI-ElGogh-Nodes", - "reference": "https://github.com/et118/ComfyUI-ElGogh-Nodes", - "files": [ - "https://github.com/et118/ComfyUI-ElGogh-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:ElGogh Positive Prompt, ElGogh NEGATIVE Prompt, ElGogh Empty Latent Image, ElGogh Checkpoint Loader Simple" - }, - { - "author": "LarryJane491", - "title": "Custom-Node-Base", - "reference": "https://github.com/LarryJane491/Custom-Node-Base", - "files": [ - "https://github.com/LarryJane491/Custom-Node-Base" - ], - "install_type": "git-clone", - "description": "This project is an `empty` custom node that is already in its own folder. It serves as a base to build any custom node. Whenever you want to create a custom node, you can download that, put it in custom_nodes, then you just have to change the names and fill it with code!" - }, - { - "author": "foxtrot-roger", - "title": "comfyui-custom-nodes", - "reference": "https://github.com/foxtrot-roger/comfyui-custom-nodes", - "files": [ - "https://github.com/foxtrot-roger/comfyui-custom-nodes" - ], - "install_type": "git-clone", - "description": "Tutorial nodes" - }, - { - "author": "wailovet", - "title": "ComfyUI-WW", - "reference": "https://github.com/wailovet/ComfyUI-WW", - "files": [ - "https://github.com/wailovet/ComfyUI-WW" - ], - "install_type": "git-clone", - "description": "Nodes:WW_ImageResize" - }, - { - "author": "azure-dragon-ai", - "title": "ComfyUI-HPSv2-Nodes", - "reference": "https://github.com/azure-dragon-ai/ComfyUI-HPSv2-Nodes", - "files": [ - "https://github.com/azure-dragon-ai/ComfyUI-HPSv2-Nodes" - ], - "install_type": "git-clone", - "description": "Nodes:Loader, Image Processor, Text Processor, ImageScore" - }, - { - "author": "kappa54m", - "title": "ComfyUI-HPSv2-Nodes", - "reference": "https://github.com/kappa54m/ComfyUI_Usability", - "files": [ - "https://github.com/kappa54m/ComfyUI_Usability" - ], - "install_type": "git-clone", - "description": "Nodes:Load Image Dedup" - }, - { - "author": "IvanRybakov", - "title": "comfyui-node-int-to-string-convertor", - "reference": "https://github.com/IvanRybakov/comfyui-node-int-to-string-convertor", - "files": [ - "https://github.com/IvanRybakov/comfyui-node-int-to-string-convertor" - ], - "install_type": "git-clone", - "description": "Nodes:Int To String Convertor" - }, - { - "author": "yowipr", - "title": "ComfyUI-Manual", - "reference": "https://github.com/yowipr/ComfyUI-Manual", - "files": [ - "https://github.com/yowipr/ComfyUI-Manual" - ], - "install_type": "git-clone", - "description": "Nodes:M_Layer, M_Output" - }, - { - "author": "andrewharp", - "title": "ComfyUI Function Annotator", - "reference": "https://github.com/andrewharp/ComfyUI-Annotations", - "files": [ - "https://github.com/andrewharp/ComfyUI-Annotations" - ], - "install_type": "git-clone", - "description": "This module provides an annotation @ComfyFunc to streamline adding custom node types in ComfyUI. It processes your function's signature to create a wrapped function and custom node definition required for ComfyUI, eliminating all the boilerplate code. In most cases you can just add a @ComfyFunc(\"category\") annotation to your existing function." - }, - { - "author": "OuticNZ", - "title": "ComfyUI-Simple-Of-Complex", - "reference": "https://github.com/OuticNZ/ComfyUI-Simple-Of-Complex", - "files": [ - "https://github.com/OuticNZ/ComfyUI-Simple-Of-Complex" - ], - "install_type": "git-clone", - "description": "Keeping it simple for starting. Single branch for now and will add development branch later." - }, - { - "author": "jtong", - "title": "comfyui-jtong-workflow", - "reference": "https://github.com/jtong/comfyui-jtong-workflow", - "files": [ - "https://github.com/jtong/comfyui-jtong-workflow" - ], - "install_type": "git-clone", - "description": "Nodes:jtong.Highway, Example" - }, - { - "author": "thinkthinking", - "title": "ComfyUI-Ye", - "reference": "https://github.com/thinkthinking/ComfyUI-Ye", - "files": [ - "https://github.com/thinkthinking/ComfyUI-Ye" - ], - "install_type": "git-clone", - "description": "Nodes:Signature|Ye, CheckpointLoader|Ye, PrintHelloWorld|Ye." - }, - { - "author": "BoosterCore", - "title": "ComfyUI-BC-Experimental", - "reference": "https://github.com/BoosterCore/ComfyUI-BC-Experimental", - "files": [ - "https://github.com/BoosterCore/ComfyUI-BC-Experimental" - ], - "install_type": "git-clone", - "description": "Nodes:ClipTextEncodeBC, SaveAnyText, SimpleText" - }, - { - "author": "sonyeon-sj", - "title": "ComfyUI-easy_ImageSize_Selecter", - "reference": "https://github.com/sonyeon-sj/ComfyUI-easy_ImageSize_Selecter", - "files": [ - "https://github.com/sonyeon-sj/ComfyUI-easy_ImageSize_Selecter" - ], - "install_type": "git-clone", - "description": "Custom node for ComfyUI Select the image size from the preset and select Vertical and Horizontal to output Width and Height." - }, - { - "author": "boricuapab", - "title": "ComfyUI_BoricuapabWFNodePack", - "reference": "https://github.com/boricuapab/ComfyUI_BoricuapabWFNodePack", - "files": [ - "https://github.com/boricuapab/ComfyUI_BoricuapabWFNodePack" - ], - "install_type": "git-clone", - "description": "Learning how to make my own comfy ui custom nodes" - }, - { - "author": "mira-6", - "title": "mira-wildcard-node", - "reference": "https://github.com/mira-6/mira-wildcard-node", - "files": [ - "https://github.com/mira-6/mira-wildcard-node" - ], - "install_type": "git-clone", - "description": "Mira's Simple Wildcard Node" - }, - { - "author": "BetaDoggo", - "title": "ComfyUI Tetris", - "id": "tetris", - "reference": "https://github.com/BetaDoggo/ComfyUI-Tetris", - "files": [ - "https://github.com/BetaDoggo/ComfyUI-Tetris" - ], - "install_type": "git-clone", - "description": "The primitive node and dummy input are required because comfy doesn't accept requests with identical graphs. You'll also need a show text node. I like the one from ComfyUI-Custom-Scripts. I got the generic tetris remake from claude so it may or may not be ripped from somewhere else." - }, - { - "author": "FlyMyAI", - "title": "ComfyUI-ExampleNode", - "reference": "https://github.com/FlyMyAI/ComfyUI-ExampleNode", - "files": [ - "https://github.com/FlyMyAI/ComfyUI-ExampleNode" - ], - "install_type": "git-clone", - "description": "Node to provide convenient ComfyUI standard, supported by flymy_comfyui." - }, - { - "author": "Wanghanying", - "title": "ComfyUI_RAGDemo", - "reference": "https://github.com/Wanghanying/ComfyUI_RAGDemo", - "files": [ - "https://github.com/Wanghanying/ComfyUI_RAGDemo" - ], - "install_type": "git-clone", - "description": "RAG Demo for LLM" - }, - { - "author": "FelixTeutsch", - "title": "BachelorThesis", - "reference": "https://github.com/FelixTeutsch/BachelorThesis", - "files": [ - "https://github.com/FelixTeutsch/BachelorThesis" - ], - "install_type": "git-clone", - "description": "This is a ComfyUi custom node, that build a new UI on top of the already existing AI, to enable the use of custom controllers" - }, - { - "author": "jhj0517", - "title": "ComfyUI-CustomNodes-Template", - "reference": "https://github.com/jhj0517/ComfyUI-CustomNodes-Template", - "files": [ - "https://github.com/jhj0517/ComfyUI-CustomNodes-Template" - ], - "install_type": "git-clone", - "description": "This is the ComfyUI custom node template repository that anyone can use to create their own custom nodes." - }, - { - "author": "laogou666", - "title": "Comfyui_LG_Advertisement", - "reference": "https://github.com/LAOGOU-666/Comfyui_LG_Advertisement", - "files": [ - "https://github.com/LAOGOU-666/Comfyui_LG_Advertisement" - ], - "install_type": "git-clone", - "description": "A node for demonstration." - }, - { - "author": "amorano", - "title": "cozy_spoke", - "reference": "https://github.com/cozy-comfyui/cozy_spoke", - "files": [ - "https://github.com/cozy-comfyui/cozy_spoke" - ], - "install_type": "git-clone", - "description": "Example node communicating between ComfyUI Javascript and Python." - }, - { - "author": "amorano", - "title": "Cozy Link Toggle", - "id": "cozyLinkToggle", - "reference": "https://github.com/cozy-comfyui/cozy_link_toggle", - "files": [ - "https://github.com/cozy-comfyui/cozy_link_toggle" - ], - "install_type": "git-clone", - "description": "Example of using ComfyUI Toolbar to Toggle ComfyUI links on/off" - } - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/tutorial/extension-node-map.json b/custom_nodes/comfyui-manager/node_db/tutorial/extension-node-map.json deleted file mode 100644 index 393e334810d6f1dc3f2c0d635f9268e5908899c3..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/tutorial/extension-node-map.json +++ /dev/null @@ -1,573 +0,0 @@ -{ - "https://github.com/BadCafeCode/execution-inversion-demo-comfyui": [ - [ - "AccumulateNode", - "AccumulationGetItemNode", - "AccumulationGetLengthNode", - "AccumulationHeadNode", - "AccumulationSetItemNode", - "AccumulationTailNode", - "AccumulationToListNode", - "BoolOperationNode", - "ComponentInput", - "ComponentMetadata", - "ComponentOutput", - "DebugPrint", - "ExecutionBlocker", - "FloatConditions", - "ForLoopClose", - "ForLoopOpen", - "IntConditions", - "IntMathOperation", - "InversionDemoAdvancedPromptNode", - "InversionDemoLazyConditional", - "InversionDemoLazyIndexSwitch", - "InversionDemoLazyMixImages", - "InversionDemoLazySwitch", - "ListToAccumulationNode", - "MakeListNode", - "StringConditions", - "ToBoolNode", - "WhileLoopClose", - "WhileLoopOpen" - ], - { - "title_aux": "execution-inversion-demo-comfyui" - } - ], - "https://github.com/BetaDoggo/ComfyUI-Tetris": [ - [ - "Tetris" - ], - { - "title_aux": "ComfyUI Tetris" - } - ], - "https://github.com/BoosterCore/ComfyUI-BC-Experimental": [ - [ - "ClipTextEncodeBC", - "ClipTextEncodeBCA", - "FluxEmptyLatentSize", - "LoraWithTriggerWord", - "SaveAnyText", - "SimpleText" - ], - { - "title_aux": "ComfyUI-BC-Experimental" - } - ], - "https://github.com/FlyMyAI/ComfyUI-ExampleNode": [ - [ - "ExampleT2IFMANode" - ], - { - "title_aux": "ComfyUI-ExampleNode" - } - ], - "https://github.com/IvanRybakov/comfyui-node-int-to-string-convertor": [ - [ - "Int To String" - ], - { - "title_aux": "comfyui-node-int-to-string-convertor" - } - ], - "https://github.com/LarryJane491/Custom-Node-Base": [ - [ - "My First Node" - ], - { - "title_aux": "Custom-Node-Base" - } - ], - "https://github.com/OuticNZ/ComfyUI-Simple-Of-Complex": [ - [ - "Pipe From Parameters", - "Pipe To Parameters", - "Prompt Tidy", - "Text Switch 2 Way", - "Text With Context" - ], - { - "title_aux": "ComfyUI-Simple-Of-Complex" - } - ], - "https://github.com/Suzie1/ComfyUI_Guide_To_Making_Custom_Nodes": [ - [ - "Concatenate Hello World", - "Hello World Overlay Text", - "Print Hello World" - ], - { - "title_aux": "Guide To Making Custom Nodes in ComfyUI" - } - ], - "https://github.com/Wanghanying/ComfyUI_RAGDemo": [ - [ - "testRAG" - ], - { - "title_aux": "ComfyUI_RAGDemo" - } - ], - "https://github.com/azure-dragon-ai/ComfyUI-HPSv2-Nodes": [ - [ - "GetImageSize", - "HaojihuiHPSv2ImageProcessor", - "HaojihuiHPSv2ImageScore", - "HaojihuiHPSv2ImageScores", - "HaojihuiHPSv2Loader", - "HaojihuiHPSv2SaveAnimatedWEBP", - "HaojihuiHPSv2SaveImage", - "HaojihuiHPSv2SaveWEBP", - "HaojihuiHPSv2SaveWebpImage", - "HaojihuiHPSv2TextProcessor", - "SaveImageWebp", - "ScaleShort" - ], - { - "title_aux": "ComfyUI-HPSv2-Nodes" - } - ], - "https://github.com/bamboodia/BAM_Nodes": [ - [ - "BAM Crop To Ratio", - "BAM Empty Latent By Ratio", - "BAM Get Shortest Side", - "BAM OnOff INT", - "BAM Random Float", - "BAM Random Image From Folder" - ], - { - "title_aux": "BAM Nodes" - } - ], - "https://github.com/boricuapab/ComfyUI_BoricuapabWFNodePack": [ - [ - "BoricuapabWF Concatenate Hello World", - "BoricuapabWF Integer", - "BoricuapabWF Print Hello Puerto Rican World", - "BoricuapabWF Print Puerto Rican" - ], - { - "title_aux": "ComfyUI_BoricuapabWFNodePack" - } - ], - "https://github.com/comfyanonymous/ComfyUI": [ - [ - "AddNoise", - "AlignYourStepsScheduler", - "BasicGuider", - "BasicScheduler", - "BetaSamplingScheduler", - "CFGGuider", - "CLIPAttentionMultiply", - "CLIPLoader", - "CLIPMergeAdd", - "CLIPMergeSimple", - "CLIPMergeSubtract", - "CLIPSave", - "CLIPSetLastLayer", - "CLIPTextEncode", - "CLIPTextEncodeControlnet", - "CLIPTextEncodeFlux", - "CLIPTextEncodeHunyuanDiT", - "CLIPTextEncodePixArtAlpha", - "CLIPTextEncodeSD3", - "CLIPTextEncodeSDXL", - "CLIPTextEncodeSDXLRefiner", - "CLIPVisionEncode", - "CLIPVisionLoader", - "Canny", - "CheckpointLoader", - "CheckpointLoaderSimple", - "CheckpointSave", - "ConditioningAverage", - "ConditioningCombine", - "ConditioningConcat", - "ConditioningSetArea", - "ConditioningSetAreaPercentage", - "ConditioningSetAreaStrength", - "ConditioningSetMask", - "ConditioningSetTimestepRange", - "ConditioningStableAudio", - "ConditioningZeroOut", - "ControlNetApply", - "ControlNetApplyAdvanced", - "ControlNetApplySD3", - "ControlNetInpaintingAliMamaApply", - "ControlNetLoader", - "CropMask", - "DiffControlNetLoader", - "DifferentialDiffusion", - "DiffusersLoader", - "DisableNoise", - "DualCFGGuider", - "DualCLIPLoader", - "EmptyHunyuanLatentVideo", - "EmptyImage", - "EmptyLTXVLatentVideo", - "EmptyLatentAudio", - "EmptyLatentImage", - "EmptyMochiLatentVideo", - "EmptySD3LatentImage", - "ExponentialScheduler", - "FeatherMask", - "FlipSigmas", - "FluxGuidance", - "FreeU", - "FreeU_V2", - "GITSScheduler", - "GLIGENLoader", - "GLIGENTextBoxApply", - "GrowMask", - "HyperTile", - "HypernetworkLoader", - "ImageBatch", - "ImageBlend", - "ImageBlur", - "ImageColorToMask", - "ImageCompositeMasked", - "ImageCrop", - "ImageFromBatch", - "ImageInvert", - "ImageOnlyCheckpointLoader", - "ImageOnlyCheckpointSave", - "ImagePadForOutpaint", - "ImageQuantize", - "ImageScale", - "ImageScaleBy", - "ImageScaleToTotalPixels", - "ImageSharpen", - "ImageToMask", - "ImageUpscaleWithModel", - "InpaintModelConditioning", - "InstructPixToPixConditioning", - "InvertMask", - "JoinImageWithAlpha", - "KSampler", - "KSamplerAdvanced", - "KSamplerSelect", - "KarrasScheduler", - "LTXVConditioning", - "LTXVImgToVideo", - "LTXVScheduler", - "LaplaceScheduler", - "LatentAdd", - "LatentApplyOperation", - "LatentApplyOperationCFG", - "LatentBatch", - "LatentBatchSeedBehavior", - "LatentBlend", - "LatentComposite", - "LatentCompositeMasked", - "LatentCrop", - "LatentFlip", - "LatentFromBatch", - "LatentInterpolate", - "LatentMultiply", - "LatentOperationSharpen", - "LatentOperationTonemapReinhard", - "LatentRotate", - "LatentSubtract", - "LatentUpscale", - "LatentUpscaleBy", - "Load3D", - "Load3DAnimation", - "LoadAudio", - "LoadImage", - "LoadImageMask", - "LoadLatent", - "LoraLoader", - "LoraLoaderModelOnly", - "LoraSave", - "Mahiro", - "MaskComposite", - "MaskToImage", - "ModelMergeAdd", - "ModelMergeAuraflow", - "ModelMergeBlocks", - "ModelMergeFlux1", - "ModelMergeLTXV", - "ModelMergeMochiPreview", - "ModelMergeSD1", - "ModelMergeSD2", - "ModelMergeSD35_Large", - "ModelMergeSD3_2B", - "ModelMergeSDXL", - "ModelMergeSimple", - "ModelMergeSubtract", - "ModelSamplingAuraFlow", - "ModelSamplingContinuousEDM", - "ModelSamplingContinuousV", - "ModelSamplingDiscrete", - "ModelSamplingFlux", - "ModelSamplingLTXV", - "ModelSamplingSD3", - "ModelSamplingStableCascade", - "ModelSave", - "Morphology", - "PatchModelAddDownscale", - "PerpNeg", - "PerpNegGuider", - "PerturbedAttentionGuidance", - "PhotoMakerEncode", - "PhotoMakerLoader", - "PolyexponentialScheduler", - "PorterDuffImageComposite", - "Preview3D", - "PreviewAudio", - "PreviewImage", - "RandomNoise", - "RebatchImages", - "RebatchLatents", - "RepeatImageBatch", - "RepeatLatentBatch", - "RescaleCFG", - "SDTurboScheduler", - "SD_4XUpscale_Conditioning", - "SV3D_Conditioning", - "SVD_img2vid_Conditioning", - "SamplerCustom", - "SamplerCustomAdvanced", - "SamplerDPMAdaptative", - "SamplerDPMPP_2M_SDE", - "SamplerDPMPP_2S_Ancestral", - "SamplerDPMPP_3M_SDE", - "SamplerDPMPP_SDE", - "SamplerEulerAncestral", - "SamplerEulerAncestralCFGPP", - "SamplerEulerCFGpp", - "SamplerLCMUpscale", - "SamplerLMS", - "SaveAnimatedPNG", - "SaveAnimatedWEBP", - "SaveAudio", - "SaveImage", - "SaveImageWebsocket", - "SaveLatent", - "SelfAttentionGuidance", - "SetLatentNoiseMask", - "SetUnionControlNetType", - "SkipLayerGuidanceDiT", - "SkipLayerGuidanceSD3", - "SolidMask", - "SplitImageWithAlpha", - "SplitSigmas", - "SplitSigmasDenoise", - "StableCascade_EmptyLatentImage", - "StableCascade_StageB_Conditioning", - "StableCascade_StageC_VAEEncode", - "StableCascade_SuperResolutionControlnet", - "StableZero123_Conditioning", - "StableZero123_Conditioning_Batched", - "StubConstantImage", - "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", - "TestIsChangedWithConstants", - "TestLazyMixImages", - "TestListToAccumulationNode", - "TestMakeListNode", - "TestMixedExpansionReturns", - "TestStringConditions", - "TestToBoolNode", - "TestVariadicAverage", - "TestWhileLoopClose", - "TestWhileLoopOpen", - "ThresholdMask", - "TomePatchModel", - "TorchCompileModel", - "TripleCLIPLoader", - "UNETLoader", - "UNetCrossAttentionMultiply", - "UNetSelfAttentionMultiply", - "UNetTemporalAttentionMultiply", - "UpscaleModelLoader", - "VAEDecode", - "VAEDecodeAudio", - "VAEDecodeTiled", - "VAEEncode", - "VAEEncodeAudio", - "VAEEncodeForInpaint", - "VAEEncodeTiled", - "VAELoader", - "VAESave", - "VPScheduler", - "VideoLinearCFGGuidance", - "VideoTriangleCFGGuidance", - "WebcamCapture", - "unCLIPCheckpointLoader", - "unCLIPConditioning" - ], - { - "title_aux": "ComfyUI" - } - ], - "https://github.com/dynamixar/Atluris": [ - [ - "RandomLine" - ], - { - "title_aux": "Atluris" - } - ], - "https://github.com/ecjojo/ecjojo-example-nodes": [ - [ - "BiggerNote_Example", - "DisplayTextNode_Example", - "EmptyNode_Example", - "ExampleNode_Example", - "FilePrefixNode_Example", - "HelloWorldNode_Example", - "RandomSizeNode_Example", - "StringNode_Example", - "TextOverlayNode_Example" - ], - { - "title_aux": "ecjojo_example_nodes" - } - ], - "https://github.com/et118/ComfyUI-ElGogh-Nodes": [ - [ - "ElGoghCLIPSetLastLayer", - "ElGoghCheckpointLoaderSimple", - "ElGoghEmptyLatentImage", - "ElGoghKSamplerAdvanced", - "ElGoghNegativePrompt", - "ElGoghPositivePrompt", - "ElGoghPrimaryLoraLoader", - "ElGoghSecondaryLoraLoader", - "ElGoghSendWebsocketNSFWBool", - "ElGoghTertiaryLoraLoader", - "ElGoghVAELoader" - ], - { - "title_aux": "ComfyUI-ElGogh-Nodes" - } - ], - "https://github.com/foxtrot-roger/comfyui-custom-nodes": [ - [ - "RF_Tutorial" - ], - { - "title_aux": "comfyui-custom-nodes" - } - ], - "https://github.com/jhj0517/ComfyUI-CustomNodes-Template": [ - [ - "(Down)Load My Model", - "Calculate Minus", - "Calculate Plus", - "Example Output Node" - ], - { - "title_aux": "ComfyUI-CustomNodes-Template" - } - ], - "https://github.com/jtong/comfyui-jtong-workflow": [ - [ - "Example", - "high_workflow_caller", - "jtong.Highend", - "jtong.Highway" - ], - { - "author": "Trung0246", - "description": "Random nodes for ComfyUI I made to solve my struggle with ComfyUI (ex: pipe, process). Have varying quality.", - "nickname": "ComfyUI-0246", - "title": "ComfyUI-0246", - "title_aux": "comfyui-jtong-workflow" - } - ], - "https://github.com/kappa54m/ComfyUI_Usability": [ - [ - "KLoadImageByPath", - "KLoadImageByPathAdvanced", - "KLoadImageDedup" - ], - { - "title_aux": "ComfyUI-HPSv2-Nodes" - } - ], - "https://github.com/mira-6/mira-wildcard-node": [ - [ - "MiraWildcard" - ], - { - "author": "mira-6", - "description": "Single-node wildcard implementation.", - "nickname": "mira-wildcard-node", - "title": "mira-wildcard-node", - "title_aux": "mira-wildcard-node" - } - ], - "https://github.com/sonyeon-sj/ComfyUI-easy_ImageSize_Selecter": [ - [ - "ImageSizer", - "promptSelecter" - ], - { - "title_aux": "ComfyUI-easy_ImageSize_Selecter" - } - ], - "https://github.com/thinkthinking/ComfyUI-Ye": [ - [ - "CheckpointLoader|Ye", - "OllamaVision|Ye", - "PrintHelloWorld|Ye", - "Signature|Ye" - ], - { - "title_aux": "ComfyUI-Ye" - } - ], - "https://github.com/wailovet/ComfyUI-WW": [ - [ - "WW_AccumulationPreviewImages", - "WW_AppendString", - "WW_CurrentPreviewImages", - "WW_ImageResize", - "WW_PreviewTextNode", - "WW_RandString" - ], - { - "title_aux": "ComfyUI-WW" - } - ], - "https://github.com/yowipr/ComfyUI-Manual": [ - [ - "EXAMPLE", - "M_Layer", - "M_Output", - "M_RenderArea" - ], - { - "title_aux": "ComfyUI-Manual" - } - ] -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/node_db/tutorial/model-list.json b/custom_nodes/comfyui-manager/node_db/tutorial/model-list.json deleted file mode 100644 index b78f1b7dd6069210f39544cfa1b8c02aec5093b3..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/tutorial/model-list.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "models": [] -} diff --git a/custom_nodes/comfyui-manager/node_db/tutorial/scan.sh b/custom_nodes/comfyui-manager/node_db/tutorial/scan.sh deleted file mode 100644 index 369241cc72e80040e3665cc13b217b21dabb819d..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/node_db/tutorial/scan.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -rm ~/.tmp/dev/*.py > /dev/null 2>&1 -python ../../scanner.py ~/.tmp/tutorial diff --git a/custom_nodes/comfyui-manager/notebooks/comfyui_colab_with_manager.ipynb b/custom_nodes/comfyui-manager/notebooks/comfyui_colab_with_manager.ipynb deleted file mode 100644 index ff916d53af324bdf8492212b4da74d86fa87b940..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/notebooks/comfyui_colab_with_manager.ipynb +++ /dev/null @@ -1,373 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "aaaaaaaaaa" - }, - "source": [ - "Git clone the repo and install the requirements. (ignore the pip errors about protobuf)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "bbbbbbbbbb" - }, - "outputs": [], - "source": [ - "# #@title Environment Setup\n", - "\n", - "from pathlib import Path\n", - "\n", - "OPTIONS = {}\n", - "\n", - "USE_GOOGLE_DRIVE = True #@param {type:\"boolean\"}\n", - "UPDATE_COMFY_UI = True #@param {type:\"boolean\"}\n", - "USE_COMFYUI_MANAGER = True #@param {type:\"boolean\"}\n", - "INSTALL_CUSTOM_NODES_DEPENDENCIES = True #@param {type:\"boolean\"}\n", - "OPTIONS['USE_GOOGLE_DRIVE'] = USE_GOOGLE_DRIVE\n", - "OPTIONS['UPDATE_COMFY_UI'] = UPDATE_COMFY_UI\n", - "OPTIONS['USE_COMFYUI_MANAGER'] = USE_COMFYUI_MANAGER\n", - "OPTIONS['INSTALL_CUSTOM_NODES_DEPENDENCIES'] = INSTALL_CUSTOM_NODES_DEPENDENCIES\n", - "\n", - "current_dir = !pwd\n", - "WORKSPACE = f\"{current_dir[0]}/ComfyUI\"\n", - "\n", - "if OPTIONS['USE_GOOGLE_DRIVE']:\n", - " !echo \"Mounting Google Drive...\"\n", - " %cd /\n", - "\n", - " from google.colab import drive\n", - " drive.mount('/content/drive')\n", - "\n", - " WORKSPACE = \"/content/drive/MyDrive/ComfyUI\"\n", - " %cd /content/drive/MyDrive\n", - "\n", - "![ ! -d $WORKSPACE ] && echo -= Initial setup ComfyUI =- && git clone https://github.com/comfyanonymous/ComfyUI\n", - "%cd $WORKSPACE\n", - "\n", - "if OPTIONS['UPDATE_COMFY_UI']:\n", - " !echo -= Updating ComfyUI =-\n", - "\n", - " # Correction of the issue of permissions being deleted on Google Drive.\n", - " ![ -f \".ci/nightly/update_windows/update_comfyui_and_python_dependencies.bat\" ] && chmod 755 .ci/nightly/update_windows/update_comfyui_and_python_dependencies.bat\n", - " ![ -f \".ci/nightly/windows_base_files/run_nvidia_gpu.bat\" ] && chmod 755 .ci/nightly/windows_base_files/run_nvidia_gpu.bat\n", - " ![ -f \".ci/update_windows/update_comfyui_and_python_dependencies.bat\" ] && chmod 755 .ci/update_windows/update_comfyui_and_python_dependencies.bat\n", - " ![ -f \".ci/update_windows_cu118/update_comfyui_and_python_dependencies.bat\" ] && chmod 755 .ci/update_windows_cu118/update_comfyui_and_python_dependencies.bat\n", - " ![ -f \".ci/update_windows/update.py\" ] && chmod 755 .ci/update_windows/update.py\n", - " ![ -f \".ci/update_windows/update_comfyui.bat\" ] && chmod 755 .ci/update_windows/update_comfyui.bat\n", - " ![ -f \".ci/update_windows/README_VERY_IMPORTANT.txt\" ] && chmod 755 .ci/update_windows/README_VERY_IMPORTANT.txt\n", - " ![ -f \".ci/update_windows/run_cpu.bat\" ] && chmod 755 .ci/update_windows/run_cpu.bat\n", - " ![ -f \".ci/update_windows/run_nvidia_gpu.bat\" ] && chmod 755 .ci/update_windows/run_nvidia_gpu.bat\n", - "\n", - " !git pull\n", - "\n", - "!echo -= Install dependencies =-\n", - "!pip3 install accelerate\n", - "!pip3 install einops transformers>=4.28.1 safetensors>=0.4.2 aiohttp pyyaml Pillow scipy tqdm psutil tokenizers>=0.13.3\n", - "!pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121\n", - "!pip3 install torchsde\n", - "!pip3 install kornia>=0.7.1 spandrel soundfile sentencepiece\n", - "\n", - "if OPTIONS['USE_COMFYUI_MANAGER']:\n", - " %cd custom_nodes\n", - "\n", - " # Correction of the issue of permissions being deleted on Google Drive.\n", - " ![ -f \"ComfyUI-Manager/check.sh\" ] && chmod 755 ComfyUI-Manager/check.sh\n", - " ![ -f \"ComfyUI-Manager/scan.sh\" ] && chmod 755 ComfyUI-Manager/scan.sh\n", - " ![ -f \"ComfyUI-Manager/node_db/dev/scan.sh\" ] && chmod 755 ComfyUI-Manager/node_db/dev/scan.sh\n", - " ![ -f \"ComfyUI-Manager/node_db/tutorial/scan.sh\" ] && chmod 755 ComfyUI-Manager/node_db/tutorial/scan.sh\n", - " ![ -f \"ComfyUI-Manager/scripts/install-comfyui-venv-linux.sh\" ] && chmod 755 ComfyUI-Manager/scripts/install-comfyui-venv-linux.sh\n", - " ![ -f \"ComfyUI-Manager/scripts/install-comfyui-venv-win.bat\" ] && chmod 755 ComfyUI-Manager/scripts/install-comfyui-venv-win.bat\n", - "\n", - " ![ ! -d ComfyUI-Manager ] && echo -= Initial setup ComfyUI-Manager =- && git clone https://github.com/ltdrdata/ComfyUI-Manager\n", - " %cd ComfyUI-Manager\n", - " !git pull\n", - "\n", - "%cd $WORKSPACE\n", - "\n", - "if OPTIONS['INSTALL_CUSTOM_NODES_DEPENDENCIES']:\n", - " !echo -= Install custom nodes dependencies =-\n", - " !pip install GitPython\n", - " !python custom_nodes/ComfyUI-Manager/cm-cli.py restore-dependencies\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "cccccccccc" - }, - "source": [ - "Download some models/checkpoints/vae or custom comfyui nodes (uncomment the commands for the ones you want)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "dddddddddd" - }, - "outputs": [], - "source": [ - "# Checkpoints\n", - "\n", - "### SDXL\n", - "### I recommend these workflow examples: https://comfyanonymous.github.io/ComfyUI_examples/sdxl/\n", - "\n", - "#!wget -c https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors -P ./models/checkpoints/\n", - "#!wget -c https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors -P ./models/checkpoints/\n", - "\n", - "# SDXL ReVision\n", - "#!wget -c https://huggingface.co/comfyanonymous/clip_vision_g/resolve/main/clip_vision_g.safetensors -P ./models/clip_vision/\n", - "\n", - "# SD1.5\n", - "!wget -c https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt -P ./models/checkpoints/\n", - "\n", - "# SD2\n", - "#!wget -c https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.safetensors -P ./models/checkpoints/\n", - "#!wget -c https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.safetensors -P ./models/checkpoints/\n", - "\n", - "# Some SD1.5 anime style\n", - "#!wget -c https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix2/AbyssOrangeMix2_hard.safetensors -P ./models/checkpoints/\n", - "#!wget -c https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A1_orangemixs.safetensors -P ./models/checkpoints/\n", - "#!wget -c https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A3_orangemixs.safetensors -P ./models/checkpoints/\n", - "#!wget -c https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/anything-v3-fp16-pruned.safetensors -P ./models/checkpoints/\n", - "\n", - "# Waifu Diffusion 1.5 (anime style SD2.x 768-v)\n", - "#!wget -c https://huggingface.co/waifu-diffusion/wd-1-5-beta3/resolve/main/wd-illusion-fp16.safetensors -P ./models/checkpoints/\n", - "\n", - "\n", - "# unCLIP models\n", - "#!wget -c https://huggingface.co/comfyanonymous/illuminatiDiffusionV1_v11_unCLIP/resolve/main/illuminatiDiffusionV1_v11-unclip-h-fp16.safetensors -P ./models/checkpoints/\n", - "#!wget -c https://huggingface.co/comfyanonymous/wd-1.5-beta2_unCLIP/resolve/main/wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors -P ./models/checkpoints/\n", - "\n", - "\n", - "# VAE\n", - "!wget -c https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -P ./models/vae/\n", - "#!wget -c https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt -P ./models/vae/\n", - "#!wget -c https://huggingface.co/hakurei/waifu-diffusion-v1-4/resolve/main/vae/kl-f8-anime2.ckpt -P ./models/vae/\n", - "\n", - "\n", - "# Loras\n", - "#!wget -c https://civitai.com/api/download/models/10350 -O ./models/loras/theovercomer8sContrastFix_sd21768.safetensors #theovercomer8sContrastFix SD2.x 768-v\n", - "#!wget -c https://civitai.com/api/download/models/10638 -O ./models/loras/theovercomer8sContrastFix_sd15.safetensors #theovercomer8sContrastFix SD1.x\n", - "#!wget -c https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_offset_example-lora_1.0.safetensors -P ./models/loras/ #SDXL offset noise lora\n", - "\n", - "\n", - "# T2I-Adapter\n", - "#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_depth_sd14v1.pth -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_seg_sd14v1.pth -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_sketch_sd14v1.pth -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_keypose_sd14v1.pth -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_openpose_sd14v1.pth -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_color_sd14v1.pth -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_canny_sd14v1.pth -P ./models/controlnet/\n", - "\n", - "# T2I Styles Model\n", - "#!wget -c https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_style_sd14v1.pth -P ./models/style_models/\n", - "\n", - "# CLIPVision model (needed for styles model)\n", - "#!wget -c https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/pytorch_model.bin -O ./models/clip_vision/clip_vit14.bin\n", - "\n", - "\n", - "# ControlNet\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_ip2p_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_shuffle_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_canny_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1p_sd15_depth_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_inpaint_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_lineart_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_mlsd_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_normalbae_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_openpose_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_scribble_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_seg_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_softedge_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15s2_lineart_anime_fp16.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11u_sd15_tile_fp16.safetensors -P ./models/controlnet/\n", - "\n", - "# ControlNet SDXL\n", - "#!wget -c https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-canny-rank256.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-depth-rank256.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-recolor-rank256.safetensors -P ./models/controlnet/\n", - "#!wget -c https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-sketch-rank256.safetensors -P ./models/controlnet/\n", - "\n", - "# Controlnet Preprocessor nodes by Fannovel16\n", - "#!cd custom_nodes && git clone https://github.com/Fannovel16/comfy_controlnet_preprocessors; cd comfy_controlnet_preprocessors && python install.py\n", - "\n", - "\n", - "# GLIGEN\n", - "#!wget -c https://huggingface.co/comfyanonymous/GLIGEN_pruned_safetensors/resolve/main/gligen_sd14_textbox_pruned_fp16.safetensors -P ./models/gligen/\n", - "\n", - "\n", - "# ESRGAN upscale model\n", - "#!wget -c https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -P ./models/upscale_models/\n", - "#!wget -c https://huggingface.co/sberbank-ai/Real-ESRGAN/resolve/main/RealESRGAN_x2.pth -P ./models/upscale_models/\n", - "#!wget -c https://huggingface.co/sberbank-ai/Real-ESRGAN/resolve/main/RealESRGAN_x4.pth -P ./models/upscale_models/\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kkkkkkkkkkkkkkk" - }, - "source": [ - "### Run ComfyUI with cloudflared (Recommended Way)\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "jjjjjjjjjjjjjj" - }, - "outputs": [], - "source": [ - "!wget -P ~ https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb\n", - "!dpkg -i ~/cloudflared-linux-amd64.deb\n", - "\n", - "import subprocess\n", - "import threading\n", - "import time\n", - "import socket\n", - "import urllib.request\n", - "\n", - "def iframe_thread(port):\n", - " while True:\n", - " time.sleep(0.5)\n", - " sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n", - " result = sock.connect_ex(('127.0.0.1', port))\n", - " if result == 0:\n", - " break\n", - " sock.close()\n", - " print(\"\\nComfyUI finished loading, trying to launch cloudflared (if it gets stuck here cloudflared is having issues)\\n\")\n", - "\n", - " p = subprocess.Popen([\"cloudflared\", \"tunnel\", \"--url\", \"http://127.0.0.1:{}\".format(port)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n", - " for line in p.stderr:\n", - " l = line.decode()\n", - " if \"trycloudflare.com \" in l:\n", - " print(\"This is the URL to access ComfyUI:\", l[l.find(\"http\"):], end='')\n", - " #print(l, end='')\n", - "\n", - "\n", - "threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()\n", - "\n", - "!python main.py --dont-print-server" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kkkkkkkkkkkkkk" - }, - "source": [ - "### Run ComfyUI with localtunnel\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "jjjjjjjjjjjjj" - }, - "outputs": [], - "source": [ - "!npm install -g localtunnel\n", - "\n", - "import subprocess\n", - "import threading\n", - "import time\n", - "import socket\n", - "import urllib.request\n", - "\n", - "def iframe_thread(port):\n", - " while True:\n", - " time.sleep(0.5)\n", - " sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n", - " result = sock.connect_ex(('127.0.0.1', port))\n", - " if result == 0:\n", - " break\n", - " sock.close()\n", - " print(\"\\nComfyUI finished loading, trying to launch localtunnel (if it gets stuck here localtunnel is having issues)\\n\")\n", - "\n", - " print(\"The password/enpoint ip for localtunnel is:\", urllib.request.urlopen('https://ipv4.icanhazip.com').read().decode('utf8').strip(\"\\n\"))\n", - " p = subprocess.Popen([\"lt\", \"--port\", \"{}\".format(port)], stdout=subprocess.PIPE)\n", - " for line in p.stdout:\n", - " print(line.decode(), end='')\n", - "\n", - "\n", - "threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()\n", - "\n", - "!python main.py --dont-print-server" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "gggggggggg" - }, - "source": [ - "### Run ComfyUI with colab iframe (use only in case the previous way with localtunnel doesn't work)\n", - "\n", - "You should see the ui appear in an iframe. If you get a 403 error, it's your firefox settings or an extension that's messing things up.\n", - "\n", - "If you want to open it in another window use the link.\n", - "\n", - "Note that some UI features like live image previews won't work because the colab iframe blocks websockets." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "hhhhhhhhhh" - }, - "outputs": [], - "source": [ - "import threading\n", - "import time\n", - "import socket\n", - "def iframe_thread(port):\n", - " while True:\n", - " time.sleep(0.5)\n", - " sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n", - " result = sock.connect_ex(('127.0.0.1', port))\n", - " if result == 0:\n", - " break\n", - " sock.close()\n", - " from google.colab import output\n", - " output.serve_kernel_port_as_iframe(port, height=1024)\n", - " print(\"to open it in a window you can open this link here:\")\n", - " output.serve_kernel_port_as_window(port)\n", - "\n", - "threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()\n", - "\n", - "!python main.py --dont-print-server" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "provenance": [] - }, - "gpuClass": "standard", - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/custom_nodes/comfyui-manager/pip_overrides.json.template b/custom_nodes/comfyui-manager/pip_overrides.json.template deleted file mode 100644 index 2570f5ebca779d5d7d621c8abbeecdc0d521d0ae..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/pip_overrides.json.template +++ /dev/null @@ -1,21 +0,0 @@ -{ - "imageio-ffmpeg": "imageio", - "imageio[ffmpeg]": "imageio", - "imageio_ffmpeg": "imageio", - "diffusers~=0.21.4": "diffusers", - "huggingface_hub": "huggingface-hub", - "numpy<1.24>=1.18": "numpy==1.26.4", - "numpy>=1.18.5, <1.25.0": "numpy==1.26.4", - "opencv-contrib-python": "opencv-contrib-python-headless", - "opencv-python": "opencv-contrib-python-headless", - "opencv-python-headless": "opencv-contrib-python-headless", - "opencv-python-headless[ffmpeg]<=4.7.0.72": "opencv-contrib-python-headless", - "opencv-python>=4.7.0.72": "opencv-contrib-python-headless", - "pandas<=1.5.1": "pandas", - "scikit-image==0.20.0": "scikit-image", - "scipy>=1.11.4": "scipy", - "segment_anything": "segment-anything", - "timm==0.6.5": "timm", - "timm>=0.4.12": "timm", - "transformers==4.26.1": "transformers" -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/pip_overrides.osx.template b/custom_nodes/comfyui-manager/pip_overrides.osx.template deleted file mode 100644 index 2570f5ebca779d5d7d621c8abbeecdc0d521d0ae..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/pip_overrides.osx.template +++ /dev/null @@ -1,21 +0,0 @@ -{ - "imageio-ffmpeg": "imageio", - "imageio[ffmpeg]": "imageio", - "imageio_ffmpeg": "imageio", - "diffusers~=0.21.4": "diffusers", - "huggingface_hub": "huggingface-hub", - "numpy<1.24>=1.18": "numpy==1.26.4", - "numpy>=1.18.5, <1.25.0": "numpy==1.26.4", - "opencv-contrib-python": "opencv-contrib-python-headless", - "opencv-python": "opencv-contrib-python-headless", - "opencv-python-headless": "opencv-contrib-python-headless", - "opencv-python-headless[ffmpeg]<=4.7.0.72": "opencv-contrib-python-headless", - "opencv-python>=4.7.0.72": "opencv-contrib-python-headless", - "pandas<=1.5.1": "pandas", - "scikit-image==0.20.0": "scikit-image", - "scipy>=1.11.4": "scipy", - "segment_anything": "segment-anything", - "timm==0.6.5": "timm", - "timm>=0.4.12": "timm", - "transformers==4.26.1": "transformers" -} \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/prestartup_script.py b/custom_nodes/comfyui-manager/prestartup_script.py deleted file mode 100644 index e155dffa16fecbd34c2a3a7dd8470654e997f406..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/prestartup_script.py +++ /dev/null @@ -1,764 +0,0 @@ -import os -import subprocess -import sys -import atexit -import threading -import re -import locale -import platform -import json -import ast -import logging -import traceback - -glob_path = os.path.join(os.path.dirname(__file__), "glob") -sys.path.append(glob_path) - -import security_check -import manager_util -import cm_global -import manager_downloader -import folder_paths - -try: - from datetime import datetime - def current_timestamp(): - return datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] -except: - import time - import datetime - logging.error(f"[ComfyUI-Manager] fallback timestamp mode\n datetime module is invalid: '{datetime.__file__}'") - def current_timestamp(): - return str(time.time()).split('.')[0] - -security_check.security_check() - -cm_global.pip_blacklist = ['torch', 'torchsde', 'torchvision'] -cm_global.pip_downgrade_blacklist = ['torch', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia'] - - -def skip_pip_spam(x): - return ('Requirement already satisfied:' in x) or ("DEPRECATION: Loading egg at" in x) - - -message_collapses = [skip_pip_spam] -import_failed_extensions = set() -cm_global.variables['cm.on_revision_detected_handler'] = [] -enable_file_logging = True - - -def register_message_collapse(f): - global message_collapses - message_collapses.append(f) - - -def is_import_failed_extension(name): - global import_failed_extensions - return name in import_failed_extensions - - -def check_file_logging(): - global enable_file_logging - try: - import configparser - config = configparser.ConfigParser() - config.read(manager_config_path) - default_conf = config['default'] - - if 'file_logging' in default_conf and default_conf['file_logging'].lower() == 'false': - enable_file_logging = False - except Exception: - pass - - -check_file_logging() - -comfy_path = os.environ.get('COMFYUI_PATH') -comfy_base_path = os.environ.get('COMFYUI_FOLDERS_BASE_PATH') - -if comfy_path is None: - # legacy env var - comfy_path = os.environ.get('COMFYUI_PATH') - -if comfy_path is None: - comfy_path = os.path.abspath(os.path.dirname(sys.modules['__main__'].__file__)) - -if comfy_base_path is None: - comfy_base_path = comfy_path - -sys.__comfyui_manager_register_message_collapse = register_message_collapse -sys.__comfyui_manager_is_import_failed_extension = is_import_failed_extension -cm_global.register_api('cm.register_message_collapse', register_message_collapse) -cm_global.register_api('cm.is_import_failed_extension', is_import_failed_extension) - - -comfyui_manager_path = os.path.abspath(os.path.dirname(__file__)) - -custom_nodes_base_path = folder_paths.get_folder_paths('custom_nodes')[0] -manager_files_path = os.path.abspath(os.path.join(folder_paths.get_user_directory(), 'default', 'ComfyUI-Manager')) -manager_pip_overrides_path = os.path.join(manager_files_path, "pip_overrides.json") -restore_snapshot_path = os.path.join(manager_files_path, "startup-scripts", "restore-snapshot.json") -manager_config_path = os.path.join(manager_files_path, 'config.ini') - -cm_cli_path = os.path.join(comfyui_manager_path, "cm-cli.py") - - -cm_global.pip_overrides = {'numpy': 'numpy<2', 'ultralytics': 'ultralytics==8.3.40'} -if os.path.exists(manager_pip_overrides_path): - with open(manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as json_file: - cm_global.pip_overrides = json.load(json_file) - cm_global.pip_overrides['numpy'] = 'numpy<2' - cm_global.pip_overrides['ultralytics'] = 'ultralytics==8.3.40' # for security - - -def remap_pip_package(pkg): - if pkg in cm_global.pip_overrides: - res = cm_global.pip_overrides[pkg] - print(f"[ComfyUI-Manager] '{pkg}' is remapped to '{res}'") - return res - else: - return pkg - - -std_log_lock = threading.Lock() - - -def handle_stream(stream, prefix): - stream.reconfigure(encoding=locale.getpreferredencoding(), errors='replace') - for msg in stream: - if prefix == '[!]' and ('it/s]' in msg or 's/it]' in msg) and ('%|' in msg or 'it [' in msg): - if msg.startswith('100%'): - print('\r' + msg, end="", file=sys.stderr), - else: - print('\r' + msg[:-1], end="", file=sys.stderr), - else: - if prefix == '[!]': - print(prefix, msg, end="", file=sys.stderr) - else: - print(prefix, msg, end="") - - -def process_wrap(cmd_str, cwd_path, handler=None, env=None): - process = subprocess.Popen(cmd_str, cwd=cwd_path, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, bufsize=1) - - if handler is None: - handler = handle_stream - - stdout_thread = threading.Thread(target=handler, args=(process.stdout, "")) - stderr_thread = threading.Thread(target=handler, args=(process.stderr, "[!]")) - - stdout_thread.start() - stderr_thread.start() - - stdout_thread.join() - stderr_thread.join() - - return process.wait() - - -original_stdout = sys.stdout - - -def try_get_custom_nodes(x): - for custom_nodes_dir in folder_paths.get_folder_paths('custom_nodes'): - if x.startswith(custom_nodes_dir): - relative_path = os.path.relpath(x, custom_nodes_dir) - next_segment = relative_path.split(os.sep)[0] - if next_segment.lower() != 'comfyui-manager': - return next_segment, os.path.join(custom_nodes_dir, next_segment) - return None - - -def extract_origin_module(): - stack = traceback.extract_stack()[:-2] - for frame in reversed(stack): - info = try_get_custom_nodes(frame.filename) - if info is None: - continue - else: - return info - return None - -def extract_origin_module_from_strings(file_paths): - for filepath in file_paths: - info = try_get_custom_nodes(filepath) - if info is None: - continue - else: - return info - return None - - -def finalize_startup(): - res = {} - for k, v in cm_global.error_dict.items(): - if v['path'] in import_failed_extensions: - res[k] = v - - cm_global.error_dict = res - - -try: - if '--port' in sys.argv: - port_index = sys.argv.index('--port') - if port_index + 1 < len(sys.argv): - port = int(sys.argv[port_index + 1]) - postfix = f"_{port}" - else: - postfix = "" - else: - postfix = "" - - # Logger setup - log_path_base = None - if enable_file_logging: - log_path_base = os.path.join(folder_paths.user_directory, 'comfyui') - - if os.path.exists(f"{log_path_base}{postfix}.log"): - if os.path.exists(f"{log_path_base}{postfix}.prev.log"): - if os.path.exists(f"{log_path_base}{postfix}.prev2.log"): - os.remove(f"{log_path_base}{postfix}.prev2.log") - os.rename(f"{log_path_base}{postfix}.prev.log", f"{log_path_base}{postfix}.prev2.log") - os.rename(f"{log_path_base}{postfix}.log", f"{log_path_base}{postfix}.prev.log") - - log_file = open(f"{log_path_base}{postfix}.log", "w", encoding="utf-8", errors="ignore") - - log_lock = threading.Lock() - - original_stdout = sys.stdout - original_stderr = sys.stderr - - if original_stdout.encoding.lower() == 'utf-8': - write_stdout = original_stdout.write - write_stderr = original_stderr.write - else: - def wrapper_stdout(msg): - original_stdout.write(msg.encode('utf-8').decode(original_stdout.encoding, errors="ignore")) - - def wrapper_stderr(msg): - original_stderr.write(msg.encode('utf-8').decode(original_stderr.encoding, errors="ignore")) - - write_stdout = wrapper_stdout - write_stderr = wrapper_stderr - - pat_tqdm = r'\d+%.*\[(.*?)\]' - pat_import_fail = r'seconds \(IMPORT FAILED\):(.*)$' - - is_start_mode = True - - - class ComfyUIManagerLogger: - def __init__(self, is_stdout): - self.is_stdout = is_stdout - self.encoding = "utf-8" - self.last_char = '' - - def fileno(self): - try: - if self.is_stdout: - return original_stdout.fileno() - else: - return original_stderr.fileno() - except AttributeError: - # Handle error - raise ValueError("The object does not have a fileno method") - - def isatty(self): - return False - - def write(self, message): - global is_start_mode - - if any(f(message) for f in message_collapses): - return - - if is_start_mode: - match = re.search(pat_import_fail, message) - if match: - import_failed_extensions.add(match.group(1).strip()) - - if not self.is_stdout: - origin_info = extract_origin_module() - if origin_info is not None: - name, origin_path = origin_info - - if name != 'comfyui-manager': - if name not in cm_global.error_dict: - cm_global.error_dict[name] = {'name': name, 'path': origin_path, 'msg': ''} - - cm_global.error_dict[name]['msg'] += message - - if not self.is_stdout: - match = re.search(pat_tqdm, message) - if match: - message = re.sub(r'([#|])\d', r'\1▌', message) - message = re.sub('#', '█', message) - if '100%' in message: - self.sync_write(message) - else: - write_stderr(message) - original_stderr.flush() - else: - self.sync_write(message) - else: - self.sync_write(message) - - def sync_write(self, message, file_only=False): - with log_lock: - timestamp = current_timestamp() - if self.last_char != '\n': - log_file.write(message) - else: - log_file.write(f"[{timestamp}] {message}") - log_file.flush() - self.last_char = message if message == '' else message[-1] - - if not file_only: - with std_log_lock: - if self.is_stdout: - write_stdout(message) - original_stdout.flush() - else: - write_stderr(message) - original_stderr.flush() - - def flush(self): - log_file.flush() - - with std_log_lock: - if self.is_stdout: - original_stdout.flush() - else: - original_stderr.flush() - - def close(self): - self.flush() - - def reconfigure(self, *args, **kwargs): - pass - - # You can close through sys.stderr.close_log() - def close_log(self): - sys.stderr = original_stderr - sys.stdout = original_stdout - log_file.close() - - def close_log(): - sys.stderr = original_stderr - sys.stdout = original_stdout - log_file.close() - - - if enable_file_logging: - sys.stdout = ComfyUIManagerLogger(True) - stderr_wrapper = ComfyUIManagerLogger(False) - sys.stderr = stderr_wrapper - - atexit.register(close_log) - else: - sys.stdout.close_log = lambda: None - stderr_wrapper = None - - - class LoggingHandler(logging.Handler): - def emit(self, record): - global is_start_mode - - message = record.getMessage() - - if is_start_mode: - match = re.search(pat_import_fail, message) - if match: - import_failed_extensions.add(match.group(1).strip()) - - if 'Traceback' in message: - file_lists = self._extract_file_paths(message) - origin_info = extract_origin_module_from_strings(file_lists) - if origin_info is not None: - name, origin_path = origin_info - - if name != 'comfyui-manager': - if name not in cm_global.error_dict: - cm_global.error_dict[name] = {'name': name, 'path': origin_path, 'msg': ''} - - cm_global.error_dict[name]['msg'] += message - - if 'Starting server' in message: - is_start_mode = False - finalize_startup() - - if stderr_wrapper: - stderr_wrapper.sync_write(message+'\n', file_only=True) - - def _extract_file_paths(self, msg): - file_paths = [] - for line in msg.split('\n'): - match = re.findall(r'File \"(.*?)\", line \d+', line) - for x in match: - if not x.startswith('<'): - file_paths.extend(match) - return file_paths - - - logging.getLogger().addHandler(LoggingHandler()) - - -except Exception as e: - print(f"[ComfyUI-Manager] Logging failed: {e}") - - -try: - import git # noqa: F401 - import toml # noqa: F401 -except ModuleNotFoundError: - my_path = os.path.dirname(__file__) - requirements_path = os.path.join(my_path, "requirements.txt") - - print("## ComfyUI-Manager: installing dependencies. (GitPython)") - try: - result = subprocess.check_output([sys.executable, '-s', '-m', 'pip', 'install', '-r', requirements_path]) - except subprocess.CalledProcessError: - print("## [ERROR] ComfyUI-Manager: Attempting to reinstall dependencies using an alternative method.") - try: - result = subprocess.check_output([sys.executable, '-s', '-m', 'pip', 'install', '--user', '-r', requirements_path]) - except subprocess.CalledProcessError: - print("## [ERROR] ComfyUI-Manager: Failed to install the GitPython package in the correct Python environment. Please install it manually in the appropriate environment. (You can seek help at https://app.element.io/#/room/%23comfyui_space%3Amatrix.org)") - -try: - print("## ComfyUI-Manager: installing dependencies done.") -except: - # maybe we should sys.exit() here? there is at least two screens worth of error messages still being pumped after our error messages - print("## [ERROR] ComfyUI-Manager: GitPython package seems to be installed, but failed to load somehow. Make sure you have a working git client installed") - - -print("** ComfyUI startup time:", current_timestamp()) -print("** Platform:", platform.system()) -print("** Python version:", sys.version) -print("** Python executable:", sys.executable) -print("** ComfyUI Path:", comfy_path) -print("** ComfyUI Base Folder Path:", comfy_base_path) -print("** User directory:", folder_paths.user_directory) -print("** ComfyUI-Manager config path:", manager_config_path) - - -if log_path_base is not None: - print("** Log path:", os.path.abspath(f'{log_path_base}.log')) -else: - print("** Log path: file logging is disabled") - - -def read_downgrade_blacklist(): - try: - import configparser - config = configparser.ConfigParser() - config.read(manager_config_path) - default_conf = config['default'] - - if 'downgrade_blacklist' in default_conf: - items = default_conf['downgrade_blacklist'].split(',') - items = [x.strip() for x in items if x != ''] - cm_global.pip_downgrade_blacklist += items - cm_global.pip_downgrade_blacklist = list(set(cm_global.pip_downgrade_blacklist)) - except: - pass - - -read_downgrade_blacklist() - - -def check_bypass_ssl(): - try: - import configparser - import ssl - config = configparser.ConfigParser() - config.read(manager_config_path) - default_conf = config['default'] - - if 'bypass_ssl' in default_conf and default_conf['bypass_ssl'].lower() == 'true': - print(f"[ComfyUI-Manager] WARN: Unsafe - SSL verification bypass option is Enabled. (see {manager_config_path})") - ssl._create_default_https_context = ssl._create_unverified_context # SSL certificate error fix. - except Exception: - pass - - -check_bypass_ssl() - - -# Perform install -processed_install = set() -script_list_path = os.path.join(folder_paths.user_directory, "default", "ComfyUI-Manager", "startup-scripts", "install-scripts.txt") -pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages()) - - -def is_installed(name): - name = name.strip() - - if name.startswith('#'): - return True - - pattern = r'([^<>!~=]+)([<>!~=]=?)([0-9.a-zA-Z]*)' - match = re.search(pattern, 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 = manager_util.get_installed_packages() - - if match is None: - if name in pips: - return True - elif match.group(2) in ['<=', '==', '<', '~=']: - if name in pips: - if manager_util.StrictVersion(pips[name]) >= manager_util.StrictVersion(match.group(3)): - print(f"[ComfyUI-Manager] skip black listed pip installation: '{name}'") - return True - - pkg = manager_util.get_installed_packages().get(name.lower()) - if pkg is None: - return False # update if not installed - - if match is None: - return True # don't update if version is not specified - - if match.group(2) in ['>', '>=']: - if manager_util.StrictVersion(pkg) < manager_util.StrictVersion(match.group(3)): - return False - elif manager_util.StrictVersion(pkg) > manager_util.StrictVersion(match.group(3)): - print(f"[SKIP] Downgrading pip package isn't allowed: {name.lower()} (cur={pkg})") - - if match.group(2) == '==': - if manager_util.StrictVersion(pkg) < manager_util.StrictVersion(match.group(3)): - return False - - if match.group(2) == '~=': - if manager_util.StrictVersion(pkg) == manager_util.StrictVersion(match.group(3)): - return False - - return True # prevent downgrade - - -if os.path.exists(restore_snapshot_path): - try: - cloned_repos = [] - - def msg_capture(stream, prefix): - stream.reconfigure(encoding=locale.getpreferredencoding(), errors='replace') - for msg in stream: - if msg.startswith("CLONE: "): - cloned_repos.append(msg[7:]) - if prefix == '[!]': - print(prefix, msg, end="", file=sys.stderr) - else: - print(prefix, msg, end="") - - elif prefix == '[!]' and ('it/s]' in msg or 's/it]' in msg) and ('%|' in msg or 'it [' in msg): - if msg.startswith('100%'): - print('\r' + msg, end="", file=sys.stderr), - else: - print('\r'+msg[:-1], end="", file=sys.stderr), - else: - if prefix == '[!]': - print(prefix, msg, end="", file=sys.stderr) - else: - print(prefix, msg, end="") - - print("[ComfyUI-Manager] Restore snapshot.") - new_env = os.environ.copy() - if 'COMFYUI_FOLDERS_BASE_PATH' not in new_env: - new_env["COMFYUI_FOLDERS_BASE_PATH"] = comfy_path - - cmd_str = [sys.executable, cm_cli_path, 'restore-snapshot', restore_snapshot_path] - exit_code = process_wrap(cmd_str, custom_nodes_base_path, handler=msg_capture, env=new_env) - - if exit_code != 0: - print("[ComfyUI-Manager] Restore snapshot failed.") - else: - print("[ComfyUI-Manager] Restore snapshot done.") - - except Exception as e: - print(e) - print("[ComfyUI-Manager] Restore snapshot failed.") - - os.remove(restore_snapshot_path) - - -def execute_lazy_install_script(repo_path, executable): - global processed_install - - install_script_path = os.path.join(repo_path, "install.py") - requirements_path = os.path.join(repo_path, "requirements.txt") - - if os.path.exists(requirements_path): - print(f"Install: pip packages for '{repo_path}'") - with open(requirements_path, "r") as requirements_file: - for line in requirements_file: - package_name = remap_pip_package(line.strip()) - if package_name and not is_installed(package_name): - if '--index-url' in package_name: - s = package_name.split('--index-url') - install_cmd = [sys.executable, "-m", "pip", "install", s[0].strip(), '--index-url', s[1].strip()] - else: - install_cmd = [sys.executable, "-m", "pip", "install", package_name] - - process_wrap(install_cmd, repo_path) - - if os.path.exists(install_script_path) and f'{repo_path}/install.py' not in processed_install: - processed_install.add(f'{repo_path}/install.py') - print(f"Install: install script for '{repo_path}'") - install_cmd = [executable, "install.py"] - - new_env = os.environ.copy() - if 'COMFYUI_FOLDERS_BASE_PATH' not in new_env: - new_env["COMFYUI_FOLDERS_BASE_PATH"] = comfy_path - process_wrap(install_cmd, repo_path, env=new_env) - - -def execute_lazy_cnr_switch(target, zip_url, from_path, to_path, no_deps, custom_nodes_path): - import uuid - import shutil - - # 1. download - archive_name = f"CNR_temp_{str(uuid.uuid4())}.zip" # should be unpredictable name - security precaution - download_path = os.path.join(custom_nodes_path, archive_name) - manager_downloader.download_url(zip_url, custom_nodes_path, archive_name) - - # 2. extract files into @ - extracted = manager_util.extract_package_as_zip(download_path, from_path) - os.remove(download_path) - - if extracted is None: - if len(os.listdir(from_path)) == 0: - shutil.rmtree(from_path) - - print(f'Empty archive file: {target}') - return False - - - # 3. calculate garbage files (.tracking - extracted) - tracking_info_file = os.path.join(from_path, '.tracking') - prev_files = set() - with open(tracking_info_file, 'r') as f: - for line in f: - prev_files.add(line.strip()) - garbage = prev_files.difference(extracted) - garbage = [os.path.join(custom_nodes_path, x) for x in garbage] - - # 4-1. remove garbage files - for x in garbage: - if os.path.isfile(x): - os.remove(x) - - # 4-2. remove garbage dir if empty - for x in garbage: - if os.path.isdir(x): - if not os.listdir(x): - os.rmdir(x) - - # 5. rename dir name @ ==> @ - print(f"'{from_path}' is moved to '{to_path}'") - shutil.move(from_path, to_path) - - # 6. create .tracking file - tracking_info_file = os.path.join(to_path, '.tracking') - with open(tracking_info_file, "w", encoding='utf-8') as file: - file.write('\n'.join(list(extracted))) - - -def execute_migration(moves): - import shutil - for x in moves: - if os.path.exists(x[0]) and not os.path.exists(x[1]): - shutil.move(x[0], x[1]) - print(f"[ComfyUI-Manager] MIGRATION: '{x[0]}' -> '{x[1]}'") - - -# Check if script_list_path exists -if os.path.exists(script_list_path): - print("\n#######################################################################") - print("[ComfyUI-Manager] Starting dependency installation/(de)activation for the extension\n") - - executed = set() - # Read each line from the file and convert it to a list using eval - with open(script_list_path, 'r', encoding="UTF-8", errors="ignore") as file: - for line in file: - if line in executed: - continue - - executed.add(line) - - try: - script = ast.literal_eval(line) - - if script[1].startswith('#') and script[1] != '#FORCE': - if script[1] == "#LAZY-INSTALL-SCRIPT": - execute_lazy_install_script(script[0], script[2]) - - elif script[1] == "#LAZY-CNR-SWITCH-SCRIPT": - execute_lazy_cnr_switch(script[0], script[2], script[3], script[4], script[5], script[6]) - execute_lazy_install_script(script[3], script[7]) - - elif script[1] == "#LAZY-MIGRATION": - execute_migration(script[2]) - - elif os.path.exists(script[0]): - if script[1] == "#FORCE": - del script[1] - else: - if 'pip' in script[1:] and 'install' in script[1:] and is_installed(script[-1]): - continue - - print(f"\n## ComfyUI-Manager: EXECUTE => {script[1:]}") - print(f"\n## Execute install/(de)activation script for '{script[0]}'") - - new_env = os.environ.copy() - if 'COMFYUI_FOLDERS_BASE_PATH' not in new_env: - new_env["COMFYUI_FOLDERS_BASE_PATH"] = comfy_path - exit_code = process_wrap(script[1:], script[0], env=new_env) - - if exit_code != 0: - print(f"install/(de)activation script failed: {script[0]}") - else: - print(f"\n## ComfyUI-Manager: CANCELED => {script[1:]}") - - except Exception as e: - print(f"[ERROR] Failed to execute install/(de)activation script: {line} / {e}") - - # Remove the script_list_path file - if os.path.exists(script_list_path): - os.remove(script_list_path) - - print("\n[ComfyUI-Manager] Startup script completed.") - print("#######################################################################\n") - -pip_fixer.fix_broken() - -del processed_install -del pip_fixer -manager_util.clear_pip_cache() - - -def check_windows_event_loop_policy(): - try: - import configparser - config = configparser.ConfigParser() - config.read(manager_config_path) - default_conf = config['default'] - - if 'windows_selector_event_loop_policy' in default_conf and default_conf['windows_selector_event_loop_policy'].lower() == 'true': - try: - import asyncio - import asyncio.windows_events - asyncio.set_event_loop_policy(asyncio.windows_events.WindowsSelectorEventLoopPolicy()) - print("[ComfyUI-Manager] Windows event loop policy mode enabled") - except Exception as e: - print(f"[ComfyUI-Manager] WARN: Windows initialization fail: {e}") - except Exception: - pass - - -if platform.system() == 'Windows': - check_windows_event_loop_policy() diff --git a/custom_nodes/comfyui-manager/pyproject.toml b/custom_nodes/comfyui-manager/pyproject.toml deleted file mode 100644 index 06b75a0fa1c98d4f3468a967b90f3a89cacd1631..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/pyproject.toml +++ /dev/null @@ -1,15 +0,0 @@ -[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 = "3.9.4" -license = { file = "LICENSE.txt" } -dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"] - -[project.urls] -Repository = "https://github.com/ltdrdata/ComfyUI-Manager" -# Used by Comfy Registry https://comfyregistry.org - -[tool.comfy] -PublisherId = "drltdata" -DisplayName = "ComfyUI-Manager" -Icon = "" diff --git a/custom_nodes/comfyui-manager/requirements.txt b/custom_nodes/comfyui-manager/requirements.txt deleted file mode 100644 index a84204d9d8267210d30a9afbc2a6c4ae77368c47..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/requirements.txt +++ /dev/null @@ -1,9 +0,0 @@ -GitPython -PyGithub -matrix-client==0.4.0 -transformers -huggingface-hub>0.20 -typer -rich -typing-extensions -toml \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/ruff.toml b/custom_nodes/comfyui-manager/ruff.toml deleted file mode 100644 index b76e55ac2f5029c8d54c7595e4748c379b8ac1b0..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/ruff.toml +++ /dev/null @@ -1,12 +0,0 @@ -# Disable all rules by default -lint.ignore = ["ALL"] - -# Enable specific rules -lint.select = [ - "S307", # suspicious-eval-usage - # The "F" series in Ruff stands for "Pyflakes" rules, which catch various Python syntax errors and undefined names. - # See all rules here: https://docs.astral.sh/ruff/rules/#pyflakes-f - "F", -] - -exclude = ["*.ipynb"] diff --git a/custom_nodes/comfyui-manager/scan.sh b/custom_nodes/comfyui-manager/scan.sh deleted file mode 100644 index 36f157a52cdf93a831e66a4bd8706c6561ce7c05..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/scan.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -rm ~/.tmp/default/*.py > /dev/null 2>&1 -python scanner.py ~/.tmp/default $* -cp extension-node-map.json node_db/new/. - -echo "Integrity check" -if [ -f "check2.sh" ]; then - ./check2.sh -else - ./check.sh -fi \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/scanner.py b/custom_nodes/comfyui-manager/scanner.py deleted file mode 100644 index 73d1d473b35c34139e1bbe6477b2099cfefd5ff1..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/scanner.py +++ /dev/null @@ -1,531 +0,0 @@ -import ast -import re -import os -import json -from git import Repo -import concurrent -import datetime -import concurrent.futures -import requests - -builtin_nodes = set() - -import sys - -from urllib.parse import urlparse -from github import Github - - -def download_url(url, dest_folder, filename=None): - # Ensure the destination folder exists - if not os.path.exists(dest_folder): - os.makedirs(dest_folder) - - # Extract filename from URL if not provided - if filename is None: - filename = os.path.basename(url) - - # Full path to save the file - dest_path = os.path.join(dest_folder, filename) - - # Download the file - response = requests.get(url, stream=True) - if response.status_code == 200: - with open(dest_path, 'wb') as file: - for chunk in response.iter_content(chunk_size=1024): - if chunk: - file.write(chunk) - else: - raise Exception(f"Failed to download file from {url}") - - -# prepare temp dir -if len(sys.argv) > 1: - temp_dir = sys.argv[1] -else: - temp_dir = os.path.join(os.getcwd(), ".tmp") - -if not os.path.exists(temp_dir): - os.makedirs(temp_dir) - - -skip_update = '--skip-update' in sys.argv or '--skip-all' in sys.argv -skip_stat_update = '--skip-stat-update' in sys.argv or '--skip-all' in sys.argv - -if not skip_stat_update: - g = Github(os.environ.get('GITHUB_TOKEN')) -else: - g = None - - -print(f"TEMP DIR: {temp_dir}") - - -parse_cnt = 0 - - -def extract_nodes(code_text): - global parse_cnt - - try: - if parse_cnt % 100 == 0: - print(".", end="", flush=True) - parse_cnt += 1 - - code_text = re.sub(r'\\[^"\']', '', code_text) - parsed_code = ast.parse(code_text) - - assignments = (node for node in parsed_code.body if isinstance(node, ast.Assign)) - - for assignment in assignments: - if isinstance(assignment.targets[0], ast.Name) and assignment.targets[0].id in ['NODE_CONFIG', 'NODE_CLASS_MAPPINGS']: - node_class_mappings = assignment.value - break - else: - node_class_mappings = None - - if node_class_mappings: - s = set() - - for key in node_class_mappings.keys: - if key is not None and isinstance(key.value, str): - s.add(key.value.strip()) - - return s - else: - return set() - except: - return set() - - -# scan -def scan_in_file(filename, is_builtin=False): - global builtin_nodes - - try: - with open(filename, encoding='utf-8') as file: - code = file.read() - except UnicodeDecodeError: - with open(filename, encoding='cp949') as file: - code = file.read() - - pattern = r"_CLASS_MAPPINGS\s*=\s*{([^}]*)}" - regex = re.compile(pattern, re.MULTILINE | re.DOTALL) - - nodes = set() - class_dict = {} - - nodes |= extract_nodes(code) - code = re.sub(r'^#.*?$', '', code, flags=re.MULTILINE) - - def extract_keys(pattern, code): - keys = re.findall(pattern, code) - return {key.strip() for key in keys} - - def update_nodes(nodes, new_keys): - nodes |= new_keys - - patterns = [ - r'^[^=]*_CLASS_MAPPINGS\["(.*?)"\]', - r'^[^=]*_CLASS_MAPPINGS\[\'(.*?)\'\]', - r'@register_node\("(.+)",\s*\".+"\)', - r'"(\w+)"\s*:\s*{"class":\s*\w+\s*' - ] - - with concurrent.futures.ThreadPoolExecutor() as executor: - futures = {executor.submit(extract_keys, pattern, code): pattern for pattern in patterns} - for future in concurrent.futures.as_completed(futures): - update_nodes(nodes, future.result()) - - matches = regex.findall(code) - for match in matches: - dict_text = match - - key_value_pairs = re.findall(r"\"([^\"]*)\"\s*:\s*([^,\n]*)", dict_text) - for key, value in key_value_pairs: - class_dict[key.strip()] = value.strip() - - key_value_pairs = re.findall(r"'([^']*)'\s*:\s*([^,\n]*)", dict_text) - for key, value in key_value_pairs: - class_dict[key.strip()] = value.strip() - - for key, value in class_dict.items(): - nodes.add(key.strip()) - - update_pattern = r"_CLASS_MAPPINGS.update\s*\({([^}]*)}\)" - update_match = re.search(update_pattern, code) - if update_match: - update_dict_text = update_match.group(1) - update_key_value_pairs = re.findall(r"\"([^\"]*)\"\s*:\s*([^,\n]*)", update_dict_text) - for key, value in update_key_value_pairs: - class_dict[key.strip()] = value.strip() - nodes.add(key.strip()) - - metadata = {} - lines = code.strip().split('\n') - for line in lines: - if line.startswith('@'): - if line.startswith("@author:") or line.startswith("@title:") or line.startswith("@nickname:") or line.startswith("@description:"): - key, value = line[1:].strip().split(':', 1) - metadata[key.strip()] = value.strip() - - if is_builtin: - builtin_nodes += set(nodes) - else: - for x in builtin_nodes: - if x in nodes: - nodes.remove(x) - - return nodes, metadata - - -def get_py_file_paths(dirname): - file_paths = [] - - for root, dirs, files in os.walk(dirname): - if ".git" in root or "__pycache__" in root: - continue - - for file in files: - if file.endswith(".py"): - file_path = os.path.join(root, file) - file_paths.append(file_path) - - return file_paths - - -def get_nodes(target_dir): - py_files = [] - directories = [] - - for item in os.listdir(target_dir): - if ".git" in item or "__pycache__" in item: - continue - - path = os.path.abspath(os.path.join(target_dir, item)) - - if os.path.isfile(path) and item.endswith(".py"): - py_files.append(path) - elif os.path.isdir(path): - directories.append(path) - - return py_files, directories - - -def get_git_urls_from_json(json_file): - with open(json_file, encoding='utf-8') as file: - data = json.load(file) - - custom_nodes = data.get('custom_nodes', []) - git_clone_files = [] - for node in custom_nodes: - if node.get('install_type') == 'git-clone': - files = node.get('files', []) - if files: - git_clone_files.append((files[0], node.get('title'), node.get('preemptions'), node.get('nodename_pattern'))) - - git_clone_files.append(("https://github.com/comfyanonymous/ComfyUI", "ComfyUI", None, None)) - - return git_clone_files - - -def get_py_urls_from_json(json_file): - with open(json_file, encoding='utf-8') as file: - data = json.load(file) - - custom_nodes = data.get('custom_nodes', []) - py_files = [] - for node in custom_nodes: - if node.get('install_type') == 'copy': - files = node.get('files', []) - if files: - py_files.append((files[0], node.get('title'), node.get('preemptions'), node.get('nodename_pattern'))) - - return py_files - - -def clone_or_pull_git_repository(git_url): - repo_name = git_url.split("/")[-1] - if repo_name.endswith(".git"): - repo_name = repo_name[:-4] - - repo_dir = os.path.join(temp_dir, repo_name) - - if os.path.exists(repo_dir): - try: - repo = Repo(repo_dir) - origin = repo.remote(name="origin") - origin.pull() - repo.git.submodule('update', '--init', '--recursive') - print(f"Pulling {repo_name}...") - except Exception as e: - print(f"Pulling {repo_name} failed: {e}") - else: - try: - Repo.clone_from(git_url, repo_dir, recursive=True) - print(f"Cloning {repo_name}...") - except Exception as e: - print(f"Cloning {repo_name} failed: {e}") - - -def update_custom_nodes(): - if not os.path.exists(temp_dir): - os.makedirs(temp_dir) - - node_info = {} - - git_url_titles_preemptions = get_git_urls_from_json('custom-node-list.json') - - def process_git_url_title(url, title, preemptions, node_pattern): - name = os.path.basename(url) - if name.endswith(".git"): - name = name[:-4] - - node_info[name] = (url, title, preemptions, node_pattern) - if not skip_update: - clone_or_pull_git_repository(url) - - def process_git_stats(git_url_titles_preemptions): - GITHUB_STATS_CACHE_FILENAME = 'github-stats-cache.json' - GITHUB_STATS_FILENAME = 'github-stats.json' - - github_stats = {} - try: - with open(GITHUB_STATS_CACHE_FILENAME, 'r', encoding='utf-8') as file: - github_stats = json.load(file) - except FileNotFoundError: - pass - - def is_rate_limit_exceeded(): - return g.rate_limiting[0] == 0 - - if is_rate_limit_exceeded(): - print(f"GitHub API Rate Limit Exceeded: remained - {(g.rate_limiting_resettime - datetime.datetime.now().timestamp())/60:.2f} min") - else: - def renew_stat(url): - if is_rate_limit_exceeded(): - return - - if 'github.com' not in url: - return None - - print('.', end="") - sys.stdout.flush() - try: - # Parsing the URL - parsed_url = urlparse(url) - domain = parsed_url.netloc - path = parsed_url.path - path_parts = path.strip("/").split("/") - if len(path_parts) >= 2 and domain == "github.com": - owner_repo = "/".join(path_parts[-2:]) - repo = g.get_repo(owner_repo) - owner = repo.owner - now = datetime.datetime.now(datetime.timezone.utc) - author_time_diff = now - owner.created_at - - last_update = repo.pushed_at.strftime("%Y-%m-%d %H:%M:%S") if repo.pushed_at else 'N/A' - item = { - "stars": repo.stargazers_count, - "last_update": last_update, - "cached_time": now.timestamp(), - "author_account_age_days": author_time_diff.days, - } - return url, item - else: - print(f"\nInvalid URL format for GitHub repository: {url}\n") - except Exception as e: - print(f"\nERROR on {url}\n{e}") - - return None - - # resolve unresolved urls - with concurrent.futures.ThreadPoolExecutor(11) as executor: - futures = [] - for url, title, preemptions, node_pattern in git_url_titles_preemptions: - if url not in github_stats: - futures.append(executor.submit(renew_stat, url)) - - for future in concurrent.futures.as_completed(futures): - url_item = future.result() - if url_item is not None: - url, item = url_item - github_stats[url] = item - - # renew outdated cache - outdated_urls = [] - for k, v in github_stats.items(): - elapsed = (datetime.datetime.now().timestamp() - v['cached_time']) - if elapsed > 60*60*12: # 12 hours - outdated_urls.append(k) - - with concurrent.futures.ThreadPoolExecutor(11) as executor: - for url in outdated_urls: - futures.append(executor.submit(renew_stat, url)) - - for future in concurrent.futures.as_completed(futures): - url_item = future.result() - if url_item is not None: - url, item = url_item - github_stats[url] = item - - with open('github-stats-cache.json', 'w', encoding='utf-8') as file: - json.dump(github_stats, file, ensure_ascii=False, indent=4) - - with open(GITHUB_STATS_FILENAME, 'w', encoding='utf-8') as file: - for v in github_stats.values(): - if "cached_time" in v: - del v["cached_time"] - - github_stats = dict(sorted(github_stats.items())) - - json.dump(github_stats, file, ensure_ascii=False, indent=4) - - print(f"Successfully written to {GITHUB_STATS_FILENAME}.") - - if not skip_stat_update: - process_git_stats(git_url_titles_preemptions) - - with concurrent.futures.ThreadPoolExecutor(11) as executor: - for url, title, preemptions, node_pattern in git_url_titles_preemptions: - executor.submit(process_git_url_title, url, title, preemptions, node_pattern) - - py_url_titles_and_pattern = get_py_urls_from_json('custom-node-list.json') - - def download_and_store_info(url_title_preemptions_and_pattern): - url, title, preemptions, node_pattern = url_title_preemptions_and_pattern - name = os.path.basename(url) - if name.endswith(".py"): - node_info[name] = (url, title, preemptions, node_pattern) - - try: - download_url(url, temp_dir) - except: - print(f"[ERROR] Cannot download '{url}'") - - with concurrent.futures.ThreadPoolExecutor(10) as executor: - executor.map(download_and_store_info, py_url_titles_and_pattern) - - return node_info - - -def gen_json(node_info): - # scan from .py file - node_files, node_dirs = get_nodes(temp_dir) - - comfyui_path = os.path.abspath(os.path.join(temp_dir, "ComfyUI")) - node_dirs.remove(comfyui_path) - node_dirs = [comfyui_path] + node_dirs - - data = {} - for dirname in node_dirs: - py_files = get_py_file_paths(dirname) - metadata = {} - - nodes = set() - for py in py_files: - nodes_in_file, metadata_in_file = scan_in_file(py, dirname == "ComfyUI") - nodes.update(nodes_in_file) - metadata.update(metadata_in_file) - - dirname = os.path.basename(dirname) - - if 'Jovimetrix' in dirname: - pass - - if len(nodes) > 0 or (dirname in node_info and node_info[dirname][3] is not None): - nodes = list(nodes) - nodes.sort() - - if dirname in node_info: - git_url, title, preemptions, node_pattern = node_info[dirname] - - metadata['title_aux'] = title - - if preemptions is not None: - metadata['preemptions'] = preemptions - - if node_pattern is not None: - metadata['nodename_pattern'] = node_pattern - - data[git_url] = (nodes, metadata) - else: - print(f"WARN: {dirname} is removed from custom-node-list.json") - - for file in node_files: - nodes, metadata = scan_in_file(file) - - if len(nodes) > 0 or (dirname in node_info and node_info[dirname][3] is not None): - nodes = list(nodes) - nodes.sort() - - file = os.path.basename(file) - - if file in node_info: - url, title, preemptions, node_pattern = node_info[file] - metadata['title_aux'] = title - - if preemptions is not None: - metadata['preemptions'] = preemptions - - if node_pattern is not None: - metadata['nodename_pattern'] = node_pattern - - data[url] = (nodes, metadata) - else: - print(f"Missing info: {file}") - - # scan from node_list.json file - extensions = [name for name in os.listdir(temp_dir) if os.path.isdir(os.path.join(temp_dir, name))] - - for extension in extensions: - node_list_json_path = os.path.join(temp_dir, extension, 'node_list.json') - if os.path.exists(node_list_json_path): - git_url, title, preemptions, node_pattern = node_info[extension] - - with open(node_list_json_path, 'r', encoding='utf-8') as f: - try: - node_list_json = json.load(f) - except Exception as e: - print(f"\nERROR: Invalid json format '{node_list_json_path}'") - print("------------------------------------------------------") - print(e) - print("------------------------------------------------------") - node_list_json = {} - - metadata_in_url = {} - if git_url not in data: - nodes = set() - else: - nodes_in_url, metadata_in_url = data[git_url] - nodes = set(nodes_in_url) - - for x, desc in node_list_json.items(): - nodes.add(x.strip()) - - metadata_in_url['title_aux'] = title - - if preemptions is not None: - metadata['preemptions'] = preemptions - - if node_pattern is not None: - metadata_in_url['nodename_pattern'] = node_pattern - - nodes = list(nodes) - nodes.sort() - data[git_url] = (nodes, metadata_in_url) - - json_path = "extension-node-map.json" - with open(json_path, "w", encoding='utf-8') as file: - json.dump(data, file, indent=4, sort_keys=True) - - -print("### ComfyUI Manager Node Scanner ###") - -print("\n# Updating extensions\n") -updated_node_info = update_custom_nodes() - -print("\n# 'extension-node-map.json' file is generated.\n") -gen_json(updated_node_info) - -print("\nDONE.\n") \ No newline at end of file diff --git a/custom_nodes/comfyui-manager/scripts/colab-dependencies.py b/custom_nodes/comfyui-manager/scripts/colab-dependencies.py deleted file mode 100644 index 89c75c04fb7d5d34ecb2850d5dec487db2f89c77..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/scripts/colab-dependencies.py +++ /dev/null @@ -1,39 +0,0 @@ -import os -import subprocess - - -def get_enabled_subdirectories_with_files(base_directory): - subdirs_with_files = [] - for subdir in os.listdir(base_directory): - try: - full_path = os.path.join(base_directory, subdir) - if os.path.isdir(full_path) and not subdir.endswith(".disabled") and not subdir.startswith('.') and subdir != '__pycache__': - print(f"## Install dependencies for '{subdir}'") - requirements_file = os.path.join(full_path, "requirements.txt") - install_script = os.path.join(full_path, "install.py") - - if os.path.exists(requirements_file) or os.path.exists(install_script): - subdirs_with_files.append((full_path, requirements_file, install_script)) - except Exception as e: - print(f"EXCEPTION During Dependencies INSTALL on '{subdir}':\n{e}") - - return subdirs_with_files - - -def install_requirements(requirements_file_path): - if os.path.exists(requirements_file_path): - subprocess.run(["pip", "install", "-r", requirements_file_path]) - - -def run_install_script(install_script_path): - if os.path.exists(install_script_path): - subprocess.run(["python", install_script_path]) - - -custom_nodes_directory = "custom_nodes" -subdirs_with_files = get_enabled_subdirectories_with_files(custom_nodes_directory) - - -for subdir, requirements_file, install_script in subdirs_with_files: - install_requirements(requirements_file) - run_install_script(install_script) diff --git a/custom_nodes/comfyui-manager/scripts/install-comfyui-venv-linux.sh b/custom_nodes/comfyui-manager/scripts/install-comfyui-venv-linux.sh deleted file mode 100644 index a414460ec8083a4ef3203a5b718478d598ca2dc7..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/scripts/install-comfyui-venv-linux.sh +++ /dev/null @@ -1,21 +0,0 @@ -git clone https://github.com/comfyanonymous/ComfyUI -cd ComfyUI/custom_nodes -git clone https://github.com/ltdrdata/ComfyUI-Manager comfyui-manager -cd .. -python -m venv venv -source venv/bin/activate -python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu121 -python -m pip install -r requirements.txt -python -m pip install -r custom_nodes/comfyui-manager/requirements.txt -cd .. -echo "#!/bin/bash" > run_gpu.sh -echo "cd ComfyUI" >> run_gpu.sh -echo "source venv/bin/activate" >> run_gpu.sh -echo "python main.py --preview-method auto" >> run_gpu.sh -chmod +x run_gpu.sh - -echo "#!/bin/bash" > run_cpu.sh -echo "cd ComfyUI" >> run_cpu.sh -echo "source venv/bin/activate" >> run_cpu.sh -echo "python main.py --preview-method auto --cpu" >> run_cpu.sh -chmod +x run_cpu.sh diff --git a/custom_nodes/comfyui-manager/scripts/install-comfyui-venv-win.bat b/custom_nodes/comfyui-manager/scripts/install-comfyui-venv-win.bat deleted file mode 100644 index ac59593e3b8a94f12dfc96a5409d7d61c8d535e7..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/scripts/install-comfyui-venv-win.bat +++ /dev/null @@ -1,17 +0,0 @@ -git clone https://github.com/comfyanonymous/ComfyUI -cd ComfyUI/custom_nodes -git clone https://github.com/ltdrdata/ComfyUI-Manager comfyui-manager -cd .. -python -m venv venv -call venv/Scripts/activate -python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu121 -python -m pip install -r requirements.txt -python -m pip install -r custom_nodes/ComfyUI-Manager/requirements.txt -cd .. -echo "cd ComfyUI" >> run_gpu.bat -echo "call venv/Scripts/activate" >> run_gpu.bat -echo "python main.py" >> run_gpu.bat - -echo "cd ComfyUI" >> run_cpu.bat -echo "call venv/Scripts/activate" >> run_cpu.bat -echo "python main.py --cpu" >> run_cpu.bat diff --git a/custom_nodes/comfyui-manager/scripts/install-manager-for-portable-version.bat b/custom_nodes/comfyui-manager/scripts/install-manager-for-portable-version.bat deleted file mode 100644 index 04fd406cd4b5c1333fca9d3dba7379f4b8b169fd..0000000000000000000000000000000000000000 --- a/custom_nodes/comfyui-manager/scripts/install-manager-for-portable-version.bat +++ /dev/null @@ -1,2 +0,0 @@ -.\python_embeded\python.exe -s -m pip install gitpython -.\python_embeded\python.exe -c "import git; git.Repo.clone_from('https://github.com/ltdrdata/ComfyUI-Manager', './ComfyUI/custom_nodes/comfyui-manager')" diff --git a/custom_nodes/comfyui-manager/snapshots/the_snapshot_files_are_located_here b/custom_nodes/comfyui-manager/snapshots/the_snapshot_files_are_located_here deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000