Install
openclaw skills install @zhuchenggong19851114-design/video-ai-processAutomatically transcribe, analyze, segment, upload, auto-compose, and generate custom-cut AI video editions with client scoring and final version selection.
openclaw skills install @zhuchenggong19851114-design/video-ai-process全自动AI视频处理系统:转写 → 分析 → 切片 → 飞书 → 自动拼接/客户打分 → 最终视频
客户输入视频
↓
┌─────────────────────────────────────────────────────────┐
│ Step 1-4:AI处理 │
│ Whisper转写 → MiniMax分析 → FFmpeg切片 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Step 5:写入飞书 │
│ 每段片段内容写入视频片段库Bitable │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Step 6:自动拼接(系统自动执行,无需等待) │
│ 粗剪片段拼接 → 粗剪版_final.mp4 │
│ 精剪片段拼接 → 精剪版_final.mp4 │
│ 自动写入飞书 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 客户在飞书查看片段内容 │
│ 在「用户自定义重用性排序」字段打分 │
│ 1=最重要,2=次重要,3=第三... │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Step 7:自定义拼接(客户打完分通知我们,或心跳自动检查) │
│ 按打分排序拼接 → 自定义粗剪版 + 自定义精剪版 │
│ 写入飞书 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 客户选择最终版本 │
│ 满意 → 结束 │
│ 不满意 → 重新打分 → Step 7重新拼接 │
└─────────────────────────────────────────────────────────┘
目的:将视频音频转为带时间戳的文本
命令:
from faster_whisper import WhisperModel
model = WhisperModel("small", device="cpu")
segments, info = model.transcribe(audio_path, language="zh")
segments_list = list(segments)
输出:
video_转写.txt:带时间戳文本
[0.000-2.000] 大家好
[2.000-6.600] 今天我们继续聊AI和OpenCloud
video.srt:SRT字幕文件目的:AI分析内容,生成粗剪分段方案
Prompt:
分析以下视频转写,进行粗剪分段。
要求:
- 把明显没用的内容去掉(如:技术故障、停顿过长、重复啰嗦)
- 保留核心内容,分成2-5分钟的大段
- 每个片段要内容完整,不能断在半句
- 时长不固定,根据内容自然分段
输出格式:
片段编号 | 时间段 | 时长(秒) | 标签 | 摘要
目的:从原内容独立选择最精华片段
Prompt:
基于粗剪分段,做精剪分析。只保留最精华的内容。
要求:
- 只保留真正精华的内容
- 每段30-90秒
- 内容必须完整
- 去掉重复啰嗦的部分
- 精剪和粗剪是独立的选段,不是子集
输出格式:
片段编号 | 时间段 | 时长(秒) | 标签 | 摘要
切片命名规则:
粗剪片段:粗-{序号}{内容标签}.mp4
例:粗-2引入.mp4、粗-3配置要求.mp4
精剪片段:精-{序号}{内容标签}.mp4
例:精-2配置核心.mp4、精-3案例分析.mp4
FFmpeg命令:
# 切片
ffmpeg -i 原视频.mp4 -ss {开始秒} -t {时长} \
-c:v libx264 -preset fast -crf 23 \
-c:a aac -b:a 128k 输出.mp4 -y
# 拼接
ffmpeg -f concat -safe 0 -i filelist.txt -c copy concat.mp4 -y
# 烧录字幕
ffmpeg -i concat.mp4 -vf "subtitles=字幕.srt:force_style='FontSize=18,PrimaryColour=&HFFFFFF,OutlineColour=&H333333,Outline=2,Alignment=2,MarginV=50'" \
-c:v libx264 -preset fast -crf 23 -c:a aac -b:a 128k 输出_带字幕.mp4 -y
目的:将每段片段信息写入视频片段库Bitable
Bitable配置:
app_token: YOUR_APP_TOKEN
table_id: YOUR_TABLE_ID
或设置环境变量:
export FEISHU_VIDEO_APP_TOKEN="YOUR_APP_TOKEN"
export FEISHU_VIDEO_TABLE_ID="YOUR_TABLE_ID"
每条记录字段:
{
"视频片段库": "视频一:XXX教程",
"分析类型": ["粗分析-粗剪"],
"片段编号": "粗-2",
"时间段": "0:45-1:30",
"时长": 45,
"标签": ["开场"],
"摘要": "引入主题:讲解OpenCloud配置是小白最需要搞懂的东西",
"文件路径": "D:\\OpenClaw\\downloads\\视频切片\\2026-04-14-粗剪\\粗-2引入.mp4",
"来源视频": "原视频文件名.mp4",
"用户自定义重用性排序": null,
"入库时间": 1744512000000
}
目的:自动生成粗剪版和精剪版视频
执行时机:Step 5完成后立即自动执行,无需等待客户
拼接逻辑:
粗剪版_final.mp4精剪版_final.mp4{
"视频片段库": "视频一:XXX教程",
"分析类型": ["粗分析-粗剪", "最终版"],
"片段编号": "粗-最终版",
"时间段": "连续拼接",
"时长": 195,
"标签": ["最终版"],
"摘要": "自动拼接粗剪片段:粗-2 + 粗-3 + 粗-4 + 粗-5 + 粗-7",
"文件路径": "D:\\OpenClaw\\downloads\\视频切片\\2026-04-14-粗剪\\粗剪版_final.mp4",
"来源视频": "原视频文件名.mp4",
"用户自定义重用性排序": null,
"入库时间": 1744512000000
}
输出文件夹:
D:\OpenClaw\downloads\视频切片\
├── {日期}-粗剪\
│ ├── 粗-2引入.mp4
│ ├── 粗-3配置要求.mp4
│ └── 粗剪版_final.mp4 ← 自动生成
│
└── {日期}-精剪\
├── 精-2配置核心.mp4
└── 精剪版_final.mp4 ← 自动生成
查看片段:打开飞书视频片段库,查看每段内容摘要
打分:在「用户自定义重用性排序」字段填写数字
可选择版本:
触发方式:
| 方式 | 说明 |
|---|---|
| 方式一 | 客户主动发消息:"按打分生成" |
| 方式二 | 心跳任务自动检查 |
心跳任务配置:
检查频率:每1小时
检查内容:飞书「用户自定义重用性排序」字段是否有新值
执行流程:
自定义拼接结果写入飞书:
{
"视频片段库": "视频一:XXX教程",
"分析类型": ["自定义拼接"],
"片段编号": "自定义-001",
"时间段": "按打分排序",
"时长": 120,
"标签": ["自定义"],
"摘要": "按客户打分排序:粗-3(1分) + 精-2(2分) + 粗-5(3分)",
"文件路径": "D:\\OpenClaw\\downloads\\视频切片\\{日期}-自定义\\自定义粗剪版_final.mp4",
"来源视频": "原视频文件名.mp4",
"用户自定义重用性排序": null,
"入库时间": 1744512000000
}
D:\OpenClaw\downloads\视频切片\
├── {日期}-粗剪\
│ ├── 粗-2引入.mp4
│ ├── 粗-3配置要求.mp4
│ └── 粗剪版_final.mp4 ← Step 6自动生成
│
├── {日期}-精剪\
│ ├── 精-2配置核心.mp4
│ └── 精剪版_final.mp4 ← Step 6自动生成
│
└── {日期}-自定义\
├── 自定义粗剪版_final.mp4 ← Step 7按打分生成
└── 自定义精剪版_final.mp4 ← Step 7按打分生成
飞书表格记录:
Step 6 自动生成后:
↓
客户查看飞书,选择版本
↓
┌─────────────────┬─────────────────┐
│ 满意粗剪版? │ 满意精剪版? │
│ ↓是 │ ↓是 │
│ 使用粗剪版 │ 使用精剪版 │
│ 结束 │ 结束 │
└─────────────────┴─────────────────┘
↓ 否
客户在飞书打分
↓
Step 7 按打分生成自定义版
↓
客户选择最终版本
| Step | 操作 | 耗时 |
|---|---|---|
| Step 1 | Whisper转写 | ~15秒 |
| Step 2 | MiniMax粗剪分析 | ~10秒 |
| Step 3 | MiniMax精剪分析 | ~10秒 |
| Step 4 | FFmpeg切片 | ~60秒 |
| Step 5 | 写入飞书 | ~30秒 |
| Step 6 | 自动拼接2个版本 | ~60秒 |
| Step 7 | 自定义拼接 | ~90秒 |
总计:~4.5分钟(不含等待打分时间)
export HF_ENDPOINT=https://hf-mirror.com
| 字段 | 类型 | 说明 |
|---|---|---|
| 视频片段库 | 文本 | 视频唯一标识 |
| 分析类型 | 多选 | 粗分析-粗剪/细分析-精剪/自定义拼接/最终版 |
| 片段编号 | 文本 | 唯一编号 |
| 时间段 | 文本 | 时间范围 |
| 时长 | 数字 | 秒 |
| 标签 | 多选 | 开场/核心观点/演示/总结/自定义/最终版 |
| 摘要 | 文本 | 内容描述 |
| 文件路径 | 文本 | 本地文件路径 |
| 来源视频 | 文本 | 原视频文件名 |
| 用户自定义重用性排序 | 数字 | 客户打分字段 |
| 入库时间 | 日期 | 自动记录 |
~/.openclaw/workspace/skills/video-ai-process/
├── SKILL.md
├── step1_transcribe.py
├── step2_analyze_cu.py
├── step3_analyze_jing.py
├── step4_segment.py
├── step5_write_feishu.py
├── step6_auto_compose.py
├── step7_custom_compose.py
└── video_pipeline.py