Витрина из пересланных постов: объявление собирается само
Продавец уже публикует посты, так что заставлять его заполнять формы бессмысленно. Сделал витрину, которая понимает его пост: альбом склеивается в объявление, а опечатку в курсе разборщик чинит сам.
Коротко (TL;DR)
- Владелец пригоняет автомобили и уже публикует их постами в мессенджере. Нужна была витрина, где объявления заводит он сам — без разработчика и без сложной админки.
- Главное решение: он пересылает боту свой обычный пост с фотографиями, и объявление собирается само. Альбом из нескольких снимков склеивается в одно объявление, а не в несколько.
- MVP развёрнут и работает. До запуска не хватает токена бота и контактов владельца для кнопки связи, а демонстрационные объявления стоят с чужими фотографиями и подлежат замене.
Самое дорогое место в любой витрине — не код, а наполнение. Каталог можно сделать за неделю, а потом он месяцами стоит пустым, потому что заводить карточки некому. Расскажу, как этот вопрос решился в проекте про автомобили.
Задача
Владелец пригоняет машины и рассказывает о каждой постом в мессенджере: фотографии, цена, что по документам и срокам. Аудитория к такому формату привыкла, и он работает.
Проблема в другом: пост живёт в ленте один день. Через неделю найти машину невозможно, отфильтровать по марке нельзя, сравнить цены тоже. Нужна была витрина, которую владелец наполняет сам. Условие звучало прямо: без разработчика и без админки, в которой нужно разбираться.
Что получилось на витрине
Каталог сделан одной страницей, и эта же страница работает как мини-приложение внутри бота. Не две версии, а одна: поиск, фильтр по марке, сортировка по цене.
Карточка автомобиля — галерея снимков, цена «под ключ» с разбивкой и срок доставки. Разбивка важнее, чем кажется: покупатель видит стоимость в юанях, пошлину и оформление отдельными строками. Одна итоговая сумма без расшифровки всегда вызывает вопрос «а из чего она», и этот вопрос съедает первое сообщение в переписке.
Кнопка «Связаться» показывает только те каналы связи, которые заполнены. Пустых иконок, ведущих в никуда, на витрине нет. Рядом форма «перезвоните мне»: заявка падает владельцу прямо в бот, без почты и без панели, куда надо заходить.
Объявление собирается само
Это ядро проекта. Владелец пересылает боту свой пост с фотографиями — тот самый, который он и так написал бы, — и получает готовое объявление.
Разборщик читает текст и раскладывает его по полям: марка, модель, год, цена, срок. Фотографии из альбома собираются в одно объявление, а не превращаются в несколько пустых карточек с одним снимком в каждой. Это отдельная работа: мессенджер отдаёт альбом как пачку раздельных сообщений, и склеивать их приходится вручную по признакам.
Логика простая. Если человек уже умеет писать посты и делает это каждую неделю, дешевле научить систему понимать его посты, чем заставить его заполнять формы. Форма из двенадцати полей — это отказ от наполнения, растянутый во времени.
При этом разборщик не просто вынимает числа, а сверяет их между собой. В посте обычно есть стоимость в юанях, курс и итоговая сумма в рублях — три величины, связанные одним умножением.
На реальном посте это сразу и пригодилось: курс был написан с ошибкой, и расчёт по нему не сходился с указанной итоговой ценой. Система это заметила и подставила правильный курс, а не перенесла опечатку в карточку.
Мелочь, но показательная. Автоматическое наполнение без проверки просто переносит ошибки автора на витрину быстрее, чем он успевает их замечать.
Админка, которая открывается с телефона
Вторая половина решения — управление с того же устройства, с которого владелец публикует посты.
В админке загрузка фотографий, порядок снимков, выбор обложки и статусы: опубликовано, черновик, продано. Есть кнопка «заполнить из текста» — вставляешь пост в поле, и поля заполняются сами. Это тот же разборщик, только вызванный руками, когда пересылать пост целиком не хочется.
Вход с компьютера сделан по коду, который бот выдаёт по команде. Пароль придумывать и запоминать не нужно: попросил код в боте, ввёл, вошёл.
Оптимизация под телефон
Витрину смотрят с телефона, поэтому доводили именно телефонный вид. Ниже — что менялось и почему.
| Что менялось | Было и стало |
|---|---|
| Размер фотографий в галерее | 640 пикселей мылили, 1600 весили — остановились на 960 |
| Длина страницы автомобиля | короче на треть |
| Кнопки управления галереей | 32 → 40 пикселей |
| Снимки с телефона при загрузке | ужимаются до отправки, а не после |
| Проверка вёрстки | экран 390 на 844, светлая и тёмная тема |
Прогнаны проверки контраста и состояний кнопок. Две найденные ошибки исправлены. Отдельно скажу про размер фотографий: это компромисс, а не идеал. Меньший вариант заметно мылил на плотных экранах, больший тормозил загрузку на мобильном интернете, и 960 оказалось точкой, где и то и другое терпимо.
Кнопки галереи выросли с 32 до 40 пикселей по той же причине — 32 пикселя нормально выглядят на макете и плохо попадаются пальцем на ходу.
Стек и адрес
Внутри всё скромно: FastAPI и SQLite, веб-сервер Caddy с автоматическим сертификатом, службы systemd. Для витрины с десятками объявлений этого достаточно, а тяжёлая база и очереди на таком объёме только добавили бы точек отказа.
Домен покупать не стали. Адрес работает через сервис, который превращает IP-адрес сервера в имя с настоящим сертификатом. Для MVP этого хватает, а решение про домен можно принять позже — вместе с решением, как проект вообще называется.
Что осталось до запуска
MVP развёрнут и работает. Дальше нужны три вещи от владельца: токен бота, его контакты для кнопки связи и собственные фотографии вместо демонстрационных.
Последний пункт принципиальный. Сейчас в каталоге стоят объявления с чужими снимками — они нужны были, чтобы проверить вёрстку и разборщик на живом материале. Открывать витрину с ними нельзя, и это первое, что меняется при запуске.
Частые вопросы
Что будет, если пост написан не по шаблону?
Разборщик заполняет то, что нашёл, остальное оставляет пустым. Объявление создаётся в статусе черновика, владелец дописывает недостающее с телефона и публикует. Отказа не происходит, просто часть работы остаётся ручной.
Зачем витрина, если посты и так читают?
Пост живёт день, витрина — всё время, пока машина не продана. Плюс поиск, фильтр и сортировка по цене: в ленте это невозможно. Посты при этом никуда не деваются, они становятся входом на витрину.
Почему не сделали полноценную админку на компьютере?
Потому что владелец работает с телефона. Админка, ради которой надо садиться за компьютер, просто не используется, и каталог снова наполняет разработчик. Вход с компьютера есть, но он второстепенный.
SQLite выдержит?
На этом объёме — да, с запасом. Витрина читается гораздо чаще, чем пишется, а записей здесь десятки, не миллионы. Переезд на другую базу — задача на тот момент, когда появится реальная нагрузка, а не заранее.
Можно ли так наполнять не автомобили?
Да, подход не про машины, а про продавца, который уже публикует посты. Меняются поля, которые вынимает разборщик, и правила сверки чисел. Всё остальное — пересылка, склейка альбома, статусы — работает так же.
Коротко о главном
Если продавец уже пишет посты, самый дешёвый способ наполнить витрину — научить систему понимать эти посты. Не форма из десятка полей, а пересылка одного сообщения, после которой объявление собирается само.
Остальное подчинено тому же принципу: админка открывается с телефона, вход по коду из бота, заявки падают туда же в бот. Ни одного места, где владельцу пришлось бы менять свои привычки ради системы.
Если у вас есть канал с товарами и нет каталога — скорее всего, вам нужна не большая платформа, а перевод уже существующих постов в витрину. Опишите, как вы публикуете сейчас, и я скажу, что из этого разбирается автоматически. Напишите в Telegram, MAX или VK.
Что я делаю для бизнеса
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»
12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.
Готовы обсудить вашу задачу?
Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


