Прокачиваю воркфлоу n8n. Часть 2

В своих предыдущих постах я много рассказывал про инструмент n8n, но мало делился реальными сценариями, которые он помогает решать. Исправляюсь.

Сегодня покажу, как я настроил автоматическую генерацию обложки (она же КДПВ — картинка для привлечения внимания) по тексту статьи.

 

От проблемы — к автоматизации
Сама по себе генерация картинок нейросетью — не новость. Можно подготовить промпт, отправить в чат-модель и получить результат. Не понравилось — доработать промпт и повторить. Вроде всё просто, но в ручном режиме меня тяготило размытие контекста: приходилось постоянно переключаться между задачами — проверять текст, писать краткое содержание, формулировать основную идею, составлять промпт, проверять его, генерировать картинку, а при неудаче — начинать заново с четвёртого шага.

Это занимало время и сбивало фокус. Я захотел перенести весь этот цикл в n8n, чтобы получать обложку автоматически, сразу после завершения статьи.

Сначала я планировал использовать API «Кандинского», но оказалось, что он больше не поддерживается, а удобное мини-приложение в Telegram стало «условно-доступным». Пришлось искать альтернативу.

Остановился на связке n8n + OpenRouter.ai + NanoBanana (она же модель gemini-3.1-flash-image). Для анализа текста и генерации промпта задействовал DeepSeek.

Как устроен воркфлоу (коротко):

Screenshot 2026 07 05 at 22 34 42

  1. Триггер — текст статьи приходит в чат workflow, настройка ответа через response node.
  2. AI-агент (DeepSeek) анализирует текст и формирует промпт для генерации картинки. Системный промпт очень детальный: агент выделяет главную мысль, ключевые метафоры, определяет настроение, цветовую палитру и композицию. На выходе — промпт на английском языке без лишних символов (кавычки удаляются специальным обработчиком). Системный промпт агента:

    Ты — профессиональный креативный продюсер и промпт-инженер с опытом в визуализации деловых и технологических тем.
    Твоя задача — по тексту статьи, который я пришлю ниже, создать максимально точный и выразительный промпт для генерации обложки в нейросети Nanobanana (или аналогичной).

    **Порядок действий:**

    1. **Прочитай и проанализируй текст**:
    — Выяви главную мысль (тезис) статьи.
    — Определи ключевые персонажи, процессы, контрасты (например, «исследователи vs внедренцы», «старые циклы vs новые», «хаос данных vs структура»).
    — Улови настроение и тональность (деловая, ироничная, оптимистичная, тревожная и т.п.).
    — Найди 2–3 сильные метафоры, которые можно визуализировать (например, «уход звёзд», «приземление технологий», «смена парадигмы», «циклы»).

    2. **Сформулируй визуальную концепцию**:
    — Опиши композицию: что на переднем, среднем и заднем планах.
    — Определи цветовую палитру, соответствующую тону статьи (например, деловые тона с акцентом, или минималистичная монохромность, или энергичные цвета).
    — Укажи нужный стиль: векторная иллюстрация, фотореализм, абстракция, изометрия, инфографика и т.д.
    — Продумай символы и детали, которые отразят ключевые тезисы (графики, шестерёнки, потоки данных, силуэты, циклы, стрелки, мосты).

    3. **Составь промпт для генерации**:
    — Он должен быть на **английском языке** (для лучшего понимания большинством нейросетей), но если нужен русский — укажи.
    — Обязательно включи:
    — основной сюжет (2–3 предложения);
    — детали композиции и объектов;
    — стиль и технику (flat vector, cinematic lighting, 8k, etc.);
    — цветовое решение;
    — параметры: соотношение сторон (например, 16:9 для обложки), версию модели (если знаешь), степень стилизации.
    — Промпт должен быть чётким, без лишней воды, но достаточно детальным, чтобы нейросеть поняла замысел.

    4. **Предоставь результат в формате**:
    — **Готовый промпт** (текст для отправки в нейросеть).

    **Важные условия:**
    — Не придумывай факты, которых нет в статье, — опирайся только на предоставленный текст.
    — Если в статье не хватает описания для визуализации (например, нет упоминания цвета или атмосферы), предложи нейтральное, но стильное решение (например, корпоративный тёмно-синий + оранжевый акцент для деловых тем).
    — Если стиль статьи явно выражен (например, ироничный или строгий), отрази это в промпте.
    — обязательно экранируй кавычки, используй \» вместо »
    — возвращай только промпт на английском языке
    — проверь чтобы кавычек в тексте не было

    Текст статьи для обработки:
    {{ $json.chatInput }}

  3. Так как агент склонен к ошибкам и часто игнорирует инструкцию «проверь чтобы кавычек в тексте не было” то в первом варианте я думал сделать агента контроллера, но он также оставлял после себя артефакты, которые ломают итоговый JSON, то использую ноду MAP c регулярным выражением, удаляющий ненужные символы:

    {{ ($json.output ?? »).toString().replace(/\n/g, ‘ ‘).replace(/[«\\,%]/g, ») }}

  4. HTTP-запрос к OpenRouter с моделью NanoBanana. JSON тела запроса выглядит так:

    {
    «model»: «gemini-3.1-flash-image»,
    «messages»: [
    {
    «role»: «user»,
    «content»: «Сделай фотореалистичное изображение по описанию:{{ $json.output }}»
    }
    ],
    «modalities»: [«image», «text»],
    «image_config»: {
    «aspect_ratio»: «16:9»,
    «image_size»: «1K»
    }
    }

  5. Обработка результата — возвращается не файл, а текстовое представление изображения (base64). С помощью небольшого скрипта (на JavaScript) я преобразую его в PNG-файл. JavaScript выглядит так:

    const img = $json.choices[0].message.images[0].image_url.url;
    const base64 = img.replace(/^data:image\/png;base64,/, »);
    const buffer = Buffer.from(base64, ‘base64’);

    return [
    {

    json: {},

    binary: {

    data: {

    data: buffer.toString(‘base64’),

    mimeType: ‘image/png’,

    fileName: ‘generated.png’

    }

    }

    }

    ];

  6. Сохранение — картинка загружается на Google Диск с именем, содержащим дату и время для удобного поиска.

    Filename = NanoBanana_cover_{{ $now.toFormat(‘yyyy-MM-dd_HH-mm-ss’) }}.png

  7. Ответ в чат — отправляется сообщение «Обложка готова» со ссылкой на файл.

Модель попадает в мои ожидания примерно в 9 случаях из 10 — повторные генерации почти не требуются. При необходимости воркфлоу можно дополнить петлёй для утверждения или корректировки промпта.

В итоге: есть текст — есть обложка. Готово к публикации (особенно удобно для Telegram-каналов).

О других сценариях автоматизации расскажу в следующих постах.

Прокачиваю воркфлоу n8n. Часть 2
Метки:     

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *