Blog / AI
AI

Fil d’actualité personnel avec Bright Data et n8n

Découvrez comment automatiser la collecte et la diffusion de nouvelles à l’aide de flux de travail sans code alimentés par n8n, OpenAI et le serveur Model Context Protocol de Bright Data.
13 min de lecture
Custom news feed with Bright Data and N8N blog image

Dans ce guide, vous apprendrez à construire un scraper de nouvelles automatisé avec n8n, OpenAI et le serveur MCP de Bright Data. À la fin de ce tutoriel, vous serez en mesure d’effectuer les opérations suivantes.

  • Créer une instance n8n auto-hébergée
  • Installer des nœuds communautaires dans n8n
  • Créez vos propres flux de travail avec n8n
  • Intégrer des agents d’IA en utilisant OpenAI et n8n
  • Connectez votre agent AI à Web Unlocker à l’aide du serveur MCP de Bright Data
  • Envoyer des courriels automatisés à l’aide de n8n

Pour commencer

Pour commencer, nous devons lancer une instance auto-hébergée de n8n. Une fois l’instance lancée, nous devons installer un nœud communautaire n8n. Nous devons également obtenir les clés API d’OpenAI et de Bright Data pour exécuter notre workflow de scraping.

Lancement de n8n

Créez un nouveau volume de stockage pour n8n et lancez-le dans un conteneur 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

Ouvrez maintenant http://localhost:5678/ dans votre navigateur. Vous serez probablement invité à vous connecter ou à créer un login.

n8n Local Login

Une fois que vous êtes connecté, allez dans vos paramètres et sélectionnez “Nœuds communautaires”. Cliquez ensuite sur le bouton “Installer un nœud communautaire”.

Installer les nœuds communautaires

Sous “npm Package Name”, entrez “n8n-nodes-mcp”.

Installer le nœud communautaire MCP avec npm

Obtenir des clés API

Vous aurez besoin d’une clé API OpenAI et d’une clé API Bright Data. Votre clé OpenAI permet à votre instance n8n d’accéder à des LLM tels que GPT-4.1. Votre clé API Bright Data permet à votre LLM d’accéder aux données Web en temps réel via le serveur MCP de Bright Data.

Clés API OpenAI

Rendez-vous sur la plateforme de développement d’ OpenAI et créez un compte si vous ne l’avez pas encore fait. Sélectionnez “API keys” et cliquez sur le bouton “Create new secret key”. Enregistrez la clé dans un endroit sûr.

Créer une nouvelle clé API OpenAI

Clés API de Bright Data

Vous avez peut-être déjà un compte chez Bright Data. Même si c’est le cas, vous devez créer une nouvelle zone Web Unlocker. Dans le tableau de bord de Bright Data, sélectionnez “Proxies and Scraping” et cliquez sur le bouton “Add”.

Ajout d'une nouvelle instance de Web Unlocker

Vous pouvez utiliser d’autres noms de zone, mais nous vous recommandons vivement de nommer cette zone “mcp_unlocker”. Ce nom lui permet de fonctionner avec notre serveur MCP pratiquement dès sa sortie de l’emballage.

Dans les paramètres de votre compte, copiez votre clé API et conservez-la dans un endroit sûr. Cette clé permet d’accéder à tous vos services Bright Data.

Exportation de votre clé d'API Bright Data

Maintenant que nous disposons d’une instance n8n auto-hébergée et des informations d’identification appropriées, il est temps d’élaborer notre flux de travail.

Construire le flux de travail

Flux de travail complet d'un scrapeur de nouvelles

Nous allons maintenant construire notre flux de travail. Cliquez sur le bouton “Créer un nouveau flux de travail”. Vous disposez alors d’un canevas vierge sur lequel vous pouvez travailler.

1. Création de notre déclencheur

Ajout du nœud de déclenchement du chat

Nous allons commencer par créer un nouveau nœud. Dans la barre de recherche, tapez “chat” et sélectionnez le nœud “Chat Trigger”.

Le déclencheur de chat ne sera pas notre déclencheur permanent, mais il facilite grandement le débogage. Notre agent d’intelligence artificielle va recevoir une invite. Avec le nœud Chat Trigger, vous pouvez facilement essayer différentes invites sans avoir à modifier vos nœuds.

2. Ajout de notre agent

Ajout de l'agent AI

Ensuite, nous devons connecter notre nœud de déclenchement à un agent d’intelligence artificielle. Ajoutez un autre nœud et tapez “ai agent” dans la barre de recherche. Sélectionnez le nœud AI Agent.

Sélection de l'agent AI

Cet agent d’intelligence artificielle contient l’essentiel de notre temps d’exécution. L’agent reçoit une invite et exécute ensuite notre logique de scraping. Vous pouvez lire notre message ci-dessous. N’hésitez pas à l’adapter à votre convenance – c’est la raison pour laquelle nous avons ajouté le déclencheur de conversation. L’extrait ci-dessous contient l’invite que nous utiliserons pour ce flux de travail.

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. Connexion d’un modèle

Ajout de notre modèle de chat

