Найти в Дзене

Настройка n8n для автоматического агрегатора новостей: пошаговая инструкция

В этой статье рассмотрим, как автоматизировать работу с новостным контентом используя n8n - открытую платформу для создания рабочих процессов. Наше решение помогает экономить до 70% времени на сборе и обработке новостей для медиа-проектов. Подключение к News API
Установка фильтров по AI-тематике
Интеграция с OpenAI API
Настройка генерации саммари
Подключение Telegram API
Настройка уведомлений
Хотите больше кейсов? Подписывайтесь на наш канал “AI для продакта”. Что делает этот модуль: Модуль Schedule Trigger запускает весь workflow автоматически по расписанию. В нашем случае он настроен на ежедневный запуск в определённое время. Это позволяет не беспокоиться о ручном старте процесса — агент сам будет собирать новости в нужное время. Таким образом, агент будет автоматически начинать сбор новостей каждый день ровно в 10:00. Что делает этот модуль: Модуль HTTP Request отвечает за отправку запроса к внешнему API для получения данных. В нашем случае мы используем его для сбора свежих н
Оглавление

В этой статье рассмотрим, как автоматизировать работу с новостным контентом используя n8n - открытую платформу для создания рабочих процессов. Наше решение помогает экономить до 70% времени на сборе и обработке новостей для медиа-проектов.

Что вы узнаете

  • Как настроить автоматический сбор новостей через News API
  • Способ интеграции ChatGPT для создания кратких описаний
  • Процесс организации публикации в Telegram

Пошаговая инструкция

  1. Настройка источников данных

Подключение к News API
Установка фильтров по AI-тематике

  1. Автоматизация обработки

Интеграция с OpenAI API
Настройка генерации саммари

  1. Организация публикации

Подключение Telegram API
Настройка уведомлений

Технические требования

  • Аккаунт n8n
  • Ключи API (News API, OpenAI)
  • Telegram-бот

Хотите больше кейсов? Подписывайтесь на наш канал “AI для продакта”.

Модуль 1: Schedule Trigger

-2

Что делает этот модуль: Модуль Schedule Trigger запускает весь workflow автоматически по расписанию. В нашем случае он настроен на ежедневный запуск в определённое время. Это позволяет не беспокоиться о ручном старте процесса — агент сам будет собирать новости в нужное время.

⚙️ Настройки, которые мы используем:

  • Trigger Interval: Days — задаём, что срабатывание происходит с интервалом в дни.
  • Days Between Triggers: 1 — означает, что workflow будет запускаться каждый день.
  • Trigger at Hour: 10am — запуск происходит в 10:00 утра.
  • Trigger at Minute: 0 — точное время запуска без дополнительной задержки.

Таким образом, агент будет автоматически начинать сбор новостей каждый день ровно в 10:00.

Какие могут быть ещё настройки:

  1. Изменение интервала:
    Вместо дней можно выбрать:Minutes (каждые N минут) — полезно для более частого мониторинга.
    Hours (каждые N часов) — например, запуск каждые 6 часов.
    Weeks или Months — если нужно собирать данные реже.
  2. Добавление нескольких правил:
    Можно настроить несколько правил для разных времён запуска. Например:Запуск в 10:00 и ещё раз в 18:00.
    Или запуск по будням, но с другим расписанием на выходные.
  3. Использование cron-выражений:
    Для сложных сценариев можно использовать
    cron-выражения, которые дают гибкость в настройке расписания (например, запуск в определённые дни недели или каждый первый понедельник месяца).
  4. Ручное тестирование:
    Кнопка
    "Test step" позволяет протестировать запуск workflow вручную, не дожидаясь расписания. Это удобно для проверки настроек на этапе разработки.

Модуль 2: HTTP Request

-3

Что делает этот модуль: Модуль HTTP Request отвечает за отправку запроса к внешнему API для получения данных. В нашем случае мы используем его для сбора свежих новостей, связанных с ИИ-трендами, с сайта NewsAPI.

⚙️ Настройки, которые мы используем:

  • Method: GET — используется для получения данных с внешнего ресурса (в данном случае новостей).
  • Этот URL формирует запрос к NewsAPI с параметрами:q=AI+trends — ищем новости, связанные с искусственным интеллектом и трендами.
    sortBy=publishedAt — сортировка по дате публикации (от новых к старым).
    language=en — фильтр по новостям на английском языке.
  • Authentication: None — здесь не используется встроенная аутентификация n8n, так как мы передаём ключ API в заголовках.
  • Send Headers: Включено (зелёный индикатор) — активировано для передачи заголовков.
  • Header Parameters:Name: Authorization — заголовок для передачи ключа API.
    Value:
Bearer <ваш_API_ключ>

"Bearer" — это фиксированное слово, которое всегда должно быть в начале. После пробела вы вставляете свой личный API-ключ, полученный на сайте NewsAPI.

Пример:
Если вы зарегистрировались на
https://newsapi.org/ и получили ключ 19ee1234abcd5678, то значение для поля Value в n8n будет выглядеть так: Bearer 19ee1234abcd5678

Более подробно о вариантах настройки модуля - в конце статьи.

Модуль 3: Code (Обработка данных)

-4

Что делает этот модуль: Модуль Code используется для обработки данных, полученных от NewsAPI. Здесь мы пишем простой JavaScript-код для извлечения только нужной информации из массива статей. Это позволяет подготовить данные для следующего шага, где они будут использоваться для создания саммари.

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

  • Mode: Run Once for All Items — код выполняется один раз для всех полученных данных, а не для каждой статьи по отдельности.
  • Language: JavaScript — язык программирования для написания логики обработки данных.

Код:

// Извлекаем статьи из полученных данных const articles = items[0].json.articles;

// Возвращаем только заголовок, ссылку и дату публикации статьи return articles.map(article => {
return {
json: {
title: article.title,
url: article.url,
publishedAt: article.publishedAt }
};
});

Итог: Этот модуль "чистит" и подготавливает данные, убирая всё лишнее и оставляя только то, что нужно для создания саммари и отправки в Telegram. Он делает автоматизацию более эффективной и упрощает работу следующих модулей.

Модуль 4: OpenAI (Генерация саммари)

-5

Что делает этот модуль: Модуль OpenAI используется для генерации краткого саммари новостей, отобранных на предыдущих шагах. С помощью модели GPT-4 он превращает заголовки и описания новостей в лаконичные и информативные тексты, которые удобно читать и оценивать.

-6

⚙️ Настройка подключения к OpenAI (API Integration):

Поля для заполнения:

  1. API Key:Необходимо получить на сайте https://platform.openai.com/api-keys.
    Ключ выглядит примерно так: sk-xxxxxxxxxxxxxxxxxxxx.
    Вставьте ключ в соответствующее поле.
  2. Organization ID (необязательно):Используется только если у вас несколько организаций в OpenAI.
    Для большинства пользователей это поле можно оставить пустым.
  3. Base URL:По умолчанию: https://api.openai.com/v1
    Этот URL указывает, куда отправляются запросы API.

После ввода данных нажмите "Save" для сохранения настроек.

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

  • Credential to connect with: OpenAI account — это настройки подключения к вашему аккаунту OpenAI с использованием API-ключа.
  • Resource: Text — означает, что мы работаем с текстовыми данными.
  • Operation: Message a Model — отправляем текст модели для генерации ответа.
  • Model: GPT-4O-MINI-2024-07-18 — выбранная версия модели GPT, оптимизированная для генерации кратких и точных текстов.

Настройка сообщений (Messages):

1. Системное сообщение (Role: System):

Ты аналитик новостей о трендах в сфере искусственного интеллекта и нейросетей.
Проанализируй следующую новость и ответь:
1. Относится ли она к трендам в AI/нейросетях? (Да/Нет)
2. Если да, составь краткую выжимку на русском языке (2-3 предложения), выделив суть. Добавь [Источник: {{URL}}] в конце
3. Если нет, просто напиши "Пропустить".

Это инструкция для модели, которая задаёт её «роль» и стиль общения.

В данном случае модель действует как аналитик новостей по ИИ и нейросетям, что помогает ей формулировать релевантные и профессиональные саммари.

2. Пользовательское сообщение (Role: User):

