n8n: автоматизация с Claude и GPT в workflow

В n8n можно завести один набор кредов и дёргать Claude, GPT и GLM из любого workflow. Показываю настройку через встроенный узел и через HTTP Request для гибких случаев.

5 мин · · Обновлено · автоматизация

n8n можно подключить к шлюзу двумя путями: через встроенный узел под OpenAI-совместимый API (годится для GPT, GLM и, при желании, для Claude через OpenAI-путь) или через голый HTTP Request, когда нужен нестандартный запрос — например count_tokens.

Способ 1 — встроенный OpenAI-узел

В n8n у узлов на базе OpenAI (в том числе AI Agent / Chat Model в LangChain-нодах) в кредах есть поле Base URL помимо API Key. Заводите новый credential:

  • API Key: fetch_ваш_ключ
  • Base URL: https://api.zukko.pro/v1

После сохранения в самом узле в поле модели вписываете точный id: claude-opus-5-5, claude-sonnet-5, gpt-5.6-sol, gpt-5.6-luna, glm-5.3 или glm-5.3-flash (актуальный список — GET https://api.zukko.pro/v1/models). Если узел даёт готовый выпадающий список моделей вместо текстового поля — там обычно есть переключатель "custom model" или прямое текстовое поле под ним, потому что список у n8n подтягивается с сервера OpenAI по умолчанию и наших моделей в нём не будет.

Способ 2 — HTTP Request для Claude и для того, чего нет в узле

Для Anthropic Messages API или для подсчёта токенов проще собрать запрос вручную узлом HTTP Request.

Пример узла под Claude (POST https://api.zukko.pro/v1/messages):

  • Method: POST
  • URL: https://api.zukko.pro/v1/messages
  • Headers: Authorization: Bearer fetch_ваш_ключ, anthropic-version: 2023-06-01, Content-Type: application/json
  • Body (JSON):
bash
{
  "model": "claude-sonnet-5",
  "max_tokens": 512,
  "messages": [
    {"role": "user", "content": "{{ $json.text }}"}
  ]
}

Это же годится для /v1/messages/count_tokens — бесплатного эндпоинта, полезного, чтобы заранее прикинуть длину промпта перед дорогим шагом в workflow, без реального запроса к модели.

Обработка ошибок в workflow

n8n по умолчанию останавливает выполнение на не-2xx ответе, если не включить "Continue On Fail" в узле HTTP Request. Для автоматизаций, которые крутятся без присмотра, стоит явно ветвить по коду ошибки:

  • 402 с insufficient_balance — баланс закончился; логично слать уведомление в отдельный канал вместо тихого падения workflow.
  • 429 с key_daily_limit_reached или key_monthly_limit_reached — упёрлись в лимит именно этого ключа (настраивается на странице ключа в /app/api-keys); если для продакшн-автоматизации нужен более высокий лимит, поднимите его там же.
  • 503 с model_disabled — модель выключена в каталоге (это не 404 и не model_retired); стоит логировать это отдельно и переключить узел на модель из актуального списка GET https://api.zukko.pro/v1/models, чтобы не пропустить смену модели в каталоге.
  • 503 с provider_unavailable — временное состояние конкретной модели, для критичных workflow имеет смысл настроить retry с задержкой на этот код отдельно от остальных.

Идемпотентность для повторных запусков

Если workflow может быть перезапущен вручную или ретраится автоматически при сбое ноды, добавьте заголовок Idempotency-Key со значением, детерминированным от входных данных (например, хэш от $json конкретного элемента). Повтор с тем же ключом идемпотентности в течение 24 часов вернёт тот же ответ без повторного списания — это спасает, когда шаг с генерацией текста уже отработал, а упал следующий узел, и весь workflow гоняют заново.

Кэш для повторяющихся промптов

Если в workflow есть шаг с одинаковым промптом для одинаковых входных данных (например, классификация по фиксированному набору категорий), включите кэш через заголовок X-Zukko-Cache: true (temperature: 0 тоже включает кэш, но только у моделей, которые принимают этот параметр; Claude-модели — claude-sonnet-5, claude-opus-5-5 — могут отклонить temperature, отличную от 1, с ошибкой 400, поэтому им его не передавайте) — повторный одинаковый запрос от того же пользователя вернётся мгновенно и бесплатно, в ответе будет X-Zukko-Cache: hit. Для чата кэш живёт до 7 суток, что покрывает большинство периодических workflow (ежедневные дайджесты, регулярные отчёты).

Стоимость запуска

Каждый обычный (не потоковый) ответ шлюза несёт заголовки X-Zukko-Cost-Micros и X-Fetch-Balance-Cents (несмотря на название, баланс в нём в микродолларах: 1 000 000 = $1); у ответов с stream: true этих заголовков нет. В узле HTTP Request их можно вытащить в отдельные поля через "Response" → "Include Response Headers" и логировать в таблицу — удобно для workflow, который считает деньги по шагам, а не только по итоговому балансу.

Ключ создаётся на https://zukko.pro/app/api-keys, показывается один раз. Для продакшн-автоматизаций разумно завести отдельный ключ с собственным дневным лимитом — так баг в workflow с бесконечным циклом не съест весь баланс аккаунта.

Веб-поиск как отдельный шаг перед основным запросом

Если workflow строит ответ моделью без встроенного поиска, а нужны свежие данные, добавьте перед основным HTTP Request ещё один узел на /v1/web-search и подставьте результат в промпт следующего шага:

bash
{
  "method": "POST",
  "url": "https://api.zukko.pro/v1/web-search",
  "body": {"query": "{{ $json.searchQuery }}"}
}

Так получается двухшаговый workflow: сначала свежие данные, потом их обработка моделью — без этого модель отвечает по своим знаниям на момент обучения.

Мониторинг расходов отдельным workflow

Полезный побочный сценарий в n8n — отдельный workflow по расписанию (Cron-триггер раз в день), который ходит в /v1/usage с курсорной пагинацией и /v1/balance, и при низком остатке шлёт уведомление в Slack или тот же Telegram:

bash
GET https://api.zukko.pro/v1/balance
Authorization: Bearer fetch_ваш_ключ

Список моделей с лимитами и ценами для такого дашборда берётся из GET /v1/models/info — без ключа, поэтому этот узел можно вынести в общий workflow, доступный всей команде, не раскрывая сам ключ.

Реферальная программа для агентств на n8n

Если настраиваете такие workflow для нескольких клиентов и советуете им завести свой аккаунт на zukko.pro, по реферальной программе начисляется 10% с их пополнений — регистрируется это через кабинет, отдельной настройки в n8n не требует.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.