Communitygithub.com

Conz-Wilts/ai-editor - 컷

원본 토킹헤드 영상에서 깔끔한 점프컷을 생성합니다. 하나 또는 여러 테이크(mp4, mov, 모든 화면비, 4K 폰 영상도 가능)를 받아 단어 단위로 전사하고, 재테이크, 잘못된 시작, 필러, 지연 구간을 제거한 후 원본 해상도의 cut.mp4와 컷에 맞춰 타임된 words.json을 렌더링합니다. 사용자가 전체 대본에서 삭제된 단어를 취소선으로 확인하고 승인합니다.

ai-editor - 컷란 무엇인가요?

이 스킬은 사용자가 직접 촬영한 토킹헤드 영상에서 불필요한 부분(재테이크, 실수 시작, 필러, 지연 구간)을 자동으로 탐지하고 제거하여 깔끔한 점프컷을 만들어냅니다. Whisper/CrisperWhisper/Scribe 등 다양한 전사 엔진을 지원하며, transcripts를 단어 단위로 분석하여 삭제할 구간을 제안하고, 사용자가 웹 페이지에서 전체 대본을 보며 최종 승인할 수 있는 워크플로우를 제공합니다. 주로 '내 영상 잘라줘', '실수 제거', '지연 없애줘' 등의 명령에 반응하며, 스타일 편집(스타일-편집) 이전에 실행됩니다. 스크립트 매칭, 에디토리얼 패스(불필요한 내용 제거), 다중 테이크 처리 등을 지원하며, 서로 다른 플랫폼(Claude Code, Cursor, Codex 등)과 호환됩니다.

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

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

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

문서

컷

경로: ${CLAUDE_SKILL_DIR}는 이 SKILL.md가 포함된 폴더를 의미하며, ${CLAUDE_SKILL_DIR}/../..는 두 단계 위에 있는 에디터 폴더(이 저장소의 .claude/)입니다.

먼저 ${CLAUDE_SKILL_DIR}/../../PRINCIPLES.md를 읽으세요: 모든 비디오가 따라야 하는 규칙입니다.

모든 질문은 질문 상자에 넣습니다: AskUserQuestion 도구(2–4개 옵션, 첫 번째 권장). 이 도구가 없는 에이전트에서만 텍스트로 번호가 매겨진 질문을 합니다.

edits/<name>/  transcript.txt (이것을 읽고 절대 words.raw.json을 읽지 마세요), spans.json (제거할 대상, 인용), candidates.md (코드가 플래그한 내용), paper-edit.md (컷을 텍스트로), cut-check.html (대본), review.json (노트), cut.mp4 + words.json (렌더링과 그 단어들)

<name>은 파일 이름의 슬러그입니다 (IMG_1234.MOV -> img-1234). 라이브러리(PRINCIPLES.md "위치")에 있습니다. 소스 파일을 수정, 이동 또는 복사하지 마세요: 경로를 전달하면 됩니다.

PY="${CLAUDE_SKILL_DIR}/../../lib/ai_editor/run.py"; python3 "$PY"가 툴 venv를 실행합니다. Windows에서는 python3 대신 py를 사용하세요. venv가 아직 없으면: 먼저 setup 스킬을 실행하세요. S="${CLAUDE_SKILL_DIR}/scripts"입니다.

아직 비디오가 없나요?

테이크의 경로를 물어보세요. 여러 파일: references/takes.md. 없음: AI_EDITOR_SAMPLE_URL이 설정되어 있으면 해당 샘플 테이크를 제공하고 사용자 폴더에 다운로드하세요 (curl -L -o sample-take.mp4 "$AI_EDITOR_SAMPLE_URL"); 그렇지 않으면 하나를 녹화해 달라고 요청하세요 (30~60초 동안 말하는 모든 폰 비디오면 됩니다).

0. 묻기: 컷 먼저, 아니면 한 번에 전부?

무엇보다 먼저 질문 상자에 하나의 질문을 하세요 (start는 전체 편집을 위해 이걸 결정합니다):

컷만 먼저 하시겠습니까, 아니면 컷과 스타일 편집을 한 번에 하시겠습니까?

  • 컷만 먼저 (권장). 캡션이나 줌, 비주얼을 추가하기 전에 컷을 승인하므로, 변경된 컷이 비주얼을 다시 빌드하지 않습니다 (토큰 절약).
  • 한 번에 전부. 컷을 한 다음 기다리지 않고 스타일을 적용합니다. 그래도 컷 페이지와 스틸 시트를 보여드리기 전에 보여드립니다.

사용자가 이미 답변한 경우("그냥 잘라줘", "한 번에 잘라서 스타일까지 해줘") 또는 start나 clips가 이 스킬을 호출한 경우에만 건너뜁니다. 컷만 먼저: 1-6단계를 수행한 후 사용자가 컷을 승인 하고 스타일을 요청할 때까지 중단합니다. 한 번에 전부: 1-5단계를 수행하고, 컷 페이지를 연 후 바로 style-edit으로 진행합니다; 이후 컷이 변경되면 plan 단계부터 style-edit을 다시 실행합니다.

0b. 사용자 취향 읽기

python3 "${CLAUDE_SKILL_DIR}/../../skills/taste/scripts/taste.py" show --edit edits/<name>

모든 규칙을 따르세요. 결과에 대한 반응("너무 느려요")은 다시 하기 전에 taste 스킬로 저장하세요.

1. 전사

python3 "$PY" "$S/transcribe.py" <source> edits/<name>/words.raw.json [--script <their script>]

스크립트(또는 반복 가능한 --keyterm 이름)는 이름과 전문 용어를 올바르게 처리합니다 (Scribe에서 +20% 향상).

먼저 시간을 알려주세요: Whisper는 3분 테이크에 1-4분, CrisperWhisper는 테이크 길이 정도 걸립니다. 키가 저장되어 있으면 Scribe를 선택하고, 없으면 CrisperWhisper가 설치되어 있으면 그것을, 아니면 무료 로컬 Whisper를 선택합니다 (--engine whisper|crisper|scribe로 재정의 가능). 로컬 Whisper는 몇몇 음과 잘못된 시작을 제거합니다. 둘 다 없으면 setup이 하나를 추가할 수 있다고 한 번 말하세요 (CrisperWhisper의 가중치는 비상업용만 가능합니다). 편집 중간에 절대 모델을 다운로드하지 마세요: 설치되지 않은 모델이 필요한 재확인(종료 코드 4)은 건너뛰고 해당 라운드 노트에 기록합니다.

절대 words.raw.json을 읽지 마세요: 2단계에서 크기가 1/12인 transcript.txt를 작성합니다.

2. 무엇을 자를지 결정

python3 "$S/retakes.py" propose edits/<name>

코드가 모든 가능한 컷(반복된 대사, 끝나지 않은 문장, "잠깐, 미안해요", 필러 등)을 찾아 candidates.md에 저장합니다. 각각은 봐야 할 지점이며 결정이 아닙니다. transcript.txt와 candidates.md를 읽고, references/retake-detection.md를 따라 spans.json (references/shapes.md)을 작성하세요.

script.md가 있는 경우: python3 "$S/script_match.py" edits/<name>, script-match.md (references/script.md)를 읽으세요.

마지막 테이크가 승리하며, 대체 훅은 예외입니다. 절대 타임스탬프를 입력하거나 일시 중지를 범위로 지정하지 마세요.

사용자가 더 짧게 만들고 싶어하거나(또는 취향에 에디토리얼 패스를 실행하라고 명시된 경우)에만 references/editorial-rules.md를 읽고 redundant 컷(내용 호출)을 추가하세요.

잘못 들은 이름은 JSON을 다시 작성하지 않고 한 번의 명령으로 처리합니다: python3 "$S/retakes.py" fix edits/<name> cloud=Claude jiv=Jev (전체 단어, fixes.json에 보관되어 캡션에 사용됩니다).

3. 빌드

python3 "$S/build_timeline.py" <source> edits/<name> && python3 "$PY" "$S/mirror.py" <source> edits/<name>

--max-pause(0.15초)를 초과하는 모든 일시 중지(숨쉬기 포함)는 0.10초가 됩니다. 음악이 있을 때만 단어 간격이 잘립니다. 빌드에서 ERROR가 발생하면 아무 것도 쓰지 않습니다: 해당 범위를 수정하고 다시 실행하세요.

mirror.py는 책, 셔츠, 표지판이 거꾸로 읽힐 때(전면 카메라 테이크) mirrored라고 말합니다: 한 번 물어보세요. 촬영 그대로 유지 (권장) (대부분의 크리에이터가 그대로 게시합니다) / 텍스트가 읽히도록 뒤집기; 뒤집기로 선택하면 아래 모든 render.py에 --flip을 추가하세요.

한 메시지에서, 백그라운드에서 범위 인코딩(run_in_background)과 페이퍼 검사를 시작하고; 4단계에서는 변경된 부분만 인코딩합니다:

python3 "$S/render.py" <source> edits/<name> --segments-only

cut-judge 에이전트가 paper-edit.md를 평가하고 (남아있는 실수, 잘못된 연결, 좋은 대사 손실) spans.json을 수정합니다. 5분 이상 테이크는 리더가 먼저 실행되고, 그 후 심사자가 실행됩니다: references/judge.md. paper-edit.md를 직접 읽지 마세요.

  • paper-edit.md에 CLIPPED가 있음: 일시 중지 컷이 단어를 잘라먹었습니다. --pad를 높이세요. 여전히 있으면 레이블이 잘못된 것입니다.
  • 발화 내부의 연결은 조용한 프레임으로 이동합니다. still in speech가 있으면 5단계에서 들어보세요.

4-5. 렌더링 및 검증

포그라운드 (render.py는 백그라운드 인코딩을 기다립니다):

R="${CLAUDE_SKILL_DIR}/../../lib/ai_editor/review.py"
python3 "$S/build_timeline.py" <source> edits/<name> && \
python3 "$S/render.py" <source> edits/<name> && \
python3 "$PY" "$S/verify_cut.py" edits/<name> --engine <1단계와 동일한 엔진> && \
python3 "$S/preview_cut.py" edits/<name> --no-open && \
python3 "$R" edits/<name> start --video edits/<name>/cut.mp4 --stage cut --transcript edits/<name>/words.json

