Communitygithub.com

oliverhees/hermes-motion-pack

Step 5 of motion-pack. Produces the audio layer — voice-over via ElevenLabs (API key only from the ELEVENLABS_API_KEY environment variable), music bed, SFX on hits, sidechain ducking and two-pass loudness normalisation (voice -16 LUFS, music 12 LU under, mix -14 LUFS, true peak -1 dBTP). Use after mp-build, or when the user mentions "Stimme", "Voice-over", "Musik", "Sound", "LUFS", "zu leise", "zu laut", "ElevenLabs".

What is hermes-motion-pack?

hermes-motion-pack is a Claude Code agent skill that step 5 of motion-pack. Produces the audio layer — voice-over via ElevenLabs (API key only from the ELEVENLABS_API_KEY environment variable), music bed, SFX on hits, sidechain ducking and two-pass loudness normalisation (voice -16 LUFS, music 12 LU under, mix -14 LUFS, true peak -1 dBTP). Use after mp-build, or when the user mentions "Stimme", "Voice-over", "Musik", "Sound", "LUFS", "zu leise", "zu laut", "ElevenLabs".

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/oliverhees/hermes-motion-pack/tree/HEAD/skills/mp-audio

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

mp-audio — voice, music, SFX, loudness

Keys

  • ELEVENLABS_API_KEY is the ElevenLabs key you enter in Hermes (hermes setup). The script finds it in the environment, in Hermes' own env file, or in a .env in the studio root. Never write a key into a file, log, prompt or answer. Missing key → say so, offer "silent + music only".
  • Voice ID and model come from the user (BRIEF.md). No default voice ID is shipped; ask or let the user pick from their ElevenLabs library.

Steps

  1. Voice — python3 <skill-dir>/scripts/tts_elevenlabs.py --text-file voice.txt --voice-id <id> --model <model> --lang de --out audio/voice.mp3 --timestamps audio/voice.words.json. Keep the script tight: no long pauses, no stage directions in the text. Word timestamps feed mp-build word sync.
  2. Music — the user supplies a royalty-free file (or npx hyperframes tts/music tools if available). Pick tempo to the storyboard (reels 110–130 bpm, product 90–105, cinematic 60–80). Cut to length, edit points on bars.
  3. SFX — on every hero hit: whoosh (big move), tick (list items/UI), thud/sub (reveal), riser (before the turn). Generate with npx hyperframes tts-adjacent tools, ElevenLabs sound effects, or synthesise simple ones with ffmpeg (scripts/sfx.sh). Place by storyboard timestamps.
  4. Mix — bash <skill-dir>/scripts/mix.sh audio/voice.mp3 audio/music.mp3 audio/sfx.mp3 audio/mix.wav → ducking + two-pass loudnorm. Targets in references/loudness.md.
  5. Attach the mix to the composition (replace scratch audio). Re-render draft. Ask the user to listen: "Stimme vorn? Musik zu laut? Hits auf den Bewegungen?" You cannot hear; say so.
  6. Hand off to mp-critique.

Rules

  • Audio length == video length. Pad or trim; never let the renderer stretch.
  • Voice first frame ≥ 0.25 s in; last word ends ≥ 1.0 s before end (CTA hold).
  • Music fades out over the last 1.5 s; never hard cut.
  • Keep loudness report (audio/loudness.json) in the project for DELIVERY.md.

Files in this skill

  • references/loudness.md
  • scripts/loudness.sh
  • scripts/mix.sh
  • scripts/sfx.sh
  • scripts/tts_elevenlabs.py

Individual skills in this repo

This repo contains 10 individual skills — each has its own dedicated page.

oliverhees/hermes-motion-pack

Studio-grade motion graphics and cinematic highlight videos built as code with HyperFrames (HTML + GSAP → MP4) plus ffmpeg edits of real or AI footage. ALWAYS use for any video, spot, reel, teaser, trailer, intro, logo sting, kinetic typography, product film, social clip, highlight/recap/aftermovie/montage, "mach mir ein Video", "Motion Graphics", "Werbespot", "Reel", "Cinematic", "Animation" — even if the user does not say HyperFrames. Interviews the user first, then chains mp-brief → mp-style → mp-storyboard → (mp-footage | mp-genclip) → mp-build / mp-highlight → mp-audio → mp-critique → mp-ship with approval gates.

