Dance Copy with Character · عوامی Open Skill

Dance Copy with Character

Dance Copy with Character Digen پر ایک عوامی Open Skill ہے۔ کھولیں اور دیکھیں یہ ورک فلو کیا تخلیق کرتا ہے۔

@ash13600613

Film

18 1 15

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/3873649/2026-10-17/bwrfw6nq.jpg

# Dance Copy with Character

Recreate the preset dance video using the user's own character: the character performs the same dance moves as the fixed reference video, keeping the character's identity and outfit and (optionally) the original dance music.

## When to use
- The user wants to "copy" / "recreate" the dance video with their own character ("make my character do this dance", "a copy of this dance with our character").
- The user wants to redo, tweak, or continue a dance-copy result produced by this skill.

## Inputs
- **Dance reference video**: FIXED to the preset `dance_ref_video` — the dance to copy is always this one; it is not taken from the user.
- **Character image**: the character who will dance. The user provides one this turn; if none is provided, use the preset `character_image`.

## Steps
1. First use `write_todos` to list the steps and update it as you progress.
2. **Probe the dance video**: call `probe_media(url=<preset dance_ref_video asset_id or s3:// uri>)` to get `duration` and whether it `has_audio`. Note the duration for later.
3. **Understand the dance**: call `recognize_video(video_url=<preset dance_ref_video>, prompt="Describe the dance moves, rhythm, style, and setting in detail so it can be re-performed.")` to get a description of the choreography to drive the generation prompt.
4. **Capture dance poses**: call `extract_frame(url=<preset dance_ref_video>, timestamps=[0, <duration>/3, 2*<duration>/3, <duration>-1], name="Dance pose", entity_type="dance_ref_frames")` to get 3–4 stills showing the key poses. (Keep `add_to_canvas=false` for these intermediate frames.)
5. **Prepare a clean character reference** (this preserves the character's identity and outfit, e.g. a nurse scrub uniform): call `generate_image(model='i2i', input_urls=[<character image>], prompt="Keep the exact same person and outfit (<describe the outfit/appearance from the character image, e.g. light blue nurse scrub top with a stethoscope, blonde hair>). Show them standing in a neutral full-body dance-ready pose, plain studio background, photorealistic.", orientation='portrait', name="Character reference", entity_type="characters")`. Use this clean reference as the primary identity image in the next step.
6. **Generate the character dance video**: call `generate_video(model='ref2v', input_urls=[<prepared character reference from step 5>, <dance pose frames...>], prompt="The person in the first reference image performs the following dance: <dance description from step 3>. Match the dance moves and poses shown in the reference frames, KEEP the same person's identity and exact outfit (<outfit from the character image>) throughout, <setting/style from the description>.", orientation='portrait', duration=<source duration, clamped by the model>, name="Character dance", entity_type="character_dance_videos")`. Use `orientation` matching the source video (portrait 9:16 for the preset).
7. **Keep the original music (if the dance video has audio)**: call `extract_audio(url=<preset dance_ref_video>, format="m4a", name="Dance music", entity_type="dance_music")` to pull the track, then `mix_clips(clips=[{video: {url: <generated character dance asset_id>}, audio: {url: <extracted music asset_id>}}], orientation="portrait", name="Final dance", entity_type="final_videos")` to combine the character dance with the original music. If the dance video has no audio, skip this step.
8. Reply in natural language summarizing the result (character + dance + duration), and call `set_guidance` to suggest next actions (e.g. "redo with a different character", "make it longer", "change the background").

## Notes
- The dance reference video is FIXED to the preset `dance_ref_video`; the skill always copies this same dance. Only the character image is taken as input (user-provided this turn, or the preset `character_image`).
- If the user provides a new character image, use it as the input to step 5 so identity follows the new character.
- If the user says the r