{{ $json.title || 'Заголовок отсутствует' }}
{{ $json.description || 'Описание отсутствует' }}
{{ $json.url }}
  • {{ $json.title }} — вставляет заголовок статьи.
  • {{ $json.description }} — вставляет краткое описание статьи.
  • {{ $json.url }} — добавляет ссылку на оригинальную статью.

Если заголовок или описание отсутствуют, выводятся заглушки: «Заголовок отсутствует» и «Описание отсутствует».

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

-7

Дополнительные настройки модуля OpenAI

Эти настройки расположены в нижней части конфигурации модуля и помогают управлять тем, как модель генерирует текст. Давайте разберём каждую опцию.

⚙️ Параметры настройки:

1. Simplify Output (Упрощённый вывод)

  • Статус: Включён (зелёный индикатор).
  • Что делает:
    Упрощает структуру данных, возвращаемых моделью. Вместо сложного JSON с метаданными (например, логов и вероятностей), вы получаете только чистый текст.
  • Когда полезно:
    Идеально для случаев, когда нужно просто получить текст без дополнительной обработки. Это упрощает интеграцию с другими модулями n8n, например, для отправки сообщений в Telegram.

2. Output Content as JSON (Вывод в формате JSON)

  • Статус: Выключен.
  • Что делает:
    Если включить, модель будет возвращать данные в формате JSON. Это полезно, если нужно сохранить структуру данных для сложной обработки.
  • Когда использовать:
    При работе с API, где важен полный доступ к метаданным (например, оценка вероятности слов или анализ токенов).

3. Maximum Number of Tokens (Максимальное количество токенов)

  • Значение: 300
  • Что делает:
    Ограничивает длину текста, который может сгенерировать модель.
  • Как работает:
    Один токен — это примерно 4 символа на английском или одно короткое слово.
    300 токенов — это около 200–250 слов (примерно 2–3 абзаца текста).
  • Когда менять: Для более кратких саммари можно уменьшить значение до 100–150 токенов.
    Для детальных обзоров увеличить до 500–1000 токенов.

4. Output Randomness (Temperature) (Степень случайности)

  • Значение: 0.3
  • Что делает: Управляет "творческостью" модели:0.0–0.3 — более точные и предсказуемые ответы (подходит для аналитики и фактической информации).
    0.7–1.0 — более креативные и разнообразные ответы (может быть полезно для генерации маркетингового контента).
  • Когда менять: Если нужны чёткие и структурированные саммари — оставить 0.3.
    Для более «живых» текстов, которые звучат неформально — можно поднять до 0.6–0.8.

Полезные рекомендации:

  • Для чётких и коротких новостных саммари:
  • Maximum Number of Tokens: 150
    Temperature: 0.2–0.3
  • Для более подробных обзоров и аналитики:
  • Maximum Number of Tokens: 500
    Temperature: 0.4–0.5
  • Для творческих задач (например, создание постов для соцсетей):
  • Maximum Number of Tokens: 300
    Temperature: 0.7–0.9

Модуль 5: Code1 (Фильтрация контента)

-8

Что делает этот модуль:
Модуль
Code1 отвечает за фильтрацию сгенерированных саммари новостей перед их отправкой в Telegram. Здесь применяется простой JavaScript-скрипт для проверки содержимого сообщения и удаления нерелевантных данных. Это позволяет избежать отправки пустых или помеченных для пропуска сообщений.

Код

return $input.all().filter(item => {
const content = item.json.message.content.trim().toLowerCase().replace(/[.!?]/g, '');
console.log('Фильтруем:', content);

return item.json.message && content !== 'пропустить';
});

Модуль 6: Telegram (Отправка сообщений)

Выберите модуль Send a text to message

-9

-10

Что делает этот модуль: Модуль Telegram отвечает за отправку сгенерированных и отфильтрованных новостей прямо в Telegram-чат. Это финальный шаг, который доставляет готовые саммари администратору для дальнейшей оценки и публикации.

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

  • Credential to connect with: Telegram account — настройки подключения к вашему Telegram-боту.
  • Resource: Message — мы работаем с сообщениями.
  • Operation: Send Message — операция для отправки текста в указанный чат.
  • Chat ID: 111111111 — уникальный идентификатор чата, куда будет отправлено сообщение.
  • Здесь используется шаблонная переменная для вставки текста сообщения из предыдущего шага.

