Yandex Station TTS skill
claude-skill-yandex-tts
A Claude Code skill that speaks answers in Alice's voice on a Yandex Station over the local network
Install
git clone git@github.com:rasperepodvipodvert/claude-skill-yandex-tts.git ~/.claude/skills/speak
cp ~/.claude/skills/speak/.env.example ~/.claude/skills/speak/.envThen fill in MUSIC_TOKEN, DEVICE_ID and DEVICE_PLATFORM in .env.
This is third-party code. Review the repository files before installing.
What it does
The /speak skill sends short text to a Yandex Station, which reads it aloud in Alice's voice. The tts.py script gets a conversation_token via the Yandex Quasar API, connects to the station over the Glagol WebSocket protocol on port 1961 and sends a repeat_phrase command. The station IP is found via mDNS, and the session token is cached for 25 minutes. Markup is stripped and long texts are cut to 500 characters.
Who it is for. For Yandex Station owners who want to hear short Claude Code results spoken aloud.
Good fit when
- You want a voice notification when a long build or task finishes
- You want a short answer spoken through the speaker
Not a fit when
- The computer and the station are on different networks
- You do not want to obtain a Yandex OAuth token from the Session_id cookie
Example request
/speak Say through the speaker that the build has finishedLimitations
Station auto-discovery works on macOS via dns-sd; on Linux you set the IP manually. Requires Python 3.10+ and the station on the same local network. MUSIC_TOKEN is obtained with public Yandex Music app client IDs and lasts about a year. Only Russian text up to 500 characters is spoken.
How to disable. Remove ~/.claude/skills/speak together with the .env file that stores the token.
Security check
- The token is derived from the Yandex account Session_id cookie
- An OAuth token with broad access is stored in .env for about a year
- The script connects to devices on the local network
README in short
The README describes a Claude Code skill that speaks text on a Yandex Station via the local Glagol protocol. Setup covers cloning into ~/.claude/skills/speak, creating .env, getting MUSIC_TOKEN using the AlexxIT/YandexStation method and choosing a device. It lists config variables, features such as text cleanup and the 500-character limit, and a table of compatible speakers.
SKILL.md
--- name: speak description: Озвучить текст через Яндекс Станцию. Используй когда пользователь просит озвучить ответ, сказать что-то через колонку, или когда в разговоре уместно озвучить ответ голосом. --- # Speak — озвучка через Яндекс Станцию Отправляет текст на Яндекс Станцию для озвучки голосом Алисы. ## Использование Запусти через Bash: ```bash ~/.claude/skills/speak/scripts/tts.py "текст для озвучки" ``` ## Правила - Текст должен быть на русском языке - Максимум 500 символов — если ответ длиннее, озвучь только ключевую мысль - НЕ озвучивай код, JSON, технические команды - Озвучивай краткую суть ответа, а не весь ответ целиком - Формулируй текст для устной речи — без markdown, без скобок, без спецсимволов - Если скрипт вернул ошибку — сообщи пользователю текст ошибки. НЕ повторяй попытку автоматически. ## Примеры Хорошие тексты для озвучки: - "Сборка завершена успешно, все тесты прошли." - "Добрый вечер! Температура на улице минус три градуса." - "Задача выполнена. Файл сохранён в папку загрузок."
FAQ
Which speakers are supported?
Any with the Glagol protocol: Yandex Station models, Yandex Modules, plus JBL Link, Elari SmartBeat and DEXP Smartbox.
Are external dependencies needed?
No, it uses only the Python standard library with a hand-written WebSocket client.
Related
Official Remotion skills for making videos in React: compositions, animation, captions, maps and rendering
Five skills: recordable web presentations, web design, GPT Image 2 prompting, local knowledge base retrieval and articles
GigaChat image generation MCP
mcp-server-gigachat-image-generation
MCP server packaged as a Docker image for generating images with GigaChat, configured with GIGACHAT_CREDENTIALS