ComfyUI Node

OpenPose Studio

Draw and edit ControlNet poses without leaving the graph

By andreszs·Created 5 months ago·Updated 3 months ago· 74
OpenPose Studio
  • pose_keypoint
  • areas
  • IMAGE
  • JSON
  • KPS
pose_json
render_bodytrue
render_handtrue
render_facetrue

If you've ever tried to pose a character for ControlNet by dragging a skeleton around in some separate web app, then re-exporting the JSON, then re-uploading it, then realizing you got an elbow wrong - OpenPose Studio is the fix. It's a full visual pose editor that lives inside the node itself. You draw the pose on the canvas, right there in your ComfyUI graph, and it outputs a rendered skeleton image plus the raw keypoint data, ready for ControlNet's OpenPose preprocessor slot.

It's built by andreszs (Inuya5haSama on Reddit), and it's a from-scratch rebuild of the old, long-neglected OpenPose Editor node - same underlying JSON format so your existing poses still load, but a genuinely more reliable editor on top: individual keypoint editing with real visual feedback, a pose gallery with thumbnails, collections for organizing multi-pose files, and a merger tool for consolidating them. It's actively maintained, which matters - the old editor mostly wasn't, and a pose editor with silent bugs is worse than no editor at all.

How it works

Body pose is 17 keypoints, hands are 21 each, face is 70 landmarks - the standard OpenPose skeleton. OpenPose Studio gives you a canvas to click-drag those points directly, with per-limb toggles for what actually gets rendered into the output image. Pair it with a pose_keypoint input from an upstream detector and it'll load a real photo's pose so you can tweak it instead of drawing from scratch - that's usually the fastest path: detect, adjust, render.

The inputs and outputs that matter

  • pose_json (STRING, required) - a raw pose JSON, if you're feeding one in as text rather than editing live. Leave it default and just use the canvas editor if you're building from scratch.
  • render_body, render_hand, render_face (BOOLEAN, all default on) - what gets drawn into the output skeleton image. Turn off what you don't need; a openpose_faceonly style ControlNet pass, for instance, only wants the face layer lit.
  • pose_keypoint (POSE_KEYPOINT, optional) - wire in the output of a DWPose Estimator (or similar) to load a detected pose as your starting point instead of drawing cold.
  • areas (CONDITIONING_AREAS, optional) - this one's specific to andreszs's own ecosystem: his companion pack ComfyUI-Lora-Pipeline ships "Conditioning Pipeline (Set Area)" nodes for per-region conditioning, and this input lets OpenPose Studio visualize those areas overlaid on the pose canvas. If you're not using that pack, ignore it.

Three outputs: IMAGE is the rendered skeleton - this is what you plug into your ControlNet's image input. JSON is the pose data as a string, in standard OpenPose format, for saving or feeding to other tools. KPS is the same data typed as POSE_KEYPOINT, for chaining into other pose-aware nodes rather than round-tripping through text.

How to install it

It wasn't in ComfyUI Manager at launch - search "OpenPose Studio" there first since that can change, but the documented path is manual:

cd ComfyUI/custom_nodes
git clone https://github.com/andreszs/ComfyUI-OpenPose-Studio

Restart ComfyUI and the node shows up under image > OpenPose Studio. Needs Python 3.10+ and a reasonably recent ComfyUI build - nothing else. No model downloads, no pip dependencies to fight; the whole editor runs on browser Canvas 2D, so there's genuinely nothing heavy here.

Common issues & troubleshooting

Face keypoints won't move. By design, face landmarks are pass-through only in the current version - you can toggle face rendering on/off, but you can't drag individual face points the way you can body and hand joints. Not a bug, just not built yet.

Pose Merger output looks squashed or misaligned. The merger tool doesn't automatically unify resolution across the files you're combining - if your source poses were captured at different canvas sizes, fix that before merging, not after.

The UI just doesn't show up, or looks stale after an update. Hard-refresh your browser (clear cache) and restart ComfyUI. This one's a JS/UI-heavy extension, so a cached frontend bundle is the usual culprit.

Your render toggles don't save with the workflow. They're stored in browser localStorage, not in the workflow JSON - expected behavior, but it'll surprise you the first time you reload a saved workflow on a different browser or machine and the toggles are back to default.

CategoryOpenPose Studio

Inputs (6)

NameTypeDefaultDescription
pose_jsonSTRING
render_bodyBOOLEANtrue
render_handBOOLEANtrue
render_faceBOOLEANtrue
pose_keypointoptPOSE_KEYPOINT
areasoptCONDITIONING_AREAS

Outputs (3)

NameTypeDescription
IMAGEIMAGE
JSONSTRING
KPSPOSE_KEYPOINT