Image Stage
The text-to-image node that starts every ComfyTV pipeline
- texts
- images
- images
- image
Every ComfyTV image workflow starts the same way: drop a Generate → Image stage, type a prompt, pick a workflow, hit Run. It's the "Local SD1.5" node from the README's quick tour, and it's the front door for everything else in the pack - after this node you get a picker, then edit, erase, upscale, or push frames into a video stage. If you're new to ComfyTV, this is the first node you'll actually run.
ComfyTV is jtydhr88's canvas app (~190 stages, each its own node), and Image Stage is the flagship Generate node. The workflow picker is the headline feature: it's not hard-wired to one model. It defaults to Local SD1.5, but you can bind any ComfyUI workflow as JSON - including your own - so "which backend runs this prompt" is a dropdown, not a rewrite.
How it works
The node drives a wrapped ComfyUI image workflow. The tooltip on workflow says "Which backend image workflow to invoke when Run is clicked," and the schema is honest that it's "Placeholder for now" - the real breadth comes from binding workflows in the sidebar. The inputs:
- main_prompt - your prompt. Upstream text inputs are treated as additional context.
- resolution (default 1K) and aspect_ratio (default 1:1) - combined to compute the output (w, h). The combo values are "short side in px" tiers plus ratios.
- batch_size (1–8) - how many images per Run; the wrapped sampler runs once and emits this many samples.
- texts and images - autogrow inputs (
COMFY_AUTOGROW_V3) for wiring in extra prompt fragments and reference images.
Outputs: images (the full batch, COMFYTV_IMAGES) and image (the selected_index cell, 1-indexed, chosen by clicking a thumbnail in the output grid). The auto-spawned Image Picker is usually the smarter next step than grabbing image directly.
The hidden inputs, explained once
force_run_token, project_id, parent_output_id, and custom_params (a JSON of user parameter attachments) are the internal inputs, all marked "Internal" in the schema and populated by the frontend's projectStore. They're the plumbing behind per-node Run. You never set them by hand.
Installing it and getting a model
Same pack, same steps:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
or ComfyUI Manager ("ComfyTV"), full backend restart, then ComfyTV → Generate.
The pack itself declares no pip deps, but the Local SD1.5 workflow needs v1-5-pruned-emaonly-fp16.safetensors in ComfyUI/models/checkpoints/ (link in the README's models page). And the whole-pack gotcha: on ComfyUI Desktop, macOS, or multiple installs, clone into the running instance by absolute path, verify custom_nodes/ComfyTV/__init__.py isn't nested, and fully restart.
Common issues
- "Missing model" - no SD1.5 checkpoint in
checkpoints/. Download it, or bind a workflow for a model you already have. - All eight outputs look identical - batch runs share the sampler; that's a seed/
control_after_generatestyle issue, not the node. The picker is there so you can roll a few batches and keep the good ones. - Prompt context is missing - text fragments wired into
textsare additional context; if they're not showing up, check the wires, and remembermain_promptis the primary.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| workflow | COMBO | Local SD1.5 | Which backend image workflow to invoke when Run is clicked. Placeholder for now. |
| resolution | COMBO | 1K | Target output resolution tier (the short side, in px). Combined with the aspect ratio to compute (w, h). |
| aspect_ratio | COMBO | 1:1 | Target output aspect ratio. Combined with resolution to compute actual (w, h) downstream. |
| batch_size | INT | 11–8 | How many images to generate per Run. The wrapped workflow's sampler runs once and emits this many samples. |
| main_prompt | STRING | Primary prompt — the user's intent for this stage. Upstream text inputs are treated as additional context. | |
| texts | COMFY_AUTOGROW_V3 | — | |
| images | COMFY_AUTOGROW_V3 | — | |
| selected_index | INT | 11–999 | Internal — 1-indexed cell pick for image-batch stages. Driven by clicking a thumbnail in the node's output grid. |
| custom_params | STRING | {} | Internal — JSON of user-defined parameter attachments/values for this node. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | COMFYTV_IMAGES | — |
| image | COMFYTV_IMAGE | — |