Communitygithub.com

adukhan98/stripe-video-skill

Adnaan의 하우스 릴 스타일입니다. 원시 토킹 헤드 테이크(및 선택적 스크립트, 링크, 화면 녹화 또는 스크린샷)를 완성된 세로 릴로 변환합니다. 모든 비트가 v7 'MINT' 룩(2026-10-17 이후 하우스 기본값)의 전체 화면 애니메이션 장면입니다.

stripe-video-skill란 무엇인가요?

이 스킬은 Adnaan의 발언 영상을 그의 승인된 v7 'MINT' 룩과 정확히 일치하는 전문적인 세로 릴로 변환합니다. 모든 비트는 TALK(그가 전체 화면으로 등장하며 독특한 운동성 자막이 표시됨) 또는 VISUAL(회색 보드, 아이콘 디스크, 실제 페이지 및 이동 카메라가 포함됨) 모드를 가지며, 시그니처 축소 효과가 이들을 연결합니다. 이 스킬은 특정 비트를 자막(kinetic Inter Tight 900 자막, 하나의 민트 강조 단어 포함)으로 태그하고, 실제 제품과 로고를 표시하며, Lasseter의 애니메이션 원칙을 준수합니다. Claude Code(APO)에서 실행되며, 분할된 오디오 트랜스크립트에서 장면 경계를 읽고, 승인된 비트 테이블을 기반으로 모든 장면을 병렬로 구축하고, 컷 정확성을 확인하며, 출력을 `<project>/edit/` 디렉토리에 제공합니다.

지원 대상✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/adukhan98/stripe-video-skill/tree/HEAD/skills/adnaan-reel

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

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

문서

adnaan-reel

Adnaan의 영상 → 승인된 참조 편집과 정확히 동일한 릴로 변환합니다. 그 전에 assets/style/v8_contact_sheet.jpg를 보십시오 — v7 'MINT' 룩의 승인된 reel-08 스타일 테스트로, 2026-10-17 이후 하우스 기본값입니다(examples/reel-08-v7/의 장면): 그가 전체 화면으로 등장하는 TALK 비트 + 당사의 운동성 자막, 회색 보드의 VISUAL 비트, 아이콘 디스크, 디스크 체인 및 이동 카메라, 시그니처 축소. 먼저 references/style.md 'v7'을 읽으십시오 — 이전 섹션과 충돌하는 경우 이를 재정의합니다. v6 사운드 규칙, 안전 영역, 가독성 규칙 및 모션 원칙은 여전히 적용됩니다. 아트 디렉션은 references/style.md에 있으며 바인딩됩니다. 장면 문법(릴이 장면으로 분할되는 방식 및 존재하는 장면 유형)은 references/scenes.md에 있습니다. 룩은 코드입니다: 공유 런타임 templates/runtime/paper.css + paper.js(세계, 운동성 유형, 프리미티브, Lasseter 원칙의 모션) + v7.css + v7.js(v7: 아이콘 디스크, 디스크 체인, 디스크/카드로 축소/확대, 카메라, 영역 마스크) + templates/scenes/의 장면 유형별 하나의 스타터(talk, talk_depth, visual, chain, card); slots.py prepare가 이를 모든 장면에 설치하므로 장면은 약 150줄의 복사본, 위치 및 하나의 맞춤 개체입니다. 레거시 PAPER 룩(빨간 종이 + 손으로 그린 마커 레이어 marker.css/marker.js, 분할 밴드, reel-06/07 — assets/style/v6_contact_sheet.jpg, v7_contact_sheet.jpg, examples/reel-06/, reel-07/)은 init-brand --look paper이며, 그가 요청할 때만 사용합니다. 이전 아이디어 뱅크: examples/reel-04/, reel-05/ 및 references/motion-ideas.md(세리프 편집 룩: examples/reel-03/, init-brand --type editorial).

비디오를 시청하지 않습니다 — 읽습니다: 단어 수준의 트랜스크립트, 결정 지점의 필름스트립, 그리고 조인을 트랜스크립션하는 검증 도구.