oliverhees/hermes-motion-pack

Step 1 of motion-pack. Runs a short, tap-friendly interview (max 2 rounds × 3 questions) and writes BRIEF.md for a motion graphics video — goal, audience, hook, format, length, must-show, sources, audio wishes. Use whenever a video is requested and no BRIEF.md exists yet, or the user says "Briefing", "interview me", "was brauchst du von mir".

oliverhees/hermes-motion-pack

Step 4 of motion-pack. Builds the HyperFrames project from STORYBOARD.md and STYLE.md — one HTML scene per beat with GSAP choreography, deterministic timing, real assets, then lint → draft render. Use after mp-storyboard, or when the user says "bau das", "build", "render", "Szene ändern", "HyperFrames", "GSAP", "animiere".

oliverhees/hermes-motion-pack

Step 6 of motion-pack. Makes the agent look at its own render — contact sheet, phone-size sheet, 12-frame strips around fast moments, loop-seam check, determinism check — then scores 8 criteria 1–10 as a harsh motion director, lists the 3 biggest problems with timestamps, and loops back to mp-build until every score is ≥ 8. Use after any render, or when the user says "sieht mid aus", "check das Video", "Kritik", "QC", "warum wirkt das billig".

oliverhees/hermes-motion-pack

Ingests the user's own footage (clips, gameplay, events, vlogs, screen recordings) for a highlight video — makes proxies, detects scene cuts, scores every second by motion, loudness and speech, transcribes, and writes SHOTLIST.json with the best candidate moments. Use when the user hands over video files/folders, says "aus meinem Material", "Footage", "beste Momente", "Highlights rausziehen", "schneid mir das zusammen", or before mp-highlight when real footage is the basis.

oliverhees/hermes-motion-pack

Generates AI video clips (Seedance, Veo, Kling via the kie.ai MCP server) and AI still frames (gpt-image, nano-banana) as the basis for cinematic highlight videos and trailers — shot-by-shot prompts from the storyboard, consistent look via reference frames and seeds, download, registration in SHOTLIST.json. Use when the user has no footage but wants cinematic shots, says "generier mir Clips", "KI-Video", "Seedance", "Veo", "B-Roll erzeugen", or when mp-highlight needs shots that do not exist.

oliverhees/hermes-motion-pack

Cuts cinematic highlight videos, trailers/teasers and event recaps from real footage (mp-footage), AI clips (mp-genclip) or pure code — beat-synced edit plan, speed ramps, cinematic grade (teal-amber, bleach, film grain, letterbox), kinetic titles, glitch and light-leak overlays, data overlays, all composited in HyperFrames on top of an ffmpeg base cut. Use for "Highlight-Video", "Cinematic", "Trailer", "Recap", "Aftermovie", "Best-of", "Montage", "auf den Beat schneiden", "episch".

oliverhees/hermes-motion-pack

Step 7 of motion-pack. Final render in every requested format (16:9, 9:16, 1:1, 4:5, GIF/WebM), writes DELIVERY.md (files, specs, loudness, sources, unverified claims, next steps), optionally packages the finished pipeline as a reusable skill so the next video is one sentence. Use when critique is green, or the user says "export", "final", "liefern", "alle Formate", "fertig machen".

oliverhees/hermes-motion-pack

Step 3 of motion-pack. Writes STORYBOARD.md — beats with timestamps, a state list per beat (what is on screen, where, what changes), voice lines, SFX hits and transitions — from BRIEF.md and STYLE.md. Use after mp-style, or when the user asks for "Storyboard", "Beats", "Ablauf", "Szenen", "timing".

oliverhees/hermes-motion-pack

Step 2 of motion-pack. Turns BRIEF.md into STYLE.md — a reference-driven design doc with palette, typography, motion language, sound character and a forbidden list. Offers 8 built-in style presets (clean-product, editorial-brutal, neo-glass, kinetic-type, hand-drawn, cinematic-dark, data-minimal, retro-print). Use when a video needs a look, the user says "Style", "Look", "Design", "wie soll es aussehen", or after mp-brief.

Related Skills