Init Node Frame π π π
The start of the FizzFrame chain β set the CLIP and the always-on prompt text once
- previous_frame
- clip
- FIZZFRAME
- POS_COND
- NEG_COND
Init Node Frame is the anchor of FizzNodes' FrameNodes system - the alternative to hand-typing keyframe strings. The idea: instead of writing one big "0" : "prompt", "30" : "prompt" blob into a text field, you build your animation frame by frame, with one node per keyframe, wired together. This node is where every one of those chains has to start, because it's the only place you set two things every later frame inherits: the clip and the always-on general_positive / general_negative text.
In one go it does three jobs. It records the first keyframe's positive_text (and optional negative_text). It stores the clip you plug in - this is the CLIP every downstream frame will use to encode, and it's what makes the whole chain possible without re-plugging a CLIP into every node. And it stores the general prompt text, which gets appended to every frame's positive and negative text, giving you the "style stays constant, subject changes" pattern: put the fixed style stuff in general_positive, and animate only the per-frame subject.
The outputs
It returns FIZZFRAME (the custom data type that carries all frames, the CLIP, and the general text - this is the wire you feed into the next node's previous_frame), plus POS_COND and NEG_COND - the encoded conditioning for this frame. So the chain isn't just bookkeeping; each node in it is a working conditioning encoder, and the Init node encodes the first frame itself.
The frame input is the frame number this keyframe lives at. previous_frame also exists as an optional input so an Init node can chain onto an earlier chain, but for a fresh start you don't need it - clip and general text can be supplied directly. If you feed previous_frame instead, it inherits clip and general text from that chain.
Notes and gotchas
You need a CLIP on this node one way or another - either wired in or inherited via previous_frame - because every subsequent frame encodes through it. And remember the FIZZFRAME output must travel through previous_frame inputs to stay intact; it's an opaque custom type, so it only means something to other FizzNodes frame nodes. Install the pack the usual way:
cd ComfyUI/custom_nodes && git clone https://github.com/FizzleDorf/ComfyUI_FizzNodes.git
cd ComfyUI_FizzNodes && pip install -r requirements.txt
Or "FizzNodes" via ComfyUI Manager, restart. No models to download. If you find the node-per-keyframe approach clunkier than typing a schedule string, you're not wrong - it trades typing for graph clarity, and it shines when keyframes are generated dynamically rather than written by hand.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| frame | INT | 0 | β |
| positive_text | STRING | β | |
| negative_textopt | STRING | β | |
| general_positiveopt | STRING | β | |
| general_negativeopt | STRING | β | |
| previous_frameopt | FIZZFRAME | β | |
| clipopt | CLIP | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| FIZZFRAME | FIZZFRAME | β |
| POS_COND | CONDITIONING | β |
| NEG_COND | CONDITIONING | β |