Видео на русском
Этот скилл — короткая надстройка. Тяжёлую работу делают программы (ffmpeg, Whisper) и официальные скиллы HyperFrames от HeyGen; здесь только маршрут и правила для русских роликов. Из скиллов HyperFrames читать только тот, который нужен для задачи, не все подряд.
Первый запуск: настроить под этот компьютер
Работает только в Claude Code (приложение, VS Code или терминал): нужны программы на компьютере.
Сначала прочитать настройки.md рядом с этим файлом. Если там уже записан компьютер — ничего не проверять, брать команды оттуда (свой python, путь к ffmpeg, модель, --cpu или нет). Если файл пустой или что-то из записанного перестало работать — пройти настройку ниже и записать результат туда.
Настройка — один раз:
| Что | Проверка | Зачем |
|---|---|---|
| ffmpeg / ffprobe | ffmpeg -version | звук и кадры из видео |
| Python 3.10+ с faster-whisper и yt-dlp | python -c "import faster_whisper, yt_dlp" (на Mac — python3) | расшифровка, скачивание по ссылке |
| Node.js | node -v | HyperFrames |
| Скиллы HyperFrames | есть ли скилл hyperframes в списке скиллов | монтаж, плашки, анимация |
| Видеокарта NVIDIA (не обязательно) | nvidia-smi (название и память) | расшифровка в десятки раз быстрее |
| Уже стоящий Whisper | pip list (faster-whisper, openai-whisper, whisperx), папки с моделями, спросить пользователя | не ставить второй |
Свой Whisper. Если у пользователя уже есть faster-whisper и скачанные модели — второй не ставить: передавать скрипту путь к папке модели через --model <путь> или задать HF_HOME на его кэш. Если стоит другой Whisper (openai-whisper, whisper.cpp, whisperx) — спросить, оставить ли его. Если оставить, расшифровывать им, а потом привести результат к формату нашего скрипта (words: {"words":[{"text","start","end","type":"word"}]}, flat: тот же список слов без обёртки) — именно этот формат ждут скиллы HyperFrames.
Модель под видеокарту (faster-whisper):
| Компьютер | Что брать |
|---|---|
| NVIDIA от 6 ГБ памяти | large-v3-turbo на видеокарте (по умолчанию) — лучший русский |
| NVIDIA 4 ГБ | large-v3-turbo с --compute int8_float16 или --model medium |
| Без NVIDIA (в т.ч. Mac, AMD, ноутбук со встроенной графикой) | --cpu, модель small (быстро) или large-v3-turbo (точнее, но в разы дольше) |
Проверить на коротком куске (ffmpeg -t 10) своего ролика: если на видеокарте падает с ошибкой CUDA или памяти — поставить библиотеки ниже или взять модель меньше. Скорость и качество показать пользователю и выбрать с ним.
Если чего-то нет — перечислить пользователю, что и сколько весит, и ставить только с его согласия. На Windows спросить, на какой диск ставить, если на C мало места.
- ffmpeg, Node, Python: Windows —
winget install Gyan.FFmpeg,winget install OpenJS.NodeJS.LTS,winget install Python.Python.3.12; Mac —brew install ffmpeg node python. - Библиотеки:
python -m pip install faster-whisper yt-dlp. Windows с видеокартой NVIDIA — ещёpython -m pip install nvidia-cublas-cu12 "nvidia-cudnn-cu12==9.*". - Скиллы HyperFrames:
npx skills add heygen-com/hyperframes --all(github.com/heygen-com/hyperframes, Apache 2.0). - Модель Whisper (~1,6 ГБ) скачается сама при первой расшифровке в кэш HuggingFace. Другое место — переменная
HF_HOME. - По желанию пользователя: выключить телеметрию HyperFrames переменными
HYPERFRAMES_NO_TELEMETRY=1иDO_NOT_TRACK=1.
В конце настройки записать всё в настройки.md (по шаблону в файле): какой python и ffmpeg, видеокарта, выбранная модель и флаги, где кэш моделей, скорость на пробе. Дальше команды из разделов A и B запускать с этими флагами.
Наш скрипт расшифровки — scripts/transcribe.py рядом с этим файлом. Видеокарту он берёт сам, без неё считает на процессоре. Флаги: --model (имя или путь к своей модели), --compute, --cpu.
Отчёты «feedback» HyperFrames после рендера не отправлять без спроса. npx hyperframes skills update запускать только с согласия пользователя. Встроенный голос Kokoro по-русски не говорит: закадровый голос — запись самого пользователя или его сервис озвучки.
A. Посмотреть и разобрать видео
- Получить файл. Путь к файлу брать как есть, исходник не трогать. Ссылку скачать во временную папку:
python -m yt_dlp --no-playlist -o "<папка>/video.%(ext)s" --print-to-file "%(uploader)s | %(duration)s c | %(like_count)s лайков | %(comment_count)s комм. | %(description)s" "<папка>/info.txt" <ссылка>Для YouTube, если нужен только текст, сначала попробовать субтитры:--write-auto-subs --sub-langs ru --skip-download. Инстаграм и закрытые ТГ-каналы могут требовать вход — тогда попросить пользователя скачать файл самому. - Узнать, что за файл:
ffprobe -v error -show_entries format=duration:stream=codec_type,width,height -of compact <видео>. - Расшифровать:
python scripts/transcribe.py <видео> --out <папка>/transcript.txt(текст с таймкодами). - Кадры листами (12 кадров на картинку — экономит токены):
вертикальное:
ffmpeg -v error -y -i <видео> -vf "fps=1/2,scale=216:-2,tile=6x2:padding=4:color=white" <папка>/sheet_%02d.jpgгоризонтальное: то же сscale=320:-2,tile=4x3. Для видео длиннее 2 минут —fps=1/5или1/10. Прочитать листы как картинки. - Ответ: кто автор и цифры (если есть), формат ролика, расшифровка (или конспект, если длинно), что видно в кадре, и отдельно — что из этого полезно пользователю. Если в ролике преувеличения — честно сказать.
B. Сделать видео через HyperFrames
Какой скилл брать:
| Задача | Скилл |
|---|---|
| любой ролик, с него начинается работа; непонятно, что брать | hyperframes (главный вход, сам направит) |
| субтитры к ролику, где человек говорит в камеру: по 1–3 слова, ключевые слова цветом, караоке | embedded-captions |
| графика поверх говорящего видео: плашки, иконки, вставки «в телефоне», сплит, кружок | talking-head-recut |
| короткая анимация без речи до ~30 с: заставка, цифры, логотип, макеты интерфейсов, «было → стало» | motion-graphics |
| устройство ролика: слои, время появления плашек, вставки видео | hyperframes-core |
| как плашки выезжают, стикеры, «удары» словом на весь кадр, кинетический текст | hyperframes-animation |
| наезды и отъезды камеры, плавные приближения | hyperframes-keyframes |
| музыка, звуки, иконки, обработка вставок | media-use |
| проверка, сборка в MP4, вырезание фона (вставка «из-за плеча») | hyperframes-cli |
| готовые эффекты (глитч, конфетти, графики), громкость музыки под голос, цвета и шрифты | hyperframes-registry, hyperframes-audio, hyperframes-creative |
Скилл hyperframes по правилам HyperFrames читается первым; для простых задач достаточно его SKILL.md, без справочников.
Расшифровку готовить нашим скриптом (лучше понимает русский и даёт точное время слов), а не встроенной hyperframes transcribe:
- для
embedded-captions:python scripts/transcribe.py <видео> --out <рабочая папка>/transcript.json --format words— скилл сам подхватит готовыйtranscript.json; - для
talking-head-recut: то же с--format flat(плоский массив слов), шаг транскрибации скилла пропустить. Перед использованием прочитать расшифровку и исправить ошибки распознавания (имена, бренды, термины). Список исправлений показать пользователю одной строкой.
Проект: спросить, в какую папку класть. Внутри: исходники/ (копии исходных файлов — оригиналы не трогать и не удалять), рабочие файлы HyperFrames, готово/ для итоговых MP4.
Форматы: Reels/Shorts/Stories — 1080×1920, 9:16, 30 fps; YouTube — 1920×1080; пост — 1080×1350.
Русские субтитры и плашки
- Шрифт обязательно с кириллицей. У многих «модных» шрифтов её нет (Bebas Neue и Anton из Google Fonts; у Bebas есть отдельные кириллические версии) — проверить до рендера. Надёжные: Oswald, Golos Text, Manrope, Montserrat, Unbounded, Inter, Rubik, Onest. Лучше локальный
.woff2в папке проекта, чем Google Fonts по сети. - 2–4 слова в строке. Предлоги и союзы (в, на, с, к, у, о, и, а, но, не) не оставлять в конце строки — переносить к следующему слову.
- Кавычки «ёлочки», тире по правилам русского языка, числа цифрами.
- Капсом — только короткие акценты (1–3 слова), не целые фразы.
- Субтитры не должны закрывать лицо и нижнюю зону интерфейса Reels (кнопки, подпись) — держать в безопасной зоне. Хук — в центре кадра или чуть ниже, не у верхнего края.
- Если в папке скилла заполнен
бренд.md(шрифты, цвета, как ставить акцент) — использовать его. Если он пустой — один раз спросить пользователя о стиле и предложить сохранить ответ туда.
Перед тем как сказать «готово»
Показать план (что, где, какой стиль) до долгого рендера. После рендера нарезать из результата лист кадров (п. A4), посмотреть самому: текст читается, не вылезает за край, кириллица на месте, синхронно с речью. Только потом отдавать путь к файлу в готово/.