Neural · Resultado de texto
NUTextResult is a bucket for text — and no, it doesn't display anything by itself
It's the least interesting node in the pack, and that's by design. Neural · Resultado de texto exists so the Neural Underground panel can show you the text a run produced - a caption, an AI-rewritten prompt, the prompt that actually was used - and hand it to another module with one click. It takes a string at the end of a graph and publishes it to ComfyUI's UI output.
No model, no VRAM, no config - its whole implementation is five lines of Python.
Why the pack needs a text sink at all
Neural Underground is a cyberpunk-panel wrapper over twelve prebuilt workflows. You press ◈ NEURAL, pick a module, fill in a few controls, hit run - the same itch ComfyUI's own App Mode was built to scratch, where one author pays the complexity tax and everyone else sees a form.
The catch is that ComfyUI natively shows you pixels. It has no built-in "and also give me the caption that vision model just wrote" that works inside a graph nobody is looking at. So the author wired a text-output node at the end of six of the twelve workflows, and the panel watches for it.
Where it earns its keep: El Escáner (module 01) runs Qwen3-VL over your photo and describes it. That description leaves the graph as a string, lands here, shows up in the results panel, and Enviar a… pipes it into El Implante's prompt field.
How it works
The source is unusually literal. NUTextResult declares one required input, text, marked forceInput: True; RETURN_TYPES = () - no outputs at all; OUTPUT_NODE = True; and its function returns {"ui": {"text": [str(text)]}}.
Two things worth knowing before you wire it:
It can't be typed into. forceInput means the text field renders as a socket, not a text box - that's why the node in the shipped workflows has zero widgets and looks empty on the canvas. Wiring is mandatory.
It displays nothing on its own. Returning ui.text doesn't paint a text box in the node; it gets attached to the run's output record, which standard ComfyUI republishes as an executed event. With no widget named text on the node, there's nothing to print into. The Neural panel is the consumer: its JS filters the run's output nodes by type, reads output.text, and renders a result card. That's why it sits behind a ComfySwitchNode labelled ¿Prompt mejorado?: it publishes the prompt after the AI-enhance switch, so the panel always shows what actually reached the sampler.
An OUTPUT_NODE with no return types is an execution root - the scheduler works backward from nodes like this, same as it does from Save Image.
The one input, and the lack of outputs
| Field | What it is |
|---|---|
| text (required, STRING, forceInput) | the string to publish. Wire any STRING source into it |
| outputs | none. It's a sink |
Feed it from a TextGenerate node, a PrimitiveString, a captioner's text output - anything that emits STRING. You can't wire its result anywhere because there's nothing to wire, so if the text has to keep travelling, use a passthrough and hang this off a branch.
Installing it
It ships in the pack, so install the pack. ComfyUI-Manager → Custom Nodes Manager → search Neural Underground, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Gustaafvito/neural-underground neural_underground
Restart ComfyUI and hard-reload the browser (Ctrl+F5). ComfyUI 0.37 or newer is required per pyproject.toml; the advertised 16 GB VRAM and 32 GB RAM are for the modules, not this node. dependencies is empty - everything this node touches is core - and the README's only external requirement (comfyui_controlnet_aux) is for the pose scanner. It needs no model downloads at all, so if you only want the text sink you're done in ten seconds.
Common issues
You added it to your own graph and it looks dead. Expected. Nothing renders in the node - check the panel results, or the run history where ComfyUI keeps the ui payload for the finished prompt.
It never fires. The string has to reach it in an executed branch. Mute the node upstream, or let the run error before it, and there's no executed event and no text.
You're not using the panel. Then this node is mostly pointless - grab a general display node instead (rgthree's Display Any, or pythongosssss' Show Text), both of which ship the JS to actually draw the string. The "my show-text node doesn't populate" complaint is a recurring one here, and it's usually ordering or a dead branch, not the node.
Almost no outside coverage. The pack is new and small - searching the usual communities turns up nothing about it or its author. No controversy, but no war stories either - the source, readable in one screen, is your documentation. And as always: custom nodes are arbitrary Python running with your permissions.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — |
Outputs (0)
No outputs