Функции
Цены
Войти
Зарегистрироваться
Получить токены
Мы используем cookie для работы сайта и аналитики. Подробнее — в политике конфиденциальности. Продолжая пользоваться сайтом, вы соглашаетесь с cookie. Узнать больше 
← Назад к статьям

Контент-завод для Telegram с n8n: полное руководство
от теории к практике (часть 2)

Вторая часть комплексного руководства по созданию системы автоматической генерации и публикации контента в Telegram-каналах с использованием n8n, GPT и соблюдением всех правовых норм. 

Этап 6: Доработка текста/Pick Author Text [FIX]

JS-код: чистит мусор из ответа AI.
Вставьте этот код:

const fromAi =
$json?.message?.content ||
$json?.choices?.[0]?.message?.content ||
$json?.output || $json?.result || $json?.content || $json?.text || '';

const base = $json; // вход текущего item'а уже несёт title/link и пр. после Edit Fields

const clean = (s='') => String(s)
.replace(/^[\s\S]*?(?:ВЫВОД|OUTPUT)\s*:?\s*/i,'')
.replace(/^\s*(TITLE|BODY|LINK|ЗАДАЧА)\s*:.*$/gmi,'')
.replace(/\n{3,}/g,'\n\n')
.trim();

let author = clean(fromAi);
if (!author) author = clean(base.text_for_rewrite || base.raw || base.title || '');

return { json: { ...base, author_text: author } };

Этап 7: Compose Caption (MarkdownV2) [FIX]

Код вставить из воркфлоу: формирует Telegram-caption до 1024 символов.
function escapeHtml(s=""){
return String(s).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
}
function stripTags(s=""){
return String(s).replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();
}
function splitFirstSentence(s=""){
const t = String(s).trim();
const m = t.match(/^[\s\S]*?[.!?…](?=\s|$)/); // до первой . ! ? …
return m ? [m[0].trim(), t.slice(m[0].length).trim()] : [t, ""];
}

const fromInput = $json || {};
const fromSet = ($items('Set (cleanup)', 0, $itemIndex) || {}).json || {};

const titleRaw = fromInput.title ?? fromSet.title ?? "";
const rawRaw = fromInput.raw ?? fromSet.raw ?? "";
const link = String(fromInput.link ?? fromSet.link ?? "");

const title = stripTags(titleRaw);
let body = stripTags(fromInput.author_text || "");

if (!body || /нет текста|ничего пересказывать/i.test(body)) body = stripTags(rawRaw) || title;
if (!body || /нет текста|ничего пересказывать/i.test(body)) body = stripTags(rawRaw) || title || "Без текста";

const TG_LIMIT = 1024;

// Префикс (заголовок)
let caption = "";
if (title) caption += `<b>${escapeHtml(title)}</b>\n\n`;

// Тело: первое предложение жирным + остальной текст
let [firstSent, restText] = splitFirstSentence(body);
let core = `<b>${escapeHtml(firstSent)}</b>`;
if (restText) core += `\n\n${escapeHtml(restText)}`;

// Хвост: источник + подписка с жирной ссылкой на @vanchain
const linkHtml = link ? `<a href="${escapeHtml(link)}">Источник</a>\n\n` : "";
const insightLink = `<b><a href="https://t.me/vanchain">Insight</a></b>`;
const tail = `${linkHtml}Подписывайся на ${insightLink}`;

// Укладываемся в лимит: стараемся не резать заголовок и 1-е предложение
let room = TG_LIMIT - caption.length - tail.length;
let coreOut = core;

if (core.length > room) {
// сначала режем «хвост» (не первое предложение)
const boldFirst = `<b>${escapeHtml(firstSent)}</b>`;
const restEsc = escapeHtml(restText || "");
const sep = restEsc ? `\n\n` : "";

const restRoom = room - boldFirst.length - sep.length;
if (restRoom >= 0) {
const cutRest = restEsc ? (restEsc.length > restRoom ? (restEsc.slice(0, Math.max(0, restRoom - 1)) + "…") : restEsc) : "";
coreOut = boldFirst + (cutRest ? `\n\n${cutRest}` : "");
} else {
// даже первое предложение не влезает — режем его
const firstText = escapeHtml(firstSent);
const allow = Math.max(0, room - ("<b></b>".length)); // запас под теги
const cutFirst = firstText.length > allow ? (firstText.slice(0, Math.max(0, allow - 1)) + "…") : firstText;
coreOut = `<b>${cutFirst}</b>`;
}
}

