百度智能云VOD字幕擦除工具。支持从本地或网盘选取视频进行字幕擦除,支持全局/对白/自定义区域三种模式,支持批量处理文件夹中的视频,处理后可下载到本地或上传到网盘。当用户提及"字幕擦除"、"擦除字幕"、"去除字幕"时触发。百度智能云字幕擦除skill是付费使用,价格详见:https://cloud.baidu.c...
---
name: baidu-vod-desubtitle
description: 百度智能云VOD字幕擦除工具。支持从本地或网盘选取视频进行字幕擦除,支持全局/对白/自定义区域三种模式,支持批量处理文件夹中的视频,处理后可下载到本地或上传到网盘。当用户提及"字幕擦除"、"擦除字幕"、"去除字幕"时触发。百度智能云字幕擦除skill是付费使用,价格详见:https://cloud.baidu.com/doc/VOD/s/Zmheig5gv
allowed-tools: Bash, Read, Glob, Grep, Write, Question
argument-hint: "[视频路径] --mode <模式>"
metadata: { "openclaw": { "requires": { "bins": ["python3"] } } }
---
# 百度智能云 VOD 字幕擦除 Skill
智能识别并擦除视频中的字幕区域,支持多种擦除模式和高级配置。
## ⚠️ 强制执行流程
**禁止直接执行命令!必须按以下流程引导用户:**
```
1. 识别意图 → 判断擦除类型(字幕/Logo/时间范围)
2. 收集参数 → 使用 Question 工具询问用户
3. 确认配置 → 展示参数让用户确认
4. 用户确认 → 才能执行命令
```
**错误示例(禁止):**
```
用户: 帮我擦除这个视频的字幕
Agent: [直接执行 python3 desubtitle.py video.mp4 --mode global] ❌
```
**正确示例:**
```
用户: 帮我擦除这个视频的字幕
Agent: 请选择处理方式:
[1] 单个视频
[2] 批量处理文件夹
用户: 1
Agent: 请选择擦除方式:
[1] 全局擦除 - 自动识别所有字幕区域
[2] 对白擦除 - 只擦除底部对白字幕
[3] 自定义区域 - 指定坐标擦除
用户: 1
Agent: 请提供视频文件路径:
用户: /Downloads/video.mp4
Agent: [执行命令] ✓
```
---
## 触发规则
满足以下任一条件时触发:
1. 用户提及"字幕擦除"、"擦除字幕"、"去除字幕"
2. 用户需要处理视频中的字幕
3. 用户需要查询或删除字幕擦除任务
---
## Agent 参数收集指南
### 核心原则
1. **简洁优先**:直接询问处理方式,不绕弯子
2. **最小必要**:只收集必要参数,其他使用默认值
3. **渐进式**:从简单到复杂,避免一次性问太多
4. **推荐优先**:给出推荐选项,而非开放式问题
---
## 第一步:识别用户意图
根据用户描述,识别属于哪种场景:
| 用户描述关键词 | 场景类型 | 推荐操作 |
|---------------|----------|----------|
| "擦除字幕"、"去除字幕"、"消字幕" | 字幕擦除 | 询问处理方式和擦除方式 |
| "擦除Logo"、"去除水印"、"去掉角标" | 区域擦除 | 直接使用 manual 模式 |
| "只擦除某一段"、"前几分钟" | 时间范围 | manual + time-range |
| "查任务"、"任务状态" | 任务查询 | --list/--query |
| "删除任务" | 任务删除 | --delete |
---
## 第二步:收集必要参数
### 第一步:询问处理方式
**交互模板:**
```
用户: 帮我把这个视频的字幕擦除
Agent: 请选择处理方式:
[1] 单个视频 - 处理单个视频文件
[2] 批量处理文件夹 - 处理文件夹中的所有视频
用户: 1 或 2
```
---
### 第二步:收集视频路径
#### 场景 A:单个视频
**交互模板:**
```
Agent: 请提供视频文件路径:
用户: /Downloads/video.mp4
```
#### 场景 B:批量处理文件夹
**交互模板:**
```
Agent: 请提供文件夹路径(将处理该文件夹下所有视频文件):
用户: /Downloads/videos/
Agent: 正在扫描文件夹中的视频文件...
找到 5 个视频文件:
1. video1.mp4
2. video2.mp4
3. video3.mp4
4. video4.mp4
5. video5.mp4
确认处理这些视频吗?
```
**扫描文件夹的实现:**
使用 Glob 工具扫描常见视频格式:
```
Glob: <文件夹路径>/**/*.mp4
Glob: <文件夹路径>/**/*.mkv
Glob: <文件夹路径>/**/*.avi
Glob: <文件夹路径>/**/*.mov
Glob: <文件夹路径>/**/*.webm
```
---
### 第三步:询问擦除方式
**交互模板:**
```
Agent: 请选择擦除方式:
[1] 全局擦除 - 自动识别并擦除所有字幕区域(推荐)
[2] 对白擦除 - 只擦除底部对白字幕,保留其他文字
[3] 自定义区域 - 手动指定坐标擦除
用户: 1
```
**擦除方式说明:**
| 方式 | 命令参数 | 适用场景 |
|------|----------|----------|
| 全局擦除 | --mode global | 综艺、广告、不确定字幕位置、想擦除所有字幕 |
| 对白擦除 | --mode dialog | 电影、电视剧、访谈、只需擦除底部对白字幕 |
| 自定义区域 | --mode manual --areas "x,y,w,h" | Logo、水印、角标、特定位置 |
---
### 场景 C:区域擦除(Logo/水印)
**必须收集**:
1. 视频来源
2. 擦除区域坐标
**交互模板:**
```
用户: 帮我去掉视频左上角的Logo
Agent: 请提供Logo区域的坐标(格式: x,y,宽度,高度):
- x: Logo左边距离视频左边的像素
- y: Logo上边距离视频上边的像素
- 宽度: Logo的宽度
- 高度: Logo的高度
提示:可以用视频播放器截图,在图片编辑器中查看像素坐标。
用户: 50,30,200,80
Agent: 收到,Logo区域: (50,30) 宽200 高80
确认执行吗?
用户: 确认
Agent: [执行: --mode manual --areas "50,30,200,80"]
```
---
### 场景 D:时间范围擦除
**必须收集**:
1. 视频来源
2. 擦除区域坐标
3. 开始时间
4. 结束时间
**交互模板:**
```
用户: 只擦除视频前30秒的字幕
Agent: 好的,时间范围擦除需要指定区域坐标。
请提供字幕区域的坐标(格式: x,y,宽度,高度):
用户: 0,900,1920,60
Agent: 收到,将擦除前30秒的区域 (0,900,1920,60)。
确认执行吗?
用户: 确认
Agent: [执行: --mode manual --areas "0,900,1920,60" --time-range 0 30000]
```
---
## 第三步:确认配置
收集完参数后,展示配置让用户确认:
**单个视频:**
```
Agent: 确认以下配置:
- 视频文件: /Downloads/video.mp4
- 擦除方式: 全局擦除
- 输出目录: ./output
确认执行吗?
```
**批量处理:**
```
Agent: 确认以下配置:
- 处理模式: 批量处理
- 视频数量: 5 个
- 擦除方式: 全局擦除
- 输出目录: ./output
确认执行吗?
```
---
## 参数收集决策树
```
用户请求
│
├─ 查询任务? ──────────────────────► --list / --query
│
├─ 删除任务? ──────────────────────► --delete
│
└─ 处理视频?
│
├─ 处理方式?
│ ├─ 单个视频 ──► 获取视频文件路径
│ └─ 批量处理 ──► 获取文件夹路径 → 扫描视频文件 → 展示列表确认
│
├─ 擦除什么?
│ ├─ "字幕" ──► 询问擦除方式
│ │ ├─ 全局擦除 ──► --mode global
│ │ ├─ 对白擦除 ──► --mode dialog
│ │ └─ 自定义区域 ──► --mode manual + 询问坐标
│ │
│ ├─ "Logo/水印" ──► --mode manual + 询问坐标
│ │
│ └─ "某段时间" ──► --mode manual + areas + time-range
│
└─ 确认执行
│
├─ 来自网盘? ──► 询问是否上传回网盘
│
└─ 执行命令
```
---
## 推荐参数组合
### 组合 1:全局擦除(推荐)
```bash
python3 scripts/desubtitle.py <视频> --mode global
```
**适用场景**:综艺、广告、不确定字幕位置、想擦除所有字幕
**特点**:智能识别并擦除所有字幕区域
### 组合 2:对白擦除
```bash
python3 scripts/desubtitle.py <视频> --mode dialog
```
**适用场景**:电影、电视剧、访谈节目
**特点**:只擦除底部对白字幕,保留其他文字
### 组合 3:自定义区域擦除
```bash
python3 scripts/desubtitle.py <视频> --mode manual --areas "x,y,w,h"
```
**适用场景**:去除特定位置的Logo、水印、角标
### 组合 4:批量处理
```bash
python3 scripts/desubtitle.py video1.mp4 video2.mp4 video3.mp4 --mode global
```
**适用场景**:批量处理多个视频文件
**特点**:所有视频使用相同的擦除模式
---
## 常见问题处理
### Q1:用户不知道选哪种擦除方式
```
Agent: 请选择擦除方式:
[1] 全局擦除 - 自动识别并擦除所有字幕区域(推荐)
[2] 对白擦除 - 只擦除底部对白字幕,保留其他文字
[3] 自定义区域 - 手动指定坐标擦除
用户: 不知道选哪个
Agent: 建议选择 [1] 全局擦除,会自动识别所有字幕区域,适用于大多数场景。
```
### Q2:用户不知道坐标
```
用户: 我要擦除Logo,但不知道坐标
Agent: 您可以:
1. 用视频播放器截图
2. 在图片编辑器(如PS、画图)中打开截图
3. 查看Logo左上角的坐标(x,y)和尺寸(宽,高)
或者告诉我Logo的大概位置:
[1] 左上角
[2] 右上角
[3] 左下角
[4] 右下角
用户: 右上角
Agent: 请告诉我Logo大概占视频宽高的比例?
例如:宽200像素,高50像素
用户: 宽150,高40
Agent: 好的,右上角Logo,宽150高40。
假设视频是1920x1080,Logo坐标大约是:
x=1770, y=0, width=150, height=40
确认使用这个坐标吗?
```
### Q3:批量处理时文件夹中没有视频
```
Agent: 正在扫描文件夹中的视频文件...
未找到视频文件。请确认文件夹路径正确,且包含以下格式的视频:
.mp4, .mkv, .avi, .mov, .webm
请重新提供文件夹路径:
```
---
## 执行命令模板
### 单个视频
```bash
export BAIDU_VOD_AK='xxx' && export BAIDU_VOD_SK='xxx' && \
python3 scripts/desubtitle.py <视频路径> --mode <模式>
```
### 批量处理
```bash
export BAIDU_VOD_AK='xxx' && export BAIDU_VOD_SK='xxx' && \
python3 scripts/desubtitle.py <视频1> <视频2> <视频3> --mode <模式>
```
### 完整命令(所有参数)
```bash
export BAIDU_VOD_AK='xxx' && export BAIDU_VOD_SK='xxx' && \
python3 scripts/desubtitle.py <视频路径> \
--mode <global|dialog|manual> \
--model <v3|v4> \
--areas "x,y,w,h" \
--time-range <开始ms> <结束ms> \
--output-dir <输出目录> \
--upload-netdisk \
--netdisk-dir <网盘目录>
```
---
## 示例对话
### 示例 1:单个视频
```
用户: 帮我把 /Downloads/movie.mp4 的字幕擦除
Agent: 请选择处理方式:
[1] 单个视频
[2] 批量处理文件夹
用户: 1
Agent: 请选择擦除方式:
[1] 全局擦除 - 自动识别并擦除所有字幕区域(推荐)
[2] 对白擦除 - 只擦除底部对白字幕,保留其他文字
[3] 自定义区域 - 手动指定坐标擦除
用户: 2
Agent: 确认配置:
- 视频文件: /Downloads/movie.mp4
- 擦除方式: 对白擦除
- 输出目录: ./output
确认执行吗?
用户: 确认
Agent: 正在处理...
[执行: --mode dialog]
✓ 处理完成,结果已保存到: ./output/desubtitled_movie.mp4
```
### 示例 2:批量处理
```
用户: 帮我擦除一个文件夹里所有视频的字幕
Agent: 请选择处理方式:
[1] 单个视频
[2] 批量处理文件夹
用户: 2
Agent: 请提供文件夹路径:
用户: /Downloads/videos/
Agent: 正在扫描文件夹中的视频文件...
找到 3 个视频文件:
1. ep01.mp4
2. ep02.mp4
3. ep03.mp4
请选择擦除方式:
[1] 全局擦除(推荐)
[2] 对白擦除
[3] 自定义区域
用户: 1
Agent: 确认配置:
- 处理模式: 批量处理
- 视频数量: 3 个
- 擦除方式: 全局擦除
- 输出目录: ./output
确认执行吗?
用户: 确认
Agent: 正在批量处理...
[执行: ep01.mp4 ep02.mp4 ep03.mp4 --mode global]
✓ 全部处理完成
```
### 示例 3:Logo擦除
```
用户: 帮我去掉视频左上角的Logo
Agent: 请提供Logo区域的坐标(格式: x,y,宽度,高度):
用户: 20,20,180,60
Agent: 确认配置:
- 擦除区域: (20,20) 宽180 高60
- 擦除方式: 自定义区域
确认执行吗?
用户: 确认
Agent: [执行: --mode manual --areas "20,20,180,60"]
✓ 处理完成
```
---
## 前置条件
### 1. VOD 凭证
```bash
export BAIDU_VOD_AK="your_access_key"
export BAIDU_VOD_SK="your_secret_key"
```
获取方式:
1. 登录 [百度智能云控制台](https://console.bce.baidu.com/)
2. 开通 [智能点播平台 VOD](https://cloud.baidu.com/product/vod.html)
3. 在 [安全认证](https://console.bce.baidu.com/iam/#/iam/accesslist) 获取 AK/SK
### 2. 网盘功能(可选)
如需从网盘下载或上传到网盘,需要:
1. 安装 bdpan CLI
2. 执行 `bdpan login` 登录
---
## 处理时间
- 单个视频:约 5-15 分钟(取决于视频长度)
- 批量处理:按视频数量累计
- 可使用 `--no-wait` 参数不等待,稍后查询任务状态
---
## 注意事项
1. **文件大小限制**:单个文件 ≤ 5GB
2. **支持格式**:mp4/mpeg/mpg/dat/avi/mov/asf/wmv/navi/3gp/real video/mkv/flv/f4v/rmvb/rmhd/webm/hddvd/blue-ray/qsv/ts/mxf
3. **费用**:按处理时长计费
4. **白名单**:字幕擦除需要白名单权限,如提示"权限不足"请联系百度智能云开通
---
## API 参考
- [字幕擦除 API 文档](https://cloud.baidu.com/doc/VOD/s/fmhiy9vqk)
don't have the plugin yet? install it then click "run inline in claude" again.