URN Text Edit
The node that stops the queue and waits for you to fix the text
- STRING
ComfyUI is a batch machine. You hit Queue, it runs the graph, you get an output. There's no natural place to say "wait, let me read that first". URN Text Edit is that place: execution reaches it, the workflow stops dead, the incoming text appears in an editor, and nothing downstream runs until you click Accept Changes.
The obvious use is lyrics. An LLM wrote them, or a transcriber produced them, and the next step is a three-minute YuE2 music generation. You'd rather proofread than re-roll a song because the model wrote "bridge" where you meant "chorus".
How it works
The node has one required input, source, which takes any STRING. When the prompt reaches this node, the text is pushed to the node's frontend through a small local HTTP route the pack registers on ComfyUI's own web server, and the node blocks. Three buttons, and the distinction between them is the whole design:
- Save Changes - browser/OS save picker, writes the editor contents to a
.txt. Does not resume. - Load Existing - loads a
.txtinto the editor, replacing what's there. Does not resume. - Accept Changes - the only button that continues the workflow. The edited text goes out through the
STRINGoutput, and downstream nodes proceed.
Two deliberate choices underneath: the node is registered as an execution root/output node so ComfyUI doesn't prune it when a downstream node lazily consumes the string, and its fingerprint_inputs returns NaN - the standard ComfyUI idiom for "always rerun" - so the pause-and-review step happens on every queued run rather than being served from cache. That's the right call for a gate, and it's also why it will always stop a loop.
Inputs and outputs
The interface is a single wire each way. source takes the STRING you want reviewed - wire it from a lyrics output, an LLM text node, or a plain text primitive if you're using the node as a manual prompt station. The STRING output carries the accepted, possibly-edited text downstream, so it slots in anywhere text flows: a YuE2 lyrics input, or URN Audio Style Selector when you're hand-trimming a style string.
There's nothing else to configure: no widgets, no toggles, no max length. One input, one output, three buttons.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Clivey1234/Comfyui_URN_AudioTools
Restart, then hard refresh (Ctrl+F5) if you're updating an existing copy - the editor is a frontend file and a cached old version is the usual reason a node's controls look wrong. ComfyUI Manager: search Comfyui_URN_AudioTools. No extra dependencies are needed for this node.
It shows up as URN Text Edit in the URN Audio Tools category.
Common issues
I clicked Save Changes and the workflow never continued. Correct behaviour. Saving and loading are file operations; only Accept resumes. The readme is emphatic about this because it's the number-one confusion - there is no auto-accept, on purpose.
My queue is stuck. It's waiting for you. Flip back to the ComfyUI tab, accept, and it carries on. There's no timeout.
It stops every single iteration of a batch. Also by design - the node is intentionally non-cacheable so each queued run gets a review. If you've already approved a text and want it to just flow through, bypass the node (Ctrl+B) rather than deleting it, so the wiring survives.
I want to keep the proofread text permanently. Click Save Changes before Accept; the .txt file is independent of the workflow. If you only want it in the graph, the accepted string is the value that propagates, and the node's editor contents are what you'll see next time you load the workflow.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| source | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |