一个基于 AI 的自动视频剪辑 Skill,专为口播/脱口秀/Vlog 类视频设计。
它可以自动将你的视频按每句话切分,去掉口误和卡壳,加上字幕,最终合成一个可以直接发布的短视频。
适用于:小红书、抖音、视频号等竖屏短视频平台
- 单次编码渲染 — 从原始视频直接到最终输出,只编码一次,无质量损失
- 语音识别切分 — 支持 faster-whisper(推荐,4x 加速)和 openai-whisper,自动按句子切分
- GPU 硬件加速 — 自动检测 NVIDIA NVENC / Apple VideoToolbox / Intel QSV / AMD AMF
- 自动字幕 — 中英文自动检测,智能折行(英文单词不断行),竖屏位置优化,支持逐词高亮卡拉OK模式
- 自动封面 — 多种封面风格,支持视频取帧背景、移动端优先大标题、教程型卡片布局,也支持自定义封面 PNG
- B-roll 替换 — 指定片段使用替代画面(保留原始音频),自动缩放裁切匹配分辨率
- 持续叠加层 — 透明 PNG 全程叠加显示(品牌水印、系列标识等)
- 闪烁圆点 — 录像机 REC 风格的周期性闪烁标志
- 结尾卡片 — 黑屏文字卡片自动拼接,带淡入淡出效果
- 背景音乐 — 支持添加 BGM,自动循环、音量控制、结尾淡出,与人声智能混音
- 静音检测 — 自动识别语音片段间的长停顿/卡壳/口误,辅助 AI 选片决策
- 音频混合 — 独立音频文件(M4A 等)可与任意画面组合,实现配音+B-roll 剪辑
- 章节时间轴 — 半透明白色章节进度条,章节名全程显示,当前章节高亮
- 变速输出 — 同时输出 1x / 1.25x / 1.5x 等多个速率版本,每个都从原始视频直接编码
- Rotation 检测 — 自动检测 iPhone 竖屏视频的 rotation 元数据,正确识别显示尺寸
- 多视频支持 — 同时处理多个视频文件,跨视频混合选择片段
- 时长对齐 — 自动确保视频/音频流时长一致,避免平台上传时的时长不匹配报错
- Remotion 口播生成 — 当只有语音没有画面时,使用 Remotion 生成配合语音的动态视频(TikTok 风格字幕、图文解说、动态文字等)
- 脱口秀/Standup 视频生成 — 完整的 Remotion 项目,将音频+文稿转为动态文字视频,12 种文字动画效果,自动检测笑点,3 种风格预设
- 文字徽标 — 在视频中指定时间段显示中心文字(如"开源免费"),支持淡入淡出效果
- 丰富字体目录 — 内置 14 款免费中英文字体(思源黑体、霞鹜文楷/Lite、站酷系列、Inter、Montserrat 等),一键下载缓存,自动识别得意黑 (Smiley Sans) 等自定义字体
- 素材库管理 — 自动初始化视频项目目录结构(raw/broll/bgm/assets),双后端索引(JSON + SQLite),自动扫描和分类素材
- 填充词检测 — 自动识别中英文填充词(嗯/呃/那个/um/uh/like),标记纯填充词片段为建议跳过
- AI 智能选片 — AI agent 基于吸引力评分自动推荐最佳片段,长视频自动拆分为多个短视频方案
- 字幕风格预设 — 6 种字幕样式(normal/karaoke/bold_pop/neon/minimal/yellow_pop)
- 多平台导出 — 一键输出 9:16(抖音/TikTok)、1:1(Instagram)、16:9(YouTube)多种比例
- 提示词教程 — 14 个场景化提示词指南(口播处理、素材分析、补录、动画配音、多平台导出、封面、长拆短、字幕风格等),可直接复制使用
- 跨平台 — 支持 macOS / Linux / WSL / Windows
- 中国加速 — 自动检测中国区域,使用清华 pip 镜像和 HuggingFace 镜像
openclaw skills add https://github.com/maxazure/video-editing-skill.git或手动克隆到 OpenClaw skills 目录:
git clone https://github.com/maxazure/video-editing-skill.git ~/.openclaw/skills/video-editinggit clone https://github.com/maxazure/video-editing-skill.git
cd video-editing-skillmacOS:
brew install ffmpegUbuntu/Debian/WSL:
sudo apt install ffmpeg fonts-noto-cjkWindows: 建议使用 WSL2 环境。在 WSL 中按 Ubuntu 方式安装即可。
python3 -m venv .venv
source .venv/bin/activate # Windows WSL 同样使用此命令
pip install faster-whisper # 推荐,速度快 4 倍中国用户加速安装:
pip install faster-whisper -i https://pypi.tuna.tsinghua.edu.cn/simpleWhisper 模型首次运行时会自动下载。中国用户会自动使用 HuggingFace 镜像 (hf-mirror.com)。
python3 scripts/utils.py # 运行环境诊断这会输出完整的环境报告:平台、GPU(包括显卡型号和架构代次)、编码器、Whisper 引擎、推荐模型等。
不同显卡需要不同的 CUDA 和依赖版本,详见下表:
| 显卡系列 | 架构 | CUDA Toolkit | 驱动版本 | CTranslate2 | 计算精度 | Whisper 引擎 |
|---|---|---|---|---|---|---|
| RTX 40xx | Ada Lovelace (sm_89) | >= 12.4 | >= 535 | >= 4.5.0 | float16 / int8 均可 | faster-whisper |
| RTX 50xx | Blackwell (sm_120) | >= 12.8 | >= 565 | >= 4.7.1 | float16(推荐) | faster-whisper |
| Intel Arc | Xe HPG / Battlemage | N/A | i915 | N/A | N/A | OpenVINO 或 whisper.cpp+SYCL |
NVIDIA RTX 40 系列: 开箱即用,标准安装 pip install faster-whisper 即可。
NVIDIA RTX 50 系列(5060/5070/5080/5090):
# 需要 CUDA 12.8+ 和最新 CTranslate2
pip install faster-whisper>=1.1.0
pip install --upgrade ctranslate2>=4.7.1
# 工具会自动检测 50 系列并使用 float16 精度,避免 INT8 cuBLAS 报错Intel Arc 显卡(A770/A750/B580): faster-whisper 不支持 Intel Arc GPU 加速。推荐使用 OpenVINO:
pip install openvino openvino-genai或编译 whisper.cpp 并启用 SYCL 后端。详细配置见 SKILL.md 中的「Linux GPU 配置指南」。
首次使用时,初始化项目素材目录结构:
python3 scripts/media_library.py init这会创建:
media/
├── raw/ — 原始素材
├── broll/ — B-roll 素材
├── bgm/ — 背景音乐
├── assets/ — 叠加素材(水印、Logo)
└── output/ — 输出目录
扫描并建立索引:
python3 scripts/media_library.py scan # 扫描并索引
python3 scripts/media_library.py status # 查看素材库状态
python3 scripts/media_library.py search "关键词" # 搜索素材索引后端自动选择:
- < 200 个文件 → JSON 索引(
media_index.json) - ≥ 200 个文件 → 自动升级为 SQLite(
media_index.db) - 手动升级:
python3 scripts/media_library.py upgrade
安装完依赖后,用自然语言告诉 AI:
帮我剪一下 videos/ 目录下的视频,按句子切分,去掉口误,加上字幕
AI 会自动调用各个脚本,完成整个剪辑流程。
python3 scripts/extract_audio.py "your_video.mp4"
# 输出: your_video_audio.wavsource .venv/bin/activate
python3 scripts/transcribe.py "your_video_audio.wav" --model auto --language zh --detect-fillers
# 输出: your_video_transcript.json
# 如需卡拉OK逐词高亮字幕,加 --word-timestamps:
python3 scripts/transcribe.py "your_video_audio.wav" --model auto --language zh --word-timestamps--detect-fillers 会自动检测填充词(嗯、呃、那个、um、uh 等)并标记纯填充词片段。
--silence-threshold 1.0 设置静音检测阈值(秒),低于此间隔的停顿不标记,设为 0 禁用静音检测。
--model auto 会根据硬件自动选择最佳模型:
| 硬件 | 自动选择 | 原因 |
|---|---|---|
| NVIDIA GPU | large-v3 | CUDA 加速,大模型也很快 |
| Apple Silicon | large-v3-turbo | 速度与质量的最佳平衡 |
| Intel/AMD 集显 | medium | CPU+iGPU 的最佳平衡 |
| 纯 CPU | small | 速度优先 |
创建渲染配置 render_config.json:
{
"clips": [
{"video": "your_video.mp4", "segment_id": 1, "transcript": "your_video_transcript.json"},
{"video": "your_video.mp4", "segment_id": 2, "transcript": "your_video_transcript.json"},
{"video": "your_video.mp4", "segment_id": 5, "transcript": "your_video_transcript.json",
"broll": "cityscape.mp4", "broll_start": 10.0}
],
"title": "封面标题",
"subtitle": "副标题(可选)",
"cover_style": "news",
"cover_image": "custom_cover.png",
"cover_use_frame": false,
"video_overlay": "overlay.png",
"rec_blink": {"dot_image": "dot.png", "x": 55, "y": 66, "period": 1.0},
"end_cards": [
{"text": "感谢观看\n更多内容敬请期待", "duration": 3.5}
],
"bgm": "music/chill-background.mp3",
"bgm_volume": 0.15,
"bgm_fade_out": 3.0,
"subtitle_style": "karaoke",
"subtitle_highlight_color": "#FFFF00",
"subtitle_base_color": "#FFFFFF",
"subtitle_base_alpha": "80",
"cover_duration": 3.0,
"text_badges": [
{"text": "开源免费", "start": 5.0, "end": 10.0, "fade_in": 200, "fade_out": 200}
],
"chapters": [
{"title": "开场", "start": 0.0, "end": 30.0},
{"title": "正题", "start": 30.0, "end": 90.0}
]
}配置字段说明:
| 字段 | 说明 | 必填 |
|---|---|---|
clips[].broll |
B-roll 视频路径,替换该片段的画面(保留原始音频) | 否 |
clips[].broll_start |
B-roll 截取起始时间(秒),默认 0.0 | 否 |
cover_image |
自定义封面 PNG 路径,优先于自动生成封面 | 否 |
video_overlay |
透明 PNG 叠加层路径,全程显示(需 RGBA 格式) | 否 |
rec_blink |
闪烁圆点配置(dot_image/x/y/period) | 否 |
end_cards |
结尾黑屏卡片数组(text/duration),text 用 \n 换行 |
否 |
bgm |
背景音乐文件路径(MP3/M4A/WAV),自动循环 | 否 |
bgm_volume |
BGM 音量 0.0-1.0,默认 0.15 | 否 |
bgm_fade_out |
BGM 结尾淡出时长(秒),默认 3.0 | 否 |
subtitle_style |
字幕风格:"normal"(默认)或 "karaoke"(逐词高亮) |
否 |
subtitle_highlight_color |
卡拉OK高亮色,默认 "#FFFF00"(黄色) |
否 |
subtitle_base_color |
卡拉OK未播报文字颜色,默认 "#FFFFFF" |
否 |
subtitle_base_alpha |
卡拉OK未播报文字透明度(00-FF),默认 "80" |
否 |
cover_duration |
封面冻结帧时长(秒),默认 3.0 | 否 |
text_badges |
文字徽标数组(text/start/end/fade_in/fade_out),在画面中心显示定时文字 | 否 |
字幕风格预设:--subtitle-style 支持 normal、karaoke、bold_pop、neon、minimal、yellow_pop
多平台导出:
python3 scripts/render_final.py --config render_config.json --output final.mp4 \
--formats vertical square horizontal同时输出 9:16、1:1、16:9 三种比例视频。
渲染:
python3 scripts/render_final.py --config render_config.json --output final.mp4 --speed 1.25 1.5 \
--cover-duration 3.0 --cleanup输出:
final.mp4(原速)final_1_25x.mp4(1.25 倍速)final_1_5x.mp4(1.5 倍速)
每个版本都从原始视频直接编码,字幕 + 封面 + 章节时间轴在一次 ffmpeg 命令中完成。
如果你想在剪映中继续编辑(调色、加特效、精修转场),可以直接导出剪映工程文件:
python3 scripts/export_capcut.py --config render_config.json --output ./my_draft导出内容包括:片头封面、所有视频片段、字幕、结尾卡片、BGM、转场。
使用方式:
- 将
my_draft文件夹复制到剪映草稿目录(macOS:~/Movies/JianyingPro/User Data/Projects/com.lveditor.draft/) - 打开剪映,在草稿列表中即可看到并编辑
如果你想先看封面效果,再决定标题或风格,可以直接生成 PNG:
python3 scripts/generate_cover_image.py origin/video1.mp4 \
--title "告别剪映" \
--subtitle "AI 一键剪口播" \
--style news \
--use-frame \
--frame-timestamp 00:10:00 \
--output cover_preview.png可选风格:
boldnewsframegradientminimalwhitetechcard
封面排版规则:
- 标题按单行约 8 个汉字设计,优先保证手机缩略图可读性
- 英文/数字按约半个汉字宽度估算
- 副标题字号默认按标题的约 50%
选图建议:
- 录屏/软件教程优先试
techcard或news - 画面太杂时,优先纯底风格
bold/white --frame-timestamp可指定更合适的取帧时间,不必死用第一帧
注意:分步流程会产生多次重编码,不建议用于最终输出。仅用于快速预览单个片段效果。
python3 scripts/split_video.py "your_video.mp4" "your_video_transcript.json"
python3 scripts/burn_subtitles.py "your_video_clips" "your_video_transcript.json"
python3 scripts/merge_clips.py "your_video_clips_subtitled" --select "1-5,8" --output "preview.mp4"项目附带 14 个场景化提示词指南,覆盖从素材到发布的完整流程。每个场景都给出了可以直接复制使用的提示词。
详见 docs/prompts/README.md,快速索引:
| 场景 | 说明 |
|---|---|
| 口播素材处理 | 从拍摄素材到发布短视频的完整流程 |
| 分析素材 | AI 分析多条素材,给出剪辑建议 |
| 补录视频 | AI 生成补录清单,补录后继续剪辑 |
| 补录音频 | 只替换声音,画面不变 |
| 动画配音 | Remotion 把录音变成动画解说视频 |
| 多平台导出 | 一键导出多比例版本 |
| 封面生成 | 多种风格封面 |
| 长视频拆短 | 10 分钟长视频拆成多条短视频 |
| 背景音乐和片尾 | 添加 BGM、片尾卡片 |
| B-roll 替换 | 用其他画面替换口播片段 |
| 批量处理 | 批量处理多条素材 |
| 字幕风格 | 6 种字幕风格,卡拉OK逐词高亮 |
| 提示词技巧 | 写好提示词的要点和常见问题 |
| 导出剪映工程 | 导出剪映/CapCut 草稿免渲染编辑 |
video-editing-skill/
├── README.md # 本文件
├── SKILL.md # Skill 定义(OpenClaw / AI agent 读取)
├── REMOTION_VOICEOVER.md # Remotion 口播视频生成参考文档
├── docs/
│ ├── plans/ # 开发计划文档
│ └── prompts/ # 提示词教程(14 个场景指南)
├── scripts/
│ ├── utils.py # 共享工具(平台/GPU/字体/镜像/rotation 检测)
│ ├── extract_audio.py # 音频提取
│ ├── transcribe.py # 语音识别(faster-whisper / openai-whisper)
│ ├── render_final.py # 单次编码渲染(推荐,字幕+封面+章节+变速)
│ ├── export_capcut.py # 导出剪映/CapCut 工程文件(免渲染)
│ ├── generate_cover_image.py # 封面图片生成(7 种风格,headless Chrome 渲染)
│ ├── media_library.py # 素材库管理(初始化/扫描/索引/搜索)
│ ├── generate_standup_timeline.py # 脱口秀时间轴生成(transcript → timeline.json)
│ ├── split_video.py # 视频切分(预览用)
│ ├── burn_subtitles.py # 字幕烧录(预览用)
│ ├── merge_clips.py # 视频合成(预览用)
│ ├── generate_cover.py # 封面生成(旧版,预览用)
│ └── add_chapter_bar.py # 章节时间轴(预览用)
├── remotion-standup/ # Remotion 脱口秀视频项目
│ ├── package.json
│ ├── tsconfig.json
│ └── src/
│ ├── Root.tsx # Remotion 入口组件
│ ├── StandupVideo.tsx # 主视频组件
│ ├── types.ts # 类型定义
│ └── components/ # 动画文字、波形、背景、进度条等组件
├── fonts/ # 字体缓存(自动下载)
└── videos/ # 用户视频工作目录
当你只有音频和文稿(没有摄像头画面)时,可以使用 Remotion 生成动态文字视频:
# 1. 从 transcript 生成时间轴
python3 scripts/generate_standup_timeline.py transcript.json --style default --output timeline.json
# 2. 用 Remotion 渲染视频
cd remotion-standup
npm install
npx remotion render src/index.ts StandupVideo --props='{"timelineFile":"../timeline.json","audioFile":"../audio.wav"}' out.mp4文字动画效果(12 种):fadeIn, springIn, scaleUp, bounce, shake, slam, wave, glitch, rotateIn, splitReveal, typewriter, scaleDown
风格预设:
default— 标准节奏,适合大多数内容calm— 平缓节奏,适合叙事/深度内容energetic— 快节奏,适合脱口秀/搞笑内容
自动检测短句、感叹号和喜剧关键词,应用强调动画和笑点高亮。
详细的 Remotion 口播视频参考见 REMOTION_VOICEOVER.md
| 组件 | 技术 |
|---|---|
| 语音识别 | faster-whisper (CTranslate2) / OpenAI Whisper |
| 视频渲染 | ffmpeg filter_complex: select/trim + concat + ASS + overlay + color |
| 视频编码 | NVENC / VideoToolbox / QSV / AMF / libx264(自动检测) |
| 编码策略 | 固定比特率 -b:v 12M(VideoToolbox)/ -cq 20(NVENC)/ preset medium (CPU) |
| 字幕渲染 | ASS 格式 + Noto Sans SC / PingFang SC / Microsoft YaHei |
| 封面生成 | Headless Chrome + HTML/CSS 渲染,7 种预设风格 |
| 动态视频 | Remotion (React) — 脱口秀/口播场景,12 种文字动画 |
| 字体系统 | 14 款内置字体(8 CJK + 6 英文),自动下载 + CDN 加速 |
| 平台检测 | macOS / Linux / WSL / Windows 自动识别 |
NVIDIA NVENC > Apple VideoToolbox > Intel QSV > AMD AMF > CPU libx264
自定义字体 > Noto Sans SC (自动下载) > PingFang SC (macOS) > Microsoft YaHei (Windows/WSL) > fc-match
中国用户字体下载使用 jsDelivr CDN 加速,无需访问 GitHub。
- pip 安装自动使用清华镜像
- Whisper 模型自动使用 hf-mirror.com 下载
- 字体下载使用 jsDelivr CDN 备用源
- 可通过
--mirror参数或USE_CN_MIRROR=1环境变量强制启用
- macOS / Linux / WSL / Windows
- Python 3.8+
- FFmpeg(需包含 libass、libfreetype)
- 磁盘空间:约 1-3GB(取决于 Whisper 模型大小)
MIT