elevenlabs-tts · mengto — Claude Code skill: what it does, how to install
Creates ElevenLabs speech audio from inline text or script files through local voice profiles. Use it for narration, voiceovers, and other generated speech tracks.
npx skills add MengTo/Skills --skill elevenlabs-tts -a claude-codeWhat elevenlabs-tts does
This skill sends text to ElevenLabs Text-to-Speech from an inline argument, a script file, or standard input. It selects a local profile, applies its voice, model, output format, and voice settings, then writes the audio to the requested path. One-off values can override the profile through script options.
Profiles live in a separate JSON file. The bundled scripts/generate_voice.py helper can use a direct voice_id, read an ID from an environment variable, or search by voice_name. It also supports --dry-run for inspecting the resolved request and --list-voices for matching voices.
You need ELEVENLABS_API_KEY in the process environment or the nearest .env, plus a local profile file outside the skill. Check that setup first, because the ElevenLabs request cannot run without the API key.
What it helps with
- turn a script into speech audio
- generate a voiceover from inline text
- select a voice from a local profile
- inspect a request without calling TTS
- write generated audio to a chosen file
Example prompts for the agent
- Generate a voiceover from
script.txtwith thedefaultprofile and save it asoutput.mp3. - Read text from stdin and create speech audio with
scripts/generate_voice.pyusing thedefaultprofile. - List ElevenLabs voices matching the local setup with
--list-voices.
How to install elevenlabs-tts
1Skills CLI (Vercel)
npx skills add MengTo/Skills --skill elevenlabs-tts -a claude-code2Manually: put the files in place
~/.claude/skills/elevenlabs-tts/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/elevenlabs-tts/
1Skills CLI (Vercel)
npx skills add MengTo/Skills --skill elevenlabs-tts -a codex2Manually: put the files in place
.agents/skills/elevenlabs-tts/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add MengTo/Skills --skill elevenlabs-tts -a cursor2Manually: put the files in place
.cursor/skills/elevenlabs-tts/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install MengTo/Skills elevenlabs-tts2Manually: put the files in place
.github/skills/elevenlabs-tts/SKILL.md1Skills CLI (Vercel)
npx skills add MengTo/Skills --skill elevenlabs-tts -a gemini-cli2Platform CLI
gemini skills install https://github.com/MengTo/Skills --path agent-skills/codex/elevenlabs-ttsManually: put the files in place
.devin/skills/elevenlabs-tts/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add MengTo/Skills --skill elevenlabs-tts -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about elevenlabs-tts
How do I install elevenlabs-tts in Claude Code?
Run npx skills add MengTo/Skills --skill elevenlabs-tts -a claude-code, then run npx skills add MengTo/Skills --skill elevenlabs-tts -a claude-code again. The skill file is at ~/.claude/skills/elevenlabs-tts/SKILL.md.
What does elevenlabs-tts do?
It generates ElevenLabs speech audio from inline text, script files, or stdin. The skill applies a local voice profile and writes the result to the requested destination.
What does elevenlabs-tts need to work?
Set ELEVENLABS_API_KEY in the process environment or the nearest .env, and provide a local JSON profile file. You can select that file with --config or ELEVENLABS_TTS_CONFIG.
Source text
SKILL.md · MIT
---
name: elevenlabs-tts
description: Generate ElevenLabs text-to-speech audio from scripts or inline text using local voice profiles. Use when the user asks for ElevenLabs, text-to-speech, TTS, narration, voiceover, speech audio, or voice generation; load voice names, voice ids, emails, owners, and account-specific defaults only from local config outside the skill.
---
# ElevenLabs TTS
Use this skill for ElevenLabs text-to-speech generation. Keep the skill reusable and non-personal:
- Do not store API keys, voice names, voice ids, emails, account names, customer names, or personal defaults in the skill.
- Read `ELEVENLABS_API_KEY` from the process environment or the nearest `.env`.
- Read account-specific voice profiles from local JSON config outside this skill.
- Generate audio with request-level settings. Do not mutate saved ElevenLabs account or voice settings unless the user explicitly asks.
## Local Profiles
Prefer one of these config sources, in order:
1. `--config /path/to/profiles.json`
2. `ELEVENLABS_TTS_CONFIG=/path/to/profiles.json`
3. `local/elevenlabs/profiles.json`
Project-local profile files are also fine when they are gitignored, for example `config/local/elevenlabs-tts.json`.
The helper script expects this shape:
```json
{
"default_profile": "default",
"profiles": {
"default": {
"voice_name": "Voice name from the local account",
"voice_id": "optional-direct-voice-id",
"voice_id_env": "OPTIONAL_ENV_VAR_WITH_VOICE_ID",
"model_id": "eleven_multilingual_v2",
"output_format": "mp3_44100_128",
"voice_settings": {
"stability": 0.5,
"similarity_boost": 1.0,
"style": 0.0,
"speed": 1.0,
"use_speaker_boost": true
},
"output_dir": "outputs/voiceovers",
"emails": []
}
}
}
```
Fields like `emails`, owners, aliases, and notes are for local routing/context only. The script ignores unknown metadata fields.
## Workflow
1. Choose the profile from `--profile`, `ELEVENLABS_TTS_PROFILE`, or `default_profile`.
2. Prefer the helper script:
`python3 <skill-root>/scripts/generate_voice.py --text-file script.txt --profile default --output output.mp3`
3. If the profile has `voice_id`, use it. If it has `voice_id_env`, read that env var. Otherwise search ElevenLabs by `voice_name`.
4. Use profile `model_id`, `output_format`, and `voice_settings` unless the user overrides them for this generation.
5. Put generated audio in the requested destination. If no destination is given, use the profile `output_dir`, then `outputs/voiceovers/`.
6. Report the output path and any important warnings. Do not print secrets.
## Helper Script
The bundled script supports:
- `--text "..."` for inline text
- `--text-file path.txt` for script files
- stdin when neither `--text` nor `--text-file` is provided
- `--profile name` to select a local profile
- `--config path.json` to select a local profile file
- `--voice-id`, `--voice-name`, `--model-id`, `--output-format`, and `--settings-json` for one-off overrides
- `--output path.mp3` to choose the output file
- `--dry-run` to print the resolved request payload without calling the text-to-speech endpoint
- `--list-voices` to list matching ElevenLabs voices without generating audio
## API Notes
Use the current ElevenLabs endpoints:
- Voice search: `GET https://api.elevenlabs.io/v2/voices`
- Speech generation: `POST https://api.elevenlabs.io/v1/text-to-speech/:voice_id?output_format=...`
Send the API key as `xi-api-key`.
© MengTo · MIT · MengTo/Skills
Similar skills
Everything for AI and ML →elevenlabs-tts by other authors comes first.