Nodes/ComfyUI-CustomNodeKit/Save SDPose Keypoints as JSON
ComfyUI Node

Save SDPose Keypoints as JSON

Save keypoints to JSON

By user2318·Created 4 months ago·Updated about a month ago· 56
Save SDPose Keypoints as JSON
  • pose_kps
    filename_prefixPoseKeypoint
    fps0
    overwritetrue

    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's target_fps resampling 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) - true replaces the previous file of the same name (handy when iterating), false auto-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.

    CategorySDPose

    Inputs (4)

    NameTypeDefaultDescription
    pose_kpsPOSE_KEYPOINT
    filename_prefixSTRINGPoseKeypoint
    fpsoptFLOAT00–120若 >0,将 fps 写入 JSON 头部;=0 则存为裸数组(兼容旧版)。If >0, writes fps to JSON header; =0 saves as raw array (backward compatible).
    overwriteoptBOOLEANtrueTrue=覆盖上次文件(向后兼容);False=自动递增编号不覆盖。True=overwrite previous file (backward compatible); False=auto-increment without overwriting.

    Outputs (0)

    No outputs