7 мин чтенияИнтеграции

URL-шортенер для n8n: узел HTTP Request или community-узел Elido

Постройте URL-шортенер для n8n на API Elido: настройка HTTP Request, ID домена и рабочего пространства, три workflow с короткими ссылками, повторы и community-узел Elido.

Marius Voß
DevRel · edge infra
Обложка в пиксельном стиле, показывающая workflow URL-шортенера в n8n, где узел-триггер отправляет длинный URL в Elido, а следующий шаг получает отслеживаемую короткую ссылку

Чтобы построить URL-шортенер для n8n на Elido уже сегодня, используйте встроенный узел HTTP Request n8n: отправьте POST на /v1/workspaces/{workspace_id}/links с Bearer-токеном, domain_id и destination_url, и в ответе вернутся slug новой ссылки и short_url. Этот путь работает одинаково и в n8n Cloud, и в self-hosted версии. Есть также готовый community-узел, n8n-nodes-elido, опубликованный в npm (0.2.0), который оборачивает тот же API в типизированные поля для self-hosted инстансов.

Большинство поисковых запросов про короткие ссылки в n8n хотят именно этот первый путь. Узлу HTTP Request нужно около пяти минут настройки: одни учетные данные, два ID из вашего рабочего пространства и JSON-тело. После этого это просто еще один узел.

Я написала это по исходникам API и пакета, а не по маркетинговым текстам, потому что тело запроса легко указать точно и мучительно угадывать. Если сам REST API для вас в новинку, быстрый старт по API и SDK разбирает токены, рабочие пространства и остальную поверхность, на которой строится этот пост.

Два способа сокращать ссылки в n8n

У n8n нет встроенного шортенера, так что есть два способа подключить Elido:

  • Узел HTTP Request. Встроен в каждую редакцию n8n, обращается к любому endpoint и позволяет самостоятельно задавать заголовки вроде Idempotency-Key. Это эталонный путь.
  • Community-узел n8n-nodes-elido. Готовый узел Elido с ресурсом Link и четырьмя операциями (Create, Get, List, Get Analytics) плюс тип учетных данных Elido API. Только для self-hosted.

Рецепты для Make и IFTTT рассматривают n8n как один вариант из четырех платформ. Здесь n8n получает весь пост целиком.

Сокращение URL узлом HTTP Request

Начните с токена. В Elido откройте Settings, затем API Tokens, и создайте персональный токен доступа; он начинается с elido_ и показывается один раз. В n8n создайте учетные данные Header Auth с именем Authorization и значением Bearer elido_.... n8n шифрует их на хранении и не включает в экспортированный JSON workflow, что лучше, чем вставлять заголовок в каждый узел каждого workflow, а потом разыскивать их все в день, когда токен ротируется. Назначьте токену роль редактора и укажите срок действия; в нашем разборе разрешений API-ключей для инструментов сокращения ссылок объясняется, почему рабочему процессу для ссылок никогда не нужны права администратора.

Далее - два числа. ID вашего рабочего пространства находится в URL дашборда сразу после /dashboard/. Для домена выполните один GET-запрос к /v1/workspaces/{workspace_id}/domains из одноразового узла HTTP Request: у каждого элемента есть id и hostname, и вам понадобятся оба.

Затем сам вызов создания:

Method:         POST
URL:            https://api.elido.app/v1/workspaces/1/links
Authentication: Generic credential > Header Auth (Authorization: Bearer elido_...)
Headers:        Idempotency-Key: {{ $execution.id }}-{{ $itemIndex }}
Body (JSON):    {
                  "domain_id": 7,
                  "destination_url": "{{ $json.link }}",
                  "title": "{{ $json.title }}",
                  "tags": ["n8n", "rss"]
                }

Ответ - это запись ссылки: id, slug, short_url, destination_url, domain_id, теги и метки времени. Передайте {{ $json.short_url }} в следующий узел; записанное вами имя хоста важно только в том случае, если вы собираете URL вручную. Добавьте поле slug для настраиваемой второй половины ссылки (тариф Starter и выше), либо оставьте его пустым, и Elido сгенерирует его сам. Документация узла HTTP Request в n8n описывает остальные опции, включая встроенную пагинацию для списочных вызовов.

Как узел HTTP Request в n8n создает короткую ссылку Elido: учетные данные Header Auth с Bearer-токеном, POST на endpoint ссылок рабочего пространства с domain_id и destination_url, и полученный в ответе slug, объединенный с именем хоста домена

Community-узел Elido для self-hosted n8n

