APNext Claude Vision Analyzer
Describe or clone an image into a prompt with Claude
- images
- STRING
Feed it an image, get back a prompt that describes it. That's the "auto-prompter from a picture" people ask for constantly - you have a reference you love, you want a prompt that captures its subject, lighting and style so you can riff on it, and ClaudeVisionNode uses Anthropic's Claude vision models to write that description for you. It's the image-in counterpart to the pack's text-only Claude node, and it's the tool for reverse-engineering a look, seeding image-to-image, or building a consistent caption from a reference.
The demand for exactly this is real and current - the community's standard answer to "how do I go from an image + short idea to a detailed prompt" is a vision-language model wired as a ComfyUI node, and this is one of them. Claude's a strong describer. The tradeoff is the usual one for the cloud nodes in this pack: it's a paid API call and needs a key set in your environment.
How it works
The node encodes your images and sends them to Claude with an analysis system prompt, then returns Claude's written description as a string. The same tone controls as the text node apply: happy_talk toggles enthusiastic vs professional phrasing, compress with compression_level (soft/medium/hard) reins in length, and poster gives you poster-style copy. You can override the built-in instruction entirely with custom_base_prompt or override if you want, say, a tag-style caption instead of prose.
The inputs and outputs that matter
images- the reference image(s) to describe. This is the input the whole node exists for.claude_model- the model dropdown (defaults to a Sonnet tier). Sonnet describes more precisely; Haiku is cheaper for quick captions.compress+compression_level- keep the description tight. A vision model will happily write four paragraphs; your image encoder wants a few strong concepts, per the KB's attention-cap point.custom_base_prompt/override(optional) - swap in your own instruction, e.g. "output comma-separated Danbooru tags" for an SDXL/Illustrious target instead of natural-language prose.
The single output is STRING - the description - into a CLIP Text Encode or a text preview so you can read it first.
How to install it
ComfyUI Manager: search comfyui_dagthomas, install, restart. Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/dagthomas/comfyui_dagthomas
cd comfyui_dagthomas && pip install -r requirements.txt
then restart. It needs the anthropic library (in requirements.txt) and an API key. Set ANTHROPIC_API_KEY (or CLAUDE_API_KEY) in the environment before starting ComfyUI.
Where people get burned
- Key missing or set too late. Export
ANTHROPIC_API_KEYbefore launching ComfyUI; the node reads it at startup. - Won't run on hosted ComfyUI. Serverless and shared cloud instances typically block outbound API calls and custom env vars, so this node is a local-install thing. If you need image-to-prompt on a hosted service, a local vision model (the pack's QwenVL/MiniCPM nodes, or a Florence-2/JoyCaption node) is the path that works there.
- Match the output to your model. Claude writes natural-language prose by default. That's ideal for Flux/Z-Image; for a tag-based SDXL/Illustrious workflow, override the instruction to emit comma-separated tags, or you'll paste a paragraph into a box that wants tags.
- Compress it. A long, faithful description is not the same as a good prompt. Trim it, or the encoder drowns in detail and drifts.
- It describes, it doesn't reproduce. The prompt captures the vibe of the reference, not a pixel-exact copy. For true identity/style transfer you still want IP-Adapter or a LoRA alongside it.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| happy_talk | BOOLEAN | true | — |
| compress | BOOLEAN | false | — |
| compression_level | COMBO | 3 options: soft, medium, hard | |
| poster | BOOLEAN | false | — |
| claude_model | COMBO | claude-sonnet-4.5 | 7 options: claude-sonnet-4.5, claude-sonnet-4, claude-sonnet-3.7, claude-opus-4.1, claude-opus-4, claude-haiku-3.5, +1 |
| custom_base_promptopt | STRING | — | |
| custom_titleopt | STRING | — | |
| overrideopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |