RH Text to Video
A cloud text-to-video node that returns a URL, not frames
- video_url
- task_id
Video generation is the single most demanding thing you can ask a GPU to do, which makes it the most obvious candidate to hand off to the cloud. RH Text to Video does exactly that: prompt in, API key and workflow ID supplied, and it runs a text-to-video workflow on RunningHub, waits out the render, and hands you back a URL to the finished video plus the task ID.
The mechanism is the same shape as the other Model nodes - submit a task via the open API, poll until done, read the results - with one crucial difference in what comes out. You do not get video frames or a VIDEO tensor. You get a video_url string. That's the whole output story, and it's the thing most people trip on.
The fields that matter
Required:
prompt- the video prompt (multiline).api_key,base_url,workflow_id- credentials (pasted directly, no RH Settings needed) plus the text-to-video workflow to run..cnbase URL by default;.aifor international.
Optional:
negative_prompt- sent along if filled.timeout(600s default) - cloud renders take a while; the higher default than the image nodes is intentional. Video jobs are exactly what hits this.
Outputs:
video_url(STRING) - the remote URL of the finished video.task_id(STRING) - so you can track or cancel it later.
What you do with a URL
Wire video_url into RH Download Video to pull the file down and (optionally) extract frames as an IMAGE tensor for local processing, or just copy it to a browser. If you want the video as frames for further local work, that Download node's extract_frames option is the path - this node itself never touches the actual video bytes, it only ever sees the URL.
If the workflow returns something that isn't a video, the node falls back to returning the first result URL, so always sanity-check that the URL points at a video and not a stray image or error page.
The hardcoded node ID, one more time
You can probably guess by now: the source bakes nodeId "6" for the prompt and "7" for the negative. This node assumes your workflow's text node is 6. Stock RunningHub text-to-video templates typically match; hand-built workflows often don't, and a mismatch means your prompt silently never reaches the sampler. When that happens, switch to RH Node Info + RH Execute Workflow where you control the IDs.
And the platform realities apply with extra force here: video jobs are the expensive ones, so watch timeout, and a render on RunningHub's shared pool can drift well past its estimate. Failed runs return an error string in video_url rather than a URL - read it before assuming your workflow is broken. Your prompt leaves the machine, and the platform enforces its own content filter, which the community has confirmed is strict on video.
Install
cd ComfyUI/custom_nodes/
git clone https://github.com/liangzheng1128/ComfyUI-RunningHub
cd ComfyUI-RunningHub
pip install -r requirements.txt
or ComfyUI Manager → search "RunningHub", restart. Light deps: requests, websocket-client, Pillow, numpy - no local video stack needed, which is sort of the point.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt for video generation | |
| api_key | STRING | — | |
| base_url | STRING | https://www.runninghub.cn | — |
| workflow_id | STRING | RunningHub workflow ID for text-to-video | |
| negative_promptopt | STRING | — | |
| timeoutopt | INT | 6001–9999999 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |
| task_id | STRING | — |