← Все работы УМНЫЙ МАГАЗИН nnj.moscow ↗ · t.me/nnjmarket ↗ ←02 / 07→EN

Цены и наличие
меняются сами

Интернет-магазин техники, сделанный с нуля, который не нужно обновлять руками. Поставщик выкладывает прайс в свой телеграм-канал — программа переносит его цены и наличие в канал магазина, уже с нашей наценкой и нашим текстом. Из канала магазина всё попадает на сайт: с фотографиями, карточками и корзиной. Заказ дальше ведётся сам: подтверждение, товарный чек, курьерское окно и просьба об отзыве.

Главная страница магазина NNJ.Moscow: новый iPhone 18 Pro от 125 500 ₽ и каталог разделов

Главная страница магазина · работающий сайт, можно открыть и проверить

Кому

Мой магазин техники в Москве: канал в Telegram и сайт

Что сделано

Прайс поставщика сам становится витриной с наценкой, заказ доходит до покупателя с чеком, цены сверяются с четырьмя конкурентами

Результат

2 100+ товаров без ручных правок, заказы с чеком и отзывом, покупатели приходят из поиска и ChatGPT

Ролик · 36 секунд, без звука · от прайса поставщика до товарного чека

Витрина,
которая всегда
отставала

Раньше цены и остатки менялись вручную. Поставщик присылал прайс, человек перебивал строки, прибавлял свою наценку, обновлял пост в канале и карточки на сайте. Цены у поставщика меняются часто, и каждая задержка стоила денег.

Если цена на витрине ниже закупки — продали себе в убыток. Если товара уже нет, а на сайте он есть — клиент недоволен, а доверие потерять проще, чем цену поправить.

Три шага
от прайса до витрины

Цены проходят путь из канала поставщика в наш канал, а оттуда — на сайт. На каждом шаге человек не нужен.

01Канал поставщикапрайс обычным текстом
→
02Канал магазинанаша наценка, наш текст
→
03Сайтфото, карточки, корзина
01

Канал поставщика

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

02

Канал магазина

Тот же прайс программа пересобирает и публикует в канале магазина — уже со своей наценкой на каждый товар, своим текстом и оформлением, без лишнего. Подписчики канала видят актуальные цены и наличие через несколько минут после поставщика.

03

Сайт

Из канала магазина товары попадают на сайт: к каждому подставляются фотографии нужного цвета, варианты памяти собираются в одну карточку, появляются поиск, сравнение и корзина. Цена и наличие на сайте и в канале всегда одинаковые — это один и тот же прайс.

Раздел iPhone 17 Pro на сайте: 51 предложение, фильтры по модели, памяти, цвету, SIM, стране и состоянию

Раздел iPhone 17 Pro на сайте · 51 предложение из прайса, фильтры по памяти, цвету, SIM, стране и состоянию

В чём сложность

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

01

Прайс написан для людей

Поставщик публикует цены обычным постом в Telegram: заголовки, примечания, цена то «89.990», то «89 990 ₽», цвет и память в одной строке. Программа сама отличает товар от заголовка, достаёт модель, память, цвет и тип SIM, а строки об одном товаре собирает в одну карточку.

02

У каждого товара своя наценка

Наценка задаётся на товар и прибавляется к цене в любом из форматов — «89.990», «1.299.990», «— 12 000». А годы, артикулы и «20000 mAh» программа не трогает. Изменили наценку — примерно через минуту пересчитался весь каталог.

03

Нет в наличии — не значит удалить

Строка пропала из прайса — товар получает пометку «нет в наличии» и остаётся: его страница может быть открыта у клиента или найдена в поиске. Изменилась цена — это обновление, а не новый товар. Без фото товар на витрину не попадает, а у каждого цвета свои снимки: чужой цвет программа не подставит.

Сайт с нуля:
от дизайна
до корзины

Раньше у магазина был только телеграм-канал со списком цен текстом. Сайта не существовало: я придумал дизайн, собрал каталог с поиском и сделал корзину с оформлением заказа.

Витрина строится из того же прайса, поэтому сайт и канал всегда показывают одни и те же цены и наличие.

