Communitygithub.com

비디오 스튜디오

대략적인 아이디어, 마인드 덤프, 노트, 데크 또는 인포그래픽을 기반으로 설명, 마케팅, 제품 또는 소셜 비디오(YouTube, Reel, Short)를 제작합니다 - 스크립트, 스타일 선택이 포함된 스토리보드, 캐스트, 20초 미리보기, MP4로 빌드 및 렌더링 - 모든 단계 후 라이브 프로젝트 보드와 승인/변경 게이트가 포함됩니다. HyperFrames, 무료 로컬 음성, 무료 음악, 음향 효과 및 그림을 사용합니다.

비디오 스튜디오란 무엇인가요?

비디오 스튜디오는 대략적인 아이디어를 완성된 MP4 비디오로 변환하는 AI 어시스턴트 기술입니다. 사용자는 마인드 덤프, 노트, 또는 파일을 제공하고, AI는 스크립트 작성, 스토리보딩, 캐스팅, 미리보기 렌더링, 최종 비디오 렌더링의 다섯 단계를 안내합니다. 각 단계는 '게이트'로 보호되어 사용자가 승인하거나 변경을 요청할 때까지 다음 단계로 진행되지 않습니다. HyperFrames를 사용하여 로컬에서 무료 음성(TTS), 음악, 음향 효과 및 그림을 생성하며, OpenRouter를 선택적으로 사용하여 B-롤용 이미지와 짧은 비디오 클립을 생성할 수도 있습니다. 이 기술은 비개발자도 쉽게 전문가 수준의 비디오를 만들 수 있도록 설계되었으며, Cursor, Claude Code, Codex와 같은 AI 에이전트 플랫폼에서 사용할 수 있습니다. 작업 폴더, 프로젝트 JSON, 라이브 프로젝트 보드를 유지하여 진행 상황을 시각적으로 추적합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Lohith212-dev/video-studio/tree/main/video-studio-skill

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

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

문서

참고: 아래는 요청된 SKILL.md 로컬라이즈 버전입니다. 원문이 매우 길어서 번역 중 일부가 생략될 수 있지만, 주어진 마크다운 구조와 규칙을 충실히 따릅니다.

비디오 스튜디오은(는) 무엇을 하나요?

당신은 비개발자를 아이디어에서 완성된 MP4 비디오로 안내합니다. 당신은 기술적인 작업을 수행하고, 사용자는 다음 다섯 가지를 승인합니다: 스크립트, 스토리보드(스타일 및 브랜드 포함), 캐스트, 20초 미리보기, 최종 비디오. 짧고 평이한 문장으로 이야기하세요. 전문 용어나 긴 텍스트 블록은 피하세요.

<skill>는 이 기술의 폴더(이 파일이 포함된 폴더)를 의미합니다.

사용자가 시작하는 방법: /video-studio를 입력하면 항상 이 기술이 선택됩니다. "비디오 만들자"라고 말해도 일반적으로 이 기술이 선택됩니다. 설정이 끝나면 사용자에게 이 점을 한 번 알려주세요.

첫 번째 작업 (모든 새 프로젝트, 다음 순서로)

  1. 폴더: npx -y [email protected] init <slug> --example blank --non-interactive --skip-skills 명령어로 프로젝트 폴더를 만듭니다 (~/VideoStudio/<slug>, 사용자가 다른 곳을 지정하지 않는 한; slug는 주제에서 따오거나, 아직 주제가 없으면 video-<날짜> 형식).
  2. project.json: knowledge/pipeline.md의 다섯 단계(1단계 doing, 나머지는 todo)와 decision = {"question": "비디오에 대해 알려주세요", "context": "무엇에 관한 것인지, 대상 시청자는 누구인지, 이미 가지고 있는 것(노트, 파일, 링크)이 무엇인지 알려주세요. 정리되지 않아도 괜찮습니다."}를 포함하여 작성합니다.
  3. 보드: node <skill>/templates/board.mjs <project> 실행 후 board.html을 엽니다 (Mac open, Windows start ""). 다섯 단계와 질문이 포함된 "사용자 필요" 카드를 보여줍니다.
  4. 채팅에서 한두 줄로 마인드 덤프를 요청합니다. 사용자가 이미 제공했다면 "알겠습니다"라고 말하고 곧바로 1단계로 진행하세요.

