5.4 KiB
5.4 KiB
SKILL.md — heygen-video
Назначение
Генерация видеокружочков (video notes) в Telegram через HeyGen API. Аватарка Стрим "говорит" голосом ElevenLabs с синхронизацией губ через HeyGen.
Архитектура
Текст → ElevenLabs TTS → MP3 файл
↓
HeyGen Upload API (MP3 → audio_url)
↓
HeyGen Video API (talking_photo + audio → MP4)
↓
Poll Status → Download MP4
↓
FFmpeg (обрезать до 512×512)
↓
Telegram sendVideoNote
Компоненты
1. ElevenLabs TTS API
- Назначение: генерация голоса из текста
- Endpoint:
https://api.elevenlabs.io/v1/text-to-speech/{voice_id} - Голос:
TPIitICAZ8CqlGZ81AKm(голос Стрим) - Модель:
eleven_multilingual_v2 - Выход: MP3 файл
- Ключ:
ELEVENLABS_API_KEYв~/.openclaw/.env
2. HeyGen Upload API
- Endpoint:
POST https://upload.heygen.com/v1/asset - Header:
X-API-Key: {key} - Content-Type: определяется по типу файла
- MP3:
audio/mpeg - JPG:
image/jpeg
- MP3:
- Body: raw binary файл
- Response:
{"code": 100, "data": {"url": "https://resource2.heygen.ai/..."}}
3. HeyGen Video Generate API
- Endpoint:
POST https://api.heygen.com/v2/video/generate - Header:
X-API-Key: {key},Content-Type: application/json - Body:
{
"video_inputs": [{
"character": {
"type": "talking_photo",
"talking_photo_id": "<TALKING_PHOTO_ID>"
},
"voice": {
"type": "audio",
"audio_url": "<MP3_URL от HeyGen>"
}
}]
}
- Response:
{"data": {"video_id": "<id>"}}
4. HeyGen Video Status API (polling)
- Endpoint:
GET https://api.heygen.com/v1/video_status.get?video_id={id} - Header:
X-API-Key: {key} - Response:
{"data": {"status": "pending"}}— ещё{"data": {"status": "completed", "url": "https://..."}}— готово{"data": {"status": "failed"}}— ошибка
- Polling: каждые 5 сек, max 300 сек (5 мин)
5. FFmpeg
- Конвертация MP4 в квадрат 512×512
- Путь:
/home/node/bin/ffmpeg-7.0.2-amd64-static/ffmpeg
6. Telegram sendVideoNote API
- Отправка MP4 как video note
- Лимит: 512×512, до 60 сек, до 50MB
Файлы
SKILL.md— этот файлscripts/generate_heygen_video.py— основной скрипт генерацииscripts/send_heygen_video.sh— shell-обёртка для отправки
Переменные окружения (~/.openclaw/.env)
ELEVENLABS_API_KEY=<key>
HEYGEN_API_KEY=<key>
HEYGEN_TALKING_PHOTO_ID=<id>
generate_heygen_video.py
Использование:
python3 generate_heygen_video.py "Текст для озвучки" [output_path]
Параметры:
- Аргумент 1: текст для озвучки (обязательно)
- Аргумент 2: путь для сохранения MP4 (опционально, по умолчанию
/tmp/heygen_video_{timestamp}.mp4)
Выход: путь к MP4 файлу или error
Шаги:
- Генерирует MP3 через ElevenLabs
- Определяет длительность через ffprobe
- Загружает MP3 в HeyGen
- Создаёт видео через HeyGen API
- Polling статуса каждые 5 сек
- Скачивает готовый MP4
- Конвертирует в 512×512 через FFmpeg
- Сохраняет результат
Обработка ошибок:
- Если видео > 60 сек — обрезать
- Если файл > 50MB — логировать предупреждение
- Если HeyGen вернул ошибку — вывести код и сообщение
send_heygen_video.sh
Использование:
./send_heygen_video.sh "Текст"
Параметры:
- Аргумент 1: текст (обязательно)
- BOT_TOKEN и CHAT_ID — из
~/.openclaw/.envили аргументы
Выход: message_id в stdout
Аватарка
talking_photo_id — ID обработанного talking photo в HeyGen. Создаётся один раз:
- Загрузить фото в HeyGen
- HeyGen обработает (1-2 мин)
- Получить ID через API или интерфейс
- Сохранить в
HEYGEN_TALKING_PHOTO_ID
Стоимость (актуально на 09.04.2026)
| Компонент | Цена |
|---|---|
| ElevenLabs TTS (10 сек) | ~$0.01 |
| HeyGen Avatar III (10 сек) | $0.17 |
| Итого за 10 сек | ~$0.18 |
vs VEED Fabric 480p: $0.86 (в 4.7 раза дешевле!)
Ограничения
- Макс длительность: 60 сек (Telegram limit)
- Макс размер файла: 50MB
- HeyGen: max 30 сек на генерацию, но можно обрезать
- Фото: JPG/PNG, до 50MB, HeyGen сам оптимизирует