Release Video
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…
Generates narration, sound effects and cloned voices through the ElevenLabs API, with model and setting choices tuned to the content's style.
$ npx skills add digitalsamba/claude-code-video-toolkit --skill elevenlabs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install digitalsamba/claude-code-video-toolkit elevenlabs --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/digitalsamba/claude-code-video-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/elevenlabs .claude/skills/elevenlabs && 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 "elevenlabs" agent skill from https://github.com/digitalsamba/claude-code-video-toolkit/tree/main/.claude/skills/elevenlabs into .claude/skills/elevenlabs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elevenlabs", 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/digitalsamba/claude-code-video-toolkit/tree/main/.claude/skills/elevenlabsType 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 digitalsamba/claude-code-video-toolkit --skill elevenlabs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install digitalsamba/claude-code-video-toolkit elevenlabs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/digitalsamba/claude-code-video-toolkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/elevenlabs .agents/skills/elevenlabs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "elevenlabs" agent skill from https://github.com/digitalsamba/claude-code-video-toolkit/tree/main/.claude/skills/elevenlabs into .agents/skills/elevenlabs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elevenlabs", 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 digitalsamba/claude-code-video-toolkit --skill elevenlabs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install digitalsamba/claude-code-video-toolkit elevenlabs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/digitalsamba/claude-code-video-toolkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/elevenlabs .cursor/skills/elevenlabs && 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 "elevenlabs" agent skill from https://github.com/digitalsamba/claude-code-video-toolkit/tree/main/.claude/skills/elevenlabs into .cursor/skills/elevenlabs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elevenlabs", 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/digitalsamba/claude-code-video-toolkit.git --path .claude/skills/elevenlabs--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 digitalsamba/claude-code-video-toolkit --skill elevenlabs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install digitalsamba/claude-code-video-toolkit elevenlabs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/digitalsamba/claude-code-video-toolkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/elevenlabs .gemini/skills/elevenlabs && 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 "elevenlabs" agent skill from https://github.com/digitalsamba/claude-code-video-toolkit/tree/main/.claude/skills/elevenlabs into .gemini/skills/elevenlabs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elevenlabs", 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 digitalsamba/claude-code-video-toolkit elevenlabsInstalls 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 digitalsamba/claude-code-video-toolkit --skill elevenlabs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/digitalsamba/claude-code-video-toolkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/elevenlabs .github/skills/elevenlabs && 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 "elevenlabs" agent skill from https://github.com/digitalsamba/claude-code-video-toolkit/tree/main/.claude/skills/elevenlabs into .github/skills/elevenlabs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elevenlabs", 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 digitalsamba/claude-code-video-toolkit --skill elevenlabs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install digitalsamba/claude-code-video-toolkit elevenlabs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/digitalsamba/claude-code-video-toolkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/elevenlabs .opencode/skills/elevenlabs && 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 "elevenlabs" agent skill from https://github.com/digitalsamba/claude-code-video-toolkit/tree/main/.claude/skills/elevenlabs into .opencode/skills/elevenlabs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elevenlabs", 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.
elevenlabsGenerates narration, sound effects and cloned voices through the ElevenLabs API, with model and setting choices tuned to the content's style.
Picks between four text-to-speech models based on what the content actually needs: a multilingual model for the most consistent, production-ready output across 29 languages with no SSML support, two faster models that support break and phoneme tags for pause and pronunciation control, and the most expressive model, flagged as an unreliable alpha that needs extra prompt engineering and retakes. Voice settings such as stability, similarity and style are given as tuned ranges for natural, conversational and energetic delivery styles, rather than one fixed setting for everything.
Pauses between sections use SSML break tags on the models that support them, capped at three seconds each since longer or excessive breaks cause audible speed artifacts, while the multilingual and most-expressive models fall back to blank-line paragraph breaks or inserting silence afterward with ffmpeg. An ellipsis is explicitly flagged as an unreliable way to create a pause, since it can get vocalized as a word instead of staying silent.
Pronunciation is steered either by respelling a word phonetically with dashes and capitals, which works on any model, or with IPA phoneme tags on the two faster models, and the suggested iterative workflow is to generate, listen, adjust phonetic spelling or break tags, and regenerate rather than fighting the model's own tendencies through the prompt alone. Voice cloning uses the client's instant-clone method rather than an older, now-superseded clone call.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2c99460. 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.
Shell commands in SKILL.md call:
uvffmpegFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ELEVENLABS_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
ElevenLabs Voiceover Generator loads about 2.7k tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 429 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 noted patterns worth knowing about, such as sudo or a known installer.
Requires `ELEVENLABS_API_KEY` in `.env`.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 digitalsamba/claude-code-video-toolkit at commit 2c99460, republished under its MIT licence (© digitalsamba). 429 words, ~2,726 tokens.
.claude/skills/elevenlabs/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Requires ELEVENLABS_API_KEY in .env.
from elevenlabs.client import ElevenLabs
from elevenlabs import save, VoiceSettings
import os
client = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
audio = client.text_to_speech.convert(
text="Welcome to my video!",
voice_id="JBFqnCBsd6RMkjVDRZzb",
model_id="eleven_multilingual_v2",
voice_settings=VoiceSettings(
stability=0.5,
similarity_boost=0.75,
style=0.5,
speed=1.0
)
)
save(audio, "voiceover.mp3")| Model | Quality | SSML Support | Notes |
|---|---|---|---|
eleven_multilingual_v2 | Highest consistency | None | Stable, production-ready, 29 languages |
eleven_flash_v2_5 | Good | <break>, <phoneme> | Fast, supports pause/pronunciation tags |
eleven_turbo_v2_5 | Good | <break>, <phoneme> | Fastest latency |
eleven_v3 | Most expressive | None | Alpha — unreliable, needs prompt engineering |
Choose: multilingual_v2 for reliability, flash/turbo for SSML control, v3 for maximum expressiveness (expect retakes).
| Style | stability | similarity | style | speed |
|---|---|---|---|---|
| Natural/professional | 0.75-0.85 | 0.9 | 0.0-0.1 | 1.0 |
| Conversational | 0.5-0.6 | 0.85 | 0.3-0.4 | 0.9-1.0 |
| Energetic/YouTuber | 0.3-0.5 | 0.75 | 0.5-0.7 | 1.0-1.1 |
With flash/turbo models: Use SSML break tags inline:
...end of section. <break time="1.5s" /> Start of next...Max 3 seconds per break. Excessive breaks can cause speed artifacts.
With multilingual_v2 / v3: No SSML support. Options:
WARNING: ... (ellipsis) is NOT a reliable pause — it can be vocalized as a word/sound. Do not use ellipsis as a pause mechanism.
Phonetic spelling (any model): Write words as you want them pronounced:
Janus → Jan-usnginx → engine-xSSML phoneme tags (flash/turbo only):
<phoneme alphabet="ipa" ph="ˈdʒeɪnəs">Janus</phoneme>with open("sample.mp3", "rb") as f:
voice = client.voices.ivc.create(
name="My Voice",
files=[f],
remove_background_noise=True
)
print(f"Voice ID: {voice.voice_id}")client.voices.ivc.create() (not client.voices.clone())"rb"), not pathsffmpeg -i input.m4a -codec:a libmp3lame -qscale:a 2 output.mp3Professional Voice Clone: Requires Creator plan+, 30+ min audio. See reference.md.
Max 22 seconds per generation.
result = client.text_to_sound_effects.convert(
text="Thunder rumbling followed by heavy rain",
duration_seconds=10,
prompt_influence=0.3
)
with open("thunder.mp3", "wb") as f:
for chunk in result:
f.write(chunk)Prompt tips: Be specific — "Heavy footsteps on wooden floorboards, slow and deliberate, with creaking"
10 seconds to 5 minutes. Use client.music.compose() (not .generate()).
result = client.music.compose(
prompt="Upbeat indie rock, catchy guitar riff, energetic drums, travel vlog",
music_length_ms=60000,
force_instrumental=True
)
with open("music.mp3", "wb") as f:
for chunk in result:
f.write(chunk)Prompt structure: Genre, mood, instruments, tempo, use case. Add "no vocals" or use force_instrumental=True for background music.
VOICEOVER-SCRIPT.md → voiceover.py → public/audio/ → Remotion composition
↓ ↓ ↓ ↓
Scene narration Generate MP3 Audio files <Audio> component
with durations per scene with timing synced to scenesUse the toolkit's voiceover tool to generate audio for each scene:
# Generate voiceover files for each scene
uv run tools/voiceover.py --scene-dir public/audio/scenes --json
# Output:
# public/audio/scenes/
# ├── scene-01-title.mp3
# ├── scene-02-problem.mp3
# ├── scene-03-solution.mp3
# └── manifest.json (durations for each file)The manifest.json contains timing info:
{
"scenes": [
{ "file": "scene-01-title.mp3", "duration": 4.2 },
{ "file": "scene-02-problem.mp3", "duration": 12.8 },
{ "file": "scene-03-solution.mp3", "duration": 15.3 }
],
"totalDuration": 32.3
}// src/Composition.tsx
import { Audio, staticFile, Series, useVideoConfig } from 'remotion';
// Import scene components
import { TitleSlide } from './scenes/TitleSlide';
import { ProblemSlide } from './scenes/ProblemSlide';
import { SolutionSlide } from './scenes/SolutionSlide';
// Scene durations (from manifest.json, converted to frames at 30fps)
const SCENE_DURATIONS = {
title: Math.ceil(4.2 * 30), // 126 frames
problem: Math.ceil(12.8 * 30), // 384 frames
solution: Math.ceil(15.3 * 30), // 459 frames
};
export const MainComposition: React.FC = () => {
return (
<>
{/* Scene sequence */}
<Series>
<Series.Sequence durationInFrames={SCENE_DURATIONS.title}>
<TitleSlide />
</Series.Sequence>
<Series.Sequence durationInFrames={SCENE_DURATIONS.problem}>
<ProblemSlide />
</Series.Sequence>
<Series.Sequence durationInFrames={SCENE_DURATIONS.solution}>
<SolutionSlide />
</Series.Sequence>
</Series>
{/* Audio track - plays continuously across all scenes */}
<Audio src={staticFile('audio/voiceover.mp3')} volume={1} />
{/* Optional: Background music at lower volume */}
<Audio src={staticFile('audio/music.mp3')} volume={0.15} />
</>
);
};For more control, add audio to each scene individually:
// src/scenes/ProblemSlide.tsx
import { Audio, staticFile, useCurrentFrame } from 'remotion';
export const ProblemSlide: React.FC = () => {
const frame = useCurrentFrame();
return (
<div style={{ /* slide styles */ }}>
<h1>The Problem</h1>
{/* Scene content */}
{/* Audio starts when this scene starts (frame 0 of this sequence) */}
<Audio src={staticFile('audio/scenes/scene-02-problem.mp3')} />
</div>
);
};Calculate scene duration from audio, not the other way around:
// src/config/timing.ts
import manifest from '../../public/audio/scenes/manifest.json';
const FPS = 30;
// Convert audio durations to frame counts
export const sceneDurations = manifest.scenes.reduce((acc, scene) => {
const name = scene.file.replace(/^scene-\d+-/, '').replace('.mp3', '');
acc[name] = Math.ceil(scene.duration * FPS);
return acc;
}, {} as Record<string, number>);
// Usage in composition:
// <Series.Sequence durationInFrames={sceneDurations.title}>import { Audio, Sequence, interpolate, useCurrentFrame } from 'remotion';
// Fade in audio
export const FadeInAudio: React.FC<{ src: string; fadeFrames?: number }> = ({
src,
fadeFrames = 30
}) => {
const frame = useCurrentFrame();
const volume = interpolate(frame, [0, fadeFrames], [0, 1], {
extrapolateRight: 'clamp',
});
return <Audio src={src} volume={volume} />;
};
// Delayed audio start
export const DelayedAudio: React.FC<{ src: string; delayFrames: number }> = ({
src,
delayFrames
}) => (
<Sequence from={delayFrames}>
<Audio src={src} />
</Sequence>
);
// Usage:
// <FadeInAudio src={staticFile('audio/music.mp3')} fadeFrames={60} />
// <DelayedAudio src={staticFile('audio/sfx/whoosh.mp3')} delayFrames={45} />When a scene has both voiceover and demo video:
import { Audio, OffthreadVideo, staticFile, useVideoConfig } from 'remotion';
export const DemoScene: React.FC = () => {
const { durationInFrames, fps } = useVideoConfig();
// Calculate playback rate to fit demo into voiceover duration
const demoDuration = 45; // seconds (original demo length)
const sceneDuration = durationInFrames / fps; // seconds (from voiceover)
const playbackRate = demoDuration / sceneDuration;
return (
<>
<OffthreadVideo
src={staticFile('demos/feature-demo.mp4')}
playbackRate={playbackRate}
/>
<Audio src={staticFile('audio/scenes/scene-04-demo.mp3')} />
</>
);
};import { Audio, staticFile, delayRender, continueRender } from 'remotion';
import { useEffect, useState } from 'react';
export const SafeAudio: React.FC<{ src: string }> = ({ src }) => {
const [handle] = useState(() => delayRender());
const [audioReady, setAudioReady] = useState(false);
useEffect(() => {
const audio = new window.Audio(src);
audio.oncanplaythrough = () => {
setAudioReady(true);
continueRender(handle);
};
audio.onerror = () => {
console.error(`Failed to load audio: ${src}`);
continueRender(handle); // Continue without audio rather than hang
};
}, [src, handle]);
if (!audioReady) return null;
return <Audio src={src} />;
};The /generate-voiceover command handles the full workflow:
/generate-voiceover
1. Reads VOICEOVER-SCRIPT.md
2. Extracts narration for each scene
3. Generates audio via ElevenLabs API
4. Saves to public/audio/scenes/
5. Creates manifest.json with durations
6. Updates project.json with timing infoJBFqnCBsd6RMkjVDRZzb (warm narrator)21m00Tcm4TlvDq8ikWAM (clear female)pNInz6obpgDQGcFmaJgB (professional male)List all: client.voices.get_all()
For full API docs, see reference.md.
© digitalsamba, MIT. 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 1 other file in .claude/skills/elevenlabs of digitalsamba/claude-code-video-toolkit.
Open the folder on GitHubat commit 2c99460
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in digitalsamba/claude-code-video-toolkit, which our catalogue first saw on October 7, 2026.
ElevenLabs Voiceover Generator 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 |
|---|---|---|---|---|---|---|
| ElevenLabs Voiceover Generator this skilldigitalsamba/claude-code-video-toolkit | 2.2k | 1 repos | ~2.7k | Automated safety check: Notes | MIT | |
| Release Videohuytieu/COG-second-brain | 1.3k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Musictadaspetra/loop | 296 | 2 repos | ~827 | Automated safety check: Pass | 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 | |
| Qiaomu Cutjoeseesun/qiaomu-cut-skill | 372 | — | ~6.8k | Automated safety check: Notes | MIT |
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…
tadaspetra/loop
Generate music using ElevenLabs Music API. An agent skill from tadaspetra/loop.
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…
joeseesun/qiaomu-cut-skill
把一句话需求转成可复现、可验收视频工程的乔木智能剪辑导演。Use when the user asks to create, plan, edit, remix, explain, narrate, subtitle, animate, composite, or render a video—including one-line requests such as “制作一个科普视频:介绍…
speechlab0210/video-production-skill
AI educational video production pipeline. An agent skill from speechlab0210/video-production-skill.
digitalsamba/claude-code-video-toolkit
Command recipes for converting, resizing, compressing, trimming and extracting audio from video with FFmpeg, including settings for Remotion projects.
digitalsamba/claude-code-video-toolkit
Generates roughly five-second video clips from a text prompt or a still image with the LTX-2.3 22B model, run through a Modal endpoint by `tools/ltx2.py`.
digitalsamba/claude-code-video-toolkit
Records browser interactions as video with Playwright, covering viewport sizing, cursor highlighting, and converting output for Remotion.
digitalsamba/claude-code-video-toolkit
Generates background music, vocal tracks, covers and stems with ACE-Step 1.5 through a bundled music_gen.py tool, using cloud or self-hosted providers.
digitalsamba/claude-code-video-toolkit
Turns a casual image request into the structured JSON caption Ideogram 4 needs for legible on-image text, exact brand colors and controlled layout.
digitalsamba/claude-code-video-toolkit
Overlays deterministic, accurate text on AI-generated video clips and builds short single-file Python video projects without a Remotion toolchain.
Works with
Categories
Generates narration, sound effects and cloned voices through the ElevenLabs API, with model and setting choices tuned to the content's style. Picks between four text-to-speech models based on what the content actually needs: a multilingual model for the most consistent, production-ready output across 29 languages with no SSML support, two faster models that support break and phoneme tags for pause and pronunciation control, and the most expressive model, flagged as an unreliable alpha that needs extra prompt engineering and retakes. Voice settings such as stability, similarity and style are given as tuned ranges for natural, conversational and energetic delivery styles, rather than one fixed setting for everything.
ElevenLabs Voiceover Generator fits situations like: generating narration or voiceover audio for a video or podcast; choosing the right ElevenLabs model for a given style and language need; cloning a voice from a sample recording for narration; fixing mispronounced words or imprecise pauses in generated speech.
Run `npx skills add digitalsamba/claude-code-video-toolkit --skill elevenlabs -a claude-code`. Or copy the skill folder (.claude/skills/elevenlabs in digitalsamba/claude-code-video-toolkit) into .claude/skills/elevenlabs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add digitalsamba/claude-code-video-toolkit --skill elevenlabs -a codex`. Or copy the skill folder (.claude/skills/elevenlabs in digitalsamba/claude-code-video-toolkit) into .agents/skills/elevenlabs 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 digitalsamba/claude-code-video-toolkit --skill elevenlabs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/elevenlabs, .gemini/skills/elevenlabs, .github/skills/elevenlabs and .opencode/skills/elevenlabs in your project.
Going by SKILL.md and its folder, ElevenLabs Voiceover Generator needs the command-line tools its instructions call (uv and ffmpeg) and credentials named ELEVENLABS_API_KEY. Our summary lists: An ELEVENLABS_API_KEY in .env.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
ElevenLabs Voiceover Generator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k 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 ElevenLabs Voiceover Generator: Release Video (huytieu/COG-second-brain, 1.3k stars), Music (tadaspetra/loop, 296 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.
digitalsamba (a GitHub organization) maintains it in digitalsamba/claude-code-video-toolkit, which has 2,185 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 5, 2026.
Source: digitalsamba/claude-code-video-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.