videocutlisted
Install: claude install-skill aiskillstore/marketplace
<!--
input: 删除任务 TodoList(口误+静音)
output: 剪辑后视频、字幕文件
pos: 执行 skill,用户确认删除任务后调用
架构守护者:一旦我被修改,请同步更新:
1. ../README.md 的 Skill 清单
2. /CLAUDE.md 路由表
-->
# 剪辑
> 执行删除 → 重新审查 → 循环直到零口误 → 生成字幕
## 快速使用
```
用户: 确认,执行剪辑
用户: 全删
用户: 保留静音3和5,其他都删
```
## 前置条件
需要先执行 `/videocut:剪口播` 生成删除任务 TodoList
## 流程
```
1. 读取用户确认的删除任务
↓
2. 计算保留时间段
↓
3. 生成 FFmpeg filter_complex
↓
4. 执行剪辑
↓
5. 重新转录 + 审查 ←───┐
↓ │
有口误? ──是─────────┘
↓ 否
6. 生成字幕(SRT)
↓
7. 完成
```
## 进度 TodoList
启动时创建:
```
- [ ] 确认删除任务
- [ ] 执行 FFmpeg 剪辑
- [ ] 重新转录审查
- [ ] 生成字幕
```
循环时更新版本号(v2→v3→...)
---
## 一、读取删除任务(时间戳驱动)
从 `/videocut:剪口播` 输出的 TodoList 读取。**直接使用时间戳,不要搜索文本**:
```
口误(N处):
- [x] 1. `(start-end)` 删"错误文本" → 保留"正确文本" ← 勾选=删除
语气词(N处):
- [x] 1. `(前字end-后字start)` 删"嗯" ← 勾选=删除
静音(N处):
- [x] 1. `(start-end)` 静音Xs ← 勾选=删除
- [ ] 2. `(start-end)` 静音Xs ← 未勾选=保留
```
### ⚠️ 关键规则
1. **直接用时间戳**:从 `(start-end)` 解析,不要搜索文本
2. **不要重新搜索**:审查稿已经计算好精确时间戳
3. 勾选 = 删除,未勾选 = 保留
---
## 二、FFmpeg 命令
```bash
ffmpeg -y -i input.mp4 \
-filter_complex_script filter.txt \
-map "[outv]" -map "[outa]" \
-c:v libx264 -crf 18 -c:a aac \
output.mp4
```
### filter.txt 格式
```
[0:v]trim=start=0:end=1.36,setpts=PTS-STARTPTS[v0];
[0:a]atrim=start=0:end=1.36,asetpts=PTS-STARTPTS[a0];
[0:v]trim=start=2.54:end=10.5,setpts=PTS-STARTPTS[v1];
...
[v0][a0][v1][a1]...concat=n=N:v=1:a=1[outv][outa]
```
---
## 三、重新转录审查
剪辑后必须:
1. 用 FunASR 重新转录
2. 检查是否还有口误
3. 有 → 回到 `/videocut:剪口播` 重新识别
4. 无 → 生成字