在 ComfyUI 中使用 ModelSite
在 ComfyUI 里用 ModelSite 的模型生成视频和图片有两种方式:让 ComfyUI 自带的 API 节点指向 ModelSite,或使用 ModelSite 节点包;包含哪些能用、哪些不能用,以及各自是怎么验证的
ComfyUI 是一款基于节点的图像与视频生成工具。在 ComfyUI 里使用 ModelSite 的模型有两种方式。
| 方案 A:ComfyUI 自带的 API 节点 | 方案 B:ModelSite 节点包 | |
|---|---|---|
| 适合谁 | 通过 ComfyUI API 提交工作流的脚本和自动化 | 在 ComfyUI 界面里操作的所有人;也能在脚本里用 |
| 在界面里点 Run | 不行。 界面要求登录 ComfyUI 账号,ModelSite 的 Key 无法满足这一步 | 可以 |
| 需要改 ComfyUI 的启动方式 | 要:加一个启动参数 | 不要 |
| 需要安装东西 | 不要 | 要:一个节点包 |
| 能用哪些模型 | ComfyUI 自带节点列出、且 ModelSite 也在售的那些(见下表) | ModelSite 的视频和图像模型,列表自动更新 |
| 图生视频 | 不支持 | 支持(首帧,可选尾帧) |
| 需要准备 | 一个 ModelSite API Key | 一个 ModelSite API Key |
如果你在 ComfyUI 界面里工作,请用方案 B。只有在用代码驱动 ComfyUI、并且想沿用 ComfyUI 自带节点和自带模板工作流时,才用方案 A。
两种方案都按 ModelSite 的价格计费,每次请求和其他调用一样出现在你的用量日志里。Key 形如 sk-ms-...,在控制台创建;不要把真实 Key 粘贴进工作流文件、要分享的脚本或截图里。
方案 A:让 ComfyUI 自带的 API 节点指向 ModelSite
方案 A 不能在 ComfyUI 界面里运行。 运行 API 节点之前,界面会检查你是否登录了 ComfyUI 账号。这个检查发生在 ComfyUI 内部,无法指向 ModelSite,所以 Run 按钮会一直被挡住。请不要在把 ComfyUI 指向 ModelSite 的同时登录 ComfyUI 账号:那样 ComfyUI 会把你的 ComfyUI 登录令牌发给 ModelSite。请按下面的方式通过 ComfyUI API 提交工作流,或改用方案 B。
1. 用 ModelSite 地址启动 ComfyUI
python main.py --comfy-api-base https://api.modelsite.ai--comfy-api-base 告诉 ComfyUI 自带的 API 节点把请求发到哪里。测试版本:ComfyUI 0.42.0。
2. 提交工作流并传入 Key
在 ComfyUI 里搭好或打开工作流,用 Workflow → Export (API) 保存成 API 格式。Templates → API 下的模板工作流(例如 api_seedance2_0_mini_t2v、api_wan2_7_t2v、api_happyhorse1_1_t2v)可以作为起点。
把它发给 ComfyUI 的 /prompt 接口,并把 ModelSite 的 Key 放在 extra_data.api_key_comfy_org 里。ComfyUI 会把这个值作为 X-API-KEY 请求头转给 ModelSite。
import json, os, time, requests
COMFY = "http://127.0.0.1:8188" # 你本机的 ComfyUI
KEY = os.environ["MODELSITE_API_KEY"] # sk-ms-...
with open("workflow_api.json") as f: # 用 "Export (API)" 导出
prompt = json.load(f)
r = requests.post(f"{COMFY}/prompt", json={
"prompt": prompt,
"extra_data": {"api_key_comfy_org": KEY},
})
r.raise_for_status()
prompt_id = r.json()["prompt_id"]
# 视频模型需要几分钟:轮询,直到任务出现在 history 里。
while True:
h = requests.get(f"{COMFY}/history/{prompt_id}").json()
if prompt_id in h:
print(json.dumps(h[prompt_id]["outputs"], indent=2)) # 文件在 ComfyUI 的 output 目录里
break
time.sleep(5)3. 哪些能用
用真实的 ModelSite 账号、最低档参数,把模板工作流完整跑通过:
| 节点(ComfyUI 模板) | 模型 | 结果 |
|---|---|---|
ByteDance Seedance 2.0 文生视频(api_seedance2_0_t2v、api_seedance2_0_mini_t2v) | Seedance 2.0、Seedance 2.0 mini | 生成了视频 |
Wan 文生视频(api_wan2_7_t2v、api_wan3_0_t2v) | Wan 2.7、Wan 3.0 | 生成了视频 |
HappyHorse 文生视频(api_happyhorse1_1_t2v、api_happyhorse1_0_t2v) | HappyHorse 1.1、HappyHorse 1.0 | 生成了视频 |
MiniMax H3 文生视频(api_minimax_h3_t2v) | MiniMax H3 | 生成了视频(最短时长 4 秒) |
| ByteDance Seedream 文生图 | Seedream 5.0 lite、4.5、4.0 | 生成了图片 |
ComfyUI 的节点会发带日期的模型名,例如 dreamina-seedance-2-0-260128、seedream-4-5-251128。ModelSite 会把它们对应到匹配的模型,你不需要改。
4. 方案 A 里不能用的
- 需要先上传文件的节点。 图生视频、参考生视频、首尾帧、视频编辑等节点,会让 ComfyUI 在生成前先上传你的图片或视频。ModelSite 没有这一步上传,所以这些节点会失败。图生视频请用方案 B。
- ModelSite 不在售的模型家族,例如 Kling、Vidu、Luma。它们的节点没有可连接的对象。
- ComfyUI 列表里有、ModelSite 没有的模型:Wan 2.5 文生图、Seedream 5.0 Pro、Qwen Image 3.0 Pro、Seedance 2.0 Fast 和 Seedance 2.5。请求会被拒绝。
- 新模型只有等 ComfyUI 发布新版本才会出现在它的列表里。方案 B 没有这个限制。
方案 B:ModelSite 节点包
节点包提供直接调用 ModelSite 的节点:不需要 ComfyUI 账号,没有登录闸门,也不用改启动参数。
1. 安装
节点包已上架 ComfyUI Registry,名称为 Modelsite。在 ComfyUI Manager 里打开 Custom Nodes Manager,搜索 Modelsite 并点 Install,然后重启 ComfyUI。
也可以用 comfy CLI:
comfy node install comfyui-modelsite或者把仓库克隆到 custom_nodes 目录:
cd ComfyUI/custom_nodes
git clone https://github.com/binoctal/comfyui-modelsite重启 ComfyUI。节点包不需要额外的 Python 依赖。
2. 设置 API Key
打开 Settings → Modelsite → Connection,把 Key 粘贴到 API key。Key 只保存在你本机,不会写进工作流,也不会写进生成的文件,所以分享工作流时不会泄露 Key。
或者在启动 ComfyUI 之前设置环境变量 MODELSITE_API_KEY。API 地址默认是 https://api.modelsite.ai;只有拿到了别的地址时才需要改。
3. 添加节点
在画布上双击,搜索 Modelsite。节点在 Modelsite/Video 和 Modelsite/Image 分类下:
| 节点 | 作用 |
|---|---|
| Modelsite Text to Video | 提示词 → 视频 |
| Modelsite Image to Video | 首帧(可选尾帧)→ 视频 |
| Modelsite Text to Image | 提示词 → 图片 |
| Modelsite Image to Image | 1–3 张参考图 + 提示词 → 图片 |
把输出接到 ComfyUI 自带的 Save Video 或 Save Image 节点。视频节点还会输出 task_id 和 usage(接口返回的用量数据)。
4. 选择模型
model 下拉框在页面加载时从 ModelSite 的实时模型列表里填充,所以新上架的模型刷新页面就能看到。如果想立刻用,把它的 ID 填进 custom_model,它会覆盖下拉框的选择。
| 模型家族 | 视频 | 图像 |
|---|---|---|
| Seedance 2.0 / 2.0 mini | 文生、首帧、首尾帧 | — |
| Wan 2.7 | 文生、首帧、首尾帧 | — |
| HappyHorse 1.0 / 1.1 | 文生、首帧 | — |
| MiniMax H3 / H3 Max | 文生、首帧、首尾帧 | — |
| Seedream 4.0 / 4.5 / 5.0 lite | — | 文生、参考图 |
参考视频和音频暂不支持。
用真实账号在 ComfyUI 界面里完整跑通过:Seedance 2.0 mini、Wan 2.7、HappyHorse 1.1、MiniMax H3 的文生视频;Seedance 2.0 mini、Wan 2.7、HappyHorse 1.1、MiniMax H3 的图生视频;Seedream 5.0 lite 文生图和 Seedream 4.5 图生图。表中其他模型用的是同样的节点,但没有逐个跑过。
5. 值得了解的参数
- resolution:Wan 和 HappyHorse 支持
720p、1080p;Seedance 支持480p、720p、1080p;MiniMax H3 支持768p(H3 Max 另有480p)。不支持的取值会在发出请求之前就被拒绝。 - duration:Seedance 4–15 秒,Wan 2–15 秒,HappyHorse 3–15 秒,MiniMax H3 4–15 秒(H3 Max 5–15 秒)。
- seed:
-1让模型自己决定。默认设置会让每次运行都不同,这样 ComfyUI 不会对付费调用复用旧结果。 - generate_audio 只对 Seedance 有效;negative_prompt 只对 Wan 和 HappyHorse 有效;其他模型会忽略它们。
- ratio 用于文生视频;图生视频时结果跟随你的首帧。
- HappyHorse 图生视频 只接受首帧;接上尾帧会报错。
6. 示例工作流
把文件拖到 ComfyUI 画布上即可。图像类工作流读取 ComfyUI input 目录里的 example.png,请换成你自己的图片。
| 工作流 | 文件 |
|---|---|
| Seedance 2.0 mini,文生视频 | text-to-video-seedance-mini.json |
| MiniMax H3,文生视频 | text-to-video-minimax-h3.json |
| Seedance 2.0 mini,图生视频 | image-to-video-seedance-mini.json |
| Wan 2.7,图生视频 | image-to-video-wan27.json |
| HappyHorse 1.1,图生视频 | image-to-video-happyhorse11.json |
| MiniMax H3,图生视频 | image-to-video-minimax-h3.json |
| Seedream,文生图 | text-to-image-seedream.json |
| Seedream,图生图 | image-to-image-seedream.json |
这些文件里都不含 Key。
7. 常见问题
| 你看到的 | 含义 |
|---|---|
401 或 "invalid key" | Key 缺失、填错或已被撤销。检查 Settings → Modelsite → Connection,或 MODELSITE_API_KEY 变量。 |
402 | 余额不足以完成这次请求。到控制台充值后重试。 |
| "unknown model" / "model not found" | 这个模型 ID 不在 ModelSite 上,或你的账号不可用。从下拉框里选,或查看模型列表。 |
| 视频任务等待超时,或你点了取消 | 节点包不会再创建第二次任务,因为重复创建可能被计费两次。错误信息里带有任务 ID,请到用量日志里查它。 |
| 结果链接打不开了 | 结果链接会过期。节点包在任务完成后会立刻下载文件,请到 ComfyUI 的 output 目录里找。 |
接口返回的错误信息会原样显示。你的 Key 会从每一条错误信息和日志里被去掉。