Хотите, чтобы свежие новости по вашей теме автоматически публиковались в ТГ без вашего участия? В прошлой статье мы показывали, как собрать парсер новостей из одного источника, но теперь у нас доработанная версия – парсер из двух источников (NewsAPI и GNews) в n8n!
В этом гайде разберём, как:
✅ Подключить сразу два API для сбора новостей,
✅ Фильтровать и упрощать тексты с помощью OpenAI,
✅ Автоматически публиковать дайджест в Telegram-канал.
Это мощное решение для контент-маркетинга, аналитики и новостных ресурсов. Настроив его один раз, вы получите полностью автономную систему мониторинга новостей.
Готовы внедрить автоматизацию? Давайте разбираться!
Больше кейсов на канале “AI для продакта”.
Так выглядит вся цепочка автоматизации в n8n – последовательность модулей, которые собирают, обрабатывают и публикуют новости.
1️⃣ Schedule Trigger (2 шт.) – запускает процесс каждый день в заданное время.
2️⃣ HTTP Request (2 шт.) – делает запросы к NewsAPI и GNews, получая свежие статьи.
3️⃣ Merge – объединяет данные из двух источников в единый поток.
4️⃣ Code – извлекает нужную информацию: заголовок, описание, дату публикации и ссылку.
5️⃣ OpenAI – анализирует новости, фильтрует нерелевантные и создаёт краткое описание.
6️⃣ Code1 – проверяет, какие статьи прошли фильтрацию, и формирует итоговый список.
7️⃣ OpenAI1 – переформулирует текст, делая его более удобочитаемым.
8️⃣ Telegram – автоматически отправляет новости в канал.
Теперь подробно про настройки каждого модуля.
1. Модуль: Schedule Trigger
Настройка:
- Trigger Interval – установлен на "Days" (Дни), что означает, что процесс будет запускаться раз в определённое количество дней.
- Days Between Triggers – установлено значение 1, что означает ежедневный запуск.
- Trigger at Hour – процесс запускается в 10:00 утра.
- Trigger at Minute – установлено 0, то есть запуск происходит ровно в 10:00.
В нашем рабочем процессе используются два модуля Schedule Trigger, так как мы собираем новости сразу из двух разных источников. Каждый триггер отвечает за запуск разных HTTP-запросов к разным API новостных сервисов, что позволяет нам собирать и обрабатывать более широкий спектр новостей.
2. Модуль: HTTP Request (Запрос к API NewsAPI)
Настройки модуля:
Method – GET (используется для получения данных).
URL – https://newsapi.org/v2/everything?q=AI+trends&sortBy=publishedAt&language=en
q=AI+trends – поиск по ключевым словам AI trends.
sortBy=publishedAt – сортировка новостей по дате публикации (от новых к старым).
language=en – новости только на английском языке.
Authentication – None (аутентификация задаётся через заголовки, а не напрямую в настройках).
Send Headers – включено (toggle активен).
Specify Headers – Using Fields Below (ручное указание заголовков).
Header Parameters:Name: Authorization
Value: Bearer {API_KEY} (необходимо вставить API-ключ, полученный от NewsAPI).
Как получить API-ключ?
- Зарегистрироваться и подтвердить email.
- В личном кабинете получить API-ключ.
- Использовать его в запросах в формате Bearer {YOUR_API_KEY}.
Этот модуль получает список новостей, которые затем передаются в последующие шаги для обработки.
Модуль: HTTP Request1 (Запрос к API GNews)
Настройки модуля:
Method – GET (запрашиваем данные).
URL – https://gnews.io/api/v4/search?q=AI+trends&lang=en&token=YOUR_API_KEY
q=AI+trends – поиск по ключевым словам AI trends.
lang=en – выбор новостей на английском языке.
token=YOUR_API_KEY – API-ключ, необходимый для доступа к сервису.
Authentication – None (аутентификация идёт через token в URL).
Send Headers – выключено (аутентификация через URL-параметр).
Куда вставлять API-ключ?
API-ключ вставляется в URL вместо YOUR_API_KEY:
https://gnews.io/api/v4/search?q=AI+trends&lang=en&token=ВАШ_ТОКЕН
Пример с реальным ключом:
https://gnews.io/api/v4/search?q=AI+trends&lang=en&token=1fa89c9e...
Как получить API-ключ?
- Зарегистрироваться и создать аккаунт.
- В личном кабинете получить API-ключ.
- Вставить его в параметр token в URL запроса.
Этот модуль запрашивает второй источник данных и передаёт их дальше по рабочему процессу.
3. Модуль: Merge (Объединение данных)
Настройки модуля:
Mode – Append (добавление записей друг к другу).Это означает, что данные из двух источников объединяются в один массив без изменений структуры.
Number of Inputs – 2.Модуль принимает два входных потока – по одному от каждого HTTP-запроса.
Как это работает?
- Оба потока данных поступают в Merge.
- Модуль добавляет (append) их друг к другу.
- На выходе получается единый список новостей от двух разных источников.
Этот шаг позволяет нам работать со всеми новостями одновременно, а не отдельно для каждого источника.
4. Модуль: Code (Обработка данных с помощью JavaScript)
Настройки модуля:
Mode – Run Once for All Items (код выполняется один раз для всех элементов).
Language – JavaScript (выбран язык JavaScript).
Что делает код?
- Извлекает список статей из первого элемента массива (items[0].json.articles).
- Обрабатывает каждую статью, формируя объект с ключевыми полями:title – заголовок статьи.
description – краткое описание (если отсутствует, подставляется "Описание отсутствует").
content – содержимое статьи (если отсутствует, подставляется "Содержание отсутствует").
url – ссылка на оригинальную статью.
publishedAt – дата публикации.
Код:
// Извлекаем статьи из полученных данных
const articles = items[0].json.articles;
// Возвращаем заголовок, описание, содержание, ссылку и дату публикации статьи
return articles.map(article => ({
title: article.title,
description: article.description || "Описание отсутствует",
content: article.content || "Содержание отсутствует",
url: article.url,
publishedAt: article.publishedAt
}));
! Проверьте форматирование кода перед вставкой.
Как это помогает?
- Убираются ненужные данные, оставляя только важную информацию.
- Обрабатываются возможные отсутствующие поля, чтобы избежать ошибок на следующих этапах.
- Результатом является структурированный массив статей, который можно передавать дальше.
5. Модуль: OpenAI (Анализ новостей с помощью ИИ)
Настройки модуля:
Credential to connect with – OpenAI account (используется учётная запись OpenAI).
Resource – Text (обрабатывается текст).
Operation – Message a Model (отправка сообщений в модель).
Model – GPT-4o-MINI-2024-07-18 (выбрана облегчённая версия GPT-4o).
Промпт:
Ты аналитик новостей о трендах в сфере искусственного интеллекта и нейросетей.
Проанализируй следующую новость и ответь:
1. Относится ли она к трендам в AI/нейросетях, новым инструментам ИИ? (Да/Нет)
2. Если да, составь краткую выжимку на русском языке (2-3 предложения), выделив суть. Добавь [Источник: {{URL}}] в конце
3. Если нет, просто напиши "Пропустить".
Temperature – (не видно на скриншоте, но важно уточнить)0.2 – 0.3: если нужна высокая точность и предсказуемость ответов.
0.7 – 1.0: если нужен более креативный и вариативный результат.
Здесь, скорее всего, стоит низкое значение (~0.2), чтобы ответы были конкретными и не фантазировали.
Max Tokens – (не видно, но обычно около 200-300, чтобы ограничить длину ответа).
Как работает запрос?
- System Message – задаёт роль ИИ:ИИ действует как аналитик новостей.
Его задача – определить релевантность статьи к теме искусственного интеллекта.
Если статья подходит, он генерирует краткий перевод/резюме на русском языке.
Если нет – просто отвечает "Пропустить". - User Message – передаёт данные статьи в модель:Название: {{ $json.title || "Заголовок отсутствует" }}
Описание: {{ $json.description || "Описание отсутствует" }}
Содержание: {{ $json.content || "Содержание отсутствует" }}
Ссылка на источник: {{URL}}
👉 Таким образом, ИИ фильтрует нерелевантные новости и переводит нужные в кратком формате.
Зачем это нужно?
- Исключает лишние статьи, не относящиеся к трендам ИИ.
- Автоматически генерирует краткие переводы, чтобы пользователи в Telegram-канале сразу понимали суть.
- Делает процесс полностью автоматическим, без ручного отбора новостей.
6. Модуль: Code1 (Фильтрация и обработка новостей после OpenAI)
Он:
Удаляет статьи, для которых ИИ ответил "Пропустить".
Извлекает только нужные поля – заголовок и краткое описание (саммари) из OpenAI.
Формирует итоговый массив статей.
Если нет релевантных новостей, возвращает сообщение "Нет новостей, подходящих под тренды ИИ.".
Настройки модуля:
Mode – Run Once for All Items (код выполняется один раз для всех элементов).
Language – JavaScript.
Код в модуле:
const filteredArticles = $input.all()
.filter(item => {
const content = item.json?.message2?.content?.trim().toLowerCase() || "";
return content !== "пропустить" && content !== "пропустить."; // Убираем все "Пропустить" })
.map(item => ({
title: item.json?.message2?.title || "Без названия", // Заголовок из GPT description: item.json?.message2?.content || "Описание отсутствует", // Саммари из GPT }));
// Если после фильтрации нет статей, вернём заглушку if (filteredArticles.length === 0) {
return [{ json: { message: "Нет новостей, подходящих под тренды ИИ." } }];
}
return [{ json: { articles: filteredArticles } }];
Зачем это нужно?
✅ Удаляет нерелевантные новости, которые OpenAI посчитал несвязанными с ИИ.
✅ Формирует финальный список новостей, который можно отправить в Telegram.
✅ Гарантирует, что в канал не отправится "пустой" выпуск – если статей нет, просто пишем, что новостей нет.
7. Модуль: OpenAI1 (Финальная обработка и упрощение новостей перед Telegram)
Настройки модуля:
Credential to connect with – OpenAI account (используется учётная запись OpenAI).
Resource – Text (обрабатываем текст).
Operation – Message a Model (отправка сообщений в модель).
Model – GPT-4o-MINI-2024-07-18 (оптимизированная версия GPT-4o).
Simplify Output – ON (упрощённый JSON-ответ, чтобы избежать сложной структуры данных).
Как работает запрос?
System Message (Роль: System)
GPT получает инструкцию:
Ты аналитик в мире ИИ и умеешь подавать информацию так, что она понятна даже ребенку. Шаг 1: Проверка релевантности. Оставляем только новости об инструментах, технологиях, алгоритмах, платформах и исследованиях. Удаляем: прогнозы, финансовые сделки, обсуждение компаний без технологий, общие рассуждения. Если новость не подходит — просто не включай её.
Шаг 2: Глубокая переработка информации. Открой источник. Читай статью полностью. Не пересказывай заголовок, а находи конкретные факты.Если есть цифры (данные, тесты, проценты, экономия времени и денег) – обязательно используй их. Если в статье нет конкретики, а только общие слова – не используй её.
Шаг 3: Формулировки и стиль. Что убирать: Размытые фразы: "повышает эффективность", "оптимизирует процессы", "меняет правила игры". Риторические вопросы и воду: "может ли ИИ заменить людей?" – не надо спрашивать, просто давай факт. Слова "источник" – просто зашивай ссылку в название.
Как писать: Четко, лаконично, но с фактами, давай фактуру и пользу, реальные примеры. Стиль понятный, как для 10-летнего ребенка. Если ИИ прошел тест – укажи результаты. Если изменил процесс – покажи разницу ДО и ПОСЛЕ. Находи самую суть: “стало быстрее подбирать слова”, а не “улучшает создание текста”. Докапывайся до начала смысла и рядовых действий.
User Message (Роль: User)
Передаётся список статей в JSON-формате:
{{ JSON.stringify($json.articles) }}
Что делает этот шаг?
✅ Убирает сложные технические термины – делает новости доступными для широкой аудитории.
✅ Формирует структурированный Telegram-пост – без мусора и лишней информации.
✅ Контролирует итоговый формат – делает новости компактными, удобными для восприятия.
8. Модуль: Telegram (Отправка новостей в канал)
Настройки модуля:
Credential to connect with – Telegram account (используется учётная запись Telegram).
Resource – Message (работаем с отправкой сообщений).
Operation – Send Message (отправить сообщение).
Chat ID – (ID Telegram-канала или чата, куда отправляются новости).
Text –Используется {{ $json.message.content }}, который содержит готовый дайджест новостей, сформированный OpenAI.
В начале сообщения может быть добавлен заголовок (например, "Автоматическая подборка: что нового в мире ИИ").
Reply Markup – None (без дополнительных кнопок).
Additional Fields – (не используются, но можно добавить, например, Parse Mode = Markdown, если требуется форматирование).
Как работает этот шаг?
✅ Автоматически публикует новости в Telegram-канале без участия человека.
✅ Форматирует текст в удобный вид, добавляя заголовки и разделители.
✅ Полностью автономная система – новости собираются, фильтруются, анализируются и публикуются без вмешательства.
Финальный результат
После выполнения всех шагов в Telegram-канале появится готовый пост с актуальными новостями про ИИ. 🚀
➡️ Всё готово! Теперь можно протестировать и запустить полноценный новостной парсер для Telegram!
Больше кейсов на канале “AI для продакта”.