本文へ移動
cccskills
無料GitHub で公開

sound-effects

Add a measured sound pass to a motion-graphics video made with Claude Code (HyperFrames, Remotion, GSAP, Claude Motion or the motion-broll skill). Builds a cue list, checks the music's beat grid against the kick drums, lands cuts on the beat, places one real sound effect per cue from a bundled CC0 library, mixes to -16 LUFS with true peaks below -4 dBFS measured on the exported MP4, and proves it with frames, waveforms and 5 timestamps for a human to check. Use when someone wants sound effects, sound design or music added to a motion-graphics video, or says their AI video sounds like cheap beeps.

インストール方法を見る

含まれるファイル(117)

  • SKILL.md9.8 KB
  • LICENSES.md19.4 KB
  • README.md3.9 KB
  • scripts/__pycache__/report.cpython-313.pyc5.0 KB
  • scripts/report.py3.0 KB
  • scripts/sound_pass.py9.8 KB
  • sfx/ambience/fs-329533-room-tone-in-an-apartment-livi.ogg141.4 KB
  • sfx/ambience/fs-329569-roomtone-bedroom-yew.ogg166.2 KB
  • sfx/ambience/fs-426767-apartment-room-tone-wav.ogg167.1 KB
  • sfx/click/fs788933.ogg5.1 KB
  • sfx/click/kenney-interface-click-001.ogg4.5 KB
  • sfx/click/kenney-interface-select-001.ogg4.1 KB
  • sfx/click/kenney-interface-select-002.ogg4.2 KB
  • sfx/click/kenney-interface-select-003.ogg5.9 KB
  • sfx/click/kenney-interface-tick-001.ogg3.8 KB
  • sfx/click/kenney-interface-toggle-001.ogg4.7 KB
  • sfx/click/kenney-interface-toggle-002.ogg4.6 KB
  • sfx/ding/fs-349504-triangle-open-04.ogg30.2 KB
  • sfx/ding/fs-571513-soft-notifications-bell-ding-d.ogg14.2 KB
  • sfx/ding/fs-634690-lil-pip.ogg5.0 KB
  • sfx/ding/kenney-interface-bong-001.ogg4.3 KB
  • sfx/ding/kenney-interface-confirmation-001.ogg4.7 KB
  • sfx/ding/kenney-interface-confirmation-002.ogg7.3 KB
  • sfx/ding/kenney-interface-confirmation-003.ogg5.7 KB
  • sfx/ding/kenney-interface-glass-001.ogg5.3 KB
  • sfx/ding/kenney-interface-glass-002.ogg4.4 KB
  • sfx/glitch/fs-144546-touchs-wav.ogg83.9 KB
  • sfx/glitch/fs-339521-vhs-rewind-forward-and-eject.ogg35.0 KB
  • sfx/glitch/fs-402451-fast-forward.ogg49.0 KB
  • sfx/glitch/kenney-interface-glitch-002.ogg4.0 KB
  • sfx/glitch/kenney-sci-computernoise-000.ogg40.6 KB
  • sfx/glitch/kenney-sci-computernoise-001.ogg42.3 KB
  • sfx/glitch/kenney-sci-computernoise-002.ogg45.0 KB
  • sfx/impact/fs-177242-cinematic-impact.ogg53.9 KB
  • sfx/impact/fs-222517-dramatic-hit.ogg31.6 KB
  • sfx/impact/fs-347561-micheal-bay-hit.ogg51.9 KB
  • sfx/impact/fs524817.ogg11.9 KB
  • sfx/impact/fs745291.ogg8.1 KB
  • sfx/impact/kenney-impact-impactpunch-heavy-000.ogg7.9 KB
  • sfx/impact/kenney-impact-impactpunch-heavy-001.ogg7.2 KB
  • sfx/impact/kenney-impact-impactsoft-heavy-000.ogg6.4 KB
  • sfx/impact/kenney-impact-impactsoft-heavy-001.ogg6.6 KB
  • sfx/impact/kenney-sci-lowfrequency-explosion-000.ogg13.7 KB
  • sfx/impact/kenney-sci-lowfrequency-explosion-001.ogg9.0 KB
  • sfx/kit/click.ogg6.1 KB
  • sfx/kit/impact.ogg5.5 KB
  • sfx/kit/pop.ogg4.7 KB
  • sfx/kit/riser.ogg16.8 KB
  • sfx/kit/tick.ogg3.9 KB
  • sfx/kit/whoosh.ogg10.3 KB
  • sfx/manifest.json66.9 KB
  • sfx/pop/fs-258269-mouth-pop.ogg7.8 KB
  • sfx/pop/fs-447910-plop.ogg5.9 KB
  • sfx/pop/fs-467951-ui-button-click.ogg4.7 KB
  • sfx/pop/fs-514833-user-interface-menu-sounds-wav.ogg17.7 KB
  • sfx/pop/fs-824189-pop-in-sfx.ogg7.4 KB
  • sfx/pop/fs202230.ogg5.4 KB
  • sfx/pop/fs323738.ogg4.7 KB
  • sfx/pop/fs527522.ogg4.7 KB
  • sfx/pop/kenney-interface-drop-001.ogg4.7 KB
  • sfx/pop/kenney-interface-drop-002.ogg4.9 KB
  • sfx/pop/kenney-interface-drop-003.ogg4.9 KB
  • sfx/pop/kenney-interface-maximize-001.ogg6.3 KB
  • sfx/pop/kenney-interface-maximize-002.ogg5.0 KB
  • sfx/pop/kenney-interface-pluck-001.ogg4.7 KB
  • sfx/pop/kenney-interface-pluck-002.ogg4.9 KB
  • sfx/riser/fs-174363-rewind.ogg88.5 KB
  • sfx/riser/fs-396160-scary-hits-risers-002.ogg88.8 KB
  • sfx/riser/fs-396161-scary-hits-risers-001.ogg88.3 KB
  • sfx/riser/fs-464250-echo-chromatic-riser-wav.ogg89.6 KB
  • sfx/riser/fs-685256-riser-sound-effect-short-wav.ogg31.9 KB
  • sfx/riser/fs867126.ogg39.0 KB
  • sfx/riser/kenney-digital-phaserup1.ogg9.4 KB
  • sfx/riser/kenney-digital-phaserup2.ogg8.4 KB
  • sfx/riser/kenney-digital-phaserup3.ogg9.3 KB
  • sfx/riser/kenney-digital-powerup1.ogg10.5 KB
  • sfx/riser/kenney-digital-powerup2.ogg4.8 KB
  • sfx/riser/kenney-digital-powerup3.ogg9.6 KB
  • sfx/tick/fs384187.ogg5.7 KB
  • sfx/tick/fs528561.ogg4.3 KB
  • sfx/tick/fs721514.ogg4.0 KB
  • sfx/transition/fs-683096-woosh.ogg21.2 KB
  • sfx/transition/fs-702773-swipe-wav.ogg17.8 KB
  • sfx/transition/fs-786514-swoosh-v2.ogg4.4 KB
  • sfx/transition/fs-816262-broomstick-whoosh-3-quiet-okm1.ogg6.7 KB
  • sfx/transition/fs-850347-swipe-various.ogg43.1 KB
  • sfx/transition/fs-856168-cyberpunk-glitch-hologram-tran.ogg37.0 KB
  • sfx/transition/kenney-interface-maximize-005.ogg9.1 KB
  • sfx/transition/kenney-interface-maximize-006.ogg5.3 KB
  • sfx/transition/kenney-interface-minimize-001.ogg6.3 KB
  • sfx/transition/kenney-interface-minimize-002.ogg5.3 KB
  • sfx/transition/kenney-interface-scroll-001.ogg13.7 KB
  • sfx/transition/kenney-interface-scroll-002.ogg11.4 KB
  • sfx/typing/fs-323432-typing.ogg59.6 KB
  • sfx/typing/fs-416777-digital-typing-wav.ogg17.8 KB
  • sfx/typing/fs-447909-keyboard-typing.ogg48.3 KB
  • sfx/typing/fs-511418-data-reveal-sound.ogg43.6 KB
  • sfx/typing/fs-79388-keyboard-typing-wav.ogg67.4 KB
  • sfx/ui-blip/kenney-digital-pepsound1.ogg6.0 KB
  • sfx/ui-blip/kenney-digital-pepsound2.ogg6.1 KB
  • sfx/ui-blip/kenney-digital-pepsound3.ogg5.9 KB
  • sfx/ui-blip/kenney-digital-threetone1.ogg8.1 KB
  • sfx/ui-blip/kenney-digital-threetone2.ogg9.2 KB
  • sfx/ui-blip/kenney-digital-twotone1.ogg6.8 KB
  • sfx/ui-blip/kenney-digital-twotone2.ogg7.0 KB
  • sfx/ui-blip/kenney-ui-rollover1.ogg7.2 KB
  • sfx/ui-blip/kenney-ui-rollover2.ogg5.2 KB
  • sfx/ui-blip/kenney-ui-rollover3.ogg5.6 KB
  • sfx/ui-blip/kenney-ui-rollover4.ogg5.7 KB
  • sfx/whoosh/fs-127197-fast-simple-chop-5-aif.ogg10.3 KB
  • sfx/whoosh/fs-169867-swoosh.ogg18.3 KB
  • sfx/whoosh/fs-264777-swoosh.ogg34.3 KB
  • sfx/whoosh/fs-683101-quick-woosh.ogg8.5 KB
  • sfx/whoosh/fs393811.ogg5.2 KB
  • sfx/whoosh/fs810485.ogg14.7 KB
  • sfx/whoosh/fs830856.ogg9.7 KB
  • TOP-PICKS.md4.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Sound effects

