con un clic
sag
ElevenLabs text-to-speech with mac-style say UX.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
ElevenLabs text-to-speech with mac-style say UX.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Run Claude Code (preferred), Codex CLI, OpenCode, or Pi Coding Agent via background process for programmatic control.
Reorder Foodora orders + track ETA/status with ordercli. Never confirm without explicit user approval. Triggers: order food, reorder, track ETA.
Generate or edit images via Gemini 3 Pro Image (Nano Banana Pro).
Edit PDFs with natural-language instructions using the nano-pdf CLI.
Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.
Transcribe audio via OpenAI Audio Transcriptions API (Whisper).
| name | sag |
| description | ElevenLabs text-to-speech with mac-style say UX. |
| homepage | https://sag.sh |
| metadata | {"crocbot":{"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)"}]}} |
Use sag for ElevenLabs TTS with local playback.
API key (required)
ELEVENLABS_API_KEY (preferred)SAG_API_KEY also supported by the CLIQuick start
sag "Hello there"sag speak -v "Roger" "Hello"sag voicessag prompting (model-specific tips)Model notes
eleven_v3 (expressive)eleven_multilingual_v2eleven_flash_v2_5Pronunciation + delivery rules
--normalize auto (or off if it harms names).--lang en|de|fr|... to guide normalization.<break> not supported; use [pause], [short pause], [long pause].<break time="1.5s" /> supported; <phoneme> not exposed in sag.Audio Tags are inline directives in square brackets [] that add emotional nuance, tone shifts, non-verbal sounds, and effects to generated speech. Place them anywhere in the text—before, after, or mid-sentence.
Syntax:
[nervous][whispers] for layered effects[/tag] existsTag Categories:
| Category | Examples |
|---|---|
| Emotions | [happy], [sad], [angry], [curious], [sarcastic], [excited], [nervous] |
| Delivery | [whispers], [shouts], [sings], [strong French accent] |
| Non-verbal | [laughs], [sighs], [clears throat], [breathing heavily], [exhales] |
| Pacing | [pause], [short pause], [long pause] |
| Effects | [gunshot], [applause], [explosion] (experimental) |
Examples:
sag "[whispers] This is secret... [excited] But it works!"
sag "[nervous][whispers] I'm not sure about this. [pause] Ok, let's do it."
sag "[sarcastic] Oh wow, that's SO impressive. [laughs]"
Notes:
<break> tags; use [pause] insteadVoice defaults
ELEVENLABS_VOICE_ID or SAG_VOICE_IDConfirm voice + speaker before long output.
NOTE: sag skill vs Auto-TTS This skill is for AGENT-INVOKED voice generation (when the AI explicitly runs
sag). This is SEPARATE from the built-in Auto-TTS system (messages.tts.autoin config).
- sag skill: AI explicitly generates voice via
sagCLI command- Auto-TTS: Automatic voice conversion of all replies (see
src/tts/tts.ts) Both should use the same voice ID for consistency.
When the user asks for a "voice" reply (e.g., "crazy scientist voice", "explain in voice"), generate audio and send it:
# Generate audio file (use voice ID directly for consistency with auto-TTS)
sag --voice-id ZD29qZCdYhhdqzBLRKNH -o /tmp/voice-reply.mp3 "Your message here"
# Then include in reply:
# MEDIA:/tmp/voice-reply.mp3
Voice character tips:
[excited] tags, dramatic pauses [short pause], vary intensity[whispers] or slower pacing[sings] or [shouts] sparinglyDefault voice: ZD29qZCdYhhdqzBLRKNH ("Female Humanoid - Futuristic")
https://elevenlabs.io/app/voice-library?voiceId=ZD29qZCdYhhdqzBLRKNH