Nodes/LingBot-Video Dense 1.3B FP8/LingBot TI2V Sampler (First Frame Fixed)
ComfyUI Node

LingBot TI2V Sampler (First Frame Fixed)

First frame pinned, everything else up for grabs

By ALX-CODE·Created 2 months ago·Updated about a month ago· 8
LingBot TI2V Sampler (First Frame Fixed)
  • model
  • conditioning
  • latents
width640
height352
num_frames73
steps40
cfg3.0
shift3.00
seed42
cfg_executionsequential_sage

LingBotTI2VSampler is what makes image-to-video work in this pack. It's the sampler variant for the TI2V path, and its whole job is summarized in its name: the first latent frame stays fixed through every denoise step, and the rest of the video grows out from it. That single constraint is why TI2V results hold the source image's identity - the character's face, the clothing, the lighting - while a pure text-to-video run of the same prompt would wander.

You use it when your conditioning came from LingBotTI2VPromptEncode (the "Plaintext + Image + Qwen Encode" node). Wire that node's conditioning into this sampler, pair it with the same model and geometry, and it handles the rest. It's the same denoising loop as the plain LingBotSampler under the hood - it literally subclasses it - with two differences: it encodes your first frame into a latent and pins it, and it refuses to run unless its conditioning actually contains that first-frame pixel data.

How the pinning works

During sampling the pipeline takes the first_frame_pixel from the conditioning, VAE-encodes it into a latent, and injects it as cond_latent for the diffusion run. The README describes the visible result: "strong first-frame style retention, consistent character features, and a continuous expression change." That's the mechanism you're paying for - your starting image isn't just a vibe reference, it's the literal first frame of the output, and the model is forced to keep it intact while denoising.

The sampler also validates the conditioning frame hard:

  • It must be exactly one RGB image ([1, 3, 1, H, W]).
  • Its resolution must match the sampler's width/height. Change geometry after encoding and you'll get the explicit "TI2V resolution changed after prompt encoding" error, with the reminder to keep the same Generation Settings connections on both nodes.

Inputs

Same surface as the base sampler: model, conditioning, width, height, num_frames (default 73, 4n+1), steps, cfg, shift, seed, plus the optional cfg_execution dropdown (default sequential_sage, batched modes auto-fallback above 16,384 tokens or on OOM - see the LingBotSampler article for the full CFG rundown). Output: latents → LingBotVAEDecode → VHS save.

The one hard requirement beyond that is the conditioning source. The error message is unambiguous: "LingBot TI2V Sampler requires conditioning from LingBot TI2V Plaintext + Image + Qwen Encode." Feed it conditioning from the plain T2V prompt node and it will refuse - that's a feature, since the plain prompt node has no image to pin.

Install

Same pack install as everything else:

cd ComfyUI/custom_nodes
git clone https://github.com/ALX-CODE/lingbot-video-1.3b-fp8
pip install -r requirements.txt   # with ComfyUI's python

or ComfyUI Manager → search "LingBot" → restart. Remember the workflow-specific trap: the published TI2V workflow's Load Image nodes hold intentional placeholders - select a real image before queueing, or you'll get "missing image" errors that look like a sampler bug. SageAttention is recommended (install a build matching your PyTorch/CUDA, launch with --use-sage-attention) but the sampler will run sequentially without it.

Gotchas

  • Resolution drift between prompt encode and sampler is the #1 self-inflicted error here. Both nodes must see the same width/height - feed them from one LingBotGenerationSettings and you'll never hit it.
  • The pinning is exact, so don't expect the model to "improve" your first frame. What you give it is what frame 0 is, forever. If your input image has an ugly artifact, the video starts with it.
  • num_frames must stay in the 4n+1 form (73, 61, 45…); use the Generation Settings node to compute it from FPS × seconds rather than typing a raw number.
  • This is the reliable image mode. The first-and-last-frame variant (LingBotFLFSampler) pins both ends but the model wasn't trained for it - reach for TI2V when you need results that hold up.
CategoryLingBot Video

Inputs (10)

NameTypeDefaultDescription
modelLINGBOT_MODEL
conditioningLINGBOT_CONDITIONING
widthINT64016–4096
heightINT35216–4096
num_framesINT731–1001
stepsINT401–1000
cfgFLOAT3.01–30
shiftFLOAT3.000.01–20
seedINT420–18446744073709550000
cfg_executionoptCOMBOsequential_sageSequential Sage is the conservative baseline. Batched native computes exact masked B=2 CFG in one pass. Sage-varlen is experimental. All batched modes auto-fallback above 16,384 video tokens or on CUDA OOM.

Outputs (1)

NameTypeDescription
latentsLINGBOT_LATENTS