Communitygithub.com

evgenspm/launchfilm

렌더링된 런치 필름을 QA합니다. '비디오 QA', '렌더 확인', '게시 준비 완료?', '필름 리뷰', '왜 저렴해 보일까?', '캡션/세이프 존/라우드니스 확인' 등의 작업에 사용하며, 모든 렌더 후 패키징 전에 수행합니다.

launchfilm란 무엇인가요?

이 기술은 AI 에이전트가 `launchfilm` CLI의 자동 보고서(`npx launchfilm qa <slug>`)를 읽고, 중요한 타임스탬프의 콘택트 시트와 스틸을 분석한 후, 각 시간별 텍스트 가독성, 명암비, 플랫폼 세이프 존, 라우드니스(−14 LUFS, −1.5 dBTP), ffprobe 인코딩 사양, 블랙 프레임 및 정지 프레임, 비트에 맞춘 컷 편집, 그리고 12가지 아마추어 실수를 차단 점검합니다. 지원 플랫폼은 Claude Code, Cursor 등이며, 작업 결과는 `qa/<slug>/QA.md` 파일로 기록됩니다. 모든 검사는 파일 경로나 측정값을 인용하며, 수행되지 않은 검사는 'NOT CHECKED'로 표시하고 절대 'PASS'라고 쓰지 않습니다. 발견된 문제는 scene-build(영상 보정)나 sound(오디오 믹스)에 전달하여 수정하고, 최대 2회 루프 후에도 남은 FAIL은 사용자에게 보고합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/evgenspm/launchfilm/tree/HEAD/skills/film-qa

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

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

문서

film-qa

당신은 프레임과 숫자를 확인하지, 의도를 확인하지 않습니다. PASS에는 증거가 필요합니다: 당신이 연 파일 경로나 측정한 숫자여야 합니다. 그 외의 모든 것은 NOT CHECKED: <이유>입니다. 확인하거나 측정하지 않은 것에 PASS라고 절대 쓰지 마십시오.

경로 (launch-video/ 또는 launchfilm 저장소의 studio/ 기준): 필름 소스 films/<slug>/ (film.json, STORYBOARD.md, BRIEF.md), 렌더 out/<slug>/, QA qa/<slug>/ (CLI가 report.md를 작성합니다; 당신은 그 옆에 QA.md를 작성합니다). 정확한 CLI 플래그: npx launchfilm <cmd> --help. 테스트된 구문의 명령어: references/commands.md.

절차

  1. 자동 실행. npx launchfilm qa <slug> → qa/<slug>/report.md를 먼저 읽습니다 (시트, ffprobe, 라우드니스, 자동 검사). 측정된 숫자를 증거로 QA.md에 복사합니다; 이미 측정된 것을 다시 측정하지 마십시오.
  2. 시트. 보고서에 나열된 모든 콘택트 시트를 엽니다 (또는 npx launchfilm sheet <slug>). 모든 셀을 읽습니다. QA.md에 연 파일 목록을 기록합니다 (T12 증거).
  3. 스틸. npx launchfilm still <slug> <t> --preset <id> 명령어를 각 프리셋에 대해 실행합니다: 모든 샷 경계 + 6 프레임, 모든 텍스트 시작점 + (유지 시간)/2, 프레임 0, 마지막 프레임, 그리고 동결 또는 검은 프레임 스캔이 플래그한 모든 간격. 또한 히어로 텍스트 프레임에 대해 --scale 0.25 (16:9에서 480×270)로 하나의 스틸을 추가로 생성합니다: X 타임라인 미리보기. 각 PNG를 읽습니다.
  4. 측정 보고서가 측정하지 않은 항목: 라우드니스, 트루 피크, 검은 프레임, 동결 간격, 비트 대비 컷 시간, 텍스트 뒤 명암비, 세이프 존, 캡션 줄 길이. 명령어는 references/commands.md에 있습니다.
  5. 차단 점검 아래 T1–T12, 그 다음 전달 점검 D1–D16. 각 항목은 PASS / FAIL / NOT CHECKED + 증거 + 규칙을 받습니다.
  6. qa/<slug>/QA.md 작성 references/qa-template.md를 기반으로 합니다.
  7. 수정 루프. FAIL이 있으면: 발견 내용을 scene-build 또는 sound에 프레임 번호와 함께 전달하고, 영향을 받은 범위만 다시 렌더링한 후 (npx remotion render … --frames=<a>-<b> 또는 CLI 동등 명령어), 해당 항목을 다시 확인합니다. 최대 2회 루프; 그 후에도 남은 FAIL은 스틸을 첨부하여 사용자에게 보고합니다. 새 증거 없이 FAIL을 PASS로 절대 낮추지 마십시오.

차단 점검: 12가지 실수 (craft/00)

