August 6, 2025

ИИ фабрика

Что мы будем создавать?

Вы пишете боту в Telegram: "Создай автоматизацию, которая каждый час проверяет погоду в Москве и, если будет дождь, присылает мне уведомление в этот чат". Бот, используя Gemini, генерирует JSON-структуру этой автоматизации и с помощью n8n API создает её в вашем n8n. Вы получаете ссылку на готовый, но неактивный workflow.


План гайда:

  1. Подготовка (что нужно заранее)
  2. Шаг 1: Создание API-ключа для n8n
  3. Шаг 2: Создание Telegram-бота
  4. Шаг 3: Создание основного Workflow в n8n (вся магия здесь)
    • Настройка триггера Telegram
    • Настройка ноды Gemini (с детальным промптом)
    • Обработка ответа от Gemini
    • Создание нового Workflow через n8n API
    • Отправка ответа пользователю
  5. Тестирование и важные замечания

1. Подготовка

Перед началом вам понадобятся:

  1. Активный n8n инстанс: Либо в n8n Cloud, либо self-hosted на вашем сервере.
  2. API-ключ Google Gemini:
    • Перейдите в Google AI Studio.
    • Нажмите "Get API key" -> "Create API key in new project".
    • Сохраните этот ключ. Он понадобится для подключения к Gemini.
  3. Токен Telegram-бота: Мы создадим его на Шаге 2.
  4. API-ключ для вашего n8n: Мы создадим его на Шаге 1.

Шаг 1: Создание API-ключа для n8n

Этот ключ нужен, чтобы наш workflow мог создавать другие workflow внутри этого же n8n.

  1. В вашем n8n перейдите в Settings -> API.
  2. Нажмите "Add API key".
  3. Дайте ему понятное имя, например, meta_automation_key.
  4. Скопируйте и сохраните сгенерированный ключ. Он будет показан только один раз.

Шаг 2: Создание Telegram-бота

  1. Откройте Telegram и найдите бота @BotFather.
  2. Отправьте ему команду /newbot.
  3. Следуйте инструкциям: придумайте имя для бота (например, "n8n Builder Bot") и username (должен заканчиваться на _bot, например, my_n8n_builder_bot).
  4. BotFather пришлет вам токен. Он выглядит примерно так: 1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789.
  5. Сохраните этот токен.

Шаг 3: Создание основного Workflow в n8n

Это сердце нашего проекта. Создайте новый пустой workflow и добавьте следующие ноды по порядку.

Общая структура будет выглядеть так:

Telegram Trigger -> Google Gemini -> Code -> n8n API -> Telegram

Нода 1: Telegram Trigger

  1. Добавьте ноду Telegram Trigger.
  2. В поле Credentials, нажмите "Create New".
  3. Вставьте токен вашего бота, который вы получили от BotFather.
  4. Оставьте остальные настройки по умолчанию. Сохраните.

Нода 2: Google Gemini (Самая важная нода)

Эта нода будет отправлять запрос пользователя в Gemini и просить сгенерировать JSON для n8n.

  1. Добавьте ноду Google Gemini.
  2. Credentials: Нажмите "Create New". Вставьте API-ключ, полученный в Google AI Studio.
  3. Model: Выберите gemini-1.5-pro-latest или gemini-1.5-flash-latest (Flash быстрее и дешевле, но может быть менее точным).
  4. Operation: Оставьте Chat.
  5. Prompt: Вот здесь и происходит вся магия. Вставьте в поле Text следующий промпт. Это самая важная часть, она "обучает" модель на лету.

Generated text

      Ты — эксперт-разработчик автоматизаций на платформе n8n. Твоя задача — преобразовать текстовый запрос пользователя в валидный JSON-код для workflow в n8n.

