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

Apache-2.0Auto-check: notesMedia & Creative

Install Video Sync

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

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

GitHub CLI
$ gh skill install eternityspring/reelbench-skills video-sync --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-sync .claude/skills/video-sync && 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-sync
GitHub stars
868
Used in
2 other repos
Token cost
~1k tokens
SKILL.md length
179 words
Files
12 (incl. scripts, references, assets)
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

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

  • Works in 5 steps: 先有拉片数据 → 先看几何,再动视频 → 渲面板 → …
  • Asked to 导出视频、合成视频、分镜视频、带分镜信息的视频、解说版视频、 video with shot info、annotated shot video
  • SKILL.md covers video-sync, 边界 and 自测
  • Runs JavaScript scripts from its folder; calls node

What it does

Video Sync is an agent skill from eternityspring/reelbench-skills. 把拉片数据和原片合成一条能直接看的视频:一边是画面,一边是这一镜的分镜信息 (镜号、起止、时长、景别、类别、运镜、画面描述、台词),镜头切了信息跟着切, 镜头表自动滚动并高亮当前这一镜。 版式只看原片的宽高比:横版 / 方版 → 画面在上、信息在下;竖版 → 画面在左、信息在右, 画面永远原样缩放,不裁不拉。 镜头表随播放滚动:切点处滚一小段把当前镜头带到锚点、随后停住,高亮条同步滑过去。 实现上只截三张图(底板 + 铺开的长图 ×2),滚动与高亮由 ffmpeg 按时间裁窗, 布局全在 scripts/panel.css 里,改它就能改版式,不用碰脚本。 吃 video-shots 产出的 shots.json(有 frames/ 就把关键帧当缩略图用)。 零 npm 依赖,用 ffmpeg 合成、无头浏览器渲面板。 Use when asked to 导出视频、合成视频、分镜视频、带分镜信息的视频、解说版视频、 video with shot info、annotated shot video。

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

It sits in Media & Creative, covering Video production and AI video generation. It works with FFmpeg and npm. 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 导出视频、合成视频、分镜视频、带分镜信息的视频、解说版视频、 video with shot info、annotated shot video
  • Tasks that involve Video production
  • Tasks that involve AI video generation

Example prompts

  • “/video-sync”

Requirements

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

Workflow steps

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

  1. 先有拉片数据
  2. 先看几何,再动视频
  3. 渲面板
  4. 合成
  5. 抽帧验收 ⛔ 不能跳

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 4 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 Sync loads about 1k tokens when it runs, and up to ~3.4k if it reads all its reference files. Until then it costs about 122 tokens; SKILL.md has 179 words of instructions outside code blocks.

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

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). 179 words, ~1,028 tokens.

Download SKILL.mdSave it as .claude/skills/video-sync/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.
name
video-sync
description
把拉片数据和原片合成一条**能直接看的视频**:一边是画面,一边是这一镜的分镜信息 (镜号、起止、时长、景别、类别、运镜、画面描述、台词),**镜头切了信息跟着切**, 镜头表自动滚动并高亮当前这一镜。 版式只看原片的宽高比:**横版 / 方版 → 画面在上、信息在下;竖版 → 画面在左、信息在右**, 画面永远原样缩放,不裁不拉。 镜头表**随播放滚动**:切点处滚一小段把当前镜头带到锚点、随后停住,高亮条同步滑过去。 实现上只截三张图(底板 + 铺开的长图 ×2),滚动与高亮由 ffmpeg 按时间裁窗, **布局全在 scripts/panel.css 里,改它就能改版式**,不用碰脚本。 吃 video-shots 产出的 shots.json(有 frames/ 就把关键帧当缩略图用)。 零 npm 依赖,用 ffmpeg 合成、无头浏览器渲面板。 Use when asked to 导出视频、合成视频、分镜视频、带分镜信息的视频、解说版视频、 video with shot info、annotated shot video。
allowed-tools
Read, Write, Edit, Bash, Glob
version
1.0.0
triggers
video-sync, 导出视频, 合成视频, 分镜视频, 拉片视频, 解说视频, 带分镜信息, shot info video
metadata.license
Apache-2.0
metadata.runtimes
claude-code, codex

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 分钟的片子要一两分钟,算错了再重来不值。

