Nodes/Model Utility Toolkit/Embedding Downloader
ComfyUI Node

Embedding Downloader

Bulk-fetch metadata and previews for your textual inversions

By silveroxides·Created about a year ago·Updated 4 days ago· 14
Embedding Downloader
    • status
    subdirectory/
    recursivetrue
    nsfw_levelAll
    max_examples0
    threads4
    api_key

    Worth saying up front so you calibrate your expectations correctly: embeddings (textual inversions) are a niche, mostly legacy corner of the ecosystem in 2026. They peaked in the SD 1.5/SDXL era - negative-embedding packs like bad-hands-5 and EasyNegative were once nearly universal - and current architectures with LLM-scale text encoders (Qwen3, T5) mostly can't use CLIP-trained embeddings at all; the format's active use has shrunk to a small, specific corner of the ecosystem, largely on Illustrious and SDXL-derived checkpoints. If you're maintaining a folder of older embeddings, though, this node solves a real problem: it batch-fetches metadata and preview examples for every embedding it finds, instead of you visiting a model page one file at a time.

    What it does

    Point it at subdirectory (default /, the root of wherever your embeddings live) and it scans for embedding files, going into subfolders too if recursive (default on) is left enabled. For each one it finds, it reaches out to a model repository - the api_key field's tooltip says "API key for accessing the model repository," which reads as CivitAI-shaped given the accompanying nsfw_level filter - and pulls down metadata plus example images.

    nsfw_level (default "All") filters which examples get pulled based on their content rating. max_examples (default 0, range 0–100) caps how many example images it grabs per embedding - worth setting deliberately if you have a large folder and don't want to pull dozens of preview images per file. threads (default 4, range 1–32) controls how many of these lookups run in parallel; raise it if you have a big folder and a fast connection, lower it if you're getting rate-limited. The single output is status (a string report of what happened), and this is a save-as-you-go node (is_output_node: true) - it writes files as it runs rather than passing data downstream for another node to use.

    Installing it

    ComfyUI Manager: search Model Utility Toolkit, install, restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/silveroxides/ComfyUI-ModelUtils
    

    Restart ComfyUI. You'll need an API key for whatever model repository this points at (get one from that site's account settings) - without it, expect the node to fail or return heavily rate-limited results, since the api_key field exists precisely because the repository gates or throttles anonymous access.

    Where people get burned

    Running this against a large, deeply nested embeddings folder with recursive on, max_examples left generous, and threads cranked high is the fastest way to hit a rate limit or a slow, sprawling run - start conservative (a small max_examples, moderate threads) on a subdirectory you can watch, confirm it behaves the way you expect, then scale up.

    The other trap is assuming this will find metadata for everything. Plenty of embeddings - especially older, hand-shared SD 1.5 ones from years ago - were never uploaded anywhere with structured metadata attached, or the file you have locally doesn't match anything the repository can identify by hash or name. A status output reporting "not found" for a chunk of your folder isn't the node failing, it's an accurate report that those files simply don't have a matching entry to fetch. And given how far the embedding format's real-world usage has fallen since its 2023 peak, it's worth periodically checking whether the embeddings you're organizing are actually still doing anything in your current workflows - an embedding trained against an encoder your checkpoint no longer uses loads silently and does nothing, with no error to tell you so.

    CategoryModelUtils/Downloader

    Inputs (6)

    NameTypeDefaultDescription
    subdirectoryCOMBO/1 options: /
    recursiveBOOLEANtrueWhether to scan subdirectories recursively.
    nsfw_levelCOMBOAllFilter models based on NSFW level in metadata.
    max_examplesINT00–100Maximum number of examples to process.
    threadsINT41–32Number of threads to use for processing.
    api_keySTRINGAPI key for accessing the model repository.

    Outputs (1)

    NameTypeDescription
    statusSTRING