Nodes/Model Utility Toolkit/Manual Path Downloader
ComfyUI Node

Manual Path Downloader

Manual Path Downloader — fetch model metadata from any folder, not just loras/

By silveroxides·Created about a year ago·Updated 4 days ago· 14
Manual Path Downloader
    • status
    recursivetrue
    nsfw_levelAll
    max_examples0
    threads4
    api_key
    scan_dir

    Same job as LoRA Downloader in silveroxides' ComfyUI-ModelUtils pack - scan a folder of model files and pull down metadata and preview images from an online repository - but pointed at an arbitrary path instead of a subfolder of your configured loras directory. If your files live somewhere ComfyUI doesn't already know about - a network share, a staging folder you haven't sorted yet, an external drive full of downloads - this is the node that reaches them.

    How it's different from its sibling. LoRA Downloader picks its target from a dropdown built off your existing loras folder structure. Manual Path Downloader swaps that dropdown for a plain scan_dir string field - type in any path on disk and it scans there instead. Everything else about how it behaves is the same: it walks the folder (recursively if you want), filters by content rating, caps preview downloads, and needs an API key to actually pull anything back.

    Inputs that matter. scan_dir is the one thing this node has that its sibling doesn't - a free-text path to whatever folder you want scanned. recursive (default on) decides whether it descends into subfolders. nsfw_level (default "All") filters by the repository's own content rating. max_examples (0-100, default 0) caps preview images per model - leave it at 0 and you likely get metadata with no images. threads (1-32, default 4) sets concurrency. api_key is required for the node to talk to whatever repository it's hitting - the field's own tooltip just says "API key for accessing the model repository," and the shape of these inputs (that plus the nsfw_level filter) strongly suggests CivitAI's API, though the pack doesn't name it outright. One output, status, gives a summary string - the real detail will be in your console log.

    Installing it. ComfyUI Manager, search "Model Utility Toolkit" - or cd ComfyUI/custom_nodes && git clone https://github.com/silveroxides/ComfyUI-ModelUtils, restart. Needs outbound network access and a valid API key to do anything; the README doesn't call either out explicitly, but functionally you'll need both.

    Where this earns its place over the standard downloader. The obvious case is a folder ComfyUI's own model-path config doesn't cover - you downloaded a batch of LoRAs somewhere convenient and haven't moved them into your proper loras directory yet, or you're running this against a shared drive you don't want cluttering your actual model paths. Rather than moving files around first just to enrich them with metadata, point scan_dir straight at wherever they are.

    How to avoid a bad first run. This node is marked as a workflow output, so it fires the moment you hit Queue without needing anything wired downstream - which also means it's easy to point scan_dir at a huge folder, leave recursive on and threads maxed, and hammer the API before you've confirmed it's even matching your files correctly. Start with a small target directory, low thread count, and check the console output before scaling up. And if a file comes back with no metadata, that's most likely the repository simply not having a matching entry for it - a purely local or unlisted file, an obscure upload, anything the source this node queries doesn't know about - rather than the node failing to find it.

    CategoryModelUtils/Downloader

    Inputs (6)

    NameTypeDefaultDescription
    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.
    scan_dirSTRING

    Outputs (1)

    NameTypeDescription
    statusSTRING