케이스 파일 설명자
증거로 구성된 조사: 누가, 어디서, 언제, 기록이 무엇을 말하는지, 하나의 빨간색 악센트는 항상 '이것이 증거다'를 의미합니다. 긴장감은 차분한 절제에서 비롯됩니다: 과장된 단어 없음, 빠른 컷 없음. 대신, 절대 멈추지 않는 카메라, 절대 침묵하지 않는 음악, 그리고 내레이터의 정확한 말에 맞춰 제시되는 사실들.
반드시 cstack animated-video 스킬 (Remotion, 먼저 읽을 것) 내에서 실행하고, 승인 중단점, 전체 품질 전달, 그리고 4개의 별도 QA 상태(기술적, 사실적, 창의적, 소유자 승인)를 유지하세요. 이 스킬은 아트 디렉션, 촬영 어휘, 오디오 레시피 및 작업 키트를 추가합니다.
- 복사할 작업 예제:
template/(30초 xz 백도어 데모:src/kit/casefile.tsx= 키트,src/scenes/*= 샷 유형별 하나의 씬,audio/score.py= 음악). 스크린샷:../../docs/case-file-explainer/.
모든 이야기에 맞게 새롭게 디자인하세요. xz 영상의 샷이 아닌, 메서드와 키트를 복사하세요.
명확성이 최우선입니다. 두 번째 케이스 파일(PHP 원격 코드 실행 이야기)은 완성도는 높았지만 따라가기 어려웠습니다. 어떻게 작동하는지를 설명하는 모든 영상은 decode-explainer 스킬(개념 사다리, 장난감 모델 우선, 화면의 범례, 화면당 하나의 아이디어, 정의된 후에만 전문 용어 사용, 타입 크기 ≥ 44px)로 계획하고, 이 스킬은 증거실 외관과 조사 비트에만 사용하세요.
1. 이야기: 조사의 뼈대
조사 이야기는 이해 관계가 실제이고 모든 주장에 출처가 있을 때만 효과가 있습니다.
- 훅 (0-3초): 이상 현상, 숫자가 포함된 사실로 명시 ("그의 로그인이 0.5초 느렸다"). 프레임 0은 표지: 세리프체 헤드라인과 증거 오브젝트, 절대 검정색이 아님.
- 추적 (중간): 장소와 사람을 통해 증거를 따릅니다. 비트당 2-4초: 날짜 도장, 그다음 사람 카드, 그다음 지도의 경로, 그다음 발견된 오브젝트.
- 공개: 드롭아웃 순간. 음악이 사라지고 하나의 빨간색이 점화됩니다.
- 기록: 실제 1차 출처(이메일, 증언, 보고서)를 인용하는 증언 카드, 그 아래에 저자와 날짜, 각주 번호 포함. 절대 인용을 조작하지 마십시오; 재구성은 "재구성"으로 표시하세요.
- 엔딩: 훅을 평결로 다시 진술하는 세리프체 제목 ("0.5초."), 빨간색 줄과 사건 번호. 유지했다가 의도적으로 페이드 아웃. 크리에이터가 원할 때만 말로 된 댓글 CTA 추가; CTA가 있으면 완전히 말로 전달.
- 숏 폼: 30-45초, 4-6개 샷. 롱 폼 (YouTube): "Chapter I" 세리프체 제목 카드가 있는 챕터.
- 모든 사실은 화면에 나오기 전에 출처와 확인 상태와 함께
NOTES.md에 넣으세요. 사실이 영화를 결정합니다.
교육용 변형 (보안 사고): 이 형식의 기본값
교육적으로 제작: 사람들이 그것이 무엇인지, 왜 발생했는지, 그리고 보호를 위해 무엇을 할 수 있는지 이해하도록 돕습니다. 뼈대 (~55-60초, 6개 샷):
- 표지/훅: 날짜 도장, 세리프체 사고명, 심각도 도장 및 CVE 태그, 모두 프레임 0에서 보임.
- 규모: 중요한 이유 (웹의 얼마나 많은 부분 또는 얼마나 많은 사용자), 출처가 있는 통계 및 각주 포함.
- 정의: 버그가 있는 위치의 파이프라인 다이어그램 (인터넷, 웹 서버, 엔진, 앱). 요청은 빨간색 경로를 따라 이동하고, 손상된 단계는 빨간색으로 변하며, 결과가 나타납니다 (예: 낯선 사람의 쉘 프롬프트). 화면에 전문 용어 정의 ("쉘 = 서버의 명령줄").
- 발생 원인: 흰색 점토 3D 은유로서의 근본 원인 (블록으로서의 메모리: 반쯤 쌓인 스택, 살아있는 포인터가 있는 해제된 유령 블록), 3줄의 양성 코드 카드 (
malloc/free). - 타임라인 + 현실 점검: 날짜가 찍힌 핀 (가장 오래된 영향받은 코드, 첫 번째 공격, 유출, 패치), 그다음 위험을 적절한 비율로 유지하는 1차 출처의 증언 카드.
- 보호: "확인 방법" 터미널 (
php -v및 수정된 버전), VO에 맞춰 번호가 매겨진 체크리스트, 엣지 케이스(EOL 버전, 임시 방편으로서의 WAF)에 대한 바닥글. - 평결 + CTA: 두 줄의 세리프체 평결 및 저장/팔로우 CTA.
교육 안전: 공격 클래스를 개념적으로 설명하세요. 절대 페이로드, 요청 본문, 오프셋 또는 단계별 악용을 보여주지 마세요. 수정 사항과 확인 방법을 명시하세요.
2. 외관 (아트 바이블)
| 요소 | 규칙 |
|---|---|
| 바탕 | 부드러운 방사형 리프트가 있는 차콜 #0d0d0e; 비네트와 미세 그레인 항상 켜짐 |
| 악센트 | 하나의 빨간색 #ff2d2a, 항상 글로우 (삼중 text-shadow + bloom). 빨간색 = 증거: 경로, 이상 현상, 용의자, 핵심 단어. 그 외에는 색상이 없음 |
| 콘텐츠 | 단색: 오프화이트 #f2f0ea, 딤 #8d8b86; 흑백 보관 사진 |
| 타입 | 세리프체 제목 (Source Serif 4 700); 타자기체 본문/레이블 (Courier Prime 700); 데이터/날짜 도장 (IBM Plex Mono 700, 자간 띄움 대문자) |
| 포토 카드 | 흑백 사진, 약간 찢어진 가장자리가 있는 흰색 테두리, 흰색 글로우; 대문자 모노로 역할 줄; 찢어진 흰색 가장자리가 있는 검은색 명찰. 알 수 없는 사람 = "알려진 사진 없음"이 있는 흐릿한 카드 |
| 시스템 맵 | 얇은 회색 선, 몇 개의 두꺼운 간선 도로와 곡선 고속도로가 있는 어두운 거리 지도, 큰 자간 띄움 세리프체 지구 워터마크 ("D E B I A N"); 경로는 흰색 헤드와 함께 빨간색 글로우로 그려짐; 핀은 포인터가 있는 명찰 |
| 디오라마 | 흰색 점토 3D 모델 (three.js): 밝은 회색 바닥의 무광 흰색 블록, 부드러운 그림자, 안개. 하나의 빨간색 오브젝트는 점화될 때 주변을 밝힘 |
| 인용 카드 | 큰 세리프체 인용 부호, 흰색 줄, 모노로 입력된 텍스트, 빨간색 키워드, 아래에 출처 줄과 날짜 |
| 날짜 도장 | 빨간색 글로우 시계 + "FRIDAY, MARCH 29, 2024" + 하나의 컨텍스트 줄 |
| 각주 | 출처가 명시된 주장이 화면에 있을 때마다 오른쪽 상단에 딤 모노로 [n] |
9:16 안전 영역: 콘텐츠를 x 60-960, y 240-1440 내에 유지하세요. 캡션은 y ~1470에, 모노체로 어두운 태그 위에, 키워드는 빨간색으로 위치합니다. 절대 얼굴 위에 배치하지 마세요.
3. 모션
- 하드 컷 거의 없음. 이 레지스터의 긴 다큐멘터리는 10분 동안 몇 번만 컷합니다. 샷은 콘텐츠를 통해 연결: 빨간색 도장 속으로 들어가면 그것이 지도의 시작 노드가 됨; 지도의 빨간색 노드 속으로 들어가면 그것이 빨간색 3D 블록이 됨.
- 카메라는 절대 멈추지 않음: 느린 푸시인 (샷당 5-8 %), 컨텍스트를 드러내기 위한 풀아웃, 경로 추적 팬. 모든 움직임을 in/out 이징; 로그 공간에서 줌.
- 카드는 감쇠 스프링으로 팝 (스케일 0.82에서 1); 태그는 18px 떨어져 제자리에 떨어짐; 텍스트는 타자기 입력됨.
- 빨간색 경로는 내레이터의 속도로 그려짐: 헤드는 각 노드의 단어에 도달.
- 1.5-3초마다 무언가를 변경하고 각 히트를 단어의 2프레임 이내에 맞추세요.
4. 오디오 레시피
- 음악은 절대 멈추지 않음. 처음 5분 동안 -45dB 미만의 침묵 없음. 단조의 다크 앰비언트 드론/패드; 음악 전용 콜드 오픈 (롱 폼 ~12초, Reels ~0초).
- 내레이션 위에, 음악은 약 10dB 아래. VO 엔벨로프에서 덕킹 (사이드체인 스타일). 0.6초 이상의 VO 공백에서 음악을 키우고, 공개 단어 직전에 음악을 드롭아웃.
- 롱 폼 목표: 약 -16 LUFS 통합, LRA 약 6 LU. 차분하고 밀도 높으며, 역동적이지 않음. Reels는 -14 LUFS / -1.5 dBTP로 제공.
- SFX는 드물고 물리적: 입력된 텍스트에 대한 타이핑 틱, 카드와 태그가 착지할 때의 부드러운 쿵, 경로가 그려지는 동안의 데이터 차터, 공개 시점의 서브 드롭, 평결 시점의 유리 핑 또는 차임.
- 음성: 차분하고 낮고 절제된 내레이터: 짧은 선언문, 사실 뒤에 멈춤. 크리에이터의 자체 녹음을 먼저 사용; 음성 복제는 지출 승인이 필요. TTS 대체는 초안 전용이며 레이블이 지정되어야 함.
- 예제의
audio/score.py는 단어 타이밍에서 전체 음악과 믹스를 구축합니다.
5. 파이프라인
- 사실과 출처는
NOTES.md에 입력; 스크립트와 비트 시트 승인 받기 (animated-video 중단점 1). - VO, 그다음
words.json(Whisper 또는 TTS 단어 경계);audio/fix_words.py에서 토큰 분할 수정. cue()에서src/lib.ts의 액트 정의; 동일한 큐를 사용하여audio/score.py로 음악 구축.src/kit/casefile.tsx및 씬 패턴 복사;snap.sh로 키프레임 보드 렌더링 (중단점 2: 스타일 프레임/키 프레임).--scale=1.3333333333333333(1440x2560)으로 렌더링, 그다음 -14 LUFS로 투패스 loudnorm, H.264 High, CRF 14, maxrate 24M, yuv420p 제한 범위, BT.709 태그, faststart.- QA: 전체 디코드, blackdetect, 라우드니스, 콘택트 시트, 모든 전환 주변의 조밀한 프레임, VO의 Whisper. 4가지 QA 상태를 별도로 보고.
첫 번째 버전을 만들면서 발견한 문제점
- 전체 스크립트 edge-tts 실행은 느리게 진행됨 (180단어에 88초).
scripts/tts_lines.py(라인당 하나의 TTS 호출, 제어된 간격, "|"는 섹션 시작)를 사용한 다음scripts/squeeze.py(0.45초 이상의 일시 중지를 단축하고 단어 타이밍 재매핑): 68.6초가 58.5초가 됨. cue("Before"),cue("PHP")및 기타 반복되는 단어는 오류를 발생시킴. 2단어 구문을 사용하거나nth를 전달.- 3D 와이드 샷에서 단일 블록 행은 프레임을 비워둠. 깊이를 위해 뒷 행 (z = -1.6, -3.2, -4.8)을 추가.
- 다음 비트 약 6프레임 전까지 버그 슬롯에 카메라 고정. 더 일찍 이동하면 문장 중간에 주제가 프레임 밖으로 밀려남.
- 오버레이 카드는 최소 1.5초 동안 화면에 표시되어야 함. 마지막 단어가 아닌 이전 단어에서 시작.
- 공유 브라우저를 통해 탐색은 현재 탭(사용자 자신의 탭 포함)에 있을 수 있음. 먼저 자신의 탭을 선택.
- edge-tts는 "March 2024"를 하나의 단어 경계로 반환.
chunk()전에 분할하거나 캡션이 오류를 발생시킴. cue("It")및 기타 반복되는 단어는nth또는 더 긴 구문(cue("It had"))이 필요.- 방사형 빨간색 큐브와 블룸 마감은 주황색/노란색으로 과포화됨. 방사형을 0.5 이하로 유지하고, 기본 색상을 어둡게 (
#b8120c) 유지하고 씬 블룸을 0.5로 유지. - 세로 3D에서 타워는 카드 밴드(y 300-750)와 캡션(y 1470) 사이에 위치해야 함. 6단위 높이 모델의 경우 카메라를 약 23단위 뒤로 당김.
- 터미널의 HTML 줌은 약 1.12x 이상에서 가장자리를 자름. 모서리가 아닌 판독값에 줌.
- 약 300px보다 넓은 맵 노드 레이블은 프레임 밖으로 나감. 노드 아래 중앙에 배치.