Nodes/ComfyUI_Eclipse/MiniMax H3 Image Prompt Conditioning
ComfyUI Node

MiniMax H3 Image Prompt Conditioning

Give the model a picture without making it a keyframe

By r-vage·Created 11 months ago·Updated a day ago· 35
MiniMax H3 Image Prompt Conditioning
  • clip
  • current_image
  • base_conditioning
  • visible_transition_image
  • positive
prompt
width1344
height768

Seventy-one lines of Python. It's the smallest node in the Eclipse H3 trio and it's the one you'll blame when your continuation drifts off-model. MiniMax H3 Image Prompt Conditioning turns a still into H3 visual prompt tokens - conditioning on the picture, rather than pinning it to a timeline position.

The distinction is the whole node. The usual way to hand a video model an image is as a keyframe: you put it at frame 0 and the model starts from it. That's correct for the opening task of a timeline and wrong for everything after it, because a continuation wants frame 0 to be generated overlap, not a reference photo. Tokenising the image instead lets it inform the whole clip without claiming a temporal slot. It's what makes the hidden destination anchors in MiniMax H3 Audio Plan Step possible: the destination image influences the task without ever occupying a frame that survives the crop.

What it does under the hood

It picks its image - visible_transition_image if that optional input is connected, otherwise current_image - then takes only the first RGB frame, resizes it lanczos to width × height, and calls H3's tokeniser with the image attached:

tokens = clip.tokenize(prompt, images=prompt_images)
conditioning = clip.encode_from_tokens_scheduled(tokens)

So the picture becomes part of the prompt context and your text rides along with it. Nothing is added to any keyframe track, which is exactly why you'd reach for this instead of a normal image-to-video conditioning path.

There's one piece of politeness in there worth knowing about: if you connect base_conditioning, the node lifts whatever minimax_keyframes entry is already on it and re-attaches it to the output. Chain through this node and whatever temporal keyframes another node established survive the trip.

The inputs

  • clip - H3's text encoder. It has to be an encoder that accepts image tokens, or your picture isn't going to become prompt tokens.
  • prompt - the text. Multiline.
  • current_image - normally the prompt_image output from Plan Step.
  • visible_transition_image - also normally from Plan Step, and when it's present it wins over current_image. This is how a destination handoff gets tokenised with the destination image while the current task still renders its own picture.
  • width / height - defaults 1344 × 768, which is H3's wide default. Set these to your actual generation resolution. The resize ignores aspect ratio, so a mismatched box stretches your reference rather than cropping it - feed the model a squashed face and it will faithfully render one.
  • base_conditioning - optional, for preserving existing minimax_keyframes as described above.

One output: positive. That's your positive conditioning; send it to whatever H3 conditioning slot your sampling path uses. No negative, no latent, no crop metadata. If you want a negative you build it elsewhere.

A gotcha each way

Only the first frame of the image tensor is ever used. Hand it a batch and frames 1 onwards are silently dropped - fine if you know, confusing if you assumed the node would do something clever with a reference clip.

And the keyframe rescue only fires when there's something to rescue. If the base_conditioning you wired in is a plain text-encode output, it carries no minimax_keyframes field, the lookup returns nothing, and the reattach quietly does nothing. That's correct behaviour, but it looks like a bug when you expected keyframes to survive.

Install

Same pack as the other two: ComfyUI Manager → search ComfyUI_Eclipse, or:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse

Restart afterwards. Dependencies are the pack's usual light set (torch, numpy, Pillow, opencv-python, pilgram, safetensors, torchvision, PyYAML, aiohttp) - no model download for this node, though the H3 weights themselves are separate and large, and Eclipse's diffusion loaders moved to the companion ComfyUI_SmartModelLoader pack, so Eclipse alone won't get you a model. If a workflow from the old RvTools_v2 era fails to load, that's the v4.0.0 legacy-node purge: the pack's Workflow Migration Tool or python tools/migrate_workflow.py <path> fixes it with backups.

You'll get the most out of this node if you understand it as one third of a contract - planner decides the task list, Plan Step resolves one task and tells you which image to prompt with, and this node turns that image into conditioning without touching the clock. Break the third part and you get a clip that looks like it started from your reference rather than arrived at it.

Category🌒 Eclipse/ Video

Inputs (7)

NameTypeDefaultDescription
clipCLIP
promptSTRING
current_imageIMAGE
widthINT134432–16384
heightINT76832–16384
base_conditioningoptCONDITIONING
visible_transition_imageoptIMAGE

Outputs (1)

NameTypeDescription
positiveCONDITIONING