Nodes/Kinburg-Nodes/Show Text (Markdown)
ComfyUI Node

Show Text (Markdown)

Prettier than the default, and it can save the file too

By Kinburg·Created 3 months ago·Updated 6 days ago· 1
Show Text (Markdown)
  • value
  • text
markdowntrue
save_path
autosavefalse
use_saved_textfalse
saved_text

ComfyUI's stock text display is a raw textarea - fine for a prompt, miserable for the long, structured text this pack's nodes produce (style bibles, storyboard reports, ----separated prompt lists, Siren timelines). Show Text (Markdown) renders that as formatted markdown on the node, and quietly does two more things the core node can't: it can save the text to disk automatically, and it can override the input entirely so you can edit text and push it downstream without regenerating anything.

What it does

  • value takes anything - text, number, COMBO, a dict/list - and converts it to text for display. This input is lazy: with "use saved text" on, the input (and its upstream, e.g. an LLM) is not evaluated at all.
  • markdown toggles between rendered markdown (on) and an editable raw textarea (off). Toggling doesn't resize the node, which is a small mercy.
  • save_path + autosave - give it a path and it writes the text to disk on every run. Relative paths go under ComfyUI's output folder, a .md extension is added, and {date} / {time} / {datetime} expand to the current date/time. This is the poor man's "keep a log of what the storyboard wrote" - wire it to a prompts output and you have an audit file for free.
  • use_saved_text - the sneaky-powerful one. Off (default): show whatever's connected and run its upstream. On: output the text saved/edited here and don't evaluate the input, so the upstream never runs - including with a random seed, and it holds after a restart. Edit the text and re-queue to push it downstream without regenerating. saved_text is the node's stored text, managed by the editor (hidden in the UI), and it carries into the saved workflow.

The output is a single text STRING, so it slots in anywhere a string is expected - into a prompt field, into prompt_overrides on Morpheus Storyboard (after you've hand-edited a ----separated list), into Save Song's lyrics socket.

When you'd actually use the override

The main workflow this enables: run once, read the output (formatted, so the structure is actually legible), edit the one bad block, toggle use_saved_text, and re-queue - downstream runs with your edit and nothing upstream regenerates. For the pack's cache-heavy samplers that's a real saving: editing a prompt override this way doesn't invalidate every cached shot the way re-running the writer would. The flip side is the usual lazy-node trap: flip it on by accident and the text on screen silently stops tracking its input. If a number you changed upstream "isn't updating," check this toggle first.

Installing it

It ships in Kinburg/Kinburg-Nodes - ComfyUI Manager search "Kinburg-Nodes", or cd ComfyUI/custom_nodes && git clone https://github.com/Kinburg/Kinburg-Nodes, restart. No dependencies. There's also a preview-as-text route for plain display, but for this pack's structured outputs the markdown render is the one you'll reach for.

CategoryKinburg-Nodes/util

Inputs (6)

NameTypeDefaultDescription
valueopt*Anything — text, number, COMBO, dict/list… converted to text for display. LAZY: with 'use saved text' ON, this input (and its upstream, e.g. an LLM) is NOT evaluated.
markdownoptBOOLEANtrueOn: render the text as formatted markdown. Off: show an editable raw textarea. Toggling doesn't resize the node.
save_pathoptSTRINGPath for 💾 Save / autosave. Relative paths go under ComfyUI's output folder; a .md extension is added. {date}/{time}/{datetime} expand to the current date/time.
autosaveoptBOOLEANfalseWrite the text to save_path automatically on every run (needs a non-empty path).
use_saved_textoptBOOLEANfalseOff (default): take the connected input and run its upstream (e.g. the LLM); the shown text tracks the input. On: output the text saved/edited here and DON'T evaluate the input, so the upstream never runs (holds after a restart / with a random seed). Edit the text and re-queue to push it downstream without regenerating.
saved_textoptSTRINGThe node's stored text. Managed by the editor and hidden in the UI; it carries the edited text to run() and into the saved workflow.

Outputs (1)

NameTypeDescription
textSTRING