把一条视频重建成「只有画面和声音」的干净文件——源片的元数据一概不搬: GPS、设备型号、账号 ID、创建时间、章节、GoPro 的遥测轨,全部留在原地。

Apache-2.0Auto-check: notesMedia & Creative

Install Video Scrub

skills CLI
$ npx skills add eternityspring/reelbench-skills --skill video-scrub -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install eternityspring/reelbench-skills video-scrub --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/eternityspring/reelbench-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/video-scrub .claude/skills/video-scrub && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
video-scrub
GitHub stars
872
Token cost
~1.3k tokens
SKILL.md length
319 words
Files
7 (incl. scripts, references)
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

把一条视频重建成「只有画面和声音」的干净文件——源片的元数据一概不搬: GPS、设备型号、账号 ID、创建时间、章节、GoPro 的遥测轨,全部留在原地。

  • Works in 3 steps: 先看源片带了什么 → 清 → 验收 ⛔ 不能跳
  • Asked to 清元数据、去元数据、抹掉视频信息、视频隐私、去水印信息、 strip video metadata、remove exif from video、scrub video
  • Runs JavaScript scripts from its folder; calls node
  • Tasks that involve Video production

What it does

Video Scrub is an agent skill from eternityspring/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…

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `README.en.md`, `README.md` and `references/profiles.md`).

It sits in Media & Creative, covering Video production and AI video generation. It works with FFmpeg. The repository describes itself as: Learning notes and tooling skills for AI video - AI 视频相关的学习与工具 skill. The licence is Apache-2.0.

When your agent uses it

  • Asked to 清元数据、去元数据、抹掉视频信息、视频隐私、去水印信息、 strip video metadata、remove exif from video、scrub video
  • Tasks that involve Video production
  • Tasks that involve AI video generation

Example prompts

  • “/video-scrub”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Bash, Glob

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. 先看源片带了什么
  2. 清
  3. 验收 ⛔ 不能跳

What it can do on your machine

Read from SKILL.md and the folder at commit 1b51af8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Bash
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Video Scrub loads about 1.3k tokens when it runs, and up to ~3.9k if it reads all its reference files. Until then it costs about 144 tokens; SKILL.md has 319 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~144
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Bash, Glob

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from eternityspring/reelbench-skills at commit 1b51af8, republished under its Apache-2.0 licence (© eternityspring). 319 words, ~1,292 tokens.

Download SKILL.mdSave it as .claude/skills/video-scrub/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
video-scrub
description
把一条视频重建成「只有画面和声音」的干净文件——**源片的元数据一概不搬**: 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。
allowed-tools
Read, Write, Edit, Bash, Glob
version
1.0.0
triggers
video-scrub, 清元数据, 去元数据, 元数据, 视频隐私, 抹掉信息, strip metadata, scrub video
metadata.license
Apache-2.0
metadata.runtimes
claude-code, codex

video-scrub

把一条视频重建成干净文件:画面和声音带过去,元数据一个字节都不带。

{baseDir} = 本文件所在目录。脚本 {baseDir}/scripts/video-scrub.mjs,零依赖,node 直接跑。

原理:白名单,不是黑名单

清元数据有两种思路,差别是死活:

怎么做问题
黑名单列出要删的字段逐个删(exiftool 那种)删不完你不知道的东西——厂商私有的 udta、GoPro 的遥测轨、码流里的 SEI,漏一个就漏了
白名单不说删什么,只说带什么过去:画面一条流、声音一条流,别的一律不要——

走白名单,源片的元数据没有任何通道能进来。它不是「被删掉了」,是从来没被搬运。

但 ffmpeg 默认会背叛这个结构两次,必须摁住:

  1. 它默认把源片的容器 tag 搬到输出 → -map_metadata -1
  2. 它默认自动挑流,会把 GoPro 的 gpmd 遥测轨一起带走 → -map 0:v:0 -map 0:a:0?

第 2 条是 GoPro / DJI 这类源片的唯一防线:它们的 GPS 不在 tag 里,在一条独立的定时元数据轨上。 清 tag 清不掉,只有「只挑两条流」挡得住。

