Nodes/ComfyUI-dapaoAPI/🪲RH应用@炮老师的小课堂
ComfyUI Node

🪲RH应用@炮老师的小课堂

Run any RunningHub app from ComfyUI, with generic image/video/audio/text inputs

By paolaoshi·Created 10 months ago·Updated a day ago· 217
🪲RH应用@炮老师的小课堂
  • 🖼️ 图像1
  • 🖼️ 图像2
  • 🖼️ 图像3
  • 🖼️ 图像4
  • 🖼️ 图像5
  • 🖼️ 图像6
  • 🖼️ 图像7
  • 🖼️ 图像8
  • 🎞️ 视频1
  • 🎞️ 视频2
  • 🎞️ 视频3
  • 🎞️ 视频4
  • 🎵 音频1
  • 🎵 音频2
  • 🎵 音频3
  • 🎵 音频4
  • 🖼️ 图像
  • 🎬 视频
  • 🆔 任务ID
  • 🔗 输出URL
  • 📋 响应信息
🌐 API渠道国内版
🔑 API密钥
🆔 应用ID
🧩 应用参数JSON{}
⚙️ 实例类型默认
📝 文本1
📝 文本2
📝 文本3
📝 文本4
📝 文本5
📝 文本6
📝 文本7
📝 文本8
📝 文本9
📝 文本10
📝 文本11
📝 文本12
📝 文本13
📝 文本14
📝 文本15
📝 文本16
🔢 数字1
🔢 数字2
🔢 数字3
🔢 数字4
🔢 数字5
🔢 数字6
🔢 数字7
🔢 数字8
🔘 布尔1
🔘 布尔2
🔘 布尔3
🔘 布尔4
🔘 布尔5
🔘 布尔6
🔘 布尔7
🔘 布尔8
📋 额外节点参数JSON[]
🔁 最大轮询秒数2400
⏱️ 轮询间隔5
⌛ 请求超时120
🚫 出错时跳过false

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.gitpip install -r requirements.txt → restart. RunningHub account + API key required.

Category🤖dapaoAPI/🦄RH功能专区🦄

Inputs (58)