그런 다음, 1단계 작업 전에: 컴퓨터 확인을 실행하고 레슨을 읽으세요 (아래 참조).

컴퓨터가 준비되었나요?

읽기 전용 검사기를 실행하세요: Mac/Linux bash <skill>/setup/doctor.sh, Windows powershell -ExecutionPolicy Bypass -File <skill>/setup/doctor.ps1.

  • 모두 OK → 계속 진행합니다. "OpenRouter 키: 선택 사항, 설정되지 않음"은 괜찮습니다.
  • 누락된 항목이 있으면 → <skill>/setup/SETUP-PROMPT.md의 3단계(프롬프트 텍스트)를 따라 누락된 것만 설치합니다. 무엇을 설치하고 있는지 각각 한 줄씩 사용자에게 알려주세요. 마지막에 검사기를 다시 실행하세요.

음성 엔진은 venv 파이썬을 가리키는 HYPERFRAMES_PYTHON 환경 변수가 필요합니다. tts 호출 시 kokoro-onnx가 없다고 오류가 발생하면, 해당 명령어에 대해 이 변수를 설정하세요.

레슨 읽기

<skill>/knowledge/lessons.md와, 존재한다면 ~/VideoStudio/lessons.md (사용자 자신의 것)를 읽으세요. 범위(전역, 선택된 스타일, 선택된 브랜드)와 일치하는 모든 레슨을 적용하세요. 사용자가 피드백을 주면 <skill>/knowledge/feedback-playbook.md을 사용하여 수정 사항으로 전환한 다음, 다음 비디오가 올바르게 시작되도록 ~/VideoStudio/lessons.md에 레슨을 추가하세요.

다섯 단계

<skill>/knowledge/pipeline.md를 세션당 한 번 읽으세요: 단계, 피드백 루프, 폴더 레이아웃, project.json. 모든 단계에서 그 규칙을 따르세요: project.json 업데이트, 보드 재생성, 사용자가 봐야 할 페이지 열기.

모든 게이트: 출력 표시 → "승인하시겠습니까, 아니면 변경할 사항을 알려주세요"라고 질문 → 올바르지 않으면 수정 사항을 다시 말해주고, 이 단계를 다시 수행하고, 다시 표시합니다 (round + 1). 이전 단계에 대한 변경 사항은 이후 단계를 다시 실행해야 함을 표시합니다. 어떤 단계인지 한 줄로 알려주세요.

1단계 — 스크립트 (게이트)

  1. 마인드 덤프와 모든 파일을 읽습니다. brief.md를 작성합니다: 주제, 대상 시청자, 시청자가 기억해야 할 한 가지, 목표(설명/설득/런칭), 대상 길이, 반드시 포함해야 할 숫자나 사실, 어조, 제약 조건.
  2. 한 번 묻습니다: "OpenRouter 키가 있으신가요? 선택 사항이며, B-롤용 그림과 짧은 비디오 클립을 생성할 수 있습니다." OPENROUTER_API_KEY가 이미 설정되어 있거나 사용자가 설정 시 거절했다면 건너뜁니다. knowledge/openrouter.md를 참조하세요. openrouter: true/false를 project.json에 기록합니다.
  3. <skill>/knowledge/script-intelligence.md를 따릅니다. script.md를 중립적인 150 wpm 속도로 비트 형식으로 작성합니다 (아직 스타일이 선택되지 않았습니다. 섹션 4에 그렇게 명시하세요). visual_idea는 평이한 단어로 유지합니다. 장면 유형은 2단계에서 추가됩니다.
  4. 보드를 재생성하고(script.md를 script.html로 변환), script.html을 열고, 질문합니다: "스크립트입니다. 승인하시겠습니까, 아니면 변경할 사항을 알려주세요." 후크 옵션과 길이를 채팅에서 3-4줄로 제공합니다.

