Всё чаще к нашим дизайнерам попадают слайды, сгенерированные AI. Обычно это HTML, который нужно превратить в редактируемую презентацию и доработать.
Мы посмотрели, как сегодня работают Claude Design, NotebookLM и другие инструменты, протестировали разные подходы и собрали пайплайн, который позволяет сохранить структуру слайда при конвертации.
Генерация
Вместо генерации «с нуля» мы даём модели брендбук, примеры слайдов и библиотеку HTML-компонентов — готовых карточек, таблиц, диаграмм, колонок, заголовков и других элементов.
Модель не придумывает новую вёрстку, а собирает слайд из этих «кирпичиков», сохраняя сетку и визуальную логику бренда. По нашим наблюдениям, лучше всего с такой задачей сейчас справляется Claude Opus.
Конвертация
Сам HTML дизайнерам не помогает — его нужно открыть в Keynote или PowerPoint и продолжить редактировать.
Ребята протестировали несколько готовых HTML → PPTX-конвертеров. Почти везде повторяются одни и те же проблемы: съезжают отступы, меняются переносы текста, пропадают скругления, нарушается порядок слоёв.
Из open source сервисов ближе всех к идеалу оказался html2pptx, но и его результат не всегда предсказуем.
Мы пошли другим путём
• открываем HTML в headless Chromium — в Python, например, playwright;
• забираем реальные координаты, размеры и computed styles элементов;
• раскладываем слайд на типы объектов: текст, формы, картинки, декоративные слои;
• собираем PPTX из редактируемых объектов;
• растрируем только то, что нельзя нормально выразить в OOXML.
Так в растр уходят только сложные SVG и визуальные эффекты, всё остальное остаётся редактируемым.
Самые мутные случаи
🟥 border-radius
Pill-кнопка не должна превращаться в эллипс. Таблетка, круг и скруглённый прямоугольник — это разные формы, и их нужно различать.
🟥 z-index
Слои нельзя сортировать только по числу z-index. Важен stacking context, порядок рендеринга и последовательность отрисовки элементов.
🟥 SVG и фильтры
Их лучше растрировать локально, а не превращать весь слайд в картинку.
🟥 текст
Chromium и Keynote по-разному рассчитывают переносы строк. Поэтому приходится контролировать line-height, paragraph spacing и ширину текстовых блоков.
🟥 шрифты
Просто положить TTF в PPTX недостаточно. Нужны явные line-height, paragraph spacing и небольшой запас по ширине текста.
Keynote ≠ PowerPoint
PowerPoint часто прощает то, что Keynote интерпретирует иначе: интервалы, порядок XML-элементов, язык текста, fallback-шрифты.
Поэтому лучше целиться не просто в «валидный PPTX», а в PPTX, который стабильно импортируется в Keynote.
В итоге всё работает: модель собирает черновик, конвертер сохраняет структуру, дизайнер финализирует результат. 😊
Автор этого поста, собственно и разработчик конвертера, Миша Мартьянов — NLP-инженер в R&D red_mad_robot.