Finding video
제품은 웹사이트가 아니라 발견된 사실입니다. 영상은 사실을 입증하는 실제 자료를 크고 선명하게 보여주며, 한 가지를 고정시켜 시청자가 변화를 알아차리게 하고, 사람들이 댓글로 답하게 될 질문으로 끝납니다. 사이트는 마지막에 출처로만 나타납니다.
이 방식은 Cluj 위성 클립(같은 장소, 1968 → 2025, 전체 화면, 연도 레이블, 두 줄, 웹사이트 없음)에서 비롯되었으며, 사이트를 돌아다니는 것보다 훨씬 효과적이었습니다.
제공하는 결과물
- 두 가지 컷, 1080×1920, 30 fps, H.264 + AAC, 15–25초: A는 질문이나 첫 이미지로 시작하여 반복됩니다. B는 결과물로 바로 시작됩니다. 두 컷의 커버 이미지도 포함됩니다.
post.txt: 파일 및 사양, 게시 참고 사항, 주장 표(화면의 모든 숫자와 줄 → 해당 소스 파일 또는 URL), 이미지 크레딧, 사운드 소스. 사용자가 요청하지 않는 한 게시글 텍스트는 포함하지 않습니다(에이전트는 게시글을 작성하지 않습니다).- 영상은 저장소 외부 폴더(
~/Videos/<project>-finding-<date>/)에 저장됩니다. 스토리보드, 스크립트, 자료 크롭은 프로젝트의reports/finding-<date>/폴더에 저장되며, README 파일에 무엇이 있는지, 미디어 위치, 스크립트 요구 사항이 설명됩니다. - 게시는 사용자의 몫입니다. 절대 사용자를 대신하여 게시하지 마십시오.
워크플로우: 긴 렌더링 전 세 번의 간편한 승인
- 발견. 프로젝트 자체 데이터에서 2–4개의 후보 발견 사항을 나열하고, 각각의 긴장감과 분모를 기재합니다. 끌림(돈, 도시, 공통된 불편)이 있는 것을 선택합니다. 모든 숫자는 해당 페이지가 아닌 데이터를 기준으로 확인합니다.
- 자료. 발견 사항에 대해, 가장 생생하게 보여주는 실제 자료를 찾습니다: 저장된 메뉴 캡처, 위성 프레임, 문서, 사진, 차트 형태의 데이터 자체 등. 각 항목의 권리를 확인합니다(
references/craft.md, Material 참조). 크롭은 캡처된 그대로 정확하게 유지합니다. 수정하거나 가격을 추가하지 않습니다. - 스토리 확인 (승인 1). 비트 표: 시간, 화면을 채우는 내용, 캡션, 사운드, 각 비트의 주장과 그 출처. 상수(변하지 않는 것)와 장치(한 문장으로 말할 수 있는 하나의 아이디어)를 명명합니다. 사용자의 승인 또는 변경 요청을 기다립니다.
- 룩 확인 (승인 2). 페이지의 현재 디자인을 사용합니다. 사이트 소스에서 색상, 서체, 차트 스타일을 읽습니다. 페이지는 재설계될 수 있으므로(2026-11-06) 매번 확인합니다. 2–3개의 전체 크기 프레임을 렌더링하고(
frames.py --stills또는seek_capture.mjs ... stills) 보여줍니다. 프레임별로 승인을 기다립니다. - 스토리보드 (승인 3).
scripts/storyboard.py로 그립니다. 비트당 하나의 주요 프레임을 실제 크기 비율로, 시간, 사운드, 다음 비트로의 전환과 함께 표시합니다. 보여주고 승인을 기다립니다. 사용자가 이 확인을 요청했습니다. 이전에는 비디오를 렌더링하지 마십시오(2026-11-06). - 빌드. 렌더링한 후 아래 검사를 실행하고 직접 모든 시트를 확인합니다.
- 전달.
post.txt, 보드, 그리고 확인하지 못한 사항(최소한 귀로 사운드 확인)과 2초 홀드, 시청 시간, 댓글이 최종 판결임을 사용자에게 알립니다.
사용자가 해당 비디오에 대해 명시적으로 허락한 경우에만 승인 단계를 건너뜁니다.
렌더러
자료에 따라 선택합니다. 모두 1080×1920 PNG 프레임을 쓰고 tv-range BT.709 yuv420p로 인코딩합니다.
| 자료 | 렌더러 | 방법 |
|---|---|---|
| 사진, 스캔, 위성 프레임, 문서 크롭 | scripts/frames.py (위성 클립에서 가져옴) | 전체 화면 이미지를 합성하는 Python frame_fn(t), 캡션 뒤에 shade_top, 캡션용 overlay/text, 사운드 이벤트용 synth; render()가 인코딩 |
| 움직이는 차트 또는 숫자 | window.seek(t)가 있는 HTML 페이지 (아래 차트 방법) + scripts/seek_capture.mjs | 확인 프레임의 경우 node seek_capture.mjs <page.html> <out> stills, 비디오 프레임의 경우 frames.encode에서와 같이 ffmpeg로 인코딩 |
| 삽화 장면 (분위기, 은유) | 선택 사항: cth9191/animate (MIT), 서드파티 스킬 | 설치 전에 물어보세요 |
차트 방법 (charlie947/motion-graphics-skills animated-chart, MIT에서 가져옴): 네 가지 상태 — 시작, 한 가지 변경 (아무것도 사라지고 교체되지 않음), 헤드라인 값이 레이블로 표시된 유지, 반복에 끊김이 없도록 복귀. 모든 프레임은 t만으로 계산됩니다. 제목, 레이블, 축은 절대 움직이지 않습니다. 숫자를 반올림, 재포맷 또는 추가하지 마십시오. 빌드 후 0, 1, 2, 4, 7초에서 프레임을 캡처하여 비디오 전에 겹치거나 잘린 텍스트가 없는지 확인합니다.
frames.py에는 numpy와 Pillow가, seek_capture.mjs에는 Playwright가 필요하며(해결할 수 없는 경우 PLAYWRIGHT=를 해당 node_modules/playwright로 설정), ffmpeg가 필요합니다.
검사
python3 ../demo-video/scripts/check.py <out dir> --name <name>(이 스킬의 폴더에서 실행) (컷 이름을<name>-A.mp4/<name>-B.mp4로 지정): 크기, 프레임 속도, 색상, 음량, 루프 SSIM, 안전 영역 및 연락처 시트. 보고만 하고 실패하지 않습니다. 모든 줄을 읽고 각 숫자를 대상과 직접 확인합니다.- 안전 영역 시트를 확인합니다. 빨간색 아래에 캡션, 숫자 또는 소스 줄이 없어야 합니다.
- 연락처 시트에서 모든 캡션을 휴대폰 크기(360px 너비)로 읽습니다.
- 각 주요 비트의 주인공을 명명하고 프레임 높이의 최소 40%를 차지하는지 확인합니다. 그리고 전환점을 명명합니다(
references/craft.md참조). 어떤 비트가 누락되었는지 말합니다. - 주장 표: 화면의 모든 숫자가 파일로 추적됩니다. 모든 비교는 그 기준(어떤 피자, 어떤 날짜, 얼마나 많은지)을 명시합니다.
- 비트별로 사운드를 측정합니다. 전체 범위와 250Hz 이상(휴대폰 스피커가 재생하는 범위) 모두에서 측정합니다. 두 범위 모두에서 결과물이 가장 커야 하며, 거의 무음 구간은 조용해야 합니다. 그런 다음 가능하면 한 번 들어보고, 그렇지 않으면 듣지 못했다고 말합니다.
frames.mix를 사용하여 결과물에 자체 레벨을 부여한 다음frames.level을 사용합니다. 피자 파일럿에서는 오래된 컴프레서가 히트보다 험을 더 크게 남겼습니다.
주의사항
-
숫자 옆에 있는 캡션은 단위를 상속받습니다. "4 lei" 아래의 "가장 큰 차이"는 lei로 읽힙니다. "în procente"라고 말하거나 생략하십시오. (Treponti는 퍼센트로 가장 컸고, La Crosta는 lei로 가장 컸습니다.)
-
앱의 제품 사진이나 UI를 재사용하지 마십시오 (Wolt 및 Glovo 약관은 이미지 권리를 보유합니다). 목록을 자체 중립 카드에 기록하고 날짜를 기입하거나, 증거로 필요한 텍스트만 크롭하여 출처를 밝히십시오.
-
AI 생성 영상은 실제 장소나 실제 가격에 관한 비디오에서 사용하지 마십시오. 조작된 것으로 읽힙니다. 분위기는 사용자 자신의 영상, 공개 도메인 아카이브(각 항목의 권리 확인) 또는 명확한 삽화 스타일에서 가져옵니다.
-
ElevenLabs "Chris"는 루마니아어 숫자를 잘못 읽습니다. 숫자로 표시해도 마찬가지입니다 (피자 비디오에서 49와 67, 허가 비디오에서 88, 2026-11-06). 전사는 이를 감지하지 못합니다. 모든 음성 숫자를 듣고 믹싱 전에 사용자에게 들어보도록 하십시오.
-
게시 전에 페이지가 라이브 상태여야 하며 데이터가 변경된 경우 숫자를 다시 확인해야 합니다.
-
합성 음성은 숫자를 잘못 읽으며, 전사로는 이를 잡아낼 수 없습니다. "optzeci" 철자가 "opt zece"로 나왔고, 전사본에는 여전히 "Optzeci"라고 나와 있었으며, 숫자로 된 테이크는 정확했습니다. 같은 숫자의 다음 테이크는 다시 틀리게 나왔으므로, 생성은 변동됩니다. 사용자가 테이크를 승인하면 해당 오디오를 스플라이스하고 재생성하지 마십시오. 오직 인간의 귀만이 발음을 확인할 수 있습니다(2026-11-06).
규칙의 출처
references/craft.md에는 제작 기술(발견 비트 시트, 스토리 규칙, 캡션, 자료 및 권리, 사운드)이 포함되어 있습니다. 출처: Cluj-Napoca의 위성 이미지 클립(2026-11-03), demo-video의 제작 노트, cth9191/animate의 스토리 문법(MIT), charlie947의 animated-chart 및 vox-explainer 규칙(MIT), StewdioAI/blank-page의 프레임 및 턴 규칙(MIT), Codex 상담(2026-11-04).