01 Дизайн, придуманный под магазин Свой дизайн: белый фон, фирменный красный, крупные карточки разделов и товаров. Главная выглядит как витрина, а не как таблица цен.
02 Каталог и поиск Разделы и подразделы по виду товара: iPhone по поколениям, Apple Watch по сериям. На телефоне меню открывается папками, а поиск находит товар по названию и модели.
03 Корзина и заказ Корзина хранится у покупателя в браузере, а цены всегда берутся с сервера — подменить их нельзя. Если товар пропал из прайса, в корзине он помечается недоступным. Готовый заказ уходит менеджерам в Telegram и дальше ведётся сам — об этом ниже.
04 Для покупателя, который выбирает Избранное с пометкой «подешевело на …», сравнение до четырёх товаров с переключателем «только отличия» и форма «сообщить о снижении цены»: заявка приходит менеджерам в чат.
05 Обещания, которые проверяются Рейтинг 5,0 на Яндекс Картах читается каждое утро и показывается на сайте вместе со словами покупателей. На каждом товаре — «Нашли дешевле? Снизим цену», к телефону — защитное стекло в подарок, а за друга, который купил, — 1 000 ₽: при оформлении сайт спрашивает, кто порекомендовал магазин.
06 Всё, что нужно магазину Страницы доставки, гарантии, сервисного центра, оферты и политики конфиденциальности, а для поисковиков — карта сайта и описания страниц.
Карточка iPhone 17 Pro 512 ГБ Blue на сайте: галерея, цена 118 390 ₽, кружки цветов, кнопки памяти и SIM, кнопка «В корзину» и обещания магазина

Карточка товара · цвет, память и SIM — кнопками, фото под выбранный цвет, обещания магазина — списком

Выбирать глазами,
а не по строчкам

В телеграм-канале прайс — длинный текст вроде «iPhone 17 Pro 256 Black — 119 900». Чтобы понять, как выглядит цвет, надо знать модель, а чтобы сравнить две, приходится листать пост. На сайте человек видит сам товар.

Следующий шаг

Мини-приложение в Telegram

Этот же сайт планируется подключить к каналу как мини-приложение: кнопка под постом — и покупатель оказывается в той же витрине с фото и корзиной, не выходя из мессенджера. Пока это в планах.

01 Цвет видно сразу Фото листаются галереей, а цвет выбирается цветным кружком — вместе с ним меняются снимки. Поколение, память и тип SIM — кнопками прямо на карточке.
02 Все варианты — в одном месте Цвет, память и тип SIM собраны в одну карточку, а не разбросаны по двадцати строкам прайса.
03 Находится за секунду Раздел или поиск вместо прокрутки длинного поста до нужной строки.
04 Цена и наличие — те же, что в канале Они берутся из одного прайса, поэтому расхождений между сайтом и каналом нет.
05 Заказать можно сразу Положил в корзину и оформил — без переписки с вопросами «а какой цвет есть» и «сколько стоит доставка».
Пост в канале магазина
Пост «iPhone 17 Pro» в канале магазина: обложка раздела и строки прайса с ценами
→
Тот же товар на сайте
Карточка iPhone 17 Pro 512 ГБ на телефоне: фото, цена 118 390 ₽, кружки цветов, кнопки памяти и SIM

Канал магазина и сайт · один прайс, одна цена

Заказ доводится
до двери сам

Раньше заказ с сайта был просто сообщением менеджеру. Теперь у него есть путь: подтверждение, товарный чек, курьерское окно и отзыв. Человек нажимает кнопки, остальное делает программа.

01 · СайтПокупатель оформил заказдень и окно курьера, способ оплаты, кто порекомендовал магазин
→
02 · МенеджерамЗаказ в Telegram с кнопкамиПодтверждён · Доставлен · Отменён
→
03 · ПокупателюЗаказ и товарный чекс аккаунта магазина, ответ «да» подтверждает
→
04 · Через два часа после доставкиПросьба об отзывессылка на карточку в Яндекс Картах

Товарный чек

Документ, который не стыдно отдать с телефоном за сто тысяч

Раньше чеки писали от руки. Теперь каждый заказ получает PDF в стиле магазина: номер продолжает старую нумерацию, дата — день, когда курьер привёз заказ, у каждого товара — гарантия, сумма прописью, подпись менеджера, условия гарантии и QR-код на отзывы. Чек уходит покупателю в Telegram вместе с заказом, а в админке его можно скачать в любой момент.

Открыть PDF →
Товарный чек № 352: продавец, покупатель, заказ, две строки товаров и доставка, итого 126 890 ₽, гарантия 12 месяцев, QR-код на отзывы, подпись менеджера

Настоящий чек магазина · покупатель, заказ и подпись — для примера

Магазин · заказы14:07
Привезти: iPhone 17 Pro 256GB Deep Blue
+ защитное стекло положить
Завтра, 15:00–18:00 · Москва, 3-й этаж
+7 ··· ··· 12-34 · Анна
119 900 ₽ + доставка от 1 000 ₽ · карта по QR
ПодтверждёнДоставленОтменён
Магазин → покупателю14:08 · печатает…
Здравствуйте, Анна! Ваш заказ: iPhone 17 Pro 256GB Deep Blue — 119 900 ₽. Курьер завтра с 15:00 до 18:00.
📄 Товарный чек № 352.pdf
Если всё верно, ответьте «да».
Анна: да

Сообщения для примера

