video-sound
Make the sound of any video so it feels real: AI voices that don't sound fake (cast from candidates a person picks, directed with each model's documented tags), dialogue and narration written for the ear with pauses, breaths and small actions, sound effects on the right frame, music planned bar by b…
Install / Use
npx skills add hashgraph-online/awesome-codex-plugins --skill video-soundInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Content & MediaSupported Platforms
Our assessment of video-sound
video-sound scores 85/100 on our quality scale, 831st of 1,173 Content & Media skills we index.
Its SKILL.md is 13 KB long, well organised into 16 sections with 4 code examples: a thorough specification that gives an agent plenty to work with.
With 1,075 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated about 2 months ago, so video-sound is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
video-sound compared with similar skills
All 4 of these similar skills score higher than video-sound; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| video-sound (this skill)by hashgraph-online | 85 | 1.1k | 46d ago | SKILL.md |
| LocalAIby mudler | 100 | 50.3k | today | MCP Server |
| siyuanby siyuan-note | 100 | 47.1k | today | MCP Server |
| algorithmic-artby anthropics | 100 | 177.9k | 47d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 47d ago | SKILL.md |
Frequently asked questions
- How do I install video-sound?
- Run
npx skills add hashgraph-online/awesome-codex-plugins --skill video-sound. The install tabs above show the steps for each supported agent. - Which AI agents does video-sound work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is video-sound safe to use?
- It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is video-sound still maintained?
- The repository was last updated about 2 months ago, so video-sound is actively maintained.
Skill content
View source on GitHubname: video-sound
description: >-
Make the sound of any video so it feels real: AI voices that don't sound fake (cast from candidates a person picks,
directed with each model's documented tags), dialogue and narration written for the ear with pauses, breaths and
small actions, sound effects on the right frame, music planned bar by bar with a quiet part, and a measured mix.
Built from 480 sourced findings (Walter Murch, Randy Thom, Ben Burtt, trailer editors, NPR, voice directors, model
docs, HyperFrames, earshot) plus paid tests. An agent can't hear, so every step writes numbers: a cue sheet, scripts
that build and grade the mix (LUFS, true peak, voice over music, effects within a frame, cuts on the beat, dead
air), a voice audition page and an audio LLM judge that shortlists takes. Use for "add sound", "voiceover", "sound
design", "music for my video", "make the AI voice sound real", "pick the best take", "SFX", "mix", "launch video
audio", "trailer sound", in HyperFrames, Remotion or AI films. Not for making a song as the product.
license: MIT
metadata:
author: vargHQ
version: "1.1.0"
openclaw:
requires:
anyBins:
- python3
- ffmpeg
homepage: https://github.com/vargHQ/skills/tree/main/video-sound
compatibility: >-
Works in any agent with a shell. scripts/sound.py needs Python 3.9+ and ffmpeg (stdlib only); beats and fit
need librosa (run them with uv run --with librosa). scripts/audition.py renders through the varg API
(VARG_API_KEY) or scores takes made elsewhere. Generation on varg costs about $0.01-0.02 per voice line, $0.01-0.06
per sound effect and $0.05 per 20 s music bed; mixing and checks are free.
allowed-tools: Bash(python3:) Bash(ffmpeg:) Bash(ffprobe:) Bash(uv:) Bash(curl:*) Read Write Edit
Video sound
Picture gets the attention; sound decides whether it feels real. Agents make sound badly for three reasons: they can't hear, they put an effect on every cut, and they let music bury the words. This skill fixes all three with a plan written before picture, people's ears where taste is needed, and numbers everywhere else.
What the evidence says (full guide: https://claude.ai/artifact/Hw1EFJw4Xr86XcP8QpVt1V; sources in
references/evidence.md):
- Pros use few effects. In measured launch films about 85% of hard cuts have no sound of their own and there are about 2 whooshes per film (Cinetic); a strong accent lands on only 4-25% of cuts (earshot, 8 films).
- Bare text makes a rushed voice. Our test on
eleven_v4: the bare line ran 231 words/min with a 0.36 s pause; punctuation took it to 207 and 0.51 s; breath and sniff tags to 194 and 0.92 s plus an exhale before the first word. 0 of 16 takes read a tag aloud; 16 of 16 kept every word. - Music models keep tempo, not structure. 3 of 3 ElevenLabs Music takes held 120 BPM; 0 of 3 made the planned half-bar of silence and hit; 1 of 3 came back 29 s instead of 20. Ask the model for tempo, key, instruments and order; make stops, drops and the exact length in the edit.
- Measure every effect. 1 of 5 generated effects came back silent (a 1 s click peaking at -54 dBFS).
- Designed vs plain, same lines, both at -14 LUFS: the designed mix passed 8 of 8 checks; the plain one had the music 7 dB louder than the voice in the speech band, 3 of 4 cuts off the beat and 1.2 s of dead air.
Rules
- Sound before picture. Write the sound plan and record the voice first ("radio cut", Ken Burns' editor; Baby Driver started as a radio play). The voice's word times and the music's bar lines set the cuts.
- Every sound has a reason on screen and a time in
cues.json. No effect without a visible cause. Few and exact. - Direct with each model's documented syntax (
references/voice.md), never with adjectives alone. Prompt behaviour, not emotion. - Give lines room. Fewer words per clip; keep the breath before a thought; hold after a key line.
- Music leaves room for words: at least 10 dB under the voice in 300 Hz-4 kHz, ducked fast down and slow up.
- Room tone under everything. Silence is a choice, used once or twice, eased into, never digital zero by accident.
- Measure, then ask a person to listen. Scripts grade the mix; a person picks the voice and signs off the mix on headphones and a phone speaker. Never claim you heard something.
- Licences and consent. Clone only voices you have the right to use; check music and sound licences
(
references/music.md,references/sfx.md).
Files you produce
sound/brief.md type, platform + loudness target, length, who speaks, music yes/no, budget
sound/plan.md beat-by-beat sound plan: time | picture | voice | music | effects | ambience | silence
sound/lines.md one row per line: id | who | text exactly as sent | direction | pause after | shot
sound/audition/ candidate takes + audition.html; the pick goes into brief.md
sound/vo/ approved line files + word timings
sound/music/ bed, beats.json, the fitted bed
sound/sfx/ one file per effect, measured
sound/cues.json every sound with its time (format: references/cue-sheet.md)
sound/mix.wav the master, mix_stems/, mix_report.json, check.json, sheet.png / preview.mp4
Step by step
0. Brief
Fill brief.md. Pick the video type in references/types.md (launch, cinematic film, music video, trailer or ad,
UGC or talking character, narrated explainer or code demo): it says what leads (music, voice or the room), how much
music, how many effects and the signature move. Pick the platform: social and YouTube -14 LUFS, podcasts -16,
streaming speech -18, broadcast -23 or -24 (references/mix.md).
1. Sound plan (before any picture is generated)
If the video-script skill wrote script.md, start from it: its spoken column becomes lines.md, its sound
column seeds plan.md, and its wpm: line is replaced by the measured pace of the chosen voice. Write plan.md,
one row per beat of the video. For each music cue: start, stop, emotion, intensity, perspective and
"why this, why now?". Choose the 3-6 moments that get an accent (reveal, key action, logo) and the one silence.
At most 5 layers in any 5 s (Murch). STOP if the person has not seen the script: show plan.md and lines.md.
2. Lines for the ear
Write lines.md (references/dialogue.md): plain spoken words, one idea per sentence, contractions, round numbers,
sentences one breath long; cut every line the picture already says. Mark pauses, breaths and small actions with the
model's own tags. For two speakers, write them as one exchange with cut-offs (—) and interjections.
3. Cast: candidates, then a person picks
Characters already cast by the character-passport skill keep the voice in their cast/<id>.md voice block and its
approved take; audition only the voices still open (usually the narrator). Render the 1-2 hardest lines in 3-5 voices, 2 takes each (references/voice.md has casting notes, voice design
prompts and per-model syntax):
python3 scripts/audition.py plan sound/lines_hard.md sound/voices.json -o sound/audition/audition.json --takes 2
python3 scripts/audition.py render sound/audition/audition.json # prints the price; --yes after approval
uv run --with librosa python3 scripts/audition.py score sound/audition/audition.json
python3 scripts/audition.py page sound/audition/audition.json -o sound/audition/audition.html
On varg an identical request returns the cached file for free: change the text slightly (a trailing space) for a
second take. With the varg MCP instead of a key, generate with call_tool (tool: "speech", wait: false, then
get_job), put each file path in audition.json and run score and page. STOP: the person listens and picks.
Write the voice id, model and settings into brief.md.
Too many takes to play them all? Shortlist with an audio LLM judge, never pick with one (references/judge.md). A
vague "which is better?" judge picked the plain mix over the designed one every time in our test, and picked between
identical takes. Ask yes/no questions about one take at a time, let code decide, compare survivors two at a time in
both orders, and count only verdicts that agree: python3 scripts/judge_takes.py prompt | check | make | tally.
4. Record every line
Render all lines in the chosen voice. Transcribe each take with word timestamps and compare with the script: models
drop or invent words. Re-render only wrong lines. Keep quiet breaths; don't denoise or level natural sentence
declination (4-6 dB is normal speech). For generated films, decide per shot: keep native dialogue, or mute it and
lay the TTS line, then lip-sync with one clean voice (references/dialogue.md).
5. Music
Prompt with the five answers (genre, mood, instruments, tempo with BPM and key, era) and narrate the arrangement in order ("start with just ... then bring in ..."). Instrumental under a voice; a bed that "feels incomplete". Then:
uv run --with librosa python3 scripts/sound.py beats sound/music/bed.mp3 -o sound/music/beats.json
uv run --with librosa python3 scripts/sound.py fit sound/music/bed.mp3 --to 30 -o sound/music/bed_fit.wav
Check the downbeats against where instruments enter (the tracker can be half a bar off). Snap picture cuts to the
grid (launch and music videos) or to the one or two big changes (story pieces). Make stops and drops in the edit:
cut the bed on a bar line and bring it back on a later downbeat (references/music.md).
6. Effects
List the on-screen events; give sounds only to the chosen ones (references/sfx.md has the table: clicks, typing,
pops, whooshes, the logo ending). Generate or retrieve one file per event and measure it
(python3 scripts/sound.py measure sfx/x.wav): a generated effect can come back silent or with a long lead-in.
Impacts and clicks align by onset; whooshes and risers by their peak ("align": "peak").
7. Mix, check, look
python3 scripts/sound.py mix sound/cues.json -o sound/mix.wav
python3 scripts/sound.py check sound/mix.wav --cues sound/cues.json > sound/check.json # exit 1 on a failure
python3 scripts/sound.py preview sound/mix.wav --cues sound/cues.json -o sound/preview.mp4
The mix ducks the music hardest in the voice band (lows 35%, 300 Hz-4 kHz 100%, highs 65% of duck.depth_db),
fades every clip edge, loops the room tone under everything and masters to the platform with an oversampled limiter.
Fix every failed check before showing anyone. Run the cheap-tells audit in references/sfx.md.
8. A person listens
STOP: share preview.mp4 (and the muxed video). Ask for headphones and a phone speaker. Write their notes into
plan.md, fix, re-check. Then python3 scripts/sound.py mux video.mp4 sound/mix.wav -o final.mp4.
Code videos and generated films
- HyperFrames: put the finished
mix.wavon one audio track, or place stems as<audio>elements with volume automation;npx hyperframes audio <file> --jsonreports a file's peak. Remotion: one<Audio>per stem; size the composition to the voice withcalculateMetadata. - Seedance, Kling, Veo: prompt the sound you want (or "NO MUSIC ... only diegetic sound ... inside <>") and list the shot's sounds; Seedance 2.5 always outputs audio. Keep good native dialogue, rebuild music and effects in post.
Never
An effect on every cut · the same sample machine-gunned · synth beeps for physical things · music with lyrics under
narration · music louder than words · a fade-out instead of a real ending · dead digital silence between lines ·
SSML <break> on Eleven v4/v3 · emotion adjectives instead of behaviour · naming an artist or song in a music prompt
· cloning a voice without consent · claiming you listened.
Files in this skill
references/voice.md: casting candidates, voice design prompts, exact
Truncated for display — read the full file on GitHub.
Related Skills
LocalAI
50.3kLocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.
siyuan
47.1kAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
