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
Chat with a multi-agent system to write a blog. The orchestrator advances through research, headlines, hooks, outline, intro, draft, and final polish–one phase per reply—outputting options and asking