Готовый узел продает одну вещь: типизированные поля. Он регистрирует учетные данные Elido API (Base URL, API Token, то есть ключ API рабочего пространства, начинающийся с elido_, и Workspace ID), а проверка учетных данных вызывает GET /v1/workspaces/{id}. Затем идет один узел Elido с ресурсом Link. Create принимает целевой URL плюс необязательные собственный slug, ID домена, заголовок, теги, срок действия и статус перенаправления 301, 302 или 307. Get получает одну ссылку по ID. List принимает лимит от 1 до 100 и фильтры по поиску, тегам и активному или отключенному статусу, выдавая по одному элементу n8n на ссылку. Get Analytics принимает ID ссылки и отчет (клики во времени или клики по стране, источнику, устройству или браузеру), даты From и To, по умолчанию за последние 30 дней, и интервал в день или час, выдавая по одному элементу на строку. Ответы ссылок содержат short_url.

Прежде чем на него рассчитывать, применяется одно условие. n8n Cloud принимает только проверенные community-узлы, а этот не проверен, так что либо self-hosted, либо ничего. Сам пакет опубликован в npm в версии 0.2.0:

npm view n8n-nodes-elido version

На self-hosted-инстансе владелец или администратор может открыть Settings, затем Community Nodes, выбрать Install и ввести n8n-nodes-elido. В Docker вместо этого задайте N8N_COMMUNITY_PACKAGES="n8n-nodes-elido". Триггер-узла Elido пока нет, он запланирован, поэтому события ссылок по-прежнему поступают через узел Webhook n8n, а действия Update и Look Up by slug тоже запланированы. В справочнике n8n по self-hosted описаны шаги настройки. Руководство по установке community-узлов n8n описывает пути через GUI, вручную и через переменные окружения, включая ручной путь, который нужен для настроек в режиме очереди.

Три workflow с короткими ссылками в n8n, которые стоит построить

Вот потоки, которые я бы построила первыми, в порядке возрастания хлопотности. Каждый использует вызов HTTP Request сверху плюс стандартные узлы n8n, так что ни один не зависит от community-пакета.

RSS в короткую ссылку в Slack. RSS Feed Trigger опрашивает фид вашего блога. Узел HTTP Request отправляет {{ $json.link }} как назначение и {{ $json.title }} как заголовок. Затем узел Slack публикует имя хоста плюс {{ $json.slug }} в ваш канал анонсов. Это три узла, ноль заходов в дашборд. Если хотите UTM-теги на этих ссылках, соберите их в целевом адресе заранее узлом Set; в нашем руководстве по отслеживанию UTM есть соглашение об именовании.

Новая строка таблицы в короткую ссылку и обратно. Триггер Google Sheets срабатывает на каждую новую строку, вызов создания сокращает колонку url, а второй узел Sheets записывает готовый короткий URL обратно в ту же строку. Это самодельная версия массового импорта из Google Sheets, лучше подходит, когда строки приходят понемногу каждый день, и хуже, когда вы вставляете 5000 сразу.

Новая ссылка в канал аудита. Поставьте сначала узел Webhook в n8n и подпишите его production-URL на link.created в Settings, Webhooks в Elido. Включите опцию Raw Body у узла Webhook, потому что подпись - это HMAC-SHA256 по timestamp.raw_body, и пересериализованное JSON-тело не совпадет. Проверьте в узле Code, затем опубликуйте slug и назначение в Slack. Форма webhook в дашборде перечисляет события жизненного цикла ссылок и рабочего пространства, а не события по каждому клику (событие click.created запланировано), так что для отчетов по кликам я бы вместо этого запускала запланированный опрос. Статья о событиях webhook разбирает повторы и заголовки.

Workflow URL-шортенера n8n из трех узлов: RSS Feed Trigger передает ссылку и заголовок элемента узлу HTTP Request, который создает ссылку Elido, а узел Slack публикует имя хоста плюс полученный slug

Устали вставлять ссылки вручную в одни и те же три инструмента каждый понедельник? Откройте бесплатное рабочее пространство, создайте токен и соберите описанный выше RSS-поток примерно за то время, что уйдет на чтение этого раздела.

Обработка ошибок: повторы, дубликаты и неудачные запуски

n8n дает каждому узлу две важные здесь настройки. Retry On Fail перезапускает узел при ошибке с выбранной вами паузой, а On Error решает, остановится ли workflow, продолжит работу или направит сбой в отдельный выход ошибки. Для защиты на уровне всего workflow руководство n8n по изящной обработке ошибок показывает, как направить каждый workflow на один workflow ошибок, начинающийся с Error Trigger.

Подберите настройку под код статуса. 429 или любой 5xx стоит повторить с паузой в несколько секунд, поскольку API задает Retry-After при превышении лимита, а бесплатный тариф допускает 60 запросов в минуту. 400 сам по себе не исправится, и обычно это означает отсутствующий domain_id или destination_url. 409 при создании означает, что собственный slug уже занят, так что направьте это в выход ошибки и добавьте суффикс, а не повторяйте тот же запрос пять раз подряд.

