Tooluck logoTooluck
SKILL.md

video-scrub

Agent skill frometernityspring/reelbench-skills

把一条视频重建成「只有画面和声音」的干净文件——**源片的元数据一概不搬**: GPS、设备型号、账号 ID、创建时间、章节、GoPro 的遥测轨,全部留在原地。 走的是白名单而不是黑名单:不列要删什么,只说带什么过去(画面一条流、声音一条流), 隐私保证来自结构,不来自枚举。 难点不在容器 tag,在**看不见的那几层**:x264 把完整编码参数写成 SEI 塞在码流里、 AAC 把版本号写进 DSE、avc1 的 compressorname 里还有一份——`ffprobe` 一个都看不见。 五个藏身处逐一堵死,每一处都有实测。 默认 `--mode copy`:**画面逐字节照搬**(cmp 验证过),只重编音频,53 秒的片子 1.3 秒跑完; `--mode encode` 完整重编码,多杀掉码流域的东西。 验收不靠声称:把源片所有元数据字符串当「针」,在输出文件里做**字节级扫描**, 扎到一根就红。12 道门全部由脚本确定性检查。 零依赖、零 API key,只要 node 和 ffmpeg。 Use when asked to 清元数据、去元数据、抹掉视频信息、视频隐私、去水印信息、 strip video metadata、remove exif from video、scrub video。

How to install video-scrub

install video-scrub
# install the reelbench-skills pack with the skills CLI
npx skills add eternityspring/reelbench-skills

# or add only this skill to Claude Code: copy the folder

skills/video-scrub/

# into

~/.claude/skills/video-scrub/ (all projects)

.claude/skills/video-scrub/ (one project)

skills/video-scrub/SKILL.md

Apache-2.0Full file
1## video-scrub
2
3把一条视频重建成干净文件:**画面和声音带过去,元数据一个字节都不带。**
4
5`{baseDir}` = 本文件所在目录。脚本 `{baseDir}/scripts/video-scrub.mjs`,零依赖,`node` 直接跑。
6
7### 原理:白名单,不是黑名单
8
9清元数据有两种思路,差别是死活:
10
11| | 怎么做 | 问题 |
12| --- | --- | --- |
13| 黑名单 | 列出要删的字段逐个删(exiftool 那种) | **删不完你不知道的东西**——厂商私有的 udta、GoPro 的遥测轨、码流里的 SEI,漏一个就漏了 |
14| **白名单** | 不说删什么,只说**带什么过去**:画面一条流、声音一条流,别的一律不要 | —— |
15
16走白名单,源片的元数据**没有任何通道**能进来。它不是「被删掉了」,是从来没被搬运。
17
18但 ffmpeg 默认会背叛这个结构两次,必须摁住:
19
201. **它默认把源片的容器 tag 搬到输出** → `-map_metadata -1`
212. **它默认自动挑流**,会把 GoPro 的 `gpmd` 遥测轨一起带走 → `-map 0:v:0 -map 0:a:0?`
22
23第 2 条是 GoPro / DJI 这类源片的唯一防线:**它们的 GPS 不在 tag 里,在一条独立的定时元数据轨上。**
24清 tag 清不掉,只有「只挑两条流」挡得住。
25
26### 真正的难点:看不见的那几层
27
28摁住上面两条,tag 层就干净了,`ffprobe` 一片安静。**但文件里还躺着三处身份串**:
29
30| 藏在哪 | 内容 | ffprobe 看得见 |
31| --- | --- | --- |
32| H.264 的 **SEI** | x264 完整参数串 `cabac=1 ref=3 … crf=23.0` | ✗ |
33| AAC 码流的 **DSE** | `Lavc62.28.102` | ✗ |
34| avc1 的 **compressorname** | `Lavc libx264` | ✗ |
35
36五个藏身处和各自的堵法见 `{baseDir}/references/residue-map.md`——**每一条都有实测记录,
37包括几个「看着该管用其实没用」的坑**(`-flags:v +bitexact` 和 `-x264-params info=0` 都拦不住 SEI)。
38
39### 两种模式
40
41| 模式 | 画面 | 音频 | 速度 | 多杀掉什么 |
42| --- | --- | --- | --- | --- |
43| **`copy`**(默认) | **逐字节照搬** | 重编 | 53 秒的片子 1.3 秒 | —— |
44| `encode` | 重编码 | 重编 | 慢得多 | 码流域水印、脆弱隐写 |
45
46音频**两种模式都重编**——AAC 的版本号写在 DSE 里,那是码流内部,`-c:a copy` 抹不掉它。
47重编一遍很便宜,换来音轨干净。画面则在 copy 模式下**真的一个比特都没动**(`cmp` 验证过,
48除了被摘掉的 SEI)。
49
50**关于水印**:`encode` 比 `copy` 多杀的是码流域水印和脆弱隐写,这两类在实际素材里少见。
51真正要命的**鲁棒像素水印**(SynthID、影视取证水印)设计目标就是扛住重编码,**两种模式都杀不掉**。
52所以选模式按画质和速度选,别指望重编码能洗掉水印。
53
54### 四个 profile
55…

Excerpt shown under the repository's Apache-2.0 license.

More skills in reelbench-skills

Keep exploring

Similar skill repositories

thedotmack /

claude-mem
116k

Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More

CCCXGHGM+135 skills

pbakaus /

impeccable
108k

The design vocabulary for your coding agent. Steer with polish and bolder, review with critique and audit, catch AI slop before it ships.

2 skills

Newsletter

Join the Community

Subscribe to our newsletter for the latest news and updates