В этой статье рассмотрим, как автоматизировать работу с новостным контентом используя n8n - открытую платформу для создания рабочих процессов. Наше решение помогает экономить до 70% времени на сборе и обработке новостей для медиа-проектов.
Что вы узнаете
- Как настроить автоматический сбор новостей через News API
- Способ интеграции ChatGPT для создания кратких описаний
- Процесс организации публикации в Telegram
Пошаговая инструкция
- Настройка источников данных
Подключение к News API
Установка фильтров по AI-тематике
- Автоматизация обработки
Интеграция с OpenAI API
Настройка генерации саммари
- Организация публикации
Подключение Telegram API
Настройка уведомлений
Технические требования
- Аккаунт n8n
- Ключи API (News API, OpenAI)
- Telegram-бот
Хотите больше кейсов? Подписывайтесь на наш канал “AI для продакта”.
Модуль 1: Schedule Trigger
Что делает этот модуль: Модуль Schedule Trigger запускает весь workflow автоматически по расписанию. В нашем случае он настроен на ежедневный запуск в определённое время. Это позволяет не беспокоиться о ручном старте процесса — агент сам будет собирать новости в нужное время.
⚙️ Настройки, которые мы используем:
- Trigger Interval: Days — задаём, что срабатывание происходит с интервалом в дни.
- Days Between Triggers: 1 — означает, что workflow будет запускаться каждый день.
- Trigger at Hour: 10am — запуск происходит в 10:00 утра.
- Trigger at Minute: 0 — точное время запуска без дополнительной задержки.
Таким образом, агент будет автоматически начинать сбор новостей каждый день ровно в 10:00.
Какие могут быть ещё настройки:
- Изменение интервала:
Вместо дней можно выбрать:Minutes (каждые N минут) — полезно для более частого мониторинга.
Hours (каждые N часов) — например, запуск каждые 6 часов.
Weeks или Months — если нужно собирать данные реже. - Добавление нескольких правил:
Можно настроить несколько правил для разных времён запуска. Например:Запуск в 10:00 и ещё раз в 18:00.
Или запуск по будням, но с другим расписанием на выходные. - Использование cron-выражений:
Для сложных сценариев можно использовать cron-выражения, которые дают гибкость в настройке расписания (например, запуск в определённые дни недели или каждый первый понедельник месяца). - Ручное тестирование:
Кнопка "Test step" позволяет протестировать запуск workflow вручную, не дожидаясь расписания. Это удобно для проверки настроек на этапе разработки.
Модуль 2: HTTP Request
Что делает этот модуль: Модуль 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 (Обработка данных)
Что делает этот модуль: Модуль 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 (Генерация саммари)
Что делает этот модуль: Модуль OpenAI используется для генерации краткого саммари новостей, отобранных на предыдущих шагах. С помощью модели GPT-4 он превращает заголовки и описания новостей в лаконичные и информативные тексты, которые удобно читать и оценивать.
⚙️ Настройка подключения к OpenAI (API Integration):
Поля для заполнения:
- API Key:Необходимо получить на сайте https://platform.openai.com/api-keys.
Ключ выглядит примерно так: sk-xxxxxxxxxxxxxxxxxxxx.
Вставьте ключ в соответствующее поле. - Organization ID (необязательно):Используется только если у вас несколько организаций в OpenAI.
Для большинства пользователей это поле можно оставить пустым. - 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 }} — добавляет ссылку на оригинальную статью.
Если заголовок или описание отсутствуют, выводятся заглушки: «Заголовок отсутствует» и «Описание отсутствует».
Это помогает избежать ошибок, если в данных нет нужной информации.
Дополнительные настройки модуля 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 (Фильтрация контента)
Что делает этот модуль:
Модуль 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
Что делает этот модуль: Модуль Telegram отвечает за отправку сгенерированных и отфильтрованных новостей прямо в Telegram-чат. Это финальный шаг, который доставляет готовые саммари администратору для дальнейшей оценки и публикации.
⚙️ Настройки модуля:
- Credential to connect with: Telegram account — настройки подключения к вашему Telegram-боту.
- Resource: Message — мы работаем с сообщениями.
- Operation: Send Message — операция для отправки текста в указанный чат.
- Chat ID: 111111111 — уникальный идентификатор чата, куда будет отправлено сообщение.
- Здесь используется шаблонная переменная для вставки текста сообщения из предыдущего шага.
Text:
{{ $json.message.content }}
Как создать Telegram-бота и получить API-токен
- Найти BotFather в Telegram:
Откройте Telegram и в поиске введите @BotFather. - Создать нового бота:
Нажмите "Start" и введите команду:
/newbot - Придумайте имя для бота (например, NewsAssistantBot).
Укажите уникальное имя пользователя для бота (должно заканчиваться на bot, например, NewsAI_Bot). - Получить API-токен:
После создания бота BotFather отправит вам сообщение с токеном вида: 123456789:ABCDefGhIJKlmNoPQRstuVWxyz1234567890
Этот токен нужно сохранить — он потребуется для подключения бота в n8n.
- Подключение бота к n8n:В модуле Telegram нажмите на иконку карандаша рядом с полем "Credential to connect with".
В открывшемся окне введите API-токен, который вы получили от BotFather.
Нажмите "Save".
🆔 Как найти Chat ID
Можно использовать готового бота @userinfobot.
Нажмите "Start", и он покажет ваш Telegram ID.
Модуль Telegram завершает цепочку автоматизации, отправляя готовые новости в нужный чат.
Настроить бота и подключить его к n8n довольно просто, и вы сможете легко автоматизировать процесс доставки информации в Telegram.
* * *
Для справки:
Как модифицировать ссылку для разных тем
Сейчас ссылка для запроса новостей выглядит так:
https://newsapi.org/v2/everything?q=AI+trends&sortBy=publishedAt&language=en
- q=AI+trends — отвечает за поиск новостей по ключевым словам.
- sortBy=publishedAt — сортировка по дате публикации (новые сверху).
- language=en — фильтр по языку (в данном случае английский).
Чтобы собирать новости на другие темы:
- Новости про моду:
https://newsapi.org/v2/everything?q=fashion&sortBy=publishedAt&language=enИзменили q=AI+trends на q=fashion. - Новости про спорт:
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 с бесплатным тарифом и хорошими фильтрами по языкам и темам. - Currents API: https://currentsapi.services/en
Ориентирован на свежие трендовые новости, есть бесплатный план.
Больше кейсов на канале “AI для продакта”.