Skills for Real Engineers. Straight from my .agents directory.
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
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)
1## video-scrub23把一条视频重建成干净文件:**画面和声音带过去,元数据一个字节都不带。**45`{baseDir}` = 本文件所在目录。脚本 `{baseDir}/scripts/video-scrub.mjs`,零依赖,`node` 直接跑。67### 原理:白名单,不是黑名单89清元数据有两种思路,差别是死活:1011| | 怎么做 | 问题 |12| --- | --- | --- |13| 黑名单 | 列出要删的字段逐个删(exiftool 那种) | **删不完你不知道的东西**——厂商私有的 udta、GoPro 的遥测轨、码流里的 SEI,漏一个就漏了 |14| **白名单** | 不说删什么,只说**带什么过去**:画面一条流、声音一条流,别的一律不要 | —— |1516走白名单,源片的元数据**没有任何通道**能进来。它不是「被删掉了」,是从来没被搬运。1718但 ffmpeg 默认会背叛这个结构两次,必须摁住:19201. **它默认把源片的容器 tag 搬到输出** → `-map_metadata -1`212. **它默认自动挑流**,会把 GoPro 的 `gpmd` 遥测轨一起带走 → `-map 0:v:0 -map 0:a:0?`2223第 2 条是 GoPro / DJI 这类源片的唯一防线:**它们的 GPS 不在 tag 里,在一条独立的定时元数据轨上。**24清 tag 清不掉,只有「只挑两条流」挡得住。2526### 真正的难点:看不见的那几层2728摁住上面两条,tag 层就干净了,`ffprobe` 一片安静。**但文件里还躺着三处身份串**:2930| 藏在哪 | 内容 | 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` | ✗ |3536五个藏身处和各自的堵法见 `{baseDir}/references/residue-map.md`——**每一条都有实测记录,37包括几个「看着该管用其实没用」的坑**(`-flags:v +bitexact` 和 `-x264-params info=0` 都拦不住 SEI)。3839### 两种模式4041| 模式 | 画面 | 音频 | 速度 | 多杀掉什么 |42| --- | --- | --- | --- | --- |43| **`copy`**(默认) | **逐字节照搬** | 重编 | 53 秒的片子 1.3 秒 | —— |44| `encode` | 重编码 | 重编 | 慢得多 | 码流域水印、脆弱隐写 |4546音频**两种模式都重编**——AAC 的版本号写在 DSE 里,那是码流内部,`-c:a copy` 抹不掉它。47重编一遍很便宜,换来音轨干净。画面则在 copy 模式下**真的一个比特都没动**(`cmp` 验证过,48除了被摘掉的 SEI)。4950**关于水印**:`encode` 比 `copy` 多杀的是码流域水印和脆弱隐写,这两类在实际素材里少见。51真正要命的**鲁棒像素水印**(SynthID、影视取证水印)设计目标就是扛住重编码,**两种模式都杀不掉**。52所以选模式按画质和速度选,别指望重编码能洗掉水印。5354### 四个 profile55…
Excerpt shown under the repository's Apache-2.0 license.
More skills in reelbench-skills
Similar skill repositories
Public repository for Agent Skills
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
Production-grade engineering skills for AI coding agents.
The open-source app everyone uses to manage agents at work
The design vocabulary for your coding agent. Steer with polish and bolder, review with critique and audit, catch AI slop before it ships.
