Свой AI-помощник вместо Replain: как сделал единый чат на всех лендингах и сайте

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

В итоге сделал своего помощника. Теперь на всех шести лендингах и на krivoshein.site стоит один и тот же AI-чат, который знает, на какой странице человек находится, отвечает по теме и умеет оставлять заявку сразу в мой MAX-канал.

Зачем вообще менять

Replain решал базовую задачу — дать человеку возможность написать. Но на практике было несколько раздражающих моментов:

  • виджет ничего не знал про конкретный лендинг;
  • заявки жили в отдельной системе;
  • не было нормальной связи с тарифами и услугами;
  • на мобильном он часто мешал;
  • приходилось поддерживать два разных канала общения.

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

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

Помощник сделан на базе уже существующего Python-бэкенда (тот же, что обслуживает бота в MAX). Сверху добавлен лёгкий JS-виджет.

Основные возможности:

  • понимает, на каком лендинге открыт (bots, vps, direct, wordpress, landing, ai-ready или основной сайт);
  • приветствует и отвечает по теме страницы;
  • знает актуальные тарифы из llms.txt;
  • умеет оставлять заявку — она приходит в MAX-канал;
  • поддерживает русский и английский;
  • подстраивается под светлую и тёмную тему;
  • на мобильном старается не мешать (скрывает нижние CTA, когда открыт, корректно работает с клавиатурой).

Как устроена подача знаний

Основной источник правды — llms.txt. На главном сайте лежит полный вариант, на каждом лендинге — более короткий и заточенный под услугу.

Виджет при открытии запрашивает bootstrap с указанием текущего host. Бэкенд подмешивает нужный контекст в system prompt. Поэтому на bots.krivoshein.site помощник говорит про ботов, а на vps — про серверы.

Мобильный UX

Самое больное место оказалось на телефоне. Когда появляется клавиатура, места катастрофически мало.

Что сделали:

  • на мобильном убрали quick-replies, чтобы освободить пространство;
  • при открытии панели скрывается нижняя полоса кнопок (.mobile-cta-bar);
  • используется visualViewport, чтобы панель корректно сжималась под клавиатуру;
  • поле ввода старается оставаться видимым.

Идеально ещё не везде, но уже можно нормально писать, а не ловить поле где-то за клавиатурой.

Свой AI-помощник вместо Replain: как сделал единый чат на всех лендингах и сайте
Свой AI-помощник вместо Replain: как сделал единый чат на всех лендингах и сайте

Защита от спама

Раз виджет теперь торчит и на публичном GitHub Pages, пришлось добавить простые ограничения:

  • rate-limit по IP;
  • не больше 10 заявок с одного IP в сутки;
  • honeypot-поле;
  • CORS только на свои домены.

Для обычного человека лимиты с большим запасом. Для того, кто захочет долбить API — уже неприятно.

Где сейчас стоит

Replain со всех этих мест убран.

Что ещё можно улучшить

Пока живой список:

  • ещё чуть дожать мобильный UX формы заявки;
  • сделать ответы на главном сайте живее (меньше шаблонов на простые реплики);
  • добавить кликабельные ссылки в ответах, если где-то ещё остались plain-text URL;
  • продумать единый способ обновления версии виджета (скрипт уже есть на сервере).

Вывод

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

Пока это рабочий MVP. Буду дальше тестировать на реальных обращениях и подчищать мелочи.


Комментарии загружаются…

blank
Обзор конфиденциальности

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