Claude
Skills
Sign in
Back

elevenlabs-narrator

Included with Lifetime
$97 forever

Turn any briefing, report, story, or summary into a self-contained HTML page with a big play button that narrates it aloud in a real ElevenLabs voice (audio embedded, works offline in any browser). Use this WHENEVER the user asks you to "read this to me", "play this for me", "make an audio version", "narrate", "tell me about X out loud", or wants a voiced UI/briefing. Default voice is Sarah (soothing female). Uses the user's own ElevenLabs API key. This is the preferred way to deliver any audio narration — do NOT use the macOS `say` voice or browser speechSynthesis, which sound robotic.

Design

What this skill does


# ElevenLabs Narrator

Renders a polished, single-file HTML "play button" UI with **real ElevenLabs narration embedded as base64 audio**. Multi-chapter support with highlight-as-it-reads, click-to-jump, speed control, scrub bar.

## When to use
Any request to hear something spoken: "read this to me", "play it", "audio version", "narrate this", "make me something I can listen to", or building a voiced UI/dashboard.

## How to use

1. **Pick the voice.** Default = **Sarah** (`EXAVITQu4vr4xnSDxMaL`, soothing female). Other ready options in `config.json` → `voice_options`: Lily (velvety British), Matilda, Clara, Bella. The user can name any; pass it via the spec `"voice"` field or `--voice`.

2. **Write a spec JSON** describing the content, then run the engine:
   ```bash
   python3 ~/.claude/skills/elevenlabs-narrator/narrate.py /path/to/spec.json
   ```
   Spec shape:
   ```json
   {
     "title": "The Headline",
     "subtitle": "optional sub-line (HTML allowed)",
     "badge": "small uppercase tag",
     "out": "/Users/russellshomeimac2021/Desktop/something.html",
     "voice": "Sarah",
     "stats": [{"b":"~$456K","s":"Monthly rev"}],
     "footer": "sources / credits (HTML allowed)",
     "chapters": [
       {"n":"01","t":"Chapter Title","speak":"Exactly what the voice says.","html":"<p>On-screen content. <ul class='facts'><li>bullet</li></ul></p>"}
     ]
   }
   ```
   - `speak` = the narration text (write it conversationally; spell out numbers like "four hundred fifty thousand" for natural delivery).
   - `html` = what's shown on the card (supports `ul.facts`, `.tag`, `.verdict/.opt` styles already in the template).
   - One chapter = a single clip. Many chapters = a chaptered briefing.

3. **Quick one-off** (no spec file):
   ```bash
   python3 ~/.claude/skills/elevenlabs-narrator/narrate.py --text "Hello, here is your update." --out ~/Desktop/clip.html --title "Update" --voice Sarah
   ```

4. **Open it** for the user with `open <path>` and offer the file.

## Add a "Listen to this page" bar to an EXISTING page
For pages you've already built (e.g. the One Hour Sites site), don't rebuild them — inject a compact play bar at the top with `add_play_bar.py`:
```bash
python3 ~/.claude/skills/elevenlabs-narrator/add_play_bar.py /path/page.html --text-file narration.txt --voice Sarah --title "Listen to this page"
```
- Generates ElevenLabs audio, embeds it, injects the bar after `</nav>` (or after `<body>`), CSS + JS inline. Idempotent (re-running replaces the old bar).
- Write the narration conversationally: "what's on this page, why choose one option over another, and what the outcome should be." Spell out numbers for natural delivery.
- **Standing rule for the One Hour Sites site (`~/Desktop/OneHourSites/`): every new page gets this play bar at the top.**

## Notes
- Output HTML is fully self-contained (audio inlined) — save finished deliverables to `~/Desktop`.
- Credits: ~1 ElevenLabs credit per character of `speak`. Check remaining with:
  `curl -s -H "xi-api-key: $(python3 -c "import json;print(json.load(open('$HOME/.claude/skills/elevenlabs-narrator/config.json'))['api_key'])")" https://api.elevenlabs.io/v1/user/subscription`
- To change the default voice permanently, edit `default_voice_id` in `config.json`.
- List all account voices: `GET https://api.elevenlabs.io/v1/voices` with the `xi-api-key` header.
- The API key lives in `config.json` (local, gitignored-by-convention). It is the user's key, provided for this purpose.
Files: 4
Size: 23.7 KB
Complexity: 36/100
Category: Design

Related in Design