Video Style Editor (Prompt) · عوامی Open Skill

Video Style Editor (Prompt)

Transform ordinary videos into extraordinary visual experiences using advanced AI style transfer. Convert your footage into stunning artistic styles, including anime, oil painting, watercolor, sketch, cyberpunk, pixel art, comic books, and cinematic realism.

@v8203065

Custom

1 0 0

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/3986714/2026-10-22/92u3xstm.jpg

---

allowed-tools:
  - probe_media
  - extract_frame
  - extract_audio
  - extract_clip
  - generate_image
  - generate_video
  - mix_clips
  - recognize_video
  - download_video
---

# Video Style Editor (Prompt-based restyle)

## When to use
- The user uploads (or links) a video and asks to change its **visual style** via a prompt: "deixa em anime", "tira um ar de filme 90s", "vira aquarela", "estilo cyberpunk", "tinta china".
- The user wants to restyle a clip **keeping the original motion, framing and audio**.
- Partial edits also count: "keep the framing, only change the color grading".

Do NOT use this skill for: generating a brand-new video from scratch (use `generate_video` directly), trimming/highlight cutting (use `extract_clip` + `mix_clips`), or color-only tweaks on the file itself.

## Reference files
- `references/style-prompts.md` — read when you need to turn a vague user request into a concrete style prompt (palette, medium, lighting, grain, camera). Read it BEFORE building the image prompt.

## Steps

Use `write_todos` first for this multi-stage workflow and replace the whole list as stages complete.

### 1. Get the source video
- If the user uploaded it in this conversation: use that asset directly.
- If the user gave a YouTube/TikTok/Instagram link: call `download_video(url=...)` and use the returned `downloadUrl` **verbatim** (it may be a `shorturl://…` reference — do not edit it). Facebook/X/LinkedIn links are not downloadable; explain the limitation.
- If nothing is provided: ask for the video before doing anything else.

### 2. Inspect it
- `probe_media(url=...)` → duration, width/height, fps, `has_audio`.
- `recognize_video(video_url=..., prompt="Describe the scene, the subject, the camera movement and the current visual style in detail.")` → understand the content so the style prompt preserves the subject and action.

### 3. Choose the keyframes
- Pick **3–5 representative moments** spread across the clip (start, middle, end + notable beats), all strictly inside `duration` (never beyond it — that fails the whole call).
- `extract_frame(url=..., timestamps=[...], name="Source Frame", entity_type="extracted_frames")` → one jpg asset per timestamp, in order.
- For a clip longer than ~30s, cut a short representative segment first with `extract_clip(url=..., segments=[{start, duration}], accurate=false, name="Source Segment", entity_type="video_clips")` and extract frames from that segment instead.

### 4. Restyle each frame
- For each extracted frame, call `generate_image` with:
  - `model="i2i"` (image-to-image; this is the channel that edits an existing frame)
  - `input_urls=[<the source frame asset_id>]` — one frame per call, so each call edits one image (do not batch several frames into a single call)
  - `prompt` = the style prompt (see `references/style-prompts.md`) + a preservation clause: keep the same subject, pose, framing, composition and camera angle; change only the visual style
  - `orientation` = `portrait` / `landscape` / `square` to match the source's aspect
  - `name="Styled Frame N"`, `entity_type="storyboard_images"` (the platform appends the index for multi-output calls)
- If the user's prompt implies a very high-detail or multi-reference look, you may use `model="i2i.hd"` instead; it does not support adult content.

### 5. Animate the styled frame
- `generate_video` with:
  - `model="i2v"` (image-to-video)
  - `input_urls=[<the best styled frame asset_id>]` (first frame = start frame)
  - `prompt` = the style prompt condensed to a motion/look description + "smooth natural motion matching the original clip's movement"
  - `duration` = seconds (keep it short, 3–6s per clip; longer clips are split into several generations)
  - `orientation` matching the source
  - `name="Stylized Clip"`, `entity_type="styled_videos"`
- If the source clip is longer than one generated clip, generate one clip per keyframe segment (each starting from its own styled frame) and stitch them with `mix_clips` i