PluginBench
Skill
Pass
Audit score 90

sag

steipete/clawdis

ElevenLabs text-to-speech with native macOS say-like command interface.

What is sag?

sag is a command-line tool that brings ElevenLabs TTS to your terminal with a familiar macOS say-style UX. Use it to generate and play back expressive speech with support for multiple voices, models, and SSML-like audio tags.

  • Generate and play audio locally using ElevenLabs API
  • Support three TTS models: v3 (expressive), multilingual v2, and fast v2.5
  • Apply audio tags like [whispers], [shouts], [sings], [excited], [crying] for delivery control
  • Normalize pronunciation with respelling, hyphens, language bias, and auto-normalization options
  • List available voices and access model-specific prompting tips
  • Output audio files for integration into chat responses

How to install sag

npx skills add https://github.com/steipete/clawdis --skill sag
Prerequisites
  • ElevenLabs API key (set as ELEVENLABS_API_KEY or SAG_API_KEY environment variable)
  • sag binary installed (via brew: steipete/tap/sag)
Claude Code
Cursor
Windsurf
Cline

How to use sag

  1. 1.Set your ElevenLabs API key: export ELEVENLABS_API_KEY=your_key
  2. 2.Run sag "text" to generate and play audio immediately
  3. 3.List available voices with sag voices to choose a voice ID
  4. 4.Use sag -v VoiceID "text" to speak with a specific voice
  5. 5.Add audio tags like [whispers], [excited], [short pause] within your text for delivery control
  6. 6.For output files, use sag -o /path/to/file.mp3 "text" and include via MEDIA:/path/to/file.mp3 in responses
  7. 7.Check sag prompting for model-specific tips on the v3, v2, or v2.5 models

Use cases

Good for
  • Generate voice replies in chat interfaces with character-specific delivery (scientist, calm, dramatic)
  • Read long-form text aloud with expressive inflection using audio tags
  • Normalize technical terms, URLs, and numbers for clear pronunciation
  • Create audio files for downstream processing or media inclusion
  • Experiment with different voices and models before committing to long outputs
Who it's for
  • Developers building voice-enabled chat agents or applications
  • Content creators needing expressive text-to-speech output
  • Users who prefer command-line tools over web interfaces
  • Teams using ElevenLabs API and wanting local playback

sag FAQ

Which model should I use?

Default is eleven_v3 (most expressive). Use eleven_multilingual_v2 for stable multilingual support, or eleven_flash_v2_5 for speed.

How do I fix mispronounced words?

Respell the word (e.g., 'key-note' for keynote), add hyphens, adjust casing, or use --normalize auto for numbers/units/URLs.

What audio tags does v3 support?

v3 supports [whispers], [shouts], [sings], [laughs], [sighs], [sarcastic], [excited], [crying], and others. Use [pause], [short pause], [long pause] for timing (not SSML <break>).

Can I set a default voice?

Yes, set ELEVENLABS_VOICE_ID or SAG_VOICE_ID environment variable, or use -v VoiceID on the command line.

How do I include audio in a chat response?

Generate audio with sag -o /tmp/file.mp3 "text", then include MEDIA:/tmp/file.mp3 in your response.

Full instructions (SKILL.md)

Source of truth, from steipete/clawdis.


name: sag description: "ElevenLabs text-to-speech with mac-style say UX." homepage: https://sag.sh metadata: { "openclaw": { "emoji": "🔊", "requires": { "bins": ["sag"], "env": ["ELEVENLABS_API_KEY"] }, "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

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)