Skip to content
Agent Orchestration
Skill

/sag

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

From plugin
openclaw
390k68 skills
Install
$ npx -y skills add steipete/clawdis --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
389,657
Stars
81,915
Forks
Active
Maintenance
TypeScript
Language
11m ago
Last commit
9mo ago
Created
13d ago
Added

Repo: steipete/clawdis

Other skills on openclaw.