# Монтаж видео через Claude Code: 6 маршрутов, цена и сбои

> Claude Code не смотрит видео: он читает расшифровку, решает, что вырезать, и запускает ffmpeg. Подходит для говорящей головы, не для мультикамеры.

- URL: https://blog.laozhang.ai/ru/posts/claude-code-video-editing
- Published: 2026-10-15
- Updated: 2026-10-15
- Author: LaoZhang AI Team (https://blog.laozhang.ai/ru/about)
- Topic: Claude Code
- Tags: Claude Code, Монтаж видео, ffmpeg, Whisper, Субтитры

---
**Да, Claude Code может смонтировать видео, но не так, как это делает монтажёр.** Файл .mp4 он не смотрит и звук не слышит. Монтаж складывается из трёх шагов: программа распознавания речи делает расшифровку с таймкодом каждого слова, Claude читает её и решает, какие куски оставить, а ffmpeg режет и склеивает исходник по этому списку. Поэтому хорошо получается всё, что видно по тексту: паузы, оговорки, неудачные дубли, субтитры, вертикальная версия 9:16. Плохо — то, что видно только глазами: выбор лучшего кадра, мультикамера, перебивки по смыслу, цветокор на вкус.

Для работы нужны Claude Code (он требует платного плана Claude или оплаты API, подробности в разборе [цены Claude Code: Pro, Max, Team и API](https://blog.laozhang.ai/ru/posts/claude-code-pricing-guide)), ffmpeg и программа расшифровки. Расшифровку и склейку можно делать полностью на своём компьютере без поминутной оплаты, платные части зависят от маршрута. Региональное ограничение тоже стоит знать заранее: в [списке стран и регионов, где Anthropic поддерживает свои сервисы](https://www.anthropic.com/supported-countries) (действует с 12 мая 2026 года), России нет. ffmpeg, модели Whisper и auto-editor к Anthropic не обращаются и работают сами по себе, но решения о резах в описанных ниже маршрутах принимает именно Claude.

## Как Claude Code монтирует без просмотра видео: расшифровка и ffmpeg

Claude принимает на вход текст и изображения, но не видео и не звук. В [документации Anthropic по работе с изображениями](https://platform.claude.com/docs/en/build-with-claude/vision) поддерживаемые форматы — JPEG, PNG, WebP и GIF, причём у GIF используется только первый кадр. Инструмент чтения файлов в [справочнике инструментов Claude Code](https://code.claude.com/docs/en/tools-reference) открывает изображения, PDF и ноутбуки Jupyter; видео и аудио в списке нет. Практический вывод: чтобы Claude «увидел» ролик, ему нужно дать расшифровку речи и, если нужна картинка, несколько кадров, заранее вытащенных ffmpeg.

Отсюда рабочая схема, на которой построены почти все проекты для монтажа через Claude Code:

1. **Расшифровка с таймкодами слов.** Локальный Whisper (faster-whisper, WhisperX, whisper.cpp) или облачный сервис вроде ElevenLabs Scribe.
2. **Список монтажных решений (EDL, edit decision list).** Claude читает расшифровку и записывает, какие отрезки исходника оставить: без вступительной тишины, без оговорок, только последний удачный дубль.
3. **Резка и склейка.** ffmpeg выполняет список: обрезает отрезки, добавляет короткие фейды звука на стыках, склеивает, накладывает субтитры.
4. **Проверка.** Повторная расшифровка готового файла и кадры в точках склейки показывают, не пропало ли слово и совпал ли субтитр.

![Четыре шага монтажа в Claude Code: расшифровка в words.json, список резов edl.json от Claude, резка и склейка в ffmpeg, проверка повторной расшифровкой](https://blog.laozhang.ai/posts/ru/claude-code-video-editing/img/transcript-edl-ffmpeg-steps.webp)

Кадры здесь — дополнение, а не основа. Проект video-use даёт Claude полоску из нескольких кадров с формой волны только в точках, где надо принять решение. В его README приведено сравнение: если просто нарезать ролик на кадры, получится 30 000 кадров × 1 500 токенов ≈ 45 млн токенов, а упакованная расшифровка с несколькими PNG занимает около 12 КБ. Японский сайт Fyve в статье от 29 июня 2026 года формулирует ту же мысль иначе: своих функций монтажа у Claude Code нет, он работает как дирижёр, который запускает ffmpeg и Whisper по вашим инструкциям.

## Какой материал подходит: говорящая голова — да, мультикамера — нет

Решающий признак — можно ли описать нужный монтаж словами из расшифровки. Если да, это задача для Claude Code. Если решение принимается по картинке, он в лучшем случае соберёт черновик.

**Подходит:**

- **Говорящая голова** с одним спикером: убрать паузы, оговорки и повторные дубли, добавить субтитры.
- **Туториал с записью экрана**, где важен голос: вырезать тишину, пока вы что-то настраиваете, и сделать вертикальную нарезку.
- **Подкаст и интервью**, если монтаж идёт по речи, а не по смене камер.
- **Запись эфира или лекции**, из которой нужен короткий выпуск. На vc.ru Александр Унгуренко в октябре 2026 года описывает, как из записей эфиров получаются выпуски на 8–15 минут: Claude Code склеивает запись экрана с видео с айфона и вырезает паузы и дубли.

**Не подходит или даёт только черновик:**

- **Мультикамера и перебивки (B-roll) по смыслу.** В обзоре video-use на Habr (автор nlaik, 7 мая 2026 года) отмечено, что проект рассчитан на говорящую голову, а перебивок из коробки нет.
- **Выбор дубля по качеству исполнения.** Там же: самопроверка video-use ловит технические ошибки (резы, щелчки, перекрытые субтитры), но не смысловые, и может оставить не тот дубль.
- **Цветокор на вкус и выбор удачного выражения лица.** Claude видит только те кадры, которые ему показали.
- **Творческая сборка в монтажке.** README сервера davinci-resolve-mcp для DaVinci Resolve прямо исключает «оценку монтажа» из своих задач и называет результат первой черновой сборкой (first-pass assembly).

Заменит ли это монтажёра? По тем же отчётам — нет, это черновой монтаж и снятие рутины. Fyve оценивает соотношение примерно как 70 % автоматики и 30 % ручной работы и советует считать результат черновиком. Автор обзора на Habr для редкого монтажа пишет, что «проще включить DaVinci Resolve и сделать руками за два часа».

## Шесть маршрутов монтажа в Claude Code: что ставить и сколько платить

Все маршруты используют одну схему (расшифровка → список резов → ffmpeg), но различаются тем, где идёт расшифровка, кто доделывает монтаж и что приходится оплачивать. Первые два маршрута запускались в тестовом прогоне, описанном ниже; остальные описаны по документации проектов по состоянию на 15 октября 2026 года.

| Маршрут | Что делает с материалом | Расшифровка | Расходы сверх Claude | Где ломается |
| --- | --- | --- | --- | --- |
| Свой скрипт: faster-whisper + ffmpeg | Паузы, оговорки, дубли, субтитры, вертикаль 9:16 | Локально | Нет поминутной оплаты | Границы слов, сборка ffmpeg без субтитров, имена собственные |
| auto-editor | Вырезает тишину (или участки без движения), экспортирует таймлайн | Не нужна | Бесплатно, лицензия Unlicense | Громкий неудачный дубль остаётся |
| video-use (скилл) | Оговорки, фальстарты, пустоты, цветокор по сегментам, вшитые субтитры, графика | ElevenLabs Scribe, облако | $0,22 за час аудио, в бесплатном тарифе около 4,5 ч | Только говорящая голова; локального Whisper в основной ветке нет |
| ButterCut | Отбор и черновой монтаж с экспортом XML в Final Cut Pro, Premiere, DaVinci Resolve | Локально, WhisperX | Бесплатно (некоммерческая лицензия), Pro $49 в год | Нужны Ruby, Python, полный FFmpeg; ориентирован на Apple Silicon |
| MCP к монтажке | Claude управляет таймлайном Resolve Studio, Premiere Pro или Palmier Pro | Своей нет | Resolve Studio или подписка Adobe | Проекты сообщества; сборка, а не оценка монтажа |
| ChatCut (плагин) | Обрезка, шумоподавление, субтитры, графика, сгенерированные перебивки | На стороне ChatCut | $25–160 в месяц | Материал загружается на сервер; две оплаты |

**Свой скрипт на faster-whisper и ffmpeg.** Claude пишет и запускает два небольших скрипта: один делает расшифровку, второй режет по списку отрезков. Это самый прозрачный и бесплатный по расшифровке путь, но при первом запуске с ним больше всего ручной настройки. Пошаговый вариант с кодом — в разделе о первом монтаже.

**auto-editor.** Консольная программа режет по громкости или по движению в кадре, слов не понимает. Ставится через `brew install auto-editor` или бинарником с GitHub; README предупреждает, что на pip программа больше не публикуется, поэтому PyPI отдаёт старую версию 29.3.1 от ноября 2025 года. Умеет выгружать таймлайн для Premiere, DaVinci Resolve, Final Cut Pro, Shotcut и Kdenlive.

**video-use.** Открытый скилл от browser-use (лицензия MIT, около 29 тысяч звёзд на GitHub на 15 октября 2026 года): кладёте исходники в папку, разговариваете с Claude Code, получаете final.mp4. Перед резкой он предлагает стратегию и ждёт вашего подтверждения, на стыках ставит фейды по 30 мс, субтитры по умолчанию — по два слова заглавными, а после рендера проверяет точки склейки (не больше трёх проходов). Установка: клонировать репозиторий, сделать симлинк в `~/.claude/skills/video-use`, выполнить `uv sync`, поставить ffmpeg и записать `ELEVENLABS_API_KEY` в `.env`. Расшифровка — только через [API ElevenLabs Scribe](https://elevenlabs.io/pricing/api). Локальный Whisper в SKILL.md назван антипаттерном («медленно и нормализует слова-паразиты»); пул-реквесты с локальным Whisper #12, #28 и #114 закрыты без слияния, #22, #60, #151 и #223 пока открыты. Вшитым субтитрам video-use, скорее всего, тоже нужна сборка ffmpeg с libass — это не проверялось.

**ButterCut.** Проект [barefootford/buttercut](https://github.com/barefootford/buttercut) расшифровывает материал локально через WhisperX, анализирует картинку, а Claude собирает отбор или черновой монтаж и выгружает XML для Final Cut Pro, Premiere или DaVinci Resolve — дальше вы доделываете в монтажке. Лицензия PolyForm Noncommercial 1.0.0 с исключением для коммерческих роликов: продавать готовые видео можно, перепродавать сам инструмент нельзя. ButterCut Pro за $49 в год добавляет многодорожечные перебивки.

**MCP к монтажке.** Через MCP Claude Code управляет настоящим таймлайном: собирает фрагменты, ставит маркеры, запускает рендер. Как подключать такие серверы, разобрано в подборке [лучших MCP для Claude Code](https://blog.laozhang.ai/ru/posts/claude-code-best-mcp-servers). Для DaVinci Resolve самый заметный вариант — [davinci-resolve-mcp](https://github.com/samuelgursky/davinci-resolve-mcp) (MIT): он работает через официальный скриптовый API Resolve Studio, а для бесплатной версии нужен мост, причём по README в версии 21.1 скриптинг на Python перенесён в Studio. Для Premiere Pro есть сервер hetpatel-11/Adobe_Premiere_Pro_MCP через CEP-панель; проверен на macOS, с оговорками про субтитры и эффекты. Palmier Pro — монтажка для macOS 26 на Apple Silicon со встроенным MCP-сервером, который поднимается при запуске приложения; сборки после v0.7.6 проприетарные. Все три проекта сделаны сообществом, а не Blackmagic или Adobe.

**ChatCut.** [Плагин ChatCut для Claude Code](https://www.chatcut.io/claude-code-plugin) загружает ваш материал в облако ChatCut и монтирует там: обрезка, шумоподавление, субтитры, графика, сгенерированные перебивки, озвучка, таймлайн в браузере. Платить придётся дважды: рассуждения Claude идут из вашей подписки или API, а сам ChatCut стоит $25, $45, $88 или $160 в месяц за 100–800 кредитов. Бесплатного тарифа на этой странице нет.

Графику поверх смонтированного ролика добавляют отдельно. HyperFrames от HeyGen (Apache-2.0) превращает HTML, CSS и анимации GSAP в MP4 через headless Chrome и FFmpeg, требует Node.js 22+ и ставится в Claude Code командами `claude plugin marketplace add heygen-com/hyperframes` и `claude plugin install hyperframes@hyperframes`. Remotion бесплатен для частных лиц, некоммерческих организаций и компаний до трёх сотрудников; остальным нужна лицензия за $25 в месяц на место или $0,01 за рендер с минимумом $100 в месяц. Ни один из них материал не режет. Набор claude-code-video-toolkit тоже в основном про новое видео: на готовом материале он умеет переозвучку, музыку, обрезку, склейку и кроп в 1080×1920, но не вырезает паузы и не делает субтитры. Если вам нужен ролик, собранный кодом с нуля, это другая задача — см. [генерацию видео в Claude Opus 5.5: от кода сцены до MP4](https://blog.laozhang.ai/ru/posts/claude-opus-5-5-video-generation). Claude Motion в claude.ai анимирует текст, графики и изображения, но загруженный материал не монтирует; про него — в статье [Claude Dashboards и Motion: как пользоваться и где их включить](https://blog.laozhang.ai/ru/posts/claude-dashboards-and-motion).

## Какой маршрут выбрать под ваш материал и бюджет

Выбор определяют три вопроса: есть ли в материале дубли, где вы хотите доделывать монтаж и готовы ли отправлять запись в облако.

- **Говорящая голова или туториал, нужен готовый файл, монтажку открывать не хочется.** Свой скрипт на faster-whisper и ffmpeg, если готовы потратить вечер на настройку и всё должно остаться на компьютере. video-use — если устраивает облачная расшифровка ElevenLabs и хочется готовых цветокора, графики и самопроверки.
- **Дублей нет, нужно только убрать паузы (эфир, лекция, запись экрана).** auto-editor: бесплатно, без расшифровки, за секунды.
- **Хотите доделать в Premiere, DaVinci Resolve или Final Cut.** auto-editor с экспортом таймлайна, если хватает резки по тишине; ButterCut, если нужен отбор дублей по смыслу.
- **Вы уже работаете в Resolve Studio или Premiere и хотите снять рутину.** MCP-сервер для монтажки: маркеры, сборка, рендер, пакетные операции.
- **Ничего не хочется ставить, бюджет есть, загружать материал можно.** ChatCut.
- **Мультикамера, перебивки по смыслу, цветокор.** Пока руками; Claude Code здесь в лучшем случае собирает черновик.

Повторяющиеся правила (где резать, какой размер субтитров, сколько зумов максимум) удобно оформить как собственный скилл — чем скиллы отличаются от хуков и слэш-команд, объясняет статья [Claude Code: чем отличаются hooks, skills и слэш-команды](https://blog.laozhang.ai/ru/posts/claude-code-hooks-slash-commands-skills). Готовые варианты собраны в подборке [лучших скиллов для Claude Code](https://blog.laozhang.ai/ru/posts/claude-code-best-skills).

## Цена часа материала: центы за расшифровку, доллары за кадры

Главная статья расходов — токены, которые Claude читает. Расшифровка часа материала обходится в десятки центов по цене API, а кадры того же часа в 1080p — почти в $39. Поэтому все работающие маршруты построены на тексте.

Формула стоимости изображения из документации Anthropic: ⌈ширина / 28⌉ × ⌈высота / 28⌉ токенов. Для моделей Claude 4.7 и новее действует уровень высокого разрешения, и кадр 1920×1080 не уменьшается: 2 691 токен. Кадр, заранее уменьшенный до 640×360, стоит 23 × 13 = 299 токенов. Для расшифровки допущения такие: около 150 слов в минуту, JSON с таймкодом каждого слова — около 57 байт на слово (измерено на тестовом файле), компактная строка «начало конец слово» — около 20 байт, примерно 4 символа на токен. Цена ввода Opus 5.5 по API — $4 за миллион токенов.

| Что получает Claude | 10 минут материала | 1 час материала |
| --- | --- | --- |
| Кадр 1080p каждую секунду | 600 × 2 691 ≈ 1,61 млн токенов ≈ $6,46 | 3 600 × 2 691 ≈ 9,69 млн токенов ≈ $38,75 |
| Кадр 640×360 каждую секунду | 600 × 299 ≈ 179 тыс. токенов ≈ $0,72 | 3 600 × 299 ≈ 1,08 млн токенов ≈ $4,31 |
| Расшифровка, JSON по словам | ≈ 86 КБ ≈ 21 тыс. токенов ≈ $0,08 | ≈ 513 КБ ≈ 128 тыс. токенов ≈ $0,51 |
| Расшифровка, компактный формат | ≈ 30 КБ ≈ 7,5 тыс. токенов ≈ $0,03 | ≈ 180 КБ ≈ 45 тыс. токенов ≈ $0,18 |

Это расчёт, а не счёт. Реальная сессия Claude Code добавляет системный промпт, описания инструментов и историю диалога, а ответ со списком резов — это ещё и выходные токены: около 2 тысяч токенов по $20 за миллион дают примерно $0,04. Правило «4 символа на токен» — грубая оценка для английского текста; для русской расшифровки оно не проверялось, поэтому цифры стоит читать как порядок величины. Отправить кадры целого часа одним запросом всё равно не получится: у большинства моделей лимит — 600 изображений на запрос.

На подписке Pro или Max эти токены — не счёт, а расход лимитов. Чем длиннее материал, тем больше расход: корейский блог Heimdex 5 августа 2026 года предупреждал, что длинные записи могут исчерпать лимит целиком. Если квота уходит заметно быстрее обычного, пригодится разбор [аномального расхода квоты Claude Code Max](https://blog.laozhang.ai/ru/posts/claude-code-max-quota-consumption).

Остальные расходы зависят от маршрута:

- **Локальный Whisper и auto-editor** — без поминутной оплаты, платите временем процессора.
- **ElevenLabs Scribe v2 для video-use** — $0,22 за час аудио на любом тарифе: восемь часов исходников ≈ $1,76.
- **ChatCut** — от $25 в месяц сверх Claude.
- **Remotion для команды от четырёх человек** — от $25 в месяц за место.

Цены указаны в долларах, как на страницах сервисов, по состоянию на 15 октября 2026 года (цены Claude API — на 10 октября 2026 года).

## Первый монтаж на своём компьютере: Whisper, список резов и ffmpeg

Ниже — бесплатный по расшифровке маршрут в том виде, в каком он прошёл тестовый прогон 15 октября 2026 года. Условия прогона: сессия Claude Code с моделью Opus 5.5 на Mac с Apple M4 и macOS 26.1, ffmpeg из Homebrew. Тестовый ролик синтетический: 32,59 секунды 1080p при 30 кадрах в секунду, английская речь голосом macOS `say` поверх тестовой картинки ffmpeg. В ролике есть три секунды тишины в начале, длинные паузы и один неудачный дубль («…Um, wait, let me say that again.»), после которого фраза повторяется чисто. Это один прогон на одном компьютере: о реальных записях, шуме, акцентах, нескольких спикерах и длинном материале он ничего не говорит. Русская речь в прогоне не участвовала, так что и о качестве её расшифровки выводов нет.

Если Claude Code ещё не установлен, начните с [руководства по установке Claude Code для всех платформ](https://blog.laozhang.ai/ru/posts/claude-code-install). Все шаги можно попросить выполнить самого Claude Code: он создаст файлы, запустит команды и покажет вывод.

### Шаг 1. Расшифровка с таймкодами слов через faster-whisper

```bash
python3 -m venv venv
./venv/bin/pip install faster-whisper "av<19"
```

Ограничение `"av<19"` нужно: на 15 октября 2026 года без него pip ставил PyAV 19, и faster-whisper 1.2.1 падал при расшифровке (подробности в разделе об ошибках).

```python
"""Шаг 1: расшифровка с таймкодами слов (локально, без API-ключа)."""
import json
import sys
import time

from faster_whisper import WhisperModel

src = sys.argv[1]
model_name = sys.argv[2] if len(sys.argv) > 2 else "base.en"

t0 = time.time()
model = WhisperModel(model_name, device="cpu", compute_type="int8")
segments, info = model.transcribe(src, word_timestamps=True, vad_filter=False)
words = []
for seg in segments:
    for w in seg.words:
        words.append({"start": round(w.start, 2), "end": round(w.end, 2), "word": w.word.strip()})
json.dump(words, open("words.json", "w"), indent=1)
print(f"model={model_name} words={len(words)} audio={info.duration:.1f}s elapsed={time.time()-t0:.1f}s")
```

Запуск: `./venv/bin/python transcribe.py talk.mp4`. В тестовом прогоне модель `base.en` на процессоре в режиме int8 выдала 57 слов за 3,0 секунды вместе с загрузкой модели в память; саму модель (около 141 МБ) faster-whisper скачивает при первом запуске.

Модели с суффиксом `.en` — англоязычные версии Whisper. Для русской речи нужна многоязычная модель (`small`, `medium`, `turbo` и другие без `.en`) и параметр `language="ru"` в вызове `transcribe()`. Насколько хорошо она расшифрует именно ваш материал, придётся проверить на нём самом.

### Шаг 2. Claude решает, что вырезать, и пишет edl.json

Это единственный шаг, где нужна модель. Пример запроса к Claude Code:

```text
Прочитай words.json — это расшифровка talk.mp4 с таймкодами слов.
1. Если фраза повторяется, оставь последний полный дубль, неудачные убери.
2. Убери тишину в начале и сократи длинные паузы.
3. Запиши edl.json: список отрезков исходника, которые оставляем.
4. Прогони ffmpeg silencedetect и сдвинь каждую границу отрезка в ближайшую тишину.
5. Ничего не рендерь, пока я не посмотрю список.
```

В тестовом прогоне Claude прочитал words.json, нашёл повтор фразы «First, we cut out the long pauses» и оставил четыре отрезка: без вступительной тишины, без неудачного дубля, с сокращёнными паузами.

```json
[{"start": 2.92, "end": 6.51}, {"start": 14.83, "end": 18.31}, {"start": 20.66, "end": 24.83}, {"start": 25.89, "end": 30.14}]
```

Это вторая версия списка. Первая, построенная только по таймкодам Whisper, обрезала конец последнего слова: Whisper отметил конец «platforms.» на 29,50 с, а речь на самом деле шла до 30,04 с, и повторная расшифровка услышала «platform.». После того как каждую границу сдвинули к краю тишины по ffmpeg (±0,1 с), слово сохранилось. Границы тишины дала команда:

```bash
ffmpeg -i talk.mp4 -af silencedetect=noise=-40dB:d=0.3 -f null -
```

### Шаг 3. Склейка одной командой ffmpeg и субтитры по новому таймлайну

Скрипт собирает один граф фильтров ffmpeg: для каждого отрезка `trim` и `atrim`, фейды звука по 30 мс на краях, затем `concat`. Заодно он переносит слова на новый таймлайн и группирует их по 2–3 в строку субтитров.

```python
"""Шаг 3: список отрезков (edl.json) -> final.mp4 + final.srt."""
import json
import subprocess
import sys

src = sys.argv[1]
edl = json.load(open("edl.json"))
words = json.load(open("words.json"))
FADE = 0.03

# 1) резка и склейка одним графом фильтров
parts, labels = [], []
for i, k in enumerate(edl):
    d = k["end"] - k["start"]
    parts.append(f"[0:v]trim={k['start']}:{k['end']},setpts=PTS-STARTPTS[v{i}]")
    parts.append(
        f"[0:a]atrim={k['start']}:{k['end']},asetpts=PTS-STARTPTS,"
        f"afade=t=in:d={FADE},afade=t=out:st={d - FADE:.3f}:d={FADE}[a{i}]"
    )
    labels.append(f"[v{i}][a{i}]")
graph = ";".join(parts) + ";" + "".join(labels) + f"concat=n={len(edl)}:v=1:a=1[v][a]"
subprocess.run(
    ["ffmpeg", "-v", "error", "-y", "-i", src, "-filter_complex", graph, "-map", "[v]", "-map", "[a]",
     "-c:v", "libx264", "-crf", "20", "-preset", "veryfast", "-c:a", "aac", "-b:a", "160k", "final.mp4"],
    check=True,
)

# 2) перенос слов на новый таймлайн: слово остаётся, если пересекается с отрезком,
# его время обрезается по границам отрезка (границы Whisper плавают на сотни мс)
kept = []
for w in words:
    offset = 0.0
    for k in edl:
        overlap = min(w["end"], k["end"]) - max(w["start"], k["start"])
        if overlap > 0:
            s = max(w["start"], k["start"]) - k["start"] + offset
            e = min(w["end"], k["end"]) - k["start"] + offset
            kept.append({"start": s, "end": e, "word": w["word"]})
            break
        offset += k["end"] - k["start"]

def ts(t):
    h, rem = divmod(t, 3600)
    m, s = divmod(rem, 60)
    return f"{int(h):02d}:{int(m):02d}:{int(s):02d},{int(round((s % 1) * 1000)):03d}"

cues, chunk = [], []
for w in kept:
    chunk.append(w)
    if len(chunk) == 3 or w["word"].endswith((".", ",", "?", "!")):
        cues.append(chunk)
        chunk = []
if chunk:
    cues.append(chunk)
with open("final.srt", "w") as f:
    for n, c in enumerate(cues, 1):
        text = " ".join(x["word"] for x in c)
        f.write(f"{n}\n{ts(c[0]['start'])} --> {ts(c[-1]['end'])}\n{text}\n\n")
print(f"segments={len(edl)} kept_words={len(kept)}/{len(words)} cues={len(cues)}")
```

Запуск: `./venv/bin/python render.py talk.mp4`. В тестовом прогоне рендер занял около 1,5 секунды и дал ролик длиной 15,53 с вместо 32,59 с. Повторная расшифровка результата показала весь чистый текст без неудачного дубля, в субтитры попали 43 слова из 57 (выпавшие 14 — ровно неудачный дубль), строк субтитров получилось 18. Первая версия скрипта оставляла только слова, целиком лежащие внутри отрезка, и после сдвига границ теряла, например, «Hi,» — отсюда проверка на пересечение с обрезкой времени.

### Шаг 4. Мягкие и вшитые субтитры, вертикальная версия 9:16

Мягкие субтитры (отдельная дорожка, зритель включает её сам) работают с обычным ffmpeg из Homebrew:

```bash
ffmpeg -i final.mp4 -i final.srt -map 0 -map 1 -c copy -c:s mov_text -metadata:s:s:0 language=eng final_softsubs.mp4
```

Для русских субтитров поставьте `language=rus`. Многие соцсети встроенную дорожку игнорируют — туда загружайте .srt отдельно.

Вшитые субтитры требуют фильтра `subtitles`, а в обычной сборке ffmpeg из Homebrew его нет. В тестовом прогоне помог пакет ffmpeg-full: `brew install ffmpeg-full` (установка заняла 2 мин 05 с). Он keg-only, то есть не попадает в PATH, поэтому вызывать его нужно по полному пути:

```bash
/opt/homebrew/opt/ffmpeg-full/bin/ffmpeg -i final.mp4 -vf "subtitles=final.srt:force_style='FontName=Helvetica,FontSize=22,Outline=2'" -c:v libx264 -crf 20 -preset veryfast -c:a copy final_burned.mp4
```

Вертикальная версия 1080×1920 с субтитрами — тот же вызов с другим фильтром:

```bash
/opt/homebrew/opt/ffmpeg-full/bin/ffmpeg -i final.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920,subtitles=final.srt:force_style='FontName=Helvetica,FontSize=14,MarginV=60,Outline=2'" -c:v libx264 -crf 20 -preset veryfast -c:a copy final_vertical.mp4
```

Вшивание заняло 1,67 с, вертикальная версия — 1,39 с. Кадр на 1,2 секунды результата показал таймкод исходника 00:00:03.800 и субтитр «this is a» — значит, и резы, и субтитры легли на свои места. Helvetica — шрифт macOS; на других системах укажите другой шрифт с кириллицей. Центральный кроп годится, только если спикер стоит по центру: следить за лицом он не умеет, а вариант с отслеживанием лица в прогоне не проверялся.

## Ошибки первого запуска: PyAV 19, обрезанные слова, нет subtitles

Все сбои ниже возникли в одном тестовом прогоне на macOS с Homebrew. На другой системе и с другими версиями набор будет иным, но симптомы и ход исправления пригодятся.

| Что вы видите | Причина | Что помогло |
| --- | --- | --- |
| `TypeError: open() got an unexpected keyword argument 'metadata_errors'` при расшифровке | `pip install faster-whisper` поставил PyAV 19.0.1 (вышел 3 октября 2026 года), с которым faster-whisper 1.2.1 не работает; причина выведена из трассировки | `pip install faster-whisper "av<19"` — ставится PyAV 18.1.0 |
| Последнее слово обрезано: «platforms» превратилось в «platform» | Границы слов Whisper в этом образце сдвинуты до ~0,5 с | Сдвинуть каждую границу отрезка к тишине по `silencedetect` (±0,1 с) |
| `No such filter: 'subtitles'` или `No option name near 'final.srt'` / `Error parsing filterchain` | В формуле `ffmpeg` Homebrew (8.0.1_2 и 9.0.2) нет libass, а с ней и фильтров `subtitles`, `ass`, `drawtext` | `brew install ffmpeg-full` для вшитых субтитров или мягкие субтитры `-c:s mov_text` |
| `dyld: Library not loaded: /opt/homebrew/opt/libvpx/lib/libvpx.11.dylib` у старого ffmpeg | Установка ffmpeg-full обновила общую библиотеку libvpx с 1.15.2 до 1.17.0, а устаревший ffmpeg 8.0.1_2 был собран под старую | `brew upgrade ffmpeg` (8 секунд), после чего `brew linkage --test` пропавших библиотек не нашёл |
| В субтитрах «clog code» вместо «Claude Code» | Модель `small.en` ослышалась, хотя `base.en` на той же записи распознала верно | Вычитать имена собственные или передать подсказку (`--prompt` в `auto-editor whisper`) |

Проверить, есть ли в вашей сборке нужные фильтры, можно до начала работы: `ffmpeg -filters | grep subtitles`. Пустой вывод означает, что вшивать субтитры этой сборкой не получится. На Linux и Windows состав сборок другой, поэтому проверка та же. Ошибка с PyAV могла быть исправлена в более поздних версиях faster-whisper; если `pip` ставит версию новее 1.2.1, сначала попробуйте без ограничения.

Сдвиг границ слов — не особенность одного прогона. Алехандро де Блас из Aducti в статье от 1 сентября 2026 года описывает, что Whisper приклеивает предшествующую тишину к первому слову сегмента (около 0,5 с), и тоже сверяет резы с `silencedetect`. В SKILL.md video-use сказано, что таймкоды Scribe плавают на 50–100 мс, поэтому там рекомендуют запас 30–200 мс и резать в паузах от 400 мс.

## auto-editor: тишину режет, дубли оставляет, таймлайн отдаёт в DaVinci

auto-editor — самый быстрый способ убрать тишину, но дубли он не видит. На том же тестовом ролике версия 31.7.2 из Homebrew отработала за 3,9 секунды:

```bash
auto-editor raw/talk.mp4 --margin 0.2s -o out.mp4 --no-open
```

Результат — 21,31 с вместо 15,53 с у варианта с расшифровкой. Паузы исчезли, а неудачный дубль остался. Версия 29.3.1 с PyPI повела себя так же, и в выгруженном ею таймлайне FCPXML неудачный дубль виден как клип на 152 кадра с отметки 8,8 с. Громкая оговорка для детектора тишины ничем не отличается от удачной фразы — понять, что дубль неудачный, можно только по тексту.

![Тестовый ролик 32,59 с: auto-editor убрал паузы и оставил неудачный дубль (21,31 с), монтаж по расшифровке оставил четыре отрезка (15,53 с)](https://blog.laozhang.ai/posts/ru/claude-code-video-editing/img/auto-editor-vs-transcript-cut.webp)

Зато auto-editor удобен как первый проход перед ручной доводкой. Таймлайн выгружается ключом `--export premiere`, `--export resolve`, `--export final-cut-pro`, `--export shotcut` или `--export kdenlive`; в тестовом прогоне `--export resolve` (версия 29.3.1) записал таймлайн FCPXML 1.11 со ссылками на исходные файлы, который можно открыть в монтажке и доделать.

У версии 31.7.2 есть и подкоманда для расшифровки без Python:

```bash
auto-editor whisper talk.mp4 ggml-base.en.bin -f srt --prompt "Claude Code" -o out.srt
```

Модель ggml-base.en.bin (148 МБ) скачивается из репозитория whisper.cpp на Hugging Face. С подсказкой `--prompt` название «Claude Code» распознано верно, неудачный дубль виден отдельной строкой, работа заняла 12,2 с. Но у каждой строки конец равен началу плюс 4–5 секунд, поэтому как точки реза эти времена не годятся — нужны `silencedetect` или пословная расшифровка. Встроенный фильтр `whisper` в ffmpeg-full за 12,95 с тоже записал SRT, но без подсказки разбил «Claude.» и «code.» на две строки и начал нумерацию с 0, а не с 1. Если площадка отклонит такой файл, перенумеруйте строки (на площадках это не проверялось).

## Что проверить глазами перед публикацией: дубли, резы, имена, кроп

Самопроверка video-use и повторная расшифровка ловят технические ошибки, но решение «можно публиковать» остаётся за вами. Перед загрузкой пройдитесь по списку:

- **Правильный дубль.** Послушайте каждое место, где фраза повторялась: оставлен ли лучший вариант, а не просто последний.
- **Концы слов на резах.** Прослушайте каждую склейку; обрезанное окончание — типичный след неточных таймкодов.
- **Имена собственные и термины в субтитрах.** Названия продуктов, фамилии, английские слова в русской речи.
- **Шрифт и кириллица.** video-use предупреждает, что ошибки шрифтов проходят молча, без сообщений. Посмотрите кадр с русскими субтитрами.
- **Субтитры не перекрыты графикой.** По тому же SKILL.md субтитры накладываются последними, иначе оверлеи их закрывают.
- **Лицо в вертикальной версии.** Центральный кроп режет спикера, который сидит сбоку или двигается.
- **Формат для площадки.** Мягкие субтитры многие соцсети не показывают; SRT с нумерацией от 0 перенумеруйте. Aducti отмечает, что iPhone не воспроизводит HEVC с тегом `hev1` и нужен `hvc1`.
- **Громкость.** В video-use ориентир −14 LUFS и пиковый уровень не выше −1 dBTP.
- **Графика после перемонтажа.** Heimdex предупреждает: если поменять резы, тайминги наложенной графики съезжают.

## Вопросы о монтаже видео через Claude Code

### Можно ли монтировать видео в Claude Code бесплатно?

Не полностью. Сам Claude Code требует платного плана Claude или оплаты API. Бесплатными могут быть все остальные части: ffmpeg, faster-whisper, whisper.cpp и auto-editor работают локально без поминутной оплаты. Платные дополнения зависят от маршрута: video-use использует ElevenLabs Scribe ($0,22 за час аудио сверх бесплатных часов), ChatCut — подписку от $25 в месяц.

### Как монтировать видео в Claude на русском языке?

Инструкции Claude Code можно давать по-русски: запрос из шага 2 подойдёт и в таком виде. Отдельный вопрос — расшифровка русской речи: для неё нужна многоязычная модель Whisper (без суффикса `.en`) с параметром `language="ru"` или облачный сервис. Тестовый прогон выше шёл на английской речи, поэтому качество русской расшифровки проверьте на своём материале и обязательно вычитайте имена в субтитрах.

### Чем монтаж в Claude Code отличается от генерации видео и Remotion?

Монтаж работает с уже снятым материалом: режет, склеивает, добавляет субтитры. Генерация создаёт новое видео — кодом, как Remotion и HyperFrames, или видеомоделями. Remotion и HyperFrames в монтажном маршруте нужны только для графики поверх ролика: титров, плашек, диаграмм. Сам материал они не режут.

## Источники

Внешние страницы, на которые ссылается это руководство, в порядке упоминания. Последнее обновление: 2026-10-15.

- [списке стран и регионов, где Anthropic поддерживает свои сервисы](https://www.anthropic.com/supported-countries) (anthropic.com)
- [документации Anthropic по работе с изображениями](https://platform.claude.com/docs/en/build-with-claude/vision) (platform.claude.com)
- [справочнике инструментов Claude Code](https://code.claude.com/docs/en/tools-reference) (code.claude.com)
- [API ElevenLabs Scribe](https://elevenlabs.io/pricing/api) (elevenlabs.io)
- [barefootford/buttercut](https://github.com/barefootford/buttercut) (github.com)
- [davinci-resolve-mcp](https://github.com/samuelgursky/davinci-resolve-mcp) (github.com)
- [Плагин ChatCut для Claude Code](https://www.chatcut.io/claude-code-plugin) (chatcut.io)
