(0)
۱۵۴
۳۶
۴۱
نصب مهارت
مهارتها کدهای شخص ثالث از مخازن عمومی GitHub هستند. SkillHub الگوهای مخرب شناختهشده را اسکن میکند اما نمیتواند امنیت را تضمین کند. قبل از نصب، کد منبع را بررسی کنید.
نصب سراسری (سطح کاربر):
npx skillhub install aiskillstore/marketplace/videocutنصب در پروژه فعلی:
npx skillhub install aiskillstore/marketplace/videocut --projectمسیر پیشنهادی: ~/.claude/skills/videocut/
بررسی هوش مصنوعی
کیفیت دستورالعمل58
دقت توضیحات35
کاربردی بودن61
صحت فنی60
Scored 53 for a practical FFmpeg cutting workflow with innovative loop-until-clean retranscription. Chinese-only description limits discoverability. Depends on companion skill for input.
محتوای SKILL.md
---
name: videocut
description: 执行视频剪辑。根据确认的删除任务执行FFmpeg剪辑,循环直到零口误,生成字幕。触发词:执行剪辑、开始剪、确认剪辑
---
<!--
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. 无 → 生成字幕
---
## 四、输出文件
```
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)`,剪辑脚本不再搜索文本