Nodes/Eden.art nodesuite/ImageDescriptionNode
ComfyUI Node Runs on cloud

ImageDescriptionNode

Get GPT-4 to caption your image β€” straight into a text wire

By edenartlabΒ·Created 3 years agoΒ·Updated 6 months agoΒ· 119
ImageDescriptionNode
  • image
  • STRING
β—„max_token100β–Ί
β—„endpointhttps://api.openai.com/v1β–Ί
β—„modelgpt-4-vision Lowβ–Ί
β—„promptConsicely describe the content of the images. Respond with a single description per line (ending with a period and a newline character).β–Ί

ImageDescriptionNode is the pack's "look at this picture and describe it" node, powered by OpenAI's vision model. Feed it an image, it calls the API, and you get a natural-language description back as a STRING you can wire anywhere - into a prompt, a filename, a log, a dataset pipeline. If you've ever wanted an automatic captioner inside the graph instead of a separate script, this is it.

It's part of eden_comfy_pipelines, Eden.art's 70+ node suite, and it's one of the pack's GPT-powered nodes.

What you set

  • image - the image to describe (first image in the batch is used).
  • max_token - cap on the response length, default 100. For quick captions 100 is plenty; bump it if you're extracting detailed descriptions.
  • endpoint - the OpenAI-compatible API base URL. Defaults to https://api.openai.com/v1. If you're on a proxy, a local LLM gateway, or an OpenAI-compatible provider, change it here.
  • model - gpt-4-vision Low or gpt-4-vision High. These map to the API's detail parameter: Low sends a downscaled image (faster, cheaper), High sends more pixels (better at fine details like text). Note the pack's code actually sends model gpt-4o to the API with the chosen detail level - the label is a legacy name for the same vision capability.
  • prompt - the instruction to the model, with a sensible default: "Concisely describe the content... a single description per line." Edit this to ask for tags, style analysis, or JSON output instead.

One output, STRING, the model's reply.

The catch: you need an API key

This is a paid, network-dependent node. It reads OPENAI_API_KEY from the environment - specifically, from a .env file in your ComfyUI root directory, which is the pack's documented setup:

OPENAI_API_KEY=your_api_key_here

If the key is missing, the node doesn't crash; it returns an error string telling you exactly that. Every call costs money and takes a couple of seconds, so this isn't something to wire into every frame of a batch without thinking. And because it's a network call, it fails loudly if you're offline or the endpoint is wrong - the output will start with Error: and that string can flow downstream, so check it.

What it's good for

  • Captioning reference images before they go into an IP-adapter or training-ish workflow.
  • Building prompt metadata - describe an image, then feed the description into a prompt builder.
  • Dataset assembly: batch-caption a folder for LoRA training data without leaving ComfyUI.

The honest comparison: if you want free, local captions, the pack's CLIP_Interrogator is the offline alternative (it downloads models on first run, no key needed). Use this node when you want real descriptions from a model that actually understands scenes, not tag-like guesses - and when you're willing to pay per call.

Installing it

Standard pack install - ComfyUI Manager (search "eden"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/edenartlab/eden_comfy_pipelines.git
cd eden_comfy_pipelines
pip install -r requirements.txt

Restart ComfyUI, then drop a .env file in the ComfyUI root with your key. The pack's requirements include openai and python-dotenv, which are the only dependencies this node cares about.

CategoryEden 🌱

Inputs (5)

NameTypeDefaultDescription
imageIMAGEβ€”
max_tokenINT1001–9223372036854776000β€”
endpointSTRINGhttps://api.openai.com/v1β€”
modelCOMBOgpt-4-vision Low2 options: gpt-4-vision Low, gpt-4-vision High
promptSTRINGConsicely describe the content of the images. Respond with a single description per line (ending with a period and a newline character).β€”

Outputs (1)

NameTypeDescription
STRINGSTRINGβ€”