AU+IMG2VID Keyframe Timeline (legacy alias)
Decide where the keyframes go and how often the video refreshes itself
- parent_contract
- linx
- keyframe_payload
- contract
- linx
- has_refresh
- is_reanchor_segment
- recommended_refresh_mode
- protected_head_frames_out
- preferred_tail_start
- report
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: byglobal_frames,global_seconds, orglobal_ratio(fraction along the project), as a list you type in.noneskips explicit keyframes and lets the schedule drive.refresh_mode_policy- the heart of it:auto,anchor_only,tail_refresh,flf_blend, ordisabled.tail_refreshkeeps the tail of the current chunk as the seed for the next (the cheap, common choice);flf_blendmixes 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) andreanchor_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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| planner_payload | STRING | {} | — |
| keyframe_positions_mode | COMBO | none | 4 options: global_frames, global_seconds, global_ratio, none |
| keyframe_positions | STRING | — | |
| refresh_mode_policy | COMBO | auto | 5 options: auto, anchor_only, tail_refresh, flf_blend, disabled |
| protected_head_frames | INT | 90–256 | — |
| settling_frames_default | INT | 90–256 | — |
| min_keyframe_spacing_frames | INT | 80–512 | — |
| refresh_interval_segments | INT | 20–256 | — |
| reanchor_every_segments | INT | 30–256 | — |
| prefer_tail_refresh | BOOLEAN | true | — |
| parent_contractopt | IAMCCS_SUPERNODE_CONTRACT | — | |
| linxopt | IAMCCS_SUPERNODE_LINX | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| keyframe_payload | STRING | — |
| contract | IAMCCS_SUPERNODE_CONTRACT | — |
| linx | IAMCCS_SUPERNODE_LINX | — |
| has_refresh | BOOLEAN | — |
| is_reanchor_segment | BOOLEAN | — |
| recommended_refresh_mode | STRING | — |
| protected_head_frames_out | INT | — |
| preferred_tail_start | INT | — |
| report | STRING | — |