不满意就调:--panel <比例>(横版是面板高÷画面高,默认 0.8;竖版是面板宽÷画面宽,默认 1.6)、 --width / --height(画面区的上限,默认 1920 / 1080)。

原片太小就放大画面区:面板是跟着画面区算的,640×360 的片子面板只有 640×288, 四列挤在一起读不了。--scale 2 把画面区放到 1280×720、面板放到 1280×576,宽高比不动。 默认是 1(只缩不放)。plan / panels / compose / export 都要带上同一个 --scale。

Step 2 — 渲面板
bash
node {baseDir}/scripts/video-sync.mjs panels shots.json --video <片> \
  --frames frames --lang zh|en [--out panels] [--chrome <路径>]

产出 static.png(底板)、list-dim.png / list-lit.png(整张镜头表铺开的长图, 一暗一亮)、layout.json(每行的位置,合成时按它算滚动),外加一张 panels/panel.html—— 用浏览器打开它就能预览面板,#S07 换镜头看效果(预览里的滚动动效和导出一致)。

改布局就改 {baseDir}/scripts/panel.css,改完重跑 panels 就是新版面, 不用碰脚本、不用重新想截图逻辑。样式约定见 {baseDir}/references/panel-style.md。

Step 3 — 合成
bash
node {baseDir}/scripts/video-sync.mjs compose shots.json --video <片> \
  [--panels panels] [-o out.mp4] [--crf 20] [--ease 0.45]

音轨照搬原片(无声片自动不接音轨)。合成完 stderr 会报输出尺寸、时长、版式,核对一眼。

两步也可以一条龙:

bash
node {baseDir}/scripts/video-sync.mjs export shots.json --video <片> -o out.mp4 --frames frames
Step 4 — 抽帧验收 ⛔ 不能跳

不要只看合成没报错就交。 至少抽三帧看看信息对不对得上画面:

bash
for t in 5 30 60; do ffmpeg -v error -y -ss $t -i out.mp4 -frames:v 1 -q:v 3 /tmp/check-$t.jpg; done

看三件事:这一帧的画面属于哪一镜、面板上的镜号是不是同一个、高亮行有没有跟着走。 对不上通常是 shots.json 和原片不是同一条,或者 --video 指错了。

汇报一句话说清:输出路径、尺寸、时长、版式、多少镜、面板哪几张没渲出来(如果有)。


边界

  • 滚动只发生在切点:滚 --ease 秒到位就停住,镜头里面板是静止的。 真要做「全程匀速爬」也行(改 motionPlan 的分段),但长镜头会一直晃眼睛
  • 需要一个无头浏览器(Chrome / Chromium / Edge)。这是「布局能随便改」的代价: 换成 ffmpeg 的 drawtext 画面板,中文换行、缩略图、高亮全得自己实现,改个版式要改滤镜图
  • 词表(景别 / 类别 / 运镜 / 转场)在本 skill 里自带一份,不跨目录 import—— skill 要能整个拷走。video-shots 那边加了新词,这边也要加,不然显示成枚举键
  • 渲面板固定三张截图,和镜头数无关:53 镜约 12 秒。合成按片长走,203 秒的片子约 75 秒

自测

bash
node {baseDir}/scripts/selftest.mjs

122 项断言,不碰 ffmpeg、不开浏览器:几何(横/方/竖、偶数边长、上下限、旋钮)、 面板页面的数据契约(词表下发、节奏角色、缩略图有没有才给、转义)、 动画命令(每条都必须短——表达式长了 ffmpeg 直接配置失败)、ffmpeg 参数。 改完脚本先跑这个。

© 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 11 other files (scripts, references, assets) in skills/video-sync of eternityspring/reelbench-skills.

  • SKILL.md
  • README.en.md
  • README.md
  • assets/output-portrait.png
  • assets/panel-landscape.png
  • assets/panel-portrait.png
  • references/layout.md
  • references/panel-style.md
  • scripts/panel.css
  • scripts/panel.html
  • scripts/selftest.mjs
  • scripts/video-sync.mjs

