Инструкция по настройке AgDor AI Panel
От первого подключения до сотен опубликованных SEO-статей в месяц. Пройдите этот маршрут один раз - дальше панель работает сама.
🧭 Общая логика работы панели
AgDor AI Panel работает как конвейер: вы подключаете сайт, подключаете AI-провайдера, готовите правила и ключевые слова, собираете шаблон pipeline, а затем запускаете задачу публикации.
WordPress — установите файл
api.php в корень WordPress, см. раздел WordPress API.OfferCMS / собственный CMS — установите клиентский комплект
.cms, см. раздел Подключение сайта.- 🌐 Domains — подключаете сайт, указываете API URL, токен и доменный AI-промпт.
- 🎨 Внешний шаблон сайта — после установки клиентского комплекта настройте
.cms/temp: шапку, меню, карточки, сайдбар, стили, метрику и футер. - 🤖 AI Providers — добавляете OpenAI, Gemini, Anthropic, xAI, DeepSeek, Qwen или Custom OpenAI-compatible API.
- 📝 Prompts — сохраняете повторяемые инструкции: SEO-правила, стиль, ограничения, формат статьи.
- 🔍 Keywords — создаёте наборы ключевых слов для генерации.
- ⚙️ Templates — собираете pipeline из шагов: поиск, парсинг, RAG, AI-генерация, обработка и финальная форма статьи.
- ▶️ Tasks — связываете домен, шаблон и набор ключей, выбираете режим публикации и запускаете задачу.
- 📝 Articles — смотрите, создаёте и редактируете статьи вручную, если это нужно.
.cms/temp, затем AI-провайдер, затем промпты и ключи, после этого pipeline-шаблон, тест pipeline и только потом рабочая задача..cms/temp или весь клиентский комплект .cms можно загрузить в ИИ и попросить создать новый внешний шаблон, переделать дизайн под нишу, изменить карточки, меню, цвета, футер, статические страницы и рекламные/метрические вставки. Главное — не ломать системные переменные шаблона: $row, $posts, $post, $tophost, $incpage, $currentLang.🌐 Подключение сайта и клиентского .cms
Для публикации статей на внешний сайт используется клиентский комплект .cms. Это маленькая CMS/API-часть, которая принимает публикации из панели, сохраняет статьи, изображения и дополнительные поля, а также отдаёт публичные URL.
Где взять комплект
- Откройте вкладку 🌐 Domains.
- Нажмите кнопку Скачать клиент (.zip).
- Распакуйте архив. Внутри будет комплект файлов сайта:
index.php,classes/,pages/,temp/,vendor/и другие служебные файлы.
Вариант 1: установка в отдельную папку blog
- Создайте в корне нужного сайта папку
blog. - Скопируйте в неё содержимое клиентского архива.
- Проверьте, что API открывается по адресу
https://example.com/blog/api.php. - Если хостинг возвращает 404, настройте rewrite так, чтобы запросы внутри
/blog/обрабатывались клиентскимindex.php. - В панели в настройках домена укажите API URL:
https://example.com/blog/api.php.
Этот вариант безопаснее, если на домене уже есть сайт и вы не хотите смешивать файлы основной системы с клиентским комплектом.
Вариант 2: установка от корня сайта
- Скопируйте содержимое клиентского архива прямо в корень сайта.
- Используйте этот вариант только если сайт должен полностью работать на комплекте OfferCMS или если вы точно понимаете, какие файлы будут объединены с текущим сайтом.
- В панели в настройках домена укажите API URL:
https://example.com/api.php.
API Token
- На сайте откройте файл
classes/integration.php. - В функции
cms_get_api_token()замените стандартное значение на уникальную длинную строку. - В панели откройте 🌐 Domains → Добавить домен или редактирование домена.
- В поле API Token вставьте ту же строку.
function cms_get_api_token(): string
{
return 'your-unique-secret-token-here';
}
Authorization: Bearer API_TOKEN. Если токен на сайте и токен в панели отличаются, публикация вернёт ошибку авторизации.🌐 Domains — управление сайтами
Вкладка Domains отвечает за сайты, на которые панель будет публиковать готовые материалы.
- Скачать клиент (.zip) — скачивает актуальный клиентский комплект для установки на сайт. Если появилась новая версия, рядом с кнопкой может отображаться отметка NEW.
- Добавить домен — открывает форму подключения сайта.
- ✏️ — редактирование домена.
- 🗑️ — удаление домена из панели.
Поля домена
- Домен — доменное имя без лишних параметров, например
example.com. - API URL — полный адрес API клиента:
https://example.com/api.phpилиhttps://example.com/blog/api.php. - API Token — секретная строка из
cms_get_api_token()на сайте. - Системный промпт домена — правила именно для этого сайта: язык, тон, аудитория, тематика, структура, запреты и требования к публикациям.
Доменный промпт можно использовать внутри AI-шагов через переменную {{domain_aiprompt}}. Это удобно, когда один и тот же шаблон должен работать на разных сайтах с разной тематикой.
🤖 AI Providers — подключение моделей
AI-провайдеры вынесены отдельно от шаблонов. Благодаря этому один шаблон можно быстро переключать между разными ключами, аккаунтами и моделями.
Кнопки и действия
- Добавить провайдера — создаёт новое подключение.
- ✏️ — редактирует сохранённого провайдера.
- 🧪 — отправляет тестовый запрос и показывает HTTP-код, модель, текст ответа и подсказки по ошибкам.
- 🗑️ — удаляет провайдера. Если шаблон использовал этого провайдера, такой шаблон будет требовать внимания.
Поля провайдера
- Тип провайдера — Gemini, OpenAI, Anthropic, xAI, DeepSeek, Qwen или Custom.
- Название — понятное имя подключения. Можно оставить автоматически созданное или назвать по аккаунту/ключу.
- Регион Qwen — появляется только для Qwen.
- API URL — появляется для Custom OpenAI-compatible API.
- Доступные модели — список моделей, по одной в строке. Именно из этого списка потом выбирается модель в LLM-шаге шаблона.
- 🔄 Обновить список моделей — кнопка возле поля моделей. Она запрашивает каталог моделей у провайдера, показывает предпросмотр и позволяет вставить полученный список.
- API ключ — ключ провайдера.
- Активен — только активные провайдеры доступны для новых LLM-шагов.
Карточка провайдера показывает ID, тип, возможности, количество моделей, статус активности и возможную последнюю критическую ошибку: недостаточно средств, неверный ключ, rate limit, model not found, timeout и другие.
📝 Prompts — глобальные правила
Глобальные промпты нужны для повторяемых инструкций, которые используются в разных шаблонах: SEO-правила, редакционный стиль, требования к источникам, запреты, формат ответа, правила разметки.
- Создать промпт — добавляет новый reusable prompt.
- Название — имя, по которому промпт будет вставляться в шаблон.
- Содержимое — сам текст правил.
- Категория — необязательная группировка, например
seo,style,html,review.
В LLM-шаге промпт вставляется макросом:
{{prompt:"seo_article_rules"}}
Так можно держать большую стабильную инструкцию в одном месте и не копировать её вручную в каждый шаблон.
🔍 Keywords — наборы ключевых слов
Вкладка Keywords хранит базы ключевых слов. Одна задача может использовать один или несколько наборов.
- Создать / добавить базу — создаёт новый набор или пополняет существующий.
- Название базы — понятное имя набора, например
Founders CRM ENилиCBD Reviews PT. - Drag & drop .txt — загрузка файла со списком ключей.
- Ручной ввод — вставка ключей в textarea, по одному ключу на строку.
- Переименовать — меняет название выбранной базы.
- Очистить — удаляет ключи внутри базы, но оставляет сам набор.
- Удалить базу — удаляет набор полностью.
В pipeline текущий ключ доступен через переменную {{keyword}}. При запуске задачи система проходит по ключам выбранных наборов и для каждого ключа выполняет шаблон.
⚙️ Templates — сборка pipeline
Template — это схема генерации. Он описывает, что именно нужно сделать с ключевым словом: собрать выдачу, загрузить страницы, построить RAG-контекст, сгенерировать статью, извлечь поля и отправить финальные данные на публикацию.
Основные элементы окна шаблона
- Название шаблона — имя pipeline в списке.
- Тип —
СтатьяилиКлючевые слова. - Палитра шагов — кнопки добавления шагов: 🤖 ИИ, 🧪 Обработка, 🧩 Преобразование, 🔎 Поиск, 📰 Новости, 🖼️ Картинки, 🎞️ Видео, 📄 Статья по URL, 🌐 HTML по URL, 📝 Форма статьи.
- Canvas — визуальная карта шагов. Карточки можно раскладывать удобнее для чтения.
- − / + / 100% / Вписать / Разложить заново — управление масштабом и расположением canvas.
- Порядок выполнения — отдельный список реальной очередности шагов. Именно этот порядок определяет, какие данные доступны следующим шагам.
- К первой ошибке — помогает перейти к шагу, где макрос ссылается на отсутствующий или будущий шаг.
- Показать/скрыть JSON редактор — ручное редактирование JSON шагов. Обычно удобнее работать визуально, JSON нужен для точечной правки или переноса шаблона.
{{step.search.output}}, шаг search должен выполняться раньше.🧱 Типы шагов pipeline
🤖 ИИ
LLM-шаг отправляет промпт выбранному AI-провайдеру и сохраняет текстовый ответ в output шага.
- ID шага — короткое имя, например
query_plan,article_mode,final_article. - Провайдер — активное подключение из AI Providers.
- Тип — текст, text batch, картинки, видео или музыка, если провайдер поддерживает такие возможности.
- Модель — выбирается из списка моделей провайдера.
- Роль —
userилиsystem. - Глобальный промпт — удобный выбор сохранённого prompt, который вставляется макросом.
- Промпт — основной текст инструкции. В нём можно использовать переменные и результаты предыдущих шагов.
- Переменные — кнопка возле поля промпта, которая вставляет доступные макросы.
- Вставить блок кеша — оборачивает стабильную часть промпта в
AIPANEL_CACHE, если выбранный провайдер поддерживает prompt caching. - Temperature — уровень вариативности ответа.
- Max tokens — ограничение длины ответа.
- Ожидание batch, секунд — появляется для
text batch. Batch дешевле, но результат может прийти позже.
🔎 / 📰 / 🖼️ / 🎞️ Источники
Collector-шаги получают данные из поисковой выдачи, новостей, картинок, видео или по конкретным URL.
- Поиск — web SERP: Google, Bing, Yandex, Yahoo.
- Новости — новостная выдача.
- Картинки — поиск изображений.
- Видео — YouTube или Yandex video.
- Статья по URL — загружает и извлекает контент страниц по списку URL.
- HTML по URL — получает HTML страниц по списку URL.
- Источник запроса — ключ, текст или переменная предыдущего шага, например
{{keyword}}или{{step.query_plan.output}}. - Лимит результатов SERP — сколько результатов брать на запрос, от 1 до 100.
Выход поисковых collector-шагов — структурированный объект: results, related, total_items. У результатов есть query, rank, link, title, content, date, thumb.
🧪 Обработка / RegExp
Regexp-шаг извлекает или заменяет фрагменты текста.
- Источник — строка или output предыдущего шага.
- Паттерн — регулярное выражение.
- Флаги — модификаторы регулярного выражения.
- Извлечь первое совпадение — берёт первое найденное значение.
- Извлечь все совпадения — возвращает список совпадений через перенос строки.
- Заменить совпадения — выполняет замену по регулярке.
🧩 Преобразование
Transform-шаг чистит и подготавливает данные между collector и AI-шагами.
- Удалить дубли строк, Объединить в одну строку, Обрезать по символам, Перемешать массив, Обрезать массив, Убрать HTML, Trim.
- Извлечь из JSON — берёт нужный фрагмент из JSON.
- Строку в массив и Массив в JSON — меняют формат данных для следующих шагов.
- Создать RAG контекст — собирает компактный контекст из загруженных документов.
Для RAG доступны настройки: максимальное количество символов, максимум источников, максимум с одного домена, размер чанка и перекрытие чанков.
📝 Форма статьи
Финальный шаг для публикации. Он собирает данные из предыдущих шагов в структуру статьи.
- Заголовок статьи — например
{{step.title_extract.output}}. - Описание статьи — meta description или краткое описание.
- Изображение — URL главного изображения или переменная из image-шагов.
- Содержимое (Markdown) — готовый текст статьи.
- Дополнительные поля — пары ключ/значение, которые уйдут в
xfields_json.
en, pt, blog или reviews.🔗 Переменные и макросы
Макросы связывают шаги между собой. Они подставляют ключевое слово, домен, доменный промпт, глобальные промпты и output предыдущих шагов.
{{keyword}}— текущее ключевое слово.{{domain}}— домен сайта.{{domain_aiprompt}}— системный промпт домена.{{prompt:"prompt_name"}}— глобальный промпт из вкладки Prompts.{{step.step_id.output}}— полный выход предыдущего шага.{{step.images.1.link}},{{step.search.output}}и похожие переменные — конкретные поля структурированных результатов, если они доступны.
Кнопка Переменные в редакторе шага показывает доступные макросы с учётом текущего шага и предыдущих результатов.
🚀 Рекомендуемый pipeline SEO-статьи
Для качественной SEO-статьи обычно лучше использовать не один AI-шаг, а цепочку research → context → generation → extraction → article form.
- 🤖 query_plan — AI создаёт 3–5 поисковых запросов по
{{keyword}}с учётом{{domain_aiprompt}}. - 🔎 search — collector собирает SERP по запросам из
{{step.query_plan.output}}. - 🧩 clean_search — transform удаляет дубли, ограничивает массив или вытаскивает нужные ссылки.
- 📄 articles — collector Статья по URL загружает страницы из найденных URL.
- 🧩 rag_context — transform Создать RAG контекст сжимает найденные материалы в компактный контекст.
- 🖼️ images — collector картинок ищет главное изображение или идеи изображений по ключу.
- 🤖 final_article — AI пишет финальную статью с учётом RAG, доменного промпта, SEO-правил и нужного формата.
- 🧪 title_extract / description_extract / content_extract — regexp-шаги извлекают поля, если AI вернул статью в одном блоке.
- 📝 article_form — собирает title, description, markdown, image и дополнительные поля для публикации.
Для простого шаблона можно оставить только: 🤖 final_article → 📝 article_form. Но для более полезных статей лучше добавлять поиск, загрузку источников и RAG.
<!-- AIPANEL_CACHE -->
Постоянные правила шаблона:
- структура статьи;
- требования к SEO;
- стиль;
- запреты;
- формат ответа.
<!-- AIPANEL_CACHE_END -->
Keyword: {{keyword}}
Domain rules: {{domain_aiprompt}}
Research context: {{step.rag_context.output}} 💰 Кеширование промптов (AIPANEL_CACHE)
Prompt caching - встроенный механизм провайдера, который позволяет кешировать статичную часть промпта. Последующие запросы с тем же статичным блоком берут его из кеша вместо повторной обработки - это снижает стоимость запроса.
Какие провайдеры поддерживают
- Anthropic Claude - поддерживает, кэш действует на уровне API.
- Google Gemini - поддерживает (implicit caching), включается автоматически.
- OpenAI - поддерживает для моделей GPT-4o и выше.
- Остальные провайдеры не используют кэширование, маркеры в промпте будут просто игнорироваться.
Когда это выгодно
Кеширование работает хорошо, если промпт содержит большой статичный блок: SEO-правила, стиль, структура статьи, запреты, формат ответа. Чем длиннее статичный блок и чем чаще запускается шаблон - тем выше экономия.
Как использовать
В редакторе LLM-шага есть кнопка Вставить блок кеша. Она оборачивает выделенную часть промпта в маркеры. Можно также вставить вручную:
<!-- AIPANEL_CACHE -->
Здесь - постоянные правила, которые не меняются от запроса к запросу:
- SEO-требования, стиль, структура, запреты, формат ответа
<!-- AIPANEL_CACHE_END -->
Keyword: {{keyword}}
Domain rules: {{domain_aiprompt}}
Research context: {{step.rag_context.output}}
🧪 Тестирование шаблона
Перед рабочим запуском шаблон нужно протестировать прямо в окне Templates.
- Откройте шаблон.
- В блоке Тестирование пайплайна выберите домен. Это нужно для проверки
{{domain}}и{{domain_aiprompt}}. - Выберите набор ключевых слов или оставьте Ручной ввод.
- Выберите или введите тестовое ключевое слово.
- Нажмите Запустить тест.
Во время теста панель показывает прогресс по шагам. После выполнения можно открыть отладку шага и посмотреть входные данные, итоговый промпт, ответ провайдера, результат regexp/transform, RAG-контекст и финальную структуру статьи.
▶️ Tasks — запуск генерации и публикации
Задача связывает домен, шаблон и наборы ключевых слов. Для каждого ключа система выполняет pipeline и публикует результат на сайт через API клиента.
Создание задачи
- Домен — сайт, куда публикуем.
- Шаблон — pipeline генерации. Шаблоны со статусом Требует внимания нельзя запускать, пока не исправлены провайдеры или макросы.
- Наборы ключевых слов — можно выбрать один или несколько. Если оставить пусто, задача запускается без ключей.
- Режим публикации — сразу все, только N статей или отложенный режим.
- Количество статей для публикации — используется в режиме лимита.
- Количество статей / Период (часы) — используется в отложенном режиме.
- Язык / раздел URL — принудительный сегмент URL, например
en,pt,blog,reviews. - Пропускать использованные ключевые слова — защищает от повторной генерации по уже обработанным ключам.
- Информировать Google и Информировать Bing — отправляет уведомления после успешной публикации.
Статистика и статусы
- Всего, В работе, Завершено, Ошибок — общая статистика задач.
- Слотов — доступные, занятые и свободные слоты выполнения.
- Не хватает — сколько задач ждут свободных слотов.
- Ожидает, В работе, Ждет batch, Завершено, Ошибка, Приостановлено, Отменено — основные состояния задачи.
Действия с задачей
- Подробности — показывает прогресс, результат публикации, опубликованные URL, ошибки, поисковые уведомления и лог выполнения.
- Редактировать — меняет параметры задачи.
- Приостановить — останавливает дальнейшее выполнение.
- Возобновить/перезапустить — продолжает или повторно запускает задачу, если есть свободный слот.
- Отменить — отменяет выполнение.
- Удалить задачу — удаляет задачу и связанные данные.
📝 Articles — ручная работа со статьями
Вкладка Articles нужна для просмотра и ручной правки материалов. Она полезна, если статью нужно создать без pipeline или проверить уже готовые записи.
- Фильтр домена — показывает статьи конкретного сайта.
- Фильтр статуса — draft, ready for review или published.
- Обновить — перезагружает список.
- Создать статью — открывает ручную форму статьи.
Поля статьи
- Статус — черновик, готово к проверке или опубликовано.
- Язык — например
en,pt,ru. - Slug — URL-часть статьи.
- Заголовок — H1/title статьи.
- Описание — meta description или краткое описание.
- Содержимое — Markdown-контент.
- Главное изображение — загрузка файла, вставка URL или base64.
- Дополнительные поля — произвольные поля, которые сохраняются в JSON.
🎨 .cms/temp — внешний шаблон сайта
Папка .cms/temp — это не pipeline-шаблон из вкладки Templates, а внешний шаблон сайта. Именно здесь настраивается то, как опубликованные статьи будут выглядеть для посетителя: шапка, меню, главная/листинг, карточки постов, страница статьи, сайдбар, футер, цвета, CSS, метрика и рекламные вставки.
.cms/temp на сайте отвечает за внешний вид опубликованного сайта. Это две разные части системы, и обе нужно настроить.Главные файлы шаблона
temp/temp.php— основной HTML-шаблон сайта. В нём обычно настраиваются<head>, title/description, canonical, JSON-LD, шапка, меню, главный контейнер, вывод статьи, вывод сайдбара и футер.temp/css/style.css— стили сайта: цвета, ширина контейнера, карточки, меню, типографика, адаптивность, кнопки, пагинация, сайдбар.temp/short.php— маленькая карточка статьи для главной, языковых страниц, листингов и пагинации.temp/sidebar.php— карточка похожей/случайной статьи в боковом блоке на странице публикации.temp/metric.php— счётчики, аналитика, рекламные скрипты, пиксели и другие вставки перед закрытием</head>или внутри шаблона.pages/— статические страницы:about,contact,privacy,terms,cookies,disclaimer,legal. Их тоже нужно адаптировать под конкретный сайт.
Что обязательно поменять под свой сайт
- Откройте
.cms/temp/temp.php. - Замените название сайта, например
$siteName,$defaultTitleи$siteTagline. - Проверьте пункты меню: Home, Blog, About, Contact, Privacy, Terms. Уберите лишнее или добавьте нужные разделы.
- Проверьте тексты hero-блока на главной/листинге. Они должны соответствовать нише сайта, языку и аудитории.
- Проверьте футер: название проекта, описание, контакты, юридические ссылки.
- Откройте
.cms/temp/css/style.cssи настройте палитру в блоке:root: фон, основной цвет, акцент, ширина контейнера, радиусы, отступы. - Откройте
.cms/temp/metric.phpи замените или удалите чужие счётчики, рекламные коды и пиксели. Нельзя оставлять чужой Google AdSense, Yandex.Metrika или другие чужие ID. - Откройте файлы в
.cms/pages/и замените стандартные тексты на страницы конкретного проекта.
Какие данные доступны внутри шаблона
$row['title']— заголовок текущей страницы или статьи.$row['description']— meta description или краткое описание.$row['html_content']— готовый HTML статьи или список карточек на главной/листинге.$row['image_url']— главное изображение статьи, если оно передано или найдено системой.$row['date']/$row['public_date']— дата публикации, если она есть в записи.$row['sidebar']— HTML сайдбара со случайными/похожими статьями, если он был собран.$posts— массив постов на главной, языковой странице или странице пагинации.$post— один пост внутриshort.phpилиsidebar.php.$tophost,$hostname,$incpage,$currentLang,$pagePath— служебные переменные URL, домена, языка и текущей страницы.
short.php или sidebar.php, помните: там используется переменная $post. Если меняете temp.php, основная переменная страницы — $row.Как движок использует файлы temp
- Для главной страницы и страниц пагинации движок собирает список опубликованных материалов, каждый материал прогоняет через
short.php, а затем выводит общий результат черезtemp.php. - Для страницы статьи движок загружает статью, подготавливает
$row['html_content'], собирает$row['sidebar']черезsidebar.phpи затем подключаетtemp.php. - Если в папке шаблона есть
fullpage.php, он может использоваться для отдельных внутренних страниц вместо стандартногоtemp.php. metric.phpобычно подключается изtemp.php, поэтому все счётчики и рекламные скрипты удобно держать в одном отдельном файле.
Минимальный чек-лист перед публикацией
- Открывается главная страница сайта.
- Открывается статья по публичному URL.
- Картинки не ломают верстку на телефоне.
- Меню ведёт на существующие страницы.
- В футере нет чужого бренда, чужих ссылок и тестового текста.
- В
metric.phpнет чужих ID рекламных сетей и аналитики. - В исходном коде страницы есть нормальные
title,meta description, canonical и, если нужно, JSON-LD. - Страницы
privacy,terms,contact,aboutзаполнены под конкретный сайт.
WordPress API — подключение моста
Для публикации на сайты под управлением WordPress используется специальный мост api.php. Панель отправляет публикации, проверяет уникальность URL, обновляет записи и загружает медиафайлы через этот файл.
Установка и настройка
- Скачайте файл плагина/моста: в шапке документации или в настройках домена выберите Скачать клиент WordPress (или перейдите по ссылке
api.php, требуется авторизация). - Скопируйте скачанный файл
api.phpв корневую директорию вашей установки WordPress (туда, где находитсяwp-load.php). - Откройте файл
wp-config.phpвашего WordPress и добавьте секретный токен:define('AIPANEL_API_TOKEN', 'ваш-сложный-секретный-токен'); - В панели управления AIPanel при добавлении домена укажите:
- API URL:
https://yourdomain.com/api.php - API Token: тот же токен, который вы указали в
wp-config.php
- API URL:
Возможности моста
- Действия (actions): поддерживает проверку связи (
ping), публикацию статьи (publish_post), редактирование (edit_post), удаление (delete_post) и проверку занятости slug (check_slug). - Поддержка SEO-плагинов: автоматически записывает SEO-заголовок и описание в мета-поля популярных плагинов Yoast SEO (
_yoast_wpseo_title,_yoast_wpseo_metadesc) и Rank Math (rank_math_title,rank_math_description). - Категории и теги: поддерживает передачу массивов категорий и тегов в поле
xfields_json(структура:{"categories": ["Категория 1", "Категория 2"], "tags": ["Тег 1", "Тег 2"]}). Если категорий или тегов нет на сайте, они будут созданы автоматически. - Типы записей (Custom Post Types): по умолчанию публикации создаются как стандартные посты (
post). Вы можете переопределить это, передав тип записи вxfields_json(например,{"post_type": "product"}или{"post_type": "page"}). - Изображения: автоматически скачивает главное изображение по ссылке или декодирует base64-строку, создавая вложение в медиабиблиотеке WordPress и устанавливая его в качестве "Featured Image" (изображения записи).
📋 Примеры готовых JSON Pipeline
Здесь представлены готовые шаблоны pipeline в формате JSON, которые вы можете импортировать через кнопку Показать/скрыть JSON-редактор во вкладке ⚙️ Templates.
1. Простая SEO статья (Simple SEO Article)
Минимальный шаблон: отправляет промпт в ИИ, вырезает теги заголовка, описания и контента с помощью RegExp, а затем передает их в форму публикации.
[
{
"id": "draft_article",
"type": "llm",
"provider_id": 0,
"ai_capability": "text",
"model": "",
"prompt_role": "user",
"prompt_text": "Keyword: {{keyword}}\nDomain: {{domain}}\n\n{{domain_aiprompt}}\n\n\n{{prompt:\"seo_article_rules\"}}\n{{prompt:\"article_output_contract\"}}\n\nWrite a practical SEO article for the keyword. Vary the number of sections naturally; include FAQ only when it helps the topic.\n",
"temperature": 0.4,
"max_tokens": 4096,
"output_key": "output"
},
{
"id": "extract_title",
"type": "regexp",
"mode": "extract",
"input_source": "{{step.draft_article.output}}",
"pattern": "\\s*(.*?)\\s* ",
"flags": "si",
"output_key": "output"
},
{
"id": "extract_description",
"type": "regexp",
"mode": "extract",
"input_source": "{{step.draft_article.output}}",
"pattern": "\\s*(.*?)\\s* ",
"flags": "si",
"output_key": "output"
},
{
"id": "extract_content",
"type": "regexp",
"mode": "extract",
"input_source": "{{step.draft_article.output}}",
"pattern": "\\s*(.*?)\\s* ",
"flags": "si",
"output_key": "output"
},
{
"id": "article",
"type": "article_form",
"title": "{{step.extract_title.output}}",
"description": "{{step.extract_description.output}}",
"markdown": "{{step.extract_content.output}}",
"lang": "{{domain_lang}}",
"slug": "",
"main_image": "",
"xfields_json": "[]",
"public": 1
}
]
2. Расширение ключевых слов (Keyword Expansion)
Шаблон типа "Keywords" для генерации связанных тем на основе одного главного ключа.
[
{
"id": "expand_keywords",
"type": "llm",
"provider_id": 0,
"ai_capability": "text",
"model": "",
"prompt_role": "user",
"prompt_text": "Seed keyword: {{keyword}}\nDomain: {{domain}}\n\n{{domain_aiprompt}}\n\n\nGenerate 20 useful long-tail keyword ideas for content planning. Keep them specific, natural, and suitable for article topics.\nReturn one keyword per line, no numbering, no commentary.\n",
"temperature": 0.35,
"max_tokens": 2048,
"output_key": "output"
},
{
"id": "keywords",
"type": "transform",
"operation": "split_to_array",
"arg1": "{{step.expand_keywords.output}}",
"delimiter": "\n",
"array_limit": 20,
"output_key": "output"
}
]
3. Обзорный Affiliate-шаблон с поиском и RAG (Advanced)
Сложный шаблон для написания обзоров товаров и сервисов: делает запросы в Google, скачивает контент страниц, строит контекст (RAG) и отдает на вход ИИ.
[
{
"id": "affiliate_queries",
"type": "llm",
"provider_id": 0,
"ai_capability": "text_batch",
"model": "",
"prompt_role": "user",
"prompt_text": "Affiliate review idea: {{keyword}}\nDomain: {{domain}}\n\n{{domain_aiprompt}}\n\n\nGenerate 5 focused web search queries that support an affiliate review. Return one query per line only.\n",
"temperature": 0.2,
"max_tokens": 1024,
"output_key": "output"
},
{
"id": "affiliate_split_queries",
"type": "transform",
"operation": "split_to_array",
"arg1": "{{step.affiliate_queries.output}}",
"delimiter": "\n",
"array_limit": 5,
"output_key": "output"
},
{
"id": "affiliate_search",
"type": "collector",
"channel": "web",
"engine": "google",
"query_source": "{{step.affiliate_split_queries.output}}",
"serp_limit": 5,
"output_key": "output",
"concurrency": 6
},
{
"id": "affiliate_slice_search_results",
"type": "transform",
"operation": "slice_array",
"arg1": "{{step.affiliate_search.output}}",
"array_limit": 3,
"output_key": "output"
},
{
"id": "affiliate_html",
"type": "collector",
"channel": "html_fetch",
"engine": "html_fetch",
"query_source": "{{step.affiliate_slice_search_results.output}}",
"output_key": "output"
},
{
"id": "affiliate_rag",
"type": "transform",
"operation": "rag_builder",
"arg1": "{{step.affiliate_html.output}}",
"array_limit": 5,
"output_key": "output",
"max_total_chars": 16000,
"max_sources": 10,
"chunk_size": 900,
"chunk_overlap": 80
},
{
"id": "affiliate_generate",
"type": "llm",
"provider_id": 0,
"model": "",
"prompt_role": "user",
"prompt_text": "Keyword: {{keyword}}\nDomain: {{domain}}\nResearch context:\n{{step.affiliate_rag.output}}\n\n{{domain_aiprompt}}\n\nWrite a practical affiliate review. Format output inside tags:\n<TITLE>[title]</TITLE>\n<DESCRIPTION>[description]</DESCRIPTION>\n<CONTENT>[content]</CONTENT>",
"temperature": 0.45,
"max_tokens": 6144,
"output_key": "output"
},
{
"id": "affiliate_extract_title",
"type": "regexp",
"mode": "extract",
"input_source": "{{step.affiliate_generate.output}}",
"pattern": "\\s*(.*?)\\s* ",
"flags": "si",
"output_key": "output"
},
{
"id": "affiliate_extract_description",
"type": "regexp",
"mode": "extract",
"input_source": "{{step.affiliate_generate.output}}",
"pattern": "\\s*(.*?)\\s* ",
"flags": "si",
"output_key": "output"
},
{
"id": "affiliate_extract_content",
"type": "regexp",
"mode": "extract",
"input_source": "{{step.affiliate_generate.output}}",
"pattern": "\\s*(.*?)\\s* ",
"flags": "si",
"output_key": "output"
},
{
"id": "affiliate_article",
"type": "article_form",
"title": "{{step.affiliate_extract_title.output}}",
"description": "{{step.affiliate_extract_description.output}}",
"markdown": "{{step.affiliate_extract_content.output}}",
"lang": "{{domain_lang}}",
"slug": "",
"main_image": "",
"xfields_json": "[]",
"public": 1
}
] 🛠️ Если что-то не работает
- Сайт не принимает публикацию — проверьте API URL, токен в
classes/integration.php, rewrite и доступностьapi.php. - auth_failed — токен в панели не совпадает с токеном на сайте.
- Модель не видна в LLM-шаге — откройте провайдера, загрузите список моделей кнопкой 🔄 или вставьте модели вручную.
- Шаблон требует внимания — в одном из AI-шагов нет провайдера, выбран удалённый провайдер или макрос ссылается на будущий/удалённый шаг.
- Поиск вернул 0 результатов — проверьте запрос, поисковый backend, лимит SERP и доступность прокси/источника.
- Статья по URL не загрузилась — проверьте, что предыдущий шаг действительно отдаёт URL, а не обычный текст без ссылок.
- RAG пустой — убедитесь, что шаг загрузки статей возвращает документы с HTML-контентом.
- Batch завис или завершился ошибкой ожидания — увеличьте время ожидания batch или используйте обычный текстовый режим.
- Публикация прошла, но URL странный — проверьте поле Язык / раздел URL, slug, заголовок и правила генерации slug на стороне клиента.