Prompt Schedule SDXL π π π
The SDXL version of scheduled prompts, with the size metadata included
- clip
- POS
- NEG
If you run SDXL checkpoints, the plain Prompt Schedule node from FizzNodes will technically work - and then quietly disappoint you, because SDXL conditioning carries resolution metadata that the standard node never fills in. Prompt Schedule SDXL is the sibling that does. Same animation concept, same POS/NEG conditioning outputs, but it speaks SDXL's two-part language: text_g (the "global" prompt, usually style and lighting) and text_l (the "local" prompt, usually subject details), each with its own keyframe schedule.
Why you need the SDXL one at all
SDXL doesn't just encode text. The conditioning bundle carries width, height, crop_w, crop_h, target_width, and target_height - the "baked size" - and the checkpoint uses it. Feed an SDXL model conditioning built without that metadata and you can get off-size, oddly-cropped results, or conditioning that doesn't match what the model expects. This node sets all six fields from its own inputs, so whatever you schedule comes out at the size you asked for.
In practice the size inputs mostly stay at their defaults (1024Γ1024 is the SDXL native sweet spot). You'd reach for them when doing regional or upscaled work, or when you want the conditioning to target a different aspect ratio than the latent you're sampling. The defaults are fine for most animation.
How the scheduling works
Identical mechanism to the base node - it's the same FizzNodes engine from Deforum. Each of text_g and text_l holds a keyframe schedule like:
"0" : "cinematic lighting, film grain",
"45" : "neon city at night, cyberpunk colors"
The --neg marker still splits positive from negative, pre_text_G / app_text_G and pre_text_L / app_text_L still prepend/append per side, and pw_aβpw_d floats plus t (current frame) are available inside numexpr expressions in your prompt text. The node encodes both the G and L schedules, interpolates the blend weight between keyframes, and returns a single averaged conditioning pair per frame. current_frame rolls over modulo max_frames, so loops stay seamless. print_output shows you the evaluated prompts and strengths per frame when you're debugging.
The inputs that matter day to day: text_g, text_l, clip, max_frames, and current_frame (which, as in the base node, is a forced input meant to be wired from a frame counter). Set width/height to your intended output size and forget the rest.
Install and gotchas
Installation is the pack install - one pack, all nodes. Via ComfyUI Manager, search FizzNodes and install; or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/FizzleDorf/ComfyUI_FizzNodes
cd ComfyUI_FizzNodes && pip install -r requirements.txt
Dependencies are just numpy, pandas, and numexpr - no model downloads. Restart ComfyUI and look under FizzNodes π
π
π
β ScheduleNodes.
The failure modes are the family ones: schedule text must be exact JSON-with-quotes (a trailing comma breaks parsing), a static current_frame renders one frame forever, and the SDXL conditioning's resolution metadata lives here - if your SDXL animation looks subtly "wrong" on size, this node (or its batch sibling) is the fix. It's the one I'd reach for on any SDXL animation workflow, and there's genuinely no reason to use the base node on an SDXL checkpoint once you know it exists.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 10240β8192 | β |
| height | INT | 10240β8192 | β |
| crop_w | INT | 00β8192 | β |
| crop_h | INT | 00β8192 | β |
| target_width | INT | 10240β8192 | β |
| target_height | INT | 10240β8192 | β |
| text_g | STRING | β | |
| clip | CLIP | β | |
| text_l | STRING | β | |
| max_frames | INT | 1201β999999 | β |
| current_frame | INT | 00β999999 | β |
| print_output | BOOLEAN | false | β |
| pre_text_Gopt | STRING | β | |
| app_text_Gopt | STRING | β | |
| pre_text_Lopt | STRING | β | |
| app_text_Lopt | STRING | β | |
| pw_aopt | FLOAT | 0.0-9999β9999 | β |
| pw_bopt | FLOAT | 0.0-9999β9999 | β |
| pw_copt | FLOAT | 0.0-9999β9999 | β |
| pw_dopt | FLOAT | 0.0-9999β9999 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| POS | CONDITIONING | β |
| NEG | CONDITIONING | β |