>- 用自然语言指令剪辑视频:裁剪、拼接、变速、跳切去静音、文字覆盖、横竖比转换、抽帧封面、转 GIF、压缩、加 BGM/水印,基于 ffmpeg。 当用户说"剪视频""裁剪视频""拼接视频""视频变速""去静音""视频加文字""视频转GIF""压缩视频""加BGM/水印"时使用。 本 SKILL 做单条视频的通用剪辑;智能画幅转换用 video-reframe,长视频切片用 clipify/video-highlights,从 0 生成用 ai-video-gen。
npx skills add https://github.com/ZJU-REAL/Easel --skill video-editing
用自然语言指令做通用视频处理。所有操作都调用共享脚本
skills/shared/scripts/video_ops.py(subprocess 封装 ffmpeg/ffprobe),
不要现场手拼 ffmpeg 命令——脚本已处理音画同步、字体路径、编码默认值、
错误捕获等易错点。
> 从项目根目录运行。脚本相对路径:skills/shared/scripts/video_ops.py。
> 每个子命令都支持 -h 查看参数。
处理后的视频/图片,存到 outputs/主题名/。脚本会打印 ✅ <路径> (大小)。
需要"从长视频找精彩片段做成竖版短视频带字幕"时用它。
不做人脸追踪、不做字幕烧录(那是 clipify)。
先 python skills/shared/scripts/video_ops.py info -i <视频> 看清源信息,再操作。
| 子命令 | 用途 | 关键参数 |
|--------|------|----------|
| cut | 按起止时间裁剪 | --start --end/--duration,--reencode 精确裁 |
| concat | 多段拼接 | --mode demuxer(同参数无损)/filter(异参数统一) |
| speed | 变速(音画同步) | --factor 2.0 |
| silence-cut | 检测静音并去除(跳切) | --noise -30 --min-silence 0.5 --pad 0.05(别名 mute-cut) |
| text | 文字覆盖 | --text --position --fontsize --color --start --end --box |
| aspect | 横竖比转换 | --ratio 9:16 --mode pad(补边)/crop(裁切) |
| frame | 抽帧做封面 | --time 00:00:03 --width |
| gif | 转 GIF | --start --end --fps 12 --width 480 |
| compress | 压缩 | --crf 26 或 --bitrate 2M,--scale 降分辨率 |
| bgm | 加背景音乐混音 | --music --voice-volume 1.0 --music-volume 0.3 |
| watermark | 加图片水印 | --logo --position --width --opacity |
| info | 时长/分辨率/帧率/码率(json) | -i |
text / watermark 位置七选一:`center top bottom top-left top-right
bottom-left bottom-right`。中文字体自动探测(wqy-microhei / Noto CJK),
也可 --font 显式指定。
V=skills/shared/scripts/video_ops.py
# 裁剪 00:02:00–00:15:00
python $V cut -i in.mp4 -o out.mp4 --start 00:02:00 --end 00:15:00
# 横版转竖版(社媒竖版转制刚需):补边不裁 or 裁切填满
python $V aspect -i in.mp4 -o vertical.mp4 --ratio 9:16 --mode pad
python $V aspect -i in.mp4 -o vertical.mp4 --ratio 9:16 --mode crop
# 去静音 + 1.25 倍速(先跳切再变速)
python $V silence-cut -i in.mp4 -o t.mp4
python $V speed -i t.mp4 -o out.mp4 --factor 1.25
# 第 3 秒抽帧做封面
python $V frame -i in.mp4 -o cover.jpg --time 00:00:03 --width 1080
# 2–6 秒转 GIF
python $V gif -i in.mp4 -o clip.gif --start 2 --end 6 --fps 12 --width 480
# 60 秒处叠 5 秒"关注我"字幕(底部带框)
python $V text -i in.mp4 -o out.mp4 --text "关注我" --position bottom --box --start 60 --end 65
# 加 BGM(原声 1.0 / BGM 0.3)、加右下角水印、压缩
python $V bgm -i in.mp4 -o out.mp4 --music bgm.mp3 --music-volume 0.3
python $V watermark -i in.mp4 -o out.mp4 --logo logo.png --position bottom-right --width 120
python $V compress -i in.mp4 -o small.mp4 --crf 26 --scale 720
链式:每步产物作下一步输入。典型顺序 `cut → silence-cut → speed → text →
aspect → compress`。竖版转制放最后(在最终画布上叠字幕更可控)。
| 平台 | 比例 | 时长 | 备注 |
|------|------|------|------|
| 抖音/视频号/Reels | 9:16 | ≤60s 黄金,前 3s 定成败 | 1080×1920 |
| 小红书视频 | 9:16 / 3:4 | ≤60s | 竖版优先 |
| B站/YouTube 横版 | 16:9 | 数分钟起 | 1920×1080 |
| Instagram Feed | 4:5 / 1:1 | 短 | 4:5 占屏更大 |
更详细规范按需查 references/(如有)。
text 覆盖info 看源比例/时长/有无音轨,再决定操作<子命令> -h.drafts/outputs/主题名/,最后告知路径与时长Take zju-real/video-editing from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.