NS Caption Style
One style node, every caption node obeys it
- caption_style
NSCaption Style (displayed "NS Caption Style") is the settings object for the pack's caption renderer. On its own it does nothing visible - it outputs a CAPTION_STYLE that you wire into NSCaption Overlay (and any other caption node in symbiotica-ai/comfyui-nodes), so a whole caption setup lives in one place instead of being scattered across widget defaults. Change the style once and every caption node wired to it follows.
That centralization is the actual point. When you're iterating on a reel and you want to try the "Beast" template against "Clean", you flip one dropdown instead of touching each overlay node. It's the same pattern as the pack's NS LLM Model Selector - a shared config object on a wire.
What you actually set
- template - Hormozi (default), Beast, Clean, Neon, Minimal. These are the look-and-feel presets; Hormozi is the punchy text-highlight style that dominates social ads, Neon and Minimal are the safer looks.
- animation - Pop, Bounce, Slam, Karaoke, Glow, Rise. How words enter. Karaoke is the word-by-word highlight that reads as "reel captions"; Slam and Pop are punchier.
- position - vertical position of the captions, 0–100 (default 75, i.e. lower third). This is the one to move when captions collide with a facecam or the platform's UI chrome.
- font_size (20–120), words_per_line (1–8, default 3), font_color, highlight_color - the typography. Leave colors empty to use the template's defaults; set them to override.
- emojis - on by default. Off if you want clean text.
- language - auto or a long list (en, el, es, fr, de, it, pt, nl, ja, ko, zh, ru...). Matters most when you don't wire a transcript, because auto-detect is where wrong-language captions come from.
- whisper_model - tiny/base/small/medium/large-v3. Only used when the overlay node transcribes internally.
baseis the default;medium/large-v3are more accurate but the first run downloads a multi-GB model.
Install
Same pack, same install: ComfyUI Manager search "Symbiotica", or clone + pip install -r requirements.txt. No API key, no model download on this node itself - the whisper model only downloads if a caption node actually runs internal transcription. No ffmpeg needed here either (though the overlay it feeds will want it).
Gotchas
The style only does something when it's connected to a caption renderer - a standalone style node on the canvas is an inert object, so don't be confused when nothing visibly changes. And two style details people trip on: position is a percentage of frame height, not pixels, so 75 means lower-third, not "75px up"; and if you override font_color, you're replacing the template's color, not layering on it. When captions come out with wrong language text, that's a transcript/whisper-model problem, not a style problem - set language explicitly.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| templateopt | COMBO | Hormozi | 5 options: Hormozi, Beast, Clean, Neon, Minimal |
| animationopt | COMBO | Pop | 6 options: Pop, Bounce, Slam, Karaoke, Glow, Rise |
| positionopt | INT | 750–100 | — |
| font_sizeopt | INT | 5820–120 | — |
| words_per_lineopt | INT | 31–8 | — |
| font_coloropt | STRING | — | |
| highlight_coloropt | STRING | — | |
| emojisopt | BOOLEAN | true | — |
| languageopt | COMBO | auto | 25 options: auto, en, el, es, fr, de, +19 |
| whisper_modelopt | COMBO | base | 5 options: tiny, base, small, medium, large-v3 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| caption_style | CAPTION_STYLE | — |