ПРАВИЛА:
1.  Всегда генерируй JSON для последних версий нод n8n.
2.  Рабочий процесс должен быть НЕ АКТИВНЫМ по умолчанию (`"active": false`).
3.  Параметр `"staticData": false` должен быть установлен для всего workflow.
4.  В триггер-ноде (например, Cron, Telegram Trigger) обязательно установи параметр `trigger`, чтобы n8n правильно его определил.
5.  Не добавляй никаких комментариев или текста кроме самого JSON. Твой ответ должен быть чистым JSON-кодом, который можно сразу парсить.
6.  Имя workflow (`name`) должно кратко отражать суть запроса пользователя.
7.  Если пользователь просит отправить уведомление "мне" или "в этот чат", используй в ноде Telegram ID чата из входящих данных: `{{ $('Telegram Trigger').item.json.message.chat.id }}`.

ПРИМЕР ЗАПРОСА И ОТВЕТА (чтобы ты понял формат):

---
ЗАПРОС ПОЛЬЗОВАТЕЛЯ: "Создай воркфлоу, который при запуске вручную отвечает 'Привет, мир!'"

ОЖИДАЕМЫЙ JSON-ОТВЕТ:
{
  "name": "Ответ Привет, мир",
  "nodes": [
    {
      "parameters": {},
      "id": "5f4b9f9a-1f6a-4b9f-8f1e-1f8a7f6e5d4c",
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "text": "Привет, мир!"
      },
      "id": "e9a0c2b1-3b8c-4d7e-9f0a-9d8c7b6a5e4d",
      "name": "Set",
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [
        460,
        300
      ]
    }
  ],
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "Set",
            "type": "main"
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {},
  "staticData": false,
  "id": "1",
  "tags": []
}
---

ТЕПЕРЬ ТВОЯ ЗАДАЧА:
Проанализируй запрос ниже и сгенерируй JSON для n8n.

ЗАПРОС ПОЛЬЗОВАТЕЛЯ: {{ $json.message.text }}
    

Объяснение промпта:

  • Мы задаем роль (эксперт n8n).
  • Даем четкие правила (неактивный, staticData: false, чистый JSON).
  • Предоставляем пример (техника "few-shot prompting"), чтобы модель поняла точную структуру, которую мы от нее ждем.
  • В конце вставляем реальный запрос пользователя из Telegram-триггера: {{ $json.message.text }}.

Нода 3: Code (Парсинг и очистка)

Иногда Gemini может "завернуть" JSON в json ... . Эта нода очистит ответ и подготовит его для следующего шага.

  1. Добавьте ноду Code.
  2. В поле JavaScript вставьте следующий код:

Generated javascript

      // Получаем ответ от Gemini
let rawResponse = $('Google Gemini').item.json.text;

// Иногда LLM оборачивает JSON в markdown-блок ```json ... ```
// Этот код очищает его.
if (rawResponse.startsWith('```json')) {
  rawResponse = rawResponse.substring(7, rawResponse.length - 3).trim();
} else if (rawResponse.startsWith('```')) {
  rawResponse = rawResponse.substring(3, rawResponse.length - 3).trim();
}

// Парсим очищенную строку в JSON-объект
const workflowJson = JSON.parse(rawResponse);

// Возвращаем результат для следующей ноды
return workflowJson;
    

IGNORE_WHEN_COPYING_START

content_copy

download

Use code with caution.

JavaScriptIGNORE_WHEN_COPYING_END

Нода 4: n8n API

