Video Animator · skill pública Open Skill

Video Animator

Animate your videos

@yeskethecomedian

Anime

3 0 4

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/4070602/2026-10-03/8j86gnrf.jpg

# Video Animator

Turn an existing video into an animated version. The user provides a source video (uploaded asset or a social link); you restyle its content into a chosen animation look and produce animated clips, optionally mixed into a final cut with music/voiceover.

## When to use
- The user uploads a video and wants it "animated", "turned into a cartoon/anime/3D", "restyled", etc.
- The user gives a YouTube/TikTok/Instagram link and wants an animated version.
- The user wants to redo one clip, change the animation style, or re-mix the final video.

## Steps
1. **Get the source video.**
   - If the user uploaded a video asset, use its URL directly (do NOT call `download_video` on it).
   - If the user gave a YouTube/TikTok/Instagram link, call `download_video(url=...)` and use the returned `downloadUrl` (pass it verbatim, even if it looks like `shorturl://...`).
2. **Understand the video.** Call `recognize_video(video_url=<source>, prompt="Describe the subjects, scenes, actions, camera moves, and original visual style in detail so I can recreate it in an animation style.")`. If dialogue/lyrics matter, also call `transcribe_audio(audio_url=<source>)`.
3. **Confirm the animation style.** Ask the user to pick one: 2D cartoon, anime, 3D/Pixar, claymation, watercolor, comic, or "any style — you choose". If they already stated a style, use it. Default to a clean 2D cartoon if unspecified.
4. **Generate animated keyframe images.** For each key scene/subject from step 2, call `generate_image` (text-to-image, `model='t2i'`) describing the same scene/subject in the chosen animation style. Pass `orientation='square'` (1:1) by default unless the user asks for a different ratio (e.g. portrait 9:16 or landscape 16:9), `name` = shot title (e.g. "Shot 1 - hero intro"), `entity_type='storyboard_images'`.
5. **Animate each keyframe.** For each keyframe image, call `generate_video(model='i2v', input_urls=[<keyframe asset_id>], prompt="Animate this scene in <style> with natural motion matching the original video", orientation='square' (or the user's requested ratio), name=<shot title>, entity_type='storyboard_videos')`.
6. **Optional final mix.** If the user wants a finished cut (or it's a multi-shot video), generate background music with `generate_music` (`entity_type='music'`) and/or a voiceover with `generate_tts` (`entity_type='voiceovers'`), then stitch everything with `mix_clips` — pass each animated clip as a `clip.video` and the music/voiceover as `clip.audio` (use `delay`/`volume` to align), `orientation='square'` (or the user's requested ratio), `name` = final cut title, `entity_type='final_videos'`. If the user only wants the clips, skip this step.
7. **Reply** in natural language: list the animated clips (and final cut if made), the style used, and offer to restyle a clip, change the style, or re-mix.

## Notes
- Use `write_todos` to track the multi-step pipeline (understand → keyframes → clips → mix) and update it as you progress.
- When a stage completes, call `set_guidance` to suggest next actions (e.g. "change the animation style", "redo clip 2", "add music and re-mix").
- Intermediate products (keyframes, clips) will be visible on the canvas — that's expected.
- Video generation does not support NSFW/adult content on any channel; politely decline such requests.
- Report failures honestly; never fabricate URLs. If a generation fails, retry once or tell the user what went wrong.