π WanVideo Wakawave Prompt Builder
Your Wan prompts, editable like an actual script
- positive
- negative
Wan prompting is a pain in a specific way: the model wants natural-language motion narration, and the moment you're working on anything longer than a single clip you're juggling which prompt belongs to which chunk. The Wakawave Prompt Builder attacks that by treating your prompt as editable lines instead of one big text box. One prompt per line, a per-line weight if you want it, save/load presets, and a segment mode that swaps prompts automatically as a long video progresses. It's the second node in the Wakawave pack, complementing the LoRA Loader with the same preset philosophy.
How it works
You type positive prompts in the top box, negative prompts in the bottom one, one per line. The π preset browser handles search, live-preview, import/export as JSON, and usage stats on your saved sets. When you queue, the node joins the lines using your chosen separator - the enum gives you comma, newline, space, pipe, double_slash, or none. Here's the gotcha baked into the default: it ships with separator set to none, which pastes lines together with nothing between them. Set it to comma (or newline) before you wonder why your "nebula in deep space" and "stars twinkling" got mashed into one word.
With use_weights on (the default), each line gets wrapped in attention syntax - nebula in deep space becomes (nebula in deep space:1.2) using the weight you give the line. The node then emits two outputs: positive and negative, both plain STRING.
The input/outputs that matter
positive/negative(STRING outputs) - wire these into a WanVideo TextEncode Cached node (from Kijai's WanVideoWrapper) before the sampler. This is the classic footgun: the builder outputs text, not embeddings. If you feed a STRING straight into the sampler, you'll get a type error at best and confusion at worst. TextEncode Cached exists exactly so you can re-encode per segment without recomputing.separator- how lines join (see above).use_weights- enables the(prompt:1.2)wrapper.segment_mode+segment_number(0β100) - the headline feature. Flipsegment_modeon, prefix lines with segment numbers (0: forest at dawn,1: sunlight breaking through), and feedsegment_numberfrom a counter node so each chunk gets its own prompt. Useful for 500+ frame renders, where a single prompt drifts badly. Match each segment to Wan's ~81-frame context window.prev_positive/prev_negative- chain a second builder to prepend its output.
A dose of honesty about the weights
The (prompt:1.2) syntax is SDXL-era attention weighting, and Wan's encoder is a T5-style language model, not CLIP. The community consensus - and our knowledge base is explicit about it - is that paren/colon weighting is at best weakly honored on that kind of encoder; word order and sentence structure do the real work. Treat use_weights as a formatting convenience, not a magic emphasis knob, and don't spend a Saturday dialing in 1.7 vs 1.8.
Same story for the negative box, but sharper: at CFG 1, a negative prompt does literally nothing - the unconditional pass is skipped entirely. And CFG 1 is exactly where speed-LoRA Wan pipelines (lightx2v/CausVid) live. If you're on a distilled setup, keep the negative field light and restate constraints positively in the positive box instead. At CFG 3.5+, the negative output earns its keep.
The actual Wan prompting skill is separate from this node: for image-to-video, describe the motion, not the pixels already sitting in your reference frame. Think "an athletic man in a white t-shirt enters the frame from the left" - the community's phrase: "for the image you are a robot, for I2V you are George R. R. Martin."
Installing it
Same pack, same install. ComfyUI Manager (search "WanVideo Wakawave") or:
cd ComfyUI/custom_nodes
git clone https://github.com/Wakapedia/ComfyUI-WanVideoWakawave.git
# restart ComfyUI
No model files, no API keys - it's a text-management utility. Find it under Right-click β WanVideo β Prompts.
Where people get burned
- STRING vs embeddings. Always route both outputs through WanVideo TextEncode Cached.
- Separator default is
none- set it to comma or newline first thing. - Weights won't do what you expect on Wan's T5-style encoder.
- Negative box is dead at CFG 1 - true for any distilled Wan pipeline.
segment_numberhas to actually change. If nothing feeds it, every chunk gets segment 0's prompt. Drive it from a frame counter and you get the story you scripted.
It's a genuinely nice quality-of-life tool once you know its two quirks - both sit in the defaults, not hidden in the docs.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prev_positiveopt | STRING | β | |
| prev_negativeopt | STRING | β | |
| separatoropt | COMBO | none | 6 options: none, comma, newline, space, pipe, double_slash |
| use_weightsopt | BOOLEAN | true | β |
| segment_modeopt | BOOLEAN | false | Enable segment-based prompting for different video segments |
| segment_numberopt | INT | 00β100 | Current segment number (0-based) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | STRING | β |
| negative | STRING | β |