AODH Pack
A set of custom ComfyUI nodes designed to streamline the creation of images for anime and video game characters using structured JSON data.
Nodes
Character JSON Reader
The Character JSON Reader node allows you to load character definitions from JSON files stored in the characters directory. It parses the JSON and outputs individual strings for various character attributes, making it easy to build complex prompts.
Features:
- Automatic File Discovery: Scans the
nodes/character_reader/characters/folder for.jsonfiles. - Selection Modes:
manual: Select a specific file from the dropdown.sequential: Cycles through files, starting from the selected file.random: Picks a random file. Uses a fresh random seed on every execution.
- Repeat Count: Keeps the same selection for a specified number of executions before changing.
- Structured Outputs: Provides 21 distinct output pins covering identity, wardrobe, and style.
- Prompt-Ready Formatting: Automatically appends a comma to every non-empty output string.
- Robustness: Ensures all outputs are valid strings, even if fields are missing from the JSON.
Resolution Reader
The Resolution Reader node reads resolution configurations from text files. Each line in the text file should follow the format: width, height, upscale.
Features:
- Selection Modes:
manual: Uses the selected line from the dropdown.sequential: Cycles through lines in the file, starting from the selected line.random: Picks a random line from the file. Uses a fresh random seed on every execution.
- Repeat Count: Keeps the same selection for a specified number of executions before changing.
- Outputs: Provides
width(INT),height(INT), andupscale(FLOAT).
Lora Selector
The Lora Selector node allows you to select a folder of Lora files (from ComfyUI/models/Lora/Illustrious/) and pick one .safetensors file at a time, either randomly or sequentially.
Features:
- Folder Selection: Scans
ComfyUI/models/Lora/Illustrious/for subdirectories. - Selection Modes:
Random: Picks a random Lora from the folder. Uses a fresh random seed on every execution.Sequential: Cycles through the Lora files in the folder, starting from themanual_index.Manual: Selects the Lora at the specifiedmanual_index.
- Repeat Count: Keeps the same selection for a specified number of executions before changing.
- Manual Index: Specifies the starting index for
Sequentialmode or the specific index forManualmode. - Outputs:
lora_name(STRING): The relative path to the selected Lora.total_loras(INT): The total number of Lora files in the selected folder.
Checkpoint Selector
The Checkpoint Selector node allows you to select a folder of Checkpoint files (from ComfyUI/models/Stable-diffusion/) and pick one .safetensors or .ckpt file at a time, either randomly or sequentially.
Features:
- Folder Selection: Scans
ComfyUI/models/Stable-diffusion/(and other checkpoint paths) for subdirectories. - Selection Modes:
Random: Picks a random Checkpoint from the folder. Uses a fresh random seed on every execution.Sequential: Cycles through the Checkpoint files in the folder, starting from themanual_index.Manual: Selects the Checkpoint at the specifiedmanual_index.
- Repeat Count: Keeps the same selection for a specified number of executions before changing.
- Manual Index: Specifies the starting index for
Sequentialmode or the specific index forManualmode. - Outputs:
checkpoint_name(STRING): The relative path to the selected Checkpoint.total_checkpoints(INT): The total number of Checkpoint files in the selected folder.
Checkpoint Loader (From String)
The Checkpoint Loader (From String) node loads a checkpoint model using a string input (e.g., from the Checkpoint Selector node).
Inputs:
ckpt_name(STRING): The name/path of the checkpoint to load.
Outputs:
MODEL: The loaded model.CLIP: The loaded CLIP model.VAE: The loaded VAE model.
AODH Image Saver (Metadata)
The AODH Image Saver (Metadata) node saves images with comprehensive metadata in both A1111-compatible and extended ComfyUI formats.
Features:
- Dynamic Directory Support: Specify a
save_directorywith support for date formatting:date:yyyy-MM-dd: Replaces with formatted date (e.g.,2024-05-20).- Standard
strftimepatterns like%Y-%m-%d.
- Comprehensive Metadata: Embeds prompt, sampling parameters, model info, and LoRA details.
- LoRA Handling: Automatically strips directory paths from LoRA names for cleaner metadata.
- Image Pass-through: Includes an image output pin to continue the workflow after saving.
Inputs:
images(IMAGE): The images to save.filename_prefix(STRING): The prefix for the saved files.save_directory(STRING): The folder to save images in (defaults to current date).- Various optional metadata fields (prompts, checkpoint, lora, etc.).
Outputs:
images(IMAGE): The input images passed through.
JSON Structure:
Place your character JSON files in the nodes/character_reader/characters/ directory. The expected format is:
{
"character_id": "unique_id",
"identity": {
"base_specs": "...",
"hair": "...",
"eyes": "...",
"expression": "...",
"hands": "...",
"arms": "...",
"torso": "...",
"pelvis": "...",
"legs": "...",
"feet": "...",
"distinguishing_marks": "..."
},
"wardrobe": {
"inner_layer": "...",
"outer_layer": "...",
"lower_body": "...",
"footwear": "...",
"gloves": "...",
"accessories": "..."
},
"styles": {
"aesthetic": "...",
"primary_color": "...",
"secondary_color": "...",
"tertiary_color": "..."
},
"lora":{
"lora_name": "...",
"lora_Weight": "...",
"lora_triggers": "..."
}
}
Installation
- Clone this repository into your
ComfyUI/custom_nodes/directory. - Add your character JSON files to the
nodes/character_reader/characters/folder. - Add your resolution text files to the
nodes/resolution_reader/resolutions/folder. - Restart ComfyUI.
Usage
Find the node under the AODH Pack category in the ComfyUI node menu. Select your character file from the dropdown, and connect the output pins to your prompt encoding nodes.