Cliquez sur le “+” sous “Chat Model” et tapez “openai” dans la barre de recherche. Sélectionnez le modèle de chat OpenAI.

Recherche de l'OpenAI

Lorsque vous êtes invité à ajouter des informations d’identification, ajoutez votre clé API OpenAI et enregistrez l’information d’identification.

Ajouter votre clé API OpenAI

Ensuite, nous devons choisir un modèle. Vous pouvez choisir n’importe quel modèle, mais n’oubliez pas qu’il s’agit d’un processus complexe pour un seul agent. Avec le GPT-4o, nous n’avons obtenu qu’un succès limité. Les modèles GPT-4.1-Nano et GPT-4.1-Mini se sont tous deux révélés insuffisants. Le modèle GPT-4.1 complet est plus cher, mais il s’est avéré incroyablement compétent – c’est donc celui que nous avons choisi.

Sélection du modèle GPT

4. Ajout de mémoire

Ajouter de la mémoire à notre agent

Pour gérer les fenêtres contextuelles, nous devons ajouter de la mémoire. Nous n’avons pas besoin de quelque chose de complexe. Nous avons juste besoin d’une configuration de mémoire simple pour que notre modèle puisse se souvenir de ce qu’il fait d’une étape à l’autre.

Choisissez la “Mémoire simple” pour donner une mémoire à votre modèle.

Choisir la mémoire simple

5. Connexion au MCP de Bright Data

Ajouter des outils de liste à notre flux de travail

Pour effectuer des recherches sur le Web, notre modèle doit se connecter au serveur MCP de Bright Data. Cliquez sur le “+” sous “Outil” et sélectionnez le client MCP qui apparaît en haut de la section “Autres outils”.

Sélection de l'outil client MCP

Lorsque vous y êtes invité, entrez vos informations d’identification pour le serveur MCP de Bright Data. Dans la case “Commande”, entrez npx – cela permet à NodeJS de créer et d’exécuter automatiquement notre serveur MCP. Sous “Arguments”, ajoutez @brightdata/mcp. Dans “Environments”, entrez API_TOKEN=YOUR_BRIGHT_DATA_API_KEY (remplacez-la par votre clé réelle).

Ajout des informations d'identification MCP

La méthode par défaut de cet outil est “Outils de liste”. C’est exactement ce que nous devons faire. Si votre modèle est capable de se connecter, il enverra un ping au serveur MCP et listera les outils disponibles.

Paramètres par défaut du client MCP

Une fois que vous êtes prêt, entrez un message dans le chat. Utilisez une simple question demandant d’énumérer les outils disponibles.

List the tools available to you

Vous devriez recevoir une réponse énumérant les outils disponibles pour le modèle. Si c’est le cas, vous êtes connecté au serveur MCP. L’extrait ci-dessous ne contient qu’une partie de la réponse. Au total, 21 outils sont disponibles pour le modèle.

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. Ajout des outils de scraping

Donner à notre agent l'accès à des outils de scraping

Cliquez à nouveau sur le “+” sous “Outil”. Sélectionnez à nouveau le même “Outil client MCP” dans la section “Autres outils”.

Outil client MCP

Cette fois, réglez l’outil sur “Exécuter l’outil”.

Paramètres de l'outil client MCP

Sous “Nom de l’outil”, collez l’expression JavaScript suivante. Nous appelons la fonction “fromAI” et lui transmettons le nom de l'outil, la description et le type de données.

{{ $fromAI("toolname", "the most applicable tool required to be executed as specified by the users request and list of tools available", "string") }}

Sous les paramètres, ajoutez le bloc suivant. Il donne une requête au modèle avec votre moteur de recherche préféré.

{
  "query": "Return the top 5 world news headlines and their links."
,
  "engine": "google"
}

Ajustez maintenant les paramètres de l’agent IA lui-même. Ajoutez le message système suivant.

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"
Agent IA ajusté avec message du système

Avant d’exécuter le scraper, nous devons activer les tentatives. Les agents d’intelligence artificielle sont intelligents, mais ils ne sont pas parfaits. Les tâches échouent parfois et il faut les gérer. Tout comme pour les scrapeurs codés manuellement, la logique de relance n’est pas optionnelle si vous voulez un produit qui fonctionne de manière cohérente.

Activation de la logique de réessai

Exécutez l’invite ci-dessous.

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.

Si tout fonctionne, vous devriez obtenir une réponse similaire à celle ci-dessous.

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. Le début et la fin

Flux de travail entièrement finalisé

Maintenant que notre agent d’intelligence artificielle fait son travail, nous devons ajouter le début et la fin du flux de travail. Notre scraper de nouvelles doit fonctionner à partir d’un planificateur, et non d’une invite individuelle. Enfin, notre sortie doit envoyer un courrier électronique via SMTP.

Ajouter le bon déclencheur

Recherchez le nœud “Schedule Trigger” et ajoutez-le à votre flux de travail.

Sélectionner le déclencheur de la programmation

Réglez-le pour qu’il se déclenche à l’heure souhaitée. Nous avons choisi 9h00.

