Nodes/ComfyUI-LTX2-R2V/LTXV Add Ref Multi (JSON) FC
ComfyUI Node

LTXV Add Ref Multi (JSON) FC

Reference images, configured in JSON — the LLM-friendly twin of the ref node

By fangcun010·Created 7 months ago·Updated 7 months ago· 2
LTXV Add Ref Multi (JSON) FC
  • positive
  • negative
  • vae
  • latent
  • positive
  • negative
  • latent
  • processed_images
  • frame_step
  • info
step_multiplier2
mask_modeconstant
ramp_frames1
upscale_methodnearest-exact
negative_frame_modeallow_cross_zero
refs_json

The reference node, but for people who'd rather hand it a JSON blob than click through a dynamic combo. LTXVAddRefMultiJsonFc is the sibling of LTXVAddRefMultiFc: it encodes your reference images, places each one at an automatically assigned negative frame index before the start of your LTX-2 video, and extends your latent with that conditioning context. The only real difference is the input - refs_json instead of a num_refs dropdown and per-image slots.

If that sounds niche, it is, but it's the niche the pack is built around. This is the node an LLM feeds: the pack's LTX2R2VBrowserLLM writes a refs list, you pipe it straight in, and your "keep this character consistent" config is now generated rather than hand-wired. It's also the version you want if you're scripting or batching clips and don't want your references scattered across widget state.

The JSON format

refs_json takes a list or a dict with a refs key. Each item just needs an image - a file path or a base64 data URI - and the optional strength/preprocess knobs:

{
  "refs": [
    { "image": "C:/char/hero.png", "strength": 1.0 },
    { "image": "data:image/png;base64,iVBORw0KGgo...", "strength": 0.8 },
    { "image": "C:/char/prop.png" }
  ]
}

strength defaults to 1.0, preprocess to true, preprocess_crf to 33 - same defaults as everywhere in this pack. You can also pass a path to a JSON file instead of inline text; the node falls back to reading it as a file if it isn't valid JSON.

Placement is automatic, exactly like the GUI version: step_multiplier (default 2) spaces references out before frame 0, each one frame_step * step_multiplier apart, where frame_step is the VAE's time-compression factor. The rest of the inputs are the shared set - positive, negative, vae, latent, mask_mode, ramp_frames, upscale_method, negative_frame_mode - and the outputs are positive, negative, latent, processed_images, plus frame_step (INT) and info so you can see exactly where each reference landed.

The short version of gotchas

Same as its siblings: references must be applied to the video-only latent before you merge audio (combined AV latents are rejected), and the whole pack assumes a recent ComfyUI since it imports the new io API at module level. If the node eats a bad path you get a clear "Image not found" error; if the LLM hands you too many references for your latent length, the node will tell you. Honestly, for a pack this new (single commit, screenshots-only README, no real docs), the error messages are refreshingly honest.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/fangcun010/ComfyUI-LTX2-R2V

Restart and it's under LTX2, next to the guide JSON node. No dependencies beyond ComfyUI itself and no model downloads - it uses your existing LTX-2 checkpoint, video VAE, and the built-in LTXVPreprocess. If you're never going to drive it from an LLM, grab the GUI version instead; if you are, this is the one that slots into your function-calling loop.

CategoryLTX2

Inputs (10)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
latentLATENT
step_multiplierINT21–100
mask_modeCOMBOconstant2 options: constant, ramp
ramp_framesINT11–64
upscale_methodCOMBOnearest-exact3 options: nearest-exact, bilinear, lanczos
negative_frame_modeCOMBOallow_cross_zero2 options: allow_cross_zero, before_start
refs_jsonSTRING

Outputs (6)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
processed_imagesIMAGE
frame_stepINT
infoSTRING