Эта нода возьмет сгенерированный JSON и создаст новый workflow.

  1. Добавьте ноду n8n API.
  2. Credentials: Нажмите "Create New". В поле API Key вставьте ключ, который вы сгенерировали на Шаге 1. В поле n8n URL вставьте URL вашего n8n-инстанса (например, https://my-n8n.my-domain.com/ или https://myaccount.n8n.cloud/).
  3. Resource: Workflow
  4. Operation: Create
  5. Настройка полей:
    • Name: Используем Expression, чтобы взять имя из сгенерированного JSON. Нажмите на значок шестеренки рядом с полем Name и выберите "Add Expression". Вставьте:
      {{ $json.name }}
    • Nodes: Нажмите "Add Field" -> "Nodes". Включите режим Expression и вставьте:
      {{ JSON.stringify($json.nodes) }}
    • Connections: Нажмите "Add Field" -> "Connections". Включите режим Expression и вставьте:
      {{ JSON.stringify($json.connections) }}
    • Settings: Нажмите "Add Field" -> "Settings". Включите режим Expression и вставьте:
      {{ JSON.stringify($json.settings || {}) }}
    • Static Data: Нажмите "Add Field" -> "Static Data". Включите режим Expression и вставьте:
      {{ $json.staticData }}

Нода 5: Telegram (Отправка ответа)

Сообщим пользователю, что всё готово, и дадим ссылку на новый workflow.

  1. Добавьте ноду Telegram (не триггер, а обычную).
  2. Credentials: Выберите те же, что и в триггере.
  3. Chat ID: Используем Expression, чтобы ответить в тот же чат, откуда пришел запрос.
    {{ $('Telegram Trigger').item.json.message.chat.id }}
  4. Text: Вставьте следующее сообщение, чтобы создать ссылку на новый workflow.

Generated text

      ✅ Готово!

Я создал для вас новый workflow: "{{ $('n8n API').item.json.name }}"

Вот ссылка для его редактирования и активации:
{{ $env.N8N_EDITOR_BASE_URL + 'workflow/' + $('n8n API').item.json.id }}

Не забудьте проверить его и нажать "Activate", чтобы он начал работать.
    

IGNORE_WHEN_COPYING_START

content_copy

download

Use code with caution.

TextIGNORE_WHEN_COPYING_END

  • $env.N8N_EDITOR_BASE_URL - это переменная окружения n8n, которая содержит базовый URL вашего редактора. Она работает как для Cloud, так и для Self-hosted версий.

4. Тестирование и активация

  1. Сохраните ваш workflow.
  2. Активируйте его, нажав на переключатель "Active" в правом верхнем углу.
  3. Откройте Telegram и напишите вашему боту.

Примеры запросов для теста:

  • Простой: Создай воркфлоу, который по крону раз в день в 9 утра отправляет мне сообщение "Доброе утро"
  • Средний: Сделай автоматизацию, которая получает вебхук с данными (имя и email) и добавляет эти данные в гугл таблицу
  • Сложный: Создай воркфлоу, который триггерится по HTTP-запросу, берет из него URL картинки, скачивает ее и отправляет мне в телеграм

Что произойдет:
Вы отправите сообщение -> n8n его получит -> Gemini сгенерирует JSON -> n8n создаст новый workflow -> вы получите в ответ ссылку на него.


5. Важные замечания и возможные проблемы

  • Качество генерации: Gemini (как и любая LLM) может ошибаться. Иногда сгенерированный JSON может быть невалидным или содержать ошибки в логике. Промпт можно и нужно дорабатывать, добавляя больше примеров и правил.
  • Сложность: Очень сложные, многоступенчатые workflow с кастомным кодом могут генерироваться с ошибками. Этот ассистент лучше всего подходит для создания шаблонных, стандартных автоматизаций.
  • Стоимость: Каждый запрос к Gemini API платный. Следите за своим балансом в Google Cloud. Модель gemini-1.5-flash значительно дешевле.
  • Безопасность: Сейчас ваш бот доступен всем, кто его найдет. Чтобы ограничить доступ, можно в самом начале workflow добавить ноду IF и проверять message.chat.id или message.from.username на совпадение с вашим ID/юзернеймом. Если не совпадает — просто завершать workflow.
  • Обновления n8n: n8n постоянно обновляется, появляются новые версии нод. Сгенерированный JSON для старой версии ноды может не подойти для новой. В промпте мы просим использовать последние версии, но это не всегда гарантирует успех.

Этот гайд — мощная основа. Вы можете его расширять, улучшать промпт, добавлять больше логики (например, просить у пользователя уточнения, если запрос неясен) и создавать поистине удивительные "мета-автоматизации". Удачи