Extensions/Duanyll Nodepack
ComfyUI Extension

Duanyll Nodepack

A collection of custom nodes for ComfyUI

By Duanyll·Created about a year ago·Updated 4 months ago· 2
Duanyll/duanyll_nodepack
Nodes65
On cloudLocal install
Categoryduanyll/data, duanyll/bbox
Stars2
Updated4 months ago

Nodes (65)

As Any

The pass-through node that beats ComfyUI's type system

duanyll/data
Bounding Box Crop

Cut the Detected Region Out, Exactly Where the Box Says

duanyll/bbox
BBoxes to ImpactPack Segs

Bridge your own detections into Impact Pack's pipeline

duanyll/bbox
Bounding Box Image Stitcher

Stitch a Row of Images Into One Canvas and Get Every Tile's Box

duanyll/bbox
Channel Incremental Constrained CFG Guider

Experimental image control you probably don't need yet

duanyll/models/experimental
Cover Words with Rectangles

Masking out text for cleaner inpainting

duanyll/morphology
Create Ark Client

Volcengine's Gemini killer, wired into ComfyUI

duanyll/models/ark
Create OpenAI Client

The key-and-transport hub for gpt-image in ComfyUI

duanyll/models/openai
Create S3 Client

Wiring object-storage uploads into ComfyUI

duanyll/web
Diffusers Flux Scheduler

Exact Diffusers Flux Scheduling, as SIGMAS for Your Sampler

duanyll/models/diffusers
Diffusers Random Noise

A Diffusers-Style Noise Generator, Seeded and Byte-Reproducible

duanyll/models/diffusers
Download Image from URL

Pull Any Image Into Your Workflow Without Saving It First

duanyll/web
Draw Bounding Boxes

Draw the Boxes So You Can See What the Detection Actually Found

duanyll/bbox
Draw Bounding Box Mask

Turn Detected Boxes Into an Inpaint Mask in One Step

duanyll/bbox
Draw Text in BBox

Putting readable labels back on images

duanyll/bbox
Dump JSON

Turn any object into a readable string without the debug node tax

duanyll/data
Expand Bounding Box by Ratio

Loosen the Box Before You Crop, by a Ratio of Its Own Size

duanyll/bbox
Fill Bounding Box with Image

Paste Any Image Into a Detected Region, Automatically Resized

duanyll/bbox
Patch Flux Kontext True 3D PE

A surgical fix for multi-image Kontext

duanyll/models
Flux Text LoRA Loader

The Loader That Makes Flux Actually Render the Words

duanyll/models
Get Text BBox with Anchor

Ask Where the Text Would Go Before You Draw It

duanyll/bbox
HuggingFace Checkpoint Loader

The loader that refuses to download for you

duanyll/loaders
HuggingFace CLIP Loader

Pull text encoders from the HF cache by type

duanyll/loaders
HuggingFace Diffusion Model Loader

FLUX.1 dev without the folder-shuffling

duanyll/loaders
HuggingFace Dual CLIP Loader

Load CLIP Straight From Your Hugging Face Cache

duanyll/loaders
HuggingFace LoRA Loader

Load a LoRA From a Hugging Face Repo, No Copying Into Models/Loras

duanyll/loaders
HuggingFace LoRA Loader (Model Only)

LoRAs from the cache, no CLIP baggage

duanyll/loaders
HuggingFace Quadruple CLIP Loader

HiDream-I1's Four Text Encoders, Loaded From Your HF Cache

duanyll/loaders
HuggingFace Triple CLIP Loader

The Three-Encoder Loader for SD3 and Friends, Minus the Folder Juggling

duanyll/loaders
HuggingFace VAE Loader

Load a VAE straight from your Hugging Face cache — no copy-paste into models/vae

duanyll/loaders
Crop from Padded

Crop back to your real aspect ratio

duanyll/image
Image Difference with Colormap

See exactly where two images differ — as a heatmap, not a number

duanyll/image
Image Diff Metrics

All four image-diff metrics in one node — MSE, MAE, PSNR, SSIM with a mask

duanyll/metric
Image Linear Stretch

The one-trick contrast fix for washed-out inputs

duanyll/image
Image MAE

The gentler sibling of MSE for measuring image difference

duanyll/metric
Image MSE

The Image MSE node

duanyll/metric
Pad to Resolution

Letterboxing for models that demand exact sizes

duanyll/image
Image PSNR

The dB score everyone quotes, in a single node

duanyll/metric
Image SSIM

The metric that agrees with your eyes, if you can get it installed

duanyll/metric
InsightFace Similarity

Face Identity Score, 0-10, Without Training Anything

duanyll/metric
JSON Path Query

Pull every match out of a JSON object with a JSONPath query

duanyll/data
JSON Path Query Single

Get one value out of JSON — the unwrapped sibling of JSON Path Query

duanyll/data
JSON Path Update

Set a value deep inside a structure without touching the rest

duanyll/data
Laplacian Variance

The classic sharpness/blur detector, one number out

duanyll/metric
LLM Chat Add Message

Stuff few-shot examples into your chat before the model ever answers

duanyll/llm
LLM Chat Completion

The node that actually talks to the LLM — with live streaming on the node

duanyll/llm
LLM Client Set Seed

Pin a seed onto the client

duanyll/llm
LLM Create Chat

The system prompt that seeds every chat

duanyll/llm
LLM Create Client

The LLM Client node that turns any OpenAI-compatible API into a ComfyUI brain

duanyll/llm
Mask Linear Stretch

Drag a washed-out mask back to full contrast

duanyll/image
Mask to Bounding Box

The Little Node That Feeds the Whole Bounding-Box Toolkit

duanyll/bbox
Merge Bounding Boxes

Union or intersect your detection boxes into one

duanyll/bbox
OpenAI Image Edit

Gpt-image inpainting and edits straight from your graph

duanyll/models/openai
OpenAI Image Generation

Cloud Image Generation Inside Your Local Graph (Yes, It Needs a Key)

duanyll/models/openai
Parse BBox QwenVL

Turn Qwen-VL's JSON bounding boxes into real, usable BBOX values

duanyll/bbox
Parse JSON5

The parser that tolerates everything LLMs and humans write

duanyll/data
Parse LLM JSON Output

Your LLM node talks JSON. This is how you actually catch it.

duanyll/data
PhotoDoddle Conditioning

The Flux edit trick that needs a very specific model

duanyll/models
Qwen-Image Clip Enforce Bfloat16

The Patch That Stops Qwen-Image's Text Encoder From Eating Your VRAM

duanyll/models/diffusers
Read Text File

Pulling prompts and configs off disk into the graph

duanyll/loaders
SeedEdit Node

ByteDance's image editor as a ComfyUI node (yes, it's an API)

duanyll/models/ark
String Format

The small node that builds your prompts out of parts

duanyll/data
Text Contains Chinese

A language detector for branching workflows

duanyll/data
Upload Image to S3

Push Your Output to S3 and Get Back a Public URL

duanyll/web
vLLM HunyuanImage3

A ComfyUI front-end for Tencent's 80B image model

duanyll/models
Readme

Duanyll Nodepack

A collection of custom nodes for ComfyUI

[!NOTE] This projected was created with a cookiecutter template. It helps you start writing custom nodes without worrying about the Python setup.

Quickstart

  1. Install ComfyUI.
  2. Install ComfyUI-Manager
  3. Look up this extension in ComfyUI-Manager. If you are installing manually, clone this repository under ComfyUI/custom_nodes.
  4. Restart ComfyUI.

Features

  • A list of features

Develop

To install the dev dependencies and pre-commit (will run the ruff hook), do:

cd duanyll_nodepack
pip install -e .[dev]
pre-commit install

The -e flag above will result in a "live" install, in the sense that any changes you make to your node extension will automatically be picked up the next time you run ComfyUI.

Publish to Github

Install Github Desktop or follow these instructions for ssh.

  1. Create a Github repository that matches the directory name.
  2. Push the files to Git
git add .
git commit -m "project scaffolding"
git push

Writing custom nodes

An example custom node is located in node.py. To learn more, read the docs.

Tests

This repo contains unit tests written in Pytest in the tests/ directory. It is recommended to unit test your custom node.

Publishing to Registry

If you wish to share this custom node with others in the community, you can publish it to the registry. We've already auto-populated some fields in pyproject.toml under tool.comfy, but please double-check that they are correct.

You need to make an account on https://registry.comfy.org and create an API key token.

  • [ ] Go to the registry. Login and create a publisher id (everything after the @ sign on your registry profile).
  • [ ] Add the publisher id into the pyproject.toml file.
  • [ ] Create an api key on the Registry for publishing from Github. Instructions.
  • [ ] Add it to your Github Repository Secrets as REGISTRY_ACCESS_TOKEN.

A Github action will run on every git push. You can also run the Github action manually. Full instructions here. Join our discord if you have any questions!