Communitygithub.com

frameproof — 시청 증명 비디오 분석

에이전트가 비디오를 사각지대 없이 시청하고, 타임코드로 증명합니다. 오프라인, API 키 불필요.

frameproof — 시청 증명 비디오 분석란 무엇인가요?

**frameproof**는 AI 에이전트(Claude Code, Cursor 등)가 비디오 콘텐츠를 분석할 때, 본 내용을 타임코드와 함께 증명 가능하도록 돕는 오픈소스 도구입니다. 오프라인에서 작동하며 별도의 API 키가 필요 없어 비공개 영상 분석에 적합합니다. 핵심 기능은 크게 3가지입니다: (1) 비디오 인덱싱 - 비디오를 프레임과 오디오로 분해해 탐색 가능한 색인 생성, (2) 텍스트 및 OCR 검색 - 화면 속 텍스트와 음성을 동시에 검색, (3) 검증 시스템 - 에이전트가 작성한 분석 결과의 타임코드와 프레임 참조를 기계적으로 검증해 허위 정보를 방지합니다. 주요 워크플로우는 '인덱싱 → 검색 → 필요한 프레임만 확인 → 증명된 답변' 순서로, 시각적 토큰 소비를 최소화합니다. 특히 `verify` 명령어는 프레임 존재 여부와 타임코드 일치를 자동 점검하며, `--plan` 옵션을 통해 독립적인 서브 에이전트에게 교차 검증을 위임할 수 있습니다. macOS에서는 내장 OCR로 화면 텍스트를 추출하고, Apple Silicon에서 빠른 음성 인식(mlx-whisper)을 지원합니다. Linux/Windows는 자체 OCR 엔진 연결이 가능하며, 모든 플랫폼에서 ffmpeg와 numpy만 있으면 기본 작동합니다.

지원 대상~Claude Code✓Codex CLI~Cursor
npx skills add edvardgrishin27/frameproof

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

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

문서

frameproof — 비디오 시청 및 증명 방법

핵심 규칙

화면에 보이지 않은 것은 절대 '보였다'고 말하지 마세요.

도구는 커버리지를 정직하게 출력합니다. 리포트에 '프레임 없음' 구간이 있다면, 해당 구간에 대해서는 솔직하게 '이 구간에는 프레임이 없으며, 오디오로는 다음과 같습니다'라고 말하세요. 추측을 관찰인 양 제시하면 전체 분석의 신뢰도가 떨어집니다.

화면에 대한 모든 주장은 [MM:SS / fNNNN] 형식의 타임코드를 포함해야 합니다. 이는 장식이 아닙니다: frameproof verify가 인덱스를 기반으로 모든 타임코드를 검증합니다. 허위 링크는 모델 없이도 산술적으로 적발됩니다.

작업 순서

1. 인덱스 생성

frameproof index "<URL 또는 경로>" --ocr

커버리지 리포트가 출력됩니다. 먼저 이를 확인하세요: 총 프레임 수, 최대 간격, 프레임이 없는 구간 등.

인덱스 경로는 출력 마지막 줄에 표시되며, 이후 명령어에서 --out으로 사용합니다.

--ocr는 macOS에서 오프라인으로 프레임 내 텍스트를 인식합니다. 이를 통해 화면을 텍스트 검색 가능하게 만들어, 명령어, 파일명, URL 등을 이미지 없이 찾을 수 있습니다. 원본 해상도의 별도 복사본에서 인식되며, 표시는 가볍게 유지됩니다.

유용한 옵션: --max-gap 10 (더 촘촘한 커버리지), --max-frames 400 (긴 영상), --lang ru (자막이 없을 경우 음성 인식 언어).

영상과 함께 준비된 자막 파일이 있다면 --subs 자막.srt를 사용하세요. 음성 인식보다 정확하고 빠릅니다. macOS가 아닌 경우 자체 OCR 엔진을 연결할 수 있습니다: --ocr-command "<프로그램>" (이미지 경로를 받아 경로<TAB>텍스트 형식으로 출력).

2. 맵 읽기

cat <인덱스>/index.json

작은 파일이므로 전체를 읽으세요. 영상 길이, 프레임 수, 트랜스크립트 출처, 그리고 가장 중요한 coverage 블록이 포함되어 있습니다.

3. 이미지 대신 텍스트로 검색

frameproof search "<검색어>" --out <인덱스>

음성과 화면 텍스트를 동시에 검색합니다. 타임코드가 포함된 결과를 반환합니다. 이미지는 전혀 없음 — 시각적 토큰 0개. 대부분의 질문은 여기서 해결됩니다.

검색은 서브스트링(트라이그램) 기반이므로, 러시아어 격변화에 영향을 받지 않습니다.

더 복잡한 필터링이 필요하면 직접 grep하세요:

grep -i "docker" <인덱스>/segments.jsonl | head
grep -i "npm" <인덱스>/frames.jsonl | head

4. 반드시 필요할 때만 프레임 확인