01 Товарный чек на каждый заказ PDF в стиле магазина: номер продолжает нумерацию бумажных чеков, дата — день доставки, гарантия 12 месяцев, подпись менеджера и QR-код на отзывы. Этот же чек нужен для возврата — отдельная накладная магазину не нужна.
02 Пишет с аккаунта магазина Бот не может написать человеку первым, а аккаунт магазина может. Отдельная программа отправляет заказ и чек через 15–45 секунд после оформления, перед текстом показывает «печатает…» и читает только ответы на свои сообщения. Если она сломается, цены в канал идти не перестанут.
03 Кнопки вместо переписки Менеджер нажимает «Подтверждён», «Доставлен» или «Отменён» прямо под заказом. Статус записывается в заказ и в переписку с покупателем, а через два часа после «Доставлен» покупателю уходит просьба об отзыве.
04 Переписка с покупателями — в темах Всё, что покупатели пишут аккаунту магазина, попадает в группу «Клиенты»: по теме на человека. Владелец отвечает из темы, новому покупателю программа один раз сама отвечает ссылкой на сайт, а команда «/сайт» присылает сайт или товар с ценой.
05 Курьер по окнам По Москве от 1 000 ₽ в окно три часа, по области от 2 000 ₽ в окно четыре часа, с 11:00 до 22:00 на неделю вперёд. Сегодня — если до конца окна больше четырёх часов. Оплата при получении: картой по QR-коду или в кредит.

Знает,
где мы
дороже

Каждое утро в 9:15, до открытия магазина, система читает каталоги четырёх конкурентов — страница за страницей, с паузами, чтобы не нагружать чужие сайты. Потом сопоставляет их товары с нашими карточками и собирает таблицу: наша цена в канале, наша наценка, цены конкурентов и разница.

Решение остаётся за владельцем. Таблица показывает, где мы дороже рынка, а где можно поднять цену. Сами цены система не меняет.

01 Один товар — одно название «Телефон Apple iPhone 17 Pro 256 ГБ, eSim, цвет: глубокий синий» и «iPhone 17 Pro 256 ГБ Blue eSIM» — это один товар. Программа приводит оба названия к одному виду: модель, память, оперативная память, цвет по-русски и по-английски, тип SIM, размер, артикул, год.
02 Не путает похожее Б/у, активированный и «с русской клавиатурой» никогда не сравниваются с новым, чехол — с телефоном, ремешок — с часами, а копия аксессуара — с оригиналом Apple. Иначе таблица врала бы, а решения по ней были бы неверными.
03 Таблица, по которой принимают решения Товары отсортированы по размеру разницы. Есть фильтры по разделу, «где мы дороже» и по тому, у какого магазина товар есть, а ещё кнопки «Обновить цены конкурентов» и «Скачать Excel».
04 Новинки появляются сами Список разделов у конкурента программа читает с его же сайта, поэтому новые модели попадают в сравнение сами. Новый магазин — строка в настройках: таблица, фильтр и Excel получают ещё одну колонку без правки кода.
ТоварНаш каналКонкурент 1Конкурент 2Разница
iPhone 17 Pro 256GB119 900 ₽117 500 ₽118 200 ₽дороже на 2 400 ₽
AirPods Pro 215 900 ₽15 400 ₽—дороже на 500 ₽
MacBook Air M5134 500 ₽136 900 ₽135 000 ₽дешевле на 500 ₽

Так выглядит таблица разницы · два магазина из четырёх, цены для примера

→ таблицу можно листать вбок
ПодробностиЕщё три раздела: как магазин находят поисковики и ChatGPT, что сторожит поломки, отчёт за неделюРаскрыть ↓Свернуть ↑

Чтобы магазин
находили

Один из покупателей в октябре пришёл из ChatGPT. Поисковики и ИИ-помощники читают сайт не так, как люди, поэтому для них у магазина есть отдельные страницы и файлы — и всё это обновляется само вместе с прайсом.

Около 700 моделей получили описание и характеристики со страниц производителей, а 54 карточки с неверным фото остались без фото: неверная картинка хуже, чем никакой.

01 Поисковики узнают за час Каждый час сайт сам сообщает Яндексу и Bing о новых и изменённых страницах. Bing при этом питает поиск ChatGPT.
02 Ответы на вопросы покупателей Страница с частыми вопросами: оригинал ли, как проверить до оплаты, eSIM или SIM, страны, состояния, доставка, оплата — с разметкой, которую понимают поисковики.
03 Файл для ИИ-помощников Магазин и его условия простым текстом в одном файле, чтобы помощник отвечал про магазин верно, а не выдумывал.
04 Товары для Яндекса Лента новых устройств в формате Яндекс Маркета, а в данных каждого товара — описание, продавец, возврат 14 дней и условия доставки.
05 Страница не исчезает Распроданный товар оставляет страницу: «Нет в наличии», последняя цена и кнопка «сообщить, когда появится». Через 90 дней адрес честно закрывается, а старые адреса каждый час перенаправляются на живые карточки.

