Кейс разработки
Блог 1seller — SSR-платформа контент-маркетинга с AI-генерацией SEO-статей, проверкой уникальности и геймификацией читателей
О проекте
Блог 1seller — самостоятельный SSR-сервис, обслуживающий весь домен 1seller.ru (статьи в корне, лендинг владеет только главной). Внутри — три нетривиальные подсистемы: AI-движок массовой генерации SEO-статей, чекер уникальности текста и геймификация читателей. В проде: 1seller.ru/blog.
1. Задача
Агентству нужен был не просто блог, а машина контент-маркетинга:
- Массовая генерация статей по ключевым запросам — текст и изображения автоматически.
- Контроль уникальности — проверка сгенерированного текста против выдачи поисковиков.
- Удержание читателей — баллы за вовлечённость, личный кабинет, розыгрыши.
- Управляемость — админка с ролями, переиспользуемые CTA и боковые виджеты.
Конструкторы блогов не умеют ни генерировать статьи конвейером, ни считать уникальность, ни вести геймификацию. Сервис разрабатывался с нуля.
2. Архитектура решения
SSR-приложение на Vike поверх Vite, серверная часть на Express; данные, авторизация и хранилище — в Supabase. Доступ к AI — через SOCKS-прокси.
| Параметр | Значение |
|---|---|
| SSR-фреймворк | Vike (vike-react) поверх Vite 6, React 19; запуск через tsx без компиляции бэкенда |
| HTTP-сервер | Express 4 (SSR + все /api/*), helmet (CSP), compression |
| БД / Auth / Storage | Supabase (PostgreSQL + RLS); OAuth читателей через Yandex и Google |
| AI | Anthropic (Claude) для текста + Gemini для изображений, через SOCKS-прокси |
| Инфра | PM2 (порт 3002), nginx как catch-all домена 1seller.ru, деплой по scp |
2.1. Подсистемы
- Публичный SSR-блог — листинги и статьи под anon-клиентом Supabase с RLS.
- Боковые sticky-виджеты — на десктопе ≥1280px 3-колоночный грид с прилипающими рельсами, на мобиле те же виджеты вставляются инлайн между абзацами (оба варианта в SSR-DOM, переключение через CSS).
- Админка — роли editor / writer, редактор статей с панелями SEO-анализа и проверки уникальности.
3. Главная инженерная сложность
Сложность в двух движках — генерации статей конвейером и честной проверке уникальности.
| Подсистема | Решение |
|---|---|
| SEO-движок | Пайплайн на ключ: queued → writing → validating → [repairing] → seo → images → assembling → publish. Текст — Claude, картинки — Gemini, валидация — Zod, до 2 авто-починок |
| Чекер уникальности | Word-шинглы (5-граммы, FNV-1a) → источники (Yandex Search / Google CSE / Bing) → фетч страниц (Readability, кэш 7 дней) → overlap → процент уникальности |
| Геймификация «Зеньки» | Леджер баллов за вовлечённость, heartbeat-трекинг чтения с анти-бот проверками, личный кабинет читателя |
Результат
Контент-маркетинг поставлен на конвейер: статьи генерируются и проверяются на уникальность автоматически, а читательская активность монетизируется через систему баллов — без ручного написания каждой статьи и без стороннего антиплагиата.
4. Эффект для бизнеса
- Поток SEO-контента — статьи под ключевые запросы выпускаются пакетами.
- Качество текста — встроенная проверка уникальности до публикации.
- Удержание аудитории — геймификация повышает глубину и частоту чтения.
- Гибкая монетизация блока — переиспользуемые CTA и боковые офферы под любую статью.
5. Технологический стек — кратко
| Параметр | Значение |
|---|---|
| SSR | Vike (vike-react) + Vite 6 + React 19 (через tsx) |
| Сервер | Express 4 |
| БД / Auth | Supabase (PostgreSQL + RLS) |
| AI | Claude (текст) + Gemini (изображения) |
| Инфра | PM2 + nginx, деплой по scp |
Кейс подготовлен на основе технической архитектуры блога 1seller (ООО «Первый Селлер»). Описывается инженерное решение.