// Сборка
caption += coreOut + `\n\n` + tail;

return [{ json: { ...fromSet, ...fromInput, caption } }];
Сгенерируйте сайт с помощью
нейросети mottor бесплатно
Сгенерируйте сайт
с помощью
нейросети mottor бесплатно
Конструктор сайтов и интернет-магазинов
с искусственным интеллектом Muza
Конструктор сайтов
и интернет-магазинов
с искусственным интеллектом Muza
Начать генерацию

Этап 8: Генерация изображения/Build Image Prompt + OpenAI (Image)

Этап 9: OpenAI (Image)

Этап 10: Merge

  • CombineByPosition.
  • Склеивает caption + картинку.

Этап 11: Telegram

  • Operation: sendPhoto.
  • chatId: ID твоего канала.
  • caption: ={{$json.caption}}.
  • parse_mode = HTML.
Сгенерируйте сайт с помощью
нейросети mottor бесплатно
Сгенерируйте сайт
с помощью
нейросети mottor бесплатно
Конструктор сайтов и интернет-магазинов
с искусственным интеллектом Muza
Конструктор сайтов
и интернет-магазинов
с искусственным интеллектом Muza
Начать генерацию

Этап 12: Отметка контента при публикации/Mark as Published

  • POST в /rest/v1/posts?on_conflict=hash.
  • Headers: apikey, Authorization.
JSON Body:

{
hash: $json.hash,
title: $json.title,
body_markdown: $json.caption,
image_url: $json.image_url_ai ?? $json.image_url ?? null,
status: "posted",
published_at: new Date().toISOString()
}
ТУТ весь код целиком, просто вставьте его и подключите свои аккаунты:
{
"name": "Telegram-канал",
"nodes": [
{
"parameters": {
"triggerTimes": {
"item": [
{
"mode": "everyX",
"value": 15,
"unit": "minutes"
}
]
}
},
"id": "4ad87778-300b-4fa5-99be-15d59c4ec834",
"name": "Cron (hourly)",
"type": "n8n-nodes-base.cron",
"typeVersion": 1,
"position": [-740, -420]
},
{
"parameters": {
"url": "={{ `https://rsshub.app/telegram/channel/insight_rss_inbox?limit=50&_=${Math.floor(Date.now()/30000)}` }}",
"options": {
"ignoreSSL": false
}
},
"id": "b7bd4e68-8db1-4141-8c94-2f4c1906615a",
"name": "RSS Read",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1,
"position": [-320, -520],
"retryOnFail": true,
"waitBetweenTries": 5000,
"alwaysOutputData": false,
"onError": "continueErrorOutput"
},
...
{
"id": "3aa1fb9d-588e-4750-b19b-c79e7668bc9b",
"name": "OpenAI (Author Text)",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [-700, 80],
"credentials": {
"openAiApi": {
"id": "[твой_Api]",
"name": "[твой_Api]"
}
}
},
...
{
"id": "aa8f4f55-e7ac-4752-8f14-6c482a5a5933",
"name": "OpenAI (Image)",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [320, 0],
"credentials": {
"openAiApi": {
"id": "[твой_Api]",
"name": "[твой_Api]"
}
}
},
...
{
"id": "5d421f2d-15e8-4503-a57e-a5b8f8df713d",
"name": "Telegram",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [900, 80],
"credentials": {
"telegramApi": {
"id": "[твой_Api]",
"name": "[твой_Api]"
}
}
},
...
{
"id": "4943cb02-dacd-4d21-b7f6-0a0dced4621a",
"name": "Mark as Published (Supabase)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [1220, 80],
"parameters": {
"method": "POST",
"url": "https://[твой_Api]/rest/v1/posts?on_conflict=hash",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{ "name": "Content-Type", "value": "application/json" },
{ "name": "apikey", "value": "[твой_Api]" },
{ "name": "Authorization", "value": "Bearer [твой_Api]" },
{ "name": "prefer", "value": "resolution=merge-duplicates,return=minimal" }
]
}
}
},
...
{
"id": "76948513-2245-407c-a6d5-8e4ecbcb45b4",
"name": "Gate: SELECT posts by hash",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [600, -240],
"parameters": {
"url": "https://[твой_Api]/rest/v1/posts?select=hash&hash=eq.{{$json.hash}}&limit=1",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{ "name": "apikey", "value": "[твой_Api]" },
{ "name": "Authorization", "value": "Bearer [твой_Api]" }
]
}
}
},
...
{
"id": "2a840998-5810-4467-9b46-d6b63103568a",
"name": "Recent posts (N days)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [-340, -220],
"parameters": {
"url": "https://[твой_Api]/rest/v1/posts",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{ "name": "apikey", "value": "[твой_Api]" },
{ "name": "Authorization", "value": "Bearer [твой_Api]" }
]
}
}
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "feb898ae-fac5-42fe-ad22-454da8e1c595",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "[твой_Api]"
},
"id": "CsO6MORfgeWgWlqe",
"tags": []
}


