ModelScope LoRA Uploader (HTTP)
China's model hub, from inside your graph
- status_message
ModelScope is Alibaba's answer to Hugging Face - the model hub that China's ecosystem actually uses, where a huge share of Qwen, Z-Image and other models actually ship from. If your LoRAs are trained for an audience there, or you just want a China-friendly mirror, this is the uploader for it. It's the sibling node to the Hugging Face LoRA Uploader in the same pack: same idea, different hub, one meaningful upgrade.
Where the HF node just dumps a file, this one builds you a proper model repo. It copies the LoRA into a temp folder, writes a configuration.json (declaring model_type: lora, PyTorch framework, text-to-image task) and a README.md, uploads the whole package to a branch, then deletes the temp files. The result is a repo on ModelScope that's browsable and usable, not just a raw blob.
How it works
The "HTTP" in its display name is the whole story. Version 0.2.0 of the pack switched this node to ModelScope's HTTP API via the modelscope library's HubApi - no git configuration needed on your machine, which was the classic friction point for ModelScope uploads before. The flow: log in with your token, check if the repo exists, create it if it doesn't (with your chosen visibility and license), upload the folder to your target branch, clean up. The success output (status_message, a string) gives you the repo URL.
Inputs to set
The core four mirror the HF node: lora_name (dropdown of your ComfyUI LoRAs - same restart-to-refresh caveat), modelscope_token, repo_id (username/model_name), and commit_message. Then visibility_str, which is public or private - a required dropdown rather than a checkbox like HF's.
The optional extras are where ModelScope's conventions show up:
- chinese_name - a Chinese display name for the model. Skip it if you're not targeting Chinese-language users; it's optional and mostly cosmetic.
- license_str - Apache 2.0 or MIT, or "Other (Set on ModelScope)" if you'll set it on the site afterward.
- create_repo_if_not_exists (default true) and revision (default
master- the branch to push to) - straight port of the HF behavior. - path_in_repo - subfolder inside the repo, same as the HF node.
Installing and using it
Same install as its sibling: search "ModelScope LoRA Uploader" in ComfyUI Manager, or clone https://github.com/violet0927/ComfyUI-HuggingFaceLoraUploader into custom_nodes, pip install -r requirements.txt, restart. Note the pack installs huggingface_hub and modelscope together, so you get both uploaders in one shot.
Gotchas
ModelScope is hosted in China, so uploads from elsewhere can be slow. A multi-hundred-MB LoRA taking a while is normal, not a hang. The repo-exists check is a bit fragile - it infers "not found" by matching keywords in the error text, so a weird network hiccup can surface as "Error checking ModelScope repository" even when your token is fine; retry before assuming auth failure. And the security warning from the HF node applies double here: your token is stored in plain text in the workflow JSON, so never share a workflow that has run this node without scrubbing it.
It's a narrow utility - if you never publish to ModelScope, you'll never touch it. But for reaching that audience, it's the difference between "upload the file somewhere" and "ship a proper model card."
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_name | COMBO | 1 options: None (Ensure LoRA paths are set and files exist) | |
| modelscope_token | STRING | YOUR_MODELSCOPE_TOKEN_HERE | — |
| repo_id | STRING | your_username/your_model_name | — |
| commit_message | STRING | Upload LoRA via ComfyUI | — |
| visibility_str | COMBO | public | 2 options: public, private |
| chinese_nameopt | STRING | — | |
| license_stropt | COMBO | Apache License 2.0 | 3 options: Apache License 2.0, MIT License, Other (Set on ModelScope) |
| create_repo_if_not_existsopt | BOOLEAN | true | — |
| revisionopt | STRING | master | — |
| path_in_repoopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| status_message | STRING | — |