Communitygithub.com

크리에이터 분석 도구 (Teardown)

숏폼 크리에이터의 영상 포맷을 실제 데이터를 기반으로 리버스 엔지니어링합니다. TikTok, YouTube Shorts, Instagram Reels 프로필이나 링크를 분석하여 조회수, 좋아요, 저장 횟수 등을 수집하고, 상위 영상의 자막을 추출하며, 템포와 멈춤, 군더더기 표현을 측정하고, 각 영상을 시간별 비트로 매핑한 후 분석 보고서(teardown.md, teardown.html)와 스타일 JSON을 생성합니다.

크리에이터 분석 도구 (Teardown)란 무엇인가요?

이 스킬은 인기 숏폼 크리에이터의 편집 스타일을 데이터 기반으로 역분석하는 도구입니다. 사용자가 특정 크리에이터의 핸들(@handle)이나 영상 링크를 입력하면, AI가 해당 프로필의 상위 영상들을 가져와 조회수, 좋아요, 저장 수와 같은 실제 성과 지표를 수집합니다. 이후 각 영상을 다운로드하고 음성을 텍스트로 변환(Whisper 또는 Scribe)하여 단어별 타임스탬프를 추출하고, 분당 단어 수(WPM), 멈춤 빈도, 필러 단어, 문장 길이 등을 측정합니다. 또한 시각적 요소(컷 종류, 줌, 팬, 자막 위치와 스타일, 얼굴 프레이밍, 그래픽 종류와 움직임, 사운드 효과와 음악)까지 분석하여 크리에이터만의 고유한 영상 포맷을 정량화합니다. 분석 결과는 사람이 읽을 수 있는 보고서(teardown.md)와 시각화된 HTML 페이지, 그리고 AI가 편집에 활용할 수 있는 style.json으로 출력됩니다. 이 스킬은 Claude Code, Cursor, Codex 등 파일 시스템 접근이 가능한 모든 AI 에이전트에서 사용할 수 있으며, '분석해 줘', '이 크리에이터의 패턴을 찾아줘' 같은 자연어 요청을 처리합니다. 특히 중간 성과 영상(컨트롤 그룹)과 상위 성과 영상을 비교하여 진정한 '스타일'을 식별하는 점이 핵심입니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Conz-Wilts/ai-editor/tree/HEAD/.claude/skills/creator-teardown

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

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

문서