Бесплатно создадим прототип сайта

под ваш бизнес при подключении тарифа

Бесплатно создадим прототип сайта

под ваш бизнес при подключении тарифа

Забронировать предложение
+ 6 подарков

0₽

0₽

Разбор и улучшение сайта
от специалистов Mottor

Разбор и улучшение сайта
от специалистов Mottor

Чат-ботов и Автоворонок

(больше заявок и продаж с сайта)

Чат-ботов и Автоворонок

(больше заявок и продаж с сайта)

+1

месяц

месяц

0₽

0₽

Консультация по созданию
сайта и работе в редакторе

Консультация по созданию
сайта и работе в редакторе

Бесплатный домен
в зоне .ru/.рф

Бесплатный домен
в зоне .ru/.рф

0₽

0₽

0₽

0₽

SSL-сертификат
безопасности для вашего
домена на 2 года

SSL-сертификат
безопасности для вашего
домена на 2 года

Промокод на рекламу
в Я.Директ и Я.Бизнес

Промокод на рекламу
в Я.Директ и Я.Бизнес

+12 000₽

+12 000₽

Для новых пользователей
n8n, Zapier или Make: руководство по выбору платформы для начинаю
Контент-завод для Telegram
с n8n: полное руководство
от теории к практике (часть 1)
ТОП-7 простых автоматизаций для личного использования
с n8n: от идей до готового рабочего процесса

Конструктор сайтов, магазинов, чат-ботов, автоворонок, приложений с помощью ИИ

Готовые решения:

Техническая поддержка
Премиум поддержка
Закрывающие документы
Полезные материалы
Интеграции
Шаблоны сайтов
Тарифы
Импорт из Figma
Сайты клиентов
Бонусы от партнеров
Эксперты mottor

Сайты:

Рост продаж:

Конструктор сайтов
AI-конструктор сайтов
Лендинги
Многостраничные сайты
Интернет-магазины
Квизы
Чат-боты
Автоворонки
Приложение
Мобильный MiniApp
ИИ-генераторы
AI-сервисы и приложения
Партнерская программа
White Label

О Mottor:

О компании
Отзывы
Контакты

Шаблоны сайтов:

Популярные решения:

Шаблоны лендингов
Шаблоны для услуг
Шаблоны интернет-магазинов
Шаблоны портфолио
Шаблоны многостраничников
Шаблоны мобильных сайтов
Шаблоны для автобизнеса
Шаблоны для медицины
Шаблоны для доставки еды
Шаблоны для частного специалиста
Шаблоны для турагентства
Шаблоны для недвижимости
Шаблоны для производства
Шаблоны для юридических фирм
Шаблоны для гостиницы и отеля
Шаблоны для образования
Шаблоны для строительной компании
Шаблоны для фитнеса и спорта

ООО “ЛПмотор”, все данные защищены.
Реестр российского ПО №15770
mottorai - зарегистрированный товарный знак №782239

Договор оферта
Согласие
Политика конфиденциальности
Инструкция по установке
Одностраничный сайт
Бесплатный конструктор сайтов
Создать сайт самостоятельно
Конструктор интернет-магазинов
Конструктор сайтов на русском
Онлайн-конструктор сайта бесплатно
Создать сайт на конструкторе
Создать сайт бесплатно в конструкторе
Конструктор сайта онлайн
Создать бесплатный сайт

Стоимость:

Помощь:

Обучение и заработок:

Материалы:

Дополнительно:

Обновления
База знаний
Бесплатный практикум
Mottor Campus

Подпишитесь на наши соцсети
и получайте кейсы, исследования и обновления первыми:

Бесплатный звонок по России

Бесплатный звонок по России

support@lpmotor.ru

support@lpmotor.ru

при поддержке Фонда Развития Интернет Инициатив