NameTypeDefaultDescription
🌐 API渠道COMBO国内版国内版与国外版使用不同的应用ID和 API 密钥。
🔑 API密钥STRING国内版和国外版密钥不通用。
🆔 应用IDSTRING填写或修改后,点击“刷新应用参数”加载该应用暴露的参数。
🧩 应用参数JSONSTRING{}由动态参数面板自动维护。
⚙️ 实例类型COMBO默认3 options: 默认, plus, pro
🖼️ 图像1optIMAGE自动对应应用暴露的第 1 个 IMAGE 参数。
🖼️ 图像2optIMAGE自动对应应用暴露的第 2 个 IMAGE 参数。
🖼️ 图像3optIMAGE自动对应应用暴露的第 3 个 IMAGE 参数。
🖼️ 图像4optIMAGE自动对应应用暴露的第 4 个 IMAGE 参数。
🖼️ 图像5optIMAGE自动对应应用暴露的第 5 个 IMAGE 参数。
🖼️ 图像6optIMAGE自动对应应用暴露的第 6 个 IMAGE 参数。
🖼️ 图像7optIMAGE自动对应应用暴露的第 7 个 IMAGE 参数。
🖼️ 图像8optIMAGE自动对应应用暴露的第 8 个 IMAGE 参数。
🎞️ 视频1optVIDEO自动对应应用暴露的第 1 个 VIDEO 参数。
🎞️ 视频2optVIDEO自动对应应用暴露的第 2 个 VIDEO 参数。
🎞️ 视频3optVIDEO自动对应应用暴露的第 3 个 VIDEO 参数。
🎞️ 视频4optVIDEO自动对应应用暴露的第 4 个 VIDEO 参数。
🎵 音频1optAUDIO自动对应应用暴露的第 1 个 AUDIO 参数。
🎵 音频2optAUDIO自动对应应用暴露的第 2 个 AUDIO 参数。
🎵 音频3optAUDIO自动对应应用暴露的第 3 个 AUDIO 参数。
🎵 音频4optAUDIO自动对应应用暴露的第 4 个 AUDIO 参数。
📝 文本1optSTRING自动对应应用暴露的第 1 个文本或下拉参数,上游输入优先。
📝 文本2optSTRING自动对应应用暴露的第 2 个文本或下拉参数,上游输入优先。
📝 文本3optSTRING自动对应应用暴露的第 3 个文本或下拉参数,上游输入优先。
📝 文本4optSTRING自动对应应用暴露的第 4 个文本或下拉参数,上游输入优先。
📝 文本5optSTRING自动对应应用暴露的第 5 个文本或下拉参数,上游输入优先。
📝 文本6optSTRING自动对应应用暴露的第 6 个文本或下拉参数,上游输入优先。
📝 文本7optSTRING自动对应应用暴露的第 7 个文本或下拉参数,上游输入优先。
📝 文本8optSTRING自动对应应用暴露的第 8 个文本或下拉参数,上游输入优先。
📝 文本9optSTRING自动对应应用暴露的第 9 个文本或下拉参数,上游输入优先。
📝 文本10optSTRING自动对应应用暴露的第 10 个文本或下拉参数,上游输入优先。
📝 文本11optSTRING自动对应应用暴露的第 11 个文本或下拉参数,上游输入优先。
📝 文本12optSTRING自动对应应用暴露的第 12 个文本或下拉参数,上游输入优先。
📝 文本13optSTRING自动对应应用暴露的第 13 个文本或下拉参数,上游输入优先。
📝 文本14optSTRING自动对应应用暴露的第 14 个文本或下拉参数,上游输入优先。
📝 文本15optSTRING自动对应应用暴露的第 15 个文本或下拉参数,上游输入优先。
📝 文本16optSTRING自动对应应用暴露的第 16 个文本或下拉参数,上游输入优先。
🔢 数字1optFLOAT自动对应应用暴露的第 1 个数字参数,上游输入优先。
🔢 数字2optFLOAT自动对应应用暴露的第 2 个数字参数,上游输入优先。
🔢 数字3optFLOAT自动对应应用暴露的第 3 个数字参数,上游输入优先。
🔢 数字4optFLOAT自动对应应用暴露的第 4 个数字参数,上游输入优先。
🔢 数字5optFLOAT自动对应应用暴露的第 5 个数字参数,上游输入优先。
🔢 数字6optFLOAT自动对应应用暴露的第 6 个数字参数,上游输入优先。
🔢 数字7optFLOAT自动对应应用暴露的第 7 个数字参数,上游输入优先。
🔢 数字8optFLOAT自动对应应用暴露的第 8 个数字参数,上游输入优先。
🔘 布尔1optBOOLEAN自动对应应用暴露的第 1 个布尔参数,上游输入优先。
🔘 布尔2optBOOLEAN自动对应应用暴露的第 2 个布尔参数,上游输入优先。
🔘 布尔3optBOOLEAN自动对应应用暴露的第 3 个布尔参数,上游输入优先。
🔘 布尔4optBOOLEAN自动对应应用暴露的第 4 个布尔参数,上游输入优先。
🔘 布尔5optBOOLEAN自动对应应用暴露的第 5 个布尔参数,上游输入优先。
🔘 布尔6optBOOLEAN自动对应应用暴露的第 6 个布尔参数,上游输入优先。
🔘 布尔7optBOOLEAN自动对应应用暴露的第 7 个布尔参数,上游输入优先。
🔘 布尔8optBOOLEAN自动对应应用暴露的第 8 个布尔参数,上游输入优先。
📋 额外节点参数JSONoptSTRING[]可选高级覆盖;相同 nodeId + fieldName 会覆盖动态表单值。
🔁 最大轮询秒数optINT240060–7200
⏱️ 轮询间隔optINT52–60
⌛ 请求超时optINT12010–600
🚫 出错时跳过optBOOLEANfalse

Outputs (5)

NameTypeDescription
🖼️ 图像IMAGE
🎬 视频VIDEO
🆔 任务IDSTRING
🔗 输出URLSTRING
📋 响应信息STRING