install
source · Clone the upstream repo
git clone https://github.com/aiskillstore/marketplace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ceeon/videocut" ~/.claude/skills/aiskillstore-marketplace-videocut && rm -rf "$T"
manifest:
skills/ceeon/videocut/SKILL.mdsource content
<!--
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 ← 未勾选=保留
⚠️ 关键规则
- 直接用时间戳:从
解析,不要搜索文本(start-end) - 不要重新搜索:审查稿已经计算好精确时间戳
- 勾选 = 删除,未勾选 = 保留
二、FFmpeg 命令
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]
三、重新转录审查
剪辑后必须:
- 用 FunASR 重新转录
- 检查是否还有口误
- 有 → 回到
重新识别/videocut:剪口播 - 无 → 生成字幕
四、输出文件
01-xxx-v2.mp4 # 剪辑后视频 01-xxx-v2_transcript.json # 重新转录(验证用) 01-xxx-v2.srt # 字幕文件
版本递增:v1→v2→v3...
五、反馈记录
2026-01-15
- 语气词删除边界不精确:删语气词时把前面的字也删了
- 原因:直接用语气词的时间戳删除
- 正确:从前一字 end 到后一字 start
- 语气词 + 静音要一起删:
要删整段 (A.end - B.start)A [静音] 语气词 B - 教训:删除语气词时,边界是
到前一字.end后一字.start
2026-01-14
- 口误文字没删干净,只删了静音段
- 教训:直接从 TodoList 读取时间戳,不要重新查找
- "拉满新"删成了"会的时候":搜索"拉满新"时间戳跨度7秒(含6秒静音),把"拉满"也删了
- 教训:对于"删前面保后面"的口误,只删差异部分
- "AI就是AI"出现两次AI:只删了"就是",没删第一个"AI"
- 教训:替换型口误必须删完整的第一个版本
- 系统性解决:时间戳驱动,审查稿直接标注
,剪辑脚本不再搜索文本(start-end)