Save SDPose Keypoints as JSON
Save keypoints to JSON
- pose_kps
This is the tail of the pose pipeline: it writes a POSE_KEYPOINT stream to a JSON file in ComfyUI's output folder. If you're running the pack's long-video workflows you know why that matters - pose detection on a multi-minute clip is the slow, expensive stage, and once you've got good keypoints you don't want to re-run it every time you tweak a drawing style or a yaw threshold. Save once, and the Load SDPose JSON node brings it back in seconds.
It's an output node, so it returns nothing - the work product is the file on disk. You give it the pose data and a name, and it writes to ComfyUI/output/ with a _00001_-style counter in the name when it can't overwrite.
The inputs that matter
- pose_kps - the POSE_KEYPOINT stream (required).
- filename_prefix (default
PoseKeypoint) - base filename. - fps (default 0) - the one that changes the file format. Set it to 0 and you get a bare array of frames, which is what older tools expect and what any pose reader can parse. Set it above 0 and the file becomes
{"fps": 16, "frames": [...]}, which is what makes Load SDPose JSON'starget_fpsresampling work later. If you think you might want frame-rate conversion down the line, save with your fps - it costs nothing and unlocks the smarter load. - overwrite (default true) -
truereplaces the previous file of the same name (handy when iterating),falseauto-increments the counter so every run is preserved. If you're batch-generating pose files per video segment in a loop, set it to false or later runs will clobber earlier ones.
Where it fits
In the pack's pose-detection workflow, save the body keypoints here after detection and alignment, and save face feature JSONs via the same workflow's other stages - then the expensive detection block can be muted while you iterate on drawing and animation. One tip from the workflow docs: clean your work directory before a fresh run, especially the face-image folder, so stale detection data doesn't leak into the new pass.
Install
Part of ComfyUI-CustomNodeKit. Manager → search "ComfyUI-CustomNodeKit", or:
cd ComfyUI/custom_nodes
git clone https://github.com/user2318/ComfyUI-CustomNodeKit.git
cd ComfyUI-CustomNodeKit
pip install -r requirements.txt
Restart ComfyUI. No models involved - it's a JSON writer.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_kps | POSE_KEYPOINT | — | |
| filename_prefix | STRING | PoseKeypoint | — |
| fpsopt | FLOAT | 00–120 | 若 >0,将 fps 写入 JSON 头部;=0 则存为裸数组(兼容旧版)。If >0, writes fps to JSON header; =0 saves as raw array (backward compatible). |
| overwriteopt | BOOLEAN | true | True=覆盖上次文件(向后兼容);False=自动递增编号不覆盖。True=overwrite previous file (backward compatible); False=auto-increment without overwriting. |
Outputs (0)
No outputs