Задача
Небольшой редакции, которая ведёт сайты на WordPress, нужно следить за множеством источников, отбирать новости, писать, проверять факты, подбирать изображение, а затем публиковать тот же материал в соцсетях и подкастах. Каждый шаг выполняется вручную и в отдельном инструменте.
Что я сделал
Я создал многопользовательскую веб-платформу, которая берёт новости из лент и веб-источников и ведёт их через подготовку текста с помощью ИИ до публикации в WordPress и других каналах.
- Мастер статьи из 12 шагов: источник, новость, углублённый поиск, пять вариантов заголовка, лид, основной текст, проверка фактов и грамматики, SEO, изображение, аудио, финальная проверка и публикация. У каждого шага свой endpoint, поэтому неудачный шаг можно повторить отдельно.
- ИИ-персонажи: профили авторов с личностью, тоном и стилем, которые используются в разных статьях. Всё, что написано от имени одного «автора», звучит одним голосом.
- Движок ботов: боты по расписанию собирают новости, фильтруют их, пишут от лица выбранного персонажа и публикуют материал или сохраняют черновик. Планировщик проверяет задачи каждые 60 секунд и поддерживает ежедневное, ежечасное, интервальное расписание и расписание по дням недели, а пауза между запусками исключает двойное выполнение.
- Публикация в нескольких каналах: несколько сайтов на WordPress, Facebook, Instagram, X, Substack, подкасты на Spreaker и WhatsApp, а также аудионовости с голосами ElevenLabs и видео с аватарами HeyGen.
- Роли и кредиты: 7 ролей — от администратора до тестировщика. У каждого пользователя есть квота кредитов с журналом всех действий ИИ и пополнением через PayPal. Администраторы могут входить под пользователем, чтобы помочь ему.
- Подходит и для команд за рубежом: интерфейс переведён на 8 языков, включая арабский, хинди и китайский.
Цифры
- 111 обработчиков API-маршрутов за дашбордом.
- 67 страниц в приложении, включая админ-раздел.
- 8 языков интерфейса и 7 пользовательских ролей с отдельными правами.
Технологии
Next.js 14 с App Router, React 18, TypeScript и Tailwind CSS. NextAuth для входа по email, через Google или Facebook. MySQL 8 через mysql2. OpenAI для текстов и изображений, а также Gemini, ElevenLabs и HeyGen как дополнительные провайдеры. API-ключи каждого пользователя хранятся в зашифрованном виде с AES-256-GCM. Сопутствующий плагин WordPress на PHP добавляет в WordPress роли журналиста и редакции. Я также упаковал платформу как self-hosted продукт с руководствами по установке и архитектуре.
Почему именно так
Я отказался от ORM. Запросы — обычный параметризованный SQL через mysql2, а Next.js собирается в режиме standalone в один server.js. Причина — хостинг: WASM-движку Prisma не хватало памяти на виртуальном хостинге с cPanel, а standalone-сборка работает на недорогих серверах. Пользователи подключают собственные ключи ИИ, поэтому платформа не оплачивает их обращения к ИИ.


