Избранные проекты

Кейс Geoekoproekt

Теперь владельцу можно написать сайту как сотруднику

Найти страницу, изменить поле, поставить фото или создать черновик прямо из Telegram. Каждая запись сначала показывается, подтверждается и остаётся обратимой.

Реальная страница Geoekoproekt с наложенным Telegram-диалогом Site Operator
Site Operator · Telegram → confirmation → Drupal revision

Небольшая правка не должна начинаться с похода в CMS

Даже рутинное изменение требовало открыть Drupal, найти нужный тип материала и поле, вспомнить устройство страницы. Мы сделали приватного оператора для владельца и редакторов, а не ещё один публичный чат.

«Создай из этого фото страницу, опубликуй и пришли ссылку».

01

Снаружи разговор. Внутри обычные правила Drupal.

Модель понимает запрос, но не получает доступ к Drupal и не умеет отправлять произвольные команды. Обычный код выбирает разрешённое действие, читает текущую ревизию, показывает preview и ждёт подтверждения.

REAL CHAT

Интерфейс — уже знакомый владельцу чат

В реальном диалоге оператор читает главную, находит страницу вакансий и принимает фотографию с обычной текстовой командой. Для международного кейса переведён только русский текст сообщений; ID, URL, время и состояния интерфейса сохранены.

Английский перевод реального Telegram-диалога с оператором сайта Geoekoproekt
Реальный диалог Site Operator. Текст сообщений переведён с русского, состояние интерфейса и данные проекта сохранены.

Что происходит после одного сообщения

  1. 01

    Понять

    Текст, голосовое сообщение или фото превращается в один структурированный запрос.

  2. 02

    Показать

    Telegram выводит целевую страницу и точное изменение.

  3. 03

    Подтвердить

    Разрешить операцию может только её автор и только в течение десяти минут.

  4. 04

    Применить

    Drupal валидирует материал и создаёт новую ревизию. Бот возвращает готовую ссылку.

02

Бот намеренно умеет меньше администратора

Без тихих правок

Для записи обязательны предпросмотр и явное подтверждение.

Без удаления

Connector не предоставляет физического удаления контента.

Без перезаписи свежих данных

Если после preview страницу изменили, Drupal отклонит запрос.

Откат с историей

Undo создаёт новую ревизию, а не стирает прежнюю.

03

Собрано на реальном сайте, включая неудачные тесты

Живые проверки нашли проблемы с русскими окончаниями в поиске, смыслом «самой свежей» статьи, дублями неопубликованных страниц, правами старого HTML и проверкой изображений. Каждая ошибка стала более узким правилом или детерминированной операцией.

Технические детали

Telegram-сервис на Node.js 22 работает в Docker на приватном VPS без публичного входящего порта. Один экземпляр управляет одним сайтом и использует одного AI-провайдера.

Запросы к Drupal connector подписаны HMAC SHA-256 с timestamp, одноразовым nonce, методом, полным request target и raw body. Для записи также нужны idempotency key и точная исходная revision.

Gemini планирует действие только по разрешённой схеме. Drupal проверяет allowlist полей, entity validation, реальные байты файла и создаёт ревизию.

Мелкие изменения сайта всё ещё ждут, пока кто-то откроет CMS?

Безопасную часть этой работы можно превратить в разговор.

Обсудить процесс