В этом руководстве вы узнаете, как создать автоматический скребок новостей с помощью n8n, OpenAI и Bright Data MCP Server. К концу этого руководства вы сможете выполнить следующие действия.
- Создайте самостоятельно размещаемый экземпляр n8n
- Установите узлы сообщества в n8n
- Создавайте собственные рабочие процессы с помощью n8n
- Интеграция агентов искусственного интеллекта с помощью OpenAI и n8n
- Подключите AI Agent к Web Unlocker с помощью MCP Server от Bright Data
- Отправка автоматических писем с помощью n8n
Начало работы
Для начала нам нужно запустить самостоятельный экземпляр n8n. Как только он будет запущен, нам нужно установить n8n Community Node. Также нам нужно получить API-ключи от OpenAI и Bright Data, чтобы выполнить наш рабочий процесс скрапинга.
Запуск n8n
Создайте новый том хранения для n8n и запустите его в контейнере Docker.
# Create persistent volume
sudo docker volume create n8n_data
# Start self-hosted n8n container with support for unsigned community nodes
sudo docker run -d
--name n8n
-p 5678:5678
-v n8n_data:/home/node/.n8n
-e N8N_BASIC_AUTH_ACTIVE=false
-e N8N_ENCRYPTION_KEY="this_is_my_secure_encryption_key_1234"
-e N8N_ALLOW_LOADING_UNSIGNED_NODES=true
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-e N8N_HOST="0.0.0.0"
-e N8N_PORT=5678
-e WEBHOOK_URL="http://localhost:5678"
n8nio/n8n
Теперь откройте http://localhost:5678/ в своем браузере. Скорее всего, вам будет предложено войти в систему или создать логин.
После того как вы вошли в систему, перейдите в настройки и выберите “Узлы сообщества”. Затем нажмите кнопку “Установить узел сообщества”.
В поле “npm Package Name” введите “n8n-nodes-mcp”.
Получение ключей API
Вам понадобятся как ключ OpenAI API, так и ключ Bright Data API. Ключ OpenAI позволит вашему экземпляру n8n получить доступ к LLM, например, GPT-4.1. API-ключ Bright Data позволяет вашему LLM получить доступ к веб-данным в режиме реального времени через MCP-сервер Bright Data.
Ключи API OpenAI
Перейдите на платформу для разработчиков OpenAI и создайте учетную запись, если вы еще этого не сделали. Выберите “API-ключи”, а затем нажмите кнопку “Создать новый секретный ключ”. Сохраните ключ в безопасном месте.
Ключи API Bright Data
Возможно, у вас уже есть учетная запись в Bright Data. Но даже если это так, вам следует создать новую зону Web Unlocker. На панели управления Bright Data выберите “Прокси и скрапинг” и нажмите кнопку “Добавить”.
Вы можете использовать другие имена зон, но мы настоятельно рекомендуем назвать эту зону “mcp_unlocker”. Это имя позволит ей работать с нашим MCP Server практически из коробки.
В настройках учетной записи скопируйте свой ключ API и положите его в надежное место. Этот ключ обеспечивает доступ ко всем вашим услугам Bright Data.
Теперь, когда у нас есть собственный экземпляр n8n и соответствующие учетные данные, пришло время построить наш рабочий процесс.
Построение рабочего процесса
Теперь мы приступим к созданию нашего рабочего процесса. Нажмите на кнопку “Создать новый рабочий процесс”. Это даст вам чистый холст для работы.
1. Создание триггера
Начнем с создания нового узла. В строке поиска введите “chat”, а затем выберите узел “Chat Trigger”.
Чат-триггер не будет нашим постоянным триггером, но он значительно упрощает отладку. Наш агент ИИ собирается получить подсказку. С помощью узла Chat Trigger вы можете легко пробовать разные подсказки, не редактируя узлы.
2. Добавление нашего агента
Далее нам нужно подключить наш триггерный узел к агенту ИИ. Добавьте еще один узел и введите в строку поиска “ai agent”. Выберите узел AI Agent.
Этот агент искусственного интеллекта содержит практически все наше время выполнения. Агент получает подсказку, а затем выполняет нашу логику скраппинга. Вы можете прочитать нашу подсказку ниже. Не стесняйтесь корректировать его по своему усмотрению – именно поэтому мы добавили триггер чата. В приведенном ниже фрагменте содержится подсказка, которую мы будем использовать в этом рабочем процессе.
Get the global news for the day. Use whichever sites and tools available to make it happen. When finished, cite your sources with direct links. I'd like a real headline from each page you cite.
3. Подключение модели
Нажмите на “+” под “Модель чата” и введите “openai” в строку поиска. Выберите модель чата OpenAI.
Когда появится запрос на добавление учетных данных, добавьте свой ключ API OpenAI и сохраните его.
Далее нам нужно выбрать модель. Вы можете выбрать любую модель, но помните, что это сложный рабочий процесс для одного агента. С GPT-4o мы добились ограниченного успеха. GPT-4.1-Nano и GPT-4.1-Mini оказались недостаточными. Полная модель GPT-4.1 стоит дороже, но оказалась невероятно компетентной, поэтому мы остановились именно на ней.
4. Добавление памяти
Чтобы управлять контекстными окнами, нам нужно добавить памяти. Нам не нужно ничего сложного. Нам просто нужна настройка Simple Memory, чтобы наша модель могла помнить, что она делает на разных шагах.
Выберите “Простая память”, чтобы дать вашей модели память.
5. Подключение к MCP Bright Data
Для поиска в Интернете нашей модели необходимо подключиться к MCP-серверу Bright Data. Нажмите на “+” под “Инструмент” и выберите MCP Client, который появится в верхней части раздела “Другие инструменты”.
Когда появится запрос, введите учетные данные для сервера Bright Data MCP Server. В поле “Команда” введите npx
– это позволит NodeJS автоматически создать и запустить наш MCP-сервер. В поле “Аргументы” добавьте @brightdata/mcp
. В поле “Среды” введите API_TOKEN=YOUR_BRIGHT_DATA_API_KEY
(замените это значение на ваш реальный ключ).
По умолчанию для этого инструмента используется метод “Инструменты списка”. Именно это нам и нужно сделать. Если ваша модель сможет подключиться, она выполнит пинг сервера MCP и выведет список доступных ей инструментов.
Как только вы будете готовы, введите в чат запрос. Используйте простой запрос с просьбой перечислить доступные инструменты.
List the tools available to you
Вы должны получить ответ с перечнем инструментов, доступных для данной модели. Если это произошло, значит, вы подключились к серверу MCP. В приведенном ниже фрагменте содержится только часть ответа. Всего для модели доступен 21 инструмент.
Here are the tools available to me:
1. search_engine – Search Google, Bing, or Yandex and return results in markdown (URL, title, description).
2. scrape_as_markdown – Scrape any webpage and return results as Markdown.
3. scrape_as_html – Scrape any webpage and return results as HTML.
4. session_stats – Show the usage statistics for tools in this session.
5. web_data_amazon_product – Retrieve structured Amazon product data (using a product URL).
6. Добавление инструментов для скрапбукинга
Снова нажмите на “+” под пунктом “Инструмент”. Снова выберите тот же “MCP Client Tool” из раздела “Other Tools”.
На этот раз установите инструмент на “Execute Tool”.
В разделе “Имя инструмента” вставьте следующее выражение JavaScript. Мы вызываем функцию “fromAI” и передаем в нее название инструмента
, описание
и тип данных
.
{{ $fromAI("toolname", "the most applicable tool required to be executed as specified by the users request and list of tools available", "string") }}
Под параметрами добавьте следующий блок. Он выдает запрос к модели через выбранную вами поисковую систему.
{
"query": "Return the top 5 world news headlines and their links."
,
"engine": "google"
}
Теперь настройте параметры самого агента ИИ. Добавьте следующее системное сообщение.
You are an expert web scraping assistant with access to Bright Data's Web Unlocker API. This gives you the ability to execute a specific set of actions. When using tools, you must share across the exact name of the tool for it to be executed.
For example, "Search Engine Scraping" should be "search_engine"
Перед тем как запустить скребок, нужно включить повторные попытки. Агенты ИИ умны, но они не идеальны. Иногда задания терпят неудачу, и с ними нужно бороться. Как и в случае со скреперами, написанными вручную, логика повторных попыток не является необязательной, если вы хотите получить продукт, который будет работать стабильно.
Запустите приведенную ниже подсказку.
Get the global news for the day. Use whichever sites and tools available to make it happen. When finished, cite your sources with direct links. I'd like a real headline from each page you cite.
Если все работает, вы должны получить ответ, аналогичный приведенному ниже.
Here are real global news headlines for today, each with a direct source link:
1. Reuters
Headline: Houthi ceasefire followed US intel showing militants sought off-ramp
Source: https://www.reuters.com/world/
2. CNN
Headline: UK police arrest man for arson after fire at PM Starmer's house
Source: https://www.cnn.com/world
3. BBC
Headline: Uruguay's José Mujica, world's 'poorest president', dies
Source: https://www.bbc.com/news/world
4. AP News
Headline: Israel-Hamas war, Russia-Ukraine War, China, Asia Pacific, Latin America, Europe, Africa (multiple global crises)
Source: https://apnews.com/world-news
5. The Guardian
Headline: Fowl play: flying duck caught in Swiss speed trap believed to be repeat offender
Source: https://www.theguardian.com/world
These headlines were selected from the main headlines of each trusted global news outlet’s world section as of today.
7. Начало и конец
Теперь, когда наш агент искусственного интеллекта выполняет свою работу, нам нужно добавить начало и конец рабочего процесса. Наш скребок новостей должен работать от планировщика, а не от отдельного запроса. Наконец, на выходе мы должны отправить письмо по SMTP.
Добавление правильного триггера
Найдите узел “Триггер расписания” и добавьте его в рабочий процесс.
Установите его на срабатывание в желаемое время. Мы выбрали 9:00 утра.
Теперь нам нужно добавить еще один узел в логику триггера. Этот узел будет вводить фиктивную подсказку в нашу модель чата.
Добавьте узел “Редактировать поля” в триггер расписания.
Добавьте следующее в узел Edit Fields в формате JSON. “sessionId” – это просто фиктивное значение – вы не можете начать чат без sessionId. “chatInput” содержит подсказку, которую мы вводим в LLM.
{
"sessionId": "google",
"chatInput": "Get the global news for the day. Use whichever sites and tools available to make it happen. When finished, cite your sources with direct links. I'd like a real headline from each page you cite."
}
Наконец, подключите эти новые шаги к агенту искусственного интеллекта. Теперь ваш агент может быть запущен планировщиком.
Вывод результатов по электронной почте
Нажмите на “+” в правой части узла агента AI. Добавьте узел “Отправить электронное письмо” в конец рабочего процесса. Добавьте учетные данные SMTP, а затем используйте параметры для настройки письма.
Электронная почта
Теперь вы можете нажать кнопку “Проверить рабочий процесс”. После успешного запуска рабочего процесса вы получите электронное письмо со всеми текущими заголовками. GPT-4.1
Идем дальше: Скраппинг реальных веб-сайтов
В текущем состоянии наш агент ИИ находит заголовки из Google News, используя инструмент поисковой системы сервера MCP. При использовании только поисковой системы результаты могут быть непоследовательными. Иногда агент ИИ находит реальные заголовки. В других случаях он видит только метаданные сайта – “Получите последние заголовки от CNN!”.
Вместо того чтобы ограничиваться инструментом поисковой системы, давайте добавим инструмент для соскабливания. Начните с добавления еще одного инструмента в рабочий процесс. Теперь у вас должно быть три клиента MCP, подключенных к агенту AI Agent, как показано на изображении ниже.
Добавление инструментов для скрапинга
Теперь нам нужно открыть настройки и параметры для этого нового инструмента. Обратите внимание, что на этот раз мы задали описание инструмента вручную. Мы делаем это для того, чтобы агент не запутался.
В описании мы указываем агенту искусственного интеллекта использовать этот инструмент для поиска URL-адресов. Имя инструмента аналогично тому, которое мы создали ранее.
{{ $fromAI("toolname", "the most applicable scraping tool required to be executed as specified by the users request and list of tools available", "string") }}
В параметрах мы указываем url, а не запрос или поисковую систему.
{
"url": "{{$fromAI('URL', 'url that the user would like to scrape', 'string')}}"
}
Настройка других узлов и инструментов
Инструмент для поисковых систем
В нашем инструменте скраппинга мы задаем описание вручную, чтобы агент ИИ не запутался. Мы также настроим инструмент поисковой системы. Изменения не очень значительны, мы просто вручную указываем ему использовать инструмент Search Engine при выполнении этого MCP-клиента.
Поля редактирования: Фиктивная подсказка
Откройте узел Edit Fields и настройте нашу фиктивную подсказку.
{
"sessionId": "google",
"chatInput": "get the latest news from https://www.brightdata.com/blog and https://www.theguardian.com/us with your scrape_as_markdown and Google News with your search engine tool to find the latest global headlines--pull actual headlines, not just the site description."
}
Ваши параметры должны выглядеть так, как показано на рисунке ниже.
Изначально мы использовали Reddit вместо The Guardian. Однако ИИ-агенты OpenAI подчиняются файлу robots.txt
. Несмотря на то, что Reddit легко скрафтить, ИИ-агент отказывается это делать.
Новая курируемая лента
Добавив еще один инструмент, мы дали нашему агенту искусственного интеллекта возможность действительно скрести веб-сайты, а не только результаты поисковых систем. Взгляните на письмо ниже. Оно имеет гораздо более чистый формат с подробной разбивкой новостей из каждого источника.
Заключение
Сочетание n8n, OpenAI и сервера Model Context Protocol (MCP) компании Bright Data позволяет автоматизировать сбор и доставку новостей с помощью мощных рабочих процессов, управляемых искусственным интеллектом. MCP упрощает доступ к актуальным структурированным веб-данным в режиме реального времени, позволяя вашим агентам ИИ извлекать точный контент из любого источника. По мере развития автоматизации ИИ такие инструменты, как MCP от Bright Data, будут необходимы для эффективного, масштабируемого и надежного сбора данных.
Bright Data рекомендует вам прочитать нашу статью о веб-скреппинге с помощью серверов MCP. Зарегистрируйтесь сейчас, чтобы получить бесплатные кредиты для тестирования наших продуктов.