26 801 UAH
6 ставок
ТЗ: Программа для автосборки видео (локальная, для личного использования)
Коротко
Программа на Python, запускаетсяу меня на ПК (Windows). Делает faceless-видео формата «закадровый голос + сменяющийся видеоряд из фото и клипов» — как исторические документалки на YouTube (референсы прикреплю отдельно).
Я ввожу тему → программа пишет сценарий, озвучивает, подбирает под каждый кусок текста видео/фото из бесплатных архивов, собирает → выдаёт готовый MP4.
Только для меня. Без сайта, без пользователей, без продажи.
Разделение ролей (важно понять)
Claude (Anthropic API) — «мозг»: пишет сценарий, делит на сцены, выбирает лучший кадр по смыслу. Работает только с текстом и картинками.
Код (ffmpeg/moviepy) — «руки»: ищет и качает файлы из архивов, режет, склеивает, накладывает звук, зум, переходы, экспортирует MP4. Claude видеофайлы НЕ монтирует — это делает код.
Как работает (по шагам)
1. Ввод. Простое окно: ввожу тему ролика, выбираю голос озвучки из списка (список голосов подтягивается из ElevenLabs по API). Жму «Создать». Второй режим — вставить готовый сценарий.
2. Сценарий. Claude пишет сценарий по теме заданной длины.
3. Разбивка на сцены. Claude делит сценарий на смысловые сцены (длина по смыслу, не фиксирована) и для каждой возвращает:
текст сцены;
тип визуала: видео или фото;
поисковый запросв двух форматах сразу (Claude отдаёт оба в одном ответе, лишних запросов и затрат нет):
развёрнутая фраза — для стоков (Pexels/Pixabay), напр. «18th century royal portrait, dramatic turning point»;
краткие ключевые термины/имена — для архивов (Wikimedia, LoC, Archive.org, Europeana), напр. «Marie Antoinette portrait». Код под каждый источник берёт подходящий формат. Claude генерирует запрос по СМЫСЛУ куска и контексту всего видео — даже для абстрактных кусков без явного объекта. Пустых кусков «без запроса» не бывает;
highlight: true/false + оценка важности 1-10 (для интро-тизера).
Смысловая сцена ≠ кадр. Claude делит текст по СМЫСЛУ (чтобы запрос был осмысленный). Код затем нарезает это на визуальные кадры 4-6 сек, подгоняя тайминг под озвучку:
короткая сцена (≤6 сек) → 1 кадр;
длинная сцена (напр. 12 сек) → 2-3 кадра по 4-6 сек, под каждый — РАЗНЫЙ, но близкий по смыслу визуал (та же тема, другие ракурсы/кадры), чтобы мысль не висела на одной статичной картинке. Правило 4-6 сек относится к кадру, а не к смысловой разбивке — они на разных уровнях и не конфликтуют.
4. Озвучка. Текст → ElevenLabs API выбранным голосом → аудио. Под длину аудио каждой сцены режется видеоряд.
5. Подбор кадра (ключевой процесс, см. раздел ниже).
6. Сборка через ffmpeg/moviepy: клипы/фото под тайминг озвучки, фото с зумом (эффект Кена Бёрнса), простые переходы, голос поверх. Выход:MP4 1920×1080.
Подбор кадра (как выбирается видео/фото под сцену)
Поиск во всех источниках сразу по запросу сцены. Под каждый источник берётся подходящий формат запроса (см. разбивку выше): для архивов — краткие термины/имена, для стоков — развёрнутая фраза. Цель — попадать в тему, а не в случайную картинку.
Код отбирает топ-5 кандидатов из всей выдачи по баллам (scorer, см. правила ниже).
Для видео код извлекает 2-3 стоп-кадра из разных точек клипа (начало/середина/конец) — чтобы Claude оценил клип по кадрам.
Claude выбирает лучший из 5 кандидатов по смыслу (реально ли на кадре нужное, подходит ли по настроению сцены).
Лимит 3 шага на сцену: нашли подходящее — стоп; если после проверки ничего не подошло — код берёт более общее фото по упрощённому запросу (оно точно найдётся) с усиленным движением.
Проверяются ВСЕ кадры (разница в цене копеечная, а качество важнее).
Правила отбора кандидатов (scorer) — чтобы брать хорошее, а не мусор
Релевантность запросу (позиция в выдаче источника) — главный вес.
Не использовалось раньше — проверка по локальной базе использованного, не повторять клипы в моих видео.
Формат — горизонтальные 16:9 в приоритет.
Качество — ПО-РАЗНОМУ для типа источника:
современные стоки (Pexels/Pixabay) — отсекать мыло, требовать HD;
исторические архивы — порог низкий/выключен, НЕ терять плёночные и хроникальные кадры, даже низкого разрешения (их ценность в самом материале, а не в чёткости).
Длина клипа (для видео) — хватает ли покрыть сцену.
Разнообразие — не брать много одинаковых кадров подряд из одного источника, перемешивать источники (чтобы видеоряд был разнообразным, а не из одного архива).
Уникальность (меньше совпадений с чужими видео)
Рандомизация выдачи (случайный из топ-N, не всегда первый), глубина поиска, локальная база использованного (не повторять клипы в моих видео), опционально — лёгкая обработка клипа (кроп/зеркало/скорость).Когда неиспользованные кадры под запрос кончились: код сначала расширяет поиск (другие источники, глубже в выдачу, переформулировка запроса). Если и это исчерпано — разрешает повтор ранее использованных по приоритету: сначала те, что брались давно (не в последних видео), с обязательной обработкой для визуального отличия. Видео не должно вставать из-за нехватки материала.
Источники (все бесплатные, с API)
Современное видео+фото: Pexels, Pixabay. Историческое / архивное (public domain): Wikimedia Commons, Archive.org, Library of Congress, Europeana, NASA, Smithsonian Open Access, Flickr Commons,openverse.
Каждый источник — отдельный модуль, легко добавить новый. Приоритет источников зависит от темы (историческая → сначала архивы; современная → сначала стоки), настраивается в конфиге. Только public domain / свободные лицензии с правом коммерческого использования. Никакого парсинга чужих YouTube/сайтов, кусков фильмов, картинок «из гугла».
Правила видеоряда
Интро-тизер (первые 60 сек): нарезка самых эффектных кадров из всего ролика (сцены с наибольшей оценкой важности, где есть видео) под отдельный текст-вступление от Claude («в этом видео вы узнаете…»), кадры без пояснений — как интрига. Потом переход и основная часть.
Чередование: видео-вставка минимум каждые ~6 сек, нельзя много фото подряд.
Доля видео: не меньше ~40% времени — живые клипы, остальное — фото с движением.
Длина кадра: 4-6 сек. Не мельтешить, не держать статику долго.
Для чисто исторических тем, где видео нет — фото с усиленным движением (зум + панорама).
Опции (вкл/выкл в настройках)
Только фото — видео чисто из фото, без клипов. Каждое фото обязательно с движением (зум/ панорама) — статичных «мёртвых» кадров нет даже в этом режиме.
Без озвучки — видео собирается по тексту без генерации голоса (код не обращается к ElevenLabs). Иначе — озвучка делается автоматически.
Атмосферный оверлей (light leaks / dust & bokeh particles / film grain) — полупрозрачный слой с плавающими частицами/светом/лёгким туманом поверх видеоряда, чтобы кадры выглядели живыми. Установить 5-8 готовых оверлеев на выбор; регулировка прозрачности ползунком (0-100%); можно накладывать и на уже готовое видео отдельно. Бесплатные оверлеи: Pexels, Pixabay, Mixkit, Videezy.
Субтитры (вшить или отдельным .srt).
Обработка клипов для уникальности.
Разрешение/формат, длина видео, доля видео, глубина поиска, число кандидатов (по умолч. 5).
Экономия LLM (заложить по умолчанию)
Модели — Claude (Anthropic API), раздельно для двух задач, параметр в настройках:
проверка/выбор кадров (частая операция) →Claude Haiku — дешёвая, анализирует стоп-кадры (картинки), для оценки «подходит/нет» этого достаточно;
генерация сценария и разбивка (редкая операция) →Claude Sonnet — для качества текста. Один API-ключ Claude даёт доступ ко всем моделям (Haiku, Sonnet и др.) — отдельные подписки не нужны. Модель для каждой задачи меняется в настройках, без правки кода. Если модель не выбрана — используется модель по умолчанию (не ломается).
Картинки отправляются как превьюсреднего разрешения (~512-768px по длинной стороне) — достаточного, чтобы Claude уверенно распознал содержимое и оценил соответствие сцене. Не слать оригиналы в полном разрешении (лишние токены), но и НЕ уменьшать до потери деталей — приоритет у точности оценки, экономия вторична. Разрешение превью — параметр в настройках.
Число кандидатов на кадр — параметр (по умолчанию 5).
Управление местом на диске
После сборки все промежуточные файлы (скачанные клипы, временные куски) удаляются автоматически — остаётся только готовый MP4.
База использованного (список ID клипов) НЕ входит в автоочистку — это маленький текстовый файл, хранится постоянно. Чистятся только тяжёлые медиафайлы, не история использования.
Лимит на кэш (параметр, напр. 5 ГБ): при превышении удаляются самые старые файлы.
Папки для готовых видео и временных файлов задаю в настройках. Показ занятого места + кнопка «очистить кэш».
Технические требования
Python. Модульная структура (источники и LLM — сменные модули, чтобы легко заменить/добавить).
Все API-ключи вводятся через интерфейс (раздел «Настройки»), хранятся в конфиге, не в коде.
Простое окно (GUI — Tkinter/PyQt на выбор), запуск двойным кликом.
Вся работа — через интерфейс (кнопки, поля, ползунки), без редактирования кода.
README (установка, ключи, запуск), понятные логи, комментарии в коде.
Интерфейс (меню и управление)
Программа с боковым меню. Разделы:
Новое видео — режим «сгенерировать по теме» ИЛИ «вставить свой сценарий» (переключатель), выбор голоса, длины, опции, кнопка «Создать». Во время сборки — экран прогресса по шагам (сценарий → озвучка → подбор кадров → сборка).
Мои видео — список готовых роликов.
Голоса — список голосов из ElevenLabs.
Источники — список всех подключённых архивов: видно добавленные, можно включить/выключить каждый, задать приоритет, идобавить свой новый источник, если есть его API-ключ. Здесь же — ключи источников, где нужна регистрация (Pexels, Pixabay, Europeana).
Оверлеи — выбор атмосферного оверлея и прозрачности.
Настройки — раздел«API-ключи» (Claude, ElevenLabs и др. в одном месте), выбор моделей Claude, папки, разрешение/формат, лимит кэша.
Очистить кэш — освободить место.
Все ключи и настройки вводятся через интерфейс, не через файлы/код.
Передача результата
Весь исходный код в открытом виде (без обфускации) + собранная рабочая версия.
Я могу сам запустить из исходников по инструкции.
Код чистый и понятный, чтобылюбой другой программист мог продолжить.
Все права на код после оплаты — мои.
Что даю я
API-ключи (Claude, ElevenLabs и источники, где нужна регистрация). Платное оплачиваю сам.
Примеры видео-референсов и темы для тестов.
Приёмка (готово, если)
Запускаю → окно → ввожу тему, выбираю голос → «Создать» → получаю готовый MP4.
Видеоряд по смыслу текста, чередование видео/фото, интро-тизер 60 сек, озвучка поверх.
Работает минимум с 6 бесплатными источниками, поиск во всех сразу + отбор кандидатов.
Подбор кадра: топ-5 кандидатов от кода → выбор лучшего через Claude (для видео — по стоп-кадрам), лимит 3 шага.
Порог качества зависит от источника (архивы — не терять плёночны