Nodes/Universal Asset Downloader/🌐 Universal Asset Downloader
ComfyUI Node

🌐 Universal Asset Downloader

Paste a model link and let this node decide which ComfyUI folder it belongs in

By thaakeno·Created about a year ago·Updated 29 days ago· 8
🌐 Universal Asset Downloader
    • download_message
    asset_url
    asset_typeAuto
    force_downloadfalse
    selection_json
    civitai_api_key
    hf_token
    base_path./

    The joke in this community is that ComfyUI's real hobby is downloading models and installing missing nodes - the r/comfyui classic is a thread about spending "90% of the time" on exactly that. Universal Asset Downloader shaves off one slice: paste a Hugging Face or Civitai link into the node, and it figures out what the file actually is - LoRA, VAE, checkpoint, ControlNet, whatever - and drops it into the correct folder under ComfyUI/models. No shell commands, no "is this .safetensors a LoRA or a checkpoint?" guesswork, no file landing in the wrong models subfolder.

    The name is a slight lie, in the best way. There's no single "universal asset"; the trick is that a model link is rarely one file. A Hugging Face repo can bundle a diffusion model, a LoRA, a VAE, a text encoder, and a couple of alternate checkpoints in one place. A Civitai URL can point at a model, a specific version, or an image recipe. This node turns that mess into an install plan before it touches your disk.

    How it works

    It's an output node under utilities/downloaders - not part of your generation graph. You run it once like a utility, and the file lands where your loaders will find it.

    The flow is analyze-first. Hit Analyze and it fetches provider metadata only - nothing downloads yet. For Hugging Face it uses the Hub's native stack (huggingface_hub's hf_hub_download plus hf_xet, the Xet adaptive-concurrency backend), which is a real upgrade over the old streamed requests loop this pack shipped before v2.1. Then it classifies the file's role from provider declarations and filename signatures, each scored with a confidence value in the source. High-confidence files get routed straight to the right folder. Anything too murky gets dumped in models/unclassified for you to eyeball rather than silently installed as a checkpoint - guessing wrong on a multi-gigabyte file is worse than asking for one confirmation.

    Only after classification does it download: staging into a temp file, checking provider size and SHA256 when available, running a basic format check, and only then atomically promoting the file into place with os.replace. A failed verification deletes the half-download instead of leaving it in your models folder.

    Inputs and outputs that matter

    Three required fields, and honestly only one of them is you:

    • asset_url - paste the Hugging Face, Civitai, or MEGA link. Multiline, so several links at once works.
    • asset_type - defaults to Auto, and Auto is the whole point. You override it (Checkpoint, LoRA, VAE, ControlNet, Upscale Model, CLIP, UNET, TextualInversion) only when the classifier guesses wrong and you know better; it force-routes with full confidence.
    • force_download - off by default. Turn it on to re-download and repair something that's already on disk instead of skipping it.

    Optional stuff: civitai_api_key and hf_token unlock gated or private assets (tokens go only to their matching provider). selection_json is for programmatic selection. And base_path is a ghost - it's kept so old workflows deserialize, but v2 ignores it and always writes beneath ComfyUI/models.

    The single output, download_message, is a STRING that reads like ✓ model.safetensors → models/checkpoints (2.3 GB, downloaded + verified). Nothing wires onward from an output node - the text is the report.

    Installing it

    ComfyUI Manager → search "Universal Asset Downloader" and install the Registry version. Or the manual route:

    cd ComfyUI/custom_nodes
    git clone https://github.com/thaakeno/comfyui-universal-asset-downloader.git
    cd comfyui-universal-asset-downloader
    python -m pip install -r requirements.txt
    

    Then restart ComfyUI and hard-refresh the browser. Its real dependencies are requests, huggingface_hub>=0.36.2, and hf_xet>=1.5.2 - no bundled model files, nothing heavy like torch gets pulled in. It's AGPLv3.

    Gotchas

    Where people get burned:

    • A plain graph run on a multi-file repo refuses to guess. If your URL resolves to several files with no clear primary, the node returns "Use Analyze in the v2 node UI and choose" rather than installing the wrong thing. That's a feature - click Analyze, tick the boxes you want, hit Install selected.
    • MEGA is recognized but installs are refused. MEGA doesn't expose trustworthy metadata or hashes, so v2 won't safely route it. Grab MEGA files manually.
    • Something landed in models/unclassified. Check there first before assuming the download failed; it's the conservative bucket, not an error state.
    • New files don't appear in your checkpoint/LoRA pickers until you refresh them (or restart ComfyUI). The download is fine; the picker just needs to rescan.

    One last thing: the pack exposes a small backend API that other nodes - MiniMax H3 Studio's Model Setup panel, for instance - call to install models on your behalf, so you may meet UAD working silently in the background. For everything else, it's the friendliest way to go from a model link to a working ComfyUI install without touching a terminal.

    Categoryutilities/downloaders

    Inputs (7)

    NameTypeDefaultDescription
    asset_urlSTRING
    asset_typeCOMBOAuto9 options: Auto, Checkpoint, LoRA, VAE, ControlNet, Upscale Model, +3
    force_downloadBOOLEANfalse
    selection_jsonoptSTRING
    civitai_api_keyoptSTRING
    hf_tokenoptSTRING
    base_pathoptSTRING./

    Outputs (1)

    NameTypeDescription
    download_messageSTRING