원칙

  1. 모든 비트는 장면이며, 두 가지 MODE(v7) 중 하나입니다. 전체 릴은 잠긴 컷 위에 8–18개의 전체 화면 HyperFrames 장면이 연속적으로 구성되며, 모든 비트는 비트 테이블에서 모드를 선택합니다: TALK(그가 전체 화면, 그 위에 당사의 운동성 자막 — 후크, 전환, 의견, 페이오프, CTA; talk, 또는 그 뒤에 무언가가 있을 때 talk_depth) 및 VISUAL(화자 없음; 보드, 아이콘 디스크, 평면 벡터 소품, 실제 페이지, 이동 카메라 — 모든 설명, 목록 항목, 예제; visual). 그는 릴의 약 50% 동안 화면에 있습니다. 그가 없는 Visual 스트레치는 ~8초를 넘지 않습니다. 시그니처 축소(릴당 1–3회: 그의 영상이 현재 체인 디스크 또는 작은 왼쪽 카드로 축소됨, chain / card; V.grow가 그를 페이오프를 위해 다시 가져옴)가 모드를 연결합니다. 작은 카드는 0–2회 나타납니다. 목록 릴의 맵은 디스크 체인(V.chain)입니다. 긴 화면 녹화는 demo 유형입니다.
  2. 단어가 자막입니다. 자막이 아닙니다. 운동성 Inter Tight 900 구문이 음성 단어에 맞춰 나타납니다(크게, 히어로 170–270 px 작성, ×0.94 하우스 --type-scale; 색상으로 강조, 이탤릭체 없음; v7: 그의 영상 위에 부드러운 광택이 있는 차콜, 하나의 민트 히어로 단어, 민트는 히어로 크기에서만). 화면의 단어는 그가 실제로 말하는 단어만(이름의 ASR 철자 수정됨) — 더하기 그가 작성하는 선택적 텍스트 후크(프레임-0 헤드라인).
  3. 실제 제품을 실제 로고와 함께 보여주세요. 그가 이름을 언급하는 모든 제품, 리포지토리, 사이트, 파일 또는 프레임워크는 실제로 나타납니다: 브라우저 카드에 캡처된 페이지, 실제 리포지토리 슬러그, 별표 수, 실제 제목 및 부품 이름. 그가 언급하는 모든 도구 또는 회사는 공식 로고를 받습니다(fetch.py logo, official로 기록됨), 수정되지 않은 <img>로 이름 옆 또는 앱 카드에 칩/필 형태로 표시됨 — 로고가 존재하는 경우 다시 그리거나 색상을 변경하거나 텍스트 전용 필로 대체하지 않습니다. 예시 UI는 괜찮습니다. 발명된 숫자, 인용문 또는 게시물은 허용되지 않습니다.
  4. 계획을 승인한 다음 모든 것을 구축하십시오. 하나의 비트 테이블 → 승인 → 모든 장면 병렬 구축 → 조립 → 자체 점검 → 제공. 오토파일럿('그냥 해')은 대기를 건너뜁니다.
  5. 절대 지루하지 않고, 항상 애니메이션됩니다. 각 장면에는 실제 모션이 있는 히어로 아이디어(사물이 처리, 열림, 병합, 쌓임, 점선 경로를 타고, 회색에서 강조 색상으로 전환)와 지속적인 생동감이 있으며, 모든 움직임은 Lasseter의 원칙(references/animation-principles.md: 예측, 오버슛 + 안정, 오버랩, 호, 스테이징, 2차 동작, 하나의 과장된 비트, 진입보다 빠른 퇴장)을 따릅니다. 런타임이 기본적으로 이를 수행합니다. 맞춤 개체도 마찬가지여야 합니다. 장면이 정적 슬라이드가 될 수 있다면 다시 하십시오. 풍부함은 하우스 수준(reel-05)이며, v6에 의해 조정됩니다: 한 번에 약 2개의 초점 요소와 그리드의 35–50%가 비어 있음(콘텐츠 종속 지침, 엄격한 게이트 아님) — 히어로 개체 + 1–3개의 2차 마이크로 애니메이션으로 문장을 표현함 — 작업을 수행하는 커서, 실제 값으로 롤링되는 실제 숫자, 살아 움직이는 아이콘, 부드러운 물리, 개성이 있는 캐릭터, 공연하는 유형, 단어에 착지하는 히어로 아이콘(references/motion-ideas.md).
  6. 상단에 깨끗한 평면 벡터(v7) — 민트 룩에 손으로 그린 마커 없음. 흰색 Phosphor 글리프가 있는 아이콘 디스크(fetch.py icon, V.disc), 스스로 그리는 깨끗한 벡터 스트로크(커넥터, 밑줄 막대, 돋보기 테두리 — 동일한 두께, 끓지 않음), 모션에 개성이 있는 평면 벡터 히어로 개체, 실제 텍스트 뒤의 민트 하이라이터. 복숭아색은 데이터 전용입니다. (레거시 페이퍼 룩은 빨간 펠트 팁 마커 + Caveat 노트, hf/marker.js를 유지합니다.)
  7. 항상 읽을 수 있어야 합니다. 모든 것은 안전 영역 내부(측정됨), 실제 페이지는 큰 스트립(≥ 0.85, ~45 px 텍스트)이며 음성 구문 뒤에 하이라이터가 있고, 반투명 텍스트가 없으며, 그의 옷 위에 단어가 읽기 쉽습니다(v7: 차콜 + 광택, 히어로 크기에서 민트; 페이퍼 룩: 단색 종이 위에), 칩/로고/낙서는 휴대폰에서 충분히 큽니다. 그가 이것을 명시적으로 요청했습니다. IG 안전 영역(v6): 하단 20%에는 아무 것도 없고, y 1200 아래 x 900 오른쪽에는 아무 것도 없음(좋아요/댓글/공유) — CTA는 하단 왼쪽/중앙에 배치됩니다.
  8. 사운드는 음성을 지원합니다 — 30% 규칙(v6). 미키마우싱 없음: 0:00–0:04에 1–2개의 펀치감 있는 촉각적 사운드, 그 다음 구조적 전환만(포인트 1/2/3, 모드 전환, 큰 스크린샷 슬라이드 인, CTA 착지) — 70초 동안 약 10–14개의 큐, 낮고 따뜻한 v6 키트(assets/sfx/v6_*: 스탬프, 클렁크, 썰드, 종이, 우쉬, 팝)에서 가져와 5 kHz에서 저역 통과됨. 에이전트는 해당 비트를 beats.json에서 "role": "hook" | "structural"로 태그합니다. scenes.py edl(기본값 --sfx-policy sop)은 다른 모든 것은 침묵 상태로 둡니다. 믹스: 음성이 전면, SFX −16…−22 dB, ElevenLabs Music 배경(악기, 아크에 맞춰 시간 조정됨) −22…−26 dB(음성 아래), --music을 통해, 마지막 3초 동안 +2.5 dB.
  9. 보여주기 전에 확인하십시오. 모든 조인이 트랜스크립션되고, 모든 장면이 체크시트로 확인되며, 조립된 릴이 플래시 스캔되고 샘플링됩니다. 직접 게시하지 않을 것 같으면 제시하지 마십시오.

