This workflow follows the Documentdefaultdataloader → OpenAI Embeddings 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": "Upload to Supabase Demo",
"nodes": [
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e556566e-20a1-48b4-b01e-197a402b5a5f",
"name": "file_id",
"value": "={{ $json.id }}",
"type": "string"
}
]
},
"options": {}
},
"id": "d373cb7c-674d-40a7-b568-704a3c6bae72",
"name": "Set ID",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
580,
40
]
},
{
"parameters": {
"operation": "text",
"options": {}
},
"id": "00fa6495-0bf9-49d3-be48-e2c5260cbf7f",
"name": "Extract from File",
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
1040,
40
]
},
{
"parameters": {
"mode": "insert",
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"options": {
"queryName": "match_documents"
}
},
"id": "bd7aa898-2b52-45ea-93da-b89435d55f2b",
"name": "Supabase Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
1220,
40
],
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "file_id",
"value": "={{ $('Set ID').item.json.file_id }}"
}
]
}
}
},
"id": "38dccf7c-94f9-4bfc-a498-306a899cc88f",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1,
"position": [
1280,
200
]
},
{
"parameters": {
"options": {}
},
"id": "6cee0cfe-2db8-45c9-a330-4d01c7d4acfb",
"name": "Recursive Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"typeVersion": 1,
"position": [
1540,
200
]
},
{
"parameters": {
"options": {}
},
"id": "227fb03b-60d6-4d74-9022-127bd19bef20",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.1,
"position": [
1160,
200
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"value": "1TdnGrO0UFHboSBFMYCT1T0w17OwMct6E",
"mode": "list",
"cachedResultName": "Projects",
"cachedResultUrl": "https://drive.google.com/drive/folders/1TdnGrO0UFHboSBFMYCT1T0w17OwMct6E"
},
"event": "fileUpdated",
"options": {}
},
"id": "3f7c7cf1-e314-4b75-a16f-fb549ef1950d",
"name": "File Updated",
"type": "n8n-nodes-base.googleDriveTrigger",
"typeVersion": 1,
"position": [
340,
380
],
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"value": "1TdnGrO0UFHboSBFMYCT1T0w17OwMct6E",
"mode": "list",
"cachedResultName": "Projects",
"cachedResultUrl": "https://drive.google.com/drive/folders/1TdnGrO0UFHboSBFMYCT1T0w17OwMct6E"
},
"event": "fileCreated",
"options": {}
},
"id": "5fbf67ec-43f4-4da9-9780-c616a93f5727",
"name": "New File",
"type": "n8n-nodes-base.googleDriveTrigger",
"typeVersion": 1,
"position": [
360,
40
],
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "download",
"fileId": {
"__rl": true,
"value": "={{ $json.file_id }}",
"mode": "id"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "text/plain"
}
}
}
},
"id": "c7d30bf8-c068-4ad2-9473-28ff3fd04a25",
"name": "Downloading File",
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
800,
40
],
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "download",
"fileId": {
"__rl": true,
"value": "={{ $('Set ID 2').item.json.file_id }}",
"mode": "id"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "text/plain"
}
}
}
},
"id": "89f6919a-9fd3-4f42-ba1e-c8a615468f17",
"name": "Download File 2",
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
940,
380
],
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "text",
"options": {}
},
"id": "139fd870-2f0c-4b84-86e2-67516d3c62e7",
"name": "Extract from File1",
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
1120,
380
]
},
{
"parameters": {
"mode": "insert",
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"options": {
"queryName": "match_documents"
}
},
"id": "c375378a-77e9-468e-ba05-a54473899ebe",
"name": "Supabase Vector Store1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
1320,
380
],
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "file_id",
"value": "={{ $('Keep First ID').item.json.file_id }}"
}
]
}
}
},
"id": "3767acd4-c43f-4b65-b7d5-c22269f03734",
"name": "Default Data Loader1",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1,
"position": [
1380,
560
]
},
{
"parameters": {
"options": {}
},
"id": "2c442939-68c5-4a6b-bf62-09ba7d49d96d",
"name": "Recursive Character Text Splitter1",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"typeVersion": 1,
"position": [
1640,
560
]
},
{
"parameters": {
"options": {}
},
"id": "3cae704e-f043-4b0f-8427-82d11447a5e5",
"name": "Embeddings OpenAI1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.1,
"position": [
1280,
560
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "b4433ac7-0b70-4405-a564-f3f78f784470",
"name": "file_id",
"value": "={{ $('File Updated').item.json.id }}",
"type": "string"
}
]
},
"options": {}
},
"id": "8d932805-480f-4954-a9e4-6d3d23792b7e",
"name": "Set ID 2",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
620,
380
]
},
{
"parameters": {
"operation": "delete",
"tableId": "documents",
"filterType": "string",
"filterString": "=metadata->>file_id=like.*{{ $json.id }}*"
},
"id": "0ec02f0f-04ab-47bf-b4bf-56f4077f82a7",
"name": "Delete Row(s)",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
480,
380
],
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {},
"id": "3d3b219a-36ed-4d70-b0ff-697fb22f6f85",
"name": "Keep First ID",
"type": "n8n-nodes-base.limit",
"typeVersion": 1,
"position": [
760,
380
]
}
],
"connections": {
"Set ID": {
"main": [
[
{
"node": "Downloading File",
"type": "main",
"index": 0
}
]
]
},
"Extract from File": {
"main": [
[
{
"node": "Supabase Vector Store",
"type": "main",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Supabase Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Recursive Character Text 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
}
]
]
},
"New File": {
"main": [
[
{
"node": "Set ID",
"type": "main",
"index": 0
}
]
]
},
"Downloading File": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"File Updated": {
"main": [
[
{
"node": "Delete Row(s)",
"type": "main",
"index": 0
}
]
]
},
"Download File 2": {
"main": [
[
{
"node": "Extract from File1",
"type": "main",
"index": 0
}
]
]
},
"Default Data Loader1": {
"ai_document": [
[
{
"node": "Supabase Vector Store1",
"type": "ai_document",
"index": 0
}
]
]
},
"Recursive Character Text Splitter1": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader1",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"Embeddings OpenAI1": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Extract from File1": {
"main": [
[
{
"node": "Supabase Vector Store1",
"type": "main",
"index": 0
}
]
]
},
"Set ID 2": {
"main": [
[
{
"node": "Keep First ID",
"type": "main",
"index": 0
}
]
]
},
"Delete Row(s)": {
"main": [
[
{
"node": "Set ID 2",
"type": "main",
"index": 0
}
]
]
},
"Keep First ID": {
"main": [
[
{
"node": "Download File 2",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "2bd439c9-af44-4ef0-9e28-75253fbf7eb1",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "mttKE7wdH4dGdq5s",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleDriveOAuth2ApiopenAiApisupabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow effortlessly transforms files from Google Drive into searchable knowledge bases in Supabase, enabling quick retrieval of information through AI-powered queries without manual data handling. It's ideal for developers, content managers, or teams building chatbots and search tools who need to vectorise documents for semantic search. The core step involves extracting text from the file, splitting it into chunks with the Recursive Character Text Splitter, generating embeddings via OpenAI, and storing them in Supabase's vector database for efficient querying.
Use this when you want automated, event-driven uploads from Google Drive to keep your Supabase vectors current, such as for real-time document indexing in apps. Avoid it for non-text files like images or when you need custom embedding models beyond OpenAI. Common variations include swapping Google Drive for Dropbox triggers or adding post-upload notifications via email nodes.
About this workflow
Upload to Supabase Demo. Uses extractFromFile, vectorStoreSupabase, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 18 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
RAG_Ingest. Uses httpRequest, vectorStoreSupabase, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 73 nodes.
Chat with docs - 5minAI New version. Uses httpRequest, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter, embeddingsOpenAi. Event-driven trigger; 62 nodes.
I prepared a detailed guide that illustrates the entire process of building an AI agent using Supabase and Google Drive within N8N workflows.
Auto repost job with RAG is a workflow designed to automatically extract, process, and publish job listings from monitored sources using Google Drive, OpenAI, Supabase, and WordPress. This integration
My workflow 2529. Uses lmChatOpenAi, documentDefaultDataLoader, embeddingsOpenAi, googleDrive. Event-driven trigger; 54 nodes.