frameproof frames --at 4:12 --out <인덱스>          # 특정 시점
frameproof frames --ids f0043,f0044 --out <인덱스>  # 특정 프레임

이미지를 반환하는 유일한 명령어입니다. 출력된 경로를 Read로 읽으세요.

예산: 한 번에 4~8프레임. 1280×720 프레임 하나는 약 1196 시각적 토큰이 소모됩니다. 1시간 영상의 모든 프레임을 보여주면 수십만 토큰이 사용되므로, 그렇게 하지 마세요.

5. 증명과 함께 답변

화면에 대한 주장 형식:

18:38에 모델 라우팅 테이블이 표시됩니다: MAIN — 비싸고 똑똑함, AUXILIARY — 저렴하고 빠름. [18:38 / f0097]

사용자가 기사나 요약을 요청했다면, frames.jsonl의 프레임 경로를 그림 자료로 삽입하고 타임코드를 함께 표시하세요.

6. 자기 검증 — 요청 시

[MM:SS / fNNNN] 타임코드는 장식이 아닌 검증 가능한 링크입니다. 기계적 감사는 무료이며 즉각적입니다. 두 문단 이상의 분석에는 항상 실행하세요:

frameproof verify <분석파일.md> --out <인덱스>

의미는 평가하지 않고, 링크의 무결성만 확인합니다: 프레임 존재 여부, 타임코드 일치 여부, 프레임 없는 구간에 속하는지 여부, 해당 프레임이 실제로 요청되었는지 여부, 인용된 문자열이 프레임 텍스트나 근접한 음성에 있는지 여부.

FAIL은 깨진 링크이므로 수정해야 하며, 논의 대상이 아닙니다. WARN은 프레임을 열어 육안으로 확인할 신호입니다.

7. 맹검 교차 검증 — 명시적 요청 시에만

사용자가 "분석을 확인해줘", "재확인해줘", "이걸 정말 봤어?"라고 말할 때만 경쟁적 검증을 실행하세요.

frameproof verify <파일> --out <인덱스> --plan

이 명령어는 JSON 형식의 작업 목록을 출력합니다. 이를 서브 에이전트 frameproof-adversary 에게 한 번에 위임하세요 (주장별로 별도 에이전트를 만들지 말고, 하나의 에이전트로 충분).

서브 에이전트에게 전달할 내용: JSON에 포함된 번호가 매겨진 주장 목록과 프레임 경로만 전달하세요.

절대 전달하지 말아야 할 내용:

  • 사용자가 제기한 질문
  • 왜 그런 결론을 내렸는지에 대한 자신의 추론
  • 분석의 나머지 텍스트
  • 어떤 답변이 올바르다고 생각하는지에 대한 힌트

서브 에이전트는 대화 기록을 볼 수 없습니다 — 이것이 보장됩니다. 하지만 위임 메시지는 당신이 작성하며, 이것이 유일한 정보 유출 경로입니다. 예상 답을 아는 검증자는 쓸모가 없습니다: 그냥 확인할 뿐입니다.

판정 처리 방법:

  • CONFIRMED — 그대로 유지.
  • REFUTED — 삭제하지 말고 표시: [두 번째 검증에서 확인되지 않음: 이유]. 반증자는 실제로 올바른 주장에서도 예상보다 자주 오류를 범하므로, 최종 판단은 사용자가 내립니다.
  • UNSUPPORTED — 솔직하게 말하세요: 프레임에서 이를 확인할 수 없으며, 결론은 오디오나 인접 시점에 기반합니다.

매 분석 후 자발적으로 이 검증을 실행하지 마세요. 토큰과 시간이 소모되며, 기계적 검증 단계가 대부분의 문제를 무료로 잡아냅니다.

금지 사항

  • 트랜스크립트만으로 영상을 요약하면서 '화면 분석'이라고 말하지 마세요. 음성과 화면은 다릅니다: 영상에서 사람이 "오픈라우터"라고 말해도, 화면에는 openrouter/pareto-code (min_coding_score 0.65)라고 쓰여 있을 수 있습니다. 후자는 프레임과 OCR에서만 확인 가능합니다.
  • '만약을 대비해' 프레임을 무더기로 로드하지 마세요. 먼저 검색하고, 필요한 프레임만 정확히 확인하세요.
  • OCR 결과를 코드의 정확한 텍스트로 제시하지 마세요. 인식은 구두점을 혼동합니다: [main이 Imain으로 읽힐 수 있습니다. OCR은 프레임을 찾기 위한 것이며, 실제 내용은 육안으로 확인하세요.
  • 보이지 않는 구간에 대해 침묵하지 마세요. 커버리지가 100% 미만이면 사용자에게 알리세요.

누락된 것이 있을 경우

frameproof doctor

설치된 것과 누락된 것을 보여줍니다. ffmpeg와 numpy는 필수입니다; yt-dlp는 URL에만 필요; 음성 인식은 mlx-whisper(Apple Silicon에서 빠름) 또는 openai-whisper(모든 환경)를 사용합니다. 어떤 기능에도 API 키가 필요하지 않습니다.

관련 스킬