← ComfyTV Text
Getting ComfyTV text back into normal ComfyUI
- text
- STRING
ComfyTV is a canvas app that lives inside ComfyUI, and it has its own idea of what "text" is. A ComfyTV Text Stage or the → ComfyTV Text bridge hands you a COMFYTV_TEXT snapshot - a string that lives in the ComfyTV project, not something the native node graph can see. Every native node that wants a string - CLIP Text Encode, Show Text, any LLM chain - expects a plain STRING. ← ComfyTV Text is the one-way door between those two worlds: COMFYTV_TEXT in, STRING out, nothing else.
That's the whole job, and the "←" in the name is doing real work. → bridges run and snapshot data into the ComfyTV project; this one points the other way, pulling text out of it and into the normal graph.
How it works
The Python is about as thin as a node gets. execute does str(text or "") and returns it as a STRING - the source literally calls it a pass-through with no disk I/O. No ▶ Run, no project snapshot, no queue semantics beyond the graph's own. Wire it after a ComfyTV text producer and it behaves like any normal node on the ComfyUI queue: it runs when the graph runs.
The one input is text (COMFYTV_TEXT). The single output is STRING. That's the entire schema - there is nothing to configure, which is the point of a bridge.
When you actually need it
The concrete case is a ComfyTV prompt chain feeding a native branch. Say a Text Stage drafts a narrative, and you want a regular CLIP Text Encode or a third-party string tool to chew on it. Or you just want to eyeball what a ComfyTV stage emitted - debug with Show Text. Those all read STRING, so the bridge is the adapter.
The gotcha is the reverse direction: if upstream is empty (a Text Stage you never ran, or an empty → ComfyTV Text), you get an empty string, not an error. Check upstream before you chase ghosts downstream.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Restart the ComfyUI backend (a full restart, not a tab refresh) and the nodes appear under the ComfyTV category in the Add-Node menu. ComfyUI Manager also finds it by searching "ComfyTV". Two install gotchas from the README bite more often than they should: on ComfyUI Desktop, macOS, or a multi-install setup, the relative cd can clone into the wrong instance - read the startup log for the base path it actually loaded and clone into that absolute path, quoted. And the first level of custom_nodes/ComfyTV/ must contain __init__.py; if you see a nested ComfyTV/ComfyTV/…, move the inner folder up.
The good news: the pack declares zero Python dependencies. Everything heavy in ComfyTV runs in the browser or through ffmpeg/PyAV that ComfyUI already ships, so there's no dependency chase.
Troubleshooting
- Empty STRING on the other end. Upstream ComfyTV text was never Run, or it's genuinely empty. Run the producing stage first.
- Node not appearing after install. Wrong instance or a nested folder - check the layout and restart the backend, not the browser.
- Wondering why you'd use this instead of → ComfyTV Text? The arrow is the whole story:
→pushes into ComfyTV (needs a Run),←pulls out to native (plain graph execution). They pair up as a round-trip.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | COMFYTV_TEXT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |