Extensions/ComfyUI-YogurtNodes
ComfyUI Extension

ComfyUI-YogurtNodes

ComfyUI-YogurtNodes is a collection of custom nodes for ComfyUI, providing a series of practical image processing and workflow enhancement functionalities.

By yogurt7771·Created 2 years ago·Updated 6 days ago· 3
yogurt7771/ComfyUI-YogurtNodes
Nodes184
On cloudLocal install
CategoryYogurtNodes/Image, YogurtNodes/IO
Stars3
Updated6 days ago

Nodes (184)

Add Text To Image (Yogurt Nodes)

Slap a caption on your output — before it leaves ComfyUI

YogurtNodes/Image
Any Bridge (Yogurt Nodes)

A pass-through node with thirty-two built-in sinks

YogurtNodes/IO
Batch Images (Yogurt Nodes)

Up to 32 images, one batch — without the resolution headache

YogurtNodes/Image
Provider: BytePlus ModelArk

Seedream Has Two Doors and This Is the One You Can Pay For

YogurtNodes/LLM/Providers
Checkpoint Selector (Yogurt Nodes)

Pick a checkpoint and get its filename as a string — the automation enabler

YogurtNodes/Models
Claude Chat

Claude Chat Wants No Anthropic Key, and That's the Whole Trick

YogurtNodes/LLM/Text
ComfyUI Client Get Output (Yogurt Nodes)

Pull one node's results out of a remote run — by id or by title

YogurtNodes/Net
ComfyUI Client Load (Yogurt Nodes)

Run a whole workflow on another ComfyUI — this node is the remote

YogurtNodes/Net
ComfyUI Client Run (Yogurt Nodes)

Submit and wait — the node that actually fires the remote job

YogurtNodes/Net
ComfyUI Client Set Float (Yogurt Nodes)

Dial the remote workflow's decimals from your local graph

YogurtNodes/Net
ComfyUI Client Set Image (Yogurt Nodes)

Upload a local image into the remote workflow's Load Image node

YogurtNodes/Net
ComfyUI Client Set Int (Yogurt Nodes)

Patch an integer input on the remote workflow, mid-graph

YogurtNodes/Net
ComfyUI Client Set Seed (Yogurt Nodes)

Seed every sampler on the remote in one shot

YogurtNodes/Net
ComfyUI Client Set String (Yogurt Nodes)

Write the prompt into the remote workflow, from a local string

YogurtNodes/Net
Composite Repaint Regions (Yogurt Nodes)

Sew the repainted crops back onto the base image, seams invisible

YogurtNodes/Masks
ControlNet Selector (Yogurt Nodes)

Pick a ControlNet by name without a second loader in sight

YogurtNodes/Models
Convert LoRA Keys (Yogurt Nodes)

Rename LoRA keys by JSON — the fix when a LoRA just won't load

YogurtNodes/Models
Create Directory (Yogurt Nodes)

The two-wire node that quietly un-breaks your save paths

YogurtNodes/IO
Create LoRA Mapping JSON (Yogurt Nodes)

The translation table when one LoRA's keys don't fit another

YogurtNodes/Models
Create Parent Directory (Yogurt Nodes)

One input, one output, and a footgun hidden in the name

YogurtNodes/IO
Crop Image By Regions (Yogurt Nodes)

Crop only the regions your mask wants repainted — dynamic, not fixed

YogurtNodes/Masks
Chat (Custom Model)

For the Model That Shipped After the Pack Did

YogurtNodes/LLM/Text
Image Generation (Custom Model)

Type a Model ID, See What Bites

YogurtNodes/LLM/Image
Provider: Alibaba DashScope

Qwen Image and Wan, If You Pick the Right Continent

YogurtNodes/LLM/Providers
DataSize (Yogurt Nodes)

The 'how big is this thing' node your workflows quietly need

YogurtNodes/Logic
Deserialize Any (Yogurt Nodes)

Pickle round-trip for any Python object — and the security warning that comes with it

YogurtNodes/IO
DictContainsKey (Yogurt Nodes)

Ask 'is this key there?' and get a boolean back

YogurtNodes/Logic
DictContainsValue (Yogurt Nodes)

Check for a value in any dict — handy when you care about contents, not names

YogurtNodes/Logic
DictFilter (Yogurt Nodes)

Slice a dict down to the entries you actually care about

YogurtNodes/Logic
DictFromLists (Yogurt Nodes)

Two lists in, one dict out — with an escape hatch for ragged lists

YogurtNodes/Logic
DictGet (Yogurt Nodes)

Pull a value out of any dict without the KeyError ambush

YogurtNodes/Logic
DictInvert (Yogurt Nodes)

Flip a dict upside down — values become keys, with a duplicate-safety switch

YogurtNodes/Logic
DictKeys (Yogurt Nodes)

See what a dict actually contains — the debugging node you'll use constantly

YogurtNodes/Logic
DictLength (Yogurt Nodes)

How many keys are in this dict? An integer, instantly

YogurtNodes/Logic
DictMerge (Yogurt Nodes)

Slam up to 32 dicts together — and decide who wins the collisions

YogurtNodes/Logic
DictSubset (Yogurt Nodes)

Extract just the fields you need from a dict

YogurtNodes/Logic
DictValues (Yogurt Nodes)

Strip a dict down to its contents — keys optional

YogurtNodes/Logic
Diffusion Model Selector (Yogurt Nodes)

A dropdown for diffusion models that hands the trigger word along too

YogurtNodes/Models
EndNode (Yogurt Nodes)

The node with 32 inputs, no outputs, and one very specific job

YogurtNodes/Logic
FreedomGPT Generate Image (Legacy)

Generate images from a cloud API, no local GPU required

YogurtNodes/LLM/Legacy
FreedomGPT Generate Text (Legacy)

The obscure 'unrestricted' LLM node, for when you need it

YogurtNodes/LLM/Legacy
FreedomGPT Image Understand (Legacy)

Ask a cloud vision model what's actually in your image

YogurtNodes/LLM/Legacy
Provider: FreedomGPT

The Unfiltered Endpoint With Almost No Paper Trail

YogurtNodes/LLM/Providers
Gemini Chat

The Safety Slider Is the Interesting Part

YogurtNodes/LLM/Text
Gemini Generate Image (Legacy)

Google's image model, piped straight into your ComfyUI graph

YogurtNodes/LLM/Legacy
Gemini Generate Text (Legacy)

Gemini 2.5 in your graph — with chat history and the thinking shown

YogurtNodes/LLM/Legacy
Gemini Image Understand (Legacy)

Your images, described by Gemini — no local model, no VRAM cost

YogurtNodes/LLM/Legacy
Get Image Size (Yogurt Nodes)

Nine outputs off one wire, and the quiet workhorse of adaptive workflows

YogurtNodes/Image
Glob Files (Yogurt Nodes)

Feed a whole folder of images into ComfyUI without typing paths by hand

YogurtNodes/IO
Provider: Google AI Studio

The AI Studio Provider

YogurtNodes/LLM/Providers
Provider: Google GenAI Compatible

Point Gemini Nodes at Someone Else's Server

YogurtNodes/LLM/Providers
GPT Chat

Vision Prompts and the Preamble Problem

YogurtNodes/LLM/Text
GPT Image

Sizes, Transparency, and Where the Moderation Dial Sits

YogurtNodes/LLM/Image
Grok Chat

The VLM That Refuses Less Than the Others

YogurtNodes/LLM/Text
Grok Generate Image (Legacy)

Closed-source image gen inside ComfyUI, with zero local VRAM spent

YogurtNodes/LLM/Legacy
Grok Generate Text (Legacy)

An LLM in the graph for prompt-writing, captioning, and workflow logic

YogurtNodes/LLM/Legacy
Grok Image Understand (Legacy)

A vision model that reads your images and feeds the answer back in

YogurtNodes/LLM/Legacy
Grok Imagine

Three Reference Images and No Lecture

YogurtNodes/LLM/Image
GRSAI Generate Image (Legacy)

Nano Banana without a GPU — GRSAI's hosted image API, in your graph

YogurtNodes/LLM/Legacy
Provider: GRSAI

The Relay Provider With No Paper Trail At All

YogurtNodes/LLM/Providers
History Builder

Giving the pack's LLM nodes a memory across turns

YogurtNodes/LLM
H/L Frequency Detail Restore Threshold (Yogurt Nodes)

Put detail back into soft upscales — a frequency-split restore with knobs

YogurtNodes/Image
Image Crop By Mask (Yogurt Nodes)

Crop exactly to the mask — and get the coordinates back

YogurtNodes/Image
Image Scale To Total Pixels Advanced (Yogurt Nodes)

Resize to a pixel budget, not a resolution — with a mask proving it

YogurtNodes/Image
Image Tile (Seam Mask) (Yogurt Nodes)

The crop-and-stitch upscale pipeline, minus the seams

YogurtNodes/Image
Image Untile (Seam Mask) (Yogurt Nodes)

Sew your tiles back together without the seam lines

YogurtNodes/Image
IsEmpty (Yogurt Nodes)

The tiny boolean check that keeps your workflows from derailing

YogurtNodes/Logic
JsonDeepCopy (Yogurt Nodes)

Copy a JSON object so mutating it doesn't wreck the original

YogurtNodes/Logic
JsonFlatten (Yogurt Nodes)

Turn a nested config into flat keys — and back again

YogurtNodes/Logic
JsonGetPath (Yogurt Nodes)

Pull one value out of a JSON blob with a path, not a pile of nodes

YogurtNodes/Logic
JsonMerge (Yogurt Nodes)

Merge JSON objects the deep way — no more lost keys

YogurtNodes/Logic
JsonParse (Yogurt Nodes)

Turn a JSON string into a real object the graph can use

YogurtNodes/Logic
JsonPathExists (Yogurt Nodes)

Ask 'is this key there?' before you try to read it

YogurtNodes/Logic
JsonSetPath (Yogurt Nodes)

Write one value into a nested JSON object without rebuilding it

YogurtNodes/Logic
JsonStringify (Yogurt Nodes)

Turn an object back into text — for loggers, LLMs, and API payloads

YogurtNodes/Logic
JsonUnflatten (Yogurt Nodes)

Reassemble flat keys into the nested JSON you actually wanted

YogurtNodes/Logic
JsonValidate (Yogurt Nodes)

Confirm your JSON is the right shape before you trust it

YogurtNodes/Logic
ListBinaryOps (Yogurt Nodes)

One node for union, intersection, zips, and every other two-list trick

YogurtNodes/Logic
ListConcat (Yogurt Nodes)

Jam up to 32 lists into one — the merge your batch workflow is missing

YogurtNodes/Logic
ListContains (Yogurt Nodes)

One Boolean that decides your whole workflow

YogurtNodes/Logic
ListFilter (Yogurt Nodes)

Keep only the list items you actually want

YogurtNodes/Logic
ListFind (Yogurt Nodes)

Where in the list is it? Ask ListFind

YogurtNodes/Logic
ListIndex (Yogurt Nodes)

Grab the Nth thing out of any list — including backwards

YogurtNodes/Logic
ListJoin (Yogurt Nodes)

You have a list. Make it a sentence.

YogurtNodes/Logic
ListLength (Yogurt Nodes)

Count what you've got before you loop over it

YogurtNodes/Logic
ListSlice (Yogurt Nodes)

Slice a list the Python way — mind the stop value

YogurtNodes/Logic
ListUnique (Yogurt Nodes)

Dedupe a list without scrambling the order

YogurtNodes/Logic
Load Audio

Feed audio into ComfyUI without fighting the file browser

YogurtNodes/IO
Load Audio Path (Yogurt Nodes)

Load audio from a path, not the input folder

YogurtNodes/IO
Load Bytes (Yogurt Nodes)

Raw file bytes in — the boring bridge node that makes automation work

YogurtNodes/IO
Load Image (Yogurt Nodes)

Yes, it's basically LoadImage — and that's fine

YogurtNodes/IO
Load Image Path (Yogurt Nodes)

Load an image from a path, not from the input dropdown

YogurtNodes/IO
LoRA Load Only (Yogurt Nodes)

Load a LoRA without applying it — the front door to LoRA surgery

YogurtNodes/Models
Load Video (Yogurt Nodes)

Pull a video in, trim it, feed your video workflow

YogurtNodes/IO
Load Video Path (Yogurt Nodes)

Get a video into your graph without a file browser, with a time range

YogurtNodes/IO
LoRA Add (Rank Aware) (Yogurt Nodes)

Merging a rank-128 style with a rank-8 character without the wreckage

YogurtNodes/Models
LoRA Layers Operation (Yogurt Nodes)

Surgically zeroing or scaling specific blocks inside a LoRA

YogurtNodes/Models
LoRA Merge Full Rank (Yogurt Nodes)

Merge up to five LoRAs into one file — exactly, not approximately

YogurtNodes/Models
LoRA Compress (Yogurt Nodes)

Shrink a LoRA's rank with SVD without trashing its effect

YogurtNodes/Models
LoRA Scale Alpha (Yogurt Nodes)

Bake a LoRA's strength into its alpha so you can just use 1.0

YogurtNodes/Models
LoRA Scale Weights (Yogurt Nodes)

Turn a weak LoRA into a strong one by scaling the tensors themselves

YogurtNodes/Models
Lora Selector (Yogurt Nodes)

A LoRA picker that hands you the metadata too

YogurtNodes/Models
LoRA Simple Add (Yogurt Nodes)

Two LoRAs, one weighted sum — the quick blend, not the exact merge

YogurtNodes/Models
LoRA Stat Viewer (Yogurt Nodes)

Before you regex your LoRA into pieces, look at its keys

YogurtNodes/Models
Magnific Creative Upscale

It Invents the Detail, That's the Feature

YogurtNodes/LLM/Upscale
Magnific Image Upscale API (Legacy)

The paid upscaler, wired straight into your graph

YogurtNodes/LLM/Legacy
Magnific Precision Upscale

Keep the Photo, Add the Pixels

YogurtNodes/LLM/Upscale
Provider: Magnific

One Key, Two Upscale Nodes, a Long Wait

YogurtNodes/LLM/Providers
Mask Region Planner (Yogurt Nodes)

Plan crop-first repaint tiles so you don't regenerate the whole image

YogurtNodes/Masks
Merge LoRA To Model (Yogurt Nodes)

Applying a LoRA that's already a graph object, not a filename

YogurtNodes/Models
Nano Banana

Fourteen Reference Images in One Node

