XB-llama - ๐๏ธ ๅ้่ฏๅค็ๅจPro
Same storyboard gacha, plus it sniffs your characters for you
- text_input
- output_list
- ่ๆฏ
- ่ง่ฒ_1
- ่ง่ฒ_2
- ่ง่ฒ_3
The Pro version of XB_ToolBox's storyboard shot-selector. It does everything the plain XB_llamaStoryboardProcessor does - same cache, same draw_mode gacha switch, same draw_range dropdown - then adds the bit that makes it actually useful for multi-shot video: it sniffs your storyboard text for background and character tags and hands them to you as separate outputs.
If you've been fighting character consistency across shots, this is the node that makes the "describe the character once, reuse the description every shot" pattern work without copy-pasting.
What Pro adds
Same inputs as the base node: draw_mode, draw_range, and the optional text_input. Same output_list STRING output for the shot prompts. The difference is four extra outputs, all plain STRING:
่ๆฏ(background)่ง่ฒ_1,่ง่ฒ_2,่ง่ฒ_3(character 1โ3)
It finds them with a non-greedy regex that grabs everything after a ่ๆฏ[A-E] or ่ง่ฒ[A-E] tag until the next tag or the end of the string. The readme for the node family calls it "sniffing," and that's honestly the right word - it's a text scrape, not an LLM pass, so it costs nothing.
One quirk to know: each sniffed value is truncated to 10 characters. That's deliberate - these outputs are meant to be compact tokens you can feed into a character reference encoder or a LoRA trigger, not full paragraph descriptions. If your character description is "the tall detective with the red coat and the scar," you're getting "the tall d" and it may be useless for what you wanted.
Where the extra outputs go
This is the part that makes Pro worth having. In a short-drama or image-to-video pipeline you typically have a separate path that needs the character identity - an image guide, a reference encoder, a regional conditioning node - and a path that needs the bare shot prompt. The base processor gives you only the second. Pro gives you both from one parse:
output_listโ your CLIP/text encoder, per-shot prompts.่ง่ฒ_1โ character-consistency conditioning, so shot 3's "detective" is the same detective as shot 1's.่ๆฏโ a background/control path if your workflow separates environment from subject.
The tag format (่ๆฏA, ่ง่ฒA, ่ง่ฒB...) is what the XB-llama storyboard writer templates emit, so this pairs specifically with the StoryboardEnhancer/StoryboardInstruct chain from the same pack. Feed it raw text from some other source and the regex will often find nothing, which is why the outputs can come back empty.
Install & gotchas
Same pack, same story as its little sibling:
cd ComfyUI/custom_nodes
git clone https://github.com/WJLUOXIAO/XB_ToolBox.git
# or: ComfyUI Manager โ "XB_ToolBox"
pip install llama-cpp-python # needed for the whole XB-llama family to appear
And the same cache rule applies: run it once with draw_mode off before flipping to gacha mode, or you'll get the "ๆๆ ็ผๅญ" message instead of shots. If your text uses Scene_N headers instead of ๅ้ๅพ_N, the parse still works but the draw_range dropdown only lists the ๅ้ๅพ names - pick ๅ
จ้จ in that case.
The 10-char truncation is the trap to respect. If you need the full character description for a serious consistency setup, treat ่ง่ฒ_1 as a selector token rather than the whole description, and keep the full text in a separate string node.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| draw_mode | BOOLEAN | false | โ |
| draw_range | COMBO | ๅ จ้จ | 17 options: ๅ จ้จ, ๅ้ๅพ_01, ๅ้ๅพ_02, ๅ้ๅพ_03, ๅ้ๅพ_04, ๅ้ๅพ_05, +11 |
| text_inputopt | * | โ |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| output_list | STRING | โ |
| ่ๆฏ | STRING | โ |
| ่ง่ฒ_1 | STRING | โ |
| ่ง่ฒ_2 | STRING | โ |
| ่ง่ฒ_3 | STRING | โ |