Claude can't hear. So this skill never judges sound by feel: it measures every step, and it hands the user 5 timestamps to check with headphones. It never says "it sounds good".

The approach is Vox's sound-pass prompt (@Voxyz_ai, https://x.com/Voxyz_ai/status/2109358372873183564, 11 Oct 2026). Keep that credit.

Default kit (use this first)

sfx/manifest.json → default_kit: one sound per core category, picked by ear by Bart (12 Oct 2026). Use it unless the user asks for something else.

CategorySoundWhere it comes from
whoosh"Whoosh" by qubodupbundled sfx/kit/whoosh.ogg (CC0)
click"Classic Click" by adh.dreamingbundled sfx/kit/click.ogg (CC0)
pop"POP SFX Neutral" by ethernel0bundled sfx/kit/pop.ogg (CC0)
riser"Cinematic Riser #3 subtle"bundled sfx/kit/riser.ogg (CC0)
impact"soft_impact3" by peoplearehappybundled sfx/kit/impact.ogg (CC0)
tick"Click / Tick" by Squirrel_404bundled sfx/kit/tick.ogg (CC0)
typingMixkit "Fast laptop keyboard typing" (#1392)downloaded at runtime into <out>/sound-effects-cache/ (Mixkit licence: never commit it)

Everything else in the manifest is an alternative (alt_categories lists which categories can stand in for each other). See TOP-PICKS.md for credits.

Rules

  • Never synthesize music or sound effects in code (no oscillator or sine beeps). Use real recorded files.
  • Sound effects: use the bundled library first. sfx/manifest.json lists every file with its category, duration, source and licence. All bundled files are CC0.
  • If the bundled library has nothing that fits, use the runtime entries in the manifest (Mixkit). Download them into the user's project, never into this skill folder, and never commit them. Mixkit allows use in videos but not standalone redistribution.
  • Music: a track the user gives you, or one with a licence that allows monetised YouTube use (Mixkit Stock Music Free License, CC0). Write the source and licence into SOUND.md. If neither exists, ask the user.
  • Measure the exported MP4, never the intermediate WAV.

1. Set up

Needs ffmpeg and Python 3.10+. Install into a folder you can delete:

python3 -m venv .sound-effects
.sound-effects/bin/pip install librosa soundfile numpy scipy matplotlib

2. Build the cue list

Read the video's duration and fps with ffprobe. List every moment that needs a sound. Take them from the composition source when you can (HyperFrames/Remotion timeline, GSAP labels, motion-broll plan.json). Otherwise detect scene cuts with ffmpeg -i in.mp4 -vf "select='gt(scene,0.3)',showinfo" -f null -. Write cues.json as [{"t": 2.0, "type": "scene_cut", "desc": "cut to card"}, {"t": 4.2, "type": "typing", "dur": 1.3, "desc": "..."}].

The cue types map to library categories (category_map in the manifest):

Cue typeCategoryNotes
movement (slide, camera move)whooshstarts 2 frames early; pick length to match the move
scene_cutwhooshshort whoosh, 2 frames early (transition sounds are alternatives)
appearpopon the frame
clickclickon the frame
typingtypinglooped/trimmed to dur, quiet
build_upriserends on the next hit
revealimpactthe loudest SFX
successpop(ding sounds are alternatives)
error_or_techglitch
hover_or_small_uitickvery quiet (ui-blip and click are alternatives)
bedambienceunder everything, optional

Use one sound per cue. Vary takes within a category so repeats don't sound robotic.

3. Beat grid, and check it

Run librosa.beat.beat_track. librosa sometimes locks onto the off-beat. Low-pass the music below 120 Hz, plot it against the beat lines for the first 4 bars, and compare where the kicks land. If the kicks don't sit on the lines, shift the whole grid by the median offset and plot again. Show the user beatgrid.png.

4. Put the big moves on the beat

Hard cuts and reveals should land on a beat. If you can change the animation timings, change them. If you can't, move where the music starts (search offsets and pick the one with the smallest cut-to-beat error). Report the error per cut in ms.

5. Place SFX and mix

Priority: voiceover > SFX > music. The music bed sits around -12 dB under the SFX and ducks under any voiceover by 8–12 dB. Target about -16 LUFS integrated with true peak below -4 dBFS, so nothing clips after AAC compression or on a phone speaker. Export, measure, adjust gain or add a limiter, then export and measure again:

ffmpeg -nostats -i after.mp4 -af ebur128=peak=true -f null - 2>&1 | tail -12
ffmpeg -nostats -i after.mp4 -ac 1 -af ebur128=peak=true -f null - 2>&1 | tail -12   # mono check

6. Prove it

For every cue, grab one frame just before and just after it from the exported MP4, and plot the waveform around it (checks/cue-XX.png). Then pick the 5 riskiest timestamps (largest beat error, long sounds such as typing and risers, the reveal) and give them to the user to check with headphones.

Original-quality files

The bundled sounds are compressed OGG Vorbis previews (trimmed, normalised, often mono), which is fine for most videos. If a sound is too low quality for the job (audible artefacts, a close-up hero sound, a final master), fetch the original:

  • Look up the entry's source_url in sfx/manifest.json. Every bundled and default_kit entry has one.
  • Freesound (freesound.org/people/<user>/sounds/<id>/): the original is the Download button on that page. It needs a free Freesound account, so ask the user to download it (or use their API key if they give you one).
  • Kenney (kenney.nl/assets/<pack>): download the pack zip from that page. Each Kenney entry's original_file in the manifest names the exact file, e.g. kenney_interface-sounds.zip → Audio/click_001.ogg. The rule: drop the prefix (kenney-interface- → interface-sounds, kenney-ui- → ui-audio, kenney-digital- → digital-audio, kenney-impact- → impact-sounds, kenney-sci- → sci-fi-sounds), then match the rest inside Audio/ ignoring case, with - read as _ (kenney-digital-phaserup1 → Audio/phaserUp1.ogg, kenney-impact-impactpunch-heavy-000 → Audio/impactPunch_heavy_000.ogg). Kenney's originals are OGG too, but unprocessed.
  • Save originals into the user's project (for example sound-effects-cache/originals/), never into this skill folder, and pass the file to the script via --swaps or by editing a copy of the manifest. Apply the same trim and level as the bundled file.

Find more sounds

When the user wants more or different sounds, search these sources, suggest 3–5 candidates with a link, creator and licence for each, and let the user pick. Only use or redistribute a sound as its licence allows.

SourceSearchLicence notes
Freesoundhttps://freesound.org/search/?q=<words>&f=license:"Creative Commons 0"Use the CC0 filter. CC0 can be bundled and needs no credit (credit anyway). CC-BY needs credit in the video description; never bundle CC-BY-NC or use it commercially.
Kenneyhttps://kenney.nl/assets/category:AudioAll CC0. Free to use and bundle.
Mixkithttps://mixkit.co/free-sound-effects/<category>/ (e.g. whoosh, typing)Mixkit SFX Free License: fine in videos, including monetised ones, but no redistribution. Download only into the user's project at runtime; never commit or bundle it.
Pixabayhttps://pixabay.com/sound-effects/search/<words>/Free in videos, no credit needed, but no standalone redistribution. The user downloads it in a browser; never bundle it.
Sonniss GDC bundleshttps://sonniss.com/gameaudiogdc/Royalty-free in videos; no raw redistribution or AI training. Local use only.
YouTube Audio LibraryYouTube Studio → Audio LibraryFor YouTube videos only; available only inside Studio. Never bundle it.

Only CC0 sounds may be added to this repo's sfx/ folder, each with a manifest entry (file, category, duration, source_url, licence, attribution) and a row in LICENSES.md.

Script

scripts/sound_pass.py runs steps 3–6 end to end:

.sound-effects/bin/python scripts/sound_pass.py --video silent.mp4 --cues cues.json \
  --music track.mp3 --manifest sfx/manifest.json --out out/

It outputs after.mp4, report.html, SOUND.md (log, cue → file table, LUFS and peak numbers, the 5 timestamps), beatgrid.png and checks/. Read its log and fix anything over target. If you changed the animation timings, re-render first.

7. Swap report

sound_pass.py also writes report.html. It lists every cue with its timestamp, category, the sound used (with a play button), the source page, licence and credit, plus the alternatives in that category, each with a play button and a "let model decide" option. Open it for the user. They choose, click Download swaps.json, and you re-run with --swaps swaps.json. "auto" means pick another sound from the alternatives. Keep cue indices stable between runs.

Report to the user

Report the music source and licence, the beat-grid result (shifted or not, and by how much), the cut-to-beat errors, final LUFS and true peak (stereo and mono), and the 5 timestamps. Don't tell them it sounds good.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Make a clean 45–90 second product demo video for any software product, rendered from code to MP4 with music. Airy light canvas, short centred lines the camera pushes into, the product's own UI rebuilt and shown up close as it is used (typing, results, tables, clicks), integrations, and a logo close. Use when someone wants a product demo, launch video, feature walkthrough or "how it works" video for an app, SaaS or tool.

日本語の概要は準備中です。原文の説明を表示しています。

Barty-Bart/motion-graphics6362026年10月12日 更新

Make a 10–30 second continuous-shot explainer for any product, rendered from code to MP4 with sound. One hero element (a ball, a cursor, a file, a message) travels through the product's workflow laid out as stations on one big canvas; the camera follows it, each station reacts as it passes, then the camera pulls out to reveal the whole journey. Use when someone wants an engaging, story-driven, one-take explainer or a loopable product animation.

日本語の概要は準備中です。原文の説明を表示しています。

Barty-Bart/motion-graphics6362026年10月12日 更新

Make a 12–20 second high-energy motion-graphics promo for any product, rendered from code to MP4 with synthesised music. Fast beat-locked scene changes, kinetic typography, a shape that carries across every transition, a HUD frame. Use when someone wants a hype reel, teaser, launch sting or showreel-style promo for a product, app or brand.

日本語の概要は準備中です。原文の説明を表示しています。

Barty-Bart/motion-graphics6362026年10月12日 更新

Turn a talking-head video and its transcript into motion-graphic B-roll timed to the speaker's words, in a continuous one-shape style (one element that morphs and never cuts, driven by a cursor, spring motion). Use when someone gives a video (and ideally a transcript) and asks for motion graphics, B-roll, animated cutaways or overlays.

日本語の概要は準備中です。原文の説明を表示しています。

Barty-Bart/motion-graphics6362026年10月12日 更新

Separate a person, product or hand from the background in a video, on the user's own computer with SAM 2. Scans the machine first to pick the right model size, then outputs the same video with the separated subject highlighted in green, plus frame-by-frame masks. Use when someone wants to separate, isolate, cut out or rotoscope something in a video.

日本語の概要は準備中です。原文の説明を表示しています。

Barty-Bart/motion-graphics6362026年10月12日 更新

Barty-Bart のスキルをすべて見る

このスキルの問題を報告する