#772 by GitHub stars
eternityspring/reelbench-skills
Learning notes and tooling skills for AI video - AI 视频相关的学习与工具 skill
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/video-scrub/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
df39d5df9d7a → df39d5df9d7a
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → df39d5df9d7a
No earlier version was observed for comparison.
skills/video-shots/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
df39d5df9d7a → df39d5df9d7a
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → df39d5df9d7a
No earlier version was observed for comparison.
skills/video-sync/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
df39d5df9d7a → df39d5df9d7a
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → df39d5df9d7a
No earlier version was observed for comparison.
Heat
6.2- Star growth, last 7 daysAhead of 89% of tracked repositories
- Star growth, last 24 hoursAhead of 72% of tracked repositories
- Rank movement, last 7 daysAhead of 41% of tracked repositories
- Commits, last 30 daysAhead of 59% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- video-scrub
skills/video-scrub - video-shots
skills/video-shots - video-sync
skills/video-sync
How it works
video-scrub
When your agent uses it
把一条视频重建成「只有画面和声音」的干净文件——**源片的元数据一概不搬**: 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。
What it loads into context
Frontmatter
543 tokensAlways available to the agent
SKILL.md
2,879 tokensWhen the skill is activated
Reference documents
6,877 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- video-scrub
Scripts executed separately
scripts/selftest.mjsscripts/video-scrub.mjs
Files
README.en.mddoc6,683 bytesREADME.mddoc6,090 bytesSKILL.mdcore9,323 bytesSKILL.mdcore9,323 bytesSKILL.mdcore9,323 bytesSKILL.mdcore9,323 bytesSKILL.mdcore9,323 bytesSKILL.mdcore9,323 bytesSKILL.mdcore9,323 bytesSKILL.mdcore9,323 bytesreferences/profiles.mddoc3,195 bytesreferences/residue-map.mddoc7,293 bytesscripts/selftest.mjsruns17,687 bytesscripts/video-scrub.mjsruns31,325 bytes
Read SKILL.md
## video-scrub
把一条视频重建成干净文件:**画面和声音带过去,元数据一个字节都不带。**
`{baseDir}` = 本文件所在目录。脚本 `{baseDir}/scripts/video-scrub.mjs`,零依赖,`node` 直接跑。
### 原理:白名单,不是黑名单
清元数据有两种思路,差别是死活:
| | 怎么做 | 问题 |
| --- | --- | --- |
| 黑名单 | 列出要删的字段逐个删(exiftool 那种) | **删不完你不知道的东西**——厂商私有的 udta、GoPro 的遥测轨、码流里的 SEI,漏一个就漏了 |
| **白名单** | 不说删什么,只说**带什么过去**:画面一条流、声音一条流,别的一律不要 | —— |View the complete source on GitHubvideo-shots
When your agent uses it
拉片:把一条成片拆成逐镜头的分析表——每个镜头的时长、景别、类别、运镜、画面。 分工刻在骨子里:**能量的都由代码量**(切点来自 ffmpeg 场景检测,时长是切点相减, 运动量是逐帧差分的中位数),模型只判断它真正该判断的那几件事(景别 / 类别 / 运镜 / 画面 / 节奏), 然后每一条判断都被代码当场对账——**声称推拉摇移却实测几乎不动,门直接拦**。 看片走联系表(每镜起手帧 + 收尾帧各拼一张大图,一屏二十几个镜头,a/b 对照就是运镜), 不是一张张翻。检测漏刀多刀用 recut 补刀并刀,自动重编号重算时长,手改边界过不了门。 产出 shots.json + Markdown 镜头表 + **单页交互式拉片报告**:内嵌播放器(播放时同步高亮镜头、 点镜头跳转)、镜头节奏带、可搜索可筛选可排序的镜头表(列表 / 卡片两种视图、首尾关键帧并排、 点图开大图)、景别类别运镜分布、出场人物、质量门、导出 JSON。单文件零依赖,离线双击能开。 15 道质量门全部由脚本确定性检查。 零依赖、零 API key,只要 node 和 ffmpeg。 Use when asked to 拉片、拆镜头、分析视频镜头、镜头时长、景别、运镜、镜头表、 video shot breakdown、shot list from video。
What it loads into context
Frontmatter
619 tokensAlways available to the agent
SKILL.md
4,245 tokensWhen the skill is activated
Reference documents
14,275 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- video-shots
- 边界
- 自测
- 自带样例
Scripts executed separately
scripts/report.jsscripts/selftest.mjsscripts/video-shots.mjs
Files
README.en.mddoc9,868 bytesREADME.mddoc8,467 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesSKILL.mdcore13,821 bytesassets/report-mobile.pngasset128,870 bytesassets/report.pngasset393,735 bytesexamples/demo-shots.jsonasset31,686 bytesexamples/demo-track.jsonasset3,926 bytesreferences/analysis-pass.mddoc5,624 bytesreferences/report-style.mddoc5,579 bytesreferences/schema.mddoc5,372 bytesreferences/taxonomy.mddoc11,939 bytesscripts/report.cssasset33,842 bytesscripts/report.jsruns20,988 bytesscripts/selftest.mjsruns36,055 bytesscripts/video-shots.mjsruns77,449 bytes
Read SKILL.md
## video-shots
给成片**拉片**——把一条片子拆成逐镜头的分析表:**时长、景别、类别、运镜、画面**。
**前提刻在骨子里:镜头边界是量出来的,不是看出来的。** 模型看视频最不可靠的就是报时间——
「这个镜头大概 3 秒」和「2.97 秒」差的不是精度,是这份表能不能用。所以这里划一条死线:
| 谁来定 | 什么 | 怎么定 |
| --- | --- | --- |
| **代码** | 切点、时长、片长、帧率 | ffmpeg 场景检测 + ffprobe,两位小数 |
| **代码** | 每个镜头的实测运动量 | 逐帧差分曲线的区间中位数(两端剔除,避开切点尖峰) |
| **模型** | 景别、类别、运镜、画面、节奏 | 看关键帧判断——**只有这几件事是模型的活** |
| **代码** | 判断对不对 | 15 道质量门,逐条对账 |
View the complete source on GitHubvideo-sync
When your agent uses it
把拉片数据和原片合成一条**能直接看的视频**:一边是画面,一边是这一镜的分镜信息 (镜号、起止、时长、景别、类别、运镜、画面描述、台词),**镜头切了信息跟着切**, 镜头表自动滚动并高亮当前这一镜。 版式只看原片的宽高比:**横版 / 方版 → 画面在上、信息在下;竖版 → 画面在左、信息在右**, 画面永远原样缩放,不裁不拉。 镜头表**随播放滚动**:切点处滚一小段把当前镜头带到锚点、随后停住,高亮条同步滑过去。 实现上只截三张图(底板 + 铺开的长图 ×2),滚动与高亮由 ffmpeg 按时间裁窗, **布局全在 scripts/panel.css 里,改它就能改版式**,不用碰脚本。 吃 video-shots 产出的 shots.json(有 frames/ 就把关键帧当缩略图用)。 零 npm 依赖,用 ffmpeg 合成、无头浏览器渲面板。 Use when asked to 导出视频、合成视频、分镜视频、带分镜信息的视频、解说版视频、 video with shot info、annotated shot video。
What it loads into context
Frontmatter
524 tokensAlways available to the agent
SKILL.md
2,399 tokensWhen the skill is activated
Reference documents
7,389 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- video-sync
- 边界
- 自测
Scripts executed separately
scripts/selftest.mjsscripts/video-sync.mjs
Files
README.en.mddoc7,862 bytesREADME.mddoc6,985 bytesSKILL.mdcore7,623 bytesSKILL.mdcore7,623 bytesSKILL.mdcore7,623 bytesSKILL.mdcore7,623 bytesSKILL.mdcore7,623 bytesSKILL.mdcore7,623 bytesSKILL.mdcore7,623 bytesSKILL.mdcore7,623 bytesassets/output-portrait.pngasset328,868 bytesassets/panel-landscape.pngasset219,854 bytesassets/panel-portrait.pngasset91,273 bytesreferences/layout.mddoc6,608 bytesreferences/panel-style.mddoc2,919 bytesscripts/panel.cssasset6,971 bytesscripts/panel.htmlasset5,537 bytesscripts/selftest.mjsruns18,543 bytesscripts/video-sync.mjsruns30,541 bytes
Read SKILL.md
## video-sync
把 **shots.json + 原片** 合成一条视频:画面一边,**当前镜头的分镜信息**另一边,
镜头切了信息跟着切,镜头表自动滚动并高亮。
**版式只看宽高比,不看别的:**
| 原片 | 版式 | 合成方式 |
| --- | --- | --- |
| 横版(宽 > 高)、方版 | **画面在上,信息在下** | `vstack` |
| 竖版(高 > 宽) | **画面在左,信息在右** | `hstack` |
两个方向都保证**画面原样缩放、不裁不拉**,面板补足剩下的地方。
View the complete source on GitHubSkills included
- video-scrub
- video-shots
- video-sync
Repository facts
- License
- Apache-2.0
- Created
- Sep 11, 2026
- Last pushed
- Oct 24, 2026
- Forks
- 154
- Open issues
- 0
- Project activity
- Active
Rank over the last 12 weeks
Now #772 · best #657 · up 35 in 30 days
- #761 on Nov 1
- #764 on Nov 2
- #768 from Nov 3 to Nov 4
- #769 on Nov 5
- #768 on Nov 6
- #772 since Nov 7
49 earlier periods
- #926 on Sep 6
- #942 on Sep 10
- #896 on Sep 11
- #881 on Sep 12
- #845 on Sep 13
- #827 on Sep 14
- #810 on Sep 15
- #820 on Sep 16
- #798 on Sep 17
- #773 on Sep 18
- #745 on Sep 19
- #753 on Sep 20
- #750 on Sep 21
- #771 on Sep 22
- #759 on Sep 23
- #726 on Sep 24
- #704 from Sep 25 to Sep 26
- #733 on Sep 27
- #750 on Sep 28
- #779 on Sep 29
- #763 on Sep 30
- #712 on Oct 1
- #732 on Oct 2
- #714 on Oct 3
- #742 on Oct 4
- #748 on Oct 5
- #754 on Oct 6
- #763 on Oct 7
- #807 on Oct 8
- #766 on Oct 9
- #751 on Oct 10
- #750 on Oct 11
- #762 on Oct 12
- #763 on Oct 13
- #777 on Oct 14
- #771 on Oct 15
- #774 on Oct 16
- #743 on Oct 17
- #673 on Oct 18
- #687 on Oct 19
- #692 on Oct 20
- #697 on Oct 21
- #680 on Oct 22
- #675 on Oct 23
- #657 on Oct 24
- #752 on Oct 25
- #755 on Oct 28
- #758 from Oct 29 to Oct 30
- #762 on Oct 31
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 3, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 26 notes
skills/video-scrub/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-scrub/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-scrub/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-scrub/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-scrub/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-scrub/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-scrub/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-shots/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-sync/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 3 broad permissionsin 3 files: video-scrub/SKILL.md:1 video-shots/SKILL.md:1 video-sync/SKILL.md:1
- No dangerous shell commands
- 21 network referencesin 7 files: video-shots/README.en.md:1 video-shots/README.md:1 video-sync/README.en.md:1 and 4 more
- No hidden or obfuscated text
- No instruction overrides
- 7 executable scriptsin 7 files: video-scrub/scripts/selftest.mjs:1 video-scrub/scripts/video-scrub.mjs:1 video-shots/scripts/report.js:1 and 4 more
- No access to secrets
- No requests to vote in Hot
Show all 31 signals by file
skills/video-scrub/README.en.md
skills/video-scrub/README.md
skills/video-scrub/SKILL.md
- Broad permissionsline 1
Bash
skills/video-scrub/references/residue-map.md
skills/video-scrub/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/video-scrub/scripts/video-scrub.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/video-shots/README.en.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 176
The way this skill is written, the visual language of the report, and the position that **quality gates must be deterministic code** are learned from [eternityspring/shuohao-skills](https://github.com/eternityspring/shuohao-skills) (Apache- - Network accessline 177
**quality gates must be deterministic code** are learned from [eternityspring/shuohao-skills](https://github.com/eternityspring/shuohao-skills) (Apache-2.0). The methodology has been internalised into this directory's own `references/` — - Network accessline 178
[eternityspring/shuohao-skills](https://github.com/eternityspring/shuohao-skills) (Apache-2.0).
skills/video-shots/README.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 154
skill 的写法、报告的界面语言、「质量门全部由代码确定性检查」的主张, 学自 [eternityspring/shuohao-skills](https://github.com/eternityspring/shuohao-skills)(Apache-2.0)。 - Network accessline 155
学自 [eternityspring/shuohao-skills](https://github.com/eternityspring/shuohao-skills)(Apache-2.0)。
skills/video-shots/SKILL.md
- Broad permissionsline 1
Bash
skills/video-shots/scripts/report.js
- Executable scriptline 1
Executable file
skills/video-shots/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/video-shots/scripts/video-shots.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/video-sync/README.en.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 154
<video src="https://github.com/eternityspring/reelbench-skills/raw/main/demo-sync/demo-en-sync.mp4" controls muted playsinline width="760"></video>
skills/video-sync/README.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 131
<video src="https://github.com/eternityspring/reelbench-skills/raw/main/demo-sync/demo-en-sync.mp4" controls muted playsinline width="760"></video>
skills/video-sync/SKILL.md
- Broad permissionsline 1
Bash
skills/video-sync/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/video-sync/scripts/video-sync.mjs
- Executable scriptline 1
#!/usr/bin/env node
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 1 fact
- Broad permissions in the frontmatter of the SKILL.mdvideo-scrub/SKILL.md:23High confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md skills/video-scrub/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/video-scrub/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/video-scrub/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/video-scrub/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/video-scrub/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/video-scrub/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/eternityspring-reelbench-skills/)