NS Submagic Captions
Submagic-Style Captions, Inside ComfyUI
- video
- video
If you make short-form video, you know the look: big animated word-by-word captions with highlight colors, the style that took over TikTok and YouTube Shorts. Submagic is the tool that owns that look. NS Submagic Captions drags it into ComfyUI: you feed it a video, it uploads it to Submagic's API, applies the caption style you pick, and hands you the rendered result back.
Straight up: this is a paid cloud render, not a local node. You need a Submagic account and API key, and each render goes through their servers and takes a while. If you're already paying for Submagic, this is huge - it means the captions step lives in the same graph as your generation, so you can rebuild a whole video in one queue. If you wanted free local captions, this isn't it.
How it works
The node uploads your video to Submagic (api.submagic.co), polls until the render finishes, and downloads the captioned result. Every request is bounded with timeouts (uploads and downloads up to five minutes each), and pressing Cancel in ComfyUI actually stops the wait - the node checks ComfyUI's interrupt flag, which is more than most of these cloud nodes bother with.
The interesting choices:
- template - 30 styles, and they're named like the creators they copy: Sara, Dan, Devin, Tayo, Ella, Luke, plus the Hormozi series (Hormozi 1–5) that are the current default for business reels. Pick with the dropdown and you can preview the result without knowing what "that one style" is called.
- language - 14 languages including en, es, fr, de, ja, ko, zh, ar, hi. Transcription happens on Submagic's side.
- magic_zooms and magic_brolls - Submagic's auto effects. Magic zooms punches in on key moments; magic brolls inserts B-roll. Both off by default; they're the difference between "captioned" and "edited."
Inputs are video, language, template, and api_key (leave empty for the SUBMAGIC_API_KEY env var or Settings → Symbiotica). Output is the captioned video.
Install and setup
This is part of the Symbiotica pack. ComfyUI Manager → search "Symbiotica" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt
Then get a Submagic API key and set it via Settings → Symbiotica (or the SUBMAGIC_API_KEY env var). Avoid typing it into the node widget - like the other key fields in this pack, a key typed there gets baked into the workflow JSON you might share.
Troubleshooting
- It's slow - is it stuck? Probably not. Upload, render, download is a multi-minute pipeline. The node polls for minutes before timing out.
- The render fails partway - this is a paid API; check your Submagic account for the failed job and your billing. The node surfaces the API error, so read the message.
- Captions in the wrong language - you picked the language in the node, but if your source has no clean dialogue track, transcription quality drops. A whisper-transcribed source isn't fed in here; Submagic does its own transcription from the video's audio.
- Cancel doesn't kill it instantly - the interrupt check happens between poll cycles, so it stops at the next checkpoint, not mid-upload.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | — | |
| language | COMBO | en | 14 options: en, el, es, fr, de, it, +8 |
| template | COMBO | Hormozi 2 | 30 options: Sara, Daniel, Dan 2, Hormozi 4, Dan, Devin, +24 |
| api_keyopt | STRING | Submagic API key (or set in config.ini / SUBMAGIC_API_KEY env var) | |
| magic_zoomsopt | BOOLEAN | false | Auto zoom effects on key moments |
| magic_brollsopt | BOOLEAN | false | Auto B-roll insertion |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |