AI Prompt Pixaroma
AI Prompt Pixaroma turns whatever you wire in into text
- clip
- image
- video
- audio
- text
AI Prompt Pixaroma is the node that finally makes a local LLM a normal citizen of your ComfyUI graph instead of a detour to a browser tab. The name is the pitch: you give it a model you already own, an instruction you save on the node, and whatever you wire in - a picture, a video, audio, text - and it hands back text. No API, no account, no key, nothing sent anywhere. Everything runs on your machine through a language model sitting in your text_encoders folder.
Here's the trick that makes it more than a toy: the instruction - Pixaroma calls it the formula - lives on the node, not in a shared file. So three copies of this node on the same canvas are three independent jobs. One turns a photo into a prompt, the next rewrites it in another style, a third names the mood of an audio clip, and because the output is plain text and the input takes plain text, they chain with nothing in between. That chaining is the whole point, and it's why the node is a pass-through when nothing is configured - wire nothing and your idea and any wired text just flow out unchanged, so you can drop it into a live graph and set it up afterwards.
The inputs that matter
All five are optional, which is deliberate:
text- plain text from another node, joined with your idea. Which one comes first is a setting.image- a picture for the model to look at. Needs a vision model (a Qwen3-VL build); a text-only model accepts the picture and silently ignores it.video- video frames as an image batch. Assumed 24 fps and sampled down to one frame per second inside the model, so long clips are fine.audio- sound the model can listen to. Most vision models can't hear, so this needs one that can.clip- a model on a wire from a CLIPLoader, used instead of the one picked in settings while connected.
The single output is text - what the model wrote, which wires straight into a CLIPTextEncode, a Show Text, another AI Prompt, anything that takes a string.
The node ships with six ready-made recipes, each naming the model it was measured on: two for Krea 2 (from your idea, or from a picture), one for Z-Image Turbo, and three audio/video ones (transcribe, describe a recording's sound, or watch a clip and write the video prompt that would recreate it). A recipe carries the sampling settings as well as the wording, because on these models the two are what make it work. You can share a recipe as a plain .txt or to the clipboard.
The model it needs
Because it must see pictures, the reference model is a vision one: qwen3-vl-8b-heretic-1.3.0_fp8_e4m3fn.safetensors (about 10 GB, comfortable on 12 GB+ cards), with a 4B build for 8 GB cards. Drop it into ComfyUI/models/text_encoders/ and pick it from the node's gear. Text-only Qwen builds work too for anything that doesn't need to look.
Install and gotchas
The pack is on ComfyUI Manager - search Pixaroma, install, restart - or clone it:
cd ComfyUI/custom_nodes
git clone https://gitlab.com/pixaroma/comfyui-pixaroma.git
No extra Python dependencies for this node; PIL and torch come from ComfyUI itself. Two things trip people up: after an update the browser caches old node visuals, so hard-refresh with Ctrl+Shift+R (Cmd+Shift+R on Mac) before assuming the node broke, and if you want the Free VRAM switch to actually work, don't also have a CLIP wired in - the node skips unloading a model that isn't its own.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| clipopt | CLIP | Optional. A model on a wire, from a CLIPLoader or another node. While this is connected it is used instead of the one picked in the settings, and Free VRAM is skipped because that model is not this node's to unload. | |
| imageopt | IMAGE | Optional. A picture for the model to look at. Needs a vision model (a Qwen3-VL build); a text-only one accepts the picture and silently ignores it. | |
| videoopt | IMAGE | Optional. Video frames as an image batch. Assumed to be 24 frames per second and sampled down to one per second inside the model, so a long clip is fine. | |
| audioopt | AUDIO | Optional. Sound for the model to listen to. Needs a model that can hear; most vision models cannot. | |
| textopt | STRING | Optional. Text from another node, joined with your idea. Which one comes first is the segment in the node's slot band, and its default is in the settings. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | What the model wrote. With no model chosen this is your idea and any wired text joined together and passed through unchanged, so a chain keeps working while you are still setting it up. |