Этот пост — пошаговый разбор рабочего процесса в n8n: от подписки на RSS YouTube до публикаций в Telegram, Facebook Page и Instagram. Все примеры настроек и промптов даны с шаблонными плейсхолдерами, чтобы вы могли вставить свои данные и запустить у себя.
Что вы соберёте
- Автопоиск новых видео на вашем YouTube-канале (через RSS).
- Генерацию короткого цепляющего текста поста с помощью LLM.
- Публикацию в Telegram (канал/группа), Facebook Page и Instagram (картинка-превью + подпись).
- Безопасное хранение токенов в Credentials/переменных окружения.
⚙️ n8n можно развернуть локально (Docker) или в облаке. Рекомендуемая таймзона: America/Argentina/Buenos_Aires (или ваша).
Требования и переменные (подставьте свои данные)
- YouTube Channel ID →
{{YOUTUBE_CHANNEL_ID}} - Telegram: бот +
{{TELEGRAM_CHAT_ID}}(канал/супергруппа; бот = админ) - Facebook:
{{FB_PAGE_ID}}(ID страницы), валидные права и токен - Instagram: бизнес/creator-аккаунт, привязанный к странице;
{{IG_USER_ID}},{{IG_LONG_LIVED_TOKEN}} - OpenAI:
{{OPENAI_API_KEY}}
Рекомендуемые переменные окружения (или Credentials):
YOUTUBE_CHANNEL_ID=
TELEGRAM_CHAT_ID=
FB_PAGE_ID=
IG_USER_ID=
IG_LONG_LIVED_TOKEN=
OPENAI_API_KEY=
🔒 Не хардкодьте токены в полях нод. Используйте Credentials / $env / $credentials.
Архитектура потока
graph TD;
A[RSS Feed Trigger]-->B[Set: видео/превью]
B-->C[Basic LLM Chain: текст поста]
C-->D[Telegram: sendMessage]
C-->E[Facebook Graph: /PAGE_ID/feed]
C-->F[HTTP: IG /media]
F-->G[HTTP: IG /media_publish]
Краткий план (TL;DR)
- RSS Feed Trigger → URL фида вашего канала.
- Set → извлечь
video_idиimage_urlпревью. - OpenAI Chat Model + Basic LLM Chain → сгенерировать текст публикации.
- Telegram → отправить «чистое» сообщение (без хэштегов в теле).
- Facebook Graph API →
feedсmessage + link. - Instagram →
POST /media(image) →POST /media_publish.
Узлы и настройки (копируйте и заменяйте плейсхолдеры)
1) RSS Feed Trigger
- Poll: Every hour (или ваш интервал)
- Feed URL:
https://www.youtube.com/feeds/videos.xml?channel_id={{$env.YOUTUBE_CHANNEL_ID}}
Триггер отдаёт только новые видео.
2) Set — «Edit Fields – Превью YouTube»
Добавьте поля (Assignments):
- video_id (String)
{{$json["link"].match(/(?:v=|shorts\/)([^&?\/]*)/)?.[1]}} - image_url (String)
https://img.youtube.com/vi/{{$json["link"].match(/(?:v=|shorts\/)([^&?\/]*)/)?.[1]}}/hqdefault.jpg
Оставьте Include Other Fields включённым, чтобы не потерять исходные поля RSS.
3) OpenAI Chat Model (модель для LangChain)
- Model:
gpt-3.5-turbo(или актуальная) - Max tokens: 400
- Temperature: 0.8
- Credentials: ваш
{{OPENAI_API_KEY}}
Этот узел подключается к Chain как ai_languageModel.
4) Basic LLM Chain — генерация текста поста
Подключите ai_languageModel к узлу «OpenAI Chat Model».
Сообщения промпта (messages):
System / Общая инструкция
Ты опытный SMM-специалист. Твоя задача — создавать цепляющие посты для соцсетей (Telegram, Instagram, Facebook), чтобы продвигать новое видео YouTube.
Пиши по-русски. Используй живой, эмоциональный стиль, эмодзи и призыв к действию. ⚠️ Не используй хэштеги в тексте публикации.
Текст короткий и понятный (до 400 символов). Если нужны хэштеги — выведи их отдельной строкой в конце.
Human / Пользовательское сообщение
Новое видео на канале:
Название: {{ $json.title }}
Ссылка: {{ $json.link }}
Создай короткий пост (до 400 символов), чтобы привлечь внимание зрителя.
Канал: {{ВСТАВЬТЕ КОРОТКОЕ ОПИСАНИЕ СВОЕГО КАНАЛА}}
Цель: эмоции + переход по ссылке.
Стиль: живой, разговорный, допустима ирония; с эмодзи; без «жми на ссылку».
В конце отдельной строкой: 10 релевантных хэштегов + #ВашХэштег.
Выход узла: поле text с готовым постом.
💡 Хотите сразу испанскую версию? Дублируйте Chain и поменяйте System/Human на испанский.
5) Set — «Очистка хэштегов» (для Telegram)
Создайте поле message (String):
{{$json.text
.replace(/#[\wÀ-ÿ]+/g, "")
.replace(/\s{2,}/g, " ")
.trim()}}
6) Telegram — отправка сообщения
- Operation: Send a text message
- chatId:
{{$env.TELEGRAM_CHAT_ID}} - text:
🆕 Новое видео на YouTube! 📺 {{ $('RSS Feed Trigger').item.json.title }} 📝 {{ $json.message }} - parse_mode:
HTML - disable_web_page_preview:
false
Убедитесь, что бот админ канала/супергруппы. Для chat_id канала используйте вид -100xxxxxxxxxx.
7) Facebook Graph API — публикация на страницу
- Edge:
feed - Page:
{{$env.FB_PAGE_ID}} - Query Params:
message={{$json.text}}link={{ $('RSS Feed Trigger').item.json.link }}
Требуются валидные права приложения/токена. Для аналитики добавьте UTM к ссылке (см. ниже).
8) Instagram — HTTP Request: Create Media
- Method:
POST - URL:
https://graph.facebook.com/v18.0/{{$env.IG_USER_ID}}/media - Send body:
true(Form-Urlencoded) - Body:
image_url={{ $('Edit Fields – Превью YouTube').item.json.image_url }}caption={{$json.text}}access_token={{$env.IG_LONG_LIVED_TOKEN}}
Ожидаемый ответ: { id: <creation_id> }
9) Instagram — HTTP Request: Publish Media
- Method:
POST - URL:
https://graph.facebook.com/v18.0/{{$env.IG_USER_ID}}/media_publish - Send body:
true(Form-Urlencoded) - Body:
creation_id={{$json.id}}access_token={{$env.IG_LONG_LIVED_TOKEN}}
Для видео/риэлс нужны другие эндпоинты (video_url/Reels). Здесь публикуется картинка превью YouTube.
Бонус: UTM-метки для отслеживания переходов
Подменяйте ссылку перед отправкой (например, на FB), чтобы видеть источник:
{{
const base = $('RSS Feed Trigger').item.json.link;
const utm = 'utm_source=facebook&utm_medium=social&utm_campaign=youtube_autopost';
return base + (base.includes('?') ? '&' : '?') + utm;
}}
Аналогично — для Telegram/Instagram (меняйте utm_source).
Отладка и тест
- Запустите вручную
RSS Feed Trigger(или дождитесь нового видео). - Проверьте в Set: корректно ли извлеклись
video_idиimage_url. - Посмотрите вывод
Basic LLM Chain→ полеtext. - Убедитесь, что в узле Telegram удалились хэштеги (
message). - В Facebook узле — статус 200 и появление поста на странице.
- В Instagram: сначала
idиз Create Media, затем публикация в профиле изmedia_publish.
Частые ошибки и решения
- IG 190/10/400 (Auth/Permissions): просрочен токен или нет прав; проверьте, что IG — Business/Creator, привязан к странице; используйте long-lived токен.
- FB пост не появляется: роли страницы/права приложения, статус страницы, ограничения по странам/возрасту.
- Telegram молчит: бот не админ / неверный
chat_id/ включён запрет сообщений. - LLM не отвечает: проверьте
OPENAI_API_KEY, биллинг/лимиты. - Дубли: RSS обычно не триггерит старые записи. Для надёжности добавьте Data Store и фильтр по
video_id.
Вариации
- ES/RU автоперевод: второй LLM Chain → второй набор соцсетей.
- Reels/видео в IG: используйте
video_urlи соответствующие эндпоинты Graph API. - Отложенный постинг: добавьте
Wait/Cronи расписание. - Мультиканальность: ещё Twitter/X, LinkedIn, VK — через их API/коннекторы.
Полезные подсказки (копируйте)
Regex извлечения ID из YouTube URL (видео/Shorts):
{{$json["link"].match(/(?:v=|shorts\/)([^&?\/]*)/)?.[1]}}
Формирование URL превью YouTube:
https://img.youtube.com/vi/{{$json["link"].match(/(?:v=|shorts\/)([^&?\/]*)/)?.[1]}}/hqdefault.jpg
Очистка хэштегов из текста перед Телеграмом:
{{$json.text.replace(/#[\wÀ-ÿ]+/g, "").replace(/\s{2,}/g, " ").trim()}}
Ссылка с UTM (автоматическая подстановка ?/&):
{{
const u = $json.link;
const utm = 'utm_source=telegram&utm_medium=social&utm_campaign=youtube_autopost';
return u + (u.includes('?') ? '&' : '?') + utm;
}}
Безопасность
- Храните секреты в Credentials/переменных окружения.
- Не публикуйте токены/ID в открытых репозиториях и скринкастах.
- Если когда-то вставляли токен прямо в поле ноды — сразу перевыпустите.
FAQ
Можно ли публиковать альбом в IG? Этот флоу отправляет одно изображение. Для каруселей используйте массив children + media_publish с creation_id контейнера.
Хочу разный текст в TG/FB/IG. Разветвите поток от LLM, добавьте по Set узлу с кастомными правилами/эмодзи и отправляйте в соответствующие каналы.
Как хранить историю, чтобы не было дублей? Добавьте Data Store (SQLite) с ключом video_id и проверяйте перед публикацией.
Скопируйте промпты и выражения, подставьте свои токены/ID — и у вас будет полностью рабочий процесс. Удачи!

