Neo Prompt Agent
The prompt box that doesn't want a CLIP
- image
- PROMPT
Most prompt nodes in ComfyUI are encoders - you hand them a CLIP model, they hand back conditioning. Neo Prompt Agent doesn't do that. It outputs a string, full stop. That sounds like less, and it's the whole point: it's the "write my prompt for me" half of the pack with the encoder half sawn off, so you can bolt it onto whatever already owns the text encoding in your graph.
Reach for it when the thing downstream isn't a sampler. NeoKrea2Generate takes a plain prompt string. So does NeoH3VideoGenerate. So does any CLIP Text Encode you already trust, a SaveText node, a filename builder, or an API node that wants a caption. If you're feeding a standard SDXL or Flux sampler, you want the sibling node, Neo Prompt Encoder - that one has the clip input and emits POSITIVE.
What it actually does
The node is a text editor with a brain. You type a short description in the bottom quick-input box, hit ✨, and an LLM rewrites it into a structured prompt that lands back in the text area. There's a preset library (🎲 random, ☰ browse, 💾 save with AI-generated title and tags), an @ reference to pull in images from LoadImage nodes in the current graph, and a skill selector at the bottom.
A skill is just a markdown file with YAML frontmatter holding a system prompt - the pack ships a pile of presets (general enhancement, cyberpunk, Chinese classical painting, realistic photography, a fashion-photo set, translation) plus task skills like reverse-prompt and image captioning, and you can drop a .zip or a folder of .md files in as your own. Skills are language-split (skill.md vs skill.cn.md), so a Chinese prompt doesn't get half-translated English glued onto it. Skills that need an image are flagged with a camera prefix; skills declaring multi_turn walk you through stages one ✨ at a time.
The inputs worth knowing
The required entries in the node definition - prompt, quick_input, skill_id, auto_generate, random_enabled, random_count, disable_text_input, quick_input_used - are all hidden widgets the web UI drives. You will never set them by hand; they exist in the schema so the front-end can persist state. What you actually touch:
text_input(optional, STRING, forced input): wire text in from another node, and the node switches itself to EXTERNAL mode and uses that instead of the text box.image(optional, IMAGE): hands a picture to a vision-capable skill for reverse-prompting. Paste, drag, or@-reference both work in the UI.auto_generate: tick it and the LLM call happens during the run instead of when you click ✨. That's what you want for batch runs.
The output is a single PROMPT - STRING, and worth flagging: it's a list-typed output, so a multi-result skill or random_count above 1 emits several strings and ComfyUI iterates the downstream node once per prompt. Great for a batch of variations of one idea; confusing the first time you queue once and get four images.
Install
ComfyUI Manager → search Neo Nodes → install → restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/neoneo-ai/ComfyUI-Neo-Nodes.git ComfyUI-Neo-Nodes
The pack's requirements.txt actually installs openai, Pillow, PyYAML and pypinyin - the README still says requests, which is exactly the kind of drift you stop trusting. Restart after installing.
Then pick an LLM. In the node settings you choose a provider - DeepSeek, Aliyun Bailian/Qwen, Kimi, Zhipu GLM, SiliconFlow, or any OpenAI-compatible endpoint including LM Studio, Ollama and OpenRouter - and paste an API key. Or run it locally: llama_cpp_python (optional, not in requirements) plus a GGUF in models/LLM/.
Where people get stuck
A blank key on a cloud provider is a 401, not a warning. The pack's own docs are blunt about it, and it's the number one "the node is broken" report.
Local GGUF is the fiddly path. llama-cpp-python compiles from source by default and fails on Windows constantly - install a prebuilt wheel matching your Python, OS and CUDA version instead of letting pip build it. If ComfyUI boots with Could not find module '...\ggml.dll', you're missing the Microsoft Visual C++ 2015-2022 redistributable, not the package.
Reasoning models look like they hang. Providers that put thinking in a separate field get a "💭 thinking" panel while they deliberate; there's a disable thinking toggle next to ✨ that sends enable_thinking: false, which is what you want for something like Krea 2 that only needs the final prompt.
And the standard caution: this node makes network calls with your key and executes arbitrary Python when ComfyUI loads it. That's the category that produced the LLMVSION malware incident. Install from the registry listing, not from a random mirror.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| disable_text_input | BOOLEAN | false | — |
| auto_generate | BOOLEAN | false | — |
| quick_input | STRING | — | |
| skill_id | STRING | — | |
| quick_input_used | BOOLEAN | false | — |
| random_enabled | BOOLEAN | false | — |
| random_count | INT | 11–16 | — |
| text_inputopt | STRING | — | |
| imageopt | IMAGE | — | |
| instance_uidopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| PROMPT | STRING | — |