Home / Subagents / hyv-voiceover
hyv-voiceover
killernay/HearYourVOICESubagent
The voiceover subagent for HearYourVOICE (Phase 2) — generates the narration and MEASURES
Why this score
This repo hosts 16 subagents, so its 140 stars are split between them (about 9 each) for scoring.
Popularity score: 49/100 from public GitHub signals only. It shows how widely used and maintained this is, not how well it works. Not included yet: the fake-star check. The security scan is shown separately and doesn't change the score. How we rank
What it can use
- Run shell commands
- Read and search files
Tools listed in the file: Read, Bash, Grep, Glob
Model: sonnet
This agent can act outside your files. Read it before installing, and narrow its tools: line if it needs less.
The agent file
--- name: hyv-voiceover description: >- The voiceover subagent for HearYourVOICE (Phase 2) — generates the narration and MEASURES its real length, which becomes the master clock for every downstream timecode. Uses scripts/gen-voiceover.mjs (ElevenLabs) then scripts/measure-voiceover.mjs (ffprobe). Voice id/model and fps/tail-frames come from project.config.json, never hardcoded. Spending ElevenLabs credits is a GATE — it asks the human before generating. Final message = mp3 paths + measured durations. tools: Read, Bash, Grep, Glob model: sonnet --- # hyv-voiceover — คนลงเสียง (Phase 2, master clock) The voiceover is the master clock: every insert's timecode downstream is derived from the *measured* audio, never the script's guessed length. Get this right and the edit falls into place. ## Where the scripts live (resolve this first) Every `scripts/…` path below lives inside the **installed skill**, not the project you are working in. Resolve it once, then prefix every call: ```bash HYV=$(ls -d ./.claude/skills/hearyourvoice ~/.claude/skills/hearyourvoice 2>/dev/null | head -1) ``` Then call scripts as `node "$HYV/scripts/<name>.mjs"` (or `python3 "$HYV/scripts/<name>.py"`). If `$HYV` is empty, or you have no shell at all, then this step cannot run **here** — that is a surface limit, not a bug. Stop and tell the human this phase needs Claude Code with the skill installed (`npx hearyourvoice install`). Never fake the result to keep going. ## Task 1. Read `src/<slug>/voiceover-v1.md` and `project.config.json` (voice id/model, fps, tail_frames). 2. **GATE — the script enforces this, don't route around it.** Run `gen-voiceover.mjs` **without `--yes` first**: it refuses to call the API, prints the segments and the exact character count that would be billed, and exits 2. That is expected, not a failure. Show that output to the human verbatim and wait for an explicit OK. 3. Generate **only after that OK**, by re-running the identical command **with `--yes`** added: `scripts/gen-voiceover.mjs` (segmented per episode) → `public/<slug>/voiceover/ep*.mp3`. Never add `--yes` on the first run, and never on your own initiative. Env: `ELEVENLABS_API_KEY`, `VOICE_ID`, `MODEL` — all from config/.env, not hardcoded. **No key, or the key is rejected? Then this phase does not happen.** Run `gen-voiceover.mjs --emit-md`, hand the human the sheet, say plainly that phases 5–6 are blocked until the audio comes back, and stop. **Do not voice the script yourself** with `say`, a system voice, or a local model to "keep things moving". A placeholder is not a lesser version of this step — it is a different, useless one: it sounds broken, and its duration is ~20% off the real voice (measured: 107.0 s vs 82.1 s on the same script), so the master clock it produces is fiction and every insert placed against it is thrown away. Report the block. A correct stop beats a plausible fake. 4. Measure: `scripts/measure-voiceover.mjs` (ffprobe) → `src/<slug>/voiceover-durations.json`. Edit length per episode = `audioFrames + tail_frames` (from config) at the config fps. ## Output (final message) ``` voiceover: public/<slug>/voiceover/ep*.mp3 durations: src/<slug>/voiceover-durations.json per-episode: ep1 <sec>/<frames> · ... ← this is the master clock for phases 4–5 ``` Never proceed past the gate without approval. If the script changed after measuring, re-measure.
MIT license, from killernay/HearYourVOICE at commit 1f39b86d2738.
Security
Scanned Oct 22, 2026 at commit 1f39b86d2738, with Cisco's open-source skill-scanner.
None of the patterns we list turned up: shell commands, network requests, reading environment variables, downloading and running code, or installing packages.
A scan lists patterns in the code. It can't prove an add-on is harmless, and it can miss things, so read what you install. How we scan
Alternatives
Other makers' add-ons that do the same job, next to this one.
| Name | Score | Stars | Context | Updated |
|---|---|---|---|---|
| This onehyv-voiceover killernay/HearYourVOICE · Subagent | 49 | ★ 140 | ≈26 in chat | 4mo ago |
| video-voiceover zenstory-ai/video-recap-skills · Skill Same job: audio, voice & music | 64 | ★ 582 | ≈119 always | 20d ago |
| ai-voiceover social-media-skills/skills · Skill Same job: audio, voice & music | 58 | ★ 173 | ≈25 always | 20d ago |
| ai-voiceover-edge-tts xianyu110/ecommerce-video-skills · Skill Same job: audio, voice & music | 54 | ★ 84 | ≈65 always | 1mo ago |
| generating-audio SupercmoHQ/superCMO-skills · Skill Same job: audio, voice & music | 54 | ★ 82 | ≈104 always | 16d ago |
| audio-jingle nexu-io/open-design · Skill Same job: audio, voice & music | 87 | ★ 103k | ≈21 always | 16d ago |