๐๐บ๐ Text Generator (Character Pose)
Build pose prompt text from dropdowns instead of typing it
- GEN_OBJECT
- add_GEN_POSE
- GEN_POSE
This is a prompt-writing helper, not an image node. It assembles a chunk of text describing a character's pose - camera angle, facial expression, what the arms and legs are doing, the overall body posture - from a stack of dropdown menus. You pick "hands behind head," "one foot forward," "view from the side," and it strings that into prompt text your checkpoint then renders. It's one node in Bjornulf's larger "Text Generator" system, which is a modular prompt builder you snap together from a main node plus character, scene, style, and pose pieces.
The appeal is that you don't have to remember or type pose vocabulary - you dial it in, or hit RANDOM and let the seed roll a pose for you. Great for churning out varied character shots without rewriting the prompt each time.
How it works
Every pose dropdown has a NONE option (skip this aspect), a RANDOM option (let the node pick one, controlled by the seed), and then a long list of specific choices. You mix and match: set the ones you care about, leave the rest on NONE, and set the interesting ones to RANDOM for variety. The node concatenates your selections into a pose description and outputs it as a GEN_POSE value, which you chain into the rest of the Text Generator graph - typically feeding a character, and connecting onward to the main Image Text Generator node that produces the final prompt string.
Important framing from the author: this node only writes text. That text is then interpreted by whatever checkpoint you're using, and the system was built with FLUX in mind. Don't expect every pose to land perfectly on every model - a lot depends on how well your checkpoint understands natural-language pose descriptions.
The inputs and outputs that matter
seed- drives theRANDOMpicks. Fix it to reproduce a pose, change it to roll a new one.- The
pose_*dropdowns - the meat of the node:pose_view,pose_camera,pose_face,pose_arms,pose_legs,pose_body,pose_head_neck,pose_dynamic,pose_action,pose_sitting,pose_unique, andpose_for_GEN_OBJECT. Each is NONE / RANDOM / a specific option. You won't touch all of them - set two or three that matter and leave the rest NONE. CUSTOM_PROMPT- a freeform multiline field for pose text the dropdowns don't cover.GEN_OBJECTandadd_GEN_POSE(optional) - chaining inputs to link this with an object node or another pose in the Text Generator graph.
Output is GEN_POSE, which connects into the character/main-generator chain rather than straight into a text encoder.
How to install it
ComfyUI Manager: search Bjornulf_custom_nodes, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes
Restart ComfyUI. The Text Generator nodes are text-only, so no heavy dependencies are required for this one.
Common issues
The most common confusion is wiring this straight into a CLIP Text Encode and expecting magic. It's designed to plug into the Text Generator system - the main "Image Text Generator" node and a character node - not to stand alone. If you're only using this piece, take its output as raw text and combine it into your prompt yourself.
The other reality check is model comprehension. Pose control through prose is a FLUX-era strength; on tag-based models like Pony or Illustrious, a sentence like "three-quarter view, one leg slightly bent" lands far less reliably than the equivalent booru tags. If poses aren't sticking, that's usually the model, not the node - the author explicitly warns that some checkpoints are just bad at some things. Start with a couple of dropdowns set, verify they render, then add more.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00โ18446744073709550000 | โ |
| pose_view | COMBO | 9 options: NONE, RANDOM, view from the front, view from the back, view from the side, view from above, +3 | |
| pose_camera | COMBO | 9 options: NONE, RANDOM, facing camera, looking away from camera, looking towards camera, looking past camera, +3 | |
| pose_face | COMBO | 122 options: NONE, RANDOM, smiling, serious, laughing, crying, +116 | |
| pose_arms | COMBO | 84 options: NONE, RANDOM, one hand in the air, thumbs up with both hands, thumbs up with one hand, hands raised above head, +78 | |
| pose_legs | COMBO | 49 options: NONE, RANDOM, one foot forward, standing on tiptoe, one leg slightly bent, kick, +43 | |
| pose_body | COMBO | 24 options: NONE, RANDOM, standing, twisting torso, body bent forward, arching back, +18 | |
| pose_head_neck | COMBO | 12 options: NONE, RANDOM, head tilted, head down, head up, looking over shoulder, +6 | |
| pose_dynamic | COMBO | 19 options: NONE, RANDOM, running with arms outstretched, jumping with arms raised, kicking while running, dancing with hands in air, +13 | |
| pose_action | COMBO | 25 options: NONE, RANDOM, sword fighting stance, boxing stance, martial arts pose, archery stance, +19 | |
| pose_sitting | COMBO | 12 options: NONE, RANDOM, cross-legged sitting, legs hanging off edge, one leg up sitting, knees bent up sitting, +6 | |
| pose_unique | COMBO | 35 options: NONE, RANDOM, superhero pose, yoga pose, lotus position, zombie walk, +29 | |
| pose_for_GEN_OBJECT | COMBO | 22 options: NONE, RANDOM, holding, carrying, looking at, examining, +16 | |
| CUSTOM_PROMPT | STRING | โ | |
| GEN_OBJECTopt | GEN_OBJECT,STRING | โ | |
| add_GEN_POSEopt | GEN_POSE,STRING | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| GEN_POSE | GEN_POSE,STRING | โ |