Работает
без присмотра

Магазин держится на том, что цены сами идут из прайса. Поэтому важнее громких функций — не пропустить тихую поломку.

30 сентября на сервере закончилось место. После этого система предупреждает владельца в Telegram, когда диск заполнен на 85%, а служебные записи больше не раздувают ежедневную копию.

Магазин · канал10:02
Пост «Garmin» не влез в Telegram: 500 абзацев при лимите 500. Не отправлен — разделите пост.
Магазин · надзор10:40
Поставщик молчит с 09:00 — за рабочее утро ни одного поста.
11:05 · Поставщик снова публикует. Витрина обновлена.

Сообщения для примера

01 Перечитывает канал каждые пять минут Поставщик часто не пишет новый пост, а правит старый, и Telegram сообщает не о каждой правке. Поэтому раз в пять минут программа перечитывает весь канал и обновляет витрину, если что-то изменилось.
02 Страницы сайта отдаются быстро Готовые страницы хранятся на сервере, чтобы открываться мгновенно, и пересобираются сразу, как только меняется цена, наличие или фото. Покупатель не ждёт, а цены не устаревают.
03 Заказ приходит менеджеру в Telegram Корзина, доставка и оформление работают на сайте, а готовый заказ сразу уходит менеджеру сообщением — без отдельной системы заказов.
04 Предупреждает, если что-то замолчало Если поставщик молчит в рабочее время или сайт перестал читать канал, владелец получает сообщение в Telegram, а потом — отдельное, что всё снова в порядке.
05 Копия каждый день и проверки на каждую правку Каждую ночь база уходит копией в Telegram, а система покрыта почти 250 автоматическими проверками: разбор прайса, сравнение с конкурентами, корзина, заказы и чеки, посты канала, сайт.

Понедельник,
10:30: отчёт
за неделю

Раз в неделю менеджерам приходит одно сообщение: подписчики канала, сколько человек видят утренний пост, заказы и заявки с сайта, что подешевело, где конкуренты дешевле. Посещаемость из Яндекс Метрики и запросы, по которым сайт нашли в Google, программа читает сама — вручную ничего не выгружается.

Утренний пост в канале 20 октября: «Подешевело за сутки» и пять товаров с новыми ценами

Утренний пост в канале · 20 октября, настоящий

Магазин · отчётпн 10:30
Неделя 13–19 октября
Канал: 4 120 подписчиков (+36), утренний пост видят 1 480
Сайт: 1 940 визитов — Telegram 41%, Яндекс 33%, Google 18%, ChatGPT 3%
Заказов 7, заявок о цене 12, переходов в Telegram 58
Подешевело 23 товара · дороже конкурентов: 9 позиций Apple

Цифры для примера

каждые 5 мин
Канал поставщикаперечитывается целиком, витрина обновляется, если что-то изменилось
06:20
Рейтинг на Яндекс Картахчитается и показывается на главной, в карточке товара и при оформлении заказа
09:15
Цены четырёх конкурентовстраница за страницей, с паузами; таблица разницы собирается сама
10:00
Утренний пост в каналес пятью самыми заметными снижениями цен за сутки — история цен хранится по каждой карточке
каждый час
Поисковики и адресаЯндекс и Bing узнают об изменённых страницах, старые адреса перенаправляются
03:30 · 04:00
Архив и копияраспроданное 90 дней назад уходит в архив, копия базы — в Telegram
пн 10:30
Отчёт за неделюменеджерам в Telegram, одним сообщением

Что получилось

Цены и остатки на витрине берутся из прайса поставщика сами, вбивать их не нужно. Заказ сам доходит до покупателя с чеком и возвращается отзывом. Владелец управляет только правилами: наценкой, разделами, списком того, что не продаём, фотографиями моделей и спорными строками.

2 100+ товаров в наличии на витрине: цены и остатки идут из прайса без ручного ввода
4 магазина-конкурента сверяются с витриной каждое утро, и таблица разницы собирается сама
700 моделей получили описание и характеристики со страниц производителей
0 ручных правок цен и остатков

Чем сделано: Laravel, Nova, MySQL, Go, Python, Tailwind, Alpine, Telegram API.
Около 32 000 строк кода, из них 5 000 — автотесты · бот-публикатор в работе с 2024 года, сайт и каталог — с сентября 2026, заказы с чеками — с октября · сайт и дизайн — с нуля, мой магазин: я и владелец, и разработчик.

Написать в Telegram → Сайт магазина ↗ Канал в Telegram ↗ ← Все работы Следующий проект · 03 / 07Mint Decor →
Написать