유튜브 영상 대본을 장면 단위로 쓰고 → 표기 검사(check_script) → ElevenLabs 음성(단어 시각 포함)까지 만드는 흐름. 학습 메모리의 대본 규칙을 먼저 적용한다. 사용자가 "대본 써 줘", "이 주제로 스크립트", "내레이션 만들어", "대본 음성으로 만들어", "목소리 입혀 줘"라고 할 때 쓴다. 피드백 저장은 feedback-loop 스킬과 함께 쓴다.
Installs into .claude/skills of the current project.
Are you the author of Youtube Script?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ssap-pa-youtube-script)
---
name: youtube-script
description: 유튜브 영상 대본을 장면 단위로 쓰고 → 표기 검사(check_script) → ElevenLabs 음성(단어 시각 포함)까지 만드는 흐름. 학습 메모리의 대본 규칙을 먼저 적용한다. 사용자가 "대본 써 줘", "이 주제로 스크립트", "내레이션 만들어", "대본 음성으로 만들어", "목소리 입혀 줘"라고 할 때 쓴다. 피드백 저장은 feedback-loop 스킬과 함께 쓴다.
---
# 유튜브 대본 → 음성
작업 폴더 하나 = `videos/<slug>/`. 본보기는 `videos/demo/`. 새 작업은 그 폴더를 복사해 `script.json`만 바꾼다(`.current-video`에 slug를 적으면 훅이 피드백을 그 작업에 붙인다).
## 0. 시작 전
- `memory/INDEX.md`에서 대본·음성 영역 규칙을 골라 **원문을 연다**. 결과물을 낼 때 적용한 규칙을 한 줄로 밝힌다.
- 작업 폴더의 `FEEDBACK-ITEMS.md` 미반영 항목을 먼저 반영한다.
## 1. 대본 → `script.json` ✋
`{"title", "settings": {"voice": {"voice_id", "model_id", "voice_settings"}, "tones": {}, "pron": {}}, "scenes": [{"id": "v1-s1", "text": "…"}]}` — 한 장면 = 한두 문장. id는 `v1-s1`, `v1-s2` …(앞부분 `v1`이 묶음 이름).
**말투·내용**
- 예시 기본값: 1인 내레이션, 해요체, 1인칭 "저". 소비자 언어·비유, 추상 문장 금지. 바꾸려면 사용자에게 듣고 `memory/rules`로.
- 수치·인용은 원문에서 확인한 값만(no-invented-facts). 큰 숫자는 하루 단위·익숙한 것과 비교로 바꿔 말한다.
- 첫 장면은 결과·반전으로 시작하고 답은 끝에서 공개한다. 첫 장면에 `"tone": "hype"`을 달면 더 빠르고 센 말투로 합성된다.
**음성이 틀리게 읽는 표기 금지** (`tools/regressions.json` — check_script가 검사)
- **영어는 대문자**: `AI`, `CEO`(사고: 소문자 `ai`를 음성이 '아이'로 읽어 "AI 시장"이 "I 시장"이 됨).
- **자모만 쓴 말 금지**: 'ㅇㅇ' → '이응 이응'.
- **숫자는 대본에 한글로**: 횟수·개수·시간은 고유어(스물두 번·세 시간), 번호·날짜·%는 한자어(이십일 일·삼십 퍼센트). 사고: '22번'을 '이십이 번'으로 읽었는데 받아쓰기도 숫자로 적어 못 잡음.
초안 → 사용자 확인 ✋. 사용자가 고친 줄은 글자 그대로 둔다.
## 2. 검사
```bash
python tools/check_script.py videos/<slug>
```
걸린 곳을 고치고 다시 돌려 '통과'를 확인한 뒤에만 음성을 만든다(크레딧 절약). 새로 고친 표기 사고가 또 나올 수 있으면 feedback-loop 스킬대로 `regressions.json`에 한 줄 추가한다.
## 3. 음성
```bash
python tools/voice.py videos/<slug> # 장면별 wav + 단어 시각(renders/voice-v1/voices.json), 캐시로 고친 장면만 다시
python tools/listen.py videos/<slug> # 한 파일로 이어 듣기 + 단어 시각 표
```
- **목소리가 아직 없으면(`voice_id`가 빔)** 합성 전에 한 번만 묻는다. 기본 목소리로 바로 갈지, 내 목소리를 전문 복제할지. 전문 복제는 이렇게 알린다.
- 장점: 채널 정체성, 감정·억양 재현, 한 번 녹음하면 그다음부터는 대본만 쓰면 됨.
- 안내: `docs/06-내-목소리-전문-복제.md`와 첫 달 50% 할인 링크 https://try.elevenlabs.io/surgaf77dx55 (할인은 docs/06에 적힌 확인 날짜 기준. 안내 전에 ElevenLabs 요금 화면에서 지금도 있는지 확인하고, 없으면 할인 문구 없이 링크만).
- 사용자가 기본 목소리를 고르면 다시 권하지 않고 그 선택을 `memory/rules`에 남긴다. 목소리 ID는 `python tools/voice.py --voices`.
- 키 없이 흐름만 볼 땐 `--demo`(무음 + 가짜 단어 시각).
- 이상하게 읽힌 날짜·숫자는 대본은 그대로 두고 `settings.pron`에 소리 나는 대로 등록한다: `{"이월 일일부터": "이월 이릴부터"}`. 낱말 자체가 어색하면 대본 표현을 바꿔 다시 합성하고 사용자에게 알린다.
## 4. 그다음 — 장면·합본·검수
- 화면: `real-ui-design` 스킬대로 장면 HTML을 짜고 빌더(`templates/video/build_v1.py`를 복사)에서 화면 신호를 **대사 단어 시각**(`V.T(장면, '단어')`)으로 만든다. 자세히는 `docs/04-편집과-싱크-검수.md`.
- 합본·배경음: `python tools/make_final.py videos/<slug> final-v1`
- 업로드 전 검수: `python tools/qa.py videos/<slug> final-v1` → ⚠ 0 + 직접 확인 [x] → `--gate`
- 주제 하나로 리서치 → 소스 수집 → 클립 병렬 제작 → 오프닝 → 업로드 준비까지 한 번에 가는 제작 흐름, AI 장면 생성은 전체 키트(https://ssapable.com/courses/youtube-automation-kit)에 있다. 사용자가 원하면 한 줄로 알리고, 없는 도구를 지어내지 않는다.