Concat SDPose Keypoints
The two minutes of pose editing that needs a two-line node
- pose_a
- pose_b
- concatenated_pose
Pose sequences are just lists of frames, and sometimes you need two lists to become one - clip A's motion, then clip B's motion, one continuous dance. Concat SDPose Keypoints is the node that does it: pose_a plus pose_b, appended in time, one concatenated_pose out. It's a two-line implementation and that's the entire review, but it's the kind of node you'll quietly reach for at 1am when your 360° reference clip and your driving clip need to share a timeline.
There's genuinely nothing to configure. Two optional inputs (pose_a, pose_b), one output. The behavior is forgiving in exactly the ways you'd hope:
- Both empty → empty list out (not a crash).
- One side empty → the other side passes through.
- Both present →
pose_afollowed bypose_b.
That "missing side passes through" behavior matters more than it looks. In the pack's looped workflows, where a segment loop accumulates a pose sequence frame by frame, wiring the accumulated pose into pose_a and the new segment into pose_b means the node keeps appending across iterations without you having to special-case the first loop. It's the accumulator pattern wearing a SDPose costume.
When you'd reach for it
- Joining two separately-detected video segments into one pose sequence before a single drawing pass.
- Appending a pose clip to a longer build (dance mashups, multi-shot choreography).
- Accumulating frames in a loop where an append-every-iteration node is exactly what the graph wants.
Like all the plumbing in this layer (see the KB's node-plumbing doc), it exists to keep your graph legible - one named "concat" node instead of a mental note that two sequences get merged later.
Install
Part of user2318/ComfyUI-CustomNodeKit. ComfyUI Manager: search "CustomNodeKit". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/user2318/ComfyUI-CustomNodeKit.git
cd ComfyUI-CustomNodeKit
pip install -r requirements.txt
then restart. No models, no downloads - it's pose_a + pose_b in a trench coat.
The gotcha
It concatenates in time and nothing else. If pose_a was detected at a different resolution or canvas size than pose_b, the concatenated sequence carries both - and downstream draw nodes read the canvas size from the first frame, so the second clip can end up drawn on the wrong canvas. Normalize your segments to the same canvas (the pack's Resize SDPose Keypoints exists for this) before concatenating, not after. Also, frame rates: concatenation just stacks frames, it does not resample, so two clips at different source fps become one sequence with a tempo change baked in. If you need frame-rate alignment, resample first - that's a different node's job.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_aopt | POSE_KEYPOINT | — | |
| pose_bopt | POSE_KEYPOINT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| concatenated_pose | POSE_KEYPOINT | — |