ID통과 조건증거
T1 정지0.6초 이상의 동결 간격 없음 (엔드카드 안정화 ≤ 3초 제외); 플래그된 모든 간격은 시작과 끝의 스틸로 드리프트 또는 움직임을 확인freezedetect 출력 + 간격당 2개 스틸
T2 기본 이징films/<slug> 내 grep G1 (scene-build) 결과 없음; CSS 전환 없음grep 출력
T3 한꺼번에모든 ≥ 3개 형제 그룹이 지연되어 진입 (시트 셀에 부분 상태가 보이거나 코드에 지연 ≥ 1프레임); 그룹 진입 ≤ 24프레임시트 셀 참조 또는 코드 줄
T4 하나의 속도20초 초과 필름은 ≥ 1개의 리듬 변화(침묵, 급컷 블랙, 팔레트 전환, 홀드 ≥ 중간 샷 길이의 2배)가 있음; 런치 모드: 모든 컷이 비트의 ±2프레임 이내film.json 경계 vs beats.json; 감지된 컷
T5 사운드모든 film.json 시각적 이벤트에 sfx가 있거나 VO/음악에 의해 커버됨; VO 아래로 음악이 덕킹; 계획된 곳에 진정한 침묵사운드 유무별 이벤트 수; VO 창 vs 음악 전용 창의 라우드니스
T6 레이블로서의 텍스트메시지가 텍스트일 때 히어로 텍스트 ≥ 프레임 높이의 8% (문장 10%); 모든 텍스트 홀드 ≥ 0.2 × (단어 수 + 1)초; ≤ 3줄; 캡션 ≤ 2줄항목별 표
T7 평평한 느낌런치 모드: 그레인 + 비네트 있음; 섹션당 하나의 명명된 처리 방식; 제품 모드: 헤어라인, 소프트 섀도우; mp4 스틸의 가장 어두운 그라데이션에 밴딩 없음grep + mp4 스틸
T8 웹 레이아웃스틸당 하나의 초점; 3줄 초과 단락 없음; 불릿 없음; UI 크롬은 크롬이 요점인 경우에만스틸
T9 제너릭 스톡films/<slug>/footage/SOURCES.md의 모든 푸티지 클립에 출처 + 라이선스 있음; 스톡 클립은 그레이딩되고 ≤ 1.5초로 편집됨SOURCES.md + 스틸
T10 장식적 전환전환 ⊂ 어휘 집합; 비컷 전환 ≤ 5초당 1개; blur-dissolve ≤ 12프레임film.json
T11 스토리보다 템플릿STORYBOARD.md에 approved: 있음; 프레임 0이 검지 않고 0.5초 스틸과 다름; 제품 카테고리가 1.5초 (x, li) / 1초 (릴) 내에 명확; 문제 뒤에 해결책; 마지막에 ≥ 2초 동안 브랜드 표면에 안정된 장면스틸 0, 0.5, 1.5초, 마지막 2초
T12 본 적 없음이 QA: 열린 모든 시트와 스틸이 나열됨QA.md의 파일 목록
T1–T12에서 하나라도 FAIL이면 렌더-배달 및 패키지가 차단됩니다.

