This workflow follows the Documentdefaultdataloader → Google Gemini 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": "Agente_Ecommerce_v3_subflujo",
"nodes": [
{
"parameters": {
"modelName": "models/text-embedding-004"
},
"type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
"typeVersion": 1,
"position": [
380,
500
],
"id": "6c07011f-88cc-4430-9758-3e2490107a78",
"name": "Embeddings Google Gemini",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "insert",
"qdrantCollection": {
"__rl": true,
"value": "tienda",
"mode": "id"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"typeVersion": 1,
"position": [
540,
240
],
"id": "d240d852-97be-4fa0-befe-0a6ba077055f",
"name": "Qdrant Vector Store",
"credentials": {
"qdrantApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"inputSource": "passthrough"
},
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
-500,
240
],
"id": "71fa7e87-0c2a-45f7-a270-d51a7092a237",
"name": "Inicio"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"typeVersion": 1,
"position": [
720,
600
],
"id": "fb93811f-d6e5-4fa6-ac10-9a8fc07f5b32",
"name": "Recursive Character Text Splitter"
},
{
"parameters": {
"dataType": "binary",
"loader": "csvLoader",
"options": {
"metadata": {
"metadataValues": [
{
"name": "tipo",
"value": "tienda"
}
]
}
}
},
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1,
"position": [
580,
440
],
"id": "19215e3e-43d0-4fd0-aa0e-0e6e7d5ce8eb",
"name": "Default Data Loader"
},
{
"parameters": {
"jsCode": "return items.map(item => {\n const data = item.json;\n\n // Funci\u00f3n para eliminar etiquetas HTML\n const stripHTML = (html) =>\n typeof html === 'string'\n ? html.replace(/<[^>]*>/g, '').trim()\n : '';\n\n // Valores base\n const base = {\n id: data.id || null,\n name: data.name || '',\n slug: data.slug || '',\n permalink: data.permalink || '',\n description: stripHTML(data.description),\n short_description: stripHTML(data.short_description),\n sku: data.sku || '',\n price: data.price || '',\n categories: Array.isArray(data.categories)\n ? data.categories.map(cat => cat.name).filter(Boolean).join(', ')\n : '',\n images: Array.isArray(data.images)\n ? data.images.map(img => img.src).filter(Boolean).join(', ')\n : ''\n };\n\n // Atributos a columnas planas (Color: Amarillo, Talla: M, etc.)\n if (Array.isArray(data.attributes)) {\n for (const attr of data.attributes) {\n if (\n attr &&\n typeof attr.name === 'string' &&\n Array.isArray(attr.options)\n ) {\n base[attr.name] = attr.options.join(', ');\n }\n }\n }\n\n return { json: base };\n});\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
60,
240
],
"id": "f704a5a9-7cfa-4d06-8701-1586bbb0b75d",
"name": "Transformar Datos"
},
{
"parameters": {
"jsCode": "// Obtener los productos desde el nodo \"Filtrar la informaci\u00f3n de productos\"\nconst productos = $('Transformar Datos').all().flatMap(item => item.json); \n\n// Si la API devolvi\u00f3 menos productos de los esperados, detener el loop\nif (!productos || productos.length < $('Inicio').first().json.limit) {\n return [{ json: { hasMore: false } }];\n}\n\n// Aumentar el offset para la siguiente iteraci\u00f3n\nreturn [{ json: { offset: $('Inicio').first().json.offset + $('Inicio').first().json.limit, limit: $('Inicio').first().json.limit, hasMore: true } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1220,
240
],
"id": "ef22581a-a82a-4937-a936-61bdbe9abb2a",
"name": "Salida a Flujo Principal"
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
960,
240
],
"id": "df07d2cb-e9d7-4752-a6e7-49cb74337271",
"name": "Aggregate"
},
{
"parameters": {
"url": "=https://tienda.blunexai.com/wp-json/wc/v3/products?offset={{$('Inicio').item.json.offset}}&per_page={{$('Inicio').item.json.limit}}",
"authentication": "genericCredentialType",
"genericAuthType": "httpBasicAuth",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-240,
240
],
"id": "d4b539c1-84ea-4a4e-beeb-eadd21a25005",
"name": "Obtener Productos",
"credentials": {
"httpBasicAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.convertToFile",
"typeVersion": 1.1,
"position": [
280,
240
],
"id": "8f72b3bc-7cf3-4b71-bf9f-fe5104713c5a",
"name": "Convertir a CSV"
}
],
"connections": {
"Embeddings Google Gemini": {
"ai_embedding": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Inicio": {
"main": [
[
{
"node": "Obtener Productos",
"type": "main",
"index": 0
}
]
]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Transformar Datos": {
"main": [
[
{
"node": "Convertir a CSV",
"type": "main",
"index": 0
}
]
]
},
"Qdrant Vector Store": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Salida a Flujo Principal",
"type": "main",
"index": 0
}
]
]
},
"Obtener Productos": {
"main": [
[
{
"node": "Transformar Datos",
"type": "main",
"index": 0
}
]
]
},
"Convertir a CSV": {
"main": [
[
{
"node": "Qdrant Vector Store",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "d445cb2f-7a01-435d-ac1a-e65370a03f99",
"id": "yvULG0mlLdzW4MQX",
"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.
googlePalmApihttpBasicAuthqdrantApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Agente_Ecommerce_v3_subflujo. Uses embeddingsGoogleGemini, vectorStoreQdrant, executeWorkflowTrigger, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 10 nodes.
Source: https://github.com/DragonJAR/n8n-workflows-esp/blob/5b7d3b288093125a02c8d1034fbf6107b85e4974/workflows/01555-Agente_Ecommerce_v3_subflujo.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.
Api Schema Extractor. Uses manualTrigger, httpRequest, splitOut, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 88 nodes.
Wait Splitout. Uses manualTrigger, httpRequest, splitOut, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 88 nodes.
This workflow automates the process of discovering and extracting APIs from various services, followed by generating custom schemas. It works in three distinct stages: research, extraction, and schema
I originally started to template to ask questions on the "n8n @ scale office-hours" livestream videos but then extended it to include the latest videos on the official channel.
Code Extractfromfile. Uses manualTrigger, sort, httpRequest, compression. Event-driven trigger; 50 nodes.