sag — скилл для Claude Code: ElevenLabs TTS в стиле macOS say
Скилл, который озвучивает текст через ElevenLabs прямо из терминала. Пригодится, когда агенту нужен голосовой ответ или озвучка файла.
npx skills add openclaw/openclaw --skill sag -a claude-codeЧто делает sag
sag — CLI-обёртка над ElevenLabs Text-to-Speech. Интерфейс повторяет поведение macOS-команды say, поэтому привыкшим к ней не нужно учить новый синтаксис: sag "Hello there" сгенерирует и проиграет аудио локально.
Внутри — бинарь sag, который ставится через Homebrew из тапа steipete/tap/sag. Для работы нужен API-ключ ElevenLabs: переменная ELEVENLABS_API_KEY или SAG_API_KEY. Можно указать файл с ключом через --api-key-file.
Скилл знает три модели ElevenLabs: eleven_v3 для выразительной речи по умолчанию, eleven_multilingual_v2 для стабильности и eleven_flash_v2_5 для скорости. Отдельные команды показывают список голосов (sag voices) и подсказки по моделям (sag prompting).
Для озвучки с характером есть аудиотеги в начале строки: [whispers], [shouts], [sings], [excited], [crying] и другие. Паузы задаются тегами [pause], [short pause], [long pause] для v3. Если ответ нужен голосом — например, «объясни голосом безумного учёного», — скилл генерирует mp3 и отправляет файл в чат.
Стоит ставить, если вы уже работаете с ElevenLabs и хотите голосовые ответы от агента. Если озвучка не нужна в принципе, скилл будет лишней зависимостью с ключом API.
Какие задачи решает
- Озвучить текст из терминала одной командой
- Сгенерировать голосовой ответ агента и отправить mp3 в чат
- Подобрать голос и модель под задачу
- Добавить эмоции и паузы в речь тегами
- Нормализовать произношение чисел, единиц и URL
Примеры запросов агенту
- Озвучь: «Привет, это тестовое сообщение»
- Сгенерируй голосовой ответ голосом Clawd и отправь mp3
- Покажи список доступных голосов
Как установить sag
1Через Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill sag -a claude-code2Вручную: положить файлы
~/.claude/skills/sag/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/sag/
1Через Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill sag -a codex2Вручную: положить файлы
.agents/skills/sag/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill sag -a cursor2Вручную: положить файлы
.cursor/skills/sag/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install openclaw/openclaw sag2Вручную: положить файлы
.github/skills/sag/SKILL.md1Через Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill sag -a gemini-cli2Командой платформы
gemini skills install https://github.com/openclaw/openclaw --path skills/sagВручную: положить файлы
.devin/skills/sag/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill sag -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора48
Весь набор →Похожие
Вопросы о sag
Как установить sag в Claude Code?
Выполните npx skills add openclaw/openclaw --skill sag -a claude-code. Сам бинарь ставится отдельно через brew install steipete/tap/sag.
Что делает sag?
Озвучивает текст через ElevenLabs TTS с локальным воспроизведением. Команда sag "текст" генерирует аудио и проигрывает его, а флаг -o сохраняет mp3 в файл.
Какой API-ключ нужен для работы?
Ключ ElevenLabs. Задайте его через переменную ELEVENLABS_API_KEY, либо SAG_API_KEY. Поддерживается также файл ключа через --api-key-file.
Исходный текст
SKILL.md · MIT
---
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:
```bash
# 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`)
© openclaw · MIT · openclaw/openclaw