Skip to content
AI & Agents
Skill

/sag

ElevenLabs text-to-speech with mac-style say UX.

BOOST
From plugin
openclaw
391k68 skills
Install
$ npx -y skills add openclaw/openclaw --skill sag --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/sag

Context preview

The summary Claude sees to decide when to auto-load this skill.

ElevenLabs text-to-speech with mac-style say UX.

SKILL.md

sag.SKILL.md
name: sag
description: "ElevenLabs text-to-speech with mac-style say UX."
homepage: https://sag.sh
metadata:
  {
    "openclaw":
      {
        "emoji": "🔊",
        "requires": { "bins": ["sag"] },
        "primaryEnv": "ELEVENLABS_API_KEY",
        "install":
          [
            {
              "id": "brew",
              "kind": "brew",
              "formula": "steipete/tap/sag",
              "bins": ["sag"],
              "label": "Install sag (brew)",
            },
          ],
      },
  }

sag

Use `sag` for ElevenLabs TTS with local playback.

API key (required)

  • `ELEVENLABS_API_KEY` (preferred)
  • `SAG_API_KEY` also supported by the CLI
  • Key file via `--api-key-file`, `ELEVENLABS_API_KEY_FILE`, or `SAG_API_KEY_FILE`

Quick start

  • `sag "Hello there"`
  • `sag speak -v "Roger" "Hello"`
  • `sag voices`
  • `sag prompting` (model-specific tips)

Model notes

  • Default: `eleven_v3` (expressive)
  • Stable: `eleven_multilingual_v2`
  • Fast: `eleven_flash_v2_5`

Pronunciation + delivery rules

  • First fix: respell (e.g. "key-note"), add hyphens, adjust casing.
  • Numbers/units/URLs: `--normalize auto` (or `off` if it harms names).
  • Language bias: `--lang en|de|fr|...` to guide normalization.
  • v3: SSML `<break>` not supported; use `[pause]`, `[short pause]`, `[long pause]`.
  • v2/v2.5: SSML `<break time="1.5s" />` supported; `<phoneme>` not exposed in `sag`.

v3 audio tags (put at the entrance of a line)

  • `[whispers]`, `[shouts]`, `[sings]`
  • `[laughs]`, `[starts laughing]`, `[sighs]`, `[exhales]`
  • `[sarcastic]`, `[curious]`, `[excited]`, `[crying]`, `[mischievously]`
  • Example: `sag "[whispers] keep this quiet. [short pause] ok?"`

Voice defaults

  • `ELEVENLABS_VOICE_ID` or `SAG_VOICE_ID`

Confirm voice + speaker before long output.

Chat voice responses

When the user asks for a "voice" reply (e.g., "crazy scientist voice", "explain in voice"), generate audio and send it:

# Generate audio file
sag -v Clawd -o /tmp/voice-reply.mp3 "Your message here"

# Then include in reply:
# MEDIA:/tmp/voice-reply.mp3

Voice character tips:

  • Crazy scientist: Use `[excited]` tags, dramatic pauses `[short pause]`, vary intensity
  • Calm: Use `[whispers]` or slower pacing
  • Dramatic: Use `[sings]` or `[shouts]` sparingly

Default voice for Clawd: `lj2rcrvANS3gaWWnczSX` (or just `-v Clawd`)

Read more
Ships withopenclaw

OpenClaw is an open-source AI assistant that runs on your own computer and meets you in the channels you already use: Discord, iMessage, Slack, Teams, Telegram, WhatsApp, and 20+ more, plus native apps for macOS, iOS, Android, Windows, and Linux.

Get the whole plugin
Stats
391,228
Stars
82,236
Forks
Active
Maintenance
TypeScript
Language
MIT
License
5m ago
Last commit
10mo ago
Created
3h ago
Added

Repo: openclaw/openclaw

Other skills on openclaw.