ИИ-конвертер кулинарных видео в рецепты
RecipeReel превращает кулинарное или обучающее видео в один аккуратный структурированный рецепт. Вставьте ссылку на YouTube, TikTok или Instagram Reels либо загрузите файл. На выходе вы получите:
- ингредиенты с количеством и единицами измерения
- шаги по порядку, у каждого — секунда, на которой он начинается в видео
- время подготовки, приготовления и общее время
- кухонный инвентарь и советы
- примерную пищевую ценность
Результат выдаётся в виде JSON или в виде JSON-LD по schema.org/Recipe, который кулинарный сайт может сразу опубликовать.
Мы сделали его за три дня для трека 3 хакатона AMD Developer Hackathon: ACT II. Код распространяется по лицензии MIT и открыт на GitHub. Живое демо прогоняет весь пайплайн в режиме моков.
Ключевые возможности
- Слияние расшифровки и текста на экране — из речи берутся порядок шагов и техника. Компьютерное зрение и распознавание текста на ключевых кадрах дают точные количества, которые авторы показывают, но не произносят.
- Шаги с таймкодами — у каждого шага сохраняется время начала, поэтому веб-приложение может перемотать встроенное видео на нужный момент.
- Происхождение у каждого поля — каждый ингредиент помечен как прозвучавший, показанный на экране или выведенный из контекста. Неизвестное количество остаётся пустым (null), а не выдумывается.
- Экспорт в schema.org Recipe — отдельный эндпоинт возвращает JSON-LD с ингредиентами, инструкциями
HowToStep, временем, инвентарём и пищевой ценностью. - Ссылка или загрузка — видео по ссылкам скачиваются через yt-dlp, а загруженные файлы проходят через тот же пайплайн.
- Прогресс в реальном времени — задачи выполняются асинхронно, а каждый этап транслируется через Server-Sent Events.
- Защита от ботов без сторонних сервисов — эндпоинты извлечения защищает собственная капча Altcha на основе proof-of-work. Её задания подписаны, имеют срок действия и срабатывают только один раз.
Архитектура и технологический стек
Пайплайн обработки
Каждая задача проходит восемь этапов:
- Принять видео.
- Извлечь аудио 16 кГц с помощью FFmpeg.
- Выбрать около 24 ключевых кадров с таймкодами.
- Расшифровать аудио через Whisper-large-v3.
- Прочитать кадры с помощью Qwen2.5-VL.
- Собрать один рецепт с помощью Gemma при температуре 0 строго по JSON-схеме.
- Проверить результат, привести единицы измерения к единому виду и убрать дубли ингредиентов.
- Сохранить рецепт в SQLite.
Модели и железо
Речь и зрение — тяжёлые этапы, которые упираются в пропускную способность, поэтому они рассчитаны на GPU AMD Instinct MI300X через ROCm. PyTorch для ROCm выдаёт себя за CUDA, поэтому один и тот же код работает на CPU ноутбука, в CI и на GPU. Jupyter-ноутбук запускает обе модели на MI300X.
Синтез идёт через единый OpenAI-совместимый клиент со взаимозаменяемыми маршрутами: Gemma 4 в Google AI Studio, быстрая модель на Fireworks AI или Gemma, развёрнутая у себя через vLLM. Переключиться между ними — значит поменять конфигурацию. В одном проверенном сквозном прогоне на реальном YouTube Shorts кадры читала Gemini 2.5 Flash, а рецепт писала Gemma 4.
Как обойти блокировку YouTube в продакшене
Боевой сервер работает на IP-адресе дата-центра, и YouTube заблокировал с него скачивание. Мы протестировали прокси дата-центров и провайдерские прокси, а затем перевели загрузку с YouTube на внешний API для скачивания, оставив yt-dlp запасным вариантом. Сырые ошибки загрузчика заменены спокойным сообщением с предложением загрузить файл напрямую, поэтому сообщения о блокировке ботов никогда не доходят до пользователей.
Веб-приложение
Фронтенд — самодостаточное приложение на чистых HTML, CSS и JavaScript, которое раздаёт сам API. На десктопе — журнальная вёрстка, на телефонах — полноэкранная вёрстка в стиле приложения. В нём есть страница рецепта, режим готовки, библиотека с поиском и добавление по ссылке, которое запускает настоящую задачу извлечения.
Качество
Каждый этап — подключаемый провайдер с мок-реализацией, поэтому сервис запускается всегда. Режим моков гоняет настоящий код на встроенных фикстурах — для демо и CI. В наборе 24 проходящих теста, в комплекте — облегчённый Docker-образ и образ для ROCm.
Почему важны структурированные данные рецепта
Конвертер видео в рецепт полезен ровно настолько, насколько полезен его результат. Разметка schema.org Recipe позволяет страницам рецептов попадать в расширенные результаты Google для рецептов, и именно в таком виде данные могут принимать планировщики меню и интеграции с продуктовыми сервисами. Поэтому RecipeReel выдаёт стандартные структурированные данные, а не просто более аккуратную расшифровку.
Смежные работы
RecipeReel — часть нашей работы по внедрению ИИ и автоматизации. LectureLoom применяет тот же пайплайн к видеолекциям. Legible, Testify и Keystone появились на том же хакатоне.



