Automatisiertes Web-Research mit GPT-4, Claude und Apify für Content-Analyse und Einblicke

Experte

Dies ist ein Market Research, AI RAG-Bereich Automatisierungsworkflow mit 42 Nodes. Hauptsächlich werden If, Set, Code, Merge, HttpRequest und andere Nodes verwendet. Automatisiere die Online-Recherche für Inhaltsanalyse und Insights mit GPT-4, Claude und Apify

Voraussetzungen
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • OpenAI API Key
  • Anthropic API Key
  • Qdrant-Serververbindungsdaten
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "meta": {
    "instanceId": "6fb6c9a50faeb88c76c44b2fdb3a06e4272886afd55ba8d161b7b55a4373c282"
  },
  "nodes": [
    {
      "id": "896077ce-4f65-48ba-97d7-37acc18380be",
      "name": "RAG Web Browser",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2688,
        480
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/apify~rag-web-browser/run-sync-get-dataset-items",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json.output.apify_query }}",
        "sendBody": true,
        "sendQuery": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "memory",
              "value": "4096"
            },
            {
              "name": "timeout",
              "value": "500"
            }
          ]
        },
        "nodeCredentialType": "apifyApi"
      },
      "credentials": {
        "apifyApi": {
          "id": "h0YXN7yJFoEdC2YZ",
          "name": "Apify account"
        },
        "httpBearerAuth": {
          "id": "nTZj53tK0kH0omt5",
          "name": "Bearer Auth account"
        },
        "httpHeaderAuth": {
          "id": "2zSa7j9R3quiTmp0",
          "name": "Header Auth account"
        }
      },
      "executeOnce": true,
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "3cb7cf6d-6794-4f86-a92c-e0c0c03d3721",
      "name": "Bei Klick auf 'Workflow ausführen'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -3536,
        576
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "712b058d-0182-4d0c-bb39-072eca45b712",
      "name": "Bei Ausführung durch anderen Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -3536,
        384
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "query"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "b9e3d2ca-958e-4de7-83ea-5cb27b55d552",
      "name": "Set Node",
      "type": "n8n-nodes-base.set",
      "position": [
        -3312,
        480
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1453fa8e-fff8-4380-a4d5-f8cc81d40cea",
              "name": "query",
              "type": "string",
              "value": "={{ $json.query }}"
            },
            {
              "id": "2df77d2d-3933-4e29-b73d-1144e78a9731",
              "name": "qdrant_url",
              "type": "string",
              "value": "http://qdrant:6333"
            },
            {
              "id": "d82929d0-f71f-45f3-b5d9-8e5b9ef95a9a",
              "name": "collection_name",
              "type": "string",
              "value": "web_pages"
            },
            {
              "id": "f5924297-071f-4997-a566-84f25142e680",
              "name": "max_results",
              "type": "number",
              "value": 10
            },
            {
              "id": "2b6cb255-15d8-4969-bfdf-a7e1412cf1b5",
              "name": "relevance_threshold",
              "type": "number",
              "value": 70
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7ba5e051-a0dd-4bd8-898b-19bbfa43b829",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -2896,
        704
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"primary_query\": \"string\",\n  \"alternative_queries\": [\"string\", \"string\"],\n  \"temporal_filter\": \"string or null\",\n  \"domain_context\": \"string\",\n  \"exclusion_terms\": [\"string\"],\n  \"search_filters\": {\n    \"inclusion_terms\": [\"string\"],\n    \"exclusion_terms\": [\"string\"],\n    \"site_filters\": {\n      \"include\": [\"site:...\"],\n      \"exclude\": [\"-site:...\"]\n    },\n    \"filetype_filters\": {\n      \"include\": [\"filetype:...\"],\n      \"exclude\": [\"-filetype:...\"]\n    }\n  },\n  \"advanced_search_suggestions\": {\n    \"boolean_operators\": \"string\",\n    \"proximity_search\": \"string\",\n    \"wildcard_usage\": \"string\",\n    \"date_range\": \"string\"\n  },\n  \"apify_query\": {\n    \"query\": \"FULL COMPOSED STRING\"\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "33edb913-0bfa-44e4-a81c-c1107e546c05",
      "name": "Early Content Filter",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "position": [
        -1056,
        128
      ],
      "parameters": {
        "text": "=Research Query: {{ $json.query }}\n\nArticle to Evaluate:\n- Title: {{ $json.searchResult.title }}\n- URL: {{ $json.searchResult.url }}\n- Meta Description: {{ $json.searchResult.description }}\n\n- Content Preview: {{ $json.cleaned_text }}\n\nAssess this article for both relevance to the query and content quality.\n",
        "options": {
          "systemMessage": "You are a content evaluation specialist. Your job is to quickly assess whether scraped articles are worth processing for a research query.\n\nEvaluate both RELEVANCE and QUALITY simultaneously:\n\nRELEVANCE CRITERIA:\n- How well does the content address the research query?\n- Are key topics/entities from the query present?\n- Does the content provide actionable information for the query?\n\nQUALITY CRITERIA:\n- Content depth and substance (not just headlines/summaries)\n- Presence of facts, data, or expert insights\n- Source credibility indicators (author expertise, publication reputation)\n- Content freshness/recency if relevant to query\n- Proper article structure vs clickbait/listicle\n\nScore both aspects 0-100 and determine if content should proceed to full processing."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "e2cfb95e-6278-4daf-a73c-911fa7436510",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -896,
        352
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"relevance\": {\n    \"score\": 85,\n    \"reasoning\": \"Directly addresses quantum computing threats mentioned in query\",\n    \"key_topics_matched\": [\"quantum computing\", \"encryption\", \"RSA\", \"2025\"],\n    \"query_coverage\": \"comprehensive\"\n  },\n  \"quality\": {\n    \"score\": 78,\n    \"content_depth\": \"substantial\",\n    \"has_citations\": true,\n    \"source_credibility\": \"high\",\n    \"content_type\": \"technical_analysis\",\n    \"freshness\": \"recent\"\n  },\n  \"decision\": {\n    \"process_further\": true,\n    \"combined_score\": 82,\n    \"reasoning\": \"High relevance with good quality sources and recent data\"\n  },\n  \"metadata\": {\n    \"article_type\": \"research_article\",\n    \"estimated_processing_value\": \"high\",\n    \"potential_issues\": []\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "b89271f7-7fe9-4d64-bf15-a239bd5bd6fc",
      "name": "Duplicate Check",
      "type": "n8n-nodes-base.code",
      "position": [
        -1792,
        480
      ],
      "parameters": {
        "jsCode": "const qdrantUrl = $('Set Node').first().json.qdrant_url;\nconst collectionName = $('Set Node').first().json.collection_name;\n\nconst results = [];\n\nfor (const item of items) {\n  const url = item.json.searchResult.url;\n  let isDuplicate = false;\n  let duplicateType = null;\n  let existingDocId = null;\n  let skipProcessing = false;\n\n  try {\n    const response = await this.helpers.httpRequest({\n      method: 'POST',\n      url: `${qdrantUrl}/collections/${collectionName}/points/search`,\n      body: {\n        filter: {\n          must: [\n            {\n              key: \"metadata.doc_url\",\n              match: { value: url }\n            }\n          ]\n        },\n        limit: 1,\n        with_payload: true\n      },\n      headers: { 'Content-Type': 'application/json' }\n    });\n\n    if (response.result && response.result.length > 0) {\n      isDuplicate = true;\n      duplicateType = 'url';\n      existingDocId = response.result[0].payload.metadata.doc_id;\n      skipProcessing = true;\n    }\n  } catch (error) {\n    console.error('Error checking URL duplicates:', error);\n    // If error, just treat as not a duplicate\n  }\n\n  results.push({\n    json: {\n      ...item.json,\n      isDuplicate,\n      duplicateType,\n      existingDocId,\n      skipProcessing\n    }\n  });\n}\n\nreturn results;"
      },
      "typeVersion": 2
    },
    {
      "id": "703264ee-2dbc-4509-92e5-51bd437b43fc",
      "name": "Normalize text",
      "type": "n8n-nodes-base.code",
      "position": [
        -2016,
        480
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const rawText = item.json.markdown;\n\n  // Clean up the text\n  let cleanedText = rawText\n    .replace(/!\\[.*?\\]\\(.*?\\)/g, '')      // Remove images\n    .replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '$1 ($2)')  // [text](url) to text (url)\n    .replace(/^#+\\s?/gm, '')              // Remove headings\n    .replace(/\\*\\*|__|\\*|_/g, '')         // Remove bold/italic\n    .replace(/<[^>]+>/g, '')              // Remove HTML tags\n    .replace(/\\s+/g, ' ')\n    .trim();\n\n  // Normalize\n  let normalizedText = cleanedText\n    .toLowerCase()\n    .replace(/[^\\w\\s]/g, '')\n    .replace(/\\s+/g, ' ')\n    .trim();\n\n  // Copy everything but 'markdown'\n  const { markdown, ...rest } = item.json;\n\n  return {\n    json: {\n      ...rest,\n      cleaned_text: cleanedText,\n      normalized_text: normalizedText\n    }\n  };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "94331904-b6d8-4852-af7b-c513f4ed0518",
      "name": "Edit Fields5",
      "type": "n8n-nodes-base.set",
      "position": [
        -368,
        224
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "8d439e60-244c-4cf9-8469-a3dfce3d3e87",
              "name": "title",
              "type": "string",
              "value": "={{ $('Processing').item.json.metadata.title }}"
            },
            {
              "id": "603bc577-9eb6-4d55-9f82-1efe561aa041",
              "name": "description",
              "type": "string",
              "value": "={{ $('Processing').item.json.metadata.description }}"
            },
            {
              "id": "9d6cd9da-8e47-4fba-a857-1f6144d9b96f",
              "name": "languageCode",
              "type": "string",
              "value": "={{ $('Processing').item.json.metadata.languageCode }}"
            },
            {
              "id": "12db9d37-690a-4448-8291-6751f8ace125",
              "name": "url",
              "type": "string",
              "value": "={{ $('Processing').item.json.metadata.url }}"
            },
            {
              "id": "f1f11539-fd23-4053-be01-c22191ca1151",
              "name": "resultType",
              "type": "string",
              "value": "={{ $('Processing').item.json.searchResult.resultType }}"
            },
            {
              "id": "158f5b8d-7ae8-4dd4-b256-0ec9d87f47ae",
              "name": "=rank",
              "type": "number",
              "value": "={{ $('Processing').item.json.searchResult.rank }}"
            },
            {
              "id": "39429b08-9e81-4239-80e4-84a1bc86950c",
              "name": "search_query",
              "type": "string",
              "value": "={{ $('Processing').item.json.search_query }}"
            },
            {
              "id": "2515a3d3-db74-41c0-bf65-a998c3f92356",
              "name": "cleaned_text",
              "type": "string",
              "value": "={{ $('Processing').item.json.cleaned_text }}"
            },
            {
              "id": "0d25ca54-ccf0-4160-a718-34d6ab14655f",
              "name": "normalized_text",
              "type": "string",
              "value": "={{ $('Processing').item.json.normalized_text }}"
            },
            {
              "id": "2e407ec6-6b15-4f86-b5b9-be1097544fcb",
              "name": "query",
              "type": "string",
              "value": "={{ $('Processing').item.json.query }}"
            },
            {
              "id": "e9109b83-2940-47e6-931a-f459e1c36679",
              "name": "search_query",
              "type": "string",
              "value": "={{ $('Processing').item.json.search_query }}"
            },
            {
              "id": "d1a07815-e34d-44b6-8b63-40352816ef10",
              "name": "relevance_score",
              "type": "number",
              "value": "={{ $json.output.relevance.score }}"
            },
            {
              "id": "d4a6d47f-c0b1-46e9-bbea-2554aba44bd7",
              "name": "relevance_reasoning",
              "type": "string",
              "value": "={{ $json.output.relevance.reasoning }}"
            },
            {
              "id": "2d1ccc2a-9eae-432e-bb5c-947d8cac8a70",
              "name": "key_topics_matched",
              "type": "array",
              "value": "={{ $json.output.relevance.key_topics_matched }}"
            },
            {
              "id": "e307f96d-ae17-485a-92e2-9c9c7356bb50",
              "name": "query_coverage",
              "type": "string",
              "value": "={{ $json.output.relevance.query_coverage }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ee5d5656-db60-4d01-8764-d5ce67b896ae",
      "name": "Structured Output Parser3",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        16,
        656
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"array\",\n  \"items\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"claim\": { \"type\": \"string\" },\n      \"evidence\": { \"type\": \"string\" },\n      \"source\": { \"type\": \"string\", \"format\": \"uri\" },\n      \"external_source\": { \"type\": \"boolean\" },\n      \"external_url\": { \"type\": [\"string\", \"null\"], \"format\": \"uri\" }\n    },\n    \"required\": [\"claim\", \"evidence\", \"source\"]\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "a1afc127-9f55-4626-a468-51ff429528ed",
      "name": "Structured Output Parser7",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        16,
        144
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"title\": { \"type\": \"string\" },\n    \"url\": { \"type\": \"string\", \"format\": \"uri\" },\n    \"summary\": { \"type\": \"string\" }\n  },\n  \"required\": [\"title\", \"url\", \"summary\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "b9c17bd7-efb3-4abd-8817-693c311fb3d9",
      "name": "Insight Extraction",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "position": [
        -144,
        432
      ],
      "parameters": {
        "text": "=Research Question:\n{{ $json.query }}\n\nCleaned Article Text:\n{{ $json.cleaned_text }}\n\nArticle Metadata:\nTitle: {{ $json.title }}\nURL: {{ $json.url }}\n\nInstructions:\n\t1.\tCarefully read the cleaned article text above.\n\t2.\tExtract every explicit statement, claim, or recommendation that answers the research question.\n\t3.\tFor each, copy the exact phrase or sentence that supports your extraction.\n\t4.\tIf possible, prioritize claims that are well-supported, recent, or come from an official or credible source.\n\t5.\tFor each claim, determine if it relies on an external source or citation (such as a third-party report, survey, government statistic, or external research referenced in the article). If so, provide the external source’s name and direct URL. If not, indicate that the claim is not based on an external source.\n\t6.\tDo not include information unrelated to the question.",
        "options": {
          "systemMessage": "You are a research assistant tasked with extracting direct, answer-focused insights from business or technical articles.\n\nYour instructions:\n• Review the user’s research question and the provided article text.\n• Identify all passages that directly answer or provide guidance about the question.\n• For each insight:\n • Write a concise, declarative claim in your own words (1–2 sentences).\n • Provide the most relevant supporting quote, paraphrased sentence, or data as evidence (taken from the article).\n • Include the article’s URL as the source.\n • Determine if the claim is based on an external source (such as a survey, report, research, or statistic cited from outside the article’s publisher). If so, set \"external_source\": true and provide the external source’s direct URL in \"external_url\" (if available). Otherwise, set \"external_source\": false and \"external_url\": null.\n• Only return information supported by the article and directly related to the research question."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "46348aab-34c9-49aa-a2fe-630f8db91fcf",
      "name": "Summarization",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "position": [
        -144,
        -80
      ],
      "parameters": {
        "text": "=Research Question:\n{{ $json.query }}\n\nCleaned Article Text:\n{{ $json.cleaned_text }}\n\nArticle Metadata:\nTitle: {{ $json.title }}\nURL: {{ $json.url }}\n\nInstructions:\n\t•\tRead the article and metadata above.\n\t•\tSummarize the main points that directly address the research question.\n\t•\tYour summary should be 2–3 sentences, original wording, and user-friendly.\n\t•\tDo not include unrelated information or a general summary—stick to the research question.",
        "options": {
          "systemMessage": "You are a research assistant. Your job is to write a concise, 2–3 sentence summary of each article, focusing only on information that answers or supports the user’s research question.\n\nInstructions:\n\t•\tUse the article’s cleaned text and metadata.\n\t•\tSummarize only the information that is clearly relevant to the research question—ignore everything else.\n\t•\tWrite the summary in clear, contemporary American English.\n\t•\tThe summary should be easy to read and useful for a non-technical business reader.\n\t•\tOutput a valid JSON object with these fields:\n\t•\ttitle (string)\n\t•\turl (string)\n\t•\tsummary (string; 2–3 sentences)\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "58908562-f8a4-45d2-a267-f938ce1810b3",
      "name": "Structured Output Parser9",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        640,
        144
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"array\",\n  \"items\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"summary\": {\n        \"type\": \"string\",\n        \"description\": \"A concise summary of the article as it relates to the research question\"\n      },\n      \"article_title\": {\n        \"type\": \"string\",\n        \"description\": \"The title of the summarized article\"\n      },\n      \"url\": {\n        \"type\": \"string\",\n        \"format\": \"uri\",\n        \"description\": \"The URL of the original article\"\n      },\n      \"rank\": {\n        \"type\": \"integer\",\n        \"description\": \"The relevance rank of this summary (1 = most relevant)\"\n      },\n      \"reason_for_ranking\": {\n        \"type\": \"string\",\n        \"description\": \"Explanation for why this summary was ranked at this position\"\n      }\n    },\n    \"required\": [\n      \"summary\",\n      \"article_title\",\n      \"url\",\n      \"rank\",\n      \"reason_for_ranking\"\n    ]\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "94893703-0d43-4d75-a345-3e3acd2d0e09",
      "name": "Structured Output Parser10",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        640,
        656
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"array\",\n  \"items\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"claim\": {\n        \"type\": \"string\",\n        \"description\": \"A concise, declarative statement answering the research question.\"\n      },\n      \"evidence\": {\n        \"type\": \"string\",\n        \"description\": \"Direct supporting quote or data from the article.\"\n      },\n      \"source\": {\n        \"type\": \"string\",\n        \"format\": \"uri\",\n        \"description\": \"URL of the article or external source.\"\n      },\n      \"rank\": {\n        \"type\": \"integer\",\n        \"description\": \"Ranking of this claim's relevance (1 = most relevant).\"\n      },\n      \"reason_for_ranking\": {\n        \"type\": \"string\",\n        \"description\": \"Short explanation for why this claim received its rank.\"\n      },\n      \"external_source\": {\n        \"type\": \"boolean\",\n        \"description\": \"True if the claim is based on a source external to the article; otherwise false.\"\n      },\n      \"external_url\": {\n        \"type\": [\"string\", \"null\"],\n        \"description\": \"URL of the external source if external_source is true; otherwise null.\"\n      }\n    },\n    \"required\": [\n      \"claim\",\n      \"evidence\",\n      \"source\",\n      \"rank\",\n      \"reason_for_ranking\"\n    ]\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "356396a6-0405-452b-840a-3aaa30be2f2f",
      "name": "Aggregation und Ranking extrahierter Behauptungen",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "position": [
        480,
        432
      ],
      "parameters": {
        "text": "=You are given a list of extracted claims about the following research question:\n\nResearch Question: {{ $('Edit Fields5').first().json.query }}\n\nClaims:\n{{ JSON.stringify($json.claims, null, 2) }}\n\nInstructions:\n  1. Review all claims provided above.\n  2. Compare the quality, specificity, evidence, and authority of each claim in relation to the research question.\n  3. Rank all claims from most to least relevant, prioritizing those that are clear, well-supported, and sourced from highly credible or recent articles.\n  4. If multiple claims repeat the same point, cluster them and keep only the best representative claim.\n  5. Return a final list of the top 3 most relevant, unique claims (if more than three exist), with each claim including its text, supporting evidence, article URL, and your reason for its ranking.",
        "options": {
          "systemMessage": "You are an evidence synthesis expert. Your job is to review a collection of extracted claims about a business or technical topic, rank them by their usefulness to the research question, and remove duplicates.\n\nInstructions:\n  • Read all claims for their directness, evidence, and relevance to the research question.\n  • Prioritize claims from well-known, reputable, or recent sources, and those with strong supporting evidence.\n  • Remove any duplicate or redundant entries, keeping only the strongest and clearest version of each unique point.\n  • Rank the top three claims and explain why you selected them.\n  • Return your output as a valid JSON array of objects with: claim, evidence, source, rank (1-3), and reason_for_ranking."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "9c5083fe-7551-4b31-bc1d-f43be017f8f7",
      "name": "Aggregation und Ranking extrahierter Zusammenfassungen",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "position": [
        480,
        -80
      ],
      "parameters": {
        "text": "=You are given a list of article summaries about the following research question:\n\nResearch Question:{{ $('Edit Fields5').first().json.query }}\n\n\nSummaries:\n{{ JSON.stringify($json.summaries, null, 2) }}\n\nInstructions:\n\t1.\tReview all summaries provided above.\n\t2.\tCompare the quality, relevance, and authority of each summary in relation to the research question.\n\t3.\tRank all summaries from most to least relevant, prioritizing those that are concise, well-supported, and sourced from highly credible or recent articles.\n\t4.\tIf multiple summaries repeat the same point, cluster them and keep only the best representative summary.\n\t5.\tReturn a final list of the top 3 most relevant, unique summaries (if more than three exist), with each summary including its article title, URL, and your reason for its ranking.",
        "options": {
          "systemMessage": "You are an evidence synthesizer and summarization expert. Your job is to review a collection of article summaries about a business or technical topic, rank them by their usefulness to the research question, and remove duplicates.\n\nInstructions:\n\t•\tRead all summaries for their directness, clarity, and relevance to the question.\n\t•\tPrioritize summaries from well-known, reputable, or recent sources.\n\t•\tRemove any duplicates or redundant entries, keeping only the strongest and clearest version of each unique point.\n\t•\tRank the top three summaries and explain why you selected them.\n\t•\tReturn your output as a valid JSON array of objects with: summary, article_title, url, rank (1-3), and reason_for_ranking."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "bc0d58dc-9818-4b46-8ecc-130b957ecb3a",
      "name": "Save",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
      "position": [
        -1104,
        736
      ],
      "parameters": {
        "mode": "insert",
        "options": {},
        "qdrantCollection": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Set Node').item.json.collection_name }}"
        },
        "embeddingBatchSize": 1
      },
      "credentials": {
        "qdrantApi": {
          "id": "1rlzgQcdRysKi0oS",
          "name": "QdrantApi account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "5665bd97-7041-4e0a-bc39-38fe5a5e7542",
      "name": "Embeddings Ollama1",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
      "position": [
        -1120,
        960
      ],
      "parameters": {
        "model": "nomic-embed-text:latest"
      },
      "credentials": {
        "ollamaApi": {
          "id": "u58LNTOTwwLnJzt9",
          "name": "Ollama account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cc339d87-199c-43fd-9da1-e0a7156f51f1",
      "name": "Character Text Splitter2",
      "type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter",
      "position": [
        -896,
        1168
      ],
      "parameters": {
        "chunkSize": 3000,
        "chunkOverlap": 200
      },
      "typeVersion": 1
    },
    {
      "id": "5cd4b848-6cd2-40b4-a792-170732010342",
      "name": "Default Data Loader2",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        -992,
        960
      ],
      "parameters": {
        "options": {
          "metadata": {
            "metadataValues": [
              {
                "name": "=url",
                "value": "={{ $json.searchResult.url }}"
              },
              {
                "name": "title",
                "value": "={{ $json.searchResult.title }}"
              },
              {
                "name": "description",
                "value": "={{ $json.searchResult.description }}"
              }
            ]
          }
        },
        "jsonData": "={{ $json.normalized_text }}",
        "jsonMode": "expressionData",
        "textSplittingMode": "custom"
      },
      "typeVersion": 1.1
    },
    {
      "id": "c173f56c-eb63-454c-a748-719074050d2b",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -3088,
        704
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "Y8ZxcY3KmZ6Zqrd2",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "5a0cd20d-e2e7-4c63-a6e2-15d1b46a253e",
      "name": "OpenAI Chat Model4",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -112,
        144
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "Y8ZxcY3KmZ6Zqrd2",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c5002eea-9568-4db9-8485-408edda7d15f",
      "name": "OpenAI Chat Model5",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -112,
        656
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "Y8ZxcY3KmZ6Zqrd2",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "67fa92e1-f1c8-4de8-a545-6f45ac34b5c1",
      "name": "OpenAI Chat Model6",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        512,
        144
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "Y8ZxcY3KmZ6Zqrd2",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "23faa796-f45f-4d28-a1b2-420a8922fa07",
      "name": "OpenAI Chat Model7",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        512,
        656
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "Y8ZxcY3KmZ6Zqrd2",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "3160e68f-b115-46a2-a524-4a29f87f4462",
      "name": "Smart Query Builder",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "position": [
        -3088,
        480
      ],
      "parameters": {
        "text": "=Analyze and optimize this research query for RAG retrieval: {{ $json.query }}\n{% if prior_query %}\nPrevious attempt: {{ $json.prior_query }}\nFailure reason: {{ $json.failure_details }}\n{% endif %}\nReturn JSON only in Apify format.",
        "options": {
          "systemMessage": "=You are an expert research query optimizer for a RAG system using Google Search API. Transform user queries into highly effective search strings that maximize relevant, authoritative document retrieval.\n\nCore Principles:\n- Extract key entities and concepts\n- Target authoritative sources when possible\n- Use precise search operators\n- Filter out noise and unreliable sources\n\nSearch Operators:\n- Exact phrase: \"search term\"\n- Boolean: AND, OR, NOT\n- Inclusion: +term\n- Exclusion: -term\n- Site specific: site:domain.com\n- File type: filetype:pdf\n\nAlways Exclude:\n-site:quora.com -site:reddit.com -site:pinterest.com -site:medium.com -site:facebook.com -site:twitter.com -site:linkedin.com -site:youtube.com -site:wattpad.com -site:fandom.com -site:stackoverflow.com -site:chegg.com -site:brainly.com -site:tumblr.com -site:scribd.com -site:slideshare.net -site:weebly.com -site:wix.com -site:blogspot.com -site:wordpress.com -site:tripadvisor.com -site:yelp.com -site:ebay.com -site:aliexpress.com\n\nFor non-product queries also exclude:\n-site:amazon.com -site:bestbuy.com -site:walmart.com -site:newegg.com -site:alibaba.com -site:bhphotovideo.com -site:etsy.com -site:target.com\n\nStrategy:\n1. Identify authoritative sources for the topic (academic, government, industry leaders)\n2. Use exact phrases for critical concepts\n3. Include technical/formal terminology alongside common terms\n4. Apply site: operators for known authoritative domains\n5. Use filetype:pdf for research papers and official reports\n\nOutput Format (Apify Google Search):\n{\n  \"queries\": \"optimized search query with all operators and exclusions\",\n  \"resultsPerPage\": 10,\n  \"maxPagesPerQuery\": 1,\n  \"languageCode\": \"en\",\n  \"countryCode\": \"us\",\n  \"customDataFunction\": \"async ({ input, $, request, response, html }) => { return {}; }\"\n}\n\nReturn ONLY the JSON object. No explanations."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 2
    },
    {
      "id": "25c5161a-3e17-4399-8dc7-d75a570bd248",
      "name": "Continue of No Error",
      "type": "n8n-nodes-base.if",
      "position": [
        -2464,
        480
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "62a81f7e-77cd-496e-8366-1b489bc6d061",
              "operator": {
                "type": "number",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.crawl.httpStatusCode }}",
              "rightValue": 500
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "c17d00b7-e06c-4228-b16a-49763fdd99de",
      "name": "Markdown Cleaner",
      "type": "n8n-nodes-base.code",
      "position": [
        -2240,
        480
      ],
      "parameters": {
        "jsCode": "// Process all items in the input array, returning one output per input.\nreturn items.map(item => {\n  const md = item.json.markdown;\n\n  let cleanedMarkdown = md;\n\n  // If markdown is missing or not a string, return empty cleaned_markdown\n  if (!cleanedMarkdown || typeof cleanedMarkdown !== \"string\") {\n    return {\n      json: {\n        ...item.json,\n        cleaned_markdown: \"\"\n      }\n    };\n  }\n\n  // Remove junk and navigation/footer content\n  cleanedMarkdown = cleanedMarkdown\n    .replace(/\\[Skip to main content\\]\\([^)]+\\)/gi, '')\n    .replace(/Menu\\s*\\n+/gi, '')\n    .replace(/An official website of the United States government[\\s\\S]+?Here’s how you know/gi, '')\n    .replace(/Here’s how you know[\\s\\S]+?(?=\\n#|$)/gi, '')\n    .replace(/^\\s*#+\\s*About the author[\\s\\S]+$/gmi, '')\n    .replace(/!\\[.*?\\]\\(.*?\\)/g, '')        // Remove images\n    .replace(/^[-*_]{3,}\\s*$/gm, '')        // Remove horizontal rules\n    .replace(/^\\s*[\\r\\n]/gm, '')            // Remove empty lines\n    .replace(/\\n{2,}/g, '\\n')               // Remove repeated blank lines\n    .trim();\n\n  // Convert [text](url) links to \"text (url)\"\n  cleanedMarkdown = cleanedMarkdown.replace(/\\[([^\\]]+?)\\]\\((https?:\\/\\/[^\\)]+)\\)/g, '$1 ($2)');\n\n  // Remove reference-style links [1], [a], etc.\n  cleanedMarkdown = cleanedMarkdown.replace(/\\[[^\\]]{1,3}\\]/g, '');\n\n  // Remove HTML tags\n  cleanedMarkdown = cleanedMarkdown.replace(/<[^>]+>/g, '');\n\n  // Normalize extra whitespace\n  cleanedMarkdown = cleanedMarkdown.replace(/[ \\t]+/g, ' ').replace(/\\n{2,}/g, '\\n').trim();\n\n  return {\n    json: {\n      ...item.json,\n      markdown: cleanedMarkdown\n    }\n  };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "e45b29d1-5eba-4c9a-ba38-848ebac5f5b7",
      "name": "Set Values",
      "type": "n8n-nodes-base.set",
      "position": [
        -1568,
        480
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ebf46179-7f07-4cd4-8415-420c00be08d8",
              "name": "crawl",
              "type": "object",
              "value": "={{ $json.crawl }}"
            },
            {
              "id": "d403c817-de3a-4613-96e7-2d4214fdc20f",
              "name": "searchResult",
              "type": "object",
              "value": "={{ $json.searchResult }}"
            },
            {
              "id": "f575e3ae-91a1-4282-8ff3-d68c0f07d3c5",
              "name": "metadata",
              "type": "object",
              "value": "={{ $json.metadata }}"
            },
            {
              "id": "6e4913d9-a4a2-4efd-a067-e94728fce700",
              "name": "search_query",
              "type": "string",
              "value": "={{ $json.query }}"
            },
            {
              "id": "906ae656-45f1-4b2a-bfcc-0a4ce7eb5e4c",
              "name": "cleaned_text",
              "type": "string",
              "value": "={{ $json.cleaned_text }}"
            },
            {
              "id": "f273fa2f-ec47-4fa3-a7dd-2317125328ff",
              "name": "normalized_text",
              "type": "string",
              "value": "={{ $json.normalized_text }}"
            },
            {
              "id": "a6150203-0a37-4e6c-82ce-ca50dbd29580",
              "name": "isDuplicate",
              "type": "boolean",
              "value": "={{ $json.isDuplicate }}"
            },
            {
              "id": "18291c02-5d44-4212-a26b-11ee166d7bc0",
              "name": "duplicateType",
              "type": "string",
              "value": "={{ $json.duplicateType }}"
            },
            {
              "id": "0fc772d6-e15b-4a13-9244-7b9596ed1d6d",
              "name": "existingDocId",
              "type": "string",
              "value": "={{ $json.existingDocId }}"
            },
            {
              "id": "f66c54b7-f3f6-4021-b35b-50d0cad9ca27",
              "name": "skipProcessing",
              "type": "boolean",
              "value": "={{ $json.skipProcessing }}"
            },
            {
              "id": "af332664-df9a-4443-9c7f-ec08792339e8",
              "name": "query",
              "type": "string",
              "value": "={{ $('Set Node').item.json.query }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f66b6480-9ab8-464b-b584-5e3c9df2ce3f",
      "name": "Processing",
      "type": "n8n-nodes-base.if",
      "onError": "continueRegularOutput",
      "position": [
        -1344,
        480
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e4b92d47-7d99-404a-a39c-39b2b0c104e1",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              },
              "leftValue": "={{ $json.skipProcessing }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "5172c4ca-4ea3-4499-923a-3b2c28ff8f5f",
      "name": "Continue Processing",
      "type": "n8n-nodes-base.if",
      "position": [
        -592,
        224
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "4a7f0a85-ddca-4a36-b16c-6515f298d6cb",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.output.decision.process_further }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "0636cd56-4bf0-4149-b828-2816f4569486",
      "name": "Aggregate Summaries",
      "type": "n8n-nodes-base.code",
      "position": [
        256,
        -80
      ],
      "parameters": {
        "jsCode": "// Aggregate all input items under \"summaries\"\nreturn [\n  {\n    json: {\n      summaries: items.map(i => i.json.output)\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "6093bcb1-2cc5-410c-96f2-73d7ffe70aeb",
      "name": "Aggregate Output",
      "type": "n8n-nodes-base.code",
      "position": [
        256,
        432
      ],
      "parameters": {
        "jsCode": "// Aggregate all input items under \"summaries\"\nreturn [\n  {\n    json: {\n      claims: items.map(i => i.json.output)\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "4c6eba72-fc45-443b-b7ed-ff1327050d26",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        880,
        224
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "32591a9b-50b3-4085-b4d9-66d64aba5e04",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4128,
        48
      ],
      "parameters": {
        "width": 460,
        "height": 960,
        "content": "## Try It Out!\n### This n8n template demonstrates how to build an intelligent web research system that automatically finds, analyzes, and extracts insights from authoritative sources to answer business questions.\nPerfect for market research, competitive analysis, regulatory compliance checks, or any scenario where you need credible, up-to-date information from the web!\n\n### How it works\n* **Smart Query Optimization**: Your research question is automatically transformed into optimized Google search queries that target authoritative sources while filtering out low-quality sites like forums and social media.\n* **Intelligent Web Scraping**: Using Apify's RAG Web Browser, the workflow searches and scrapes content from credible websites, converting pages to clean markdown format.\n* **Duplicate Prevention**: Each scraped page is checked against your Qdrant vector database to avoid processing the same content twice, saving time and API costs.\n* **AI-Powered Content Filtering**: Claude Sonnet 4 evaluates each article for relevance and quality before full processing, ensuring only valuable content moves forward.\n* **Dual Analysis Pipeline**: Articles that pass the filter are processed in parallel to extract both specific claims/insights and generate focused summaries.\n* **Intelligent Ranking**: GPT-4.1 Mini ranks and consolidates all findings to identify the top 3 most relevant insights and summaries for your research question.\n* **Vector Storage**: All processed content is chunked and stored in Qdrant for future reference and semantic search capabilities.\n\n### How to use\n* **Simple Start**: Use the manual trigger with any research question like \"How important are regular backups for small businesses according to US Small Business Administration or Microsoft?\"\n* **Workflow Integration**: Replace the manual trigger with webhooks, form submissions, or schedule triggers for automated research.\n* **Customizable Queries**: The Smart Query Builder automatically optimizes searches, but you can modify the exclusion lists for your specific domain.\n* **Scalable Processing**: The workflow handles multiple search results in parallel and can be easily scaled for larger research projects.\n\n### Requirements\n* **OpenAI API** - For GPT-4.1 Mini (query optimization, summarization, ranking)\n* **Anthropic API** - For Claude Sonnet 4 (content filtering)\n* **Apify Account** - For web scraping capabilities\n* **Qdrant Vector Database** - For content storage and duplicate detection\n* **Ollama** - For local embeddings (nomic-embed-text model)\n\n### Configuration Notes\n⚠️ **Security**: Replace the hardcoded Apify API key with proper n8n credentials before using\n⚠️ **Database**: Update the Qdrant collection names to be consistent throughout the workflow\n⚠️ **Environment**: Change localhost URLs to your actual Qdrant instance address\n\n### Perfect for\n* **Business Intelligence**: Automated competitive analysis and market research\n* **Compliance Teams**: Finding latest regulatory guidance from official sources\n* **Content Teams**: Research for authoritative backing of articles and reports\n* **Consultants**: Quick, credible research for client questions\n* **Academic Research**: Gathering recent developments from trusted sources\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\nHappy Researching! 🔍✨"
      },
      "typeVersion": 1
    },
    {
      "id": "ac813f64-38f8-47b7-a6c1-bb06c0cc6c74",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3152,
        240
      ],
      "parameters": {
        "width": 400,
        "height": 624,
        "content": "## Smart Query Builder\n\nThis node transforms user research queries into optimized Google search strings specifically designed for RAG (Retrieval-Augmented Generation) systems. It applies advanced search operators, targets authoritative sources, and automatically excludes low-quality sites to maximize the retrieval of relevant, credible documents for research purposes.RetryClaude can make mistakes. Please double-check responses.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "37d2265f-1594-49d9-8f8f-7314a900786b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1184,
        592
      ],
      "parameters": {
        "width": 496,
        "height": 736,
        "content": "Save Page for later reference"
      },
      "typeVersion": 1
    },
    {
      "id": "59c7171b-8a5f-434e-898d-5cb0792ca7ad",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1088,
        -128
      ],
      "parameters": {
        "width": 368,
        "height": 656,
        "content": "## Early Content Filter\n\nThis node quickly evaluates scraped web articles to determine if they're worth processing further based on both relevance to the research query and content quality. It scores articles on factors like topic coverage, source credibility, content depth, and freshness, then decides whether to proceed with full processing or filter out low-value content early in the workflow."
      },
      "typeVersion": 1
    },
    {
      "id": "540d6ce9-9274-4389-88e1-a1f231fe0ceb",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        -240
      ],
      "parameters": {
        "width": 1024,
        "height": 1072,
        "content": "## Content Analysis & Insight Ranking\n\nThis workflow processes scraped articles by extracting key insights and creating summaries that answer a specific research question, then aggregates and ranks both the claims and summaries to identify the top 3 most relevant and credible findings."
      },
      "typeVersion": 1
    },
    {
      "id": "352d6e95-35ec-4a16-80ec-5c6b7ce0cf5f",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        -1056,
        352
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-20250514",
          "cachedResultName": "Claude 4 Sonnet"
        },
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "id": "neUytnXv9lE0Rzht",
          "name": "Anthropic account"
        }
      },
      "typeVersion": 1.3
    }
  ],
  "pinData": {
    "When clicking ‘Execute workflow’": [
      {
        "query": "How do I Build AI Sentiment Analysis with n8n?"
      }
    ]
  },
  "connections": {
    "b9e3d2ca-958e-4de7-83ea-5cb27b55d552": {
      "main": [
        [
          {
            "node": "3160e68f-b115-46a2-a524-4a29f87f4462",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f66b6480-9ab8-464b-b584-5e3c9df2ce3f": {
      "main": [
        [
          {
            "node": "33edb913-0bfa-44e4-a81c-c1107e546c05",
            "type": "main",
            "index": 0
          },
          {
            "node": "bc0d58dc-9818-4b46-8ecc-130b957ecb3a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e45b29d1-5eba-4c9a-ba38-848ebac5f5b7": {
      "main": [
        [
          {
            "node": "f66b6480-9ab8-464b-b584-5e3c9df2ce3f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "94331904-b6d8-4852-af7b-c513f4ed0518": {
      "main": [
        [
          {
            "node": "b9c17bd7-efb3-4abd-8817-693c311fb3d9",
            "type": "main",
            "index": 0
          },
          {
            "node": "46348aab-34c9-49aa-a2fe-630f8db91fcf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "46348aab-34c9-49aa-a2fe-630f8db91fcf": {
      "main": [
        [
          {
            "node": "0636cd56-4bf0-4149-b828-2816f4569486",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "703264ee-2dbc-4509-92e5-51bd437b43fc": {
      "main": [
        [
          {
            "node": "b89271f7-7fe9-4d64-bf15-a239bd5bd6fc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b89271f7-7fe9-4d64-bf15-a239bd5bd6fc": {
      "main": [
        [
          {
            "node": "e45b29d1-5eba-4c9a-ba38-848ebac5f5b7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "896077ce-4f65-48ba-97d7-37acc18380be": {
      "main": [
        [
          {
            "node": "25c5161a-3e17-4399-8dc7-d75a570bd248",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6093bcb1-2cc5-410c-96f2-73d7ffe70aeb": {
      "main": [
        [
          {
            "node": "356396a6-0405-452b-840a-3aaa30be2f2f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c17d00b7-e06c-4228-b16a-49763fdd99de": {
      "main": [
        [
          {
            "node": "703264ee-2dbc-4509-92e5-51bd437b43fc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c173f56c-eb63-454c-a748-719074050d2b": {
      "ai_languageModel": [
        [
          {
            "node": "3160e68f-b115-46a2-a524-4a29f87f4462",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "5665bd97-7041-4e0a-bc39-38fe5a5e7542": {
      "ai_embedding": [
        [
          {
            "node": "bc0d58dc-9818-4b46-8ecc-130b957ecb3a",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "b9c17bd7-efb3-4abd-8817-693c311fb3d9": {
      "main": [
        [
          {
            "node": "6093bcb1-2cc5-410c-96f2-73d7ffe70aeb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5a0cd20d-e2e7-4c63-a6e2-15d1b46a253e": {
      "ai_languageModel": [
        [
          {
            "node": "46348aab-34c9-49aa-a2fe-630f8db91fcf",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "c5002eea-9568-4db9-8485-408edda7d15f": {
      "ai_languageModel": [
        [
          {
            "node": "b9c17bd7-efb3-4abd-8817-693c311fb3d9",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "67fa92e1-f1c8-4de8-a545-6f45ac34b5c1": {
      "ai_languageModel": [
        [
          {
            "node": "9c5083fe-7551-4b31-bc1d-f43be017f8f7",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "23faa796-f45f-4d28-a1b2-420a8922fa07": {
      "ai_languageModel": [
        [
          {
            "node": "356396a6-0405-452b-840a-3aaa30be2f2f",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "0636cd56-4bf0-4149-b828-2816f4569486": {
      "main": [
        [
          {
            "node": "9c5083fe-7551-4b31-bc1d-f43be017f8f7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5172c4ca-4ea3-4499-923a-3b2c28ff8f5f": {
      "main": [
        [
          {
            "node": "94331904-b6d8-4852-af7b-c513f4ed0518",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3160e68f-b115-46a2-a524-4a29f87f4462": {
      "main": [
        [
          {
            "node": "896077ce-4f65-48ba-97d7-37acc18380be",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "352d6e95-35ec-4a16-80ec-5c6b7ce0cf5f": {
      "ai_languageModel": [
        [
          {
            "node": "33edb913-0bfa-44e4-a81c-c1107e546c05",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "25c5161a-3e17-4399-8dc7-d75a570bd248": {
      "main": [
        [
          {
            "node": "c17d00b7-e06c-4228-b16a-49763fdd99de",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5cd4b848-6cd2-40b4-a792-170732010342": {
      "ai_document": [
        [
          {
            "node": "bc0d58dc-9818-4b46-8ecc-130b957ecb3a",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "33edb913-0bfa-44e4-a81c-c1107e546c05": {
      "main": [
        [
          {
            "node": "5172c4ca-4ea3-4499-923a-3b2c28ff8f5f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cc339d87-199c-43fd-9da1-e0a7156f51f1": {
      "ai_textSplitter": [
        [
          {
            "node": "5cd4b848-6cd2-40b4-a792-170732010342",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "7ba5e051-a0dd-4bd8-898b-19bbfa43b829": {
      "ai_outputParser": [
        [
          {
            "node": "3160e68f-b115-46a2-a524-4a29f87f4462",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "e2cfb95e-6278-4daf-a73c-911fa7436510": {
      "ai_outputParser": [
        [
          {
            "node": "33edb913-0bfa-44e4-a81c-c1107e546c05",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "ee5d5656-db60-4d01-8764-d5ce67b896ae": {
      "ai_outputParser": [
        [
          {
            "node": "b9c17bd7-efb3-4abd-8817-693c311fb3d9",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "a1afc127-9f55-4626-a468-51ff429528ed": {
      "ai_outputParser": [
        [
          {
            "node": "46348aab-34c9-49aa-a2fe-630f8db91fcf",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "58908562-f8a4-45d2-a267-f938ce1810b3": {
      "ai_outputParser": [
        [
          {
            "node": "9c5083fe-7551-4b31-bc1d-f43be017f8f7",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "94893703-0d43-4d75-a345-3e3acd2d0e09": {
      "ai_outputParser": [
        [
          {
            "node": "356396a6-0405-452b-840a-3aaa30be2f2f",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "712b058d-0182-4d0c-bb39-072eca45b712": {
      "main": [
        [
          {
            "node": "b9e3d2ca-958e-4de7-83ea-5cb27b55d552",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3cb7cf6d-6794-4f86-a92c-e0c0c03d3721": {
      "main": [
        [
          {
            "node": "b9e3d2ca-958e-4de7-83ea-5cb27b55d552",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "356396a6-0405-452b-840a-3aaa30be2f2f": {
      "main": [
        [
          {
            "node": "4c6eba72-fc45-443b-b7ed-ff1327050d26",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "9c5083fe-7551-4b31-bc1d-f43be017f8f7": {
      "main": [
        [
          {
            "node": "4c6eba72-fc45-443b-b7ed-ff1327050d26",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Marktforschung, KI RAG

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes42
Kategorie2
Node-Typen16
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34