Nodes/IAMCCS-nodes/AU+IMG2VID Keyframe Timeline (legacy alias)
ComfyUI Node

AU+IMG2VID Keyframe Timeline (legacy alias)

Decide where the keyframes go and how often the video refreshes itself

By IAMCCS·Created 11 months ago·Updated 7 days ago· 113
AU+IMG2VID Keyframe Timeline (legacy alias)
  • parent_contract
  • linx
  • keyframe_payload
  • contract
  • linx
  • has_refresh
  • is_reanchor_segment
  • recommended_refresh_mode
  • protected_head_frames_out
  • preferred_tail_start
  • report
planner_payload{}
keyframe_positions_modenone
keyframe_positions
refresh_mode_policyauto
protected_head_frames9
settling_frames_default9
min_keyframe_spacing_frames8
refresh_interval_segments2
reanchor_every_segments3
prefer_tail_refreshtrue

Long-chunked video drifts. Each new segment is conditioned on the last one, and over twenty segments small errors compound until your character's face is a different person. The standard fix is periodic refresh - re-anchoring the generation to clean reference frames so drift resets. IAMCCS_AUIMG2VID_KeyframeTimeline (legacy alias for Ltx2HelperModules_KeyframeTimeline) is the node that decides when that happens. It's a policy node: it doesn't touch pixels, it figures out the refresh/re-anchor schedule and tells the rest of the chain what to do.

You hand it the planner_payload (for the segment plan) and some policy settings, and it returns a keyframe_payload plus a few decision outputs. The inputs that matter:

  • keyframe_positions_mode / keyframe_positions - where keyframes land: by global_frames, global_seconds, or global_ratio (fraction along the project), as a list you type in. none skips explicit keyframes and lets the schedule drive.
  • refresh_mode_policy - the heart of it: auto, anchor_only, tail_refresh, flf_blend, or disabled. tail_refresh keeps the tail of the current chunk as the seed for the next (the cheap, common choice); flf_blend mixes first-and-last-frame locking for stronger identity.
  • protected_head_frames (9) - frames at the start of a chunk that never get cut; settling_frames_default (9) - frames the model needs to "settle" after a refresh before the new content starts.
  • min_keyframe_spacing_frames (8) - how close two keyframes are allowed to get.
  • refresh_interval_segments (2) and reanchor_every_segments (3) - how often to refresh vs. fully re-anchor on a reference image. Re-anchoring is heavier and is the antidote to identity drift.

Outputs are the schedule decisions: has_refresh and is_reanchor_segment (booleans saying whether this segment refreshes/re-anchors), recommended_refresh_mode, and preferred_tail_start - the frame index where the tail refresh should begin. Those are what you wire into the refresh policy and re-anchor nodes downstream. prefer_tail_refresh (default on) makes tail refresh the first choice when the policy is auto.

Why you'd reach for it: if you've done any long LTX-2 or WAN video, you know the refresh schedule is normally something you eyeball once, hard-code, and forget - and then the face morphs at segment 11. This node turns that into settings you can tune. It's firmly part of the AU+IMG2VID chain (planner → audio timeline → keyframe timeline → refresh policy → re-anchor), so standalone use is really only for extracting recommended_refresh_mode into your own graph.

Installing: ships with IAMCCS/IAMCCS-nodes. ComfyUI Manager → search "IAMCCS", or cd ComfyUI/custom_nodes && git clone https://github.com/IAMCCS/IAMCCS-nodes.git, restart. No models, no extra deps.

The honest caveat: every refresh costs you a little motion quality - refresh anchors, then the video has to "recover" from the anchor. If your footage has a fast-moving subject, aggressive refresh_interval_segments settings produce that strobing "keyframe wobble." Start with the defaults (refresh every 2, re-anchor every 3) and only tighten if you actually see drift; if you see flicker, you've gone the other way.

CategoryIAMCCS/Ltx2 Helper Modules

Inputs (12)

NameTypeDefaultDescription
planner_payloadSTRING{}
keyframe_positions_modeCOMBOnone4 options: global_frames, global_seconds, global_ratio, none
keyframe_positionsSTRING
refresh_mode_policyCOMBOauto5 options: auto, anchor_only, tail_refresh, flf_blend, disabled
protected_head_framesINT90–256
settling_frames_defaultINT90–256
min_keyframe_spacing_framesINT80–512
refresh_interval_segmentsINT20–256
reanchor_every_segmentsINT30–256
prefer_tail_refreshBOOLEANtrue
parent_contractoptIAMCCS_SUPERNODE_CONTRACT
linxoptIAMCCS_SUPERNODE_LINX

Outputs (9)

NameTypeDescription
keyframe_payloadSTRING
contractIAMCCS_SUPERNODE_CONTRACT
linxIAMCCS_SUPERNODE_LINX
has_refreshBOOLEAN
is_reanchor_segmentBOOLEAN
recommended_refresh_modeSTRING
protected_head_frames_outINT
preferred_tail_startINT
reportSTRING