🐳Pose Selector (Multi-Select)
16 poses in a dropdown, zero dependencies
- english_tags
- chinese_tags
- combined_tags
Pose Selector is a single dropdown that turns into a finished prompt clause. You pick a pose - standing, arms crossed, contrapposto, whatever - and it hands you back the string Change pose to arms crossed, ready to feed straight into a CLIPTextEncode. No APIs, no models to download, no Python packages to fight. It's just string building, and that's exactly why it's useful.
The name of the pack gives the game away: comfyui-klein9b-multi-angle. It was built alongside Flux 2 Klein 9B, Black Forest Labs' size-distilled editing model, which is happiest when you talk to it in short natural-language instructions ("change the pose to X"). That phrasing works fine on ordinary text encoders too - models have been trained on this kind of direct instruction for years - but if you're running a Klein editing workflow, this node is speaking its language natively.
How it works
The mechanism is almost comically simple, and it's worth knowing because it sets your expectations. When you hit Queue, the node takes your chosen pose, wraps it in the prefix Change pose to , and spits out one STRING. There's no model inference, no random walk, no hidden conditioning. The only moving part is the seed.
Here's the part people miss: the dropdown includes a random option, and the node samples from its 16 poses using Python's random.Random(seed). Same seed, same pose, every time - so you can fix a seed and get reproducible random poses, then bump the seed to explore. Toggle the seed widget's control_after_generate to randomize and every queue gives you a fresh pose for free. That's the classic "batch 32 and get variety" trick from the prompt tooling world, just wrapped in a dropdown instead of {standing|sitting|kneeling} bracket syntax.
Inputs and outputs that matter
pose- the dropdown. 16 presets plusrandom. Defaultstanding.seed- only does anything whenposeis set torandom. Otherwise it's decoration.previous_prompt(optional) - connect another selector's output here to daisy-chain.prefixandseparator- editable, but you'll rarely touch them. The defaults (Change pose toand,) do the right thing.- Output: a single STRING named
prompt. Wire it into CLIPTextEncode'stext, or into another selector'sprevious_prompt.
The chaining is where this earns its keep. Feed previous_prompt from, say, a Camera Angle Selector, and you get Change camera angle to front view eye-level shot medium shot, Change pose to arms crossed - two nodes, one coherent instruction sentence, no manual comma wrangling. Disconnect the upstream link and this node becomes the chain head automatically, with no stray leading separator.
Install
The easiest path is ComfyUI Manager - search for "Multi-Angle Camera Selector" and click install. Or go manual:
cd ComfyUI/custom_nodes
git clone https://github.com/saluzafa/comfyui-klein9b-multi-angle
Restart ComfyUI. That's the whole install: the pack has zero dependencies (the code imports only Python's standard library), so there's no requirements.txt drama and no model files to fetch. It appears under prompt/character in the node menu.
Gotchas
- Don't expect the pose to be perfect. This node writes the words; the model still has to obey them, and no prompt tool fixes a model that ignores pose instructions. If Klein isn't following, that's a sampler/settings conversation, not this node's fault.
- The pack is MIT and pure text output - no network calls, nothing to audit beyond a few dozen lines of obvious string building.
- If you set
randomand keep getting the same pose, check your seed widget: withcontrol_after_generateonfixed, the seed doesn't change, so the "random" is deterministic. That's a feature, but it surprises people.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| separator | COMBO | comma | 3 options: comma, space, newline |
| select_综合_1opt | COMBO | 无 | 选择综合相关的姿势标签 #1 |
| select_综合_2opt | COMBO | 无 | 选择综合相关的姿势标签 #2 |
| select_综合_3opt | COMBO | 无 | 选择综合相关的姿势标签 #3 |
| select_姿态_1opt | COMBO | 无 | 选择姿态相关的姿势标签 #1 |
| select_姿态_2opt | COMBO | 无 | 选择姿态相关的姿势标签 #2 |
| select_姿态_3opt | COMBO | 无 | 选择姿态相关的姿势标签 #3 |
| select_手势_1opt | COMBO | 无 | 选择手势相关的姿势标签 #1 |
| select_手势_2opt | COMBO | 无 | 选择手势相关的姿势标签 #2 |
| select_手势_3opt | COMBO | 无 | 选择手势相关的姿势标签 #3 |
| select_视线_1opt | COMBO | 无 | 选择视线相关的姿势标签 #1 |
| select_视线_2opt | COMBO | 无 | 选择视线相关的姿势标签 #2 |
| select_视线_3opt | COMBO | 无 | 选择视线相关的姿势标签 #3 |
| select_整体_1opt | COMBO | 无 | 选择整体相关的姿势标签 #1 |
| select_整体_2opt | COMBO | 无 | 选择整体相关的姿势标签 #2 |
| select_整体_3opt | COMBO | 无 | 选择整体相关的姿势标签 #3 |
| select_上半身_1opt | COMBO | 无 | 选择上半身相关的姿势标签 #1 |
| select_上半身_2opt | COMBO | 无 | 选择上半身相关的姿势标签 #2 |
| select_上半身_3opt | COMBO | 无 | 选择上半身相关的姿势标签 #3 |
| custom_tagsopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| english_tags | STRING | — |
| chinese_tags | STRING | — |
| combined_tags | STRING | — |