Établissement du calendrier

Nous devons maintenant ajouter un nœud supplémentaire à notre logique de déclenchement. Ce nœud injectera une invite factice dans notre modèle de conversation.
Ajoutez le nœud “Edit Fields” à votre Schedule Trigger.

Démarrage du flux de travail

Ajoutez ce qui suit à votre nœud Edit Fields en tant que JSON. “sessionId” est juste une valeur fictive – vous ne pouvez pas démarrer un chat sans sessionId. “chatInput” contient l’invite que nous injectons dans le 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."
}

Enfin, reliez ces nouvelles étapes à votre agent d’intelligence artificielle. Votre agent peut maintenant être déclenché par le planificateur.

Connexion de l'ordonnanceur à l'agent AI

Sortie des résultats par courrier électronique

Cliquez sur le “+” à droite de votre nœud d’agent AI. Ajoutez le nœud “Envoyer un courrier électronique” à la fin de votre flux de travail. Ajoutez vos informations d’identification SMTP, puis utilisez les paramètres pour personnaliser l’e-mail.

Paramètres SMTP Email

Le courrier électronique

Vous pouvez maintenant cliquer sur le bouton “Tester le flux de travail”. Lorsque le flux de travail s’exécute avec succès, vous recevrez un courriel contenant tous les titres actuels. GPT-4.1

Email de sortie de scrape réussi

Pour aller plus loin : Récupérer des sites web réels

Dans son état actuel, notre agent IA trouve les titres de Google News en utilisant l’outil de moteur de recherche du serveur MCP. En utilisant uniquement un moteur de recherche, les résultats peuvent être incohérents. Parfois, l’agent d’intelligence artificielle trouve de vrais titres. D’autres fois, il ne voit que les métadonnées du site – “Get the latest headlines from CNN !”.

Au lieu de limiter notre extraction à l’outil du moteur de recherche, ajoutons un outil de scraping. Commencez par ajouter un autre outil à votre flux de travail. Vous devriez maintenant avoir trois clients MCP attachés à votre agent AI, comme vous le voyez dans l’image ci-dessous.

Ajout d’outils de scraping

Un nouvel outil pour l'agent d'intelligence artificielle

Nous devons maintenant ouvrir les réglages et les paramètres de ce nouvel outil. Remarquez que nous avons défini manuellement la description de l’outil cette fois-ci. Nous faisons cela pour que l’agent ne s’y perde pas.

Dans notre description, nous indiquons à l’agent AI d’utiliser cet outil pour gratter des URL. Le nom de notre outil est similaire à celui que nous avons créé précédemment.

{{ $fromAI("toolname", "the most applicable scraping tool required to be executed as specified by the users request and list of tools available", "string") }}

Dans nos paramètres, nous spécifions une adresse URL au lieu d’une requête ou d’un moteur de recherche.

{
  "url": "{{$fromAI('URL', 'url that the user would like to scrape', 'string')}}"
}

Ajustement des autres nœuds et outils

L’outil du moteur de recherche

Avec notre outil de scraping, nous avons défini la description manuellement pour éviter que l’agent AI ne s’y perde. Nous allons également ajuster l’outil de moteur de recherche. Les changements ne sont pas importants, nous lui demandons simplement d’utiliser l’outil de moteur de recherche lors de l’exécution de ce client MCP.

Description manuelle de l'outil de moteur de recherche

Champs d’édition : L’invite factice

Ouvrez le nœud Edit Fields et ajustez notre invite fictive.

{
  "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."
}

Vos paramètres devraient ressembler à l’image ci-dessous.

Réglage de l'invite factice

À l’origine, nous avons utilisé Reddit au lieu de The Guardian. Cependant, les LLM d’OpenAI obéissent au fichier robots.txt. Même si Reddit est facile à récupérer, l’agent d’IA refuse de le faire.

LLM refuse de gratter Reddit

Le nouveau fil d’actualité

En ajoutant un autre outil, nous avons donné à notre agent d’intelligence artificielle le pouvoir de gratter les sites web, et pas seulement les résultats des moteurs de recherche. Jetez un coup d’œil à l’e-mail ci-dessous. Son format est beaucoup plus épuré et il contient une analyse très détaillée des informations provenant de chaque source.

Notre fil d'actualité est terminé

Conclusion

En combinant n8n, OpenAI et le serveur Model Context Protocol (MCP) de Bright Data, vous pouvez automatiser l’extraction et la diffusion d’informations grâce à de puissants flux de travail pilotés par l’IA. Le MCP facilite l’accès aux données web structurées et actualisées en temps réel, ce qui permet à vos agents d’IA d’extraire un contenu précis à partir de n’importe quelle source. À mesure que l’automatisation de l’IA évolue, des outils tels que MCP de Bright Data seront essentiels pour une collecte de données efficace, évolutive et fiable.

Bright Data vous encourage à lire notre article sur le web scraping avec les serveurs MCP. Inscrivez-vous dès maintenant pour obtenir vos crédits gratuits afin de tester nos produits.