Найти в Дзене

Как создать парсер новостей для ТГ в n8n: сбор данных из двух источников

Оглавление

Хотите, чтобы свежие новости по вашей теме автоматически публиковались в ТГ без вашего участия? В прошлой статье мы показывали, как собрать парсер новостей из одного источника, но теперь у нас доработанная версия – парсер из двух источников (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

Этот модуль отвечает за автоматический запуск рабочего процесса (workflow) в n8n по заданному расписанию. В данном случае он будет активировать процесс сбора и обработки новостей один раз в день.
Этот модуль отвечает за автоматический запуск рабочего процесса (workflow) в n8n по заданному расписанию. В данном случае он будет активировать процесс сбора и обработки новостей один раз в день.

Настройка:

  1. Trigger Interval – установлен на "Days" (Дни), что означает, что процесс будет запускаться раз в определённое количество дней.
  2. Days Between Triggers – установлено значение 1, что означает ежедневный запуск.
  3. Trigger at Hour – процесс запускается в 10:00 утра.
  4. Trigger at Minute – установлено 0, то есть запуск происходит ровно в 10:00.

В нашем рабочем процессе используются два модуля Schedule Trigger, так как мы собираем новости сразу из двух разных источников. Каждый триггер отвечает за запуск разных HTTP-запросов к разным API новостных сервисов, что позволяет нам собирать и обрабатывать более широкий спектр новостей.

2. Модуль: HTTP Request (Запрос к API NewsAPI)

Этот модуль выполняет HTTP-запрос к NewsAPI – одному из сервисов, который предоставляет свежие новости по различным темам. В данном случае запрос нацелен на поиск новостей, связанных с искусственным интеллектом (AI trends), отсортированных по времени публикации.
Этот модуль выполняет HTTP-запрос к NewsAPI – одному из сервисов, который предоставляет свежие новости по различным темам. В данном случае запрос нацелен на поиск новостей, связанных с искусственным интеллектом (AI trends), отсортированных по времени публикации.

Настройки модуля:

Method – GET (используется для получения данных).

URLhttps://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-ключ?

  1. Перейти на NewsAPI.
  2. Зарегистрироваться и подтвердить email.
  3. В личном кабинете получить API-ключ.
  4. Использовать его в запросах в формате Bearer {YOUR_API_KEY}.

Этот модуль получает список новостей, которые затем передаются в последующие шаги для обработки.

Модуль: HTTP Request1 (Запрос к API GNews)

Этот модуль выполняет HTTP-запрос ко второму источнику новостей – GNews API. Он также собирает свежие статьи на тему искусственного интеллекта (AI trends), но уже с другого новостного ресурса. Это позволяет нам получить более разнообразные данные.
Этот модуль выполняет HTTP-запрос ко второму источнику новостей – GNews API. Он также собирает свежие статьи на тему искусственного интеллекта (AI trends), но уже с другого новостного ресурса. Это позволяет нам получить более разнообразные данные.

Настройки модуля:

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-ключ?

  1. Перейти на GNews.io.
  2. Зарегистрироваться и создать аккаунт.
  3. В личном кабинете получить API-ключ.
  4. Вставить его в параметр token в URL запроса.

Этот модуль запрашивает второй источник данных и передаёт их дальше по рабочему процессу.

3. Модуль: Merge (Объединение данных)

Этот модуль объединяет данные, полученные из двух HTTP-запросов (NewsAPI и GNews), чтобы мы могли обрабатывать их дальше как единый поток.
Этот модуль объединяет данные, полученные из двух HTTP-запросов (NewsAPI и GNews), чтобы мы могли обрабатывать их дальше как единый поток.

Настройки модуля:

Mode – Append (добавление записей друг к другу).Это означает, что данные из двух источников объединяются в один массив без изменений структуры.
Number of Inputs – 2.Модуль принимает два входных потока – по одному от каждого HTTP-запроса.

Как это работает?

  • Оба потока данных поступают в Merge.
  • Модуль добавляет (append) их друг к другу.
  • На выходе получается единый список новостей от двух разных источников.

Этот шаг позволяет нам работать со всеми новостями одновременно, а не отдельно для каждого источника.

4. Модуль: Code (Обработка данных с помощью JavaScript)

Этот модуль выполняет обработку данных, полученных после объединения новостей. Он извлекает ключевые поля из JSON-ответа API и приводит их к удобному формату.
Этот модуль выполняет обработку данных, полученных после объединения новостей. Он извлекает ключевые поля из JSON-ответа API и приводит их к удобному формату.

Настройки модуля:

Mode – Run Once for All Items (код выполняется один раз для всех элементов).

Language – JavaScript (выбран язык JavaScript).

Что делает код?

  1. Извлекает список статей из первого элемента массива (items[0].json.articles).
  2. Обрабатывает каждую статью, формируя объект с ключевыми полями: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 (Анализ новостей с помощью ИИ)

Этот модуль использует GPT-4o-mini для анализа новостей и их фильтрации. Он определяет, относится ли статья к трендам в сфере ИИ и нейросетей, а затем создаёт краткое резюме на русском языке.
Этот модуль использует GPT-4o-mini для анализа новостей и их фильтрации. Он определяет, относится ли статья к трендам в сфере ИИ и нейросетей, а затем создаёт краткое резюме на русском языке.

Настройки модуля:

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, чтобы ограничить длину ответа).

Как работает запрос?

  1. System Message – задаёт роль ИИ:ИИ действует как аналитик новостей.
    Его задача –
    определить релевантность статьи к теме искусственного интеллекта.
    Если статья подходит, он
    генерирует краткий перевод/резюме на русском языке.
    Если нет – просто отвечает
    "Пропустить".
  2. User Message – передаёт данные статьи в модель:Название: {{ $json.title || "Заголовок отсутствует" }}
    Описание: {{ $json.description || "Описание отсутствует" }}
    Содержание: {{ $json.content || "Содержание отсутствует" }}
    Ссылка на источник: {{URL}}

👉 Таким образом, ИИ фильтрует нерелевантные новости и переводит нужные в кратком формате.

Зачем это нужно?

  • Исключает лишние статьи, не относящиеся к трендам ИИ.
  • Автоматически генерирует краткие переводы, чтобы пользователи в Telegram-канале сразу понимали суть.
  • Делает процесс полностью автоматическим, без ручного отбора новостей.

6. Модуль: Code1 (Фильтрация и обработка новостей после OpenAI)

Этот модуль выполняет финальную фильтрацию и обработку статей, которые прошли через OpenAI.
Этот модуль выполняет финальную фильтрацию и обработку статей, которые прошли через 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)

Этот модуль использует GPT-4o-mini для создания упрощённого, понятного резюме новостей, которое будет отправлено в Telegram. Теперь новости должны быть не просто отфильтрованы, но и преподнесены в доступной форме.
Этот модуль использует GPT-4o-mini для создания упрощённого, понятного резюме новостей, которое будет отправлено в 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 (Отправка новостей в канал)

Этот модуль отвечает за автоматическую публикацию новостей в Telegram-канале. Он получает финальный отредактированный текст от OpenAI и отправляет его подписчикам.
Этот модуль отвечает за автоматическую публикацию новостей в Telegram-канале. Он получает финальный отредактированный текст от OpenAI и отправляет его подписчикам.

Настройки модуля:

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 для продакта”.