Recherche web sur Google Sheets par IA (GPT et Bright Data)
Avancé
Ceci est unMarket Research, AI RAGworkflow d'automatisation du domainecontenant 22 nœuds.Utilise principalement des nœuds comme Set, Webhook, DataTable, HttpRequest, Agent. Recherche web basée sur l'IA pour Google Sheets (GPT et Bright Data)
Prérequis
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API OpenAI
Nœuds utilisés (22)
Catégorie
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
"meta": {
"instanceId": "ca49a649cff334d4dc2badc0109f1718ecfce65b8ecc6e46df324506dd844436",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "14cd7efc-ef41-418a-af6d-bedef22b8085",
"name": "Répondre à Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-480,
304
],
"parameters": {
"options": {
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "text/plain; charset=utf-8"
}
]
}
},
"respondWith": "text",
"responseBody": "={{ $json.output.summary }}"
},
"typeVersion": 1.4
},
{
"id": "b33b25ad-aff9-4192-946b-becd709dfe6c",
"name": "Agent de recherche Bright Data",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-592,
-96
],
"parameters": {
"text": "=You are an AI agent specialized in web search and information retrieval.\n\nQuery: \"{{ $json.output }}\"\n\n## Objective: \nPerform a focused search and return the most relevant link in **JSON format only**: \n```json\n{\n \"link\": \"\"\n}\n\n## Execution Process:\n\n### 1. Run Search\nsearch_engine(\n query: [the query you constructed],\n engine: \"google\",\n limit: 10,\n country: \"us\" or \"il\" depending on relevance\n)\n\n### 2. Filter Results\n\nPrioritize reliable sources:\nMajor news websites (Reuters, Bloomberg, WSJ, Haaretz, Globes)\nOfficial websites (investor relations, about pages)\nOfficial financial reports (SEC filings, quarterly reports)\nTrusted data sources (Wikipedia, Crunchbase, LinkedIn)\n\nSkip:\nAds and irrelevant marketing content\nUnverified forums\nOutdated content (unless historical info is requested)\nBroken or invalid links\n\nFind a suitable link based on:\nRelevance to the query\nRecency of the source\nSource credibility\n\n### 3. Return Result\n\nRequired format – JSON only, no additional text:\n{\n \"link\": \"https://...\"\n}\n\nIf no high-quality result is found, search another source until you find one or return \"\".\n\n## Error Handling:\n\nIf search fails → try an alternative query\nIf no results found → return JSON with empty fields\nAlways return valid JSON, with no explanations or extra text",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "d018693a-0fdf-4ae8-ae22-1b4f79bed2a1",
"name": "Bright Data MCP",
"type": "@n8n/n8n-nodes-langchain.mcpClientTool",
"position": [
-528,
64
],
"parameters": {
"include": "selected",
"options": {
"timeout": 120000
},
"endpointUrl": "https://mcp.brightdata.com/mcp?token=57b289e26c7442f93e806ffe57409116f831983859d456663c260c14a9097ef0&pro=1",
"includeTools": [
"search_engine"
],
"serverTransport": "httpStreamable"
},
"typeVersion": 1.1
},
{
"id": "ddf8a398-38ae-4da4-a2aa-0fe6a4b3e62b",
"name": "Appel Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-1664,
-32
],
"webhookId": "adc93cdb-28a7-4e48-ad3e-b5c8924f92fa",
"parameters": {
"path": "brightdata-search",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "D5oQ7Gi9TGPHo4oc",
"name": "82Labs - Webhook"
}
},
"typeVersion": 2.1
},
{
"id": "8dfdd46c-ad8f-458a-a403-45910dcc13e5",
"name": "Agent d'ajustement de requête",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1120,
-96
],
"parameters": {
"text": "=User prompt: {{ $json.userPrompt }}\nPrompt's referral: {{ $json.cellReference }}\n",
"options": {
"systemMessage": "=### 1. Request Analysis \n\nIdentify the query type: \n- **News/Updates**: \"News about X\", \"What’s happening with X\" \n- **Financial Data**: \"Revenue\", \"Earnings\", \"Financial Reports\" \n- **Factual Information**: \"Who is the CEO\", \"How many employees\", \"Where is the HQ\" \n- **Analysis/Comparison**: \"Competitors\", \"Compare to Y\", \"Alternatives\" \n- **General Research**: Open-ended questions about a topic/field \n\n### 2. Search Query Construction \nBuild an optimal query based on the type:\n\n**News**: `\"{{ entity }}\" news [year/month if relevant]` \n**Financial Data**: `\"{{ entity }}\" revenue earnings \"Q[X] [year]\"` or `financial results` \n**Factual Information**: `\"{{ entity }}\" [specific fact] official` \n**Analysis**: `\"{{ entity }}\" analysis competitors market share` \n\n**Principles:** \n- Always translate to English to maximize results \n- Keep double quotes around specific names \n- Add relevant time — current time is {{ $now.format('dd/LL/yyyy') }} \n- Match keywords to the requested information type \n\n## Examples:\n\n**Input**: Prompt's referral=\"Apple\", user prompt=\"Search for news about the company\" \noutput example: \"Apple Inc\" news 2025 technology \n\n**Input**: Prompt's referral=\"Tesla\", user prompt=\"Monthly revenue April\" \noutput example: \"Tesla\" revenue \"April 2024\" OR \"Q2 2024\" financial results \n\n**Input**: Prompt's referral=\"United States\", user prompt=\"Who is the president\" \noutput example: \"United States\" president 19/10/2025 current \n"
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "c12218ae-674c-4bf9-b35b-6a8d6b360c9a",
"name": "Bright Data - Extraction de données",
"type": "n8n-nodes-base.httpRequest",
"position": [
-192,
-48
],
"parameters": {
"url": "https://api.brightdata.com/request",
"method": "POST",
"options": {
"batching": {
"batch": {
"batchSize": 1,
"batchInterval": 2000
}
}
},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "zone",
"value": "mcp_unlocker"
},
{
"name": "url",
"value": "={{ $json.output.link }}"
},
{
"name": "format",
"value": "json"
},
{
"name": "method",
"value": "GET"
},
{
"name": "country",
"value": "il"
},
{
"name": "data_format",
"value": "markdown"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "9f8b11b7-f997-4906-a929-2656cdee4204",
"name": "Extraire les données",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"onError": "continueRegularOutput",
"position": [
-1600,
336
],
"parameters": {
"text": "=## Input\n### The user's original request:\n{{ $('Set Variables').item.json.cellReference }} - {{ $('Set Variables').item.json.userPrompt }}\n### Full content scanned from a website:\n{{ $json.body }}",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=# You are an AI agent specialized in extracting relevant information. Your role is to receive:\n\n1. **The user's original request** – the question or topic requested \n2. **Full content scanned from a website** – raw information from a source \n\n## Objective\n\nExtract and summarize the most relevant information from the scanned content based on the user's query.\n\n## Workflow\n\n1. Carefully read the scanned content \n2. Identify information directly relevant to the user's query \n3. Create a focused and concise summary of only the relevant information \n4. Completely ignore unrelated content \n\n## Output Rules\n\n- **Return only valid JSON** according to the schema below \n- Do not include any text outside the JSON \n- The summary should include **only** information directly relevant to the user's query \n- Maximum preferred length: **400 characters** \n- If no relevant information is found, leave the `summary` field empty (`\"\"`) \n\n## Edge Case Handling\n\n- **Partial or corrupted content:** Extract only the existing and relevant information \n- **Multiple topics in content:** Focus only on the topic relevant to the user's query \n- **Different language:** Translate relevant information to {{ $('Set Variables').item.json.ouputLanguage }} \n- **No relevant information:** Return JSON with an empty `summary` \n- **Always return valid JSON**, no extra text \n\n## Key Principles\n\n** Extract factual, accurate, and focused information ** \n** Translate to {{ $('Set Variables').item.json.ouputLanguage }} when needed ** \n** Summarize concisely within 400 characters ** \n\n** Do not add information that is not in the original content ** \n** Do not include information unrelated to the query ** \n** Do not deviate from the JSON format ** \n"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "d7a349a0-0158-4ec2-bb94-beebebcbe2bd",
"name": "Résumer les informations",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1120,
336
],
"parameters": {
"text": "=scraping summary information: {{ $json.output.summary }}\nthe actual user request/question: {{ $('Set Variables').item.json.cellReference }} - {{ $('Set Variables').item.json.userPrompt }}\n",
"options": {
"systemMessage": "=Generate a conclusion in {{ $('Set Variables').item.json.ouputLanguage }} based on all the information above. Filter and summarize the most relevant information according to the user's question into a maximum of 400 characters. \nAlways return valid JSON, with no explanations or additional text. \n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "4ca74428-5c4a-4c3f-8359-95a1df48a4b9",
"name": "Mettre à jour les journaux",
"type": "n8n-nodes-base.dataTable",
"position": [
-480,
496
],
"parameters": {
"columns": {
"value": {
"output": "={{ $json.output.summary }}",
"input_prompt": "={{ $('Set Variables').item.json.userPrompt }} - {{ $('Set Variables').item.json.cellReference }}"
},
"schema": [
{
"id": "input_prompt",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "input_prompt",
"defaultMatch": false
},
{
"id": "output",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "output",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"logs"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "vAMxTuckOJDPlMN3",
"cachedResultUrl": "/projects/qoZIbTB1W6TCihY8/datatables/vAMxTuckOJDPlMN3",
"cachedResultName": "BrightData Test"
}
},
"typeVersion": 1
},
{
"id": "1abd9a03-bbb3-44cf-b23c-40363d54458e",
"name": "Analyseur de sortie structurée - 1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-352,
64
],
"parameters": {
"jsonSchemaExample": "{\n \"link\": \"\"\n}"
},
"typeVersion": 1.3
},
{
"id": "0b99dc9d-bc59-4054-b97a-7bc708439a22",
"name": "Analyseur de sortie structurée - 2",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-1392,
496
],
"parameters": {
"jsonSchemaExample": "{\n \"summary\": \"\"\n}"
},
"typeVersion": 1.3
},
{
"id": "1987c731-3ef5-4977-8029-8415726355ea",
"name": "GPT 4o Mini - 1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1664,
496
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "KFAwjhWN2Hk6Vvhy",
"name": "General - OpenAi"
}
},
"typeVersion": 1.2
},
{
"id": "2c9c2b61-56f7-40ef-912c-1a1bf34688a2",
"name": "GPT 4o Mini - 2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1184,
496
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "KFAwjhWN2Hk6Vvhy",
"name": "General - OpenAi"
}
},
"typeVersion": 1.2
},
{
"id": "7fd1cabe-0429-4ca4-81ba-8b2e6344279b",
"name": "GPT 4o - 1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-704,
64
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "gpt-4o"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "KFAwjhWN2Hk6Vvhy",
"name": "General - OpenAi"
}
},
"typeVersion": 1.2
},
{
"id": "95e48871-e554-442c-83fb-b028a020b342",
"name": "GPT 4.1 Mini - 1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1184,
80
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "KFAwjhWN2Hk6Vvhy",
"name": "General - OpenAi"
}
},
"typeVersion": 1.2
},
{
"id": "759b9362-6511-47a5-b96c-a7cb340bae16",
"name": "Analyseur de sortie structurée - 3",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-912,
496
],
"parameters": {
"jsonSchemaExample": "{\n\t\"summary\": \"Intel was founded in 1968.\"\n}\n"
},
"typeVersion": 1.3
},
{
"id": "3b9a3797-81bd-4120-9c36-4d5d2c21ac01",
"name": "Web Scraping alimenté par l'IA vers Google Sheets avec Bright Data",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2160,
-208
],
"parameters": {
"color": 6,
"width": 396,
"height": 860,
"content": "# AI-Powered Web Scraping to Google Sheets with Bright Data\n\n## Created by: [Elay Guez](https://www.linkedin.com/in/elay-g)\n\n## Features\n* 📊 **Custom Function** in Google Sheets: `=BRIGHTDATA(cell,\"prompt\")`\n* 🤖 **AI-optimized** search queries for better results\n* 🔍 **Bright Data** enterprise scraping (bypasses bot detection)\n* 🎯 **AI-filtered** results return only the best match\n* ⚡ **<20 second** response time\n\n## Quick Setup\n1. Connect OpenAI API key (GPT-4.1 + GPT-4o Mini + GPT 4o)\n2. Add Bright Data API credentials\n3. Deploy Google Apps Script custom function\n4. Configure webhook authentication\n5. Write preffered Language output in \"Set Variables\" Node\n6. Test & activate! 🚀\n\n## Cost per search: ~$0.02-0.05\n## Time saved: 3-5 minutes per search"
},
"typeVersion": 1
},
{
"id": "14a7088b-82e9-41b4-acbe-899b5eee195b",
"name": "Note adhésive22",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1744,
-208
],
"parameters": {
"color": 5,
"width": 500,
"height": 420,
"content": "# 1) Get Query & Organize Data"
},
"typeVersion": 1
},
{
"id": "97646605-6f57-49f1-9bd6-0afcf176bbe8",
"name": "Note adhésive20",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1232,
-208
],
"parameters": {
"color": 2,
"width": 468,
"height": 420,
"content": "# 2) Suit Query to Brightdata"
},
"typeVersion": 1
},
{
"id": "41e0d6fc-77ce-4541-8522-47f72d9d7782",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-752,
-208
],
"parameters": {
"color": 4,
"width": 724,
"height": 420,
"content": "# 3) Brightdata's Scraping "
},
"typeVersion": 1
},
{
"id": "40feaec4-3243-4c39-be4a-dbd9430707c8",
"name": "Note adhésive15",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1744,
224
],
"parameters": {
"color": 3,
"width": 1716,
"height": 424,
"content": "# 4) Infomation Extraction + Retrieving Summary & Updating Logs "
},
"typeVersion": 1
},
{
"id": "f6fd6c4c-24b2-4e9f-a45d-9e84af36b0dd",
"name": "Définir les variables",
"type": "n8n-nodes-base.set",
"position": [
-1424,
-32
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a4357b33-04b4-4246-ad30-f0d91b6687d2",
"name": "userPrompt",
"type": "string",
"value": "={{ $json.body.source }}"
},
{
"id": "977e4bde-3030-4d02-9c2f-3d46975901be",
"name": "cellReference",
"type": "string",
"value": "={{ $json.body.prompt }}"
},
{
"id": "c63d7766-11b9-4edb-92db-90e25535721b",
"name": "ouputLanguage",
"type": "string",
"value": "Hebrew"
}
]
}
},
"typeVersion": 3.4
}
],
"pinData": {},
"connections": {
"7fd1cabe-0429-4ca4-81ba-8b2e6344279b": {
"ai_languageModel": [
[
{
"node": "b33b25ad-aff9-4192-946b-becd709dfe6c",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"9f8b11b7-f997-4906-a929-2656cdee4204": {
"main": [
[
{
"node": "d7a349a0-0158-4ec2-bb94-beebebcbe2bd",
"type": "main",
"index": 0
}
]
]
},
"ddf8a398-38ae-4da4-a2aa-0fe6a4b3e62b": {
"main": [
[
{
"node": "f6fd6c4c-24b2-4e9f-a45d-9e84af36b0dd",
"type": "main",
"index": 0
}
]
]
},
"f6fd6c4c-24b2-4e9f-a45d-9e84af36b0dd": {
"main": [
[
{
"node": "8dfdd46c-ad8f-458a-a403-45910dcc13e5",
"type": "main",
"index": 0
}
]
]
},
"d018693a-0fdf-4ae8-ae22-1b4f79bed2a1": {
"ai_tool": [
[
{
"node": "b33b25ad-aff9-4192-946b-becd709dfe6c",
"type": "ai_tool",
"index": 0
}
]
]
},
"1987c731-3ef5-4977-8029-8415726355ea": {
"ai_languageModel": [
[
{
"node": "9f8b11b7-f997-4906-a929-2656cdee4204",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"2c9c2b61-56f7-40ef-912c-1a1bf34688a2": {
"ai_languageModel": [
[
{
"node": "d7a349a0-0158-4ec2-bb94-beebebcbe2bd",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"95e48871-e554-442c-83fb-b028a020b342": {
"ai_languageModel": [
[
{
"node": "8dfdd46c-ad8f-458a-a403-45910dcc13e5",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"8dfdd46c-ad8f-458a-a403-45910dcc13e5": {
"main": [
[
{
"node": "b33b25ad-aff9-4192-946b-becd709dfe6c",
"type": "main",
"index": 0
}
]
]
},
"d7a349a0-0158-4ec2-bb94-beebebcbe2bd": {
"main": [
[
{
"node": "14cd7efc-ef41-418a-af6d-bedef22b8085",
"type": "main",
"index": 0
},
{
"node": "4ca74428-5c4a-4c3f-8359-95a1df48a4b9",
"type": "main",
"index": 0
}
]
]
},
"b33b25ad-aff9-4192-946b-becd709dfe6c": {
"main": [
[
{
"node": "c12218ae-674c-4bf9-b35b-6a8d6b360c9a",
"type": "main",
"index": 0
}
]
]
},
"1abd9a03-bbb3-44cf-b23c-40363d54458e": {
"ai_outputParser": [
[
{
"node": "b33b25ad-aff9-4192-946b-becd709dfe6c",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"0b99dc9d-bc59-4054-b97a-7bc708439a22": {
"ai_outputParser": [
[
{
"node": "9f8b11b7-f997-4906-a929-2656cdee4204",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"759b9362-6511-47a5-b96c-a7cb340bae16": {
"ai_outputParser": [
[
{
"node": "d7a349a0-0158-4ec2-bb94-beebebcbe2bd",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"c12218ae-674c-4bf9-b35b-6a8d6b360c9a": {
"main": [
[
{
"node": "9f8b11b7-f997-4906-a929-2656cdee4204",
"type": "main",
"index": 0
}
]
]
}
}
}Foire aux questions
Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Étude de marché, RAG IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Recherche AI multi-sources avancée basée sur Bright Data, OpenAI et Redis
Recherche multi-source avancée IA avec Bright Data, OpenAI et Redis
If
Set
Code
+
If
Set
Code
43 NœudsDaniel Shashko
Étude de marché
Enrichir les prospects Monday.com et rédiger des e-mails personnalisés avec Explorium MCP et GPT-4.1
Enrichissement des données de prospects Monday.com et rédaction d'e-mails personnalisés avec Explorium MCP et GPT-4.1
Set
Gmail
Webhook
+
Set
Gmail
Webhook
28 NœudsElay Guez
Nurturing de leads
Explorer les nœuds n8n dans la bibliothèque de références visuelles
Explorer les nœuds n8n dans la base de références visuelles
If
Ftp
Set
+
If
Ftp
Set
113 NœudsI versus AI
Autres
Agent de recherche approfondie
Agent de recherche intelligente - Générateur automatisé de rapports pour Notion
Set
Code
Filter
+
Set
Code
Filter
43 NœudsAziz B
Étude de marché
Surveillance 24/7 des tendances de l'industrie de l'IA (X, Gmail et sites web)
Surveillance 24/7 des tendances de l'industrie de l'IA basée sur GPT-5 (X, Gmail et sites web)
Set
Gmail
Airtop
+
Set
Gmail
Airtop
35 NœudsLeeWei
Étude de marché
Chatbot Avancé + Agent RAG
Un chatbot de questions-réponses piloté par l'IA avec RAG, basé sur OpenAI, Google Sheets, Glide et Supabase
Set
Webhook
Google Drive
+
Set
Webhook
Google Drive
34 NœudsSam Yassine
Support
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds22
Catégorie2
Types de nœuds11
Description de la difficulté
Auteur
Liens externes
Voir sur n8n.io →
Partager ce workflow