Send to Eagle With Metadata (Extended)
Send to Eagle, but with a filing system
- images
- extra_metadata
- filepath
- filepath_count
- image
This is the Extended version of the pack's send node: the same save-with-PNGInfo-and-send-to-Eagle core as its little sibling, with the training wheels off. The plain "Send to Eagle With Metadata" node is great when you're fine dumping everything into Eagle's default folder with timestamp filenames. The moment you want per-model folders, hashes you can verify against Civitai, or file names that actually tell you what's inside, this is the one.
How it works
The core works identically - the pack hooks execution, walks the graph to a KSampler, assembles the full recipe (prompt, steps, sampler, CFG, seed, model, LoRAs, embeddings, batch info), writes it as a parameters PNGInfo chunk, saves the file, and hands it to Eagle's local API on port 41595. What differs is that every dial is exposed. The inputs that matter most:
The inputs that matter
filename_prefix- the big one. It supports placeholders like%seed%,%model%,%width%,%height%,%date:yyyyMMdd%, and truncated prompt chunks (%pprompt:30 chars%). Want a folder per model with a readable name? Try%model%/%date:yyyyMMdd%_%seed%- the pack creates the subdirectory for you.sampler_selection_method- which KSampler the metadata is read from.Farthest(default) grabs the earliest one,Nearestthe closest to this node, andBy node IDlets you point at a specific KSampler viasampler_selection_node_id(the number in the node's top-right corner). Essential once a graph has multiple samplers and you want the recipe from the one that actually did the job.eagle_folder- the destination folder in Eagle, by name or Folder ID. If it doesn't exist, the pack creates it. Handy, but watch your spelling - a typo silently makes a junk folder.calc_model_hash- turns on hashing of the checkpoint, VAE, and LoRAs and adds them to the metadata, including the comma-joinedHashesline Civitai uses for verification. It's off by default because hashing multi-gig files is slow.save_workflow_json- writes the workflow JSON next to the image (it does not get sent to Eagle).
Then the rest: add_counter_to_filename, civitai_sampler (the DPM++ 2M Karras-style name conversion), send_metadata_as_memo (mirror the full metadata into Eagle's notes field), save_only_no_send, and tag_pattern/custom_tag_pattern for tags - which can reference any key you defined in the Create Extra Metadata node. Optional inputs memo, extra_metadata, and positive/negative overrides round it out. Outputs are filepath (list), filepath_count, and image passed through.
Working with batches
One genuinely nice feature for batch work: filename_prefix, custom_tag_pattern, eagle_folder, memo, and extra_metadata all accept lists, so each image in a batch can get its own filename or destination. Pass a list shorter than the batch and the rest get empty strings.
Install
Install is the same as the whole pack:
cd <ComfyUI>/custom_nodes
git clone https://github.com/watarika/ComfyUI-SendToEagle-w-Metadata.git
Restart ComfyUI, or grab it from ComfyUI Manager (search "Send to Eagle"). Only Python dependency is piexif, no model downloads.
Gotchas
Gotchas worth knowing before they bite. calc_model_hash will make generation feel slower; leave it off unless you actually verify hashes. JPEG is saved with a .jpg extension so Eagle doesn't produce .jpeg.jpg. WebP with lossless on may drop the embedded workflow (the author notes it's under investigation). And the asynchronous sending feature - enabled by setting EAGLE_ASYNC_SEND=1 before starting ComfyUI - moves sends to a background thread so generation doesn't wait on Eagle, but its queue is in-memory only: if ComfyUI dies hard while items are queued, they're gone. It's marked experimental; if sends start going missing, unset it and run synchronous.
If your Eagle workflow has outgrown "dump everything in one folder," this node is the filing system you were going to build anyway.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | ComfyUI | — |
| sampler_selection_method | COMBO | 3 options: Farthest, Nearest, By node ID | |
| sampler_selection_node_id | INT | 00–999999999 | — |
| file_format | COMBO | 3 options: png, jpeg, webp | |
| lossless_webp | BOOLEAN | true | — |
| quality | INT | 951–100 | — |
| save_workflow_json | BOOLEAN | false | — |
| add_counter_to_filename | BOOLEAN | true | — |
| civitai_sampler | BOOLEAN | true | — |
| calc_model_hash | BOOLEAN | false | — |
| save_only_no_send | BOOLEAN | false | — |
| send_metadata_as_memo | BOOLEAN | true | — |
| tag_pattern | COMBO | 5 options: None, Positive prompt, Positive prompt, Negative prompt, Memo, Custom | |
| custom_tag_pattern | STRING | — | |
| eagle_folder | STRING | — | |
| memoopt | STRING | — | |
| extra_metadataopt | EXTRA_METADATA | — | |
| positiveopt | STRING | — | |
| negativeopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| filepath | STRING | — |
| filepath_count | INT | — |
| image | IMAGE | — |