ComfyUI Node

Pose Editor

The JSON bridge for when you must nudge a wrist

By EricRollei·Created 5 months ago·Updated 4 months ago· 3
Pose Editor
  • pose_keypoint
  • pose_keypoint
canvas_width1024
canvas_height1024
pose_json_str
edited_pose_json

Detection is great until it isn't - the source photo has a hand doing something the model read wrong, and you need one keypoint moved a few pixels. ComfyUI's answer to "fine-tune a skeleton by hand" has historically been external editors: huchenlei's openpose editor, westNeighbor's ultimate-openpose-editor, that sort of thing. Pose Editor is the pack's bridge node for exactly that workflow. It accepts a pose from any source and hands you back a POSE_KEYPOINT, so a JSON edited anywhere can flow straight into the pack's renderer.

Be clear about what it is, though: it's a passthrough, not the full editing UI. The pack's README says the complete built-in editor is planned for a future release. Today this node's job is plumbing - get JSON in, get a usable POSE_KEYPOINT out.

How it works

The node takes three possible inputs and resolves them by priority: edited_pose_json (an edited JSON string from an external editor) wins, then pose_keypoint, then pose_json_str (a raw pose JSON string). It parses the JSON, handles both single-dict and list-of-dicts formats, and returns it as a proper pose list. If you paste a JSON string, the canvas dimensions get set from the node's canvas_width/canvas_height inputs.

Inputs and outputs

Required: canvas_width and canvas_height (defaults 1024²) - these define the canvas your JSON gets placed on. Optional: pose_keypoint, pose_json_str, edited_pose_json (all multiline strings). The single output is pose_keypoint, which you can run into a Pose Renderer, a Save Pose Keypoint, or any node that speaks the type.

Installing it

Same pack, same commands: ComfyUI Manager → search Eric Composer Studio → install → restart, or clone into custom_nodes and pip install -r requirements.txt. Like the other pose utility nodes it needs comfyui_controlnet_aux present for the POSE_KEYPOINT socket type, but otherwise runs with no models and no rtmlib involved.

Where people get burned

If you're loading an edited pose from huchenlei's or westNeighbor's editors, you want the edited_pose_json socket - that's the one with priority, and it's the one the README names for that purpose. Drop your raw unedited JSON in pose_json_str only when there's nothing better. And don't expect the node to show you the skeleton - there's no visual editor inside; render the output to look at it. The gap between "I know the JSON is right" and "I can see it's right" is real, and the built-in editor coming in a future release is exactly what's meant to close it.

CategoryEric_Composer_Studio

Inputs (5)

NameTypeDefaultDescription
canvas_widthINT102464–8192
canvas_heightINT102464–8192
pose_keypointoptPOSE_KEYPOINT
pose_json_stroptSTRING
edited_pose_jsonoptSTRING

Outputs (1)

NameTypeDescription
pose_keypointPOSE_KEYPOINT