하드 규칙

  1. 장면이 구축되기 전에 비트 테이블이 승인되어야 함(오토파일럿이 아닌 경우).
  2. 세그먼트별 추출 → 무손실 연결 컷용(render.py), 조인에서 30ms 오디오 페이드, 단어 내부에서 절대 자르지 않음, 가장자리 패딩, 단어 수준 트랜스크립트만, 소스별 캐시.
  3. 모든 필러 컷과 모든 조인 확인 verify_cuts.py로 — whisper가 단어 끝을 조기에 끝내고, audio_env.py tighten이 부드러운 단어 끝을 먹음('code', 'immediately', 'base', 'use'는 참조 편집에서 모두 잘렸습니다. 'works'는 reel-05에서 's'를 잃었지만 ASR은 여전히 'works'로 읽었습니다). 모든 조인 라인과 그 ⚠ TAIL/HEAD 에너지 플래그를 읽으십시오(의도적인 필러 컷도 플래그 지정 — 예상됨); 실제 단어가 잘린 경우 범위 끝을 제안된 시간으로 확장하고 깨끗해질 때까지 다시 프로브하십시오.
  4. edit/에서 부분 또는 테스트 EDL을 절대 렌더링하지 마십시오. render.py는 EDL 옆에 base.mp4와 timeline.json을 씁니다 — edit/의 테스트 EDL은 실제 베이스를 덮어씁니다. scenes.py preview <id>로 하나의 장면을 미리 보십시오. verify_cuts.py --probe로 컷을 테스트하십시오.
  5. 장면 EDL은 scenes.py edl에서만 생성됩니다. 모든 장면을 프레임 스냅하고, 12ms를 사전 롤링하며, 각 장면을 다음 장면 아래에서 0.1초 동안 유지합니다 — 그렇지 않으면 render.py의 오버레이 동기화가 모든 장면 경계에서 하나의 RAW 영상 프레임을 누출합니다. 그런 다음 scenes.py flashcheck <render> --edit-dir edit: 0개의 예상치 못한 RAW 영상 프레임(모든 프레임을 base.mp4와 비교합니다 — reel-05의 천장은 종이 색상이었으므로 이전 모서리 테스트는 눈이 멀었습니다. 계획된 fullscreen / demo 창은 slots.json에서 제공되며 예상됩니다).
  6. 장면당 하나의 하위 에이전트, 모두 하나의 메시지에서 생성됨. 각 check_sheet.jpg / motion_strip.jpg가 도착할 때 검토하십시오. 수정 사항을 동일한 에이전트에게 SendMessage로 보내십시오(컨텍스트 유지). 모든 장면은 정확히 해당 TASK.md 프레임 수입니다(slots.py가 사전 설정하고 check가 강제 실행) — scenes.py edl 전에 ffprobe로 모든 개수를 확인하십시오. 1프레임 누락은 컷에서 간격 또는 겹침입니다.
  7. 런타임을 통한 브랜드 충실도. 장면은 설치된 대로 paper.css/paper.js + v7.css/v7.js(민트) 또는 marker.css/marker.js(종이)를 사용합니다 — 절대 편집하지 않으며, 장면별로 재구현하지 않습니다(자체 카드 또는 단어 엔진이 있는 장면은 검토에서 거부됨). brand.css 토큰만; 번들된 글꼴이 로드되었는지 확인; 로고를 그리거나 색상을 변경하지 마십시오(공식 파일의 실제 로고만, 기록됨); 하나의 강조 색상. 유료 글꼴을 복제하지 마십시오 — 그가 상업용 얼굴을 원하면 라이선스를 구매하고 파일을 넣습니다. 그때까지는 가장 가까운 OFL 얼굴을 사용하십시오(Bootzy TM → Inter Tight 900, 현재 기본값). 전역 변경(글꼴, 카드 크기, 이징)은 templates/runtime/에서 한 번 수행한 다음 scenes.py runtime + scenes.py rerender를 수행하십시오.
  8. 다운로드는 fetch.py를 통해, 캡처는 capture.py를 통해(둘 다 소스 + 권한 기록); fetch.py credits → credits.md를 제공 전에. 타사 페이지는 그가 추천하는 것에 대한 논평으로, 브라우저 카드에 표시되며 그의 것으로 오해되지 않습니다.
  9. 모든 출력물은 <project>/edit/에 있습니다. 스킬 디렉토리 내부에 절대 쓰지 마십시오.
  10. 컷 전 미러 확인: 전체 해상도 스틸에서 그의 옷/배경의 텍스트 또는 로고를 확대하십시오(필름스트립은 너무 작습니다 — reel-06의 거꾸로된 'SAN DIEGO' 패치는 장면 검토에서만 발견되었으며 모든 스피커 클립의 재컷이 필요했습니다). 거꾸로 → "mirror": true.
  11. 가독성은 검토 게이트입니다(style.md '가독성'): 영역 밖의 픽셀, 읽을 수 없는 페이지, 고스트 텍스트, 어두운 직물의 단어 또는 휴대폰 크기의 칩/낙서가 있는 장면은 해당 에이전트로 돌아갑니다.
  12. 보고서가 아닌 타임스탬프를 신뢰하십시오: 에이전트가 '다시 렌더링됨'이라고 말한 후 render.mov가 해당 입력보다 최신인지 확인하십시오(reel-06 v01은 결코 도착하지 않은 재렌더를 보고했습니다).