크리에이터 분석 (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단계: 질문 (한 번)

메시지에서 이미 답변된 내용은 건너뜁니다. 질문 상자 호출 한 번:

  1. 어떤 크리에이터? 사용자가 지정한 핸들 또는 링크 (추천) / 더 붙여넣겠습니다. 여러 명을 지정하는 것은 정상입니다: 어떤 사람은 한 크리에이터의 자막을, 다른 사람은 다른 크리에이터의 템포를 좋아할 수 있습니다. 각 크리에이터의 스타일은 하나의 포맷입니다.
  2. 두 명 이상일 때: 누구에게서 어떤 부분을 가져올까요? 아직 잘 모르겠어요 (추천): 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 전체를 읽지 마세요:

  1. 비트 맵 + 타이밍. 모든 영상을 레이블이 지정된 비트로 분할, 초 단위 및 단어 수 포함.
  2. 음성/어휘 프로필. 문장 길이, 인칭, 명령형, 반복 구문, 사용자가 말하지 않을 움직임들.
  3. 시각 패스. 항상: 3b단계. 이것이 사용자가 자신의 영상을 이 스타일로 편집할 수 있게 해줍니다.
  4. 카드 이벤트, 분석 범위에 크리에이터의 카드와 그래픽이 포함되거나 편집 계획이 예정된 경우에만. ${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 텍스트를 말로 된 단어와 매칭합니다).

  1. visual.py: 컷과 그 종류, 샷 길이, 줌, 팬 및 흔들림.
  2. look.py: 초당 3프레임 OCR 및 YuNet 얼굴 감지: 자막 (위치, 크기, 단어, 대소문자, 색상, 굵기, 등장 방식), 얼굴 프레이밍, 그래픽 점유율, 팔레트, 모션 특성. 영상당 약 40초.
  3. format_check.py: 하나의 스타일은 하나의 포맷이어야 합니다. 프레임, 얼굴, 자막, 샷 길이 및 영상 길이별로 영상을 그룹화합니다; 3개 이상의 과반수 그룹이 유지되고, 나머지는 video/left-out/으로 이동합니다 (format.json이 이유를 설명; references/look-pass.md). 차이가 있을 때 첫 줄을 사용자에게 알리세요 ("4개 중 2개 사용: 2개는 다른 포맷처럼 보입니다."); 혼합된 경우, 한 종류의 영상을 더 요청하세요.
  4. 시트 패스: 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 firstvisual.py download <handle> 실행
다운로드 failed: <ids> (exit 1)출력된 --ids로 재실행; 다시 실패하면 샘플이 더 작다고 말하고 계속 진행
yt-dlp not foundfetch.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을 말하세요. 차이가 입증되었다고 말하지 마세요; "모든 우승 영상"은 이 샘플에서 겹침이 없다는 의미일 뿐입니다.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Conz-Wilts/ai-editor

Turns one long video or podcast (a local file or a YouTube link) into the best 3-5 short vertical clips, each cut and styled in the user's profile style. Transcribes once, splits the talk into candidate clips at sentence boundaries inside the chosen length, scores every candidate in code (speech rate, loudness, laughter, numbers and names said), shows the shortlist on one page with a preview of each, then trims, cuts and style-edits each pick as its own edit. Use when the user says "clip this video", "make shorts from my podcast", "find the best clips", "cut this into TikToks", "turn this YouTube video into reels", "repurpose this long video", or drops a long video (over about 3 minutes) or a YouTube link and wants short clips. Not for editing one short take (that is start or cut), and not for measuring someone else's style (that is creator-teardown).

Conz-Wilts/ai-editor

Cuts raw talking-head footage into a clean jump cut. Takes one take or several joined (mp4 or mov, any aspect, 4K phone footage is fine), transcribes it word by word, removes retakes, false starts, fillers and dead pauses, and renders cut.mp4 at the source resolution plus words.json timed to the cut. The user approves the cut on a page with the whole transcript and every removed word struck through. Use when the user says "cut my video", "just cut it", "remove my mistakes", "cut out the retakes", "remove the pauses", "clean up this take", "jump cut this", "tighten this clip", or asks only for the cut of a raw take; start calls it for a full edit. Runs before style-edit. Not for a general request to edit a video or to make it look like a creator (that is start), not for adding captions, zooms or cards (style-edit), and not for analysing someone else's videos (creator-teardown).

Conz-Wilts/ai-editor

Generates new footage with Higgsfield and puts it on the edit's timeline. Prices every generation first, asks the user with the dollar amount (and, for their own footage, whether it may be uploaded to Higgsfield), then submits, waits, downloads into the edit's generated/ folder and adds the result to the timeline's Generated track. Covers motion transfer on a clip of the user's video (their moves onto a character or styled look), b-roll from a sentence (text to video), a still brought to life (image to video) and stills for cards (text to image). Use when the user says "generate b-roll", "make a shot of", "AI b-roll", "generate a clip", "use Higgsfield", "motion transfer", "put my moves on", "restyle this part with AI", or asks for footage they did not film. Not for animated diagrams or motion graphics (motion), not for real screenshots and logos (overlays, logo-pack), and not for the cut (cut).

Conz-Wilts/ai-editor

For the editor's maintainers. Turns what users corrected into lasting fixes in this repo, for every user, enforced by code and tests rather than notes. Reads the suggestions users marked "would help everyone" (~/.ai-video-editor/suggestions.jsonl), taste rules said twice (taste.py report), preview corrections (edits/*/corrections.jsonl), review-page notes (*/review.json) and open GitHub issues labelled feedback; groups repeats; for each item the maintainer accepts, writes the general rule into PRINCIPLES.md and the skill that owns it, adds or tightens the check that enforces it, adds a test that fails before and passes after, and runs the full test set. Use when the maintainer says "improve the editor", "turn feedback into fixes", "process suggestions", "what are users complaining about", "go through the feedback issues". Not for one user's own preferences (that is taste), and not for editing a video.

관련 스킬