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/tts-synthesis/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/tts-synthesis)<a href="https://agentmods.dev/skills/tobyilee/course-builder/tts-synthesis"><img src="https://agentmods.dev/badge/skills/tobyilee/course-builder/tts-synthesis.svg" alt="Measured on agentmods" 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.00128 | $0.01326 |
| Opus 5 | $0.00064 | $0.00663 |
| Sonnet 5 | $0.00026 | $0.00265 |
| Haiku 4.5 | $0.00013 | $0.00133 |
Grade A, and why
tts-synthesis 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 6d 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 — 100 lines — stays where its author put it; the contents beside it link to each section on GitHub.
TTS Synthesis — Pluggable Audio Pipeline
transcript.txt를 per-slide MP3 + full.mp3로 합성한다. OpenAI gpt-4o-mini-tts + nova + speed 1.3가 기본. edge-tts는 offline/무료 대안.
왜 이 스킬이 존재하는가
원래 하네스의 Non-Goal이었으나 Phase 7에서 확장. TTS 합성은 (1) transcript 마커 파싱, (2) 엔진별 API 호출, (3) pause 무음 삽입 + concat, (4) retry가 모두 얽혀있어 스크립트화하지 않으면 재사용이 어렵다.
실행
표준 호출
python3 scripts/synthesize-tts.py \
course/sections/<sec>/classes/<cls>/transcript.txt \
course/sections/<sec>/classes/<cls>/audio
위는 기본값 (openai + nova + speed 1.3 + default 친근 ko instructions)을 사용.
래퍼 (pipefail 보장)
bash .claude/skills/tts-synthesis/scripts/run.sh \
<transcript.txt> <out_dir> [추가 플래그]
래퍼가 set -o pipefail + tee의 실제 exit 전파 + .env 로딩을 책임진다.
엔진 전환
# edge-tts로 (오프라인, rate limit 있음)
--engine edge --voice ko-KR-SunHiNeural
# OpenAI 다른 voice/모델
--voice shimmer
--model tts-1-hd # 고음질, 비용 2배
--speed 1.0 # 원속도
입력 마커 규격
[slide N](줄 단독, N=1..) — TTS 후처리용 오디오 구간 분할 기준[pause:Xms]— 무음 삽입 (기본 300~800). speed 파라미터에 영향받지 않음 (원본 유지, 사용자 확인된 선호)[emph]...[/emph]— SSML 변환 시<emphasis>(OpenAI는 instructions로 대체)
출력 구조
<out_dir>/
slide_01.mp3 ~ slide_NN.mp3 # 슬라이드별
full.mp3 # 전체 concat
에이전트/오케스트레이터 연결
이 스킬은 tts-synthesizer 에이전트의 단일 책임 스킬. course-builder 오케스트레이터 Phase 5의 step 4 로 통합되어 있으며, asset-builder 가 build-bundle.sh 안에서 자동 위임 호출한다:
Phase 5 (build):
step 1 gate (asset-builder)
step 2 Marp HTML (asset-builder)
step 3 Marp PNG (asset-builder, SKIP_PLAYER 가능)
step 4 TTS 합성 ← tts-synthesizer (이 스킬), per-class
step 5 manifest (asset-builder)
step 6 player HTML (asset-builder, SKIP_PLAYER 가능)
step 7 SSML 검증 (asset-builder)
step 8 bundle.zip (asset-builder)
자동 호출 조건 (모두 충족):
coherence_report.overall == "pass"— gate 통과OPENAI_API_KEY존재 (없으면 edge-tts 폴백)SKIP_TTS != 1audio/full.mp3미존재 또는FORCE_TTS=1
standalone 호출(빌드 외부 사용자 트리거)도 지원 — tts-synthesizer 에이전트를 직접 invoke.
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.
- 6d ago First seen · 100 lines · 128 tokens per session scan A 2c9333b7609d
tts-synthesis is a skill published in the GitHub repository tobyilee/course-builder (22 stars, last pushed 4mo ago), licensed MIT. It adds 128 tokens to every session and 1,326 once invoked, about $0.0006 per session on Opus 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.
Other skills, from other repositories
baoyu-comic
Knowledge comics (知识漫画): educational, biography, tutorial.
html-ppt-zhangzara-cartesian
An economics senior thesis on the employment effects of local minimum-wage increases — identification strategy, evidence, and limitations. Built as a decision-grade coursework defense deck for thesis committee.
html-ppt-zhangzara-daisy-days
A customer-success workshop onboarding users to a project-management app — the first-value path and the habits that retain. Built as a decision-grade professional training deck for new customers, CS team.
html-ppt-zhangzara-playful
A retail sales-floor training on consultative selling — the flow, the role-plays, and the daily habit that lifts conversion. Built as a decision-grade professional training deck for store associates, floor managers.
html-ppt-zhangzara-retro-windows
An IT security-awareness training on spotting phishing — the tells, the drill, and what to do in the first 60 seconds. Built as a decision-grade professional training deck for all employees.
sprite-animation
A pixel / sprite-style animated explainer slide — full-bleed cream stage, bold display year, animated pixel-art mascot (e.g. Hanafuda card, mushroom, or 8-bit console), kinetic Japanese display type, ticking timeline ribbon. Reads like a single frame of an educational motion video — looping CSS keyframes, no JS, ready…