This workflow follows the Agent → Chat Trigger recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Firecrawl RAG",
"nodes": [
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.2,
"position": [
2688,
2112
],
"id": "e5b2fe93-fe69-4094-828c-bdaf6f7bcd12",
"name": "Embeddings OpenAI Retriver"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.2,
"position": [
1440,
1920
],
"id": "aef7abd1-d8ab-46a1-8d7c-ba4d58252efa",
"name": "Embeddings OpenAI"
},
{
"parameters": {
"mode": "retrieve-as-tool",
"toolName": "knowledge_base",
"toolDescription": "Cerca informazioni nel sito web caricato e salvato nel database vettoriale.",
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"topK": 15,
"options": {}
},
"id": "56a134fb-3027-4fbd-9698-2a386bf9c7cf",
"name": "Retriever",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
2688,
1856
],
"typeVersion": 1.1
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-4o-mini",
"mode": "list",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"id": "33dfb4cb-f66e-42fd-ae22-2fbc823e6574",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2384,
1872
]
},
{
"parameters": {
"options": {
"systemMessage": "=# Personaggio\nSei un analista di documenti rigoroso..."
}
},
"id": "db7c4756-9591-4ae4-bc63-292c11829e0c",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2448,
1632
]
},
{
"parameters": {
"chunkSize": 1500,
"chunkOverlap": 200,
"options": {}
},
"id": "047755ac-2c0e-4c4d-855b-03c1d02c5519",
"name": "Markdown Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
1680,
2048
]
},
{
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "url",
"value": "={{ $json.metadata.url }}"
}
]
}
}
},
"id": "f52faf25-ac1b-4e8e-8916-b271f0c33725",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
1680,
1840
]
},
{
"parameters": {
"mode": "insert",
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"embeddingBatchSize": 100,
"options": {}
},
"id": "6265d235-d3f3-49d0-8655-d0270a99a67e",
"name": "Supabase Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
1440,
1664
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.firecrawl.dev/v2/scrape",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"url\": \"{{ $json[\"Website Url\"] }}\",\n \"formats\": [\"markdown\"],\n \"onlyMainContent\": true,\n \"waitFor\": 1000\n}",
"options": {}
},
"id": "88e4c01f-d0e7-4aa7-9cd9-d0230491711f",
"name": "Firecrawl Scraper",
"type": "n8n-nodes-base.httpRequest",
"position": [
1040,
1664
]
},
{
"parameters": {
"formTitle": "Caricamento Sito Web",
"formDescription": "Inserisci l'URL del sito per alimentare il database IA",
"formFields": {
"values": [
{
"fieldLabel": "Website Url",
"placeholder": "https://esempio.it"
}
]
}
},
"id": "0d1ce416-f6f5-4f0a-9354-dc2a734e4a20",
"name": "Enter Website Url",
"type": "n8n-nodes-base.formTrigger",
"position": [
816,
1664
]
},
{
"parameters": {
"public": true,
"mode": "webhook"
},
"id": "fc3b1c06-3c75-4c5f-ac7d-c31b7f728f33",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
2144,
1632
]
},
{
"parameters": {
"tableName": "chat_memory"
},
"id": "6180d26d-9c1d-4b78-8d5b-89ccfbbf3d46",
"name": "Chat Memory",
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"position": [
2496,
2128
]
},
{
"parameters": {
"jsCode": "const data = $input.item.json.data || {};\nlet markdown = data.markdown || \"\";\n\nif (markdown) {\n let lines = markdown.split('\\n');\n\n let cleanLines = lines.filter(line => {\n const l = line.trim().toLowerCase();\n if (l.length < 5) return false;\n\n if (l.includes(\"skip to\") || \n l.includes(\"search...\") || \n l.includes(\"ctrl k\") || \n l.includes(\"login\") || \n l.includes(\"sign up\")) {\n return false;\n }\n\n return true;\n });\n\n let cleanText = cleanLines.join('\\n');\n\n return [{\n json: {\n content: cleanText,\n metadata: {\n url: data.metadata?.url || \"url non disponibile\",\n title: data.metadata?.title || \"senza titolo\"\n }\n }\n }];\n}\n\nreturn [{ json: { content: \"ERRORE\", metadata: {} } }];"
},
"id": "63378e53-94f5-4d16-8c65-6ac5e877d653",
"name": "Extract Markdown",
"type": "n8n-nodes-base.code",
"position": [
1248,
1664
]
}
],
"connections": {
"Embeddings OpenAI Retriver": {
"ai_embedding": [
[
{
"node": "Retriever",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Retriever": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Markdown Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Supabase Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Firecrawl Scraper": {
"main": [
[
{
"node": "Extract Markdown",
"type": "main",
"index": 0
}
]
]
},
"Enter Website Url": {
"main": [
[
{
"node": "Firecrawl Scraper",
"type": "main",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Chat Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Extract Markdown": {
"main": [
[
{
"node": "Supabase Vector Store",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Firecrawl RAG. Uses embeddingsOpenAi, vectorStoreSupabase, lmChatOpenAi, agent. Event-driven trigger; 13 nodes.
Source: https://github.com/arcangelorosato-dev/firecrawl-rag/blob/dae47403e11853cd9635e5d7354637e46b10a0b1/workflow.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Inquiry-Agent. Uses @digitalocean/n8n-nodes-digitalocean-gradient-serverless-inference, stopAndError, googleDocs, gmail. Event-driven trigger; 88 nodes.
Alfred (funcional). Uses gmailTool, googleCalendarTool, gmail, embeddingsOpenAi. Event-driven trigger; 83 nodes.
Your AI workforce is ready. Are you?
Inquiry-Agent. Uses @digitalocean/n8n-nodes-digitalocean-gradient-serverless-inference, stopAndError, googleDocs, gmail. Event-driven trigger; 80 nodes.
Agent IA Projet Client. Uses executeWorkflowTrigger, lmChatOpenAi, toolWorkflow, vectorStoreQdrant. Event-driven trigger; 79 nodes.