mcpField
V
videocut-clip

videocut-clip

github.com/zrt-ai-labCreative & media296302 installsUpdated 14w ago
Repository

About videocut-clip

videocut-clip is a video-editing skill that applies confirmed deletion timestamps with FFmpeg, then re-transcribes the result for review and generates subtitles. It is intended for iterative removal of speech errors, filler words, and silence.

Key features

  1. 01Reads confirmed deletion timestamps
  2. 02Builds FFmpeg filter_complex edits
  3. 03Re-transcribes edited video with FunASR
  4. 04Checks for remaining speech errors
  5. 05Generates SRT subtitles

Use cases

  1. 01Removing confirmed speech mistakes
  2. 02Cutting filler words and silence
  3. 03Reviewing an edit through re-transcription
  4. 04Creating subtitles after final review

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/zrt-ai-lab/opencode-skills --skill videocut-clip

After installing, type/videocut-clipin Claude Code to confirm it loaded.

Bundled filesREADME.md

Details

From the project README

剪辑

执行删除 → 重新审查 → 循环直到零口误 → 生成字幕

快速使用

用户: 确认,执行剪辑
用户: 全删
用户: 保留静音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 命令

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. 无 → 生成字幕

四、输出文件

01-xxx-v2.mp4              # 剪辑后视频
01-xxx-v2_transcript.json  # 重新转录(验证用)
01-xxx-v2.srt              # 字幕文件

版本递增:v1→v2→v3...


五、反馈记录

2026-01-15
  • 语气词删除边界不精确:删语气词时把前面的字也删了
    • 原因:直接用语气词的时间戳删除
    • 正确:从前一字 end 到后一字 start
  • 语气词 + 静音要一起删:A [静音] 语气词 B 要删整段 (A.end - B.start)
  • 教训:删除语气词时,边界是 前一字.end 到 后一字.start
2026-01-14
  • 口误文字没删干净,只删了静音段
  • 教训:直接从 TodoList 读取时间戳,不要重新查找
  • "拉满新"删成了"会的时候":搜索"拉满新"时间戳跨度7秒(含6秒静音),把"拉满"也删了
    • 教训:对于"删前面保后面"的口误,只删差异部分
  • "AI就是AI"出现两次AI:只删了"就是",没删第一个"AI"
    • 教训:替换型口误必须删完整的第一个版本
  • 系统性解决:时间戳驱动,审查稿直接标注 (start-end),剪辑脚本不再搜索文本

Comments

Markdown supported