真正的难点:看不见的那几层

摁住上面两条,tag 层就干净了,ffprobe 一片安静。但文件里还躺着三处身份串:

藏在哪内容ffprobe 看得见
H.264 的 SEIx264 完整参数串 cabac=1 ref=3 … crf=23.0✗
AAC 码流的 DSELavc62.28.102✗
avc1 的 compressornameLavc libx264✗

五个藏身处和各自的堵法见 {baseDir}/references/residue-map.md——每一条都有实测记录, 包括几个「看着该管用其实没用」的坑(-flags:v +bitexact 和 -x264-params info=0 都拦不住 SEI)。

两种模式
模式画面音频速度多杀掉什么
copy(默认)逐字节照搬重编53 秒的片子 1.3 秒——
encode重编码重编慢得多码流域水印、脆弱隐写

音频两种模式都重编——AAC 的版本号写在 DSE 里,那是码流内部,-c:a copy 抹不掉它。 重编一遍很便宜,换来音轨干净。画面则在 copy 模式下真的一个比特都没动(cmp 验证过, 除了被摘掉的 SEI)。

关于水印:encode 比 copy 多杀的是码流域水印和脆弱隐写,这两类在实际素材里少见。 真正要命的鲁棒像素水印(SynthID、影视取证水印)设计目标就是扛住重编码,两种模式都杀不掉。 所以选模式按画质和速度选,别指望重编码能洗掉水印。

四个 profile

擦白之后往回写的那一层:

profile写什么
obs(默认)OBS Studio 的长相。OBS 本来就是用 ffmpeg 封装的,所以这档不是伪造,是保持同类工具的正常外观
quicktimemacOS QuickTime 录屏:Core Media Video / Core Media Audio
screencaptureScreenCaptureKit 录屏
bare什么都不写。隐私强度最高——不留任何可被证伪的声明

有一件事做不到,写在这里省得再试:容器的 encoder 字段由 muxer 自己占着, -metadata encoder=Lavf60.16.100 盖不过去,置空也清不掉(实测)。只有 -fflags +bitexact 能让它整个消失。所以 obs 档不伪造版本号,它就让 ffmpeg 写自己的真版本号。


Step 0 — 先看源片带了什么
bash
node {baseDir}/scripts/video-scrub.mjs inspect <video>

一屏列全:容器 tag、每条流的 tag 与 side data、章节,以及码流里那几处 ffprobe 看不见的身份串。 末尾会告诉你验收时要拿几根针去扫,以及 SEI 这刀动不动。

先看这一屏再动手。 尤其注意两件事:

  • 有没有 data / timecode 流——有就说明源片可能带遥测轨(GoPro、DJI)
  • 是不是 HDR——是的话 SEI 一律不删(下面说为什么)
Step 1 — 清
bash
node {baseDir}/scripts/video-scrub.mjs scrub <video> -o out.mp4

默认 --mode copy --profile obs。常用参数:

bash
--mode encode          # 完整重编码
--profile bare         # 什么都不写,隐私强度最高
--crf 18               # 只在 encode 模式有意义
--date 2026-01-01T00:00:00Z   # 指定创建时间,不给就用当前时间
Step 2 — 验收 ⛔ 不能跳
bash
node {baseDir}/scripts/video-scrub.mjs verify <源> <输出>

或者一条龙(日常就用这个):

bash
node {baseDir}/scripts/video-scrub.mjs run <video> -o out.mp4

验收的核心是一句话:前面全是「我调了正确的参数」,属于声称;这一步是「我扫了,真没了」,属于证明。

做法是把源片所有元数据字符串抓出来当「针」——tag 的键和值、handler 名、章节标题—— 在输出文件里做字节级扫描,扎到一根就红。

两条实现上的讲究:

  • 针要 ≥5 字节。更短的串会在压缩数据里随机撞出假阳性,跳过的针会在提示里列出来。
  • 通用串不当针。VideoHandler 满世界都是,信息量为零;Lavf58.45.100 钉死了一个版本, 是指纹。分界线是「能不能把范围缩小到某个人、某台设备、某次导出」。
