Communitygithub.com

eternityspring/video-shots

영상 분석 도구: 완성된 영상을 개별 샷별 분석표로 분해합니다. 각 샷의 길이, 샷 크기, 카테고리, 카메라 움직임, 화면 구성을 추출합니다. 작업 분담이 명확하며, 코드가 정량적 계산(ffmpeg 장면 감지, 프레임 차분 중앙값)을 담당하고, 모델은 샷 크기/카테고리/카메라 움직임/화면 구성의 4가지 판단만 수행합니다. 모든 판단은 코드에 의해 즉시 검증되며, 주장과 실제 움직임이 불일치하면 거부됩니다. 연속적인 샷 검토를 위해 연락처 시트(각 샷의 시작 및 끝 프레임으로 구성된 큰 이미지)를 사용하며, 누락 또는 중복 컷은 recut으로 수정하고 자동으로 번호가 재지정되고 길이가 재계산됩니다. 출력물: shots.json, Markdown 샷 테이블, 단일 페이지 대화형 분석 보고서(내장 플레이어, 동기화된 샷 하이라이트, 검색/필터/정렬 가능한 샷 테이블, 샷 크기/카테고리/카메라 움직임 분포 등). 제로 의존성, 제로 API 키, Node.js와 ffmpeg만 필요합니다.

video-shots란 무엇인가요?

`eternityspring/video-shots`는 완성된 비디오를 개별 샷으로 분해하고 각 샷의 지속 시간, 샷 크기, 카테고리, 카메라 움직임 및 화면 구성을 추출하는 AI 기반 영상 분석 도구입니다. 이 도구의 핵심 철학은 명확한 작업 분담입니다. 코드가 ffmpeg 장면 감지 및 프레임 차분을 통한 정량적 계산(컷 포인트, 지속 시간, 움직임 양)을 처리하고, AI 모델은 샷 크기, 카테고리, 카메라 움직임, 화면 구성에 대한 의미론적 판단만 수행합니다. 각 AI 판단은 코드에 의해 즉시 검증되어(예: '줌'으로 분류되었지만 움직임이 거의 없는 샷은 거부) 정확성을 보장합니다. 분석 결과는 `shots.json`과 마크다운 샷 테이블뿐만 아니라, 단일 페이지 대화형 HTML 보고서로도 제공됩니다. 이 보고서에는 내장 비디오 플레이어(샷 동기화 하이라이트 및 이동), 샷 리듬 스트립, 검색/필터/정렬 가능한 샷 테이블(목록 및 카드 보기), 샷 크기/카테고리/카메라 움직임 분포 차트, 등장 인물, 품질 게이트 등이 포함됩니다. 모든 14개의 품질 게이트는 스크립트에 의해 결정론적으로 확인됩니다. 이 도구는 완전히 오프라인에서 작동하며, Node.js와 ffmpeg 외에는 의존성이 없고 API 키가 필요하지 않습니다. 사용자는 '拉片'(영상 분석)을 요청할 때 이 도구를 사용하도록 에이전트를 트리거할 수 있습니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/eternityspring/reelbench-skills/tree/HEAD/skills/video-shots

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

video-shots은(는) 무엇을 하나요?

영상 분석: 완성된 영상을 개별 샷별 분석표로 분해합니다——각 샷의 길이, 샷 크기, 카테고리, 카메라 움직임, 화면 구성. 작업 분담이 명확합니다: 정량적 작업은 모두 코드가 처리합니다(컷 포인트는 ffmpeg 장면 감지에서, 길이는 컷 포인트 차이에서, 움직임 양은 프레임 차분 중앙값에서), 모델은 실제로 판단해야 할 네 가지(샷 크기 / 카테고리 / 카메라 움직임 / 화면 구성)만 판단합니다. 그리고 모든 판단은 코드에 의해 즉시 검증됩니다——줌인/줌아웃/팬/틸트를 주장하지만 실제 측정에서 거의 움직이지 않으면, 게이트가 직접 차단합니다. 영상 검토는 연락처 시트(각 샷의 시작 프레임 + 종료 프레임을 각각 큰 이미지로 구성, 한 화면에 20개 이상의 샷, a/b 비교가 카메라 움직임)를 사용합니다. 한 장씩 넘기지 않습니다. 누락 또는 중복 컷 감지는 recut으로 컷을 추가 및 병합하고, 자동으로 번호가 재지정되고 길이가 재계산되며, 수동으로 경계를 수정해도 게이트를 통과할 수 없습니다. 출력물: shots.json + Markdown 샷 테이블 + 단일 페이지 대화형 분석 보고서: 내장 플레이어(재생 시 샷 동기화 하이라이트, 샷 클릭 시 이동), 샷 리듬 스트립, 검색/필터/정렬 가능한 샷 테이블(목록 / 카드 두 가지 보기, 시작 및 종료 키프레임 나란히 배치, 이미지 클릭 시 확대), 샷 크기/카테고리/카메라 움직임 분포, 등장 인물, 품질 게이트, JSON 내보내기. 단일 파일, 제로 의존성, 오프라인에서 더블 클릭으로 열기 가능. 14개의 품질 게이트는 모두 스크립트에 의해 결정론적으로 확인됩니다. 제로 의존성, 제로 API 키, Node.js와 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。

관련 스킬