🪲RH应用@炮老师的小课堂
Run any RunningHub app from ComfyUI, with generic image/video/audio/text inputs
- 🖼️ 图像1
- 🖼️ 图像2
- 🖼️ 图像3
- 🖼️ 图像4
- 🖼️ 图像5
- 🖼️ 图像6
- 🖼️ 图像7
- 🖼️ 图像8
- 🎞️ 视频1
- 🎞️ 视频2
- 🎞️ 视频3
- 🎞️ 视频4
- 🎵 音频1
- 🎵 音频2
- 🎵 音频3
- 🎵 音频4
- 🖼️ 图像
- 🎬 视频
- 🆔 任务ID
- 🔗 输出URL
- 📋 响应信息
RunningHub isn't just a walled set of flagship models - it's an app marketplace where users publish workflows as "apps," each with its own parameter schema. DapaoRHAppNode is the generic runner for all of them: you paste an 🆔 应用ID, feed the app's inputs through a buffet of generic image/video/audio/text/number/boolean ports, and it submits, polls, and returns whatever the app produces. It's the "long tail" node of the RH section - the one that works even when the dedicated nodes haven't caught up to a model yet.
The inputs that matter
- 🌐 API渠道 + 🔑 API密钥 - the standing RH rule: domestic (runninghub.cn) and international (runninghub.ai) accounts use different keys; pick the channel that matches your registration.
- 🆔 应用ID - the RunningHub app identifier. This is the field everything hinges on; the app's own page documents what its inputs are.
- 🧩 应用参数JSON - a JSON object for app parameters that don't fit the generic ports.
- ⚙️ 实例类型 - three choices, default 默认. Some RH apps let you pick a compute/quality tier; this is the dial.
- The generic input buffet: 🖼️ 图像1–8, 🎞️ 视频1–4, 🎵 音频1–4, 📝 文本1–16, 🔢 数字1–8 (FLOAT), 🔘 布尔1–8 (BOOLEAN). Sixteen text slots is a lot of room for prompt-based apps; eight boolean slots covers the toggle-heavy ones.
- 📋 额外节点参数JSON (default
[]) - an array form for node-level params the app expects. - Polling/robustness: 🔁 最大轮询秒数 (2400 - the longest in the RH set, for long-running apps), ⏱️ 轮询间隔 (5s), ⌛ 请求超时 (120s), 🚫 出错时跳过.
Outputs
🖼️ 图像 (IMAGE), 🎬 视频 (VIDEO), 🆔 任务ID, 🔗 输出URL, 📋 响应信息. You wire whichever the app produces; the others come back empty. The image and video outputs are tensors, so a video app's result drops straight into a save node.
How it works
Same async wrapper as the other RH nodes, generalized: submit to RunningHub's openapi/v2 app endpoint with the app ID and whatever generic inputs are wired, poll until done, then decode image/video results into tensors and pass URLs/status through. Because apps vary, the real work happens on RunningHub's side - this node is a pass-through with the plumbing done for you.
The honest read
This is the node to keep in your back pocket when the dedicated RH nodes (image, Seedance, V3.1, X-video3) don't cover a new model yet. RunningHub publishes new apps frequently; waiting for a pack update to get a dedicated node is slow, while this runner works the day the app appears. The cost is discoverability and typing: you need the app ID and you need to know (from the app's page) which inputs map where, because the generic ports won't tell you. And as always with this pack, the README's invite codes are the author's referral business - harmless, but know it's there.
Two things to keep honest:
- Wrong app ID / wrong input mapping fails quietly. The 响应信息 output is your debug channel; check it before assuming the app is broken.
- 2400s max polling tells you these apps can take a while. Longer than the dedicated video nodes, because arbitrary apps include slow pipelines. Build patience in.
Gotchas
- 国内版/国外版 key mismatch - the eternal RH trap, still the top failure mode.
- The generic ports map by position, not by name for some apps - an app expecting "prompt" as its second text input may need 文本2, not 文本1. Match against the app's docs.
- Inputs you don't need can still be sent if the app schema picks them up - wire only what the app declares.
- Chinese-only labels.
Install: ComfyUI Manager → "dapaoAPI", or git clone https://github.com/paolaoshi/ComfyUI-dapaoAPI.git → pip install -r requirements.txt → restart. RunningHub account + API key required.
Inputs (58)
| Name | Type | Default | Description |
|---|---|---|---|
| 🌐 API渠道 | COMBO | 国内版 | 国内版与国外版使用不同的应用ID和 API 密钥。 |
| 🔑 API密钥 | STRING | 国内版和国外版密钥不通用。 | |
| 🆔 应用ID | STRING | 填写或修改后,点击“刷新应用参数”加载该应用暴露的参数。 | |
| 🧩 应用参数JSON | STRING | {} | 由动态参数面板自动维护。 |
| ⚙️ 实例类型 | COMBO | 默认 | 3 options: 默认, plus, pro |
| 🖼️ 图像1opt | IMAGE | 自动对应应用暴露的第 1 个 IMAGE 参数。 | |
| 🖼️ 图像2opt | IMAGE | 自动对应应用暴露的第 2 个 IMAGE 参数。 | |
| 🖼️ 图像3opt | IMAGE | 自动对应应用暴露的第 3 个 IMAGE 参数。 | |
| 🖼️ 图像4opt | IMAGE | 自动对应应用暴露的第 4 个 IMAGE 参数。 | |
| 🖼️ 图像5opt | IMAGE | 自动对应应用暴露的第 5 个 IMAGE 参数。 | |
| 🖼️ 图像6opt | IMAGE | 自动对应应用暴露的第 6 个 IMAGE 参数。 | |
| 🖼️ 图像7opt | IMAGE | 自动对应应用暴露的第 7 个 IMAGE 参数。 | |
| 🖼️ 图像8opt | IMAGE | 自动对应应用暴露的第 8 个 IMAGE 参数。 | |
| 🎞️ 视频1opt | VIDEO | 自动对应应用暴露的第 1 个 VIDEO 参数。 | |
| 🎞️ 视频2opt | VIDEO | 自动对应应用暴露的第 2 个 VIDEO 参数。 | |
| 🎞️ 视频3opt | VIDEO | 自动对应应用暴露的第 3 个 VIDEO 参数。 | |
| 🎞️ 视频4opt | VIDEO | 自动对应应用暴露的第 4 个 VIDEO 参数。 | |
| 🎵 音频1opt | AUDIO | 自动对应应用暴露的第 1 个 AUDIO 参数。 | |
| 🎵 音频2opt | AUDIO | 自动对应应用暴露的第 2 个 AUDIO 参数。 | |
| 🎵 音频3opt | AUDIO | 自动对应应用暴露的第 3 个 AUDIO 参数。 | |
| 🎵 音频4opt | AUDIO | 自动对应应用暴露的第 4 个 AUDIO 参数。 | |
| 📝 文本1opt | STRING | 自动对应应用暴露的第 1 个文本或下拉参数,上游输入优先。 | |
| 📝 文本2opt | STRING | 自动对应应用暴露的第 2 个文本或下拉参数,上游输入优先。 | |
| 📝 文本3opt | STRING | 自动对应应用暴露的第 3 个文本或下拉参数,上游输入优先。 | |
| 📝 文本4opt | STRING | 自动对应应用暴露的第 4 个文本或下拉参数,上游输入优先。 | |
| 📝 文本5opt | STRING | 自动对应应用暴露的第 5 个文本或下拉参数,上游输入优先。 | |
| 📝 文本6opt | STRING | 自动对应应用暴露的第 6 个文本或下拉参数,上游输入优先。 | |
| 📝 文本7opt | STRING | 自动对应应用暴露的第 7 个文本或下拉参数,上游输入优先。 | |
| 📝 文本8opt | STRING | 自动对应应用暴露的第 8 个文本或下拉参数,上游输入优先。 | |
| 📝 文本9opt | STRING | 自动对应应用暴露的第 9 个文本或下拉参数,上游输入优先。 | |
| 📝 文本10opt | STRING | 自动对应应用暴露的第 10 个文本或下拉参数,上游输入优先。 | |
| 📝 文本11opt | STRING | 自动对应应用暴露的第 11 个文本或下拉参数,上游输入优先。 | |
| 📝 文本12opt | STRING | 自动对应应用暴露的第 12 个文本或下拉参数,上游输入优先。 | |
| 📝 文本13opt | STRING | 自动对应应用暴露的第 13 个文本或下拉参数,上游输入优先。 | |
| 📝 文本14opt | STRING | 自动对应应用暴露的第 14 个文本或下拉参数,上游输入优先。 | |
| 📝 文本15opt | STRING | 自动对应应用暴露的第 15 个文本或下拉参数,上游输入优先。 | |
| 📝 文本16opt | STRING | 自动对应应用暴露的第 16 个文本或下拉参数,上游输入优先。 | |
| 🔢 数字1opt | FLOAT | 自动对应应用暴露的第 1 个数字参数,上游输入优先。 | |
| 🔢 数字2opt | FLOAT | 自动对应应用暴露的第 2 个数字参数,上游输入优先。 | |
| 🔢 数字3opt | FLOAT | 自动对应应用暴露的第 3 个数字参数,上游输入优先。 | |
| 🔢 数字4opt | FLOAT | 自动对应应用暴露的第 4 个数字参数,上游输入优先。 | |
| 🔢 数字5opt | FLOAT | 自动对应应用暴露的第 5 个数字参数,上游输入优先。 | |
| 🔢 数字6opt | FLOAT | 自动对应应用暴露的第 6 个数字参数,上游输入优先。 | |
| 🔢 数字7opt | FLOAT | 自动对应应用暴露的第 7 个数字参数,上游输入优先。 | |
| 🔢 数字8opt | FLOAT | 自动对应应用暴露的第 8 个数字参数,上游输入优先。 | |
| 🔘 布尔1opt | BOOLEAN | 自动对应应用暴露的第 1 个布尔参数,上游输入优先。 | |
| 🔘 布尔2opt | BOOLEAN | 自动对应应用暴露的第 2 个布尔参数,上游输入优先。 | |
| 🔘 布尔3opt | BOOLEAN | 自动对应应用暴露的第 3 个布尔参数,上游输入优先。 | |
| 🔘 布尔4opt | BOOLEAN | 自动对应应用暴露的第 4 个布尔参数,上游输入优先。 | |
| 🔘 布尔5opt | BOOLEAN | 自动对应应用暴露的第 5 个布尔参数,上游输入优先。 | |
| 🔘 布尔6opt | BOOLEAN | 自动对应应用暴露的第 6 个布尔参数,上游输入优先。 | |
| 🔘 布尔7opt | BOOLEAN | 自动对应应用暴露的第 7 个布尔参数,上游输入优先。 | |
| 🔘 布尔8opt | BOOLEAN | 自动对应应用暴露的第 8 个布尔参数,上游输入优先。 | |
| 📋 额外节点参数JSONopt | STRING | [] | 可选高级覆盖;相同 nodeId + fieldName 会覆盖动态表单值。 |
| 🔁 最大轮询秒数opt | INT | 240060–7200 | — |
| ⏱️ 轮询间隔opt | INT | 52–60 | — |
| ⌛ 请求超时opt | INT | 12010–600 | — |
| 🚫 出错时跳过opt | BOOLEAN | false | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| 🖼️ 图像 | IMAGE | — |
| 🎬 视频 | VIDEO | — |
| 🆔 任务ID | STRING | — |
| 🔗 输出URL | STRING | — |
| 📋 响应信息 | STRING | — |