12 道门
门拦什么
字节级残留源片的元数据串扎中了输出
tag 层残留输出的 tag 值来自源片
位置信息任何 GPS / location 字段
设备与软件标识make / model / software / artist / comment 之类
源片时间戳输出的 creation_time 等于源片的
旋转矩阵encode 模式下旋转没烘进画面(copy 模式跳过——删了画面就是歪的)
流构成混进了 data / timecode / 附件流
章节章节跟过来了
码流身份串SEI / DSE / compressorname 里还有编码器名字
profile 相符剩下的 tag 和声明的 profile 对不上
时长输出被偷偷截断
可解码产出了打不开的坏文件
HDR 与内嵌字幕:SEI 这刀什么时候不许动

ffmpeg 只给得起 NAL 级的粒度——filter_units 按 NAL 类型删, h264_metadata 也没有「只删某个 SEI payload」的选项。所以 remove_types=6 是 全部 SEI 一起删。而 SEI 里除了 x264 那串垃圾,还住着:

  • HDR 静态元数据(mastering display / content light level)——删了会掉色,tone mapping 崩
  • CEA-608/708 内嵌字幕——删了字幕没了

所以脚本的策略是:只在真查到身份串时才动刀,HDR 源片一律不动(会明说没动, 以及为什么)。这个判断由 seiPlan() 做,不需要你操心,但你该知道它在那儿。

边界(不做的事)

不去除水印(鲁棒像素水印重编码也杀不掉,别指望)、不改画面内容(不裁剪不缩放不旋转)、 不伪造设备型号和 GPS(profile 只写工具类信息,不编造拍摄设备和位置)、 不做批量目录扫描(一次一条片子)、不处理非 mp4/mov 之外的容器。

自测
bash
node {baseDir}/scripts/selftest.mjs

117 项断言,不碰 ffmpeg、不碰真文件。12 道门每道都有击穿用例——证明它真的会拦。 改完脚本先跑这个。

© eternityspring, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (scripts, references) in skills/video-scrub of eternityspring/reelbench-skills.

  • SKILL.md
  • README.en.md
  • README.md
  • references/profiles.md
  • references/residue-map.md
  • scripts/selftest.mjs
  • scripts/video-scrub.mjs

Open the folder on GitHubat commit 1b51af8

Compare with similar skills

Video Scrub next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Video Scrub compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Video Scrub this skilleternityspring/reelbench-skills872—~1.3kAutomated safety check: NotesApache-2.0
HyperFrames Video Entry Pointheygen-com/hyperframes59k3 repos~5.2kAutomated safety check: PassApache-2.0
Stage EditOrkas-AI/Orkas-VideoStudio498—~2.4kAutomated safety check: PassMIT
Re Walkthrough Procharlesdove977/re-walkthrough-pro164—~1.1kAutomated safety check: NotesMIT
Video Productionffroliva/gflow-cli266—~7kAutomated safety check: PassMIT
Image To Videonotque/vexjoy-agent439—~817Automated safety check: NotesMIT

Similar skills

  • HyperFrames Video Entry Point

    heygen-com/hyperframes

    Entry point for making, editing and rendering videos from HTML compositions with HyperFrames, routing each request to the right workflow.

    59k GitHub starsUsed in 3 repos~5.2k tokens
    Media & CreativeAuto-check passed
  • Stage Edit

    Orkas-AI/Orkas-VideoStudio

    Intelligent editing of real user-supplied footage—understand it with transcript/inspected-frame/scene/silence/quality evidence, then choose deterministic timeline operations or a constrained…

    498 GitHub stars~2.4k tokensUpdated 17 days ago
    Media & CreativeAuto-check passed
  • Re Walkthrough Pro

    charlesdove977/re-walkthrough-pro

    Turn a Zillow listing into a cinematic room-by-room walkthrough video (Apify scrape → Higgsfield image-to-video → ffmpeg stitch) to sell to real estate agents

    164 GitHub stars~1.1k tokensUpdated 2 mo ago
    Media & CreativeAuto-check: notes
  • Video Production

    ffroliva/gflow-cli

    A skill your agent uses when the user wants a finished video out of gflow rather than a single clip — a scripted scene, a talking-head or dialogue piece, an explainer, a product montage, a story…

    266 GitHub stars~7k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Image To Video

    notque/vexjoy-agent

    FFmpeg-based video creation from image and audio. An agent skill from notque/vexjoy-agent.

    439 GitHub stars~817 tokensUpdated 6 days ago
    Media & CreativeAuto-check: notes
  • Stage Assemble

    Orkas-AI/Orkas-VideoStudio

    Deterministically assemble an approved cross-modal EDL (plan.json) into a finished video — produce each segment (edit/compose/generate/provided, delegated to its line), then assemble in ffmpeg…

    498 GitHub stars~3.4k tokensUpdated 17 days ago
    Media & CreativeAuto-check passed

More from eternityspring/reelbench-skills

  • Video Shots

    eternityspring/reelbench-skills

    拉片:把一条成片拆成逐镜头的分析表——每个镜头的时长、景别、类别、运镜、画面. An agent skill from eternityspring/reelbench-skills.

    872 GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check: notes
  • Video Sync

    eternityspring/reelbench-skills

    把拉片数据和原片合成一条能直接看的视频:一边是画面,一边是这一镜的分镜信息 (镜号、起止、时长、景别、类别、运镜、画面描述、台词),镜头切了信息跟着切, 镜头表自动滚动并高亮当前这一镜。

    872 GitHub starsUsed in 1 repo~1k tokens
    Auto-check: notes

Works with

Questions about Video Scrub

What does Video Scrub do?

把一条视频重建成「只有画面和声音」的干净文件——源片的元数据一概不搬: GPS、设备型号、账号 ID、创建时间、章节、GoPro 的遥测轨,全部留在原地。. Video Scrub is an agent skill from eternityspring/reelbench-skills.

When should I use Video Scrub?

Video Scrub fits situations like: asked to 清元数据、去元数据、抹掉视频信息、视频隐私、去水印信息、 strip video metadata、remove exif from video、scrub video; tasks that involve Video production; tasks that involve AI video generation.

How do I install Video Scrub in Claude Code?

Run `npx skills add eternityspring/reelbench-skills --skill video-scrub -a claude-code`. Or copy the skill folder (skills/video-scrub in eternityspring/reelbench-skills) into .claude/skills/video-scrub in your project. Claude Code loads it when a task matches its description.

How do I install Video Scrub in Codex?

Run `npx skills add eternityspring/reelbench-skills --skill video-scrub -a codex`. Or copy the skill folder (skills/video-scrub in eternityspring/reelbench-skills) into .agents/skills/video-scrub in your project. Codex loads it when a task matches its description.

Can I use Video Scrub in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add eternityspring/reelbench-skills --skill video-scrub -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/video-scrub, .gemini/skills/video-scrub, .github/skills/video-scrub and .opencode/skills/video-scrub in your project.

What does Video Scrub need to run?

Going by SKILL.md and its folder, Video Scrub needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash, Glob.

Does Video Scrub access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Video Scrub safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Video Scrub use?

Video Scrub is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Video Scrub use?

About 1.3k tokens (SKILL.md is roughly 5.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.6k tokens, read only when the agent opens those files.

What are the alternatives to Video Scrub?

Skills that share tags, products or a category with Video Scrub: HyperFrames Video Entry Point (heygen-com/hyperframes, 59k stars), Stage Edit (Orkas-AI/Orkas-VideoStudio, 498 stars), Re Walkthrough Pro (charlesdove977/re-walkthrough-pro, 164 stars) and Video Production (ffroliva/gflow-cli, 266 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Video Scrub?

eternityspring (a GitHub user) maintains it in eternityspring/reelbench-skills, which has 872 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 21, 2026.

Source: eternityspring/reelbench-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.