Задача — собрать WordPress-плагин, который сам ведёт контент-конвейер для блога или интернет-магазина. Ручной цикл «тема → текст → картинка → загрузка в WordPress → категории и теги → публикация» занимает 15–20 минут на статью; тридцать статей в месяц у копирайтера — около 15 000 ₽. Нужен тот же цикл, но в фоне, по расписанию, с проверкой человеком только на финале.
DWAP AI Content — плагин на PHP 8.2 (namespace DWAP, PSR-4, WordPress Coding Standards, зависимости через Composer). Ставится в WordPress zip-архивом через админку.
Оркестратор Generator проводит статью через пайплайн: генерация текста → генерация промпта картинки из готового заголовка → генерация изображения → создание поста (черновик или публикация, привязка обложки, категорий, тегов) → запись в лог. Шаг картинки fail-soft: если провайдер изображений упал, статья всё равно создаётся, скачивание идёт с тремя ретраями.
Ключевое архитектурное решение — сменные провайдеры вместо одного вшитого API. Фабрика Provider_Factory собирает провайдер из настроек, все работают по OpenAI-совместимому протоколу через интерфейсы. Текст: OpenRouter (бесплатные модели), Polza.ai (российский API, оплата в рублях, без VPN) или любой Custom по URL и ключу. Картинки: Pixazo (Flux Schnell бесплатно), Polza.ai (Nano Banana с поддержкой кириллицы) или Custom. Переключение «бесплатно ↔ платно» и «глобальный ↔ российский API» — выбор в настройках, а не правка кода.
Подбор категорий и тегов без мусора: в промпт подставляются существующие на сайте категории и теги, модель возвращает выбор структурированными маркерами (TITLE / CATEGORY / TAGS / BODY), парсер привязывает термины к посту по имени. Новые теги создаются только при явно включённой опции. Тот же парсер вычищает артефакты LLM: markdown-ограждения, дубль заголовка, запрещённые вводные секции, иероглифы CJK в русском тексте.
Против зацикливания генерации — обязательный внешний источник: RSS_Reader берёт свежие темы из ленты и дедуплицирует по GUID через таблицу истории. Без внешнего входа LLM со временем начинает писать об одном и том же. Расписание — WP Cron с частотой от 10 минут до недели; Scheduler за один запуск генерирует заданное число статей, сбой на одной не останавливает прогон.
330 статей за три недели на тестовом блоге — в фоне, без участия. На бесплатном тире OpenRouter (лимит 50 запросов в сутки, 2 запроса на статью) — до 25 статей в день. На связке Polza.ai крон в 30 статей/месяц обходится в 300–500 ₽ против ~15 000 ₽ за тот же объём вручную. Статьи выходят с обложкой, категориями и SEO-заголовком — формат, который Яндекс нормально индексирует.
Плагин выложен бесплатно (GitHub, Telegram-канал); кастомизация под нишу и другие CMS — отдельной услугой.