Sora 文生视频
Sora text-to-video inside ComfyUI, without a Sora API account
- video
- Filenames
- video_url
- response_info
- prompt_used
The honest pitch for this node is in the name: it's Sora, in your ComfyUI graph, without you needing an OpenAI account, a Sora subscription, or even a GPU. SoraText2Video is the flagship of the ComfyUI_Sora pack by Ken-Chen (xuchenxu168), and like everything else in the pack it's an API-wrapper node, not a local model. You type a prompt, it phones a Chinese reseller that proxies OpenAI's Sora, polls until the clip is done, and drops the mp4 back into your workflow as a VIDEO object. Cost is per clip, and it adds up - think of it as a metered Sora in your toolbox, not a free one.
How it works
Under the hood this is requests with good manners. The node builds a payload from your prompt plus aspect ratio, quality, duration, style, and motion intensity, POSTs it to the provider's /videos endpoint, then polls the status endpoint until the job is completed, downloads the file to ComfyUI/output/sora_videos/, and hands you a path. Your GPU never touches it. Three providers are supported - T8 (ai.t8star.cn), Comfly (ai.comfly.chat), and Aabao (newapi.ai) - plus US/HK regional variants of T8 and Comfly. They're all mirrors of the same closed model, so the main difference between them is price, latency, and which model names they carry (Aabao is the one with sora-2-pro).
The inputs that actually matter
- prompt - your only real creative control. The README's advice holds: specific subject, camera move, mood, then a quality tail like "cinematic, 4K".
- api_provider / api_key - pick T8 to start (cheapest, most stable per the README). Leave the key blank and it reads
config.jsonin the pack folder. - quality / duration / hd - this is where people trip. 1080p only works with
sora-2-pro; HD mode only withsora-2-pro/sora-2; HD and 25s are mutually exclusive; 15s clips need a 15s model; 25s issora-2-proonly. The node validates these and prints warnings, so read the console. - style -
auto,cinematic,realistic,anime,3d,oil_painting,watercolor. Handy for steering without touching the prompt. - seed - -1 for random, fixed for reproducible-ish results across retries.
You get five outputs: video (VIDEO), Filenames (VHS-compatible), video_url, response_info (JSON), and prompt_used. Wire video into a preview node or straight into the pack's watermark/upscale nodes.
Install
ComfyUI Manager → search "ComfyUI_Sora" → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/xuchenxu168/ComfyUI_Sora
cd ComfyUI_Sora
pip install -r requirements.txt
Restart, then grab an API key from a provider and put it either in the node field or in config.json (api_key, aabao_api_key, etc.). No model downloads - the pack's dependencies are just requests, numpy, Pillow, opencv, torch, and ffmpeg-python.
Common issues
- "未配置 API Key" (no key configured) - the node returns the error text in
response_info. Key is missing or wrong; check config.json and that the account has balance. - Video download fails / 404 - the clip is still cooking server-side, or the provider's CDN link expired. The sora-2-pro 25s job takes 20–30 minutes; give it time, or grab the URL from
video_urland pull it manually. - From China - the README has a
proxyfield in config.json for exactly this. From elsewhere, latency to these endpoints is fine but not snappy.
One last take: because these are third-party resellers of a closed API, uptime and content policy are theirs to control, not OpenAI's and not yours. Keep expectations at "good enough for short-form drafts" and it's a great node.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | 一只可爱的小猫在阳光下玩耍 | — |
| aspect_ratio | COMBO | 16:9 | 横屏(16:9)适合YouTube/B站,竖屏(9:16)适合抖音/快手 |
| quality | COMBO | 1080p | ⚠️ 1080p 仅支持 sora-2-pro 模型,其他模型仅支持 720p |
| duration | COMBO | 5s | 视频时长,15s需要使用15s模型,25s仅支持sora-2-pro模型 |
| hd | BOOLEAN | false | ⚠️ HD高清模式仅 sora-2-pro 模型支持,不能与25s同时使用 |
| api_provideropt | COMBO | t8 | 选择API提供商:T8、T8-US、T8-HK、Comfly、Comfly-US、Comfly-HK 或 Aabao (newapi.ai) |
| api_keyopt | STRING | — | |
| modelopt | COMBO | sora_video2 | 8 options: sora_video2, sora-2-pro, sora-2, [Aabao] sora-2-landscape, [Aabao] sora-2-landscape-15s, [Aabao] sora-2-portrait, +2 |
| styleopt | COMBO | auto | 7 options: auto, cinematic, realistic, anime, 3d, oil_painting, +1 |
| motion_intensityopt | FLOAT | 0.50–1 | — |
| seedopt | INT | -1-1–2147483647 | — |
| output_diropt | STRING | sora_videos | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| Filenames | VHS_FILENAMES | — |
| video_url | STRING | — |
| response_info | STRING | — |
| prompt_used | STRING | — |