Вот часть, которую я бы хотела, чтобы мне кто-то рассказал. Без Idempotency-Key вызов создания, который истекает по таймауту уже после того, как сервер записал ссылку, при повторе создаст дубликат. Именно поэтому в примере выше отправляется ключ, собранный из ID выполнения и индекса элемента: повтор того же элемента воспроизводит исходный ответ вместо создания второй ссылки. Руководство по лимитам запросов и идемпотентности объясняет окно повтора.

Community-узел против HTTP Request: что выбрать

Готовый узел и узел HTTP Request обращаются к одному и тому же API, так что это скорее выбор в плане поддержки, чем в плане возможностей.

Узел HTTP RequestCommunity-узел Elido
Работает в n8n CloudДаНет, только self-hosted
EndpointВсеCreate, Get, List, Get Analytics
Заголовок Idempotency-KeyДобавляете самиНе доступен
НастройкаУчетные данные Header Auth плюс JSON-телоТипизированные поля и учетные данные Elido API
Лучше всего дляПродакшен-потоков и всего нестандартногоПростых потоков, которые поддерживает не разработчик

Мое эмпирическое правило: стройте по умолчанию на HTTP Request, потому что он работает в любой редакции n8n и вы контролируете каждый заголовок, а к community-узлу обращайтесь на self-hosted инстансе, когда workflow будет вести кто-то, кто не читает JSON, и когда четырех его операций достаточно для задачи. Полный список endpoint - на странице функции API и SDK, а если модель push подходит лучше, чем опрос, webhook Elido покрывают исходящую сторону. Взвешиваете вместо этого готовые инструменты? Прочитайте также разбор Zapier.

Прочитайте опорную статью → быстрый старт по API и SDK URL-шортенера

По теме в блоге

Частые вопросы

Есть ли у n8n встроенный узел URL-шортенера?

Нет. n8n не поставляет собственный шортенер, так что вы вызываете REST API шортенера из встроенного узла HTTP Request или устанавливаете community-узел. Для Elido узел HTTP Request - путь, который сегодня работает в любой редакции n8n, а опубликованный в npm пакет n8n-nodes-elido - типизированный вариант для self-hosted инстансов.

Можно ли установить community-узел Elido в n8n Cloud?

Нет. n8n Cloud предлагает только проверенные community-узлы, а n8n-nodes-elido не входит в проверенный список, так что ему нужен self-hosted инстанс. В Cloud используйте узел HTTP Request с учетными данными Header Auth, который обращается к тому же API Elido.

Как сократить URL в n8n без community-узла?

Добавьте узел HTTP Request, задайте метод POST и URL https://api.elido.app/v1/workspaces/{workspace_id}/links, прикрепите учетные данные Header Auth с вашим Bearer-токеном и отправьте JSON-тело с domain_id и destination_url. В ответе вернутся slug новой ссылки и готовый short_url.

Где найти domain_id для короткой ссылки Elido?

Вызовите GET /v1/workspaces/{workspace_id}/domains с теми же учетными данными. У каждого элемента в ответе есть id и hostname, так что выберите домен, на котором должны жить ссылки, и зафиксируйте его id в вызове создания. Сохраните и hostname на случай, если когда-нибудь будете собирать короткий URL вручную, хотя в ответах уже есть short_url.

Почему API Elido возвращает в n8n 401 или 403?

401 означает, что токен отсутствует, неверно введен или отозван, так что пересоздайте его в Settings, API Tokens и вставьте заново в учетные данные Header Auth. 403 означает, что токен действителен, но у него нет прав в этом рабочем пространстве, что обычно указывает на неверный ID рабочего пространства в URL, а не на плохой токен.

Может ли n8n создавать собственные slug или короткие ссылки с истечением срока?

Да. Добавьте поле slug в тело создания для настраиваемой второй половины ссылки на тарифах Starter и выше, либо оставьте его пустым, и Elido сгенерирует slug сам. Чтобы задать срок действия, добавьте метку времени expires_at в то же тело создания или отправьте PATCH на URL существующей ссылки с ней.

Попробуйте Elido

Вставьте URL - получите короткую ссылку

Без регистрации. Ссылка живёт 30 дней. Зарегистрируйтесь, чтобы оставить её навсегда.

Бесплатно, без регистрации · 2 в день

Попробуйте Elido

URL-сокращатель с хостингом в ЕС: собственные домены, глубокая аналитика, открытый API. Бесплатный тариф - без банковской карты.

Теги
n8n url shortener
n8n short link
n8n community node
workflow automation
http request node
self-hosted n8n

Читать дальше