MiniCPM-o Image Analyzer
Three images in, one Frankenstein prompt out
- model
- tokenizer
- theme_image
- scene_image
- style_image
- theme_analysis
- scene_analysis
- style_analysis
- combined_prompt
The single-image sibling in this pack gives you one prompt from one picture. This node is the remix version: it takes three images - one for the subject, one for the scene, one for the style - and fuses them into a single generation prompt that combines all of it. It's the "I like the character from A, the setting from B, and the art style from C" workflow, automated into one pass.
That's a real workflow, not a gimmick. Style transfer via text is the whole "have a multimodal LLM describe what it sees" pattern people lean on for LLM-encoded models and video, and this node is the multi-image take on it. The author has said it's aimed at multi-image prompt-based image generation - you can see it as a text-only cousin of what IPAdapter does with image inputs, except the output is a prompt you can read, edit, and reuse anywhere.
How it works
This is not one model call - it's four. The node runs three separate analyses, each with its own hardcoded prompt in the source:
THEME_PROMPT- describes only the subject's physical appearance and attire, explicitly told not to mention background, lighting, style, or atmosphere.SCENE_PROMPT- describes only environment, setting, lighting, and atmosphere, told to ignore the characters and the art style.STYLE_PROMPT- outputs only the artistic style and technique, in a strict[art style] with [technique and color]format.
Each produces a STRING output - theme_analysis, scene_analysis, style_analysis. Then a fourth call takes all three (plus your optional user_prompt if you gave one, or "none") and runs them through a combine template that merges everything into one flowing, unlabeled description. That final result is the combined_prompt output, and it's the one you'll actually wire into your generator.
Inputs that matter
model/tokenizer- from the Load MiniCPM-o Model node, same as the other pack nodes.theme_image,scene_image,style_image- threeIMAGEinputs. Yes, you can feed the same image to all three slots; it just means subject, scene, and style all get read from that one picture, which is a decent poor-man's single-image captioner.user_prompt(optional) - a multiline box for an extra element ("playing violin", "cyberpunk lighting") that gets folded into the final prompt. Leave blank and it's omitted.max_new_tokens,temperature,top_p,seed- standard sampling controls shared with the image chat node.
The four outputs are all STRING: the three per-image analyses (useful if you want to see what the model thought before it glued things together) and the fused combined_prompt.
Installing
Nothing node-specific: install the pack via ComfyUI Manager (search "MiniCPM-o") or git clone https://github.com/CY-CHENYUE/ComfyUI-MiniCPM-o into custom_nodes, pip install -r requirements.txt with ComfyUI's python, and put the openbmb/MiniCPM-o-2_6 model folder in models/MiniCPM/MiniCPM-o-2_6/. If Load MiniCPM-o Model throws "local model not found," it's that last step.
Where it hurts
First, it's slow. Four full 8B vision-model inferences per run, so this is the least snappy node in the pack - on a mid-range card you're waiting. Second, the same caching trap as the image chat node: it only re-runs when the seed changes (IS_CHANGED returns the seed), so changing an input image without touching the seed gives you the stale result. Nudge the seed or force the queue. Third, the analyses are opinionated by design - the theme prompt forbids background talk and the scene prompt forbids subjects, which keeps the pieces clean but means a busy image's subject will get a ruthless trim. If the fused prompt reads oddly, peek at the three raw analyses to see which input got misread.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| tokenizer | TOKENIZER | — | |
| theme_image | IMAGE | — | |
| scene_image | IMAGE | — | |
| style_image | IMAGE | — | |
| seed | INT | 6666666666666660–18446744073709550000 | — |
| temperature | FLOAT | 0.700.1–2 | — |
| top_p | FLOAT | 0.900.1–1 | — |
| max_new_tokens | INT | 5121–2048 | — |
| user_promptopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| theme_analysis | STRING | — |
| scene_analysis | STRING | — |
| style_analysis | STRING | — |
| combined_prompt | STRING | — |