video-sync SKILL.md skillA
video-sync from eternityspring/reelbench-skills is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
mdr add eternityspring/reelbench-skills/video-sync@v1.0.0Pins v1.0.0 in mdr.lock. Pin the fingerprint instead.
- Audit grade
- A, 17 of 17 checks passed
- Kind
- SKILL.md skill
- Repository
- eternityspring/reelbench-skills
- Path
skills/video-sync/SKILL.md- Versions recorded
- 4
- Latest version
- v1.0.0, committed Sep 12, 2026
- First version recorded
- Sep 12, 2026
- Size
- 7,623 bytes
- Repository stars
- 1,205
- License
- Apache-2.0
把拉片数据和原片合成一条**能直接看的视频**:一边是画面,一边是这一镜的分镜信息 (镜号、起止、时长、景别、类别、运镜、画面描述、台词),**镜头切了信息跟着切**, 镜头表自动滚动并高亮当前这一镜。 版式只看原片的宽高比:**横版 / 方版 → 画面在上、信息在下;竖版 → 画面在左、信息在右**, 画面永远原样缩放,不裁不拉。 镜头表**随播放滚动**:切点处滚一小段把当前镜头带到锚点、随后停住,高亮条同步滑过去。 实现上只截三张图(底板 + 铺开的长图 ×2),滚动与高亮由 ffmpeg 按时间裁窗, **布局全在 scripts/panel.css 里,改它就能改版式**,不用碰脚本。 吃 video-shots 产出的 shots.json(有 frames/ 就把关键帧当缩略图用)。 零 npm 依赖,用 ffmpeg 合成、无头浏览器渲面板。 Use when asked to 导出视频、合成视频、分镜视频、带分镜信息的视频、解说版视频、 video with shot info、annotated shot video。.
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
## video-sync
把 **shots.json + 原片** 合成一条视频:画面一边,**当前镜头的分镜信息**另一边,
镜头切了信息跟着切,镜头表自动滚动并高亮。
**版式只看宽高比,不看别的:**
| 原片 | 版式 | 合成方式 |
| --- | --- | --- |
| 横版(宽 > 高)、方版 | **画面在上,信息在下** | `vstack` |
| 竖版(高 > 宽) | **画面在左,信息在右** | `hstack` |
两个方向都保证**画面原样缩放、不裁不拉**,面板补足剩下的地方。
**只截三张图,动的部分交给 ffmpeg。** 面板上会变的只有两样:滚到哪、哪一行亮。
所以量一次行位置、截一张底板、截两张把镜头表铺开的长图(一张压暗、一张全亮),
滚动=从暗底长图裁一个视窗,高亮=从亮条长图裁一行盖上去,位置由 `sendcmd`
在每个切点下发一条小表达式驱动。53 镜的片子截图从 53 次降到 3 次(12 秒)。
**当前镜头钉在第二行**:第 1、2 镜不滚(高亮往下挪一行),第 3 镜起每切一次往上滚一行。
**动在切点,静在镜头里**——切点处滚 `--ease`(默认 0.45)秒到位就停住,
16 秒的长镜头里让列表一直爬,观众要盯着它晃 16 秒。
**行高由内容决定**,描述写得长行就高;高亮条按行高分层(`crop` 的高度运行时改不动)。
`{baseDir}` = 本文件所在目录。脚本 `{baseDir}/scripts/video-sync.mjs`,零依赖,`node` 直接跑。
**边界(不做的事)**:不做拉片(那是 `video-shots` 的活,本 skill 吃它的 shots.json)、
不剪辑不转场不配乐、不烧字幕到画面上、不做逐帧渲染(动效由 ffmpeg 按时间裁窗做出来)。
---
### Step 0 — 先有拉片数据
要一份 `shots.json`(`video-shots` 的产出)和**对应的原片**。有 `frames/`(每镜关键帧)
更好——镜头表里会用起手帧当缩略图,没有就留空格。
**shots.json 必须和这条片子对得上**:`meta.durationSeconds` 与原片不符就别合,
先回去把拉片做对。
### Step 1 — 先看几何,再动视频
```bash
node {baseDir}/scripts/video-sync.mjs plan shots.json --video <片>
```
只算不合成,几秒出结果:版式、画面区、面板区、输出尺寸。**先确认这三个数字合理再往下走**——
合成一条 3 分钟的片子要一两分钟,算错了再重来不值。
…Read the whole file at its exact version.
How to install
mdr add eternityspring/reelbench-skills/video-sync@sha256:4dd522dc3613bc82The line at the top of this page pins the label v1.0.0, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
[](https://markdownregistry.com/a/art_3zso2mibievxcffh)
2 badge image fetches in 30 days. What the badge shows.
Versions
The registry has recorded 4 versions of this file, all committed on Sep 12, 2026.
| version | committed | commit | size | audit | |
|---|---|---|---|---|---|
| v1.0.0 latest | 2026-09-12 | 866cea9 | 7,623 B | A | view · diff |
| v1.0.0 | 2026-09-12 | 12668c1 | 7,284 B | A | view · diff |
| v1.0.0 | 2026-09-12 | 86db65f | 7,040 B | A | view · diff |
| v1.0.0 | 2026-09-12 | 2e3892b | 6,256 B | A | view |
Audit of the latest version
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (7623 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No link to an exfiltration or paste host
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No prompt-injection phrasing
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
- pass: No link to a raw IP address
- pass: No script tag
Source
eternityspring/reelbench-skills · 1,205 stars · license Apache-2.0 · pushed 2026-10-24 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_3zso2mibievxcffh GET https://markdownregistry.com/api/v1/resolve?ref=eternityspring/reelbench-skills/video-sync GET https://markdownregistry.com/api/v1/blob/4dd522dc3613bc8279ffff605ebe8f640a47a2eb5bf7e432807eb063e7057e92
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.