alibabacloud-video-editor

Installation
SKILL.md

Video Editor Skill

Edit video in the cloud (Alibaba Cloud ICE) — no local ffmpeg. Three modes:

  • Timeline editing (SubmitMediaProducingJob) — assemble several clips: you write a Timeline JSON, the script submits a producing job, polls it, and returns the output video URL.
  • Normal templates (AddTemplate, Type=Timeline) — store a parameterized Timeline Config, inspect its ClipsParam contract, and repeatedly render it with replacement text/media → references/22-normal-templates.md.
  • Intelligent production (SubmitIProductionJob) — run one algorithm over one media file (smart cover, logo/subtitle erasure, caption extraction, matting, beauty, H→V, audio denoise/mixing/demix/analysis). No Timeline involved → §7.1 and references/13-intelligent-production.md.

This skill is the last link of the chain. Content understanding — what happens where, who speaks, which moments matter — is produced upstream by other capabilities and handed to this skill as data (§2.4). Everything here turns that data plus the material into a rendered, verified video.

Hard Rules

Six rules where deviation is not a taste call. Everything else in this document — every font size, colour, duration, preset and length ratio — is a worked example from a job that shipped, not a mandate. Read those for what is possible, then make your own call from the material and the user's ask.

  1. Nothing lands on the user's local storage. Media is never downloaded — read it in place (ffmpeg -i "<https URL>" streams over HTTP; a snapshot job returns signed frame URLs). Intermediates live in OSS: an algorithm's output, a dub take, a proxy, a converted input — all of them are OSS objects an ICE job wrote, never files on the user's disk. The deliverable is handed over as a playback URL (§8), not a downloaded file; produce a local file only when the user explicitly asks for one. The few things a local tool must write to be read at all (a waveform PNG, a silencedetect transcript, frames you inspect, edl.json, project.md) go into one scratch dir outside the user's project — ${TMPDIR:-/tmp}/video-editor/<session> — and are disposable; never create them in the user's workspace. A local file the user hands over is uploaded to OSS first (§4) and operated on there.
  2. All generation goes through ICE; ffmpeg only analyzes audio. Cutting, concatenating, trimming, overlaying, transitions, subtitle burn-in, mixing, speed change, synthesized speech/dubbing, format conversion: an ICE job renders it (SubmitMediaProducingJob for a Timeline, SubmitIProductionJob for a single-media algorithm, a template render for a Normal Timeline). ffmpeg's whole remit is reading the audio signal — waveform (showwavespic), silence/speech tails (silencedetect), loudness (volumedetect), duration (ffprobe) — and it writes nothing but those analysis numbers (§1.4). It never generates or transforms media: no concat, no -filter_complex over a media file, no -c copy, no re-encode, no atempo, no transcode. Frames come from SubmitSnapshotJob, not from ffmpeg. The one exception is a chart, not media: timeline_view.py crops tiles out of a cloud snapshot sprite and stacks them over the waveform, because no ICE API returns either (§1.4). Not a Python media library either, and not a different cloud product. If no ICE job can express what the user needs, say so and stop — a locally rendered deliverable is a wrong answer, not a workaround.
  3. Confirm region first, then the output bucket before any render (§2.1). Template Config generation and AddTemplate do not need a bucket; rendering one does. There is no default region, not even cn-shanghai.
  4. Confirm the plan in plain language before submitting anything (§2.2). A producing job costs money and minutes; a paragraph of prose costs neither.
  5. Verify every deliverable before reporting it (§9). Success means a file was written, nothing more. Never report an unverified output as verified.
  6. Compile every multi-clip Timeline; never write it directly. Even when the user asks only for timeline.json and forbids cloud calls, first write edl.json, then execute python "$SKILL_DIR/scripts/video_editor.py" compile --edl edl.json --output timeline.json — compile is offline and makes no cloud call (§2.1, 18-edl-and-compile.md). The generated file is the deliverable. Fix every blocking checklist violation; both compile and submit enforce the same checklist (§5). Division of labor: references/ = knowledge base you read on demand; scripts/video_editor.py = pure executor (submit / poll / fetch URL, plus iproduction / iproduction-status); scripts/frame_qa.py = model review of cloud material — the whole video (--mode full) or signed snapshot frames (--frames), never local sampling (§9). All editing logic lives in the Timeline you generate.

1. Setup

$SKILL_DIR below = the directory containing this SKILL.md. Always invoke the scripts with an absolute path (python "$SKILL_DIR/scripts/video_editor.py" ...); the working directory is usually the user's project, not the skill directory.

Installs
160
GitHub Stars
256
First Seen
Apr 2, 2026
alibabacloud-video-editor — aliyun/alibabacloud-aiops-skills