Verify clean: 컷 페이지 준비 완료. Verify는 컷의 대본과 유지된 단어를 비교합니다 (exit 1이 체인을 중단):

  • MISSING: 유지된 단어가 렌더링에 없습니다. --pad를 높이거나 범위를 좁히고, 다시 빌드하고, 다시 렌더링하세요.
  • SURVIVED: 실제 반복이나 말 실수에 대한 추가할 범위로, 유지된 대사를 자르는 경우는 절대 없습니다.
  • HEARD DIFFERENTLY ("jev -> jeff") 및 필러 노트는 전사 변동입니다: 다시 빌드하지 마세요.
  • DOUBLED: 단어가 연속으로 두 번 말해짐. 자연스러운 경우 ("very, very"): 유지. 말 실수: 해당 범위를 추가하세요.
  • N join(s) in speech: 들어보세요. 잘렸음: splice_check.py edits/<name> --fix, 다시 렌더링.

한 번의 수정 사이클 (동일한 체인), 그런 다음 남은 것을 사용자에게 보여줍니다.

6. 사용자 승인

체인이 리뷰 페이지를 열었습니다 (../style-edit/references/review.md). serve와 wait를 백그라운드에서 실행하세요. 잘린 초를 알려주세요. 노트: " 유지": 해당 범위를 좁히거나 삭제; " 잘라": 범위 추가; 일시 중지 끔: --max-pause. 그런 다음 4-5단계, 각 노트를 resolve (--reply: 변경 사항), 마지막으로 round --video edits/<name>/cut.mp4 (두 번째 start는 절대 안 됨), 그런 다음 학습 질문을 합니다.

승인 후, Bash 호출 하나: python3 "$S/trend.py" log edits/<name> (tally: 추세), 훅 확인. 그런 다음 hooks.json이 있으면 훅 변형 (references/retake-detection.md); start에 의해 호출되며, style-edit의 스틸 승인과 동일한 질문 상자에 물어보고, 그 전에는 물어보지 마세요.

승인만으로 컷이 완료됩니다; cut.mp4, words.json은 style-edit으로 전달됩니다. "컷만 먼저"인 경우 스타일을 요청할 수 있다고 말하세요. 절대 스스로 style-edit을 시작하지 마세요. start에 의해 호출됨: 페이지가 열리면 백그라운드에서 visual-prep을 시작하고; motion_briefs: 각각 한 번에 하나씩 백그라운드 clip-builder; motion_note는 한 번만 말하세요.

스크립트가 중단되면

메시지할 일
no such file / ffmpeg could not read audio올바른 경로를 물어보세요; 소스를 절대 복사하거나 변환하지 마세요
faster-whisper missing / CrisperWhisper missingpython3 "$PY"로 실행하거나 setup 스킬의 3단계를 실행하세요
no ElevenLabs key (exit 2) / HTTP 4xx, unreachable (3)--engine scribe를 제거하거나 setup 스킬로 키를 다시 저장하세요
인용문에서 build ERROR해당 범위의 인용문을 수정하거나 occurrence를 추가하고 다시 빌드하세요
cannot derive a silence threshold / marked no silence음성과 배경이 10 dB 이하로 차이남: ffmpeg -i <source> -af volumedetect -vn -f null -, 평균보다 약 10 dB 높게 --noise를 전달하세요
render ERROR ...말하고 render를 한 번 다시 실행하세요

규칙

  1. 모든 컷은 대본을 인용합니다. 인용문 없음, 컷 없음.
  2. 스크립트는 테이크 간의 동점을 깨고, 한 대사를 두 번 말하면 각 테이크를 유지합니다. 스크립트에서 벗어났다고 해서 잘리지 않습니다.
  3. 컷을 가로질러 절대 스트림 복사(-c copy)하지 마세요: 최대 2초까지 어긋날 수 있습니다.
  4. 검증되고 승인되지 않은 렌더링을 절대 넘기지 마세요.

자체 점검

test_build_timeline.py, test_retakes.py, test_media.py (ffmpeg); transcribe.py, trend.py, splice_check.py, script_match.py, mirror.py에 대한 demo.

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

Reverse-engineers a short-form creator's video format from their real numbers. Pulls a TikTok or YouTube Shorts profile (or pasted links, Instagram reels too) with view, like and save counts, transcribes the top videos word for word, measures pace, pauses and fillers, maps each video into timed beats, and writes a teardown.md someone can film from, a teardown.html page of their graphics, motion and sound, and the style.json the style-edit skill edits from (on its own it can write an edit plan as a table and .srt). Use when the user wants to analyse, break down or study a creator ("analyse @handle", "tear down @handle", "teardown of @handle", "break down this creator", "what makes this creator's videos work"), pastes TikTok, YouTube or Instagram links and asks what the pattern is, or asks to set up creator-teardown. Not for editing the user's own video like a creator (that is start), not for researching a topic, and not for cutting raw footage.

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.

관련 스킬