크리에이터 분석 (Teardown)
경로: ${CLAUDE_SKILL_DIR}는 이 SKILL.md가 있는 폴더를 의미합니다. Windows에서는 python3 대신 py를 사용하세요.
사용자에게 하는 모든 질문은 질문 상자(AskUserQuestion 도구)를 이용하세요 (2-4개 옵션, 추천 옵션을 먼저). 해당 도구가 없는 에이전트에서는 텍스트로 번호를 매겨 질문하세요.
출력물
creator-teardowns/<handle>/: teardown.md (분석 보고서), teardown.html (사용자가 보는 페이지), look.md (Claude가 읽는 파일), style.json (모든 측정된 수치, 이 스타일로 편집할 때 사용), 그리고 ${CLAUDE_SKILL_DIR}/references/outputs.md에 나열된 영상별 파일들. 편집 계획은 edit-plans/<name>/에 저장됩니다. 이 스타일이 일치하는지 여부: scripts/match.py (references/outputs.md "일치 확인").
첫 번째: doctor
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" doctor
세션에서 첫 번째 분석을 수행하기 전에 실행하세요. Ready.가 표시되면 진행합니다. Not ready가 출력되거나 사용자가 스킬 설치/설정을 요청하면 ${CLAUDE_SKILL_DIR}/references/setup.md의 지침을 따르세요. ElevenLabs 키는 선택 사항입니다. 절대 채팅에서 키를 요청하지 마세요: 사용자는 자신의 터미널에서 setkey 명령어로 저장합니다.
VPY="${CLAUDE_SKILL_DIR}/scripts/run.py"; 아래 명령어에서 python3 "$VPY" (Windows에서는 py)는 AI_EDITOR_HOME이 지정하는 위치의 툴 venv Python으로 스크립트를 실행합니다.
파이프라인
빠른 모드 (ai-editor의 start, setup 또는 style-edit에서 호출)
다른 스킬이 style.json만 필요로 할 때, 정확히 다음을 실행하세요: 1단계 list, 2단계 명령어들 (--top 5 옵션 사용: 5개 + 컨트롤 2개 + 예비 2개; 붙여넣은 링크는 모두), 3b단계의 네 가지 명령어, 그 다음 3c단계의 네 가지 명령어, 그리고 중단. 0단계 질문은 호출자가 이미 질문하지 않은 경우에만 합니다. metrics.py, 3단계의 텍스트 패스, 4-6단계는 건너뜁니다. 14코어 Mac에서 크리에이터당 약 3분 소요 (측정 기준 2-3분; 예비 영상 처리로 최대 1분 추가), 8코어 노트북에서는 두 배. 먼저 이 점을 알리세요.
0단계: 질문 (한 번)
메시지에서 이미 답변된 내용은 건너뜁니다. 질문 상자 호출 한 번:
- 어떤 크리에이터? 사용자가 지정한 핸들 또는 링크 (추천) / 더 붙여넣겠습니다. 여러 명을 지정하는 것은 정상입니다: 어떤 사람은 한 크리에이터의 자막을, 다른 사람은 다른 크리에이터의 템포를 좋아할 수 있습니다. 각 크리에이터의 스타일은 하나의 포맷입니다.
- 두 명 이상일 때: 누구에게서 어떤 부분을 가져올까요? 아직 잘 모르겠어요 (추천): 3b단계 후에 각 크리에이터의
look.md를 비교하며 다시 질문합니다. 또는 자막, 템포(컷, 줌, 모션), 비주얼(그래픽, 얼굴 프레이밍, 카드), 사운드 중에서 선택.
1단계: 영상 가져오기
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <handle> --platform tiktok --limit 40 # 또는 youtube
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <name> --urls picks.txt # 붙여넣은 링크, 한 줄에 하나
순위가 매겨진 테이블 (조회수, x 중앙값)을 출력하고 videos.json을 작성합니다; *는 중앙값의 3배를 표시합니다.
Instagram: list <handle> --platform instagram은 사용자의 브라우저에 있는 instagram.com 로그인을 통해 최신 릴스와 조회수를 읽어옵니다 (데이터는 instagram.com에만 전송). 로그인이 없으면 한 문장과 함께 종료 코드 1로 종료합니다; 이 내용을 말하거나, 6개 이상의 릴스 링크를 picks.txt에 넣어 --urls 옵션으로 사용하세요 (좋아요 순으로 정렬됨; 이 점을 알리세요).
2단계: 우승 영상 및 컨트롤 그룹 다운로드 및 전사
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" download <handle>
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" transcribe <handle>
--top N은 N개 + 컨트롤 영상 2개 (중앙값에 가장 가까운 2개; --control로 변경 가능) + 포맷 확인용 예비 영상 2개 (--spare)를 다운로드 및 전사합니다. 충분한 영상이 있다면 크리에이터의 일반적인 영상 길이를 유지합니다. 붙여넣은 링크는 모두 다운로드합니다. 기본 --top 8은 12개 영상; --top 5 (빠른 실행)는 9개; 두 명령어에 모두 전달하세요. 둘 다 먼저 개수를 출력합니다. --ids <id>,<id>는 정확한 영상을 선택합니다. 중앙값 영상이 컨트롤입니다: 500K 조회수 영상과 3K 조회수 영상 모두에 나타난 움직임은 해당 크리에이터의 습관이지, 500K 영상이 성공한 이유가 아닙니다. 최소 2개를 유지하세요.
모든 측정 스크립트는 여러 영상을 동시에 처리합니다 (CT_JOBS=1은 소형 노트북에서 이 기능을 끕니다).
먼저 소요 시간을 알리세요 (다운로드 + 전사, 14코어 Mac에서 영상당 약 10초). Whisper (무료, 로컬)가 기본; ElevenLabs 키가 있으면 transcribe가 Scribe를 사용하여 모든 필러 단어를 유지합니다 (오디오 시간당 $0.22; 10개 이상의 영상 전에 예상 비용을 알리세요).
필러 카운트가 Whisper 전사본에 의존하는 경우, 분석 보고서에서 이 점을 언급하세요.
3단계: 측정, 이후 분석
python3 "${CLAUDE_SKILL_DIR}/scripts/metrics.py" <handle>
metrics.json 작성 (3분할 당 WPM, 멈춤, 필러, 문장 길이, 나/너/우리, 반복 구문), 모두 단어 타임스탬프 기반.
3b단계를 먼저 실행하여, format.json이 제외시킨 영상들을 이후 패스가 건너뛰도록 합니다. 그런 다음 ${CLAUDE_SKILL_DIR}/references/analysis-framework.md를 로드하고 해당 패스를 실행합니다. 패스 1의 경우, 영상별로 하나의 video-analyst 에이전트를 한 번의 메시지로 실행합니다 (동시에 실행됨): 각 에이전트에게 절대 경로 creator-teardowns/<handle>/와 하나의 id를 제공합니다. 각 에이전트는 JSON 비트 맵을 반환합니다; 이를 테이블로 병합합니다. Agent 도구가 없으면, transcripts/<id>.timed.txt를 직접 읽으세요 (한 번에 하나의 영상). 절대 transcripts/<id>.json이나 metrics.json 전체를 읽지 마세요:
- 비트 맵 + 타이밍. 모든 영상을 레이블이 지정된 비트로 분할, 초 단위 및 단어 수 포함.
- 음성/어휘 프로필. 문장 길이, 인칭, 명령형, 반복 구문, 사용자가 말하지 않을 움직임들.
- 시각 패스. 항상: 3b단계. 이것이 사용자가 자신의 영상을 이 스타일로 편집할 수 있게 해줍니다.
- 카드 이벤트, 분석 범위에 크리에이터의 카드와 그래픽이 포함되거나 편집 계획이 예정된 경우에만.
${CLAUDE_SKILL_DIR}/references/edit-plan.md에 정의된 형식으로events.json을 작성합니다.scripts/strip.py는 ffmpeg,numpy및pillow가 필요합니다.
타이밍을 건너뛰지 마세요: "후크는 0:03까지 도달하며 14단어, 항목들은 각각 8-11초"는 누군가가 촬영할 수 있는 포맷입니다. "후크, 목록, 종료"는 그렇지 않습니다.
3b단계: 시각 패스 (측정 기반, 이미지 읽지 않음)
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/look.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/format_check.py" check <handle>
그 다음 시트 패스 (아래 4번), 그 후 python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/lookpass.py" merge <handle>.
transcribe 후에 실행하세요 (look.py는 OCR 텍스트를 말로 된 단어와 매칭합니다).
visual.py: 컷과 그 종류, 샷 길이, 줌, 팬 및 흔들림.look.py: 초당 3프레임 OCR 및 YuNet 얼굴 감지: 자막 (위치, 크기, 단어, 대소문자, 색상, 굵기, 등장 방식), 얼굴 프레이밍, 그래픽 점유율, 팔레트, 모션 특성. 영상당 약 40초.format_check.py: 하나의 스타일은 하나의 포맷이어야 합니다. 프레임, 얼굴, 자막, 샷 길이 및 영상 길이별로 영상을 그룹화합니다; 3개 이상의 과반수 그룹이 유지되고, 나머지는video/left-out/으로 이동합니다 (format.json이 이유를 설명;references/look-pass.md). 차이가 있을 때 첫 줄을 사용자에게 알리세요 ("4개 중 2개 사용: 2개는 다른 포맷처럼 보입니다."); 혼합된 경우, 한 종류의 영상을 더 요청하세요.- 시트 패스:
model: "haiku"로 에이전트를 한 번 호출하여 유지된 각 영상에 대해sheets/<id>.jpg를 읽고 (각 영상당 3x3 시트,visual.py가 생성)video/<id>.look-ai.json을lookpass.py prompt에 따라 작성합니다: 폰트, 그래픽 스타일, 전환, 일반적이지 않은 것. 절대 숫자를 출력하지 않음. 자세한 설명은references/look-pass.md에 있습니다.lookpass.py merge는 이를 style.json으로 병합합니다.
그런 다음 look.md를 읽으세요 (48줄 미만). 프레임이나 시트를 열지 마세요. 모든 필드는 ${CLAUDE_SKILL_DIR}/references/look-pass.md에 있습니다. style.json의 숫자는 코드에서 생성됩니다; 절대 수동으로 편집하지 마세요. look.md와 모델의 설명이 일치하지 않는 경우 (예: 측정된 motion: punchy vs. 모델이 smooth라고 명명), 측정된 값이 우선하며 분석 보고서는 둘 다 언급합니다.
OCR 엔진 없음 (doctor가 옵션으로 표시): captions는 측정되지 않으며 look.md에 그렇게 표시됩니다. 직접 시트를 읽는 대신 설치하세요 (doctor가 설치 명령어를 출력).
3c단계: 심층 패스 및 페이지 생성
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/graphics.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/sound.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/report.py" build <handle>
각 측정 명령어는 한 줄의 요약과 생성된 파일을 출력합니다 (--json은 전체 블록을 출력; 필요 없음: look.md에 숫자가 있음). 3b단계 후에 실행하세요 (graphics.py는 look.py의 얼굴로 화자를 마스킹). 각 그래픽 (크롭, 종류, 위치, GSAP 이즈에 맞춰진 등장 및 퇴장 방식), 컷 종류와 카메라 움직임 (visual.py), 사운드 효과와 음악, 각 영상의 처음 3초, 컨트롤 그룹 대비 우승 영상, 그리고 크리에이터의 외형에 대한 AI-틸 스캔을 추가합니다. 필드, 방법, 한계 및 비용: ${CLAUDE_SKILL_DIR}/references/teardown-page.md. graphics.py measure 후, 해당 참조 문서의 haiku 종류 패스를 실행하세요 (그렇지 않으면 종류는 코드의 추측으로 남음), 그 다음 sound.py와 report.py.
그런 다음 사용자를 위해 creator-teardowns/<handle>/teardown.html을 엽니다 (Mac은 open, Windows는 start, Linux는 xdg-open) 그리고 아티팩트로 게시할 것을 제안합니다. 페이지나 이미지를 직접 읽지 마세요: look.md에 숫자가 있습니다. 사용자에게 우승 영상이 무엇을 다르게 하는지 (look.md의 Winners: 줄, n 포함)와 그들의 외형에 있는 BAN 수준의 AI-틸을 두세 줄로 알리세요.
그런 다음 질문 상자에서 (페이지는 증거만 보여줄 뿐, 체크할 항목이 없음) 하나의 다중 선택 질문을 하세요: "@의 어떤 부분을 당신의 편집에 복사해야 합니까?" 옵션: 자막, 템포, 그래픽 종류, 등장 동작, 레이아웃, 사운드 (질문당 최대 4개 옵션; 필요한 경우 두 개의 질문으로 분할), 각 옵션의 설명은 look.md에서 가져온 하나의 측정된 줄 (예: "0.25초 동안 오버슈트와 함께 슬라이드 인"). 사용자가 선택한 부분에 BAN 틸이 포함된 경우, 확인 전에 알리세요. 답변 저장:
python3 "${CLAUDE_SKILL_DIR}/scripts/editplan.py" blend <handle>-mine --from <handle> \
--take captions,pace,graphics,entrances,layout,sound # 선택된 부분만
style-edit은 creator-teardowns/<handle>-mine/style.json을 읽습니다; 선택되지 않은 부분은 기본값을 사용합니다. report.py build와 editplan.py blend는 스타일의 스킬 이름을 출력합니다 (skill edit-like-<handle> -> <path>, ai-editor 설치 시): 사용자에게 그 이름을 알리세요. 해당 스타일에 대한 피드백은 해당 스킬을 편집합니다.
3d단계: 여러 크리에이터 (사용자가 두 명 이상을 지정한 경우)
${CLAUDE_SKILL_DIR}/references/blend.md를 따르세요: 크리에이터별로 1~3b단계 수행, look.md를 나란히 비교, 그 다음 editplan.py blend.
4단계: 분석 보고서 작성
${CLAUDE_SKILL_DIR}/references/teardown-template.md를 creator-teardowns/<handle>/teardown.md에 채워 넣습니다. 모든 영상은 통계 줄, 정확한 전사본, 타이밍이 포함된 비트 테이블, 유지할 패턴과 거부할 패턴을 포함합니다.
5단계 (선택 사항): 스킬로 전환
포맷을 유지할 가치가 있는지 질문하세요. 그렇다면 ${CLAUDE_SKILL_DIR}/references/skill-handoff.md를 따르세요 (포맷 스킬, 스타일 자체의 스킬 옆에).
6단계 (선택 사항): 크리에이터 스타일로 사용자 영상 계획
사용자가 자신의 영상을 제공할 때, ${CLAUDE_SKILL_DIR}/references/edit-plan.md를 따르세요. 시각 패스에서 생성된 크리에이터의 events.json이 필요합니다; 렌더링하지는 않습니다.
스크립트 중단 시 대처
| 메시지 | 조치 |
|---|---|
doctor Not ready: ... | 나열된 각 항목에 대해 references/setup.md를 따르세요 |
yt-dlp returned nothing / parsed 0 videos | 출력된 힌트를 읽으세요: yt-dlp 업데이트 (doctor가 방법을 알려줌), 또는 단일 영상 링크를 요청하고 --urls 사용 |
| Instagram 프로필 실패 | 문장을 말하세요: Chrome에서 instagram.com에 로그인하거나, 6개 이상의 릴스 링크 제공 (1단계 "Instagram") |
... Fix the key, then rerun (transcribe) | ElevenLabs 키가 잘못됨: 사용자가 자신의 터미널에서 setkey로 다시 저장하거나, 키를 삭제하고 Whisper 사용 |
no videos in ... Run download first | visual.py download <handle> 실행 |
다운로드 failed: <ids> (exit 1) | 출력된 --ids로 재실행; 다시 실패하면 샘플이 더 작다고 말하고 계속 진행 |
yt-dlp not found | fetch.py doctor를 실행하고 나열된 문제를 해결 |
| 일부 영상 전사 실패 | --ids로 재시도하고, 실패한 영상을 알림; 빈 공간을 채우지 마세요 |
엄격한 규칙
- 실제 숫자 또는 아무것도 없음. 잘 작동한다는 모든 주장은 옆에 조회수를 명시해야 합니다. 숫자 없이 영상이 "바이럴"되었다고 말하지 마세요.
- 정확한 전사본만. 전사되지 않은 영상을 요약하지 마세요.
- 구조는 복사하되, 목소리는 복사하지 마세요. 모든 분석 보고서는 무엇을 거부할지 명시합니다.
- 중앙값 컨트롤 그룹. 최소 두 개의 중간 성과 영상을 전사해야 합니다. 그렇지 않으면 분석이 포맷과 크리에이터의 습관을 분리할 수 없습니다.
- 전사 줄을 절대 만들어내지 마세요. 카드에 대한 통계나 인용도 마찬가지입니다. 전사가 실패하면
--ids로 재시도하고, 실패했다고 말하세요. - 채팅에서 ElevenLabs 키를 절대 요청하지 마세요.
- style.json에는 측정된 숫자만.
pace와zoom은visual.py에서;captions,face,graphics,motion은look.py에서; 모델에서 온 것은 단어(look,font_match)뿐입니다. - look.md를 읽고, 프레임을 읽지 마세요. look.md가 답할 수 없는 질문을 해결하기 위해서만 프레임을 열고, 어떤 프레임인지 알리세요. 사용자는 teardown.html을 받고; Claude는 look.md를 받습니다.
- 우승 영상 대비 컨트롤: n을 말하세요. 차이가 입증되었다고 말하지 마세요; "모든 우승 영상"은 이 샘플에서 겹침이 없다는 의미일 뿐입니다.