전달 점검 (프리셋별; 번호 = craft/08#delivery-checks)

값은 harness.config.json presets에서 가져오고, 없으면 craft/10#presets에서 가져옵니다. 이 ID를 정확히 사용하십시오; craft/08과 QA.md가 이를 공유합니다.

ID통과 조건
D1비디오 h264, 프로파일 High (Remotion의 ffprobe가 100 출력), pix_fmt yuv420p, 컨테이너 mp4
D2너비 × 높이가 정확히 프리셋과 일치
D3고정 fps = 컴포지션 fps (r_frame_rate = avg_frame_rate)
D4길이 = film.json ±1프레임, 그리고 프리셋의 길이 범위 내 (x-16x9 ≤ 140초, reel-9x16 ≤ 90초)
D5오디오 aac LC (Remotion의 ffprobe가 1 출력), 48000 Hz, 2채널, ~192 kbps; 히어로-루프: 오디오 스트림 없음
D6통합 라우드니스 −14 ±1 LUFS; 트루 피크 ≤ −1.5 dBTP; VO −16…−14 LUFS (측정 가능한 경우)
D7moov가 mdat 앞에 있음 (faststart)
D8포스터 = 해당 프리셋의 프레임 0이 존재, 동일한 크기, 검지 않음 (YAVG > 20), 훅을 보여줌
D9VO가 있는 모든 프리셋에 대해 렌더 옆에 SRT 파일 있음; 캡션과 같은 구절; HH:MM:SS,mmm; ≤ 2줄; 각 ≥ 0.8초; 시간 ±2프레임
D10중요한 요소(캡션, 텍스트, 로고, 사용 중인 UI)가 프리셋의 세이프 존 밖에 없음 (오버레이 스틸)
D11VO가 있는 모든 프리셋에 캡션이 번인됨 (히어로-루프: 없음, ph-16x9는 해당 설정에 따름); ≤ 2줄; 줄당 ≤ 42자 (16:9), ≤ 32자 (4:5, 1:1, 9:16); 변화하는 요소 위에 절대 두지 않음; 캡션 및 푸티지 위 텍스트 명암비 ≥ 4.5:1, 배경 위 악센트 ≥ 3:1; 480px (16:9) 및 360px (4:5, 9:16) 너비 스틸에서 읽을 수 있어야 함
D12동결 및 검은 목록이 설계된 홀드와 검은 비트에만 일치함 (film.json 또는 STORYBOARD에 나열됨)
D13BT.709 태그 또는 태그되지 않은 HD; 가장 어두운 그라데이션에서 mp4 스틸이 PNG 대비 새로운 밴딩을 보이지 않음
D14파일 크기 제한 이하: x ≤ 512 MB, README 히어로 ≤ 10 MB
D15out/<slug>/credits.txt에 모든 CC BY 자산과 그 크레딧 라인이 나열됨; films/<slug>/footage/SOURCES.md 완전
D16히어로-루프만 해당: 프레임 N이 프레임 0과 같음; 3회 반복된 파일이 이음새에서 점프를 보이지 않음

시간별 텍스트 가독성

film.json의 모든 텍스트 항목(문장, 캡션, 레이블, VO가 가리키는 UI 복사)에 대해: 단어 수, in/out 프레임, 홀드 = (out − in) / fps, 필요 = 0.2 × (단어 수 + 1)초. 또한 480×270 스틸에서 히어로 라인이 여전히 읽을 수 있는지 (글자가 구분 가능한지) 확인합니다. QA.md에서 항목당 한 행.

보고서 규칙

  • 모든 PASS는 증거를 인용합니다: qa/<slug>/stills/x-16x9-12.30.png, I = −14.2 LUFS, grep G1: 0 lines.
  • 측정된 숫자는 단위와 이를 생성한 도구를 포함합니다 (system ffmpeg 8.1 ebur128 또는 remotion ffmpeg loudnorm). Remotion에 번들된 ffmpeg에는 ebur128, signalstats, freezedetect, tile, drawbox 및 rawvideo 출력이 없으므로 시스템 ffmpeg를 사용하고 이를 명시하십시오; 시스템 ffmpeg가 없으면 해당 항목은 NOT CHECKED입니다.
  • FAIL은 프레임 범위, 규칙 (craft/NN#anchor 또는 T#/D#) 및 제안된 수정 사항을 명명합니다.
  • 요약 블록은 T1–T12 및 D1–D16이 모두 PASS일 때만 READY라고 말합니다 (D16은 히어로-루프에만 해당) (NOT CHECKED는 이유와 함께 준비되지 않은 것으로 간주).

Individual skills in this repo

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

evgenspm/launchfilm

Brand intake for a launch film, product video or promo: capture the product's real colors, fonts, logo, radius and theme from the user's repo (Tailwind config, CSS variables, shadcn tokens, next/font, logo SVG), then the live website, then screenshots, and write films/<slug>/brand.json with a source for every value. Use when starting a new film, when the brand, logo or colors changed, or when the user says "use my brand / my colors / my logo". Hard stop if capture fails: never invent a logo or colors. Not for picking a look or grade (scene-build, craft/06) or for writing copy (story).

evgenspm/launchfilm

Launch video, launch film, product video, product launch, promo, teaser, trailer, demo video, Product Hunt video, X / LinkedIn launch clip, reel, hero loop, motion graphics, "make a video for my product", Remotion film. Router and gated pipeline for making a pro product-launch film with the launchfilm studio in ./launch-video: brief, brand intake, story and storyboard (user approves), sound, scene build, frame QA, render per platform preset, package, post copy, one-time credit note. Use this first for any request to make, remake or revise a launch or product film; it calls the sibling skills (brand-intake, story, sound, scene-build, recipes, film-qa, launch-post). Do not use it to study a reference video (use reference-study), to browse recipes only (use recipes), or for generic Remotion questions unrelated to a launch film.

evgenspm/launchfilm

Write the launch post that goes with the film: X / Twitter post, LinkedIn post, Product Hunt tagline, description and maker comment, written in the founder's own voice, concrete, no AI slop ("excited to announce", em dashes, buzzwords). Triggers: write the tweet, launch post, LinkedIn post, Product Hunt copy, PH tagline, maker comment, caption for the video, announcement copy. Use after the film is rendered (or when the user asks for post copy for an existing film); starts from `npx launchfilm post <slug>` and the film's BRIEF.md and STORYBOARD.md, writes out/<slug>/POST.md. Never posts anything. Not for the film's own on-screen script or VO (story).

evgenspm/launchfilm

Find launchfilm recipes (published launch films studied frame by frame and written down as text, some with ready Remotion code) and build the user's film from 1 to 3 of them. Use for "use a template", "start from a recipe", "make a 30s launch film from recipe <id>", "something like this style", "show me options", "which recipe fits a 30 s vertical launch", "remix recipe X with our brand", or when a storyboard needs a proven hook, feature beat, logo reveal or end card. Searches recipes/CATALOG.md or recipes/index.json, scores and picks 1 to 3, shows each with its source link, reads the recipe.md beat sheet, then scaffolds with `npx launchfilm new <slug> --recipe <id>`: ready code when Recipe.tsx exists, else TODO scenes built from the beat sheet with studio presets, keeping the recipe's timings, springs and sounds re-timed to the user's length and beat grid. Use reference-study to make a new recipe, story for the storyboard, scene-build for scenes, launch-film for the whole pipeline.

관련 스킬