AutomationFlowsAI & RAG › Extract & Search Producthunt Data with Bright Data Mcp and Google Gemini AI

Extract & Search Producthunt Data with Bright Data Mcp and Google Gemini AI

ByRanjan Dailata @ranjancse on n8n.io

Community nodes can only be installed on self-hosted instances of n8n.

Event trigger★★★★☆ complexityAI-powered21 nodesN8N Nodes McpAgentGoogle Gemini ChatRead Write FileHTTP RequestChain LlmOutput Parser StructuredGoogle Sheets
AI & RAG Trigger: Event Nodes: 21 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #4823 — we link there as the canonical source.

This workflow follows the Agent → Chainllm 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 →

Download .json
{
  "id": "ko4fOc1jV3wKbt7T",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "AI Agent Driven ProductHunt Data Extract & Search with Bright Data & Google Gemini",
  "tags": [
    {
      "id": "Kujft2FOjmOVQAmJ",
      "name": "Engineering",
      "createdAt": "2025-04-09T01:31:00.558Z",
      "updatedAt": "2025-04-09T01:31:00.558Z"
    },
    {
      "id": "ZOwtAMLepQaGW76t",
      "name": "Building Blocks",
      "createdAt": "2025-04-13T15:23:40.462Z",
      "updatedAt": "2025-04-13T15:23:40.462Z"
    },
    {
      "id": "ddPkw7Hg5dZhQu2w",
      "name": "AI",
      "createdAt": "2025-04-13T05:38:08.053Z",
      "updatedAt": "2025-04-13T05:38:08.053Z"
    }
  ],
  "nodes": [
    {
      "id": "5af692c1-c035-49c0-84ac-d9dcff94269b",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -640,
        -20
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c6f927ef-1664-4a4a-b9b0-faf9f9e052b6",
      "name": "List all tools for Bright Data",
      "type": "n8n-nodes-mcp.mcpClient",
      "position": [
        -420,
        -20
      ],
      "parameters": {},
      "credentials": {
        "mcpClientApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "08175de9-ddc7-4664-87e9-cf3b6e9008b6",
      "name": "Set the Input Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -200,
        -20
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ac9abb54-45af-488d-b3f8-f923c85dbda9",
              "name": "base_url",
              "type": "string",
              "value": "https://www.producthunt.com"
            },
            {
              "id": "a15e928c-7c39-46a0-9bd2-5a3a7564d4ed",
              "name": "category",
              "type": "string",
              "value": "resumes"
            },
            {
              "id": "2d440cf4-4e48-400d-9752-1ea6d5cfcc62",
              "name": "search",
              "type": "string",
              "value": "The best resume tools in 2025"
            },
            {
              "id": "5d0e3985-b268-4ca6-8702-07f6f2f439b7",
              "name": "engine",
              "type": "string",
              "value": "google"
            },
            {
              "id": "c4781bc2-b870-4030-9ce8-3b7111a8ea59",
              "name": "webhook_url",
              "type": "string",
              "value": "https://webhook.site/c9118da2-1c54-460f-a83a-e5131b7098db"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "cba889d2-71b7-46fa-a723-00d41e1e891d",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        280,
        -20
      ],
      "parameters": {
        "text": "={{ $json.agent_operation }}\n\nOuput the data in a clean and human readable format. Output only the tool response.",
        "options": {},
        "promptType": "define"
      },
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "e2f19c38-899d-475f-87f8-2305c27560ab",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        100,
        220
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "bae60554-4022-4af3-a2c7-067235b2f03a",
      "name": "MCP Client for Google Search",
      "type": "n8n-nodes-mcp.mcpClientTool",
      "position": [
        280,
        220
      ],
      "parameters": {
        "toolName": "search_engine",
        "operation": "executeTool",
        "toolParameters": "={\n   \"query\": \"{{ $('Set the Input Fields').item.json.search }}\",\n   \"engine\": \"{{ $('Set the Input Fields').item.json.engine }}\"\n}  ",
        "descriptionType": "manual",
        "toolDescription": "=Perform a search as per the specified search engine :  {{ $('Set the Input Fields').item.json.engine }}"
      },
      "credentials": {
        "mcpClientApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b1ca5ed5-e0e5-4434-897b-25efad53577f",
      "name": "MCP Client for Markdown Data Extract",
      "type": "n8n-nodes-mcp.mcpClientTool",
      "position": [
        480,
        220
      ],
      "parameters": {
        "toolName": "scrape_as_markdown",
        "operation": "executeTool",
        "toolParameters": "={\n   \"url\": \"{{ $('Set the Input Fields').item.json.base_url }}/categories/{{ encodeURI($('Set the Input Fields').item.json.category) }}\"\n}  ",
        "descriptionType": "manual",
        "toolDescription": "Perform Product Hunt data scrapping in markdown format"
      },
      "credentials": {
        "mcpClientApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "57305e8e-2731-45e7-b1d8-d9f73786f1da",
      "name": "Set the Agent Operation",
      "type": "n8n-nodes-base.set",
      "position": [
        20,
        -20
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "f243ff07-a39e-4fdc-a32b-2c50e809b3fa",
              "name": "agent_operation",
              "type": "string",
              "value": "=Perform a Product Hunt data extract"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "be721837-c5e8-4ade-98fc-01b6aae10dd9",
      "name": "Create a binary data for Structured Data Extract",
      "type": "n8n-nodes-base.function",
      "position": [
        760,
        -20
      ],
      "parameters": {
        "functionCode": "items[0].binary = {\n  data: {\n    data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n  }\n};\nreturn items;"
      },
      "typeVersion": 1
    },
    {
      "id": "83cf444d-4b85-4688-ac1c-67fb6027b2ec",
      "name": "Write the structured content to disk",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        980,
        -20
      ],
      "parameters": {
        "options": {},
        "fileName": "=d:\\ProductData.json",
        "operation": "write"
      },
      "typeVersion": 1
    },
    {
      "id": "2f179451-1a1d-437a-bddd-370d5deed3a2",
      "name": "Initiate a Webhook Notification for Structured Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        760,
        180
      ],
      "parameters": {
        "url": "={{ $('Set the Input Fields').item.json.webhook_url }}",
        "options": {},
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "product_info",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "7431be44-2bc5-466a-aa24-cff3aa97ecef",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        340,
        -420
      ],
      "parameters": {
        "color": 3,
        "width": 440,
        "height": 120,
        "content": "## Disclaimer\nThis template is only available on n8n self-hosted as it's making use of the community node for MCP Client."
      },
      "typeVersion": 1
    },
    {
      "id": "2c01a180-4202-4287-a656-c9afb052c950",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -200,
        -300
      ],
      "parameters": {
        "color": 5,
        "width": 440,
        "height": 220,
        "content": "## LLM Usages\n\nGoogle Gemini LLM is being utilized for the AI Agent handling"
      },
      "typeVersion": 1
    },
    {
      "id": "02ba0f5d-f210-46fa-888a-53740f2f57d7",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        -840
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 400,
        "content": "## Logo\n\n\n![logo](https://images.seeklogo.com/logo-png/43/1/brightdata-logo-png_seeklogo-439974.png)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2561fbea-ac79-4a48-a141-9906bec656ed",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        -400
      ],
      "parameters": {
        "width": 400,
        "height": 320,
        "content": "## Note\n\nDeals with the ProductHunt data extraction by utilizing the Bright Data MCP and Google Gemini LLM.\n\n**Please make sure to set the input fields node and the agent operation node to fulfill your needs**"
      },
      "typeVersion": 1
    },
    {
      "id": "7c7e69f2-393e-4725-9bc6-0fd6e3271ea0",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -200,
        -460
      ],
      "parameters": {
        "color": 4,
        "width": 440,
        "height": 120,
        "content": "## Agent Operation\n\n1. Perform a Product Hunt data extract\n2. Google search and extract data"
      },
      "typeVersion": 1
    },
    {
      "id": "823039f1-e41f-4286-adde-4da05924f8cf",
      "name": "Structured Data Extractor",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        760,
        440
      ],
      "parameters": {
        "text": "=Extract the links, keywords, description from  {{ $('AI Agent').item.json.output }}\n\nConstruct the links with the base url as {{ $('Set the Input Fields').item.json.base_url }}",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "467a58f7-b480-4975-9045-17ffef12553b",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        980,
        640
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"array\",\n\t\"properties\": {\n\t\t\"link\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n        \"desc\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "c6a9ef1d-f1d8-469c-a149-20b70613a7a4",
      "name": "Google Gemini Chat Model Structured Data Extract",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        740,
        640
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d9ca7a55-ccb8-4c34-aec1-792f67e7cab4",
      "name": "Update Google Sheets for Structured Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1200,
        440
      ],
      "parameters": {
        "columns": {
          "value": {
            "structured_data": "={{ $json.output.toJsonString() }}"
          },
          "schema": [
            {
              "id": "structured_data",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "structured_data",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "structured_data"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1785677350,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1cmJkB_DuSUbHoZ-LthySa7utEZFIvzeLinGcHjMyvzI/edit#gid=1785677350",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1cmJkB_DuSUbHoZ-LthySa7utEZFIvzeLinGcHjMyvzI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1cmJkB_DuSUbHoZ-LthySa7utEZFIvzeLinGcHjMyvzI/edit?usp=drivesdk",
          "cachedResultName": "ProductHunt"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "380351d4-2b49-4824-bbb6-3bba45f9fb37",
      "name": "Update Google Sheets for AI Agent",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        760,
        -220
      ],
      "parameters": {
        "columns": {
          "value": {
            "output": "={{ $json.output.toJsonString() }}"
          },
          "schema": [
            {
              "id": "output",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "output",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "output"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10gAihQMT8-h8Mpehe9j-xxN4oTTpg8qwToI-I-Eauew/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1cmJkB_DuSUbHoZ-LthySa7utEZFIvzeLinGcHjMyvzI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1cmJkB_DuSUbHoZ-LthySa7utEZFIvzeLinGcHjMyvzI/edit?usp=drivesdk",
          "cachedResultName": "ProductHunt"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "07e2bb99-d6bf-4023-b61a-582436d22d04",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Create a binary data for Structured Data Extract",
            "type": "main",
            "index": 0
          },
          {
            "node": "Initiate a Webhook Notification for Structured Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Update Google Sheets for AI Agent",
            "type": "main",
            "index": 0
          },
          {
            "node": "Structured Data Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set the Input Fields": {
      "main": [
        [
          {
            "node": "Set the Agent Operation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set the Agent Operation": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Structured Data Extractor",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Data Extractor": {
      "main": [
        [
          {
            "node": "Update Google Sheets for Structured Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MCP Client for Google Search": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "List all tools for Bright Data": {
      "main": [
        [
          {
            "node": "Set the Input Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MCP Client for Markdown Data Extract": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "List all tools for Bright Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a binary data for Structured Data Extract": {
      "main": [
        [
          {
            "node": "Write the structured content to disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model Structured Data Extract": {
      "ai_languageModel": [
        [
          {
            "node": "Structured Data Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Community nodes can only be installed on self-hosted instances of n8n.

Source: https://n8n.io/workflows/4823/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Transform a single quote into a fully-rendered cinematic short video — with voice-over, visuals, and music — then publish it directly to TikTok, Instagram Reels, and YouTube Shorts. This isn’t just au

Agent, HTTP Request, Jwt +7
AI & RAG

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

HTTP Request, Google Sheets, OpenRouter Chat +5
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

HTTP Request, Google Gemini Chat, Chain Llm +4
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

Google Gemini Chat, Chain Llm, Output Parser Structured +4
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

N8N Nodes Mcp, Chain Llm, Output Parser Structured +3