MOTION SOURCE — this recipe was reconstructed from a source clip hosted on this platform, which is the reference for the choreography: https://cdn.openclips.ai/community_workflows/3c31cff5-41fd-4c04-9704-df1df83a5657.mp4 (15s, 9:16, the original 'silly cat' dance — conformed to exact 9:16, audio intact) The dance beats written into step 2 were transcribed from that clip frame by frame at 2fps: the springy two-step, the alternating front paws, the knee lifts, the head bobs, the tail counterweight, and the wide-shrug and raised-paw accents. The one-legged spin is an addition, not in the source. IMPORTANT — the clip is NOT passed to the model, and cannot be. Two placements were tested and both fail: inside a step's params it is refused outright ('params carries videoUrl, which seedance-2.0 does not take'), and at step level it is accepted by the API and then silently dropped from the stored row. So step 2 DESCRIBES the choreography instead of copying it, and users get these moves at the model's own timing, not beat-for-beat with the source. If videoUrl is ever accepted on a step, attach the clip above as the motion reference on step 2 and the dance will be copied beat for beat — that is how the preview video on this workflow was actually produced (Seedance 2.0, videoUrl + character + backdrop reference, via a direct generate call rather than a workflow run). AUDIO: the source clip's own soundtrack cannot ride either — audio: 'original' needs Kling's videoUrl, and audioUrls is refused at render. Step 2 uses generateAudio instead, prompted for a silly bouncy beat.