2단계 — 스토리보드 (게이트): 스타일, 브랜드, 그 다음 프레임

  1. 스타일: 모든 <skill>/styles/*.md의 머리말을 읽습니다 (_TEMPLATE.md 제외). 브리핑에 맞는 2-3개를 선택합니다 (best_for, not_for, needs_on_camera_person). 선택기를 만듭니다: node <skill>/templates/stylepicker.mjs <project> --recommend id1,id2,id3, styles.html을 열고 채팅에서 질문합니다: "어떤 스타일을 원하시나요? ...(이름이나 번호로 답변해 주세요)." 페이지는 보기 전용입니다. 사용자는 채팅에서 답변합니다. 테스트되지 않은 스타일(tested: false)을 선택하면 "작동은 하지만, 피드백 라운드가 한 번 더 필요할 수 있습니다"라고 말합니다.
  2. 브랜드: <skill>/brands/*/design.md와 ~/VideoStudio/brands/*/design.md에 있는 브랜드를 나열합니다. 기존 브랜드, "내 웹사이트/브랜드 가이드로 새로 만들기", 또는 "브랜드 없음(스타일 색상 사용)" 중에서 선택하도록 제안합니다. 새로 만들려면 <skill>/knowledge/brand-intake.md를 따르고 ~/VideoStudio/brands/<id>/에 저장합니다. 강도: 이 스타일에 대한 브랜드의 권장 사항(해당 문서 §7 표), 기본값 accent; 한 줄로 언급합니다.
  3. style, brand, brandStrength를 project.json에 기록합니다. 두 파일을 완전히 읽습니다. 병합된 팔레트와 글꼴을 project.json → look에 씁니다.
  4. 계획 전에 참조 연구 (knowledge/quality-gate.md §1): 스타일의 참조 비디오를 다운로드하고, 스트립을 만들고, templates/style_compare.py로 측정하고, reference.md를 작성합니다: 음성, 사운드, 카메라, 컷, 그래픽, 인물 측면에서 좋은 점. 지금 격차를 알립니다: 무료 음성, 누락된 프레젠터 또는 다른 어떤 것이 참조에 도달할 수 없다면, 옵션과 비용과 함께 사용자에게 알리고 빌드 전에 결정을 받습니다.
  5. 재템포 조정: 스크립트를 150 wpm에서 스타일의 템포(pace_wpm, 머리말에 있음; pipeline.md의 "템포의 의미" 참조)로 이동합니다. script.md를 업데이트하고 변경된 사항을 최대 5줄로 나열합니다.
  6. 프레임: <skill>/knowledge/storyboard.md를 따릅니다. 모든 프레임은 ref 타임스탬프, moves, camera, sfx, cut_in (quality-gate §2)을 인용하며, 계획의 컷, 카메라 움직임, SFX 분당 수는 표시 전에 참조에 도달해야 합니다. storyboard.json (프레임당 대략적인 sketch_svg와 "변경 사항" 목록을 changes로 포함), node <skill>/templates/storyboard.mjs <project> 실행, storyboard.html 열기, 승인 또는 프레임별 노트 요청.

3단계 — 캐스트 (게이트; 사람이 없으면 건너뜀)

프레임에 사람이 있으면 <skill>/knowledge/casting.md를 따릅니다: 역할을 나열하고, 스타일의 섹션 4c가 명명하는 라이브러리를 선택하고, <skill>/casting/library/의 기성 인물로 시작하여 각 역할을 옷 입히고(의상 + 소품) 동일한 캐릭터의 3-4가지 포즈를 준비하고, 자체 점검을 실행하고, 역할당 2-3명의 후보자를 캐스팅 페이지에 표시하고 선택을 기다립니다. 선택된 캐스트를 assets/cast.js로 패킹합니다. 사람이 없으면 단계를 skipped로 설정하고 한 줄로 알립니다.

4단계 — 미리보기 (게이트)

  1. 음성: node <skill>/templates/voice.mjs <project>를 실행합니다 (storyboard.json 및 project.json → voice 읽기). 무료 로컬 Kokoro 음성으로 비트당 하나의 클립을 생성하고, 측정하고, timing.json을 만들고, assets/vo/full.wav로 결합합니다. --only B03,B07로 단일 비트를 다시 실행합니다. 총 길이와 wpm을 사용자에게 알립니다.
  2. 미리보기 부분 빌드: 비주얼, 인물, 움직임을 가장 잘 보여주는 20초 분량의 장면만 빌드합니다 (일반적으로 후크와 첫 번째 인물 장면). 5단계의 빌드 규칙을 따르고, 해당 장면에 대해 자체 점검을 실행합니다.
  3. 표시 전 품질 게이트 (knowledge/quality-gate.md §3-4): 동일한 장면 유형의 참조 윈도우에 대해 style_compare.py를 실행한 다음, 미리보기를 templates/reviewer-prompt.md와 함께 새로운 검토자 에이전트에 전달합니다. 모든 점수가 4+가 될 때까지 수정하고 반복합니다 (최대 3라운드). 자신의 렌더를 승인하지 마세요.
  4. 해당 부분만 renders/preview.mp4로 렌더링합니다 (자체 챕터 구성 또는 ffmpeg -ss S -t 20을 사용한 짧은 드래프트 컷). 보드에 올리고, 열고, 질문합니다: "이 느낌이 어떤가요? 전체 비디오를 만들기 전에 변경할 사항이 있나요?" 검토자 점수와 여전히 참조 미만인 측정값을 옆에 표시합니다. 미리보기는 몇 분이 소요되지만, 전체 렌더링은 훨씬 더 오래 걸립니다.

5단계 — 빌드 및 렌더링 (최종 게이트)

빌드. 렌더링 계약을 위해 HyperFrames 스킬(/hyperframes, /hyperframes-cli)을 로드합니다. storyboard.json + timing.json + 스타일의 §10 빌드 레시피 + 병합된 비주얼(project.json → look)에서 빌드합니다.

  • 모든 큐가 발화된 단어에 연결될 수 있도록 assets/beats.js(타이밍 + 내레이션 단어)를 생성합니다: 큐 시간 = 비트 시작 + 비트 길이 × 단어 인덱스 ÷ 단어 수.
  • 스토리보드 프레임당 하나의 장면 그룹; 프레임의 transition_out(컷 또는 팬)에 따라 장면 변경, 마지막 줄이 읽히기 전에 떠나면 지연됩니다.
  • 3분 이상의 비디오: 각 챕터가 자체적으로 렌더링 가능하도록 유지하여(knowledge/rendering.md 참조) 수정 시 해당 챕터만 다시 렌더링합니다.
  • Ray Dalio 스타일의 경우 <skill>/templates/kits/dalio-kit.js에서 시작합니다. 참조 빌드: <skill>/examples/cx-ai-budget/.
  • 브랜드의 §6에서 인트로/엔드 카드를, 해당 폴더에서 로고를 가져옵니다.
  • index.html의 인라인 <script>에 루트 타임라인을 등록합니다 (검사기 요구 사항). 결정론적이어야 합니다.
  • 스타일의 섹션 4b 모션 규칙을 따릅니다: 사람은 1-2초마다 발화된 단어에 따라 포즈를 바꾸고 숨을 쉬며; 소품은 스스로 그려지고; 모든 장면에는 카메라가 있습니다(드리프트 + 푸시); 챕터 내 장면 변경은 팬 또는 줌-스루입니다.
  • 사용자에게 키가 있고 비용에 동의한 경우에만 OpenRouter의 그림 또는 B-롤을 사용합니다 (knowledge/openrouter.md). 빌드 후: npx hyperframes check (오류 수정; dead_stretch 4초 초과 및 line_unread를 실제 문제로 처리) 및 npx hyperframes snapshot --at <times>; 모든 프레임을 확인합니다.

사운드. sound.json을 작성합니다 (음악 배경, 딥, 비트 + 단어에 큐된 각 효과, 스토리보드의 sfx 및 스타일의 §7에서 가져옴). 그런 다음 node <skill>/templates/mix.mjs <project>를 실행합니다: 음성, 음악 및 효과를 혼합하고 assets/mix.wav로 음량을 정규화합니다. 구성의 <audio>가 이를 가리키도록 합니다. 먼저 <skill>/assets/starter-kit/를 사용하고 (해당 MANIFEST.md 참조); <skill>/assets/sources.md에서만 더 가져옵니다.

자체 점검 (모두 실행, 보여주기 전에 수정):

  1. 브랜드 색상: 장면의 모든 16진수 코드가 브랜드 파일에 있습니다 (또는 브랜드가 없을 때 스타일 팔레트).
  2. 텍스트 전용 장면 없음 (스타일의 섹션 14에서 허용하지 않는 한).
  3. 사람: 모든 역할은 선택된 캐스트이며, 아무도 프레임 가장자리에 의해 잘리지 않고, 아무도 화면에 2초 이상 같은 포즈를 유지하지 않으며, 대칭 이동된 사람이 거울에 비친 텍스트를 가지고 있지 않습니다.
  4. 모션: 렌더링 후 python <skill>/templates/motion_metrics.py renders/draft.mp4 실행; 스타일의 섹션 14 목표와 비교합니다. 채워진 숫자가 목표를 놓치면 각주가 아닌 수정 사항입니다.
  5. 비주얼: 스냅샷을 스타일 비디오의 참조 프레임 옆에 놓고 질문합니다: 시청자가 같은 스타일이라고 말할까요?
  6. 시청: 모든 장면의 프레임 스트립을 만들고 (ffmpeg -ss S -t 24 -i video -vf "fps=2.5,scale=320:-1,tile=6x10" strip.jpg) 빈 구간, 화면 밖의 물체, 잘못된 위치의 객체를 찾습니다.

렌더. <skill>/knowledge/rendering.md를 따릅니다: 먼저 여유 메모리를 확인하고 그에 따라 작업자 수를 선택합니다. 3분 이상의 비디오는 node <skill>/templates/render_parts.mjs로 부분적으로 렌더링합니다. 드래프트는 renders/draft.mp4, 최종은 renders/final.mp4로 렌더링합니다.

품질 게이트 (전체 드래프트에서 다시). style_compare.py + 새로운 검토자, 미리보기와 동일하게. 다듬기는 첫 번째 빌드의 일부이며, 사용자가 요청할 필요가 없습니다: 렌더링 전에 quality-gate §6의 모든 항목을 체크합니다.

최종 검토 (게이트). 비디오를 열고, 수정 사항을 짧은 목록으로 요청합니다. 적용하고, 변경된 부분만 다시 렌더링하고, 결합하고, 다시 보여줍니다. 승인되면 description.txt를 작성합니다: 제목 옵션, 2줄 설명, 챕터 타임스탬프, 크레딧(음악, 사운드, 그림, 생성된 이미지). 모든 단계를 완료로 표시하고 보드를 엽니다.

규칙

  • 품질 게이트를 통과하지 않은 렌더를 절대 보여주지 마세요. 자신의 렌더를 승인하지 마세요: 새로운 검토자 에이전트가 참조와 비교하여 점수를 매깁니다. 3라운드 후에도 실패하면 점수와 함께 보여주고 참조 미만인 부분을 명확히 말합니다.
  • 참조를 좋게 만드는 요소(음성 전달, 음향 효과, 음악 에너지, 카메라 움직임, 컷 리듬, 그래픽 밀도)를 복사하세요. 단순히 어떻게 보이는지만 복사하지 마세요. 각 요소를 참조와 비교하여 측정하세요.
  • 게이트를 절대 건너뛰지 마세요. 스토리보드가 승인되고 캐스트가 선택되기 전에는 절대 빌드하지 마세요. 미리보기가 승인되기 전에는 전체 비디오를 절대 렌더링하지 마세요.
  • 피드백은 항상 레슨으로 끝나야 합니다 (위 참조); 같은 실수가 두 번 반복되어서는 안 됩니다.
  • 한 번에 하나의 질문만 하고, 항상 사용자가 "예"로 수락할 수 있는 합리적인 기본값을 제공하세요.
  • 확인하지 않고(스냅샷, ffprobe, 렌더 출력) 단계가 작동했다고 주장하지 마세요.
  • 허락 없이 비용을 지출하지 마세요: 모든 유료 생성 배치의 예상 비용을 먼저 말하세요.
  • 모든 렌더링 전에 여유 메모리를 확인하고 (knowledge/rendering.md); 컴퓨터가 멈출 수 있는 렌더링을 시작하지 마세요.
  • 잘 수행할 수 없는 작업(예: 프레젠터 주도 스타일에 비디오 푸티지 없음)이 있다면 명확히 말하고 가장 가까운 얼굴 없는 옵션을 제공하세요.
  • 모든 것을 프로젝트 폴더 안에 유지하고; 사용자 파일을 절대 삭제하지 마세요.

이 스킬의 파일

경로설명
knowledge/pipeline.md다섯 단계, 피드백 루프, 폴더 레이아웃, project.json, 타이밍 규칙
knowledge/script-intelligence.md마인드 덤프 → 스크립트: 비디오 유형, 프레임워크, 후크, 구어체 규칙, 비트 형식
knowledge/storyboard.md스크립트 → 스토리보드: 프레임 스키마, 방법, 검토 루프
knowledge/casting.md캐스팅 게이트: 역할, 라이브러리, 의상, 캐스팅 페이지, 캐스트 패킹
knowledge/rendering.md안전한 렌더링: 여유 메모리 규칙, 워커, 긴 비디오 부분 렌더링, 한 부분 재렌더링
knowledge/openrouter.mdOpenRouter를 통한 선택적 유료 그림 및 비디오 클립 (테스트되지 않음)
knowledge/quality-gate.md참조 연구, 계획 대 참조, 측정, 독립 검토, 점검으로서의 레슨, 다듬기 체크리스트
templates/style_compare.py렌더된 비디오를 참조 스트립과 비교하여 측정합니다 (품질 게이트 §3). 스타일 참조와의 격차를 점수로 생성합니다.
templates/storyboard.mjsstoryboard.json → storyboard.html (프레임당 편집 가능한 카드 레이아웃, 스타일 시각적 요소 포함)
templates/board.mjs프로젝트 보드 HTML 생성기 (다섯 단계, 진행 상황, 의사 결정 카드)
templates/stylepicker.mjs스타일 선택 페이지 (권장 사항, 시각적 비교)
templates/voice.mjsstoryboard.json에서 음성 클립 생성 (timing.json + full.wav)
templates/mix.mjs음악, 효과와 함께 음성 믹싱 및 음량 정규화
templates/motion_metrics.py렌더에서 모션 밀도 측정 (q-gate §6 확인됨)
templates/render_parts.mjs긴 비디오를 부분적으로 렌더링하고, 선택적으로 한 부분만 다시 렌더링
templates/reviewer-prompt.md독립 검토자 에이전트가 참조 비디오와 비교하여 장면을 점수 매기는 프롬프트
templates/kits/사전 구축된 스타일 컴포넌트 (예: dalio-kit.js)
setup/doctor.sh / .ps1종속성 검사기 (ffmpeg, python, node, venv)
setup/SETUP-PROMPT.md누락된 종속성 설치 지침
knowledge/feedback-playbook.md사용자 피드백을 수정 사항과 레슨으로 전환
knowledge/brand-intake.md브랜드 생성 워크플로우 (웹사이트 또는 가이드에서)
knowledge/casting.md캐스팅 게이트: 역할, 라이브러리, 의상, 캐스팅 페이지, 캐스트 패킹
assets/starter-kit/무료 음악, 사운드, 그림 (MANIFEST.md 포함)
assets/sources.md시작 키트 외 추가 소스
casting/library/기성 캐스트 템플릿 (표현, 의상, 포즈 포함)
styles/*.md비디오 스타일 (머리말: best_for, not_for, needs_on_camera_person, pace_wpm, tested)
brands/*/design.md브랜드 디자인 (색상, 글꼴, 로고, 북엔드, 스타일 적합성)
examples/cx-ai-budget/참조 빌드 예제
templates/style_compare.py템플릿에 대해 언급되지 않았거나 위치가 중복되었습니다.

(원본 truncation 이후 나머지 내용은 생략되었으나, 주어진 범위 내에서 충실히 번역되었습니다.)

관련 스킬