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- ElevenLabs API key (set as ELEVENLABS_API_KEY or SAG_API_KEY environment variable)
- sag binary installed (via brew: steipete/tap/sag)
How to use sag
- 1.Set your ElevenLabs API key: export ELEVENLABS_API_KEY=your_key
- 2.Run sag "text" to generate and play audio immediately
- 3.List available voices with sag voices to choose a voice ID
- 4.Use sag -v VoiceID "text" to speak with a specific voice
- 5.Add audio tags like [whispers], [excited], [short pause] within your text for delivery control
- 6.For output files, use sag -o /path/to/file.mp3 "text" and include via MEDIA:/path/to/file.mp3 in responses
- 7.Check sag prompting for model-specific tips on the v3, v2, or v2.5 models
Use cases
- 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
- 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
Default is eleven_v3 (most expressive). Use eleven_multilingual_v2 for stable multilingual support, or eleven_flash_v2_5 for speed.
Respell the word (e.g., 'key-note' for keynote), add hyphens, adjust casing, or use --normalize auto for numbers/units/URLs.
v3 supports [whispers], [shouts], [sings], [laughs], [sighs], [sarcastic], [excited], [crying], and others. Use [pause], [short pause], [long pause] for timing (not SSML <break>).
Yes, set ELEVENLABS_VOICE_ID or SAG_VOICE_ID environment variable, or use -v VoiceID on the command line.
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_KEYalso supported by the CLI
Quick start
sag "Hello there"sag speak -v "Roger" "Hello"sag voicessag 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(oroffif 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 insag.
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_IDorSAG_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)
Related skills
More from steipete/clawdis and the wider catalog.

session-logs
Search and analyze your conversation history using jq and ripgrep.

sherpa-onnx-tts
Offline text-to-speech using sherpa-onnx—no cloud, runs locally on macOS, Linux, and Windows.

skill-creator
Create, edit, audit, tidy, validate, or restructure AgentSkills and SKILL.md files.

slack
Send, read, edit, delete, and react to Slack messages with full channel and member management.

songsee
Generate spectrograms and multi-panel audio visualizations from MP3, WAV, and other formats.

sonoscli
Control Sonos speakers on your local network—discover, play, pause, adjust volume, and group speakers.