ComfyUI_EmAySee_CustomNodes
Lots of randomizers, a simple oobabooga adapter with json options to pass, and other useful nodes.
Nodes (126)
Five prompt skeletons, one seed — EmAySee's fill-in-the-blank prompt shaker
Point ComfyUI at a local LLM — the kitchen-sink Oobabooga chat connector
The Oobabooga connector that explains itself — tooltips on every knob
A wire that got a name — when you just need to route anything through ComfyUI
You know the box, skip the detector — hand-drawn bounding boxes into SEGS
Seventeen anatomy sliders in one box — organized floats for character morphing
The text twin — seventeen attribute strings on one node for prompt building
The mid-workflow 'did you try turning it off and on' — forcing a VRAM purge
One number in, two out — the aspect-ratio calculator that keeps things proportional
Checkbox to Float — a boolean in, a 1.0 or 0.0 out, zero surprises
Only resize the small ones — the upscale gate that leaves big images alone
The original context loop — rolling LLM memory written to a plain text file
The chatty rewrite — Context Manager V2 and its console-debug spam
Context Reader V5 — the read half of ComfyUI's file-based LLM memory
Context Writer V5 — the append half that fixes your LLM's headers for you
The watchdog writer — absolute paths, bounded history, and a truncation tripwire
A timestamp that double-duties as a filename — and a seed input that does nothing
An LLM connector that hands you the thinking and the answer separately — built for local oobabooga-style backends
The same reasoning LLM connector, now with a seed you can actually fix
Flip width and height without rewiring your graph
Inline wildcard syntax with a seed — dynamic prompts that you can actually reproduce
Drive any slider from a 0–1 value — percent in, real range out
One slider, many string inputs — pick which prompt wins without rewiring
The blank canvas for Qwen-Image workflows — layers included, reference sampling left out
A preview node that won't fill your temp folder — for long monitoring runs
Turn coded filenames into prompt triggers — 'img_02_v1.png' becomes 'young adult'
A float, dressed up as prompt text — strength values without the typing
Ask a loaded model where it came from — handy for logs, fragile under the hood
A text file on disk, disguised as a global variable — share state between workflows
Save workflow state to disk — with a built-in append-only history
A > B? This node gives you a 1 or a 0 to branch on
Is your API up? This node pings it and hands you a 1 or 0
Give me the width and height — the one-liner image dimension node
A run log that appends itself — prompt, filename, and state, every generation
A zero-work node that does nothing — and that's exactly its job
Preview the image without killing the wire — see it and keep it flowing
It doesn't pad the image — it tells you how much to pad, and that's more useful
See the caption next to the image, and pass both through untouched
Pick one of four strings with a slider — your prompt-switcher
Twenty prompt slots under one selector — the big sibling
The latent switch that isn't a switch — it's a priority override
A vision LLM node that isn't Llama and doesn't need a key — point it at Ollama
Strip the <think> blocks out of your LLM's chat
Load an image and get its filename out — the dataset workhorse
Apply a LoRA whose name comes in as plain text
Pick a LoRA, get its filename AND its absolute path
The loader half of the two-piece LoRA setup
Read a LoRA's training secrets straight off the safetensors header
The same LoRA metadata dump, minus the tag-frequency wall of text
Turn a dropdown choice into a ready-to-apply LORA_OBJECT
Nine LoRAs pre-loaded, one selector decides which applies
A LoRA dropdown and two strength knobs, all as outputs
Stack up to twenty LoRAs, applied in a fixed order
Punch a rectangle out of the middle of your subject
Grow or shrink a mask — with independent X and Y
Grow a mask, X and Y separately — expand-only edition
A mask that refuses to fail — always hands you an image
See what your mask actually covers before you send it to a sampler
Shrink a mask on its narrow axis — a niche tool with a clear job
Merge up to 14 masks into one — the union node that just works
Expand, shrink, and punch holes in one node
Max(w, h) and friends — the mini calculator that speaks Python
Scale to a target megapixel count, not a fixed resolution
Turn your LoRA's training JSON into something a human can read
Ask ComfyUI what models are actually sitting in VRAM right now
Bundle 20 body-morph sliders into one tidy pipe
Unpack a morph pipe back into its twenty sliders
Ten detectors, one SEGS — running every bbox model at once in ComfyUI
Get one bounding box around all your masks at once
Two integers, one slider, kept in ratio — the tiny utility that earns its place
A nine-slot switch that hands you both the index and the label
Grow your canvas and get the mask that marks the new space
Pick a string at random, but make one option rare on purpose
' and 'STATE:' reply into two clean strings
Resize to a Qwen-friendly resolution before the model sees your image
Caption any image into a rich prompt — locally with Qwen-VL or via any OpenAI-compatible API
Pin an image to Qwen's native aspect ratio before it goes downstream
Snap your image to the nearest Qwen aspect ratio, scaled to taste
The fixed Qwen resolution optimizer — use this one, not the original
That zoom you hate on Qwen Image Edit is a resolution problem
A local vision LLM that turns your images into prompts — if you've got the VRAM
The dumbest possible random integer node — and sometimes that's exactly right
Pick from only the options you switched on
The random integer node that actually understands ranges
Roll a random one from your pool
Portrait or landscape? Let the seed decide
Twenty prompt slots, one randomly chosen — the 20-way picker
A coin flip between two prompts, wrapped in a node
Four prompts in, one random out — the 4-way picker
Random from three strings, because sometimes a coin isn't enough
Dedupe a comma-separated string without touching a spreadsheet
Dedupe a word list — and accept that it's going to sort itself
The dedup node that actually respects your order
Surgically remove words from a prompt — whole words, not substrings
A KSampler that repaints only what your mask says — no extra nodes
The Save Image that's allowed to leave ComfyUI's output folder
Save to an exact path with an exact filename — built for dataset dumps
Get that LLM output off the graph and onto disk as a .txt
It doesn't make audio — it asks your local TTS server to
Merge every SEGS stream in your graph into one — without re-running the detector
Push a CPU-offloaded model back onto your GPU
Free one model's VRAM without nuking the checkpoint you still need
Send an image to a local vision LLM and get a caption back as a prompt
Does this string have text in it?
A five-way string switch for picking the pose descriptor mid-workflow
The one node the README itself tells you not to use
Call your local text-generation-webui from inside a workflow — no API key needed
The same local-LLM call, but it sends a Bearer token your server asked for
The `_test` variant — same node, extra knob, author's own servers in the defaults
Chat API call that splits the model's reasoning out of its answer
The kitchen-sink chat API node with thinking-tag parsing — the one you'd actually use
Split an LLM's [NatDes]/[TagDes] output into description and tags
Strip the tags you don't want out of a booru-style prompt, case-insensitively
Join up to 50 strings with newlines before they hit your prompt encoder
The Qwen-Image-Edit text encoder, minus the resolution-selector wiring
Up to seven references, one instruction
Twenty find-and-replace pairs in one node, applied in order
One checkbox, two integers — a boolean-to-int switch for conditional values
Twelve body-attribute sliders that turn into prompt text lines
The body-attribute text builder
The body-attribute slider node that hands you every string separately
Match a reference image's aspect ratio without tripping the VAE
%var% placeholders
The 'REALLY Unique String Selector' is just a two-way string switch — and that's fine
Save an image with its prompt in a sidecar .txt — know the overwrite gotcha
Strip the boilerplate — cleaning WD14 tagger output before it hits your prompt
ComfyUI_EmAySee_CustomNodes This repository contains a collection of custom nodes for ComfyUI developed by EmAySee.
**Currently AI Described these for me.. i'll update the descriptions later.
The custom nodes should now appear in the ComfyUI add node menu under their respective categories (mostly starting with "EmAySee_"). Nodes Included Here is a brief description of each custom node in this repository:
EmAySee_CheckboxFloatNode.py
• Node Title: EmAySee Checkbox Float
• Category: EmAySee_Utils
• Description: Likely provides a boolean input (checkbox) that controls a float output, possibly switching between two float values or enabling/disabling a float value based on the checkbox state.
EmAySee_DateTimeStringNode.py
• Node Title: EmAySee Date Time String
• Category: EmAySee_Utils
• Description: Generates a string representing the current date and time. Useful for timestamping outputs or incorporating time information into prompts.
EmAySee_DynamicStringSelectorNode.py
• Node Title: EmAySee Dynamic String Selector
• Category: EmAySee_String
• Description: Allows selection from a list of strings that can potentially be dynamically generated or input, offering more flexibility than a fixed dropdown.
EmAySee_HostPinger.py
• Node Title: EmAySee Host Pinger
• Category: EmAySee_Network
• Description: Pings a specified hostname or IP address and outputs an integer (1 for reachable, 0 for unreachable). Useful for conditional workflows based on network status.
EmAySee_IntegerStringSelectorNode.py
• Node Title: EmAySee Integer String Selector
• Category: EmAySee_String
• Description: Selects a string output based on an integer input, likely using the integer value to index into a list of predefined strings.
EmAySee_IntegerStringSelectorNodeDynamic.py
• Node Title: EmAySee Integer String Selector Dynamic
• Category: EmAySee_String
• Description: Similar to EmAySee_IntegerStringSelectorNode, but likely allows the list of strings to be dynamically input or generated.
EmAySee_ProbabilityStringSelectorNode.py
• Node Title: EmAySee Probability String Selector
• Category: EmAySee_String
• Description: Selects a string from a list based on a probabilistic distribution or a random selection influenced by probability settings.
EmAySee_RandomIntFromList.py
• Node Title: EmAySee Random Int From List
• Category: EmAySee_Utils
• Description: Selects and outputs a random integer from a provided list of integers.
EmAySee_RandomIntFromList2.py
• Node Title: EmAySee Random Int From List 2
• Category: EmAySee_Utils
• Description: Likely another version or variation of EmAySee_RandomIntFromList.py, potentially with different input methods or features for selecting a random integer from a list.
EmAySee_RandomIntegerFromListNode.py
• Node Title: EmAySee Random Integer From List
• Category: EmAySee_Utils
• Description: Another node for selecting a random integer from a list, possibly with different input/output types or controls compared to the other random integer list nodes.
EmAySee_RandomIntegerFromTogglesNode_PremadeLabels.py
• Node Title: EmAySee Random Integer From Toggles Premade Labels
• Category: EmAySee_Utils
• Description: Selects a random integer based on the state of multiple toggle (boolean) inputs, using predefined labels for the toggles.
EmAySee_RandomStringSelectorNode.py
• Node Title: EmAySee Random String Selector
• Category: EmAySee_String
• Description: Selects and outputs a random string from a provided list of strings.
EmAySee_RandomStringSelectorNode2.py
• Node Title: EmAySee Random String Selector 2
• Category: EmAySee_String
• Description: Likely a second version or variation of EmAySee_RandomStringSelectorNode.py.
EmAySee_RandomStringSelectorNodeFourChoice.py
• Node Title: EmAySee Random String Selector Four Choice
• Category: EmAySee_String
• Description: Specifically designed to select a random string from a fixed set of four choices.
EmAySee_RandomStringSelectorNodeThreeChoice.py
• Node Title: EmAySee Random String Selector Three Choice
• Category: EmAySee_String
• Description: Specifically designed to select a random string from a fixed set of three choices.
EmAySee_RemoveDuplicateCSV.py
• Node Title: EmAySee Remove Duplicate CSV
• Category: EmAySee_Text
• Description: Takes a string containing comma-separated values (CSV) and removes any duplicate entries, outputting a cleaned CSV string.
EmAySee_RepaintKSampler.py
• Node Title: EmAySee Repaint KSampler
• Category: EmAySee_Repaint
• Description: A specialized KSampler node designed for image repainting using a mask. It takes a latent image and a mask as input and performs sampling primarily in the masked (white) areas to add detail or change content while preserving the unmasked (black) areas.
EmAySee_SaveImage.py
• Node Title: EmAySee Save Image
• Category: EmAySee_Image
• Description: Saves an input image to a specified location on disk, with out worrying about if it's in Comfy path or not.
EmAySee_StringPoseSelectorNode.py
• Node Title: EmAySee String Pose Selector
• Category: EmAySee_String
• Description: Likely selects a string representation of a pose or pose-related parameter, possibly from a predefined list or based on input.
EmAySee_StringTupleInputNode.py
• Node Title: EmAySee String Tuple Input (DEV NODE, Wouldn't use it)
• Category: EmAySee_Utils
• Description: Allows input of multiple strings as a tuple, useful for grouping related string data.
EmAySee_SubmitToOobaboogaAPI.py
• Node Title: EmAySee Submit To Oobabooga API
• Category: EmAySee_Network
• Description: Sends a text prompt or other data to an Oobabooga Text Generation Web UI API endpoint and outputs the response. Useful for integrating large language models into workflows.
EmAySee_ToggleIntNode.py
• Node Title: EmAySee Toggle Int
• Category: EmAySee_Utils
• Description: A node with a toggle (checkbox) that outputs one of two predefined integer values based on the toggle's state.
EmAySee_VarTextReplacer.py
• Node Title: EmAySee Var Text Replacer
• Category: EmAySee_Text
• Description: This node allows you to create a main text string containing placeholders in the format %var1% through %var10%. It provides 10 corresponding string input fields (var1 to var10). The node replaces each placeholder in the main text with the value from its corresponding input field, outputting the final combined string. Ideal for generating dynamic prompts or text based on workflow variables.
EmAySee_VeryUniqueStringSelectorNode.py
• Node Title: EmAySee Very Unique String Selector
• Category: EmAySee_String
• Description: Based on the name, this node likely provides a method for selecting a string that ensures uniqueness or is chosen based on a specific, potentially complex, selection logic.
Feel free to explore the code for each node for more details on their implementation. Know before you go... Code provided without any garuntees or warranties or support.