Nodes/ComfyTV/Text Stage
ComfyUI Node

Text Stage

Generate text with a local LLM, wired into the rest of your canvas

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Text Stage
  • texts
  • images
  • videos
  • text
force_run_token0
project_id
parent_output_id0
workflowLocal Qwen3 4B
main_prompt
custom_params{}

An LLM inside a ComfyUI graph is a mainstream pattern now - prompt enhancement, captioning, structured prompt generation - and Text Stage is ComfyTV's entry point for it. It's a Generate stage that runs a local text workflow and hands the result out as text, so you can chain "generate a description" straight into a video or image stage without copy-pasting between apps.

It's a ComfyTV Generate stage: type what you want, pick a workflow, hit Run, and get COMFYTV_TEXT downstream.

The inputs

  • workflow - which backend text workflow to invoke, defaulting to Local Qwen3 4B. This is the honest part: the tooltip says "Placeholder for now." Like the pack's other workflow-driven stages (Upscale, SubtitleGen), this runs a local ComfyUI workflow, and the shipped one needs a real model: qwen_3_4b.safetensors in ComfyUI/models/text_encoders/ (the pack's models doc links the HuggingFace source). No model, no output.
  • main_prompt (multiline) - your intent for this stage. The tooltip notes that upstream text inputs are treated as additional context, and the node combines them (newline-separated) with your main prompt before calling the workflow.
  • texts, images, videos (autogrow inputs) - additional context slots. Wire an upstream text stage here and its output joins the prompt; images/videos get passed along to the workflow as inputs it can use.
  • custom_params - internal JSON of user-defined parameter attachments; leave it alone.

The project_id / parent_output_id / force_run_token inputs are internal frontend bookkeeping - ignore them.

How it works

Text Stage packages your combined prompt (main + upstream texts) and any attached media, then invokes the selected text workflow through the pack's local-workflow runner. Because it's workflow-driven, the LLM actually running is whatever your chosen workflow loads - the stage is the plumbing around it. The "additional context" behavior is what makes it feel like a node rather than a chat box: upstream stages feed it, and its output feeds the next generation stage.

Install

ComfyTV ships ~190 stages in one pack; this node comes with it.

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI fully and look under ComfyTV → Generate. ComfyUI Manager finds it by searching "ComfyTV". The pack itself declares zero Python dependencies, but the Qwen3 4B workflow needs its ~2GB+ model downloaded into models/text_encoders/ (see docs/models.md for the exact filename and link). On ComfyUI Desktop or macOS, clone into the running instance's absolute path from the startup log rather than trusting the relative cd.

Troubleshooting

  • No output / workflow errors. Almost always the model: the default workflow needs qwen_3_4b.safetensors in text_encoders/. Get that file and the stage has something to run.
  • "Placeholder for now" vibes. The tooltip is candid - this stage is early in the pack's roadmap. It works when you have a text workflow to point it at, but don't expect a polished product.
  • Output repeats the input. A bare chat model echoes your prompt; that's the workflow's prompting, not the stage. Swap or configure the workflow's system prompt.

If you already run a local LLM for prompt work, this is the node that lets ComfyTV use it in the graph. Just remember the model download is on you.

CategoryComfyTV/Generate

Inputs (9)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
workflowCOMBOLocal Qwen3 4BWhich backend text workflow to invoke when Run is clicked. Placeholder for now.
main_promptSTRINGPrimary prompt — the user's intent for this stage. Upstream text inputs are treated as additional context.
textsCOMFY_AUTOGROW_V3
imagesCOMFY_AUTOGROW_V3
videosCOMFY_AUTOGROW_V3
custom_paramsSTRING{}Internal — JSON of user-defined parameter attachments/values for this node.

Outputs (1)

NameTypeDescription
textCOMFYTV_TEXT