YogurtNodes/LLM/Image
None (Yogurt Nodes)

The Node That Outputs Nothing (And Why You'll Want It)

YogurtNodes/Logic
Provider: OpenAI Compatible

Point ComfyUI at Ollama, LM Studio, or Any Relay

YogurtNodes/LLM/Providers
OpenAI Generate Image (Legacy)

Generate Images With OpenAI, Straight Into a Sampler-Ready Tensor

YogurtNodes/LLM/Legacy
OpenAI Generate Text (Legacy)

An LLM Call, Wired Straight Into Your Workflow Logic

YogurtNodes/LLM/Legacy
OpenAI Image Understand (Legacy)

Ask a Vision Model About Your Image, In-Graph

YogurtNodes/LLM/Legacy
Provider: OpenAI

What the Blank Key Field Actually Does

YogurtNodes/LLM/Providers
OpenRouter Generate Image (Legacy)

Image Generation via OpenRouter

YogurtNodes/LLM/Legacy
OpenRouter Generate Text (Legacy)

Text Generation via OpenRouter

YogurtNodes/LLM/Legacy
OpenRouter Image Understand (Legacy)

One API key, every vision model — this node shops for you

YogurtNodes/LLM/Legacy
Provider: OpenRouter

OpenRouter — one key, and a vote on who actually runs your model

YogurtNodes/LLM/Providers
PackAny (Yogurt Nodes)

Bundle 32 Values Down One Wire

YogurtNodes/Logic
Path Operator (Yogurt Nodes)

Path Math Without Opening a Terminal

YogurtNodes/IO
Poisson Blend (Yogurt Nodes)

Compositing that makes the pasted object stop looking pasted

YogurtNodes/Image
Preview Any Bridge (Yogurt Nodes)

The node that shows you what's actually flowing through that wire

YogurtNodes/IO
Preview Any Bridge (Output) (Yogurt Nodes)

Preview Any Data as Text (While It Passes Through)

YogurtNodes/IO
Preview Image Bridge (Yogurt Nodes)

Preview Your Images Wherever They're Flowing

YogurtNodes/IO
Preview Image Bridge (Output) (Yogurt Nodes)

The End-of-Branch Twin of the Image Preview Bridge

YogurtNodes/IO
Preview Mask Bridge (Yogurt Nodes)

See Your Masks Without Ending the Branch

YogurtNodes/IO
Preview Mask Bridge (Output) (Yogurt Nodes)

See your mask in the graph while the dims ride along

YogurtNodes/IO
Preview Repaint Regions (Yogurt Nodes)

See Your Repaint Tiles Before You Commit Compute

YogurtNodes/Masks
Qwen Generate/Edit Image (Legacy)

Qwen Image Generation and Editing, Via Alibaba's DashScope

YogurtNodes/LLM/Legacy
Qwen Image

Qwen Image — the 20B model nobody runs, called from a node instead

YogurtNodes/LLM/Image
Range (Yogurt Nodes)

A Range Node for LoRA Sweeps and Batch Runs

YogurtNodes/Number
RangeItem (Yogurt Nodes)

Grab One Value Out of a Range

YogurtNodes/Number
Regex Node (Yogurt Nodes)

Extract and Rewrite Text With Regex, Inside Your Graph

YogurtNodes/String
Replace Delimiter (Yogurt Nodes)

Fix Ugly Delimiters in One Node

YogurtNodes/String
Replace Image In Batch (Yogurt Nodes)

Swapping one bad frame out of a video batch without the rebuild

YogurtNodes/Image
Save Bytes Bridge (Yogurt Nodes)

Save Raw Bytes (Not Just Images) to Your Output Folder

YogurtNodes/IO
Save Bytes Bridge (Non Output) (Yogurt Nodes)

Save Bytes Mid-Graph Without Ending the Line

YogurtNodes/IO
Save Image Bridge (Yogurt Nodes)

The save node that doesn't stop the graph

YogurtNodes/IO
Save Image Bridge Ex (Yogurt Nodes)

The save bridge, but with any file extension you want

YogurtNodes/IO
Save Image Bridge Ex (Non Output) (Yogurt Nodes)

Save anywhere, in any format, without the spotlight

YogurtNodes/IO
Save Image Bridge (Non Output) (Yogurt Nodes)

Saving without showing up in the output list

YogurtNodes/IO
Save Image Bridge Simple (Yogurt Nodes)

The save bridge with the settings stripped out

YogurtNodes/IO
Save Image Bridge Simple (Non Output) (Yogurt Nodes)

A no-frills save that stays out of the results

YogurtNodes/IO
Save LoRA (Yogurt Nodes)

Save a LoRA state back to disk, not just load one

YogurtNodes/Models
Save Mask Bridge (Yogurt Nodes)

Save masks like you save images — and keep them in the graph

YogurtNodes/IO
Save Mask Bridge (Yogurt Nodes)

Save masks in any format the pack's plain node won't

YogurtNodes/IO
Save Mask Bridge (Non Output) (Yogurt Nodes)

The flexible mask saver that keeps its head down

YogurtNodes/IO
Save Mask Bridge (Non Output) (Yogurt Nodes)

Mask saver that writes the file and skips the spotlight

YogurtNodes/IO
Save Mask Bridge (Yogurt Nodes)

The four-knob mask saver

YogurtNodes/IO
Save Mask Bridge Simple (Non Output) (Yogurt Nodes)

The quietest way to save a mask

YogurtNodes/IO
Save Text Bridge (Yogurt Nodes)

Write text, JSON, or markdown to disk without ending the graph

YogurtNodes/IO
Save Text Bridge (Non Output) (Yogurt Nodes)

The text logger that never shows up in results

YogurtNodes/IO
Seedream

Seedream — ByteDance's image model, the one with no weights to download

YogurtNodes/LLM/Image
SeeDream Generate Image (Legacy)

ByteDance's Seedream, dropped straight into your graph

YogurtNodes/LLM/Legacy
Serialize Any (Yogurt Nodes)

Stuff any Python object into a bytes file

YogurtNodes/IO
Split Mask (Yogurt Nodes)

Connected components for repaint workflows

YogurtNodes/Masks
Split Path (Yogurt Nodes)

Turn one file path into six useful pieces

YogurtNodes/IO
String Concat (Yogurt Nodes)

Stitch up to eight strings together, and toggle each one

YogurtNodes/String
String Format (Yogurt Nodes)

Python's f-string, minus the f, for prompts that build themselves

YogurtNodes/String
String Join (Yogurt Nodes)

Glue text together without a tangle of catenate nodes

YogurtNodes/String
String Lines Count (Yogurt Nodes)

Count the lines in your prompt lists, so your workflow knows how much it's about to do

YogurtNodes/String
String Lines Switch (Yogurt Nodes)

Pull line 3 out of a prompt list and feed it somewhere else

YogurtNodes/String
StringSplit (Yogurt Nodes)

Turn one comma-separated text blob into a real list

YogurtNodes/Logic
String To Value (Yogurt Nodes)

The fastest way to turn '42' into a number ComfyUI can actually use

YogurtNodes/String
Switch (Yogurt Nodes)

A regex-powered case statement for your workflow

YogurtNodes/Logic
Tile Info To TTP Image Assy Args (Yogurt Nodes)

The glue node that makes tiled upscaling graphs actually wire together

YogurtNodes/Image
ToDict (Yogurt Nodes)

Turn key-value pairs into a real dictionary, with a safety net for missing values

YogurtNodes/Logic
ToList (Yogurt Nodes)

The type-coercion node that makes stubborn data fit the list sockets

YogurtNodes/Logic
Topaz Generative Upscale

Topaz Generative Upscale — when the image doesn't have the detail to begin with

YogurtNodes/LLM/Upscale
Topaz Image Upscale API (Legacy)

The paid upscaling baseline, as a cloud call in your workflow

YogurtNodes/LLM/Legacy
Provider: Topaz Labs

Topaz Labs — your Topaz credits, straight from the graph

YogurtNodes/LLM/Providers
Topaz Upscale

Topaz Upscale — bigger pixels, without giving the model permission to invent

YogurtNodes/LLM/Upscale
UnpackAny (Yogurt Nodes)

The other half of PackAny — split one bundled wire back into up to 32 outputs

YogurtNodes/Logic
Vertex AI Generate Image (Legacy)

Gemini image generation, inside your local ComfyUI graph — if you can stomach the GCP setup

YogurtNodes/LLM/Legacy
Vertex AI Generate Text (Legacy)

A Gemini text node that does either AI Studio or Vertex — your pick

YogurtNodes/LLM/Legacy
Vertex Image Understand (Legacy)

Give your workflow a second pair of eyes — Gemini looks at your renders

YogurtNodes/LLM/Legacy
Provider: Vertex AI

Vertex AI — Gemini through your Google Cloud project, not AI Studio

YogurtNodes/LLM/Providers
Provider: Volcengine Ark

Volcengine Ark — the door Seedream actually lives behind

YogurtNodes/LLM/Providers
Wan Generate/Edit Image (Legacy)

The only way to touch 'Wan' image generation without renting a data center

YogurtNodes/LLM/Legacy
Wan Image

Wan Image — nine reference images, and a model you can't download

YogurtNodes/LLM/Image
Provider: xAI

XAI — the direct line to Grok, no router in the middle

YogurtNodes/LLM/Providers
Readme

ComfyUI-YogurtNodes

ComfyUI-YogurtNodes is a collection of custom nodes for ComfyUI, providing a series of practical image processing and workflow enhancement functionalities.

✨ Features

  • Custom node integration
  • Easy-to-use image processing functions
  • Full compatibility with ComfyUI workflows
  • Text and image manipulation capabilities
  • Advanced string processing utilities
  • Model management and selection tools
  • Comprehensive I/O operations support
  • Integrated Gemini API for language and image understanding
  • Logic control nodes for complex workflows

📦 Installation

Requirements

  • ComfyUI (installed and running)
  • Python 3.x
  • Required Python packages:
    • numpy
    • pillow
    • google-genai (for Gemini nodes)
    • openai (for OpenAI and OpenRouter nodes)
    • requests (for API calls)
    • opencv-python (for Poisson Blend)

Installation Steps

  1. Navigate to your ComfyUI custom nodes directory:
cd custom_nodes
  1. Clone this repository:
git clone https://github.com/yogurt7771/ComfyUI-YogurtNodes.git
  1. Install dependencies:
cd ComfyUI-YogurtNodes
pip install -r requirements.txt

🚀 Usage

  1. Start ComfyUI
  2. Look for "Yogurt Nodes" category in the node browser
  3. Drag and drop desired nodes into your workflow

🔧 Available Nodes

All exported nodes are listed here. ComfyUI display names keep the " (Yogurt Nodes)" suffix at runtime.

This section is auto-generated from exported node classes and their docstrings. Run python tools/generate_readme.py to refresh.

Total exported nodes: 183.

| Group | Count | | --- | ---: | | Image Processing Nodes | 11 | | Mask Nodes | 5 | | Number Processing Nodes | 2 | | String Processing Nodes | 8 | | Logic Processing Nodes | 41 | | Model Nodes | 17 | | I/O Operation Nodes | 36 | | Language Model Nodes | 55 | | Network Nodes | 8 |

Image Processing Nodes

| Node | Class ID | Category | Description | | --- | --- | --- | --- | | Add Text To Image | YogurtAddTextToImage | YogurtNodes/Image | Add text to image. | | Batch Images | YogurtBatchImages | YogurtNodes/Image | Batch images. | | Get Image Size | YogurtGetImageSize | YogurtNodes/Image | Get image size information. | | H/L Frequency Detail Restore Threshold | YogurtHLFrequencyDetailRestoreThreshold | YogurtNodes/Image | H/L frequency detail restore with independent high/low delta thresholds. | | Image Crop By Mask | YogurtImageCropByMask | YogurtNodes/Image | Crop image to the minimum bounding box of the mask above threshold. | | Image Scale To Total Pixels Advanced | YogurtImageScaleToTotalPixelsAdvanced | YogurtNodes/Image | Image Scale To Total Pixels Advanced. | | Image Tile (Seam Mask) | YogurtImageTileWithSeamMask | YogurtNodes/Image | Split image into overlapped tiles and generate inpaint masks (white=inpaint, black=reference). | | Image Untile (Seam Mask) | YogurtImageUntileWithSeamMask | YogurtNodes/Image | Merge overlapped tiles back to one image with seam feathering (mask + overlap-based smooth transition). | | Poisson Blend | YogurtPoissonBlend | YogurtNodes/Image | 使用OpenCV泊松融合(seamlessClone)将前景融合到背景。 | | Replace Image In Batch | YogurtReplaceImageInBatch | YogurtNodes/Image | Replace one image inside an image batch at the given index. | | Tile Info To TTP Image Assy Args | YogurtTileInfoToTTPImageAssyArgs | YogurtNodes/Image | Convert tile_info to TTP_Image_Assy inputs: positions/original_size/grid_size/padding. |

Mask Nodes

| Node | Class ID | Category | Description | | --- | --- | --- | --- | | Composite Repaint Regions | YogurtCompositeRepaintRegions | YogurtNodes/Masks | Composite repainted region crops back onto a base image. | | Crop Image By Regions | YogurtCropImageByRegions | YogurtNodes/Masks | Crop repaint image and mask batches from dynamic mask regions. | | Mask Region Planner | YogurtMaskRegionPlanner | YogurtNodes/Masks | Plan dynamic fixed-size repaint tiles from a mask batch. | | Preview Repaint Regions | YogurtPreviewRepaintRegions | YogurtNodes/Masks | Draw planned repaint region boxes over the image. | | Split Mask | YogurtSplitMask | YogurtNodes/Masks | Split a combined mask into one mask batch item per connected component. |

Number Processing Nodes

| Node | Class ID | Category | Description | | --- | --- | --- | --- | | Range | YogurtRange | YogurtNodes/Number | get a number from a range | | RangeItem | YogurtRangeItem | YogurtNodes/Number | get a value from a range |

String Processing Nodes

| Node | Class ID | Category | Description | | --- | --- | --- | --- | | Regex Node | YogurtRegexNode | YogurtNodes/String | Regex-based extraction and replacement for multiline text. | | Replace Delimiter | YogurtReplaceDelimiter | YogurtNodes/String | Replace delimiter in string. Support regex | | String Concat | YogurtStringConcat | YogurtNodes/String | 拼接多个字符串,支持自定义分隔符和可变数量的输入 | | String Format | YogurtStringFormat | YogurtNodes/String | Format strings | | String Join | YogurtStringJoin | YogurtNodes/String | 将多个字符串使用指定连接符连接 | | String Lines Count | YogurtStringLinesCount | YogurtNodes/String | Get the number of lines in a multiline string | | String Lines Switch | YogurtStringLinesSwitch | YogurtNodes/String | Get line from multiline string by index | | String To Value | YogurtStringToValue | YogurtNodes/String | Get value from string |

Logic Processing Nodes

| Node | Class ID | Category | Description | | --- | --- | --- | --- | | DataSize | YogurtDataSize | YogurtNodes/Logic | Get the size/length of any data structure | | DictContainsKey | YogurtDictContainsKey | YogurtNodes/Logic | Check if a dictionary contains a specific key | | DictContainsValue | YogurtDictContainsValue | YogurtNodes/Logic | Check if a dictionary contains a specific value | | DictFilter | YogurtDictFilter | YogurtNodes/Logic | Filter dictionary entries based on key or value patterns | | DictFromLists | YogurtDictFromLists | YogurtNodes/Logic | Create a dictionary from a list of keys and a list of values | | DictGet | YogurtDictGet | YogurtNodes/Logic | Get a value by key from any dict-like object | | DictInvert | YogurtDictInvert | YogurtNodes/Logic | Invert a dictionary (swap keys and values) | | DictKeys | YogurtDictKeys | YogurtNodes/Logic | Get all keys from any dict-like object | | DictLength | YogurtDictLength | YogurtNodes/Logic | Get the length (number of keys) of any dict-like object | | DictMerge | YogurtDictMerge | YogurtNodes/Logic | Merge multiple dictionaries | | DictSubset | YogurtDictSubset | YogurtNodes/Logic | Get a subset of a dict-like object by specifying keys | | DictValues | YogurtDictValues | YogurtNodes/Logic | Get all values from any dict-like object | | EndNode | YogurtEndNode | YogurtNodes/Logic | End | | IsEmpty | YogurtIsEmpty | YogurtNodes/Logic | Check if a data structure is empty | | JsonDeepCopy | YogurtJsonDeepCopy | YogurtNodes/Logic | Create a deep copy of JSON object | | JsonFlatten | YogurtJsonFlatten | YogurtNodes/Logic | Flatten nested JSON object to flat key-value pairs | | JsonGetPath | YogurtJsonGetPath | YogurtNodes/Logic | Get value from JSON object using JSONPath | | JsonMerge | YogurtJsonMerge | YogurtNodes/Logic | Merge multiple JSON objects using deep merge | | JsonParse | YogurtJsonParse | YogurtNodes/Logic | Parse JSON string to object | | JsonPathExists | YogurtJsonPathExists | YogurtNodes/Logic | Check if a path exists in JSON object | | JsonSetPath | YogurtJsonSetPath | YogurtNodes/Logic | Set value in JSON object using JSONPath | | JsonStringify | YogurtJsonStringify | YogurtNodes/Logic | Convert object to JSON string | | JsonUnflatten | YogurtJsonUnflatten | YogurtNodes/Logic | Unflatten flat JSON object back to nested structure | | JsonValidate | YogurtJsonValidate | YogurtNodes/Logic | Validate JSON data structure | | ListBinaryOps | YogurtListBinaryOps | YogurtNodes/Logic | Perform union, intersection, difference, zip and related operations on two lists. | | ListConcat | YogurtListConcat | YogurtNodes/Logic | Concatenate multiple lists | | ListContains | YogurtListContains | YogurtNodes/Logic | Check if a list contains a specific element | | ListFilter | YogurtListFilter | YogurtNodes/Logic | Filter list elements based on regex pattern | | ListFind | YogurtListFind | YogurtNodes/Logic | Find the index of an element in a list | | ListIndex | YogurtListIndex | YogurtNodes/Logic | 通过索引从任何列表类型对象中获取元素 | | ListJoin | YogurtListJoin | YogurtNodes/Logic | Join list elements into a string | | ListLength | YogurtListLength | YogurtNodes/Logic | 获取任何列表类型对象的长度 | | ListSlice | YogurtListSlice | YogurtNodes/Logic | 从任何列表类型对象中获取切片 | | ListUnique | YogurtListUnique | YogurtNodes/Logic | Remove duplicate elements from a list while preserving order | | None | YogurtNoneNode | YogurtNodes/Logic | Return None. | | PackAny | YogurtPackAny | YogurtNodes/Logic | Pack any | | StringSplit | YogurtStringSplit | YogurtNodes/Logic | Split a string into a list | | Switch | YogurtSwitch | YogurtNodes/Logic | Switch | | ToDict | YogurtToDict | YogurtNodes/Logic | Convert pairs or mapping to a dictionary | | ToList | YogurtToList | YogurtNodes/Logic | Convert any iterable to a list | | UnpackAny | YogurtUnpackAny | YogurtNodes/Logic | Unpack any |

Model Nodes

| Node | Class ID | Category | Description | | --- | --- | --- | --- | | Checkpoint Selector | YogurtCheckpointSelector | YogurtNodes/Models | Select Checkpoint | | ControlNet Selector | YogurtControlNetSelector | YogurtNodes/Models | Select ControlNet | | Convert LoRA Keys | YogurtConvertLoraKeys | YogurtNodes/Models | Rename LoRA keys by mapping JSON. | | Create LoRA Mapping JSON | YogurtCreateLoraMappingJson | YogurtNodes/Models | Build a best-effort mapping from LoRA A keys to LoRA B keys. | | Diffusion Model Selector | YogurtDiffusionModelSelector | YogurtNodes/Models | Select Diffusion Model | | LoRA Add (Rank Aware) | YogurtLoraAdd | YogurtNodes/Models | Merge two LoRAs, with SVD rank alignment when ranks differ. | | LoRA Compress | YogurtLoraRankCompress | YogurtNodes/Models | Compress LoRA rank with SVD for standard .lora_down/.lora_up pairs. Optionally absorb alpha/rank first to preserve the actual LoRA effect before compression. | | LoRA Layers Operation | YogurtLoraLayersOperation | YogurtNodes/Models | Modify only selected LoRA layers by index. | | LoRA Load Only | YogurtLoadLoraOnly | YogurtNodes/Models | Load a LoRA without applying it. Use with other LoRA operation nodes. | | LoRA Merge Full Rank | YogurtLoraMerge | YogurtNodes/Models | Merge up to five standard LoRAs exactly by concatenating rank dimensions. Fast and preserves the summed model-side effect exactly, but output rank/file size grow. Does not support DoRA or LoCon/reshape variants. | | LoRA Scale Alpha | YogurtLoraScaleAlpha | YogurtNodes/Models | Scale only LoRA alpha metadata so the adjusted LoRA can be saved downstream. | | LoRA Scale Weights | YogurtLoraScaleWeights | YogurtNodes/Models | Scale LoRA tensor weights globally so effect can be tuned while using strength=1. | | LoRA Simple Add | YogurtLoraSimpleAdd | YogurtNodes/Models | Simple weighted sum of two LoRA states. | | LoRA Stat Viewer | YogurtLoraStatViewer | YogurtNodes/Models | Inspect LoRA key patterns to help define regex and layer selection. | | Lora Selector | YogurtLoraSelector | YogurtNodes/Models | Select Lora | | Merge LoRA To Model | YogurtMergeLoraToModel | YogurtNodes/Models | Apply loaded LoRA to model and optional CLIP. | | Save LoRA | YogurtSaveLora | YogurtNodes/Models | Save LoRA state as safetensors. |

I/O Operation Nodes

| Node | Class ID | Category | Description | | --- | --- | --- | --- | | Any Bridge | YogurtAnyBridge | YogurtNodes/IO | Any Bridge | | Create Directory | YogurtCreateDirectory | YogurtNodes/IO | Create a directory | | Create Parent Directory | YogurtCreateParentDirectory | YogurtNodes/IO | Create a parent directory | | Deserialize Any | YogurtDeserializeAny | YogurtNodes/IO | Deserialize bytes data to Python object using pickle | | Glob Files | YogurtGlobFiles | YogurtNodes/IO | Use glob pattern to traverse the folder, return the matching file path list | | Load Audio Path | YogurtLoadAudioPath | YogurtNodes/IO | Load audio from path. | | Load Bytes | YogurtLoadBytes | YogurtNodes/IO | Load bytes data from a file | | Load Image | YogurtLoadImage | YogurtNodes/IO | Load image. | | Load Image Path | YogurtLoadImagePath | YogurtNodes/IO | Load image from path. | | Load Video | YogurtLoadVideo | YogurtNodes/IO | Load video. | | Load Video Path | YogurtLoadVideoPath | YogurtNodes/IO | Load video from path. | | Path Operator | YogurtPathOperator | YogurtNodes/IO | Execute join, relative, or common path operations. | | Preview Any Bridge | YogurtPreviewAnyBridge | YogurtNodes/IO | Preview Any Bridge | | Preview Any Bridge (Output) | YogurtPreviewAnyBridgeOutput | YogurtNodes/IO | Preview Any Bridge (Output) node. | | Preview Image Bridge | YogurtPreviewImageBridge | YogurtNodes/IO | Preview the input images. | | Preview Image Bridge (Output) | YogurtPreviewImageBridgeOutput | YogurtNodes/IO | Preview Image Bridge (Output) node. | | Preview Mask Bridge | YogurtPreviewMaskBridge | YogurtNodes/IO | Preview the input masks. | | Preview Mask Bridge (Output) | YogurtPreviewMaskBridgeOutput | YogurtNodes/IO | Preview Mask Bridge (Output) node. | | Save Bytes Bridge | YogurtSaveBytesBridge | YogurtNodes/IO | Saves the input bytes data to your ComfyUI output directory. | | Save Bytes Bridge (Non Output) | YogurtSaveBytesBridgeNonOutput | YogurtNodes/IO | Save Bytes Bridge (Non Output) node. | | Save Image Bridge | YogurtSaveImageBridge | YogurtNodes/IO | Saves the input images to your ComfyUI output directory. | | Save Image Bridge (Non Output) | YogurtSaveImageBridgeNonOutput | YogurtNodes/IO | Save Image Bridge (Non Output) node. | | Save Image Bridge Ex | YogurtSaveImageBridgeEx | YogurtNodes/IO | Saves the input images to your ComfyUI output directory. | | Save Image Bridge Ex (Non Output) | YogurtSaveImageBridgeExNonOutput | YogurtNodes/IO | Save Image Bridge Ex (Non Output) node. | | Save Image Bridge Simple | YogurtSaveImageBridgeSimple | YogurtNodes/IO | Saves the input images to your ComfyUI output directory. | | Save Image Bridge Simple (Non Output) | YogurtSaveImageBridgeSimpleNonOutput | YogurtNodes/IO | Save Image Bridge Simple (Non Output) node. | | Save Mask Bridge | YogurtSaveMaskBridge | YogurtNodes/IO | Saves the input masks to your ComfyUI output directory. | | Save Mask Bridge | YogurtSaveMaskBridgeEx | YogurtNodes/IO | Saves the input masks to your ComfyUI output directory. | | Save Mask Bridge | YogurtSaveMaskBridgeSimple | YogurtNodes/IO | Saves the input masks to your ComfyUI output directory. | | Save Mask Bridge (Non Output) | YogurtSaveMaskBridgeExNonOutput | YogurtNodes/IO | Save Mask Bridge (Non Output) node. | | Save Mask Bridge (Non Output) | YogurtSaveMaskBridgeNonOutput | YogurtNodes/IO | Save Mask Bridge (Non Output) node. | | Save Mask Bridge Simple (Non Output) | YogurtSaveMaskBridgeSimpleNonOutput | YogurtNodes/IO | Save Mask Bridge Simple (Non Output) node. | | Save Text Bridge | YogurtSaveTextBridge | YogurtNodes/IO | Saves the input text to your ComfyUI output directory. | | Save Text Bridge (Non Output) | YogurtSaveTextBridgeNonOutput | YogurtNodes/IO | Save Text Bridge (Non Output) node. | | Serialize Any | YogurtSerializeAny | YogurtNodes/IO | Serialize any Python object to bytes using pickle | | Split Path | YogurtSplitPath | YogurtNodes/IO | Split path to parts |

Language Model Nodes

| Node | Class ID | Category | Description | | --- | --- | --- | --- | | Chat (Custom Model) | YogurtCustomModelChat | YogurtNodes/LLM | Chat with any model id on the connected provider. | | Claude Chat | YogurtClaudeChat | YogurtNodes/LLM | Anthropic Claude via OpenRouter or an OpenAI-compatible relay. | | FreedomGPT Generate Image (Legacy) | YogurtFreedomGPTGenerateImage | YogurtNodes/LLM | Generate images using FreedomGPT API | | FreedomGPT Generate Text (Legacy) | YogurtFreedomGPTGenerateText | YogurtNodes/LLM | Generate text using FreedomGPT API | | FreedomGPT Image Understand (Legacy) | YogurtFreedomGPTImageUnderstand | YogurtNodes/LLM | Understand image content using FreedomGPT vision models | | GPT Chat | YogurtGPTChat | YogurtNodes/LLM | OpenAI GPT text generation with optional image understanding and chat history. | | GPT Image | YogurtGPTImageGenerateImage | YogurtNodes/LLM | OpenAI GPT Image generation and editing (2.5 / 2 / 1.5 / 1 / 1 Mini). | | GRSAI Generate Image (Legacy) | YogurtGRSAIGenerateImage | YogurtNodes/LLM | Generate or edit images with the GRSAI API and return torch tensors | | Gemini Chat | YogurtGeminiChat | YogurtNodes/LLM | Gemini text generation with optional image understanding and chat history. | | Gemini Generate Image (Legacy) | YogurtGeminiGenerateImage | YogurtNodes/LLM | Generate image using Gemini API and return as torch.Tensor (h,w,c) and text | | Gemini Generate Text (Legacy) | YogurtGeminiGenerateText | YogurtNodes/LLM | Generate text using Gemini API | | Gemini Image Understand (Legacy) | YogurtGeminiImageUnderstand | YogurtNodes/LLM | Understand images using Gemini API | | Grok Chat | YogurtGrokChat | YogurtNodes/LLM | xAI Grok text generation with optional image understanding and chat history. | | Grok Generate Image (Legacy) | YogurtGrokGenerateImage | YogurtNodes/LLM | Generate image using xAI Grok API and return as torch.Tensor (h,w,c) and text | | Grok Generate Text (Legacy) | YogurtGrokGenerateText | YogurtNodes/LLM | Generate text using xAI API | | Grok Image Understand (Legacy) | YogurtGrokImageUnderstand | YogurtNodes/LLM | Understand image content using xAI vision models | | Grok Imagine | YogurtGrokImagineGenerateImage | YogurtNodes/LLM | xAI Grok Imagine image generation and editing. | | History Builder | YogurtHistoryBuilder | YogurtNodes/LLM | 构建与 LLM 节点兼容的会话历史 | | Image Generation (Custom Model) | YogurtCustomModelGenerateImage | YogurtNodes/LLM | Image generation with any model id on the connected provider. | | Magnific Creative Upscale | YogurtMagnificCreativeUpscale | YogurtNodes/LLM | Magnific creative upscaling with prompt, creativity and engine controls. | | Magnific Image Upscale API (Legacy) | YogurtMagnificImageUpscaleAPI | YogurtNodes/LLM | Call the Magnific image upscaler API, wait for completion, and return an IMAGE batch. | | Magnific Precision Upscale | YogurtMagnificPrecisionUpscale | YogurtNodes/LLM | Magnific precision upscaling (V2 with flavors, or V1). | | Nano Banana | YogurtNanoBananaGenerateImage | YogurtNodes/LLM | Nano Banana image generation and editing (2.1 / 2 / 2 Lite / Pro / 1). | | OpenAI Generate Image (Legacy) | YogurtOpenAIGenerateImage | YogurtNodes/LLM | Generate image using OpenAI API and return as torch.Tensor (h,w,c) and text | | OpenAI Generate Text (Legacy) | YogurtOpenAIGenerateText | YogurtNodes/LLM | Generate text using OpenAI API | | OpenAI Image Understand (Legacy) | YogurtOpenAIImageUnderstand | YogurtNodes/LLM | Understand image content using OpenAI vision models | | OpenRouter Generate Image (Legacy) | YogurtOpenRouterGenerateImage | YogurtNodes/LLM | Generate image using OpenRouter API and return as torch.Tensor (h,w,c) and text | | OpenRouter Generate Text (Legacy) | YogurtOpenRouterGenerateText | YogurtNodes/LLM | Generate text using OpenRouter API | | OpenRouter Image Understand (Legacy) | YogurtOpenRouterImageUnderstand | YogurtNodes/LLM | Understand image content using OpenRouter API | | Provider: Alibaba DashScope | YogurtDashScopeProvider | YogurtNodes/LLM | Alibaba Cloud DashScope (Bailian) provider for Qwen Image and Wan. | | Provider: BytePlus ModelArk | YogurtBytePlusArkProvider | YogurtNodes/LLM | BytePlus ModelArk (international) provider for Seedream models. | | Provider: FreedomGPT | YogurtFreedomGPTProvider | YogurtNodes/LLM | FreedomGPT provider; use with the custom-model chat and image nodes. | | Provider: GRSAI | YogurtGRSAIProvider | YogurtNodes/LLM | GRSAI drawing relay provider (Nano Banana / GPT Image). | | Provider: Google AI Studio | YogurtGoogleAIStudioProvider | YogurtNodes/LLM | Google AI Studio (Gemini API) provider; connect to Gemini / Nano Banana nodes. | | Provider: Google GenAI Compatible | YogurtGoogleGenAICompatibleProvider | YogurtNodes/LLM | Any Gemini-API-compatible endpoint with a custom base URL. | | Provider: Magnific | YogurtMagnificProvider | YogurtNodes/LLM | Magnific upscaler API provider. | | Provider: OpenAI | YogurtOpenAIProvider | YogurtNodes/LLM | Official OpenAI API provider. | | Provider: OpenAI Compatible | YogurtOpenAICompatibleProvider | YogurtNodes/LLM | Any OpenAI-compatible endpoint (chat completions / images) with a custom base URL. | | Provider: OpenRouter | YogurtOpenRouterProvider | YogurtNodes/LLM | OpenRouter provider with optional upstream provider routing. | | Provider: Topaz Labs | YogurtTopazProvider | YogurtNodes/LLM | Topaz Labs Image API provider. | | Provider: Vertex AI | YogurtVertexAIProvider | YogurtNodes/LLM | Vertex AI provider (express-mode API key or service-account credentials). | | Provider: Volcengine Ark | YogurtVolcengineArkProvider | YogurtNodes/LLM | Volcengine Ark (China) provider for Seedream and Doubao models. | | Provider: xAI | YogurtXAIProvider | YogurtNodes/LLM | xAI (Grok) API provider. | | Qwen Generate/Edit Image (Legacy) | YogurtQwenGenerateImage | YogurtNodes/LLM | 使用阿里云百炼 Qwen 图片模型进行文生图或多图编辑 | | Qwen Image | YogurtQwenImageGenerateImage | YogurtNodes/LLM | Alibaba Qwen Image generation and editing. | | SeeDream Generate Image (Legacy) | YogurtSeeDreamGenerateImage | YogurtNodes/LLM | 使用豆包SeeDream API生成图像,支持文生图、图生图、多图生图和序列图像生成 | | Seedream | YogurtSeedreamGenerateImage | YogurtNodes/LLM | ByteDance Seedream image generation and editing (5.0 Pro / Flash / Lite, 4.5, 4.0). | | Topaz Generative Upscale | YogurtTopazGenerativeUpscale | YogurtNodes/LLM | Topaz generative upscaling (Wonder 3.5, Bloom 2, Reimagine, Redefine, Recovery V2). | | Topaz Image Upscale API (Legacy) | YogurtTopazImageUpscaleAPI | YogurtNodes/LLM | Call the Topaz Labs Image API, wait for completion, and return an IMAGE batch. | | Topaz Upscale | YogurtTopazUpscale | YogurtNodes/LLM | Topaz precision upscaling (Standard V2, Low Resolution V2, High Fidelity V2, CGI, Text Refine). | | Vertex AI Generate Image (Legacy) | YogurtVertexAIGenerateImage | YogurtNodes/LLM | Generate image using Vertex AI API and return as torch.Tensor (h,w,c) and text | | Vertex AI Generate Text (Legacy) | YogurtVertexAIGenerateText | YogurtNodes/LLM | Generate text using Vertex AI | | Vertex Image Understand (Legacy) | YogurtVertexAIImageUnderstand | YogurtNodes/LLM | Understand images using Vertex AI | | Wan Generate/Edit Image (Legacy) | YogurtWanGenerateImage | YogurtNodes/LLM | 使用阿里云百炼 Wan 图片模型进行文生图或图像编辑 | | Wan Image | YogurtWanImageGenerateImage | YogurtNodes/LLM | Alibaba Wan image generation and editing. |

Network Nodes

| Node | Class ID | Category | Description | | --- | --- | --- | --- | | ComfyUI Client Get Output | YogurtComfyUIClientGetOutput | YogurtNodes/Net | 根据节点 ID/名称,从结果包中取出该节点的全部输出列表 | | ComfyUI Client Load | YogurtComfyUIClientLoad | YogurtNodes/Net | 配置 ComfyUI 客户端实例,供后续节点复用 | | ComfyUI Client Run | YogurtComfyUIClientRun | YogurtNodes/Net | 提交工作流并等待结果返回 | | ComfyUI Client Set Float | YogurtComfyUIClientSetFloat | YogurtNodes/Net | 向工作流节点输入设置浮点数 | | ComfyUI Client Set Image | YogurtComfyUIClientSetImage | YogurtNodes/Net | 上传图片并写入工作流节点输入 | | ComfyUI Client Set Int | YogurtComfyUIClientSetInt | YogurtNodes/Net | 向工作流节点输入设置整数 | | ComfyUI Client Set Seed | YogurtComfyUIClientSetSeed | YogurtNodes/Net | 为工作流中的节点设置随机种子 | | ComfyUI Client Set String | YogurtComfyUIClientSetString | YogurtNodes/Net | 向工作流节点输入设置字符串 |

🔑 Gemini API Key Setup

Before using Gemini-related nodes, you must obtain and configure your Gemini API Key. There are three supported methods, in the following order of priority:

  1. Code Argument

    • Pass the api_key argument directly when initializing GeminiClient (highest priority).
  2. api_key.json File

    • Create an api_key.json file in custom_nodes/ComfyUI-YogurtNodes/yogurt_nodes/llm/ with the following content:
      {
        "gemini": "YOUR_API_KEY"
      }
      
    • This will be used only if the code argument is not provided.
  3. Environment Variable

    • Set the environment variable GEMINI_API_KEY (used only if the above two are not set).
    • Example (Windows command line):
      set GEMINI_API_KEY=YOUR_API_KEY
      

If the API Key is not configured correctly, Gemini nodes will not work. You can obtain your API Key from Google AI Studio.

🔑 OpenAI API Key Setup

Before using OpenAI-related nodes, you must obtain and configure your OpenAI API Key. There are three supported methods, in the following order of priority:

  1. Code Argument

    • Pass the api_key argument directly when initializing OpenAIClient (highest priority).
  2. api_key.json File

    • Create an api_key.json file in custom_nodes/ComfyUI-YogurtNodes/yogurt_nodes/llm/ with the following content:
      {
        "openai": "YOUR_API_KEY",
        "openai_base_url": "https://api.openai.com/v1"
      }
      
    • The openai_base_url is optional and defaults to the official OpenAI API.
    • This will be used only if the code argument is not provided.
  3. Environment Variable

    • Set the environment variables OPENAI_API_KEY and optionally OPENAI_BASE_URL (used only if the above two are not set).
    • Example (Windows command line):
      set OPENAI_API_KEY=YOUR_API_KEY
      set OPENAI_BASE_URL=https://api.openai.com/v1
      

Custom Base URL Support

The OpenAI nodes support custom base URLs, making them compatible with:

  • Official OpenAI API
  • Azure OpenAI Service
  • OpenAI-compatible APIs (like LocalAI, Ollama, etc.)
  • Self-hosted OpenAI-compatible servers

Simply set the base_url parameter to your preferred endpoint.

If the API Key is not configured correctly, OpenAI nodes will not work. You can obtain your API Key from OpenAI Platform.

🔑 OpenRouter API Key Setup

Before using OpenRouter-related nodes, you must obtain and configure your OpenRouter API Key. There are three supported methods, in the following order of priority:

  1. Code Argument

    • Pass the api_key argument directly when initializing OpenRouterClient (highest priority).
  2. api_key.json File

    • Create an api_key.json file in custom_nodes/ComfyUI-YogurtNodes/yogurt_nodes/llm/ with the following content:
      {
        "openrouter": "YOUR_API_KEY"
      }
      
    • This will be used only if the code argument is not provided.
  3. Environment Variable

    • Set the environment variable OPENROUTER_API_KEY (used only if the above two are not set).
    • Example (Windows command line):
      set OPENROUTER_API_KEY=YOUR_API_KEY
      

If the API Key is not configured correctly, OpenRouter nodes will not work. You can obtain your API Key from OpenRouter Platform.

🧩 LLM / Image / Upscale Nodes: Providers and Models

LLM-related nodes come in two kinds that are wired together:

  • Model nodes (YogurtNodes/LLM/Image, Text, Upscale): one node per model family, e.g. Nano Banana, GPT Image, Seedream, Gemini Chat, Claude Chat, Topaz Upscale. The model dropdown switches versions, and the inputs below it change to show only what that version supports.
  • Provider nodes (YogurtNodes/LLM/Providers): hold the connection settings (key, base URL, proxy, timeout) and output a provider that you connect to a model node. The same model can be called through different providers, e.g. Nano Banana via Google AI Studio, Vertex AI, OpenRouter or GRSAI.

Notes:

  • When a model node's provider input is not connected, the family's default official provider is used, with the key read from the api_key.json key or environment variable listed below.
  • Connecting a provider that does not offer the selected model fails with an error listing the supported providers.
  • OpenAI Compatible and Google GenAI Compatible are for custom base URLs (relays). Their api_key must be filled in the node; they never fall back to the official keys in api_key.json.
  • Reference image inputs are dynamic: connecting one adds the next slot.
  • timeout 0 means no limit; image generation usually takes tens of seconds to minutes.
  • Use the advanced extra input (a JSON object) to pass parameters that are not exposed yet.
  • For models that are not built in yet, use Custom model in a family's dropdown, or the Chat (Custom Model) / Image Generation (Custom Model) nodes with a model id.
  • The previous nodes remain under YogurtNodes/LLM/Legacy with a (Legacy) suffix, so existing workflows keep working.

| Provider node | api_key.json key | Environment variable | Default for model nodes | | --- | --- | --- | --- | | Google AI Studio | gemini | GEMINI_API_KEY | Nano Banana, Gemini Chat | | Vertex AI | vertex_ai_json, vertex_ai_project, vertex_ai_region | GOOGLE_APPLICATION_CREDENTIALS | — | | Google GenAI Compatible | must be set in the node | — | — | | OpenAI | openai, openai_base_url | OPENAI_API_KEY, OPENAI_BASE_URL | GPT Image, GPT Chat, custom-model nodes | | OpenAI Compatible | must be set in the node | — | — | | OpenRouter | openrouter | OPENROUTER_API_KEY | Claude Chat | | xAI | xai (or grok), xai_base_url | XAI_API_KEY (or GROK_API_KEY) | Grok Imagine, Grok Chat | | GRSAI | grsai, grsai_base_url | GRSAI_API_KEY | — | | FreedomGPT | freedomgpt | FREEDOMGPT_API_KEY | — | | Volcengine Ark | seedream (or ark) | ARK_API_KEY | Seedream | | BytePlus ModelArk | byteplus | BYTEPLUS_API_KEY | — | | Alibaba DashScope | dashscope (or qwen, wan), dashscope_base_url | DASHSCOPE_API_KEY | Qwen Image, Wan Image | | Topaz Labs | topaz, topaz_base_url | TOPAZ_API_KEY | Topaz Upscale, Topaz Generative Upscale | | Magnific | magnific, magnific_base_url | MAGNIFIC_API_KEY | Magnific Creative / Precision Upscale |

See yogurt_nodes/llm/EXTENDING.md for adding providers and models.

🤝 Contributing

Pull Requests are welcome to help improve the project!

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

📞 Contact

For questions, bug reports, or feature requests, please open an issue.

🙏 Acknowledgments

  • ComfyUI Community
  • All Contributors