EmAySee_Spectre API Connector
Send an image to a local vision LLM and get a caption back as a prompt
- image
- prompt
- thinking
Give it an image, it base64-encodes it, POSTs it to a vision-capable LLM served on your LAN, and returns the model's description as a string you can drop straight into a CLIP Text Encode. In one node: image-to-prompt. The idea is a familiar one - "describe this image, then generate a prompt from the description" - except instead of paying a hosted API, you're pointing at your own model server. The pack's startup banner literally says "SPECTRE v5.0", so "Spectre" is what the author calls that server.
The mechanism, in plain terms
The node takes the first frame of your IMAGE, clamps it to 0-1, converts it to a JPEG, and base64-encodes it into an OpenAI-style image_url data URI. Then it sends a chat-completions request where the user message has both text (your system_prompt + user_prompt) and the embedded image. The response comes back as JSON; the node grabs choices[0].message.content, and if the model wrapped its chain-of-thought in <think>...</think> tags it splits those out. You get two outputs:
prompt- the clean response text (the<think>section stripped), which is what you feed your prompt encoder.thinking- the model's reasoning, if it returned any, for your debugging pleasure or for wiring into a display node.
The inputs that actually matter
Most of the config is server plumbing, and the defaults are the author's own machine - you must change them.
spectre_url- defaulthttp://10.0.0.71:11434/v1/chat/completions. Port 11434 is Ollama's default, so this is almost certainly an Ollama (or Ollama-compatible) endpoint. Point it at your own Ollama instance.model_name- defaultqwen3-vl, i.e. Qwen3-VL, a vision-language model. It has to be a vision model or the image part of the request means nothing.system_prompt- the instruction to the model; the default is "Analyze this image and generate a detailed image generation prompt. Output only the prompt." Rewrite this to taste - it's the whole game.user_prompt- optional extra requirements appended after the system prompt.max_tokens/temperature- generation limits; 2048 and 0.3 are sane starting points for captioning.
There's no API-key input - the author's server is unauthenticated on the LAN, so this node sends none. If your Ollama sits behind a key, this isn't the node for you.
Installing it
It's one node in ComfyUI_EmAySee_CustomNodes - Manager search for the pack title, or:
cd ComfyUI/custom_nodes
git clone https://github.com/EmAySee/ComfyUI_EmAySee_CustomNodes
Restart ComfyUI. No requirements.txt to satisfy (requests and PIL are already there in any normal ComfyUI install) and no model files - the model lives on your Ollama server, not in ComfyUI.
Where people get burned
The URL, the URL, the URL. 10.0.0.71 is a private LAN address from the author's house - if you don't change it, the node will sit for a while and then hand you an API Connection Error. Run Ollama with a vision model loaded (ollama run qwen3-vl or whatever you have) and point the node at http://<your-host>:11434/v1/chat/completions. Second gotcha: the request has a 600-second timeout, so a slow local model won't trip it, but a wrong hostname will make you wait the full time before erroring. And if thinking comes back empty, that's normal - it only fills in when the model actually emits <think> tags.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| spectre_url | STRING | http://10.0.0.71:11434/v1/chat/completions | — |
| model_name | STRING | qwen3-vl | — |
| system_prompt | STRING | Analyze this image and generate a detailed image generation prompt. Output only the prompt. | — |
| user_prompt | STRING | — | |
| max_tokens | INT | 204816–8192 | — |
| temperature | FLOAT | 0.300–2 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| thinking | STRING | — |