Я знаю, что существует 100500 способов перекинуть картинку в готовую вёрстку.
Но когда у меня дошло до дела, результат оказался так себе.
То ли я криворукий, то ли все эти инструменты ещё далеки от совершенства.
В итоге понял, что мне проще накидать свой собственный велосипед — скрипт на Python (~200 строк).

Решил выложить, может, кому-то пригодится.

Скрипту можно скормить три скриншота сайта:

  • Десктоп-версия

  • Планшет

  • Мобильная версия

На выходе получим одну HTML-адаптивную вёрстку (десктоп, планшет, мобила) с использованием Tailwind CSS.

Результаты работы

Habr

Вот так скрипт отработал на хабре:

На вкус и цвет фломастеры разные, но по мне в tailwind Хабр становится красивее.


rbc.ru

Для теста ещё, РБК-инвестиции пробовал заскринить и получить HTML.


stackoverflow.com

https://codepen.io/Rilkener/pen/NPGyWeb

Как сделать скриншоты сайта

Быстро через DevTools:

  1. Десктоп: 1440×900 (viewport). Масштаб 100%

  2. Мобильный: Mobile S — 320 px

  3. Планшет: 768×1024 (iPad портрет)

CTRL + SHIFT + P внутри меню разработчика и дальше выбрать

Capture full size screenshot

Проверяйте скриншоты.

Если DevTools не справился — используйте плагины:

  • GoFullPage (Chrome/Opera/Edge) — делает полный скриншот всей страницы.

  • Fireshot — то же самое, но можно обрезать, выбрать область.

Установка и запуск

Зарегистрироваться на https://platform.openai.com/docs/overview и получить ключ API.

Далее

git clone https://github.com/Rilkener/screen2html.git
cd screen2html
pip install -r requirements.txt

Положите скриншоты в папку data/input/, например:

data/input/desktop.png

data/input/mobile.png

data/input/tablet.png

Запуск:

python screen2html.py data/input/desktop.png \
  --mobile data/input/mobile.png \
  --tablet data/input/tablet.png \
  --api-key 'YOUR_API_KEY' \
  --model gpt-5 \
 --out data/screen2html.html

Если все пройдет без ошибок скрипт отдаст готовый html.

Ссылка на гитхаб: https://github.com/Rilkener/screen2html

Работа с напильником

Модель будет пытаться подобрать стандартные цвета от tailwind в виде классов.
Если принципиально, чтобы цвета совпадали, то можно просто пробежаться
и заменить их таким образом: bg-[#ваш_hex], text-[#ваш_hex], border-[#ваш_hex].

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

Сколько берёт OpenAI за такое?

На 15 августа 2025 года за скрины Хабра с меня взяли $0.12, ну или около 9 руб. Делала это модель gpt-5. Если бы это была gpt-4, было бы ещё дешевле.

Я не пробовал жать и оптимизировать скриншоты, и не знаю, как модель при этом справится.

Если скрин весит, например, 1.5 MB, а после оптимизации станет 400 KB, то base64-строка уменьшится примерно в 3 раза → токенов уйдёт меньше.

Если не принципиален PNG (без альфа-канала, без идеальной чёткости), то можно перегонять в JPEG с качеством 85–90%. Визуально почти не заметно, а вес упадёт в 3–5 раз.

Теоретически, можно, наверное, и в 2 рубля уложиться.

Комментарии (5)


  1. whynothacked
    17.08.2025 20:23

    Да вроде бы особо ничего необычного, нет? GPT-Vision + ChatGPT + промпт


    1. Rilkener Автор
      17.08.2025 20:23

      Да, по сути всё сводится к GPT-Vision + текстовый промпт. Только я обернул это в готовый скрипт: автоматическая загрузка скринов, кодирование в base64, вызов API и сохранение адаптивного html на Tailwind. В итоге получается быстро перегонять любой сайт или даже дизайнерский PNG в адаптивную вёрстку. То есть идея простая, но пользоваться уже удобнее, чем делать всё вручную


  1. Rilkener Автор
    17.08.2025 20:23

    del


  1. domix32
    17.08.2025 20:23

    То ли я криворукий, то ли все эти инструменты ещё далеки от совершенства.

    вот что отсутствие "make no mistakes" делает. А пробовали промпт написать на английском?
    Вообще с одной стороны оно неплохо верстает простые штуки, но допиливание напильником в некоторых ситуациях занимает x3 времени, в сравнении с тем как если бы оно писалось вручную. Год спустя оно вероятно улучшилось, но сомневаюсь, что в достаточной мере.


    1. Rilkener Автор
      17.08.2025 20:23

      Да, пробовал. И даже на китайском )).

      Это один из вариантов, который я перебирал:

      https://github.com/leigest519/ScreenCoder/blob/main/html_generator.py

      Этот скрипт я как раз и писал с прицелом на то, чтобы сэкономить на черновой работе: быстро получить основу, а потом уже доводить руками. Полностью заменить верстальщика оно пока вряд ли сможет, но как стартовый инструмент экономит время. И под каждый отдельно взятый сайт можно промпт чуть менять и приближать к нужному результату.