Text:
{{ $json.message.content }}

Как создать Telegram-бота и получить API-токен

  1. Найти BotFather в Telegram:
    Откройте Telegram и в поиске введите @BotFather.
  2. Создать нового бота:
    Нажмите "Start" и введите команду:
    /newbot
  3. Придумайте имя для бота (например, NewsAssistantBot).
    Укажите уникальное имя пользователя для бота (должно заканчиваться на bot, например, NewsAI_Bot).
  4. Получить API-токен:
    После создания бота BotFather отправит вам сообщение с токеном вида: 123456789:ABCDefGhIJKlmNoPQRstuVWxyz1234567890

Этот токен нужно сохранить — он потребуется для подключения бота в n8n.

  1. Подключение бота к n8n:В модуле Telegram нажмите на иконку карандаша рядом с полем "Credential to connect with".
    В открывшемся окне введите API-токен, который вы получили от BotFather.
    Нажмите
    "Save".

🆔 Как найти Chat ID

Можно использовать готового бота @userinfobot.

Нажмите "Start", и он покажет ваш Telegram ID.


Модуль
Telegram завершает цепочку автоматизации, отправляя готовые новости в нужный чат.

-11

Настроить бота и подключить его к n8n довольно просто, и вы сможете легко автоматизировать процесс доставки информации в Telegram.

* * *

Для справки:

Как модифицировать ссылку для разных тем

Сейчас ссылка для запроса новостей выглядит так:

https://newsapi.org/v2/everything?q=AI+trends&sortBy=publishedAt&language=en

  • q=AI+trends — отвечает за поиск новостей по ключевым словам.
  • sortBy=publishedAt — сортировка по дате публикации (новые сверху).
  • language=en — фильтр по языку (в данном случае английский).

Чтобы собирать новости на другие темы:

  1. Новости про моду:
    https://newsapi.org/v2/everything?q=fashion&sortBy=publishedAt&language=enИзменили q=AI+trends на q=fashion.
  2. Новости про спорт:
    https://newsapi.org/v2/everything?q=sports&sortBy=publishedAt&language=enПросто заменили ключевые слова на q=sports.

Как поменять язык новостей

Чтобы собирать новости на другом языке, нужно изменить параметр language:

  • Русский язык:
    https://newsapi.org/v2/everything?q=AI+trends&sortBy=publishedAt&language=ru
  • Китайский язык:
    https://newsapi.org/v2/everything?q=AI+trends&sortBy=publishedAt&language=zh

Коды для других языков:

  • en — английский
  • ru — русский
  • zh — китайский
  • fr — французский
  • de — немецкий
  • es — испанский

О сайте: NewsAPI

Как работает: NewsAPI — это популярный сервис для агрегирования новостей из тысяч источников по всему миру. Он предоставляет API, через который можно получать свежие статьи, заголовки, метаданные и другую связанную информацию.

Плюсы и популярность:

  • Большая база источников: включает такие ресурсы, как BBC, CNN, The Verge и другие.
  • Простота интеграции: лёгкий REST API с простым синтаксисом запросов.
  • Фильтры: можно искать по ключевым словам, дате, источникам и языкам.
  • Актуальность: поддерживает быстрый доступ к свежим новостям благодаря обновлению в реальном времени.

Правила использования NewsAPI:

  • Бесплатный тарифный план: ограничение на количество запросов (обычно 100 запросов в день) и доступ к базовым функциям.
  • Платные планы: увеличенные лимиты, доступ к историческим данным и дополнительным источникам.
  • Ограничения: NewsAPI не позволяет использовать данные для прямой публикации в публичных сервисах без указания источников. Он ориентирован на использование в личных проектах, аналитике и внутреннем использовании.

Альтернативы NewsAPI:

Если нужны другие варианты для сбора новостей, можно рассмотреть:

  • GNews API: https://gnews.io/
    Удобный API с бесплатным тарифом и хорошими фильтрами по языкам и темам.
  • MediaStack: https://mediastack.com/
    Поддерживает множество источников и прост в использовании.
  • Currents API: https://currentsapi.services/en
    Ориентирован на свежие трендовые новости, есть бесплатный план.

Больше кейсов на канале “AI для продакта”.