This workflow corresponds to n8n.io template #15260 — we link there as the canonical source.
This workflow follows the Agent → Form Trigger recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "kI7J9ImbDkF0mrBo",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "AI Web Research Agent powered by Bright Data",
"tags": [],
"nodes": [
{
"id": "22fcdb98-d68c-412a-b656-0d8de7fab7f7",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
1840,
1168
],
"parameters": {
"options": {
"respondWithOptions": {
"values": {
"formSubmittedText": "Research in progress! Your structured report will land in your Slack channel within 2-5 minutes. Powered by Bright Data + Claude."
}
}
},
"formTitle": "AI Research Agent",
"formFields": {
"values": [
{
"fieldLabel": "Research goal",
"placeholder": "e.g., Latest developments in autonomous AI agents in 2026",
"requiredField": true
},
{
"fieldLabel": "Target audience",
"placeholder": "e.g., technical founders, CMO, VC analysts",
"requiredField": true
}
]
},
"formDescription": "Give the agent a research goal. It will browse the web via Bright Data and deliver a structured report to Slack."
},
"typeVersion": 2.5
},
{
"id": "23b51efd-f464-4007-bdc1-c0db94371c55",
"name": "AI Research Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2160,
1456
],
"parameters": {
"text": "=Research goal: {{ $json['Research goal'] }}\nTarget audience: {{ $json['Target audience'] }}\n\nConduct thorough research using the run_web_unlocker tool. Produce a structured Slack-ready report following the format in your system instructions.",
"options": {
"systemMessage": "You are an expert AI research agent. Your job is to investigate a topic deeply using web search and deliver a clear, structured report formatted for Slack.\n\n## Research process\n1. Start with a Google search: call the web_unlocker tool with a URL like `https://www.google.com/search?q=YOUR+QUERY`\n2. From the search results, identify the 3-5 most relevant and authoritative sources\n3. Fetch each source by calling web_unlocker with its URL\n4. Synthesize the findings\n\n## Report format (Slack mrkdwn)\nReturn ONLY the Slack-formatted report, no preamble:\n\n*\ud83d\udd0d Research Report: <topic>*\n_Audience: <audience>_\n\n*TL;DR*\n\u2022 3-4 bullet points with the core takeaways\n\n*Key findings*\n1. <finding 1 with short explanation>\n2. <finding 2 with short explanation>\n3. <finding 3 with short explanation>\n\n*Sources*\n\u2022 <url 1>\n\u2022 <url 2>\n\u2022 <url 3>\n\n*Recommended next step*\n_<one actionable recommendation tailored to the audience>_\n\n## Rules\n- Always cite sources (URLs)\n- Use Slack mrkdwn (*bold*, _italic_), never markdown ** or __\n- Keep it concise and scannable\n- If a source fails to load, skip it and try another"
},
"promptType": "define"
},
"typeVersion": 3.1
},
{
"id": "b99a7a76-9e90-44c9-b026-8bef3571001b",
"name": "Anthropic Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
2064,
1664
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-opus-4-7",
"cachedResultName": "Claude Opus 4.7"
},
"options": {}
},
"typeVersion": 1.3
},
{
"id": "0d9d4d05-86a8-4546-868f-5b97db206e94",
"name": "Bright Data Web Unlocker",
"type": "@brightdata/n8n-nodes-brightdata.brightDataTool",
"position": [
2432,
1648
],
"parameters": {
"url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
"zone": {
"__rl": true,
"mode": "list",
"value": "web_unlocker_agent",
"cachedResultName": "web_unlocker_agent"
},
"country": {
"__rl": true,
"mode": "list",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Country', ``, 'string') }}"
},
"requestOptions": {},
"descriptionType": "manual",
"toolDescription": "Fetch full content of any URL as clean Markdown. Handles JS-rendered pages, CAPTCHAs, anti-bot. Use for Google search URLs (https://www.google.com/search?q=QUERY) and individual source pages discovered from those searches."
},
"typeVersion": 1
},
{
"id": "038faa87-63ba-499f-bd11-29e3d35f7f86",
"name": "Send Report to Slack",
"type": "n8n-nodes-base.slack",
"position": [
2944,
1760
],
"parameters": {
"text": "={{ $json.output }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "YOUR_SLACK_CHANNEL_ID",
"cachedResultName": "research"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"typeVersion": 2.4
},
{
"id": "f8d07116-2a3f-4fd2-badc-5e583154a0ee",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
928
],
"parameters": {
"color": 7,
"width": 460,
"height": 720,
"content": "## \ud83d\udd0d AI Web Research Agent powered by Bright Data\n\nAn autonomous research agent that browses the web for you. Fill a form, get a structured report in Slack within 2-5 minutes.\n\n### How it works\n1. **Form** collects a research goal and target audience\n2. **AI Agent** (Claude Opus 4.7) plans the research\n3. **Bright Data Web Unlocker** scrapes Google + source pages (handles JS, CAPTCHAs, anti-bot)\n4. The agent synthesizes a structured Slack-ready report\n5. **Slack** delivers the report to your team\n\n### Why Bright Data?\n- Bypasses CAPTCHAs, bot detection and geo-blocks\n- Renders JavaScript-heavy pages\n- Returns clean Markdown ready for LLM consumption\n\n### Prerequisites\n- A [Bright Data](https://brightdata.com) account with a **Web Unlocker** zone (`web_unlocker_agent`)\n- An [Anthropic](https://anthropic.com) API key (Claude Opus 4.7 or any Claude model)\n- A [Slack](https://slack.com) workspace with a channel for reports\n\n### \ud83d\udd04 Customizable\n- Swap **Claude** for OpenAI, Gemini, Mistral, Groq\u2026\n- Swap **Slack** for Discord, Teams, Telegram, email, Notion, a CRM\u2026\n- Replace the **Form Trigger** with a webhook, schedule, chat trigger\u2026\n\n### Setup\n1. Connect your **Bright Data**, **Anthropic** and **Slack** credentials\n2. Select your Slack **channel** in the last node\n3. Activate the workflow and open the form URL"
},
"typeVersion": 1
},
{
"id": "55cdacf0-3b72-410a-97ca-a65a047a04db",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1728,
720
],
"parameters": {
"color": 4,
"width": 320,
"height": 420,
"content": "## 1\ufe0f\u20e3 Trigger (Form)\nExposes a public form where users enter:\n- **Research goal** \u2014 what to investigate\n- **Target audience** \u2014 who the report is for\n\n### \ud83d\udd04 You can replace this trigger with anything!\n- **Webhook** (trigger from any external app)\n- **Chat Trigger** (talk to the agent)\n- **Schedule** (run every day/week)\n- **Slack / Discord slash command**\n- **Email trigger**\n- **Airtable / Notion / HubSpot trigger**\n\nJust make sure the output includes the two fields used below: `Research goal` and `Target audience`."
},
"typeVersion": 1
},
{
"id": "011b93c1-45c4-46ee-aea9-d8f14c49ee1a",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2128,
1216
],
"parameters": {
"color": 5,
"width": 300,
"height": 220,
"content": "## 2\ufe0f\u20e3 AI Research Agent\nThe brain of the workflow. Plans the research, calls the Bright Data tool multiple times (Google search \u2192 source pages), then synthesizes a structured Slack report.\n\nFull system prompt is defined in the node \u2014 feel free to tweak the report format."
},
"typeVersion": 1
},
{
"id": "1e14e9a2-421a-43b0-a592-7041325fc679",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1984,
1808
],
"parameters": {
"color": 5,
"width": 260,
"height": 156,
"content": "## 3\ufe0f\u20e3 Claude Opus 4.7\nThe LLM behind the agent.\n\n\ud83d\udd04 Swap for any chat model: **OpenAI GPT-5**, **Gemini**, **Mistral**, **Groq**, **Ollama**\u2026"
},
"typeVersion": 1
},
{
"id": "bfbca2bd-01a6-4e47-a93f-bd6bf91a4253",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2336,
1824
],
"parameters": {
"color": 3,
"width": 300,
"height": 288,
"content": "## 4\ufe0f\u20e3 Bright Data Web Unlocker\nThe agent's eyes on the web.\n\nFetches any URL as clean Markdown:\n- Handles **JavaScript** rendering\n- Bypasses **CAPTCHAs** and bot detection\n- Works on **geo-blocked** content\n\nUsed by the agent to search Google and read source pages."
},
"typeVersion": 1
},
{
"id": "34d90e23-f60c-4f44-9beb-8082711b9482",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2800,
1360
],
"parameters": {
"color": 2,
"width": 404,
"height": 376,
"content": "## 5\ufe0f\u20e3 Output (Slack)\nPosts the structured report in your chosen Slack channel (Slack mrkdwn formatting).\n\n### \ud83d\udd04 You can replace Slack with anything!\n- **Email** (Gmail, Outlook, SMTP)\n- **Discord / Microsoft Teams / Telegram**\n- **Notion / Google Docs / Confluence**\n- **Airtable / HubSpot / Salesforce** (save as record)\n- **Google Sheets** (append as row)\n- **SMS / WhatsApp**\n- **Respond to Webhook** (send back to the caller)\n\nThe agent's report is available in `{{ $json.output }}` \u2014 plug it into any destination."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"executionOrder": "v1"
},
"versionId": "e0a3da98-ce7a-4cc7-a3a2-c6e68b858e0e",
"connections": {
"AI Research Agent": {
"main": [
[
{
"node": "Send Report to Slack",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "AI Research Agent",
"type": "main",
"index": 0
}
]
]
},
"Anthropic Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Research Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Bright Data Web Unlocker": {
"ai_tool": [
[
{
"node": "AI Research Agent",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
A form collects a research goal and target audience from the user An AI agent (Claude Opus 4.7) plans the research and calls Bright Data's Web Unlocker to scrape Google results and source pages — handling JS, CAPTCHAs and geo-blocks The agent synthesizes findings into a…
Source: https://n8n.io/workflows/15260/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This template requires a self-hosted n8n instance to run.
Airtop Web Agent. Uses agent, airtopTool, toolWorkflow, lmChatAnthropic. Event-driven trigger; 19 nodes.
This workflow is designed to automate web interactions by simulating a human user, using a combination of the Agent node and AI tools powered by Airtop.
This n8n workflow provides a secure, enterprise-grade response system for AWS IAM access key compromises with built-in form submission and human approval mechanisms. When an AWS access key is suspecte
This workflow collects tour details via an n8n form, analyzes your website’s brand voice with Anthropic Claude, researches real SEO keywords and Google “People Also Ask” questions with DataForSEO, the