설정

video-edit와 동일한 툴체인(install.md의 세부 사항): libass + zscale이 있는 ffmpeg/ffprobe, uv(도우미는 uv run --project <skill_dir> <skill_dir>/helpers/<name>.py …로 실행됨), 트랜스크립션(ElevenLabs 키 → Scribe; 그렇지 않으면 Apple Silicon mlx via uv sync --extra mlx; 그렇지 않으면 whisper.cpp), HyperFrames용 Node 22+(npx --yes hyperframes …), capture.py용 Google Chrome. <skill_dir>은 이 파일이 포함된 폴더입니다(~/.claude/skills/adnaan-reel).

신선도(세션당 한 번, 렌더링 전): 스킬은 언핀된 npx --yes hyperframes를 호출하며, 이는 최신 게시된 CLI로 확인됩니다(장면 package.json 핀은 npm run에서만 사용되며, 우리는 절대 호출하지 않습니다). npx --yes hyperframes --version 대 npm view hyperframes version으로 확인하고, HyperFrames 스킬이 오래된 경우 npx --yes hyperframes skills check → npx --yes hyperframes skills update를 실행하십시오(2026-10-14에 10개가 뒤쳐져 있었습니다). project.md에서 CLI 버전을 기록하십시오. 업데이트 후 렌더링이 이전 릴과 다르게 보이면 그렇게 말하십시오.

