AD_sch_prompt_stack
Eased prompt scheduling for animated workflows
- prompt_stack
If you've ever wanted a prompt to change partway through an animation - girl at frame 0, boy at frame 7, dog at frame 15 - without hard-cutting between them like a slideshow, this is the node that builds that schedule. It's ComfyUI-Apt_Preset's take on prompt travel, the old AnimateDiff/Deforum trick of swapping text at specific frames so a video morphs from one idea into the next instead of jumping.
The mechanism is dead simple once you see the syntax. You write one keyframe per line: frame: prompt text @EasingCurve@. The default box literally ships an example - 0: a girl @Sine_In@, 7: a boy, 15: a dog - and that's the whole grammar. Each line is a point in time; the node interpolates the transition between consecutive prompts using whatever easing curve you tag on, or the global easing_type if a line doesn't specify one. And there are 23 curves to pick from - the full Penner set: Linear, then Sine/Quart/Cubic/Circ/Back/Elastic/Bounce each in In, Out, and InOut flavors. Linear blends at a constant rate; the others ease in slow-then-fast or overshoot-and-settle, which is the difference between a transition that feels mechanical and one that feels like something is actually happening. This is exactly the kind of keyframe-interpolated, morphing behavior that's the one thing left AnimateDiff-era tooling still does that current Wan/LTX pipelines don't bother replicating - it's a stylistic choice at this point, not a technical necessity, and this node is built for people chasing that specific look.
The fields you'll actually touch: prompts (your schedule, required), easing_type (the fallback curve), and two optional extras - max_length, which caps how many frames the resulting schedule spans (defaults to 120), and f_text/b_text, front and back text that get glued onto every scheduled line automatically. That last pair is genuinely useful: if every prompt in your schedule needs the same style tag or subject anchor, put it in f_text once instead of retyping it on every keyframe line.
The single output, prompt_stack, is a custom type (PROMPT_SCHEDULE_STACK), not plain text - this won't plug into a normal CLIP Text Encode. It's meant to feed one of the pack's own AD-stack controller or sampler nodes, part of the "Loader → Controller → Sampler" system the README describes. So this node doesn't do anything in isolation; it's the first link in a chain that has to stay inside Apt_Preset.
One thing worth flagging honestly: this node's category path in the pack is literally Apt_Preset/AD/😺backup - it lives in the author's own "backup" bucket. The changelog shows a newer prompt-visualization tool, text_interPrompt, landed in April 2026 with four modes, which reads like the currently-favored path. AD_sch_prompt_stack still ships and still works, but treat it as the older of two ways to do this rather than the one getting active attention.
Installing it: search "ComfyUI-Apt_Preset" in ComfyUI Manager and install, or clone it by hand - cd ComfyUI/custom_nodes && git clone https://github.com/cardenluo/ComfyUI-Apt_Preset - then run install.bat (Windows) to pull dependencies and restart ComfyUI. No extra models needed for this node specifically.
Troubleshooting: the most common trip-up is syntax - a malformed line (missing colon, curve name misspelled) won't throw a friendly error, it'll just silently fall back or produce a schedule that doesn't match what you expected, so keep to the exact frame: text @Curve@ format and the 23 documented curve names. The second trip-up is wiring: PROMPT_SCHEDULE_STACK only means something to Apt_Preset's own downstream nodes, so if you're trying to bolt this onto a workflow built from other packs' AnimateDiff nodes, it won't connect - you need to stay inside this pack's controller/sampler chain for the schedule to actually do anything.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| prompts | STRING | 0: a girl @Sine_In@ 7: a boy 15: a dog | — |
| easing_type | COMBO | Linear | 23 options: Linear, Sine_In, Sine_Out, Sine_InOut, Sin_Squared, Quart_In, +17 |
| max_lengthopt | INT | 1200–100000 | — |
| f_textopt | STRING | — | |
| b_textopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt_stack | PROMPT_SCHEDULE_STACK | — |