Borrowing it
Nothing to install: this file belongs to tobyilee/course-builder. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/tobyilee/course-builder/main/.claude/skills/script-writing/SKILL.mdgit clone --depth 1 https://github.com/tobyilee/course-builderWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/tobyilee/course-builder/script-writing)<a href="https://agentmods.dev/skills/tobyilee/course-builder/script-writing"><img src="https://agentmods.dev/badge/skills/tobyilee/course-builder/script-writing/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/tobyilee/course-builder/script-writing"><img src="https://agentmods.dev/badge/skills/tobyilee/course-builder/script-writing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00060 | $0.02394 |
| Opus 5.5 | $0.00024 | $0.00958 |
| Sonnet 5.5 | $0.00012 | $0.00479 |
| Haiku 4.5 | $0.00006 | $0.00239 |
Grade A, and why
script-writing scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 202 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Script Writing — Speakable Transcript
transcript는 귀로 듣는 콘텐츠다. note를 그대로 낭독하면 부자연스럽다. 문장 길이, 리듬, 호흡, 강조를 음성 기준으로 재설계.
구조 (plain text)
[slide 1]
첫 문장. 리듬을 위한 짧은 문장.
[pause:400]
두 번째 문장은 조금 더 길어도 괜찮지만 25 단어를 넘지 않도록 합니다.
[pause:600]
핵심 강조 전에는 조금 더 쉬어줍니다.
[slide 2]
새 슬라이드로 넘어갑니다.
...
Line layout (subtitle-sync 필수)
한 슬라이드의 내레이션을 절대 한 줄에 몰아넣지 말 것. generate-player.py의 parse_transcript_by_slide는 newline으로 분할해 각 줄을 자막 추적 단위로 사용하고, char_proportional_line_times가 각 줄의 글자 수 비율로 슬라이드 MP3 duration을 쪼개 {start,end}를 부여한다. 한 줄짜리 슬라이드는 자막 한 덩어리 + 하이라이트 불가.
규칙:
- 발화 단위 한 개 = 한 줄. 문장 또는
[pause:…]사이의 한 호흡 단위. [pause:NNN]마커는 자기만의 줄에 둔다 (인라인 금지). 플레이어가 pause 줄은 strip → 빈 줄로 필터링.[slide N]역시 자기만의 줄.- 빈 줄은 슬라이드 사이 구분용으로만 허용.
❌ 금지 (한 줄에 몰아쓰기 — 추적 불가):
[slide 1]
첫 문장. [pause:400] 두 번째 문장. [pause:600] 세 번째 문장.
✅ 올바름 (줄 단위 분할 — 추적 가능):
[slide 1]
첫 문장.
[pause:400]
두 번째 문장.
[pause:600]
세 번째 문장.
규칙
문장 길이
- 영어 ≤25 단어, 한국어 ≤20 어절
- 한 호흡에 읽을 수 있는 길이
축약·구어체 허용
- "그래서 이게 뭐냐면", "이게 꽤 중요합니다"
- 너무 문어적 표현 지양 ("기인한다" → "때문입니다")
Cue와 Marker
| 태그 | 용도 | 예 |
|---|---|---|
[slide N] |
TTS 후처리 시 오디오 구간 분할 | [slide 3] |
[pause:ms] |
문장 사이 호흡 | [pause:400] |
[emph]...[/emph] |
강조 (SSML 변환 시 emphasis) | [emph]중요[/emph] |
pause 권장값:
- 문장 사이: 300~400ms
- 문단 전환: 600~800ms
- 강조/질문 후: 800~1200ms
- 슬라이드 전환 후 첫 문장 앞: 500ms
Unspeakable 변환 (핵심)
Raw code literal → 설명형
- ❌
const x = () => { return 1; } - ✅ "const 키워드로 x를 선언하고, 화살표 함수로 1을 반환합니다"
긴 숫자 → 구어
- ❌ "3.14159265358979"
- ✅ "파이, 약 3.14"
- ❌ "403,825개"
- ✅ "약 40만 개"
URL → 이름
- ❌ "https://react.dev/learn/server-components"
- ✅ "React 공식 문서의 서버 컴포넌트 페이지"
심볼·이모지 → 설명 또는 제거
- ❌ "Use 👉 this"
- ✅ "이것을 사용하세요"
길이 계산
문자/분 속도는 voice와 TTS 엔진, speed 설정에 따라 달라진다. 아래 실측 표 기반:
Voice별 발화 속도 (char/sec, speed=1.0 기준)
| 엔진 | Voice | ko 실측 | en 실측 |
|---|---|---|---|
OpenAI gpt-4o-mini-tts |
nova |
≈4.3 | ≈3.8 (est.) |
OpenAI tts-1 / tts-1-hd |
기본값 | ≈4.2 | ≈3.7 (est.) |
| edge-tts | ko-KR-SunHiNeural |
≈4.3 | — |
| edge-tts | en-US-*Neural |
— | ≈3.5 |
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 202 lines · 60 tokens per session scan A 9a0092f36ba1
script-writing is a skill published in the GitHub repository tobyilee/course-builder (27 stars, last pushed 6mo ago), licensed MIT. It adds 60 tokens to every session and 2,394 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
script-writing compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| script-writingtobyilee/course-builder | Skill | 27 | 6mo ago | MIT | A | 60 | Claude Code |
| imagegenopenai/codex | Skill | 134k | today | Apache-2.0 | A | 113 | Codex |
| local-ai-agentsmicrosoft/ai-agents-for-beginners | Skill | 79k | today | MIT | A | 200 | Claude Code, Codex |
| playwright-climicrosoft/playwright | Skill | 99k | today | Apache-2.0 | A | 19 | Claude Code |
| systematic-debuggingobra/superpowers | Skill | 314k | 3d ago | MIT | A | 21 | Claude Code |
| next-cache-components-adoptionvercel/next.js | Skill | 143k | today | MIT | A | 95 | Claude Code |
| chat-pet-sprite-creationmicrosoft/vscode | Skill | 195k | today | MIT | A | 53 | Claude Code, Codex |