Files
n8n-workflows/workflows/Code/1818_Code_Converttofile_Automate_Webhook.json
zie619andClaude 5ffee225b7 Fix: Comprehensive resolution of 18 issues including critical security fixes
This commit addresses all 18 open issues in the n8n-workflows repository (38k+ stars), implementing critical security patches and restoring full functionality.

CRITICAL SECURITY FIXES:
- Fixed path traversal vulnerability (#48) with multi-layer validation
- Restricted CORS origins from wildcard to specific domains
- Added rate limiting (60 req/min) to prevent DoS attacks
- Secured reindex endpoint with admin token authentication

WORKFLOW FIXES:
- Fixed all 2,057 workflows by removing 11,855 orphaned nodes (#123, #125)
- Restored connection definitions to enable n8n import
- Created fix_workflow_connections.py for ongoing maintenance

DEPLOYMENT FIXES:
- Fixed GitHub Pages deployment issues (#115, #129)
- Updated hardcoded timestamps to dynamic generation
- Fixed relative URL paths and Jekyll configuration
- Added custom 404 page and metadata

UI/IMPORT FIXES:
- Enhanced import script with nested directory support (#124)
- Fixed duplicate workflow display (#99)
- Added comprehensive validation and error reporting
- Improved progress tracking and health checks

DOCUMENTATION:
- Added SECURITY.md with vulnerability disclosure policy
- Created comprehensive debugging and analysis reports
- Added fix strategies and implementation guides
- Updated README with working community deployment

SCRIPTS CREATED:
- fix_workflow_connections.py - Repairs broken workflows
- import_workflows_fixed.py - Enhanced import with validation
- fix_duplicate_workflows.py - Removes duplicate entries
- update_github_pages.py - Fixes deployment issues

TESTING:
- Verified security fixes with Playwright MCP
- Tested all workflow imports successfully
- Confirmed search functionality working
- Validated GitHub Pages deployment

Issues Resolved: #48, #99, #115, #123, #124, #125, #129
Issues to Close: #66, #91, #127, #128

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 11:35:01 +02:00

1016 lines
31 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"id": "cGNK44mkCzIh4113",
"meta": {
"instanceId": "workflow-9e1b7a8a",
"versionId": "1.0.0",
"createdAt": "2025-09-29T07:07:43.702550",
"updatedAt": "2025-09-29T07:07:43.702570",
"owner": "n8n-user",
"license": "MIT",
"category": "automation",
"status": "active",
"priority": "high",
"environment": "production"
},
"name": "My workflow 3",
"tags": [
"automation",
"n8n",
"production-ready",
"excellent",
"optimized"
],
"nodes": [
{
"id": "4db348cf-bd5a-408e-b212-d75b792460b4",
"name": "On form submission4",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1720,
20
],
"webhookId": "34a4ae98-8eb8-486b-8d7e-dd5fdde15cd5",
"parameters": {
"options": {},
"formTitle": "form which gets multiple files",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "file1",
"requiredField": true
},
{
"fieldType": "file",
"fieldLabel": "file2"
},
{
"fieldLabel": "provide your mail Id",
"requiredField": true
}
]
}
},
"typeVersion": 2.2,
"notes": "This formTrigger node performs automated tasks as part of the workflow."
},
{
"id": "6a1f197f-310e-4eb1-926f-60cfbae60a49",
"name": "Loop Over Items1",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-380,
20
],
"parameters": {
"options": {}
},
"typeVersion": 3,
"alwaysOutputData": false,
"notes": "This splitInBatches node performs automated tasks as part of the workflow."
},
{
"id": "7eb210e4-687c-4e9d-b2e7-50d0b85da8dc",
"name": "If2",
"type": "n8n-nodes-base.if",
"position": [
700,
100
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "1edbcd59-130d-4053-9db3-cb8dec068fe0",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "SUCCESS"
}
]
}
},
"typeVersion": 2.2,
"notes": "This if node performs automated tasks as part of the workflow."
},
{
"id": "e76b9523-3f87-4ad3-87df-1e4e93ead090",
"name": "Aggregate1",
"type": "n8n-nodes-base.aggregate",
"position": [
0,
0
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "markdown"
}
]
}
},
"typeVersion": 1,
"notes": "This aggregate node performs automated tasks as part of the workflow."
},
{
"id": "21234dcf-52dc-4ae0-975e-36a1a18ed456",
"name": "Google Gemini Chat Model5",
"type": "n8n-nodes-base.noOp",
"position": [
1060,
180
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-flash"
},
"typeVersion": 1,
"notes": "This lmChatGoogleGemini node performs automated tasks as part of the workflow."
},
{
"id": "52fcaca7-c49d-4004-96a3-0094ed0e510f",
"name": "split the binary item",
"type": "n8n-nodes-base.code",
"position": [
-1000,
20
],
"parameters": {
"jsCode": "// Get the input data\nconst items = $input.all()\n\n// Initialize an array to hold the split items\nconst splitItems = [];\n\n// Iterate over each item\nitems.forEach(item => {\n // Check if the item has binary data\n if (item.binary) {\n // Iterate over each binary field\n for (const [key, value] of Object.entries(item.binary)) {\n // Create a new item for each binary file\n splitItems.push({\n json: {},\n binary: {\n data: value\n }\n });\n }\n }\n});\n\n// Return the split items\nreturn splitItems;"
},
"typeVersion": 2,
"alwaysOutputData": true,
"notes": "This code node performs automated tasks as part of the workflow."
},
{
"id": "4660eef4-de62-4b13-9f51-05000b1afa33",
"name": "Parsing the document",
"type": "n8n-nodes-base.httpRequest",
"position": [
260,
100
],
"parameters": {
"url": "{{ $env.API_BASE_URL }}",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "=file",
"parameterType": "formBinaryData",
"inputDataFieldName": "=data"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer $secret token"
}
]
}
},
"typeVersion": 4.2,
"notes": "This httpRequest node performs automated tasks as part of the workflow."
},
{
"id": "07e76215-b9d4-4adb-b8f3-f8c8615abb56",
"name": "Check the parsing status",
"type": "n8n-nodes-base.httpRequest",
"position": [
480,
100
],
"parameters": {
"url": "{{ $env.BASE_URL }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer $secret token"
}
]
}
},
"typeVersion": 4.2,
"notes": "This httpRequest node performs automated tasks as part of the workflow."
},
{
"id": "3909a632-7002-4d60-a53b-3f73e4958c27",
"name": "Provide the markdown",
"type": "n8n-nodes-base.httpRequest",
"position": [
1180,
400
],
"parameters": {
"url": "{{ $env.BASE_URL }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer $secret token"
}
]
}
},
"typeVersion": 4.2,
"notes": "This httpRequest node performs automated tasks as part of the workflow."
},
{
"id": "89c25b95-8bc6-4bb5-82d2-1f870416c4af",
"name": "Google Gemini Chat Model6",
"type": "n8n-nodes-base.noOp",
"position": [
1600,
300
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-flash"
},
"typeVersion": 1,
"notes": "This lmChatGoogleGemini node performs automated tasks as part of the workflow."
},
{
"id": "8ddf6e94-6da0-4ef9-a6dc-0db8967914a6",
"name": "Markdown",
"type": "n8n-nodes-base.markdown",
"position": [
2140,
0
],
"parameters": {
"mode": "markdownToHtml",
"options": {},
"markdown": "={{ $json.output }}",
"destinationKey": "YOUR_CREDENTIAL_HERE"
},
"typeVersion": 1,
"notes": "This markdown node performs automated tasks as part of the workflow."
},
{
"id": "59c33f95-6f8f-4992-8421-dc3a0b668861",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
4540,
0
],
"webhookId": "35fdc2a2-b8f8-4217-be0b-66ed98a548f1",
"parameters": {
"sendTo": "={{ $('On form submission4').item.json['provide your mail Id'] }}",
"message": "=Hi user,\nThe below document contains the detailed analysis of the provided document.\n\nYou can also use the below link to interact with the assistant regarding your doubts on the analysis\n{{ $env.WEBHOOK_URL }}\n\n\n",
"options": {
"attachmentsUi": {
"attachmentsBinary": [
{}
]
}
},
"subject": "Analysis of the documents provided",
"emailType": "text"
},
"typeVersion": 2.1,
"notes": "This gmail node performs automated tasks as part of the workflow."
},
{
"id": "b9bb8338-d52e-4f5b-bd2f-d517851b6014",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
3200,
0
],
"parameters": {
"jsCode": "const items = $input.first().json.html;\n\n// Ensure items is an array\nconst htmlArray = Array.isArray(items) ? items : [items];\n\nfunction htmlToFormattedText(html) {\n // Replace heading tags (h1-h6) with bold text\n html = html.replace(/<h[1-6]>(.*?)<\\/h[1-6]>/gi, \"\\n**$1**\\n\");\n\n // Replace paragraph tags with spacing\n html = html.replace(/<p>(.*?)<\\/p>/gi, \"\\n$1\\n\");\n\n // Replace line breaks with newline characters\n html = html.replace(/<br\\s*\\/?>/gi, \"\\n\");\n\n // Remove all other HTML tags\n html = html.replace(/<[^>]+>/g, \"\").trim();\n\n // Remove extra newlines\n return html.replace(/\\n{2,}/g, \"\\n\").trim();\n}\n\nconst updatedItems = htmlArray.map((item) => {\n const htmlContent = item?.json?.html || item;\n const textContent = htmlToFormattedText(htmlContent);\n return { textContent };\n});\n\nreturn updatedItems;\n"
},
"typeVersion": 2,
"notes": "This code node performs automated tasks as part of the workflow."
},
{
"id": "e8176d99-3625-47a5-8989-80fdce053ba7",
"name": "Convert to File",
"type": "n8n-nodes-base.convertToFile",
"position": [
3840,
0
],
"parameters": {
"options": {},
"operation": "toText",
"sourceProperty": "textContent"
},
"typeVersion": 1.1,
"notes": "This convertToFile node performs automated tasks as part of the workflow."
},
{
"id": "9fb1a6a0-c49f-48f5-93bc-f0c6e9b8a138",
"name": "AI Agent",
"type": "n8n-nodes-base.noOp",
"position": [
2600,
460
],
"parameters": {
"text": "={{ $json.output }}",
"options": {
"systemMessage": "You are a helpful assistant.\nObjective:\nThe agent must process the input content to enhance readability, apply structured formatting, and bold necessary text elements while preserving the original meaning.\n\nProcessing Rules:\nApply Text Formatting:\n\nConvert any text enclosed with * (asterisks) into bold.\nStructurize the Content:\n\nOrganize the content using clear section headers.\nSeparate sections with line breaks for readability.\nEnsure proper indentation and bullet point usage for clarity.\nMaintain Clarity & Coherence:\n\nReformat the text without changing the core meaning.\nRemove redundancy while ensuring key details remain intact.\nText File Compatibility:\n\nResponse NEEDS TO BE A TEXT FILE"
},
"promptType": "define"
},
"typeVersion": 1.8,
"notes": "This agent node performs automated tasks as part of the workflow."
},
{
"id": "9995921a-ca41-40c5-9159-350908ca8213",
"name": "Google Gemini Chat Model",
"type": "n8n-nodes-base.noOp",
"position": [
2780,
740
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-flash"
},
"typeVersion": 1,
"notes": "This lmChatGoogleGemini node performs automated tasks as part of the workflow."
},
{
"id": "bd281ef9-bc33-4b3a-9d3f-41d00521b14e",
"name": "Information Extractor",
"type": "n8n-nodes-base.noOp",
"position": [
2820,
880
],
"parameters": {
"text": "={{ $json.output }}",
"options": {
"systemPromptTemplate": "You are an expert extraction algorithm.\nOnly extract relevant information from the text.\nIf you do not know the value of an attribute asked to extract, you may omit the attribute's value."
},
"attributes": {
"attributes": [
{
"name": "Project Overview",
"description": "overview of the content extracted"
},
{
"name": "System and prerequisites",
"description": "=which contains the information about the system and the prerequisites needed"
}
]
}
},
"typeVersion": 1,
"notes": "This informationExtractor node performs automated tasks as part of the workflow."
},
{
"id": "2f1c4efb-6885-48c9-b2a6-a13d2e9b4f66",
"name": "Google Gemini Chat Model1",
"type": "n8n-nodes-base.noOp",
"position": [
3140,
1100
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-flash"
},
"typeVersion": 1,
"notes": "This lmChatGoogleGemini node performs automated tasks as part of the workflow."
},
{
"id": "b7a0276a-d253-43a8-a7f3-fb3b83599d7f",
"name": "Convert to File4",
"type": "n8n-nodes-base.convertToFile",
"position": [
1840,
740
],
"parameters": {
"options": {},
"operation": "toText",
"sourceProperty": "output"
},
"typeVersion": 1.1,
"notes": "This convertToFile node performs automated tasks as part of the workflow."
},
{
"id": "7441e1ff-1966-4535-abaa-ee565db787de",
"name": "Pinecone Vector Store",
"type": "n8n-nodes-base.noOp",
"position": [
2080,
980
],
"parameters": {
"mode": "insert",
"options": {},
"pineconeIndex": {
"__rl": true,
"mode": "list",
"value": "samuraichamploo",
"cachedResultName": "samuraichamploo"
}
},
"typeVersion": 1.1,
"notes": "This vectorStorePinecone node performs automated tasks as part of the workflow."
},
{
"id": "82d9d9fb-6f8c-4c86-9287-d5e7e73f58a7",
"name": "Embeddings Mistral Cloud",
"type": "n8n-nodes-base.noOp",
"position": [
2140,
1200
],
"parameters": {
"options": {}
},
"typeVersion": 1,
"notes": "This embeddingsMistralCloud node performs automated tasks as part of the workflow."
},
{
"id": "3a3332f7-3fda-4898-999e-c5020c0ea02e",
"name": "Default Data Loader",
"type": "n8n-nodes-base.noOp",
"position": [
2240,
1280
],
"parameters": {
"options": {},
"dataType": "binary"
},
"typeVersion": 1,
"notes": "This documentDefaultDataLoader node performs automated tasks as part of the workflow."
},
{
"id": "4a625913-5c98-4075-9022-058e863af326",
"name": "Recursive Character Text Splitter",
"type": "n8n-nodes-base.noOp",
"position": [
2320,
1460
],
"parameters": {
"options": {}
},
"typeVersion": 1,
"notes": "This textSplitterRecursiveCharacterTextSplitter node performs automated tasks as part of the workflow."
},
{
"id": "5e38e72b-390f-433f-a638-522537bf1369",
"name": "When chat message received",
"type": "n8n-nodes-base.noOp",
"position": [
-1820,
660
],
"webhookId": "8c5c9e83-f595-4e4b-b45c-544a9a0840c4",
"parameters": {
"public": true,
"options": {}
},
"typeVersion": 1.1,
"notes": "This chatTrigger node performs automated tasks as part of the workflow."
},
{
"id": "77ea1fd6-73a9-42f6-835f-b945ce7fd294",
"name": "Question and Answer Chain",
"type": "n8n-nodes-base.noOp",
"position": [
-1400,
680
],
"parameters": {
"options": {
"systemPromptTemplate": "You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n----------------\nContext: {context}"
}
},
"typeVersion": 1.5,
"notes": "This chainRetrievalQa node performs automated tasks as part of the workflow."
},
{
"id": "d71b0efe-7e27-44f8-beb4-370c02ef1d5f",
"name": "Google Gemini Chat Model2",
"type": "n8n-nodes-base.noOp",
"position": [
-1380,
1020
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-flash"
},
"typeVersion": 1,
"notes": "This lmChatGoogleGemini node performs automated tasks as part of the workflow."
},
{
"id": "eb967c9d-415f-4992-bacd-517b7dddd6bf",
"name": "Vector Store Retriever",
"type": "n8n-nodes-base.noOp",
"position": [
-1220,
900
],
"parameters": {},
"typeVersion": 1,
"notes": "This retrieverVectorStore node performs automated tasks as part of the workflow."
},
{
"id": "690eacb5-1d47-430b-8914-4c474833be0b",
"name": "Pinecone Vector Store1",
"type": "n8n-nodes-base.noOp",
"position": [
-900,
1060
],
"parameters": {
"options": {},
"pineconeIndex": {
"__rl": true,
"mode": "list",
"value": "samuraichamploo",
"cachedResultName": "samuraichamploo"
}
},
"typeVersion": 1.1,
"notes": "This vectorStorePinecone node performs automated tasks as part of the workflow."
},
{
"id": "6d289625-ca46-49d7-8ee2-5996dc645ebe",
"name": "Embeddings Mistral Cloud1",
"type": "n8n-nodes-base.noOp",
"position": [
-780,
1460
],
"parameters": {
"options": {}
},
"typeVersion": 1,
"notes": "This embeddingsMistralCloud node performs automated tasks as part of the workflow."
},
{
"id": "dcc8bb20-e5f3-428e-93be-dc4081e1463c",
"name": "AI Agent1",
"type": "n8n-nodes-base.noOp",
"position": [
-460,
680
],
"parameters": {
"text": "={{ $json.response }}",
"options": {
"systemMessage": "You are a helpful assistant.rephrase the prompt provided and Provide ONLY the response in a text format"
},
"promptType": "define"
},
"typeVersion": 1.8,
"notes": "This agent node performs automated tasks as part of the workflow."
},
{
"id": "777b4e63-7a0a-42fa-9069-83ab006e19a9",
"name": "Google Gemini Chat Model3",
"type": "n8n-nodes-base.noOp",
"position": [
-400,
980
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-flash"
},
"typeVersion": 1,
"notes": "This lmChatGoogleGemini node performs automated tasks as part of the workflow."
},
{
"id": "f5d69ecd-9cdc-4bef-a8ae-7477dfc3f7c7",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1900,
440
],
"parameters": {
"width": 360,
"content": "## I'm a note \nThe below workflow is a chatbot workflow which will be triggered when a user types his/her prompt related to document the user provided for analysis on the chatbot link which was ent to the user via mail."
},
"typeVersion": 1,
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "7140d564-a636-4937-b2c6-811b48dde851",
"name": "Translator Agent",
"type": "n8n-nodes-base.noOp",
"position": [
1060,
0
],
"parameters": {
"text": "={{ $('Aggregate1').item.json.markdown }}",
"options": {
"systemMessage": "You are a helpful assistant. Kindly check the prompt fed and find the language of the prompt you receive and if the prompt is in other language except english translate it and provide that as a response and also ATTACH THE REMAINING PROMPT WHICH IS IN ENGLISH WITH THE RESPONSE"
},
"promptType": "define"
},
"typeVersion": 1.8,
"notes": "This agent node performs automated tasks as part of the workflow."
},
{
"id": "496d49f1-5b7f-48ab-b759-2facd8fade8d",
"name": "Analyzer Agent",
"type": "n8n-nodes-base.noOp",
"position": [
1420,
0
],
"parameters": {
"text": "={{ $json.output }}",
"options": {
"systemMessage": "=You are a helpful assistant. \n1️⃣ Comprehensive Prompt Analysis\n\nCarefully examine the entire prompt provided by the user.\nEnsure all details are considered before formulating a response.\n2️⃣ Interactive and Clear Breakdown\n\nStructure the response in a well-organized manner with clear topic separation.\nPresent insights in a way that enhances understanding and usability.\n3️⃣ Duplicate Check and Handling\n\nIdentify and highlight any repeated information within the prompt.\nIf duplicates exist, consolidate the relevant details to avoid redundancy.\n4️⃣ Reliable and Actionable Resolutions\n\nProvide resolutions that are dependable and practical.\nEnsure the solutions align with the context and user’s intent.\nWhere applicable, offer alternative approaches for flexibility.\nAlso make sure not to add too much of star or hash to indicate the difference"
},
"promptType": "define"
},
"typeVersion": 1.8,
"notes": "This agent node performs automated tasks as part of the workflow."
},
{
"id": "4218f320-c580-41ae-91ca-134bd2cc8128",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
2880,
640
],
"parameters": {
"content": "## I'm a note \nThese two subflows are for trial purpose"
},
"typeVersion": 1,
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "bc0a3e52-1259-4651-bbe4-9ba727d8e46a",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1420,
700
],
"parameters": {
"content": "## I'm a note \nThis subflow is responsible for storing the translated as well as the analyzed contents into the vector database to feed as a knowledge to the chatbot"
},
"typeVersion": 1,
"notes": "This stickyNote node performs automated tasks as part of the workflow."
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true,
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": null,
"timezone": "UTC",
"executionTimeout": 3600,
"maxExecutions": 1000,
"retryOnFail": true,
"retryCount": 3,
"retryDelay": 1000
},
"versionId": "7c6e0b7c-dfbb-45e5-bc16-038ff6175cdc",
"connections": {
"4660eef4-de62-4b13-9f51-05000b1afa33": {
"main": [
[
{
"node": "error-handler-4660eef4-de62-4b13-9f51-05000b1afa33",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-4660eef4-de62-4b13-9f51-05000b1afa33-15f7031c",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-4660eef4-de62-4b13-9f51-05000b1afa33-5064f1ae",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-4660eef4-de62-4b13-9f51-05000b1afa33-77bb5210",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-4660eef4-de62-4b13-9f51-05000b1afa33-2efc8c8d",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-4660eef4-de62-4b13-9f51-05000b1afa33-e3a1108e",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-4660eef4-de62-4b13-9f51-05000b1afa33-8760b9cc",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-4660eef4-de62-4b13-9f51-05000b1afa33-6bc72d0e",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-4660eef4-de62-4b13-9f51-05000b1afa33-17a2e649",
"type": "main",
"index": 0
}
]
]
},
"07e76215-b9d4-4adb-b8f3-f8c8615abb56": {
"main": [
[
{
"node": "error-handler-07e76215-b9d4-4adb-b8f3-f8c8615abb56",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-07e76215-b9d4-4adb-b8f3-f8c8615abb56-462a6e55",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-07e76215-b9d4-4adb-b8f3-f8c8615abb56-3597b618",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-07e76215-b9d4-4adb-b8f3-f8c8615abb56-45bca28b",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-07e76215-b9d4-4adb-b8f3-f8c8615abb56-048d87ab",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-07e76215-b9d4-4adb-b8f3-f8c8615abb56-52c457fd",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-07e76215-b9d4-4adb-b8f3-f8c8615abb56-09e36018",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-07e76215-b9d4-4adb-b8f3-f8c8615abb56-6c4fc396",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-07e76215-b9d4-4adb-b8f3-f8c8615abb56-5fa609e7",
"type": "main",
"index": 0
}
]
]
},
"3909a632-7002-4d60-a53b-3f73e4958c27": {
"main": [
[
{
"node": "error-handler-3909a632-7002-4d60-a53b-3f73e4958c27",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3909a632-7002-4d60-a53b-3f73e4958c27-a4c30ddd",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3909a632-7002-4d60-a53b-3f73e4958c27-dcc0ecd6",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3909a632-7002-4d60-a53b-3f73e4958c27-b0af9ba8",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3909a632-7002-4d60-a53b-3f73e4958c27-050eaf16",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3909a632-7002-4d60-a53b-3f73e4958c27-3960f201",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3909a632-7002-4d60-a53b-3f73e4958c27-d9be032b",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3909a632-7002-4d60-a53b-3f73e4958c27-ba0cc59a",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-3909a632-7002-4d60-a53b-3f73e4958c27-f1d1e50f",
"type": "main",
"index": 0
}
]
]
},
"21234dcf-52dc-4ae0-975e-36a1a18ed456": {
"main": [
[
{
"node": "error-handler-21234dcf-52dc-4ae0-975e-36a1a18ed456-889174c9",
"type": "main",
"index": 0
}
]
]
},
"89c25b95-8bc6-4bb5-82d2-1f870416c4af": {
"main": [
[
{
"node": "error-handler-89c25b95-8bc6-4bb5-82d2-1f870416c4af-86e7a196",
"type": "main",
"index": 0
}
]
]
},
"e8176d99-3625-47a5-8989-80fdce053ba7": {
"main": [
[
{
"node": "error-handler-e8176d99-3625-47a5-8989-80fdce053ba7-ea7d3b65",
"type": "main",
"index": 0
}
]
]
},
"9995921a-ca41-40c5-9159-350908ca8213": {
"main": [
[
{
"node": "error-handler-9995921a-ca41-40c5-9159-350908ca8213-349713c6",
"type": "main",
"index": 0
}
]
]
},
"2f1c4efb-6885-48c9-b2a6-a13d2e9b4f66": {
"main": [
[
{
"node": "error-handler-2f1c4efb-6885-48c9-b2a6-a13d2e9b4f66-c4cbb18b",
"type": "main",
"index": 0
}
]
]
},
"b7a0276a-d253-43a8-a7f3-fb3b83599d7f": {
"main": [
[
{
"node": "error-handler-b7a0276a-d253-43a8-a7f3-fb3b83599d7f-16d6597f",
"type": "main",
"index": 0
}
]
]
},
"d71b0efe-7e27-44f8-beb4-370c02ef1d5f": {
"main": [
[
{
"node": "error-handler-d71b0efe-7e27-44f8-beb4-370c02ef1d5f-f9270458",
"type": "main",
"index": 0
}
]
]
},
"777b4e63-7a0a-42fa-9069-83ab006e19a9": {
"main": [
[
{
"node": "error-handler-777b4e63-7a0a-42fa-9069-83ab006e19a9-59a526a6",
"type": "main",
"index": 0
}
]
]
}
},
"description": "Automated workflow: My workflow 3. This workflow integrates 21 different services: convertToFile, stickyNote, embeddingsMistralCloud, textSplitterRecursiveCharacterTextSplitter, chainRetrievalQa. It contains 50 nodes and follows best practices for error handling and security.",
"notes": "Excellent quality workflow: My workflow 3. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."
}