elevenlabs
Skill1 starsChanged 3 months agoMITView on GitHub
Generate speech with ElevenLabs, prepare scripts for it, or add narration to a video. Use for voiceovers, voice selection, and ElevenLabs access or usage checks.
- Reads credentials
12 other projects use a version of this.
Adopted by
Most recently taken up by
- twglhk/gamedev-agent-skillstheir own version, first seen Nov 8, 2026
- OpenMontageInc/OpenMontagetheir own version, first seen Nov 8, 2026
- digitalsamba/claude-code-video-toolkittheir own version, first seen Nov 8, 2026
- calesthio/OpenMontagetheir own version, first seen Nov 8, 2026
- JustinPerea/nebula-nodestheir own version, first seen Nov 5, 2026
- jkitchin/knowhowtheir own version, first seen Nov 1, 2026
Used with
Projects with it also use ltx2, bfl-api and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
LinHao-citySkillltx2
AI video generation with LTX-2.3 22B — text-to-video, image-to-video clips for video production. Use when generating video clips, animating images, creating b-roll, animated backgrounds, or motion content. Triggers include video generation, animate image, b-roll, motion, video clip, text-to-video, image-to-video.
Also in 4 projects that use this
LinHao-citySkillbfl-api
BFL FLUX API integration guide covering endpoints, async polling patterns, rate limiting, error handling, webhooks, and regional endpoints with Python and TypeScript code examples.
Also in 3 projects that use this
dAAAbSkillheygen
Also in 3 projects that use this
MoizIbnYousafSkillvisual-style
Build a persistent visual brand identity for image generation. Defines how the brand looks visually — aesthetic, lighting, composition, mood — and writes it to brand/creative-kit.md so /image-gen and other creative skills produce consistent on-brand visuals. Three modes: Extract (from website/URL), Build (interview), Reference (mood board/examples). Use when starting any project that needs images, when the user says "visual style", "brand aesthetic", "image style", "visual identity", "how should our images look", "build visual brand", "define our look", or when /image-gen outputs feel generic because no visual style exists yet.
Also in 3 projects that use this
- +8 more from LinHao-city
Other versions12 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 12
- calesthio/OpenMontage★ 78ksame name
- OpenMontageInc/OpenMontage★ 78ksame name
- digitalsamba/claude-code-video-toolkit★ 2.5ksame name
- sanjay3290/ai-skills★ 452same name
- jkitchin/knowhow★ 42same name
- JustinPerea/nebula-nodes★ 23same name
- LinHao-city/StoryMind★ 10same name
- ai-ecoverse/skills★ 1same name
- leonardoaraujosantos/my_ai_skills★ 1same name
- Gopyr/gopyr-skills-hub★ 0same name
2 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository29 other files it gives its agents.
- AGENTS.mdAGENTS.md
- docxSkill
- pdfSkill
- app-icon-studioSkill
- audit-promptSkill
- bootstrap-goal-projectSkill
- boy-scoutSkill
- brand-namingSkill
- create-engineering-skillSkill
- create-prSkill
- firebase-adminSkill
- firebase-hosting-basicsSkill
- gmailSkill
- linearSkill
- nano-banana-app-iconSkill
- new-projectSkill
- plainSkill
- product-researchSkill
- pr-qa-browserSkill
- publish-researchSkill
- readme-best-practicesSkill
- researchSkill
- ripple-checkSkill
- roadmap-pageSkill
- scopeSkill
- searchexaSkill
- slackSkill
- triage-pr-commentsSkill
- write-loopSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 1 is distinctive, and 3 are very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Read ~/.config/elevenlabs/defaults.json for the user's voice, model, language and audio format.
- Distinctive: line 36
Write for the ear: short sentences and paragraph breaks give natural rhythm.
- Very specific: line 37
Write anything with more than one plausible reading in its intended spoken form: numbers, dates, times, currencies, units, symbols, URLs, …
- Very specific: line 38
Create pauses with ellipses, dashes and paragraph breaks.
“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ElevenLabs
Produce narration the user can accept on first listen, from their script or source material, using the official elevenlabs CLI. For video requests, deliver a new narrated video with the original preserved. Synthesis is hosted: submitted text leaves the machine.
Access and defaults
Read ~/.config/elevenlabs/defaults.json for the user's voice, model, language and audio format. Explicit request choices override these defaults; don't substitute a different voice or model to bypass an access failure. Missing setup: read ~/.agents/skills/elevenlabs/references/setup.md.
Credentials live in ~/.config/elevenlabs/credentials.env. Load them into the CLI process without reading or printing the file. Shell state doesn't carry between tool calls, so define EL in each command that uses it:
EL=(env -u ELEVENLABS_API_KEY uv run --no-project --env-file "$HOME/.config/elevenlabs/credentials.env" -- elevenlabs)
"${EL[@]}" user subscription get --query '{tier:tier,status:status,used:character_count,limit:character_limit}'
"${EL[@]}" voices get --voice-id "$VOICE_ID" --query '{id:voice_id,name:name,category:category,fine_tuning:fine_tuning.state,sharing:sharing.status}'Set VOICE_ID from the nonsecret defaults. Account/voice metadata checks are useful when access is unknown or has changed; they do not prove synthesis permission, model compatibility or commercial rights. Free accounts cannot use community Voice Library voices through the API. Report that restriction rather than upgrading the account or silently choosing another voice.
The key must reach only the ElevenLabs API over verified TLS: keep it out of chat, command arguments, logs, repository files and CLI debug output, and never combine it with --base-url or a dry run.
Authorization and cost
A request to generate narration authorizes the necessary synthesis within the stated scope; a setup, browse, estimate or planning request does not. Use one take by default. Ask when a missing script decision, batch size, existing-audio treatment or paid expansion would materially change the result. Don't buy credits, change subscriptions or clone voices without a request for that action.
Count submitted characters, including planned retakes, and check available usage before a substantial batch. Credit balances are not universally character allowances: model and voice rates vary. Use current account pricing for monetary estimates, not hardcoded rates. Free-generated audio is noncommercial; upgrading later does not retroactively license it. When the output is for commercial use, establish paid-plan eligibility before generation.
Writing for speech
On V4 the submitted text is the performance direction. There are no Style or Speed controls and no SSML, so wording, punctuation and audio tags set pace, emphasis and emotion. Turn the script into a speech-ready version before generating:
- Write for the ear: short sentences and paragraph breaks give natural rhythm. About 150–180 words per minute is a planning estimate for fitting a duration; the generated audio is the measurement.
- Write anything with more than one plausible reading in its intended spoken form: numbers, dates, times, currencies, units, symbols, URLs, abbreviations and version strings (
v2.1→ "version two point one"). - Create pauses with ellipses, dashes and paragraph breaks; V4 ignores
<break>tags. Capitalize a word only for deliberate stress. - Direct delivery with bracketed audio tags placed before the segment they shape, such as
[warm, measured]or[short pause]. Describe the voice quality explicitly, because V4 can render an ambiguous tag as a sound effect. Keep narration tags vocal, match them to the voice's character, and add them where delivery should change rather than on every line. Emotion written as prose ("she said sadly") is spoken aloud; express it as a tag instead. - For a name or term the model may mispronounce, write its IPA between slashes inside double quotes, such as
"/ˌkuːbərˈnɛtiːz/", with stress marks, or respell it phonetically.
The user's script is authoritative: add direction, spoken forms and pronunciation hints without changing its words or meaning, and mention substitutions a listener would notice. When writing from source material, ground concrete claims in it. For tag vocabulary, normalization patterns, pronunciation dictionaries and a worked example, read ~/.agents/skills/elevenlabs/references/v4-delivery.md.
Generation
Use the selected voice and explicit model. V4 accepts two voice settings: Stability (lower is more expressive and varied, higher more consistent) and Similarity (closer adherence to the reference voice, at some cost to naturalness). Keep the voice's stored settings unless a take calls for a change. Discover less-common parameters with the installed command's --help or --schema rather than guessing.
Write request.json with text, model_id, language_code and any changed voice_settings using a JSON serializer, which escapes the quotes, tags and IPA in the script and keeps narration text out of shell interpolation. The CLI rejects mixing --json with body-field flags; keep voice and output format as flags:
"${EL[@]}" text-to-speech convert \
--voice-id "$VOICE_ID" --output-format "$OUTPUT_FORMAT" \
--json - --no-retry --output narration.mp3 < request.jsonV4 accepts up to 10,000 characters per request. Scene-sized clips make revisions cheaper, but a short continuous narration need not be fragmented. When splitting, break at paragraph boundaries and pass the neighbouring text as previous_text/next_text so delivery flows across clips.
Choose an unused output path before submitting. Preserve accepted audio and a small nonsecret record of the script, voice/model, settings, generation date and any returned request ID. Seeds don't guarantee identical regeneration. On an ambiguous timeout, check generation history if permitted before repeating a billed request. Stop on authorization or quota errors and report the actionable blocker.
For captions or precise synchronization, text-to-speech convert_with_timestamps accepts the same request parameters and returns JSON with audio_base64, alignment and normalized_alignment. Save the JSON to a file, decode its audio locally and group timing into readable caption cues whose text reads as the written script, without audio tags or spelled-out forms. Don't dump base64 into the conversation. Use forced alignment for an already-edited recording only when timing is requested.
Video and completion
Use ffprobe to inspect streams and durations. Fit narration to the requested scene timing; don't silently crop speech or shorten the video. Preserve or duck existing ambience/music when that intent is clear; ask about competing dialogue or replacement when it isn't. Use FFmpeg to produce a separate output, copying the video stream when compatible and encoding the mixed audio as needed. A generic -shortest can truncate either track: choose padding, placement and duration deliberately.
Done means the requested files exist, decode successfully, have the intended streams and duration, and preserve the source. Check the final result with ffprobe and an FFmpeg decode; assess audible pronunciation/mix when playback or an audio-capable tool is available. Don't claim listening verification from metadata alone. Report output paths, any spoken-form or pronunciation choices the user should listen for, and any material validation gap, then stop; further takes are not automatic.
For capabilities beyond narration, consult the official API index and the matching CLI command help. Keep the work scoped to the request rather than provisioning agents or a media pipeline.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

