Как подключить OpenRouter в n8n без кода — flow, смена модели и мультимодальность

Как подключить OpenRouter в n8n без кода — flow, смена модели и мультимодальность

 

Разберёмся, как подключить OpenRouter в n8n и собрать рабочий сценарий без единой строки кода. n8n это open-source платформа автоматизации, где логика собирается из узлов на визуальном холсте. OpenRouter отдаёт всё через OpenAI-совместимый API, поэтому подключается он в пару полей. В статье соберём контентный флоу, покажем, как через один ключ идут текст, картинки и транскрипция, и честно сравним n8n с открытыми альтернативами. Все вызовы проверены на реальном стенде.

 

Почему OpenRouter удобен в no-code

В low-code сценариях смена провайдера модели обычно боль: свой узел, свои креды, свой формат. OpenRouter снимает это. Один ключ, один базовый адрес, десятки моделей, и всё в привычном формате OpenAI. Значит, любой узел, который умеет говорить с OpenAI, работает с OpenRouter после смены базового адреса.

Выгода видна на практике. Хотите попробовать другую модель, меняете одну строку, а не переписываете сценарий. Нужна модель дешевле или новее, она уже доступна по тому же ключу. Для команды это ещё и единый счёт вместо десятка договоров с провайдерами.

Если вы ещё не выпустили ключ, начните со статьи про старт с OpenRouter. Управление провайдерами разобрано в статье про маршрутизацию, а экономия в статье про токены. Общий разбор самой платформы автоматизации есть в вики-статье про n8n.

флоу от триггера через HTTP Request к OpenRouter с веером на текст, картинку, транскрипцию - хинты для использования OpenRouter

Дальше соберём этот флоу по шагам и проверим каждый вызов.

 

Подключение к n8n OpenRouter

Подключить OpenRouter можно двумя путями. Первый через готовый узел с базовым адресом OpenAI, второй через универсальный HTTP Request. Первый быстрее, второй гибче и подходит под любой эндпоинт.

 

Через узел OpenAI со сменой базового адреса

У n8n есть узел OpenRouter Chat Model для сборки агентов и есть узел OpenAI. В узле OpenAI при создании credential укажите базовый адрес https://openrouter.ai/api/v1 и вставьте ключ OpenRouter. После этого выбираете любую модель OpenRouter в поле модели, остальной узел не меняется. Это самый быстрый путь для чата и агентных сценариев.

По старой традиции весь код используемый в статье 4 выкладываем на наш GitHub репозиторий
OpenRouter в n8n без кода from airflow import DAG from airflow.operators.bash import BashOperator from datetime import datetime with DAG( dag_id="spark_submit_demo", start_date=datetime(2025, 1, 1), schedule="@daily", catchup=False ) as dag: run = BashOperator( task_id="run_job", bash_command="spark-submit app.py" ) GitHub code example OpenRouter в n8n без кода

 

Через узел HTTP Request

Универсальный путь это узел HTTP Request. Он бьёт напрямую в эндпоинт и умеет всё, что умеет API. Метод POST, адрес https://openrouter.ai/api/v1/chat/completions, заголовок авторизации и JSON-тело. Ключ лучше положить в Header Auth credential, а не хардкодить.

# тело запроса узла HTTP Request (JSON body)
{
  "model": "openai/gpt-4o-mini",
  "messages": [
    { "role": "user", "content": "Напиши короткий пост в блог про: {{ $json.topic }}" }
  ]
}

Готовый флоу лежит в файле openrouter_n8n_content_flow.json в репозитории кода статьи 4, его можно импортировать в один клик через Import from File.

Простая модель flow в n8n для тестирования Openrouter

Ответ модели приходит в поле choices, и его обычно достают следующим узлом. В узле Set добавляете поле с выражением, которое берёт текст из ответа. В n8n это выглядит как обращение к пути внутри JSON предыдущего узла. Дальше готовый текст уходит туда, куда нужно: в базу, в письмо, в мессенджер.

Настройка авторизация наверное самый тяжелый момент в этой статье OpenRouter with n8n