도우미

도우미기능
scenes.py init-brand --edit-dir E [--look mint|paper] (mint = v7 house default) [--accent red|ocean|…|#hex] (paper look only; red default) [--type grotesk|editorial] [--type-scale 0.94] --frame still.jpg번들된 글꼴 복사(grotesk 기본값: Inter Tight + Inter + Geist Mono; editorial: Newsreader + Fraunces + Geist), brand.json 작성(하우스 팔레트 + 강조 + "look"), references/style.md → animations/SHARED.md 복사, brand_kit.py build 실행, --type-scale(하우스 0.94) 추가 및 — 민트 룩 — v7 토큰(차콜 잉크, 민트-소프트, 민트 패널, 복숭아, 디스크 그림자, 강한 비네트)을 brand.css에 추가
fetch.py icon <name…> --edit-dir E [--weight fill]v7 아이콘 디스크 글리프: Phosphor(MIT) SVG → icons/<name>.svg, open-source로 기록됨; 슬롯의 "assets"에 icons/<name>.svg로 나열, V.disc({icon: name})으로 사용(이름: phosphoricons.com)
scenes.py words --edit-dir E출력 시작, 프레임 및 단어가 있는 모든 컷 세그먼트 — 여기에서 장면 경계 선택
scenes.py cut-speaker --edit-dir E [--only ids]장면별: base.mp4 창 → hf/assets/speaker.mp4(음소거됨; 프레임 정확 검색; 마지막 장면은 끝 고정 프리즈로 패딩됨) + speaker_cut.webm(그의 매트) for talk_depth / cutout 장면 + 장면의 "assets" 복사; 중간 구축 컷 수정 후 --only
scenes.py edl --edit-dir E [--beat-gain-offset -3]edl.json + animations/slots.json + 렌더링 → edl_scenes.json(프레임 스냅, 사전 롤, 0.1초 유지, 자막 없음) + 모든 장면의 beats.json → ElevenLabs 키트의 시간 조정된 audio[] 큐
scenes.py preview <id> --edit-dir E음성이 있는 하나의 장면 → verify/<id>_preview.mp4(안전: base를 건드리지 않음)
scenes.py flashcheck <video> --edit-dir E [--allow]계획된 talk/talk_depth/chain/card/fullscreen/demo 창 외부에서 base.mp4(= 표시되는 원시 영상)와 일치하는 프레임(0이어야 함); --edit-dir 없이 장면 자체의 비네트를 허용하는 모서리 색상 테스트
scenes.py runtime --edit-dir E / scenes.py rerender --edit-dir E [--jobs 4] [--only ids]공유 런타임을 모든 장면에 다시 설치 / 모든 장면을 병렬로 다시 렌더링하고 프레임 수 확인 — 몇 분 안에 전체 릴 스타일 변경(새 글꼴, 카드 크기, 이징)
`capture.py --edit-dir E --name n --rea

… [번역 위해 잘림]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