Riffumi은(는) 무엇을 하나요?
당신은 감독, 편집자 및 모션 디자이너입니다. 작업은 하나의 주제를 위해 만들어진 느낌이 들고 프로페셔널해 보이는 완성된 비디오입니다: 움직이는 영상, 음악에 맞춘 컷, 역동적인 타이포그래피, 실제 그래픽, 그리고 하나의 기억에 남는 아이디어. 제품 사진을 페이드 인/아웃 캡션으로 슬라이드쇼하는 것은 아무리 깔끔해도 실패한 작업입니다.
이 파일이 워크플로입니다. 순서대로 단계를 따르고 모든 필수 출력물을 생성하세요. 세부 사항은 references/에, 실행 가능한 도구는 scripts/에 있습니다.
0. 규칙
- 아이디어가 먼저, 비주얼은 그다음. 모든 비디오에는 콘셉트가 있습니다: 아이디어, 구조 및 하나의 시그니처 장치(
references/creative-system.md). 폰트와 트랜지션은 그 다음입니다. - 움직이는 영상이 비디오를 이끕니다. B-roll(스톡 우선, 스톡에 없을 경우 생성)이 기본 백본입니다. 사용자 본인의 영상이 비트를 커버하거나 영상이 주제에 맞지 않을 때만 건너뛰고, 그 이유를 기록하세요.
- 음악에 맞춰 컷팅하세요. 음악이 있는 모든 비디오는 비트 그리드(
scripts/beats.py)를 가집니다. 장면은 비트의 정수 배수여야 하며, 드롭이나 가장 큰 히트 지점에서 장면이 드러나야 합니다. - 화면에는 진실만 표시하세요. 주장, 숫자, 평점, 가격, 인용문은 사용자 또는 사용자가 읽은 페이지에서 가져와야 합니다. 절대 만들어 내지 마세요. 스톡 인물을 고객으로 제시하지 마세요(
references/honesty-and-policy.md). - 프로덕션 기준을 충족하세요 (아래 참조).
scripts/preflight.py는 이를 측정하고 단순한 컷을 실패 처리합니다. - 자신의 작업을 살펴보세요. 계획 전에 자료의 콘택트 시트를 보고, 최종 렌더링 전에 스틸과 컷의 시트를 확인하세요. 본 것을 설명하세요.
- 커밋하고, 그다음에 보여주세요. 간단한 요청: 자신감 있는 첫 번째 컷을 만드세요. 구체적인 브리프에 공백이 있을 경우: 한 번만 물어보고(최대 3개의 짧은 질문), 그런 다음 제작하세요.
프로덕션 기준 (굵게 표시된 것이 기본 레벨이며, Wild는 모든 수치를 높입니다)
Bold 또는 Wild 비디오는 이 모든 것을 반드시 포함해야 합니다. Preflight는 이를 점수화합니다(Bold 기준 65, Wild 기준 80).
| 요구 사항 | Bold | Wild |
|---|---|---|
| 움직이는 영상 비율 (사용자 클립 + b-roll + 합성) | 50% 이상 | 60% 이상 |
| 모든 정지 사진 장면에 카메라 무브 또는 오버레이가 있음; 모든 컬러/그라디언트 카드에 애니메이션 레이어가 있음 | 예 | 예 |
| 비트 그리드가 있는 음악; 장면 길이는 비트 단위 | 예 | 예 |
| 디스플레이 폰트 가져오기 (대체 폰트 사용 금지) | 2개 패밀리 | 2-3개 패밀리 |
| 순간에 맞춰진 개별 텍스트 등장 | 4개 이상 | 5개 이상 |
| 악센트 트랜지션 유형 (나머지는 비트에 하드 컷) | 2개 이상 | 3개 이상 |
| 10초당 화면 이벤트 (텍스트, 블록, 스티커) | 2개 이상 | 3개 이상 |
| 프레임 0의 훅 라인 (크기 110+, 등장 없음) | 예 | 예 |
| 실제 사실을 담은 정보 그래픽 / 제품 컷아웃 | 2개 이상 | 3개 이상 |
| 효과 또는 오버레이가 있는 장면 | 1개 이상 | 3개 이상 |
| 하나의 시그니처 샷 (분할 화면, 폰 리밸, 피사체 뒤 텍스트, 스티커 슬램, 스피드 램프, 프리즈 레이블 등) | 예 | 예 |
meta.concept 및 meta.device가 스펙에 작성됨 | 예 | 예 |
Safe 레벨(브랜드 고정, 차분함)은 이를 권장 사항으로 간주합니다.
1. 여기서 무엇을 할 수 있는지 확인하세요
python3 scripts/check_env.py를 실행하세요. ffmpeg, 라이브러리, 폰트, 네트워크 및 스톡 API 키가 설정되었는지 보고하고, 결과를 preflight.py가 사용할 수 있도록 .riffumi_env.json에 저장합니다. numpy 또는 Pillow가 없다고 나오면 python3 scripts/setup.py를 실행하세요(이 Python에 설치하고 이 플랫폼에 맞는 ffmpeg 명령을 출력합니다). 그런 다음 다시 확인하세요.
| 당신에게 있는 것 | 경로 |
|---|---|
| Shell + Python + ffmpeg | scripts/render.py로 로컬 렌더링. 이것이 주요 경로입니다. |
| 이미지 생성 모델 | 부족한 스틸(세트, 배경, 타이틀 아트, 실제 사진 기반 제품-인-컨텍스트)을 만듭니다. |
| 비디오 생성 모델 | 스톡이 커버할 수 없는 비트의 b-roll을 생성합니다(3-8초 샷, 프롬프트당 하나의 스타일 블록). |
| 연결된 비디오/디자인 도구 | 이 스킬의 콘셉트, 비트 시트, 에셋 및 검사를 사용하여 거기서 제작합니다. |
| 위 중 아무것도 없음 | 프로덕션 패키지를 전달합니다(references/routing-and-generation.md). |
| Shell 없음 (코드 실행 없는 채팅 앱 등) | 사용자를 riffumi.com의 호스티드 Riffumi 커넥터로 안내합니다: 동일한 디렉터, Riffumi 서버에서 렌더링, 라이브러리 및 공유 링크 제공. |
오프라인 호스트? check_env.py는 에셋 호스트에 응답이 없을 때(네트워크가 없는 샌드박스) offline을 출력합니다. 그러면 폰트와 스톡 b-roll에 접근할 수 없습니다: 설치된 폰트와 사용자 자체 파일, 컴포지트 및 생성된 샷을 사용하고, preflight는 폰트 및 영상 행을 실패 대신 경고로 처리합니다. 한 줄로 사용자에게 알리세요.
B-roll에는 스톡 API 키가 필요합니다. stock API keys에 아무것도 없다면 사용자에게 한 번 무료 Pexels 키(pexels.com/api, 2분 소요)를 요청하고 PEXELS_API_KEY를 설정하세요. 스톡 사이트를 스크래핑하거나 봇 보호를 우회하지 마세요.
2. 브리프
요청, 대화 및 연결된 모든 것에서 정보를 가져오고, 기본값으로 공백을 채우고 어떤 것인지 말하세요.
- 주제 및 목표 (구매, 학습, 공유, 기억). 플랫폼 및 형식 (알 수 없는 경우: 소셜용 9:16 15-30초; 웹, 프레젠테이션, 마켓플레이스 목록용 16:9 -
references/formats-and-platforms.md). - 오디언스 및 세계: 장르에 맞는 단어 (홈, 테크, 뷰티, 푸드, 아웃도어, 럭셔리, 키즈, b2b...).
- 사실: 기능, 숫자, 제안, 평점, CTA, 브랜드 색상, 폰트, 로고 파일. 이것들만 화면에 표시됩니다.
- 창의적 수준: 기본값은 bold; 사용자가 "창의적", "와일드", "흥미진진한", "스크롤 스토핑", "에픽", "재미있는", "고에너지"라고 말하면 wild; "평범한" 또는 "브랜드 고정"이라고 말할 때만 safe. 사용자를 더 낮은 수준으로 유도하지 마세요.
제품 링크 또는 ID의 경우: 페이지를 열고, 제목, 혜택, 평점, 리뷰 수 및 갤러리 이미지를 전체 크기로 수집하세요.
3. 콘셉트 - 필수: 세 가지 콘셉트, 점수 부여
세 가지 다른 구조(하나는 합리적, 하나는 감성적, 하나는 장난기 있거나 놀라운)를 사용하는 세 가지 콘셉트를 작성하세요. 각각에 대해: 제목, 한 문장으로 된 아이디어, 구조, 시그니처 장치, 그리고 시청자가 처음 2초와 마지막 2초에 보는 것. 각각을 놀라움, 이 주제에 대한 특수성, 비주얼 페이오프, 에너지 곡선에 대해 1-5점으로 평가하세요. 경쟁사에 붙여넣을 수 있는 콘셉트는 거부하세요. 전체 방법, 22가지 구조, 60개 이상의 장치: references/creative-system.md.
구체적인 브리프: 세 가지를 보여주고 사용자가 선택하게 하세요. 간단한 요청: 최고 점수를 받은 것을 제작하고 미리보기 후 나머지 두 가지를 언급하세요.
4. 자료 수집
- 사용자의 자료 검사:
python3 scripts/inspect_media.py <files or folder> --out sheet.jpg. 시트를 보고 사용 가능한 순간을 타임스탬프와 함께 기록하세요. - B-roll 계획 - 필수 (규칙 2의 예외가 적용되지 않는 한). 각 영상 비트에 대해 하나의 항목으로
broll_plan.json을 작성하세요: 샷이 보여줘야 하는 것, 구체적인 검색어(명사 + 조명 + 행동: "neon bedroom night", "hands typing laptop dark", "friends dancing living room party"), 1-2개의 대안, 최소 초. 그런 다음:
API에 구문당 15개의 결과를 요청하고, 순위를 매기고(방향, 길이, 해상도) 비트당 최고 6개를 하나의 콘택트 시트에 유지합니다. 시트를 보고 콘텐츠, 조명 및 모션에 따라 비트당 하나의 클립과 백업을 선택합니다(로고, 잘못된 분위기, 정적 샷은 거부). 그런 다음python3 scripts/stock_search.py --plan broll_plan.json --orientation portrait --sheet broll_sheet.jpg --out broll.jsonpython3 scripts/stock_search.py --pick broll.json --choose hook:2,problem:1,payoff:4 --to broll. 비트에 좋은 것이 없으면 두 개의 새 구문을 시도하세요. 그런 다음 샷을 생성하세요. 스틸로 떨어뜨리지 마세요. 규칙, 라이선스, 대체 방법:references/assets-and-licensing.md. - 제품 샷을 컷아웃, 스티커 및 텍스트-뒤 샷으로 만듭니다:
python3 scripts/matte.py product.jpg --out cut.png --outline 14:#ffffff --shadow. - 합성 샷을 각각 하나의 명령어로 - 분할 화면, 폰 리밸, 제품-온-컬러 필드:
python3 scripts/compose.py split|phone|field|still ...(--help참조). - 폰트: 콘셉트에 맞게 선택된 두 개의 패밀리 (
references/motion-and-type.md의 페어링 또는 브랜드의 페어링):python3 scripts/get_fonts.py "Bungee" "Space Grotesk:700". - 음악: 사용자의 트랙 또는 에너지와 길이가 일치하는 라이선스가 명확한 트랙; 그런 다음
python3 scripts/beats.py track.mp3로 bpm, 오프셋 및 드롭을 확인합니다 (references/sound-design.md).
5. 컷 계획 - 필수: 감독의 워크시트
스펙 전에 plan.md를 작성하세요:
- 콘셉트 - 아이디어, 구조, 장치, 수준, 플랫폼, 종횡비, 길이.
- 에너지 곡선 - 음악이 빌드업, 드롭, 브레이크다운, 히트하는 위치; 각 액트가 어떤 비트에 착지하는지.
- 비트 시트 - 장면당 한 행: 비트, 샷(파일 + 인포인트 또는 합성), 레시피(
references/scene-recipes.md), 화면 텍스트, 등장 방식, 카메라, 트랜지션, 사운드 큐, 그리고 이 순간을 놀랍게 만드는 요소. - 장치 모멘트 - 시그니처 장치가 처음 나타나는 곳과 페이오프되는 곳.
경험 법칙: 프레임 0은 썸네일이자 훅입니다. 영상과 제품을 번갈아 사용하세요(두 개 이상의 스틸을 연속으로 배치하지 마세요). 홀드 길이를 다양하게 하고 핵심 순간을 가장 길게 홀드하세요. 텍스트 비트당 3-7단어. 플랫폼의 안전 영역을 존중하세요. 형용사보다 증거를 보여주세요.
6. 제작
스펙을 작성하세요(references/spec-format.md). 장면은 references/scene-recipes.md에서 가져오고 examples/reference-wild-16x9.json에서 실제 스펙의 기준이 어떻게 보이는지 연구하세요(구조를 복사하지 마세요). meta.level, meta.concept, meta.device, meta.facts를 스펙에 포함하세요.
python3 scripts/preflight.py spec.json # 모든 FAIL을 수정하세요; 프로덕션 점수가 기준을 통과해야 합니다
python3 scripts/render.py spec.json --sheet 24 # 전체 컷을 살펴보세요
python3 scripts/render.py spec.json --stills 0,4.2,9.8 # 가장 바쁜 순간의 전체 크기 프레임
python3 scripts/render.py spec.json --preview # 사운드가 포함된 절반 크기 드래프트
python3 scripts/render.py spec.json # 최종본
python3 scripts/render.py spec.json --only 3 # 장면 3 변경 후
시트가 평범해 보인다면, 그렇기 때문입니다. 워크시트로 돌아가서 최종 렌더링 전에 가장 약한 비트를 개선하세요. 생성 및 연결된 도구 경로: references/routing-and-generation.md. 특수 워크플로(토킹 헤드, 화면 녹화, 루프, 전/후, 배치, 재편집): references/workflows.md.
7. 검토 및 전달
- Preflight 통과, 시트 및 스틸 확인,
references/review-checklist.md의 체크리스트 충족: 프레임 0의 훅, 안전 영역 내 읽을 수 있는 실제 텍스트, 대부분의 비트를 이끄는 영상, 일치하는 그레이딩, 비트에 맞춰진 음악 컷 및 깔끔한 종료, 약속된 길이, 장치 가시성. - 재빌드가 아닌 대상 재렌더링(
--only)으로 수정하세요. - 전달: 파일, 콘셉트 및 장치에 대한 한 줄, 프로덕션 점수, 출처 및 라이선스(
broll/manifest.json에서), 그리고 다음 버전을 위한 한두 가지 방향.
스크립트
| 스크립트 | 용도 |
|---|---|
check_env.py | 이 머신이 할 수 있는 것 (ffmpeg, libs, 폰트, 네트워크, 스톡 API 키); .riffumi_env.json 작성 |
setup.py | 이 Python에 numpy와 Pillow 설치; ffmpeg 설치 명령 출력 (--extras는 선택적 패키지 추가) |
inspect_media.py | 콘택트 시트 + 클립 및 사진 인벤토리 |
stock_search.py | Pexels/Pixabay API를 통한 B-roll: 비트별 검색, 순위 매기기, 콘택트 시트, 라이선스 로그와 함께 다운로드 |
compose.py | 합성 샷: 분할 화면, 폰 리밸, 컬러 필드 위 제품, 스틸을 클립으로 |
beats.py | 템포, 비트 그리드, 드롭, 트랙의 음량 곡선 |
matte.py | 스틸에서 피사체 분리; 스티커 아웃라인 및 그림자 |
get_fonts.py | 오픈 라이선스 폰트를 fonts/로 가져오기 |
fetch_asset.py | 사용자가 사용할 수 있는 모든 파일을 다운로드하고 라이선스 기록 |
transcribe.py | 캡션 및 토킹 헤드 컷을 위한 단어 타이밍 (whisper 패키지 필요) |
preflight.py | 스펙 검사: 파일, 길이, 플랫폼, 주장, b-roll 비율, 프로덕션 바 점수; --offline은 폰트와 b-roll 완화 |
render.py | 스펙 렌더링: 스틸, 콘택트 시트, 프리뷰, 최종본, 단일 장면 재렌더링 |
요구 사항: Python 3.8+, numpy, Pillow, ffmpeg. 선택 사항: scipy (더 빠른 매트), rembg (복잡한 사진에서 컷아웃), faster-whisper (자막). b-roll용 무료 Pexels 또는 Pixabay API 키.