Communitygithub.com

eternityspring/video-shots

Break down a finished video into a shot-by-shot analysis table, including duration, shot size, category, camera movement, and visual content for each shot.

What is video-shots?

This skill, named 'eternityspring/video-shots', is a powerful tool for developers and AI agent users who need automated, granular video analysis. It takes a finished video and decomposes it into a detailed, shot-by-shot breakdown table. The key innovation is its strict division of labor: deterministic code handles all mechanical tasks (cut detection via ffmpeg scene detection, duration calculation by subtracting cut points, motion quantification as the median of per-frame differences), while the AI model is only asked to judge the four truly subjective aspects (shot size, category, camera movement, and visual content). Every AI judgment is immediately cross-checked by code—if a shot claims to have a pan, tilt, or zoom but motion analysis shows it is nearly static, the claim is flagged. Instead of flipping through single frames, this skill uses a contact sheet approach: it stitches the first and last frames of each shot into a large image, displaying 20+ shots per screen for easy A/B comparison of camera movement. For overlooked or extra cuts, the 'recut' command allows adding or removing cut points, automatically renumbering shots and recalculating durations; manual boundary edits that don't pass quality gates are rejected. The output includes a `shots.json` file, a Markdown shot table, and, most impressively, a single-page interactive analysis report. This report features an embedded player that syncs highlight with playback, clickable shot navigation, a shot rhythm strip, a searchable/filterable/sortable shot table in list or card view with side-by-side keyframes, clickable images to open full-size, distributions of shot sizes/categories/movements, character lists, quality gates, and JSON export. It is a single-file, zero-dependency (except Node.js and ffmpeg) HTML report that works offline when double-clicked. The skill enforces 14 deterministic quality gates, ensuring all checks are scriptable and consistent. It is ideal for film editors, video analysts, and AI agent workflows that require precise, automated shot logging without any API keys.

Works with✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/eternityspring/reelbench-skills/tree/HEAD/skills/video-shots

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

What does video-shots do?

拉片:将一条成片拆解为逐镜头的分析表——每个镜头的时长、景别、类别、运镜、画面。

分工刻在骨子里:能量化的都由代码完成(切点来自 ffmpeg 场景检测,时长是切点相减,运动量是逐帧差分的中位数),模型只判断它真正该判断的四件事(景别 / 类别 / 运镜 / 画面),然后每一条判断都被代码当场对账——声称推拉摇移却实测几乎不动,门直接拦。 看片走联系表(每镜起手帧 + 收尾帧各拼一张大图,一屏二十几个镜头,a/b 对照就是运镜),不是一张张翻。检测漏刀多刀用 recut 补刀并刀,自动重编号重算时长,手改边界过不了门。

产出 shots.json + Markdown 镜头表 + 单页交互式拉片报告:内嵌播放器(播放时同步高亮镜头、点镜头跳转)、镜头节奏带、可搜索可筛选可排序的镜头表(列表 / 卡片两种视图、首尾关键帧并排、点图开大图)、景别类别运镜分布、出场人物、质量门、导出 JSON。单文件零依赖,离线双击能开。

14 道质量门全部由脚本确定性检查。

零依赖、零 API key,只要 node 和 ffmpeg。

使用时机:当被要求"拉片"时。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

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 exif from video、scrub video。

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。

Related Skills