Про безопасность стоит сказать отдельно. Ключ в n8n лучше хранить как credential Header Auth, а не вписывать в узел. Тогда он не попадает в экспортируемый JSON и переиспользуется во всех узлах флоу. При импорте чужого воркфлоу вы просто подставляете свой credential, и ключ остаётся при вас.

 

Смена модели по шагам флоу

Одно из главных удобств: разные шаги флоу могут звать разные модели. Черновик генерит дешёвая модель, финальную вычитку делает сильная. Менять модель просто, вы правите одно поле model в теле запроса нужного узла. Идентификатор берёте из каталога моделей OpenRouter, например openai/gpt-4o-mini для черновика и посильнее для финала. Ключ и адрес при этом не трогаете.

Это тот же каскад, что мы считали в статье про экономику, только собранный мышью. Дешёвая модель делает черновую массу работы, дорогая подключается точечно. На потоке задач такой расклад заметно экономит, а перенастройка занимает секунды.

 

ИИ-агенты для оптимизации бизнес-процессов

Код курса
AGENT
Ближайшая дата курса
26 октября, 2026
Продолжительность
24 ак.часов
Стоимость обучения
66 000

 

Контентный сценарий на n8n с OpenRouter

Соберём простой контентный флоу из трёх узлов. Триггер запускает сценарий, узел Тема задаёт тему поста, узел HTTP Request зовёт OpenRouter и возвращает готовый текст. Тема прокидывается в тело запроса через выражение n8n, поэтому один и тот же флоу генерит посты на любую тему.

Контентный сценарий на n8n для использования с OpenRouter

Тот же скелет расширяется под RAG или рассылку: перед узлом OpenRouter добавляете поиск по базе знаний, после него отправку в почту или мессенджер. Логика собирается мышью, а модель остаётся сменной одним полем. Связка с агентными сценариями подробно разбирается в курсе про ИИ-агентов для оптимизации бизнес-процессов.

Flow удобно ставить на расписание и защищать от сбоев. Вместо ручного запуска подключаете триггер по времени, и посты выходят сами. У каждого узла есть повтор при ошибке, поэтому разовый сбой провайдера не роняет весь сценарий. Здесь же пригодится fallback по моделям из статьи про маршрутизацию.

 

Один ключ на текст, картинки и транскрипцию

Ещё одно удобство для low-code: тем же ключом идут не только тексты. Через один базовый адрес доступны генерация картинок и транскрипция аудио. Не нужно поднимать отдельный Whisper-сервер или плодить креды под каждую модальность. Проверим это на стенде одним ключом: текст, картинку и транскрипцию. Речь синтезируем тут же, чтобы получить аудио для распознавания.

# протестировано на EU-ноде (AWS Stockholm) 2026-08-04: Python 3.12.3, httpx 0.28.1, OpenRouter API
import os, base64, json, wave
import httpx

key = os.environ["OPENROUTER_API_KEY"]
H = {"Authorization": f"Bearer {key}"}
BASE = "https://openrouter.ai/api/v1"

# 1. Текст: chat к openai/gpt-4o-mini
chat = httpx.post(f"{BASE}/chat/completions", headers=H, timeout=60, json={
    "model": "openai/gpt-4o-mini",
    "messages": [{"role": "user", "content": "Ответь одним словом: готово"}],
    "max_tokens": 5,
}).json()
print("текст:", chat["choices"][0]["message"]["content"].strip())

# 2. Картинка: chat к google/gemini-2.5-flash-image с modalities ["image","text"] сохраняем PNG
img = httpx.post(f"{BASE}/chat/completions", headers=H, timeout=120, json={
    "model": "google/gemini-2.5-flash-image",
    "messages": [{"role": "user", "content": "Нарисуй простой логотип: синий круг на белом фоне"}],
    "modalities": ["image", "text"],
}).json()
url = img["choices"][0]["message"]["images"][0]["image_url"]["url"]
png = base64.b64decode(url.split(",", 1)[1])
open("logo.png", "wb").write(png)
print("картинка: logo.png,", len(png), "байт")

