Workflow: Stopanderror Code Import

Workflow Details

Download Workflow
{
    "id": "QyMyf3zraY0wxXDf",
    "meta": {
        "instanceId": "ba3fa76a571c35110ef5f67e5099c9a5c1768ef125c2f3b804ba20de75248c0b",
        "templateCredsSetupCompleted": true
    },
    "name": "Load Prompts from Github Repo and auto populate n8n expressions",
    "tags": [],
    "nodes": [
        {
            "id": "34781446-b06e-41eb-83b8-b96bda1a5595",
            "name": "When clicking \u2018Test workflow\u2019",
            "type": "n8n-nodes-base.manualTrigger",
            "position": [
                -80,
                0
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "c53b7243-7c82-47e0-a5ee-bd82bc51c386",
            "name": "GitHub",
            "type": "n8n-nodes-base.github",
            "position": [
                600,
                0
            ],
            "parameters": {
                "owner": {
                    "__rl": true,
                    "mode": "name",
                    "value": "={{ $json.Account }}"
                },
                "filePath": "={{ $json.path }}{{ $json.prompt }}",
                "resource": "file",
                "operation": "get",
                "repository": {
                    "__rl": true,
                    "mode": "name",
                    "value": "={{ $json.repo }}"
                },
                "additionalParameters": []
            },
            "credentials": {
                "githubApi": {
                    "id": "ostHZNoe8GSsbaQM",
                    "name": "The GitHub account"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "9976b199-b744-47a7-9d75-4b831274c01b",
            "name": "Extract from File",
            "type": "n8n-nodes-base.extractFromFile",
            "position": [
                840,
                0
            ],
            "parameters": {
                "options": [],
                "operation": "text"
            },
            "typeVersion": 1
        },
        {
            "id": "26aa4e6a-c487-4cdf-91d5-df660cf826a6",
            "name": "setVars",
            "type": "n8n-nodes-base.set",
            "position": [
                180,
                0
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "150618c5-09b1-4f8b-a7b4-984662bf3381",
                            "name": "Account",
                            "type": "string",
                            "value": "TPGLLC-US"
                        },
                        {
                            "id": "22e8a3b0-bd53-485c-b971-7f1dd0686f0e",
                            "name": "repo",
                            "type": "string",
                            "value": "PeresPrompts"
                        },
                        {
                            "id": "ab94d0a1-ef3a-4fe9-9076-6882c6fda0ac",
                            "name": "path",
                            "type": "string",
                            "value": "SEO\/"
                        },
                        {
                            "id": "66f122eb-1cbd-4769-aac8-3f05cdb6c116",
                            "name": "prompt",
                            "type": "string",
                            "value": "keyword_research.md"
                        },
                        {
                            "id": "03fe26a3-04e6-439c-abcb-d438fc5203c0",
                            "name": "company",
                            "type": "string",
                            "value": "South Nassau Physical Therapy"
                        },
                        {
                            "id": "c133d216-a457-4872-a060-0ba4d94549af",
                            "name": "product",
                            "type": "string",
                            "value": "Manual Therapy"
                        },
                        {
                            "id": "584864dd-2518-45e2-b501-02828757fc3a",
                            "name": "features",
                            "type": "string",
                            "value": "pain relief"
                        },
                        {
                            "id": "0c4594cc-302a-4215-bdad-12cf54f57967",
                            "name": "sector",
                            "type": "string",
                            "value": "physical therapy"
                        }
                    ]
                }
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "9d92f581-8cd9-448c-aa1d-023a96c1ddda",
            "name": "replace variables",
            "type": "n8n-nodes-base.code",
            "position": [
                1900,
                -20
            ],
            "parameters": {
                "jsCode": "\/\/ Fetch the prompt text\nconst prompt = $('SetPrompt').first().json.data;  \/\/ Ensure the prompt contains placeholders like {{ some.node.value }}\n\n\/\/ Example variables object\nconst variables = {\n  company: $('setVars').first().json.company,\n  features: \"Awesome Software\",\n  keyword: \"2025-02-07\"\n};\n\n\/\/ Function to replace placeholders dynamically\nconst replaceVariables = (text, vars) => {\n  return text.replace(\/{{(.*?)}}\/g, (match, key) => {\n    const trimmedKey = key.trim();\n    \n    \/\/ Extract last part after the last dot\n    const finalKey = trimmedKey.split('.').pop();\n\n    \/\/ Replace if key exists, otherwise leave placeholder unchanged\n    return vars.hasOwnProperty(finalKey) ? vars[finalKey] : match;\n  });\n};\n\n\/\/ Replace and return result\nreturn [{\n  prompt: replaceVariables(prompt, variables)\n}];\n"
            },
            "typeVersion": 2
        },
        {
            "id": "6c6c4fde-6ee5-47a8-894d-44d1afcedc2a",
            "name": "If",
            "type": "n8n-nodes-base.if",
            "position": [
                1560,
                0
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                        {
                            "id": "2717a7e5-095a-42bf-8b5b-8050c3389ec5",
                            "operator": {
                                "type": "boolean",
                                "operation": "true",
                                "singleValue": true
                            },
                            "leftValue": "={{ $json.success }}",
                            "rightValue": "={{ $('Check All Prompt Vars Present').item.json.keys()}}"
                        }
                    ]
                }
            },
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "3b7712b8-5152-4f60-9401-03c89c39e227",
            "name": "Check All Prompt Vars Present",
            "type": "n8n-nodes-base.code",
            "position": [
                1280,
                0
            ],
            "parameters": {
                "jsCode": "\/\/ Get prompt text\nconst prompt = $json.data;\n\n\/\/ Extract variables inside {{ }} dynamically\nconst matches = [...prompt.matchAll(\/{{(.*?)}}\/g)];\nconst uniqueVars = [...new Set(matches.map(match => match[1].trim().split('.').pop()))];\n\n\/\/ Get variables from the Set Node\nconst setNodeVariables = $node[\"setVars\"].json || {};\n\n\/\/ Log extracted variables and Set Node keys\nconsole.log(\"Extracted Variables:\", uniqueVars);\nconsole.log(\"Set Node Keys:\", Object.keys(setNodeVariables));\n\n\/\/ Check if all required variables are present in the Set Node\nconst missingKeys = uniqueVars.filter(varName => !setNodeVariables.hasOwnProperty(varName));\n\nconsole.log(\"Missing Keys:\", missingKeys);\n\n\/\/ Return false if any required variable is missing, otherwise return true\nreturn [{\n  success: missingKeys.length === 0,\n  missingKeys: missingKeys\n}];\n"
            },
            "typeVersion": 2
        },
        {
            "id": "32618e10-3285-4c16-9e78-058dde329337",
            "name": "SetPrompt",
            "type": "n8n-nodes-base.set",
            "position": [
                1060,
                0
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "335b450d-542a-4714-83d8-ccc237188fc5",
                            "name": "data",
                            "type": "string",
                            "value": "={{ $json.data }}"
                        }
                    ]
                }
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "4d8b34ca-50dd-4f37-b4f7-542291461662",
            "name": "Stop and Error",
            "type": "n8n-nodes-base.stopAndError",
            "position": [
                1900,
                200
            ],
            "parameters": {
                "errorMessage": "=Missing Prompt Variables : {{ $('Check All Prompt Vars Present').item.json.missingKeys }}\n"
            },
            "typeVersion": 1
        },
        {
            "id": "a78c1e17-9152-4241-bcdf-c0d723da543b",
            "name": "Set Completed Prompt",
            "type": "n8n-nodes-base.set",
            "position": [
                2220,
                -20
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "57a9625b-adea-4ee7-a72a-2be8db15f3d4",
                            "name": "Prompt",
                            "type": "string",
                            "value": "={{ $json.prompt }}"
                        }
                    ]
                }
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "51447c90-a222-4172-a49b-86ec43332559",
            "name": "AI Agent",
            "type": "@n8n\/n8n-nodes-langchain.agent",
            "position": [
                2440,
                -20
            ],
            "parameters": {
                "text": "={{ $json.Prompt }}",
                "options": [],
                "promptType": "define"
            },
            "typeVersion": 1.6999999999999999555910790149937383830547332763671875
        },
        {
            "id": "f15b6af1-7af2-4515-be8f-960211118dce",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                60,
                -120
            ],
            "parameters": {
                "width": 340,
                "height": 260,
                "content": "# Set The variables in your prompt here"
            },
            "typeVersion": 1
        },
        {
            "id": "163db6cc-5b06-4ae6-ac97-5890b37cdb18",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                520,
                -120
            ],
            "parameters": {
                "color": 5,
                "content": "## The repo is currently public for you to test with"
            },
            "typeVersion": 1
        },
        {
            "id": "83ff6a86-a759-42a9-ace4-e20d57b906db",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1780,
                -200
            ],
            "parameters": {
                "width": 360,
                "height": 260,
                "content": "## Replaces the values in the prompt with the variables in the \n# 'setVars' Node"
            },
            "typeVersion": 1
        },
        {
            "id": "7dd61153-84ac-4b59-b449-333825476c33",
            "name": "Sticky Note3",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                2000,
                180
            ],
            "parameters": {
                "color": 3,
                "content": "## If you're missing variables they will be listed here"
            },
            "typeVersion": 1
        },
        {
            "id": "1f070dc3-3d25-41d8-b534-912ba7c8b2b0",
            "name": "Prompt Output",
            "type": "n8n-nodes-base.set",
            "position": [
                2800,
                -20
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "01a30683-c348-4712-a3b1-739fc4a17718",
                            "name": "promptResponse",
                            "type": "string",
                            "value": "={{ $json.output }}"
                        }
                    ]
                }
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "2d12a6e2-7976-41b0-8cb2-01466b28269d",
            "name": "Ollama Chat Model",
            "type": "@n8n\/n8n-nodes-langchain.lmChatOllama",
            "position": [
                2480,
                200
            ],
            "parameters": {
                "options": []
            },
            "credentials": {
                "ollamaApi": {
                    "id": "ERfZ8mAfQ1b0aoxZ",
                    "name": "Ollama account"
                }
            },
            "typeVersion": 1
        }
    ],
    "active": false,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "4327a337-59e7-4b5b-98e8-93c6be550972",
    "connections": {
        "If": {
            "main": [
                [
                    {
                        "node": "replace variables",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Stop and Error",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "GitHub": {
            "main": [
                [
                    {
                        "node": "Extract from File",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "setVars": {
            "main": [
                [
                    {
                        "node": "GitHub",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "AI Agent": {
            "main": [
                [
                    {
                        "node": "Prompt Output",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "SetPrompt": {
            "main": [
                [
                    {
                        "node": "Check All Prompt Vars Present",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Extract from File": {
            "main": [
                [
                    {
                        "node": "SetPrompt",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Ollama Chat Model": {
            "ai_languageModel": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_languageModel",
                        "index": 0
                    }
                ]
            ]
        },
        "replace variables": {
            "main": [
                [
                    {
                        "node": "Set Completed Prompt",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Set Completed Prompt": {
            "main": [
                [
                    {
                        "node": "AI Agent",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Check All Prompt Vars Present": {
            "main": [
                [
                    {
                        "node": "If",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "When clicking \u2018Test workflow\u2019": {
            "main": [
                [
                    {
                        "node": "setVars",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Wait Filter Create Webhook
View
Openweathermap Webhook Create Webhook
View
GoogleCalendar GoogleSheets Create Triggered
View
Generate 360° Virtual Try-on Videos for Clothing with Kling API
View
Remote IOT Sensor monitoring via MQTT and InfluxDB
View
Create an Onfleet task when a file in Google Drive is updated
View
Limit Code Automation Scheduled
View
Code Microsoftoutlook Create Webhook
View
Splitout Code Create Scheduled
View
OpenAI Assistant for Hubspot Chat
View