Open the folder on GitHubat commit 1b51af8

Used in 2 other repositories

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in eternityspring/reelbench-skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Video Sync 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 Sync compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Video Sync this skilleternityspring/reelbench-skills8682 repos~1kAutomated safety check: NotesApache-2.0
HyperFrames Video Entry Pointheygen-com/hyperframes59k3 repos~5.2kAutomated safety check: PassApache-2.0
Vox DirectorAlisa0808/vox-director2.2k—~5.6kAutomated safety check: PassMIT
Gemini Omni Flash APIgoogle-gemini/gemini-skills4.3k—~6.4kAutomated safety check: PassApache-2.0
Cassette Video EditCassette-Editor/oh-my-cassette1571 repos~3.4kAutomated safety check: PassMIT
Super Video MakerBomx/super-video-maker-skill308—~11kAutomated safety check: NotesNone

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
  • Vox Director

    Alisa0808/vox-director

    Turn ONE topic into a finished Vox-style paper-collage explainer / ad video, end to end on the Atlas Cloud API + local ffmpeg — script, collage keyframes, motion, voice-over, music, captions, all…

    2.2k GitHub stars~5.6k tokensUpdated 3 days ago
    Media & CreativeAuto-check passed
  • Gemini Omni Flash API

    google-gemini/gemini-skills

    Official

    A skill your agent uses for generative video editing, text-to-video, image-referenced video generation, first-frame-to-video, first-and-last-frame transitions, and video extensions using Gemini Omni…

    4.3k GitHub stars~6.4k tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • Cassette Video Edit

    Cassette-Editor/oh-my-cassette

    Edit, trim, cut, caption, subtitle, reframe, combine, add background music to, or export video, audio, and image files through Cassette.

    157 GitHub starsUsed in 1 repo~3.4k tokens
    Media & CreativeAuto-check passed
  • Super Video Maker

    Bomx/super-video-maker-skill

    End-to-end AI video production skill for agentic frameworks.

    308 GitHub stars~11k tokensUpdated 2 mo ago
    Media & CreativeAuto-check: notes
  • Hearyourvoice

    killernay/HearYourVOICE

    The repeatable workflow for short Thai documentary/explainer videos — one topic in, one finished MP4 out.

    140 GitHub stars~10k tokensUpdated 2 mo ago
    Media & CreativeAuto-check: notes

More from eternityspring/reelbench-skills

  • Video Shots

    eternityspring/reelbench-skills

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

    868 GitHub starsUsed in 2 repos~1.8k tokens
    Auto-check: notes
  • Video Scrub

    eternityspring/reelbench-skills

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

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

Works with

Questions about Video Sync

What does Video Sync do?

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

When should I use Video Sync?

Video Sync fits situations like: asked to 导出视频、合成视频、分镜视频、带分镜信息的视频、解说版视频、 video with shot info、annotated shot video; tasks that involve Video production; tasks that involve AI video generation.

How do I install Video Sync in Claude Code?

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

How do I install Video Sync in Codex?

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

Can I use Video Sync 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-sync -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-sync, .gemini/skills/video-sync, .github/skills/video-sync and .opencode/skills/video-sync in your project.

What does Video Sync need to run?

Going by SKILL.md and its folder, Video Sync 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 Sync 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 Sync 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 Sync use?

Video Sync 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 Sync use?

About 1k tokens (SKILL.md is roughly 4.1k 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.4k tokens, read only when the agent opens those files.

What are the alternatives to Video Sync?

Skills that share tags, products or a category with Video Sync: HyperFrames Video Entry Point (heygen-com/hyperframes, 59k stars), Vox Director (Alisa0808/vox-director, 2.2k stars), Gemini Omni Flash API (google-gemini/gemini-skills, 4.3k stars) and Cassette Video Edit (Cassette-Editor/oh-my-cassette, 157 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Video Sync?

eternityspring (a GitHub user) maintains it in eternityspring/reelbench-skills, which has 868 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.