Music
tadaspetra/loop
Generate music using ElevenLabs Music API. An agent skill from tadaspetra/loop.
Narration, sound effects and music beds in the voice the studio set up (ElevenLabs, Qwen3-TTS on this machine's GPU, or the owner's own voice from the recording booth): lines from the approved…
$ npx skills add GTKottman/mortiflix-oss --skill voiceover -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install GTKottman/mortiflix-oss voiceover --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .claude/skills && cp -r skills-src/pipelines/_shared/skills/voiceover .claude/skills/voiceover && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "voiceover" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/voiceover into .claude/skills/voiceover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voiceover", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/voiceoverType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add GTKottman/mortiflix-oss --skill voiceover -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install GTKottman/mortiflix-oss voiceover --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .agents/skills && cp -r skills-src/pipelines/_shared/skills/voiceover .agents/skills/voiceover && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "voiceover" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/voiceover into .agents/skills/voiceover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voiceover", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GTKottman/mortiflix-oss --skill voiceover -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install GTKottman/mortiflix-oss voiceover --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/pipelines/_shared/skills/voiceover .cursor/skills/voiceover && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "voiceover" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/voiceover into .cursor/skills/voiceover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voiceover", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/GTKottman/mortiflix-oss.git --path pipelines/_shared/skills/voiceover--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add GTKottman/mortiflix-oss --skill voiceover -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install GTKottman/mortiflix-oss voiceover --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/pipelines/_shared/skills/voiceover .gemini/skills/voiceover && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "voiceover" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/voiceover into .gemini/skills/voiceover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voiceover", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install GTKottman/mortiflix-oss voiceoverInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add GTKottman/mortiflix-oss --skill voiceover -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .github/skills && cp -r skills-src/pipelines/_shared/skills/voiceover .github/skills/voiceover && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "voiceover" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/voiceover into .github/skills/voiceover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voiceover", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GTKottman/mortiflix-oss --skill voiceover -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install GTKottman/mortiflix-oss voiceover --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/pipelines/_shared/skills/voiceover .opencode/skills/voiceover && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "voiceover" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/voiceover into .opencode/skills/voiceover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voiceover", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
voiceoverNarration, sound effects and music beds in the voice the studio set up (ElevenLabs, Qwen3-TTS on this machine's GPU, or the owner's own voice from the recording booth): lines from the approved…
Voiceover is an agent skill from GTKottman/mortiflix-oss. Narration, sound effects and music beds in the voice the studio set up (ElevenLabs, Qwen3-TTS on this machine's GPU, or the owner's own voice from the recording booth): lines from the approved script, checked takes, one voice track and a word-timing map the animation follows. Use for any narrated animatic or final, a re-take, or sound design.
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files.
It sits in Media & Creative, covering Text to speech and voice and Music and audio generation. It works with ElevenLabs and Qwen. The repository describes itself as: A motion design studio on your own machine: Claude makes the video step by step, you approve every stage. Bring your own Claude Code or API key. The licence is AGPL-3.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit aea9533. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Voiceover loads about 1.8k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 913 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from GTKottman/mortiflix-oss at commit aea9533, republished under its AGPL-3.0 licence (© GTKottman). 913 words, ~1,835 tokens.
.claude/skills/voiceover/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.The approved script is spoken word for word, and the narration is the clock the animation is timed to.
VO=.claude/skills/voiceover/vo.mjs
node $VO check # which engine, voice and model; credits; the rules for this engine
node $VO speak voice/lines.json # every line, checked, retaken if words go missing
node $VO speak voice/lines.json --only b03-1 # just the lines you fixed
node $VO build voice/lines.json # voice/voice.wav + voice/timing.jsonnode $VO check says what the owner set up in Settings (you don't choose the engine or the voice):
elevenlabs: the voice, model and settings are chosen; the key is in your environment (never print it).
check shows the plan and credits. On the free plan the audio is non-commercial and must credit ElevenLabs:
say so in your submission note.qwen: Qwen3-TTS on this machine's GPU through ComfyUI (free, local). If check says ComfyUI or the suite
isn't ready, that's a mfx needs-you.none: no narration. If the brief asked for one, ask at the next gate whether to go on-screen-text-only
(the default) or wait while the owner sets a voice up. Never use a robotic system voice.own: the owner narrates in their own voice. Write voice/lines.json exactly as below (short lines; put
delivery notes as a [tag] at the start, which the owner sees as direction; skip IPA and v4 tricks, a person reads
script). node $VO speak voice/lines.json then lists the lines still to record and prints the mfx needs-you
text that sends the owner to the recording booth (the web studio, mortiflix record, or importing files). Send it
and stop. When they resume, speak passes and build makes the track, timed per line. If you change a line after
it was recorded, speak asks for that line again.input/ (one long file, any engine): use it instead (cut it into lines as clips, then build).Don't change the voice or the model yourself: they're the owner's choice. Suggest a change in the handoff if one would clearly be better.
voice/lines.jsonOne entry per sentence or breath group (under ~600 characters; short lines are cheap to retake):
[
{ "id": "b01-1", "text": "[warm, unhurried] Every city has a heartbeat.", "script": "Every city has a heartbeat.", "gap_after": 0.5 },
{ "id": "b01-2", "text": "Ours runs on \"/ˈbaɪsɪkəlz/\".", "script": "Ours runs on bicycles." }
]text is what the voice reads; script is the same words spelled normally (needed whenever text has tags or IPA:
the check compares against it). gap_after is the pause after the line (default 0.4 s; longer between beats).b01-1), letters, digits and dashes.eleven_v4, the default)[warm], [measured, curious], [whispers], [sighs],
[excited], [quick, light pace]. One at the start of a line; another only where the mood really turns.[rain] or [applause] can come out as a
noise. Write [soft, hushed voice], not [quiet room]. The check flags any non-speech sound in a take.<break> and <phoneme> (they can be read aloud)."/ˈkoʊmæl/", with the normal spelling in script.Other ElevenLabs models (if the owner chose one): eleven_multilingual_v2 has style and speed settings and takes
<break time="1.0s" /> pauses (up to 3 s); eleven_flash_v2 takes <phoneme> tags. Don't use tags v4-style on them.
script is read when present), so spell hard names the way they sound in script.speak makes each line, listens to it with speech to text (ElevenLabs Scribe v2, or Qwen3-ASR locally), and keeps
it when at least 92% of the words match the script with no 3-word run missing or added, and no stray sounds. A line
that fails is retaken with a new seed (up to --max-takes, default 3); the best take is kept either way. ElevenLabs
lines run several at once (the plan's limit minus one); local lines run speak-all, then listen-all, because the two
models take turns on the GPU.
voice/clips/<id>.(mp3|wav) + <id>.json (engine, take, seed, the transcript, word timings),
every take in voice/takes/, and voice/speak-report.json.speak --only it.build joins the clips with their gaps into voice/voice.wav (48 kHz mono) and writes voice/timing.json: every
line's start and end, and every word's start and end when the check measured them ("timing": "words"), otherwise
the line only. Turn the times you animate to into frames (Math.round(seconds * fps)) in video/src/timing.ts,
and copy voice.wav into video/public/. Never cut inside a word: cut in the silences.
node .claude/skills/voiceover/sound.mjs sfx "soft glassy whoosh, left to right" --seconds 1.2 --out sfx/whoosh.mp3
node .claude/skills/voiceover/sound.mjs sfx "low city ambience, distant traffic" --seconds 20 --loop --out sfx/city.mp3
node .claude/skills/voiceover/sound.mjs music "warm minimal synth bed, 90 bpm, hopeful" --seconds 45 --out music/bed.mp3Sound effects: 0.5–30 s, --loop for seamless ambience, --influence 0–1 (how literally it follows the prompt).
Music: instrumental unless --vocals, 3 s to 10 min. Note every prompt in assets/SOURCES.md.
Music about 18 dB under the voice while it speaks; it can come up in the gaps. The final mix: -14 LUFS, true peak ≤ -1 dBTP (final-pass skill).
Write voice/VOICE.md: engine, voice, model, settings, tags used, pronunciation fixes, rejected takes and why.
© GTKottman, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in pipelines/_shared/skills/voiceover of GTKottman/mortiflix-oss.
Open the folder on GitHubat commit aea9533
Voiceover next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Voiceover this skillGTKottman/mortiflix-oss | 396 | — | ~1.8k | Automated safety check: Pass | AGPL-3.0 | |
| Musictadaspetra/loop | 296 | 3 repos | ~827 | Automated safety check: Pass | MIT | |
| ElevenLabs Voiceover Generatordigitalsamba/claude-code-video-toolkit | 2.2k | 1 repos | ~2.7k | Automated safety check: Notes | MIT | |
| Sound Effectstadaspetra/loop | 296 | 2 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Hyperframes Mediachmonitor/chmonitor | 299 | 1 repos | ~2.8k | Automated safety check: Notes | GPL-3.0 | |
| Z Qwen Audio Studiotjxj/z-skills | 546 | — | ~716 | Automated safety check: Pass | None |
tadaspetra/loop
Generate music using ElevenLabs Music API. An agent skill from tadaspetra/loop.
digitalsamba/claude-code-video-toolkit
Generates narration, sound effects and cloned voices through the ElevenLabs API, with model and setting choices tuned to the content's style.
tadaspetra/loop
Generate sound effects from text descriptions using ElevenLabs.
chmonitor/chmonitor
Audio and media assets for HyperFrames compositions, produced by one shared audio engine (scripts/audio.mjs) — multi-provider TTS (HeyGen / ElevenLabs / Kokoro local), background music + sound…
tjxj/z-skills
A skill your agent uses when creating complete generated audio with qwen-audio-3.1-tts-next, including podcasts, radio drama, advertisements, multiple speakers, reference voices, ambience, sound…
huytieu/COG-second-brain
Turn a product release (the list of shipped items plus real screen recordings) into a motion recap video and one explained demo per feature, with sound effects tied to on-screen motion and a…
GTKottman/mortiflix-oss
3D work in the studio's own Blender with its toolkits: MoBlend (MoGraph cloners, effectors, fields, MoText, fracture), Nova FX (particles, fire, sparks, fireworks), Camera (framing, shot presets…
GTKottman/mortiflix-oss
Scoring a video with original music written in Strudel, after the animatic is approved - a dramatic reading, a spotting map from the locked timing, a blueprint (motif, chart, roles, story sections…
GTKottman/mortiflix-oss
Build, preview and render the video in Remotion (React): project setup from the template, stills for style frames, animatic and final renders through the studio's render queue.
GTKottman/mortiflix-oss
Designing every cut of a video before the animatic - for each change from one style frame to the next, the object or idea that carries it, a transition chosen from the owner's remotion-transitions…
GTKottman/mortiflix-oss
Finding and downloading stock assets (footage, images, illustrations, 3D models, sound effects, fonts) from the asset sites the owner uses, in the owner's own Chrome with browser-harness.
GTKottman/mortiflix-oss
Check a rendered video before anyone else sees it: format, black or frozen frames, loudness, true peak, and a frame sheet to look at.
Works with
Categories
Narration, sound effects and music beds in the voice the studio set up (ElevenLabs, Qwen3-TTS on this machine's GPU, or the owner's own voice from the recording booth): lines from the approved…. Voiceover is an agent skill from GTKottman/mortiflix-oss. Narration, sound effects and music beds in the voice the studio set up (ElevenLabs, Qwen3-TTS on this machine's GPU, or the owner's own voice from the recording booth): lines from the approved script, checked takes, one voice track and a word-timing map the animation follows.
Voiceover fits situations like: any narrated animatic; tasks that involve Text to speech and voice; tasks that involve Music and audio generation.
Run `npx skills add GTKottman/mortiflix-oss --skill voiceover -a claude-code`. Or copy the skill folder (pipelines/_shared/skills/voiceover in GTKottman/mortiflix-oss) into .claude/skills/voiceover in your project. Claude Code loads it when a task matches its description.
Run `npx skills add GTKottman/mortiflix-oss --skill voiceover -a codex`. Or copy the skill folder (pipelines/_shared/skills/voiceover in GTKottman/mortiflix-oss) into .agents/skills/voiceover in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GTKottman/mortiflix-oss --skill voiceover -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/voiceover, .gemini/skills/voiceover, .github/skills/voiceover and .opencode/skills/voiceover in your project.
Going by SKILL.md and its folder, Voiceover needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node). Our summary lists: Node.js.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Voiceover is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Voiceover: Music (tadaspetra/loop, 296 stars), ElevenLabs Voiceover Generator (digitalsamba/claude-code-video-toolkit, 2.2k stars), Sound Effects (tadaspetra/loop, 296 stars) and Hyperframes Media (chmonitor/chmonitor, 299 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
GTKottman (a GitHub user) maintains it in GTKottman/mortiflix-oss, which has 396 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 7, 2026.
Source: GTKottman/mortiflix-oss on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.