GPT-4、Claude、Apify を使用したコンテンツ分析や洞察を目のとしたウェブ調査の自動化
上級
これはMarket Research, AI RAG分野の自動化ワークフローで、42個のノードを含みます。主にIf, Set, Code, Merge, HttpRequestなどのノードを使用。 GPT-4、Claude、Apify を使ったウェブ調査の自動化でコンテンツ分析とインサイトを行う
前提条件
- •ターゲットAPIの認証情報が必要な場合あり
- •OpenAI API Key
- •Anthropic API Key
- •Qdrantサーバー接続情報
使用ノード (42)
カテゴリー
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定を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": "クリック時 ‘Execute workflow’",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-3536,
576
],
"parameters": {},
"typeVersion": 1
},
{
"id": "712b058d-0182-4d0c-bb39-072eca45b712",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-3536,
384
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "query"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "b9e3d2ca-958e-4de7-83ea-5cb27b55d552",
"name": "設定 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": "構造化出力パーサー",
"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 フィルター",
"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": "構造化出力パーサー1",
"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": "構造化出力パーサー3",
"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": "構造化出力パーサー7",
"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": "構造化出力パーサー9",
"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": "構造化出力パーサー10",
"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 and ranking of extracted claims",
"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 and ranking of extracted summaries",
"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": "埋め込み 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 チャットモデル",
"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 チャットモデル4",
"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 チャットモデル5",
"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 チャットモデル6",
"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 チャットモデル7",
"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": "設定 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": "集計 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": "集計 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": "マージ",
"type": "n8n-nodes-base.merge",
"position": [
880,
224
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "32591a9b-50b3-4085-b4d9-66d64aba5e04",
"name": "付箋7",
"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": "付箋",
"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": "付箋1",
"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": "付箋2",
"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": "付箋3",
"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 チャットモデル",
"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": {
"Set Node": {
"main": [
[
{
"node": "3160e68f-b115-46a2-a524-4a29f87f4462",
"type": "main",
"index": 0
}
]
]
},
"f66b6480-9ab8-464b-b584-5e3c9df2ce3f": {
"main": [
[
{
"node": "Early Content Filter",
"type": "main",
"index": 0
},
{
"node": "bc0d58dc-9818-4b46-8ecc-130b957ecb3a",
"type": "main",
"index": 0
}
]
]
},
"Set Values": {
"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": "Aggregate Summaries",
"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": "Set Values",
"type": "main",
"index": 0
}
]
]
},
"896077ce-4f65-48ba-97d7-37acc18380be": {
"main": [
[
{
"node": "25c5161a-3e17-4399-8dc7-d75a570bd248",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Output": {
"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
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "3160e68f-b115-46a2-a524-4a29f87f4462",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Embeddings Ollama1": {
"ai_embedding": [
[
{
"node": "bc0d58dc-9818-4b46-8ecc-130b957ecb3a",
"type": "ai_embedding",
"index": 0
}
]
]
},
"b9c17bd7-efb3-4abd-8817-693c311fb3d9": {
"main": [
[
{
"node": "Aggregate Output",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model4": {
"ai_languageModel": [
[
{
"node": "46348aab-34c9-49aa-a2fe-630f8db91fcf",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model5": {
"ai_languageModel": [
[
{
"node": "b9c17bd7-efb3-4abd-8817-693c311fb3d9",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model6": {
"ai_languageModel": [
[
{
"node": "9c5083fe-7551-4b31-bc1d-f43be017f8f7",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model7": {
"ai_languageModel": [
[
{
"node": "356396a6-0405-452b-840a-3aaa30be2f2f",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Aggregate Summaries": {
"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
}
]
]
},
"Anthropic Chat Model": {
"ai_languageModel": [
[
{
"node": "Early Content Filter",
"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
}
]
]
},
"Early Content Filter": {
"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
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "3160e68f-b115-46a2-a524-4a29f87f4462",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output Parser1": {
"ai_outputParser": [
[
{
"node": "Early Content Filter",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output Parser3": {
"ai_outputParser": [
[
{
"node": "b9c17bd7-efb3-4abd-8817-693c311fb3d9",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output Parser7": {
"ai_outputParser": [
[
{
"node": "46348aab-34c9-49aa-a2fe-630f8db91fcf",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output Parser9": {
"ai_outputParser": [
[
{
"node": "9c5083fe-7551-4b31-bc1d-f43be017f8f7",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output Parser10": {
"ai_outputParser": [
[
{
"node": "356396a6-0405-452b-840a-3aaa30be2f2f",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"712b058d-0182-4d0c-bb39-072eca45b712": {
"main": [
[
{
"node": "Set Node",
"type": "main",
"index": 0
}
]
]
},
"When clicking ‘Execute workflow’": {
"main": [
[
{
"node": "Set Node",
"type": "main",
"index": 0
}
]
]
},
"356396a6-0405-452b-840a-3aaa30be2f2f": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"9c5083fe-7551-4b31-bc1d-f43be017f8f7": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 市場調査, AI RAG検索拡張
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
GPT-4、ウィキペディア、ベクター検索エンジンを使用して包括のなエンティティプロファイルを構築
GPT-4、ウィキペディア、ベクトルデータベースを使って、コンテンツの包括のエンティティアーカイブを構築
If
Set
Merge
+
If
Set
Merge
33 ノードPeter Zendzian
文書抽出
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
ドキュメントRAGとチャットアジェント:Google DriveからQdrantへ、Mistral OCR
ドキュメントRAGチャットエージェント:Google Drive→QdrantとMistral OCR
If
Set
Code
+
If
Set
Code
40 ノードDIGITAL BIZ TECH
内部Wiki
Gmail、GPT-4、ベクター知識ベースを使用した顧客サポートシステムの自動化
自動顧客サポートシステム(Gmail、GPT-4、ベクター知識ベース)
If
Set
Code
+
If
Set
Code
32 ノードKhair Ahammed
AI RAG検索拡張
コンテキスト・ハイブリッドRAG AIコピー
RAGアプリケーション向けのGoogle DriveからSupabaseコンテキストベクトルデータベースへの同期
If
Set
Code
+
If
Set
Code
76 ノードMichael Taleb
AI RAG検索拡張
Bright Data、OpenAI、Redisを基盤とした高度なマルチソースAIリサーチ
高度なマルチソースAIリサーチの実装(Bright Data、OpenAI、Redis使用)
If
Set
Code
+
If
Set
Code
43 ノードDaniel Shashko
市場調査