# 3. Синтез речи: стрим аудио от openai/gpt-audio, собираем WAV
pcm = bytearray()
with httpx.stream("POST", f"{BASE}/chat/completions", headers=H, timeout=180, json={
    "model": "openai/gpt-audio",
    "modalities": ["text", "audio"],
    "audio": {"voice": "alloy", "format": "pcm16"},
    "stream": True,
    "messages": [{"role": "user", "content": "Скажи ровно фразу: Проверка транскрипции через ОупенРоутер"}],
}) as r:
    for line in r.iter_lines():
        if not line.startswith("data: "):
            continue
        chunk = line[6:]
        if chunk.strip() == "[DONE]":
            break
        au = json.loads(chunk)["choices"][0]["delta"].get("audio")
        if au and au.get("data"):
            pcm += base64.b64decode(au["data"])
with wave.open("speech.wav", "wb") as w:
    w.setnchannels(1); w.setsampwidth(2); w.setframerate(24000); w.writeframes(bytes(pcm))
print("речь: speech.wav,", len(pcm), "байт PCM16")

# 4. Транскрипция того же аудио: POST /audio/transcriptions с моделью openai/gpt-4o-transcribe
tr = httpx.post(f"{BASE}/audio/transcriptions", headers=H, timeout=120,
                files={"file": ("speech.wav", open("speech.wav", "rb"), "audio/wav")},
                data={"model": "openai/gpt-4o-transcribe"}).json()
print("транскрипция:", tr["text"])

Все четыре ответа пришли через один ключ и один базовый адрес. Картинка вернулась прямо в ответе чата как изображение, а транскрипция распознала ровно ту фразу, что мы синтезировали. В n8n это те же вызовы, только собранные узлами. Полный сценарий в файле multimodal_onekey.py.

Выполнение 4 заданий через 1 ключ и n8n flow с OpenRouter

В флоу это ложится естественно. Для картинки тот же узел HTTP Request с моделью-генератором, ответ приходит бинарным изображением. Для транскрипции узел шлёт аудиофайл на эндпоинт распознавания. Ключ и базовый адрес общие, меняется только тело запроса. Так один сценарий обрабатывает текст, картинки и звук без зоопарка сервисов.

 

Открытые альтернативы для self-hosted

n8n не единственный вариант, и для команды с требованием держать всё у себя полезно знать соседей. Все перечисленные платформы open-source, разворачиваются на своём сервере и цепляют OpenRouter как OpenAI-совместимый эндпоинт. Это аргумент для импортозамещения: промпты и данные не покидают вашу инфраструктуру.

Платформа Профиль Агенты С OpenRouter
n8n Автоматизация плюс ИИ, много интеграций Встроенный Agent builder Узел OpenRouter или HTTP Request
Flowise Визуальный билдер агентов и RAG AgentFlow OpenAI-совместимый эндпоинт
Dify LLM-ops платформа с воркфлоу Агентные воркфлоу Провайдер OpenRouter
Langflow Визуальные графы на LangChain Есть, плюс режимы MCP OpenAI-совместимый узел
Activepieces Автоматизации в духе n8n Лидер по MCP-серверам HTTP или коннектор

Выбирают по задаче. n8n берут, когда нужна автоматизация с кучей интеграций и ИИ заодно. Flowise и Langflow ближе для прототипов агентов и RAG. Dify удобен как LLM-ops платформа под команду. Activepieces выделяется числом MCP-серверов. Общее у них одно: OpenRouter подключается почти так же, как в n8n.

Важная оговорка про сеть. Если развернуть любую из них на российском сервере, запросы к openrouter.ai могут упереться в блок Cloudflare на 403. n8n cloud за рубежом обходит это сам, а для self-hosted в России нужен прокси или зарубежный egress. Подробный разбор обхода гео вынесен в отдельную статью серии.

 

ИИ-агенты для оптимизации бизнес-процессов

Код курса
AGENT
Ближайшая дата курса
26 октября, 2026
Продолжительность
24 ак.часов
Стоимость обучения
66 000

 

Что дальше в серии

Итог такой. OpenRouter подключается в n8n сменой базового адреса или через узел HTTP Request. Модель меняется одним полем на любом шаге флоу, а один ключ покрывает текст, картинки и транскрипцию. Для self-hosted есть живые открытые альтернативы под импортозамещение. В следующей статье серии перейдём к tool calling, строгому JSON и агентам, чтобы модель не только отвечала, но и вызывала ваши функции надёжно.

 

Референсные ссылки