Fish Video Skill v2
하나의 대화에서 하나의 비디오를 만듭니다. 참조 분석에서 분석된 상위 Short의 품질에 도달해야 합니다:
- 약 1초마다 새로운 화면 등장
- 깊이가 있는 실제 에셋 (텍스처, 접촉 그림자, 글로우)
- 영웅 단어 대비가 3배인 타이포그래피
- 물체가 포털이 되는 전환
- 모든 움직임 전에 착지하는 스와시, 리빌에서 끝나는 라이저, 플래시 컷의 임팩트
- 들리는 음악 위에 자리 잡은 음성
일반적인 음성이 있는 슬라이드쇼는 QA를 통과해도 실패입니다.
라우터: 작업에 도달하면 가이드 로드
현재 단계에 필요한 것만 읽으세요:
- 사용자가 단어만 제공했거나, 주제 아이디어를 원하거나, 스크립트를 작성 중인 경우 → 주제에서 비디오로
- 스타일, 팔레트 또는 룩 선택 → 스타일 레시피,
config/styles.yaml - 아이디어 설명 또는 무드에 따른 색상 선택 → 다이어그램 디자인
- 장면 작성 → 장면 카탈로그, 모션 규칙 및 카메라 포함
- 음악, SFX 또는 레벨, 또는 "휴대폰에서 음악이 들리지 않아요"에 관한 모든 것 → 사운드 디자인
- 음성 선택 또는 지시 → 보이스 디렉션
- 캡션 및 타이포그래피 → 캡션 및 타이포그래피
- 화면의 웹사이트 또는 앱 → 웹사이트 투어 캡처
- 일치시킬 참조 비디오 → 참조 분석, 참조 비디오 분석, 트렌딩 분석
- 플랫폼 크기 및 제한 → 플랫폼 사양
- 사용할 오픈소스 도구 → 필드 가이드
절대 타협하지 않는 워크플로우
0 doctor ─▶ 1 인터뷰 (모든 질문, 한 번에) ─▶ 확인 ─▶ 2 연구 + 트렌드 + 참조 (병렬)
─▶ 3 에셋 + 화면 캡처 + 음성 (병렬) ─▶ 4 스토리보드 (모든 단어 직접 작성) ─▶ 게이트
─▶ 5 스틸컷 (룩) ─▶ 6 렌더링 ─▶ 7 QA + 리뷰 루프 (수정, 재렌더링, 반복) ─▶ 8 패키징 ─▶ 9 최종 리뷰 ─▶ 10 정리 (허가 필요)
규칙:
-
처음에 한 번의 인터뷰. 사용자의 입력이 필요한 모든 질문은 1단계에서 이루어집니다. 음성과 톤, 색상, 화면 단계, API 키 (각각 얻는 방법 포함) 및 선택적 추가 설치 항목을 포함합니다.
fishvideo interview <dir> --confirm후에는 질문을 하지 않습니다. 답변과 스타일 레시피에 따라 결정하세요. 다음 경우에만 사용자에게 다시 연락합니다:- (a)
checkpoints에서 선택한 선택적 중단점 - (b) 사용자가 직접 수행해야 하는 데스크톱 녹화; 인터뷰에서 동의했으며, 정확히 언제 시작해야 하는지 알려줍니다
- (c) 최종 리뷰
- (d) 정리 허가
사용자가 나중에 다른 말을 하면 사용자를 따릅니다.
- (a)
-
인터뷰가 확인되기 전에는 스크립트를 작성하지 마세요.
fishvideo script,all및 전체render는fishvideo gate가 통과될 때까지 거부됩니다. -
템플릿 텍스트를 절대 제공하지 마세요. 스캐폴드는 TODO의 뼈대입니다. 화면의 모든 단어와 내레이션의 모든 줄을 이 비디오를 위해 새로 작성하므로, 게이트는 TODO, v1 상용구 ("X, 설명", "60초 안에", "시청해 주셔서 감사합니다") 및
examples/에서 복사된 모든 줄을 차단합니다. 예제는 구조를 보여줄 뿐, 내용을 보여주지 않습니다. -
설명에는 다이어그램이 필요합니다.
goal: explain비디오에는 최소 하나의diagram,whiteboard,neonline또는split-리빌 메커니즘 장면이 필요합니다. 글머리 기호 목록은 설명이 아닙니다.
0단계: doctor
설정 (처음 한 번만)은 README.md에 있습니다: npm install, venv, 그리고 pip install -r requirements.txt. 그런 다음 실행:
.venv/Scripts/python scripts/fishvideo.py doctor --keys # Windows (macOS/Linux: .venv/bin/python)
어떤 키와 추가 항목이 누락되었는지 확인합니다. 인터뷰 8라운드에서 정확히 그것들에 대해 물어봅니다.
최상의 결과를 위한 설정 (이것을 수행하고 건너뛰지 마세요):
- 직접 추가 항목을 설치하세요.
doctor가 누락된 추가 항목을 표시하면, 사용자가 직접 하게 하지 않고 스킬의 venv에 설치하세요:pip install "rembg[cpu]"(컷아웃),pip install kokoro soundfile(자연스러운 로컬 음성) 및pip install faster-whisper(사용자의 자체 음성 해설 정렬). 또한 SFX 라이브러리가 없으면fishvideo assets sfx-pack을 한 번 실행하세요. 설치하는 내용과 이유를 한 줄로 사용자에게 알리세요. 사용자가 8라운드에서 거부하는 추가 항목만 건너뛰세요.- API 키를 요청하세요. 선택 사항입니다: 모든 것이 무료 대체 수단을 통해 키 없이도 작동합니다. 그러나 최상의 결과를 제공합니다: ElevenLabs는 가장 자연스러운 음성을 제공하고, Pexels/Pixabay는 가장 많은 스톡 사진과 비디오를 제공하며, Freesound는 가장 많은 SFX를 제공하고, YouTube Data API는 트렌드 차트를 제공합니다. 8라운드에서 이 비디오에 중요한 키를 요청하고, 각각을 얻는 방법을 알려주며 (무료 가입 링크는
doctor --keys에 있습니다), 밀어붙이지 않고 "아니요" 또는 "나중에"를 수락하세요. 인터뷰 중에만 이렇게 하고, 제작이 시작된 후에는 절대 하지 마세요.
1단계: 인터뷰 (엄격)
fishvideo new projects/<slug> --prompt "<사용자의 요청, 그대로>"
fishvideo interview projects/<slug> # JSON: 8개 라운드로 그룹화된 개방형 질문
질문 뱅크는 config/interview.yaml에 있습니다. 8개 라운드와 약 30개의 질문이 있습니다:
| 라운드 | 내용 |
|---|---|
| 1 | 목적 |
| 2 | 형태와 스타일 |
| 3 | 색상, 타이포그래피, 텍스처 |
| 4 | 음성, 전달, 음악, SFX |
| 5 | 실제 에셋 및 화면 녹화 |
| 6 | 콘텐츠, 사실, CTA, 언어 |
| 7 | 캡션, 썸네일, 승인 |
| 8 | API 키 및 추가 항목 |
단어 또는 영역만 제공되었나요? 1라운드 전에 5개의 트렌딩 각도를 생성하세요: yt suggest, yt search --recent-days 30 및 trends (하이쿠 하위 에이전트, 병렬로), 주제에서 비디오로를 따릅니다. topic 질문으로 제공하세요. 선택된 각도는 이후 모든 것을 결정합니다.
질문 방법:
AskUserQuestion호출당 한 라운드 (최대 4개 질문)를 옵션을 정확히 나열된 대로 사용하여 물어보세요. 권장 옵션이 먼저 옵니다. "기타"는 항상 사용 가능합니다.- 자유 텍스트 질문 (
free_text: true)은 해당 라운드의 정상 메시지에서, 해당 라운드의 객관식 호출과 함께 진행됩니다. - 프롬프트가 이미 명확하게 답변한 경우에만 질문을 건너뛰고 (
from_prompt는 감지된 내용을 표시함), 그래도 기록하세요. - 각 답변을 기록하세요:
fishvideo interview <dir> --set style=paper-collage --set platforms='["shorts"]'. 답변은brief.yaml에 매핑됩니다: 팔레트는brand.colors로, 무드는 점수와 템포로, 음성과 전달은 음성 설정 및 포스트 체인으로, 스타일은 텍스처, 페이싱 및 모티프로 이동합니다. - 음성: 4라운드와 6라운드 (언어와 전달 방식이 결정된 후) 후에
fishvideo voices <dir> --audition을 실행하세요. 사용자에게 재생할 수 있도록build/auditions/의 파일 경로를 제공하고 선택하게 하세요. 이것은 여전히 인터뷰의 일부입니다. - 키: 답변에 중요한 누락된 키만 제공하세요. 각각을 얻는 방법 (뱅크의 텍스트)과 키 없이 무엇이 발생하는지 설명하세요. 키를 붙여넣으면
--set keys_paste=...로 기록하세요. 키는 스킬의 gitignored.env파일로 이동되며 절대 에코, 로그 또는 커밋되지 않습니다. 추가 항목을 선택하면 지금 venv에 설치하세요 (pip install "rembg[cpu]",kokoro soundfile,faster-whisper). - 마지막으로,
fishvideo interview <dir> --summary를 사용자에게 다시 읽어주세요. 간단히 "예, 진행"을 요청한 후--confirm을 실행하세요.
2단계: 연구, 트렌드 및 참조 (병렬 실행)
이것들을 병렬 하위 에이전트로 실행하세요. 모델 라우팅: haiku는 가져오기 및 조회 스윕용, sonnet은 분석 및 일상 코드용, 그리고 당신(opus)은 스크립트, 스토리보드, 디자인 판단 및 최종 리뷰용입니다. 각 에이전트에게 프로젝트 경로와 생성해야 하는 정확한 출력 파일을 알려주세요. 하위 에이전트가 보고서 파일을 쓸 수 없는 경우 텍스트를 반환하면 당신이 저장합니다.
| 작업 | 명령어 | 에이전트 |
|---|---|---|
| 사실 및 출처 | 웹 검색, fishvideo research <dir> --url ... → research/facts.md | haiku |
| 트렌드 | fishvideo trends <dir> --topic "<topic>" --region <IN/US> → research/trends.md (제목 공식, 태그, 후크, 현재 순위에서 이상적인 길이) | haiku |
| YouTube 조회 | fishvideo yt search "<q>" -n 20 [--recent-days 30], yt info, yt subs, yt suggest | haiku |
| 참조 분석 (사용자가 제공한 각 링크 + 선택한 스타일의 상위 트렌딩 예제 1~2개) | fishvideo yt download <url> --purpose reference --project <dir>, 그런 다음 fishvideo dissect <dir>/reference/<file>.mp4 --out <dir>/reference/dissect --fps 4 [--vtt subs.vtt]. 모든 시트, 스펙트로그램 및 timeline.md를 읽고, 참조 비디오 분석의 9개 섹션과 함께 reference/analysis.md를 작성하세요 | sonnet (vision) |
분석에서 숫자를 가져오세요: 변경 속도, 스와시 타이밍 및 레벨, 음성-음악 베드 dB, 덕킹 깊이, 음량, 캡션 스타일. brief.yaml → match:에 작성하여 스토리보드와 믹스가 따라갈 수 있게 하세요. 기술을 복사하고, 내용은 복사하지 마세요.
3단계: 에셋, 화면 및 음성 (병렬 실행)
실제 에셋 (assets.policy가 mixed인 경우):
- 검색:
fishvideo assets search <dir> "<noun>" --kind photo|video|music|sfx [--providers wikimedia,pexels].assets/_candidates/에서 미리보기를 열어 확인하세요. - 선택한 항목 다운로드:
fishvideo assets get <dir> <ids>. 모든 파일은 라이선스와 함께assets/credits.json에 기록됩니다. - 컷아웃 만들기:
fishvideo assets cutout in.jpg out.png(isnet-general-use로 rembg 사용; 비상업용 기본 모델은 절대 사용하지 않음). - B-roll 준비:
fishvideo assets clip <dir> <file> <clip_id> --start S --dur S는footage장면에 대한 프레임을 제공합니다. - CC-BY YouTube 섹션 가져오기:
fishvideo yt clip <url> <start> <end> <dest> --project <dir>. CC 비디오가 아닌 경우 거부합니다. - 허용되는 라이선스: CC0, PD, Pexels/Pixabay 라이선스, CC-BY 및 CC-BY-SA (크레딧 필요). NC나 ND는 절대 안 됩니다. CC가 아닌 YouTube 비디오, 참조 비디오의 푸티지, 다시 그리는 로고, 오해의 소지가 있는 실제 인물의 초상은 절대 안 됩니다.
화면:
website:captures:아래에 샷을 나열하고fishvideo capture <dir>을 실행하세요. 가상 시간에 읽기 전용으로 촬영합니다.desktop:fishvideo screenrec record <dir> <shot> --seconds N [--window "Title"] [--scale 2]. 시작하기 전에 사용자에게 정확히 어떤 단계를 수행해야 하는지 알려주세요. F8은 마커를 떨어뜨리고 F9는 중지합니다.files:fishvideo screenrec import <dir> <shot> recording.mp4.
세 가지 모두 동일한 캡처 폴더를 생성합니다. tour 장면 (frame: inset)은 글로우 커서, 클릭 리플 및 클릭 SFX, 커서로 1.6–2배 줌, 스포트라이트 및 STEP 카드를 추가합니다. 줌이 선명하게 유지되도록 스케일 2로 녹화하세요.
음악:
- 라이브러리 트랙:
assets search <dir> "<brief.music.search>" --kind music, 그 다음assets get, 파일을assets/music/에 넣습니다. - 또는 합성된 스코어를 남깁니다. 강제로
music.source: synth를 설정하세요.
SFX: fishvideo assets sfx-pack을 한 번 실행하세요 (Kenney CC0). assets search --kind sfx (Freesound CC0)를 통해 assets/sfx/<cue-type>/에 더 추가하세요.
음성: 내레이션을 작성하고 (4단계), fishvideo voice <dir>을 실행하세요. 실제 클립에 맞게 장면의 시간을 다시 조정하도록 스토리보드를 다시 실행하세요. 사용자가 자신의 내레이션을 녹음한 경우 대신 fishvideo voiceover <dir> recording.wav를 실행하세요: faster-whisper로 녹음을 스크립트에 정렬하고 줄별로 자릅니다.
감정: 각 장면에 mood: (curious, tense, urgent, excited, warm, serious, reflective, triumphant, neutral)을 부여하세요. 줄별로 속도와 피치를 설정하고 ElevenLabs에서 스타일을 설정합니다. 구두점은 모든 엔진에서 전달을 형성합니다: ...는 멈춤, ?와 !는 상승, 짧은 문장은 강조합니다. 비트 전반에 걸쳐 무드를 다양하게 하세요: 40초 동안 하나의 단조로운 톤은 "일반적인 음성" 불만입니다. 줄 내의 조용한 구간은 자동으로 잘립니다 (pacing.max_word_gap).
음악 타이밍: 라이브러리 트랙의 경우 fishvideo beats <track>을 실행하세요. 스토리보드 bpm을 템포로 설정하고 music.offset을 비트나 드롭이 가장 큰 리빌에 맞춰지도록 설정하세요.
화면 녹화: fishvideo screenrec tighten <dir> <shot>를 실행하여 유휴 구간을 빠르게 넘기세요. 시청자가 로딩 스피너를 기다리게 하지 마세요.
4단계: 스토리보드 (직접 작성)
fishvideo script <dir>을 실행하세요. TODO로 가득 찬 비트 뼈대로 스타일 레시피 (config/styles.yaml, 스타일 레시피)에서 storyboard.yaml을 스캐폴드합니다. 타이밍은 자리 표시자입니다. 그런 다음 다음 순서로 올바르게 작성하세요:
- 모든 TODO를 대체하세요: 복사, 매개변수 및 내레이션. 장면 카탈로그 상단의 표에는 필요한 매개변수가 나열되어 있습니다.
brief.purpose의 중앙 메시지를 중심으로 장면을 재구성하세요. 각 장면이 이야기를 앞으로 나아가게 하거나 설명의 한 단계를 밟게 합니다.- 내레이션을 직접 작성하세요: 성우가 마치 사람처럼 말하게 하세요. 구어체입니다. 전문 용어와 수동태를 피하세요. 스크립트를 큰 소리로 읽어보세요. 감정이 있는지 확인하세요.
match:에서 분석된 참조 비디오와 일치하도록 전환과 모션을 미세 조정하세요.gate를 실행하세요:fishvideo gate <dir>. 통과하지 못하면 오류를 수정하고 다시 실행하세요.
5단계: 스틸컷
fishvideo stills <dir>을 실행하세요. 각 장면의 한 프레임을 렌더링합니다. 스크롤하여 확인하세요. 룩이 일관되지 않거나 평면적이거나 일반적인 경우 스타일 레시피를 조정하고 fishvideo stills <dir> --regen을 실행하세요. 사용자에게 "룩을 확인하시겠습니까?"라고 물어보세요. 거부하면 조정하세요. 승인하면 다음 단계로 진행하세요.
6단계: 렌더링
fishvideo render <dir> [--checkpoint-at reveal,first-qc,begin-music,begin-voice]
전체 렌더링 (~3-5분)은 스크립트 이후에만 허용됩니다. --checkpoint-at은 사용자가 인터뷰에서 동의한 중단점에 대략적으로 정렬하여 시간이 많이 소요되는 각 단계 후에 저장합니다. (해당) 체크포인트에서 렌더링된 프레임을 확인하고 사용자에게 보여주세요.
7단계: QA 및 리뷰
fishvideo qa <dir>을 실행하고build/qa/의 보고서를 전체 읽으세요: 오디오 스펙트로그램, 피크, 레벨, 캡션 정렬 및 타임라인 비교 (manual및match).- 오디오 문제: 레벨이
match:를 벗어나거나 전화기 스피커에서 음악이 묻히는 경우 → 사운드 디자인을 다시 참조하고-1 dB또는compressor:로 수정하세요.fishvideo render를 다시 실행하세요. - 시각적 문제: 전환이 분석에서의 타이밍과 일치하지 않거나, 깊이가 부족하거나, 캡션이 잘리는 경우 → 장면을 수정하세요.
- 직접 시청하세요:
build/<name>_<res>.mp4를 엽니다. 전체를 시청하세요. 대본을 따라가면서 확인하세요. 모든 장면이 올바른 순서로 표시되고 내레이션이 정확합니까? - 수정 - 재렌더링: 문제가 있는 장면만
fishvideo render <dir> --scene <ids>로 렌더링한 다음fishvideo join <dir>로 결합하세요. - 사용자에게 "최종 리뷰를 확인하시겠습니까?"라고 물어보세요. 대답이 '예'이면 8단계로 이동하세요. '아니요'이면 그들이 지정한 내용을 수정하고 QA 루프를 다시 실행하세요.
8단계: 패키징
fishvideo package <dir>
다음을 생성합니다:
build/<name>_<res>.mp4(1080p, 발소리 없이 깨끗함)build/thumbnail.png(스타일 레시피 디자인 규칙 적용: 타이틀, 3:4 비율,palette.light배경이 아닌 디자인)build/title.txt(가장 강력한 검색어 3개를 포함, 이모지 1개, 70자 이하)build/description.txt(3-5줄: 후크, 설명, CTA, 줄바꿈)build/tags.txt(쉼표로 구분된 15-25개 태그; 3개는trending.md에서 가져옴)build/credits.txt(assets/credits.json에서 생성, 기계가 읽을 수 있는 출처)
사용자에게 최종 패키지를 제시하세요:
"최종 패키지가 준비되었습니다. 비디오, 썸네일, 제목, 설명, 태그 및 출처가 포함되어 있습니다. 직접 업로드하시겠습니까? 정보를 검토하고 수정하겠습니다."
9단계: 최종 검토
사용자에게 다음을 보여주고 물어보세요:
- 비디오 재생
- 썸네일 이미지
- 제목
- 설명
- 태그
- 출처
"게시할 준비가 되셨습니까? 무엇이든 변경할 수 있습니다."라고 물어보세요. 변경 사항을 적용하고 모든 것을 다시 패키징하세요. "게시하겠습니다"라고 말할 때까지 루프하세요.
10단계: 정리 (허가 필요)
마지막으로 물어보세요: "프로젝트 파일을 정리해도 될까요?" 승인하면 중간 파일을 제거하고 프로젝트 루트에 final 폴더만 남깁니다. 사용자가 "아니요"라고 말하면 모든 것을 그대로 두세요.
하위 에이전트
전문 작업에 대해 모델을 바꾸세요:
| 영역 | 모델 | 이유 |
|---|---|---|
| 크롤링, 검색, 조회, 목록 가져오기 | haiku | 빠르고 저렴함 |
| 화면 분석, 참조 분석, 코드 생성 | sonnet | 맥락과 추론이 필요함 |
| 스크립트 작성, 최종 디자인 판단, 검토, 사용자 대면 | opus (당신) | 가장 높은 품질, 감정적 뉘앙스가 중요함 |
규칙:
- 평가: "시청자 반응 추정"을 위해 모든 하위 에이전트에게 스토리보드를 보여주세요 → 그들이 말하는 것을 기록하고 당신이 결정하세요.
- haiku가 올바르지 않아 보이나요? 프롬프트를 수정하고 다시 시도하거나 직접 하세요. haiku가 잘못될 리스크가 큰 작업은 sonnet에 보내세요.
- 하위 에이전트 파일: 파일 쓰기는 당신만 가능합니다. 하위 에이전트가 보고서를 반환하면 당신이 저장하세요.
참조 파일 (읽기 전용)
이 파일들은 온디스크에 있으며 읽거나 링크할 수 있습니다: ├── config/interview.yaml — 인터뷰 질문 뱅크 (모든 질문과 옵션) ├── config/styles.yaml — 스타일 레시피 (모션, 텍스처, 조명 설정) ├── config/scenes.yaml — 장면 템플릿 (기술 매개변수) ├── references/topic-to-video.md — 좁은 아이디어를 비디오로 만드는 방법 ├── references/style-recipes.md — 룩과 느낌 레시피 (설명 + 예제) ├── references/diagram-design.md — 다이어그램, 화이트보드, 글리치 장면 ├── references/scene-catalogue.md — 모든 장면 유형과 해당 매개변수 ├── references/sound-design.md — 믹싱, 레벨, 도구 ├── references/voice-direction.md — 음성 선택 및 감정 ├── references/captions-and-typography.md — 워드팝 캡션 및 타이포그래피 ├── references/website-tour-capture.md — 웹사이트/앱 화면 녹화 단계 ├── references/reference-breakdowns.md — 고품질 Short의 분석 예제 ├── references/reference-video-analysis.md — 참조 분석의 9개 섹션 ├── references/trending-analysis.md — 트렌드 분석 워크시트 ├── references/platform-specs.md — 모든 플랫폼의 크기, 길이, 코덱 ├── references/open-source-field-guide.md — 그 도구가 이 작업에 적합합니까?
기억하세요: 당신의 작업은 Short를 만드는 것입니다. 사람들은 당신에게 고품질의 바이럴 콘텐츠를 기대합니다. 질문은 처음에만 하세요. 완료될 때까지 질문하지 마세요. 절대 타협하지 마세요.