ИИ фабрика
Что мы будем создавать?
Вы пишете боту в Telegram: "Создай автоматизацию, которая каждый час проверяет погоду в Москве и, если будет дождь, присылает мне уведомление в этот чат". Бот, используя Gemini, генерирует JSON-структуру этой автоматизации и с помощью n8n API создает её в вашем n8n. Вы получаете ссылку на готовый, но неактивный workflow.
План гайда:
- Подготовка (что нужно заранее)
- Шаг 1: Создание API-ключа для n8n
- Шаг 2: Создание Telegram-бота
- Шаг 3: Создание основного Workflow в n8n (вся магия здесь)
- Настройка триггера Telegram
- Настройка ноды Gemini (с детальным промптом)
- Обработка ответа от Gemini
- Создание нового Workflow через n8n API
- Отправка ответа пользователю
- Тестирование и важные замечания
1. Подготовка
Перед началом вам понадобятся:
- Активный n8n инстанс: Либо в n8n Cloud, либо self-hosted на вашем сервере.
- API-ключ Google Gemini:
- Перейдите в Google AI Studio.
- Нажмите "Get API key" -> "Create API key in new project".
- Сохраните этот ключ. Он понадобится для подключения к Gemini.
- Токен Telegram-бота: Мы создадим его на Шаге 2.
- API-ключ для вашего n8n: Мы создадим его на Шаге 1.
Шаг 1: Создание API-ключа для n8n
Этот ключ нужен, чтобы наш workflow мог создавать другие workflow внутри этого же n8n.
- В вашем n8n перейдите в Settings -> API.
- Нажмите "Add API key".
- Дайте ему понятное имя, например, meta_automation_key.
- Скопируйте и сохраните сгенерированный ключ. Он будет показан только один раз.
Шаг 2: Создание Telegram-бота
- Откройте Telegram и найдите бота @BotFather.
- Отправьте ему команду /newbot.
- Следуйте инструкциям: придумайте имя для бота (например, "n8n Builder Bot") и username (должен заканчиваться на _bot, например, my_n8n_builder_bot).
- BotFather пришлет вам токен. Он выглядит примерно так: 1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789.
- Сохраните этот токен.
Шаг 3: Создание основного Workflow в n8n
Это сердце нашего проекта. Создайте новый пустой workflow и добавьте следующие ноды по порядку.
Общая структура будет выглядеть так:
Telegram Trigger -> Google Gemini -> Code -> n8n API -> Telegram
Нода 1: Telegram Trigger
- Добавьте ноду Telegram Trigger.
- В поле Credentials, нажмите "Create New".
- Вставьте токен вашего бота, который вы получили от BotFather.
- Оставьте остальные настройки по умолчанию. Сохраните.
Нода 2: Google Gemini (Самая важная нода)
Эта нода будет отправлять запрос пользователя в Gemini и просить сгенерировать JSON для n8n.
- Добавьте ноду Google Gemini.
- Credentials: Нажмите "Create New". Вставьте API-ключ, полученный в Google AI Studio.
- Model: Выберите gemini-1.5-pro-latest или gemini-1.5-flash-latest (Flash быстрее и дешевле, но может быть менее точным).
- Operation: Оставьте Chat.
- Prompt: Вот здесь и происходит вся магия. Вставьте в поле 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 ... . Эта нода очистит ответ и подготовит его для следующего шага.
// Получаем ответ от 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;
Use code with caution.
JavaScriptIGNORE_WHEN_COPYING_END
Нода 4: n8n API
Эта нода возьмет сгенерированный JSON и создаст новый workflow.
- Добавьте ноду n8n API.
- Credentials: Нажмите "Create New". В поле API Key вставьте ключ, который вы сгенерировали на Шаге 1. В поле n8n URL вставьте URL вашего n8n-инстанса (например, https://my-n8n.my-domain.com/ или https://myaccount.n8n.cloud/).
- Resource: Workflow
- Operation: Create
- Настройка полей:
- 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.
- Добавьте ноду Telegram (не триггер, а обычную).
- Credentials: Выберите те же, что и в триггере.
- Chat ID: Используем Expression, чтобы ответить в тот же чат, откуда пришел запрос.
{{ $('Telegram Trigger').item.json.message.chat.id }} - Text: Вставьте следующее сообщение, чтобы создать ссылку на новый workflow.
✅ Готово!
Я создал для вас новый workflow: "{{ $('n8n API').item.json.name }}"
Вот ссылка для его редактирования и активации:
{{ $env.N8N_EDITOR_BASE_URL + 'workflow/' + $('n8n API').item.json.id }}
Не забудьте проверить его и нажать "Activate", чтобы он начал работать.
Use code with caution.
- $env.N8N_EDITOR_BASE_URL - это переменная окружения n8n, которая содержит базовый URL вашего редактора. Она работает как для Cloud, так и для Self-hosted версий.
4. Тестирование и активация
- Сохраните ваш workflow.
- Активируйте его, нажав на переключатель "Active" в правом верхнем углу.
- Откройте 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 для старой версии ноды может не подойти для новой. В промпте мы просим использовать последние версии, но это не всегда гарантирует успех.
Этот гайд — мощная основа. Вы можете его расширять, улучшать промпт, добавлять больше логики (например, просить у пользователя уточнения, если запрос неясен) и создавать поистине удивительные "мета-автоматизации". Удачи