EcoHash VLM Describe
Turn any image back into a prompt — captioning in the graph, no local VLM
- image
- STRING
You've got an image you like and no idea what prompt made it - or you want to regenerate it in a different style. That's the job EcoHash VLM Describe exists for: it looks at an IMAGE and returns a STRING description, with the vision-language model running on EcoHash's servers rather than your GPU. The default prompt is exactly the one you'd want: "Describe this image in detail for use as an image-generation prompt." You feed that output into any prompt widget and you're off.
Why you'd reach for it
The pack ships the canonical workflow as describe_and_regenerate.json: LoadImage → VLMDescribe → Image Generate. It's the hosted-API take on the captioning pattern that's now routine across ComfyUI - captioners and describe-then-regenerate chains are mainstream, not novelty. It's also handy for img2img seeds and for small captioning jobs. The catch is the standard one for hosted vision: the image leaves your machine, and each description is a metered call. For bulk dataset captioning you'd still want a local tool like JoyCaption or Florence-2 (free, uncensored, offline); this node is for when you want a capable hosted VLM in the graph with zero VRAM and zero model files.
How it works
The node converts your IMAGE to PNG bytes, base64-encodes them into a data URL, and sends a multimodal message to /chat/completions - text prompt plus the image in one request. The model dropdown lists eight hosted vision models: qwen3-vl-8b-instruct is the balanced default, with gemma-4-31b-it, qwen3-omni-30b-a3b-instruct, and a spread of newer Qwen3.5/3.6 variants if you want more reasoning headroom. max_tokens defaults to 512 (up to 8192) - bump it if you ask for very detailed descriptions.
The inputs that matter
- image - one
IMAGEtensor. Like the rest of the pack's image nodes, it processes exactly one image per call and raises a clear error if you feed it a batch (split with an "Image From Batch" node). - model - the vision catalog,
qwen3-vl-8b-instructas your safe first pick. - prompt - what you want the model to say. The default detail-oriented instruction is good; you can ask for tags, a style breakdown, whatever the job needs.
- max_tokens - 512 default; raise for longer output.
Output is STRING, which wires into a prompt box, a text viewer, or another node.
Where people get burned
- Don't trust one caption for a training set. Every VLM - hosted or local - mangles multi-subject attribution: two people in frame and it mixes up who's wearing what. The KB's captioning guidance is blunt about this: auto-caption with a VLM, audit small sets by hand. And a description is a starting prompt, not a faithful transcription of the image.
- Reasoning models can return empty if they spend the whole token budget thinking - same failure the pack's LLM node guards against. If you get the "no completion" error with a newer Qwen model, raise
max_tokens. - The cache. Re-queue an unchanged graph and you get the cached caption with no new call. Change any input to re-describe.
- 401 / 402 - bad key or no credit, same for all six nodes in the pack.
Install
ComfyUI Manager: search EcoHash, install "ComfyUI-EcoHash", restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/ecohash-ai/ComfyUI-EcoHash.git
cd ComfyUI-EcoHash
pip install -r requirements.txt # just `requests`
Sign up at ecohash.com for a free starter credit, then set the key via the ECOHASH_API_KEY env var or a config.ini (copy config.ini.example and paste it in). No node has a key widget, deliberately, so your key never gets baked into a workflow file you share. Load an image, queue, and read what the model sees in your picture. It's a fresh pack with no community footprint yet - open, MIT-licensed, and thin enough to skim the source, which is exactly what you should do before handing a key to any new node.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | COMBO | 8 options: gemma-4-31b-it, qwen3.5-35b-a3b, qwen3-omni-30b-a3b-instruct, qwen3-vl-8b-instruct, qwen3.5-27b, qwen3.6-27b, +2 | |
| prompt | STRING | Describe this image in detail for use as an image-generation prompt. | — |
| max_tokens | INT | 5121–8192 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |