AutomationFlowsAI & RAG › Recipes Ingredients

Recipes Ingredients

recipes-ingredients. Uses googleSheets, agent, lmChatOpenRouter, outputParserStructured. Event-driven trigger; 11 nodes.

Event trigger★★★★☆ complexityAI-powered11 nodesGoogle SheetsAgentOpenRouter ChatOutput Parser Structured
AI & RAG Trigger: Event Nodes: 11 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → Google Sheets 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 →

Download .json
{
  "name": "recipes-ingredients",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -3680,
        304
      ],
      "id": "a0f59788-89d8-4b24-8573-885e97a99513",
      "name": "When clicking \u2018Execute workflow\u2019"
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8",
          "mode": "list",
          "cachedResultName": "ingredients",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sayfa1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8/edit#gid=0"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        -3040,
        304
      ],
      "id": "cdbdbd7d-96ec-4772-9b95-58c448d272c1",
      "name": "Get row(s) in sheet",
      "retryOnFail": false,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        -2256,
        304
      ],
      "id": "699fdef4-8055-4d05-9ded-ccd3d5b78e2d",
      "name": "Loop Over Items"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=\u00dcr\u00fcn ad\u0131: {{ $('If').item.json.Name }}\n\nG\u00f6rev: Yukar\u0131daki kurallara g\u00f6re bu \u00fcr\u00fcn i\u00e7in JSON \u00fcret.",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "Sen bir i\u00e7erik \u00fcretim ajan\u0131s\u0131n. \u00c7IKTI FORMATIN KES\u0130NL\u0130KLE YALNIZCA GE\u00c7ERL\u0130 JSON OLMALIDIR.\nMarkdown, kod blo\u011fu, a\u00e7\u0131klama, ek metin YOK.\n\nG\u00f6rev: Verilen \u00fcr\u00fcn i\u00e7in T\u00fcrk\u00e7e bir ba\u015fl\u0131k, a\u00e7\u0131klama ve anahtar kelimeler \u00fcret.\n\nJSON \u015eEMASI (zorunlu):\n{\n  \"title\": \"string, 50-60 karakter\",\n  \"description\": \"string, 140-150 karakter\",\n  \"keywords\": [\"string\", \"string\", \"string\", ...] // 5 ila 7 kelime\n}\n\nKurallar:\n- Sadece {\"title\": \"...\", \"description\": \"...\", \"keywords\": [...]} anahtarlar\u0131n\u0131 d\u00f6nd\u00fcr.\n- Ba\u015fl\u0131k (title) YALNIZCA \u00fcr\u00fcn ad\u0131 + varsa bilimsel ad\u0131 parantez i\u00e7inde olmal\u0131d\u0131r.\n  Ba\u015fl\u0131kta ba\u015fka s\u0131fat, a\u00e7\u0131klama, slogan, ek bilgi, noktalama veya tire (-) kullan\u0131lamaz.\n  \u2705 \u00d6rnek do\u011fru: \"Domates (Solanum lycopersicum)\"\n  \u274c Yanl\u0131\u015f: \"Domates (Solanum lycopersicum) - K\u0131rm\u0131z\u0131 ve Lezzetli Sebze\"\n- A\u00e7\u0131klama tek sat\u0131r olmal\u0131, dolgu s\u00f6zc\u00fck yok.\n- Keywords T\u00fcrk\u00e7e, sebze ile do\u011frudan ilgili 5\u20137 kelime olmal\u0131.\n- Uzunluk kurallar\u0131n\u0131 kat\u0131 uygula.\n- JSON d\u0131\u015f\u0131na \u00e7\u0131kma, yorum ekleme, fazladan alan ekleme.\n\n\u00c7\u0131kt\u0131 \u00f6rne\u011fi:\n{\n  \"title\":\"Domates (Solanum lycopersicum)\",\n  \"description\":\"Domates, k\u0131rm\u0131z\u0131 rengi ve etli dokusuyla \u00f6ne \u00e7\u0131kar; likopen, C ve K vitamini i\u00e7erir. Salata ve soslarda do\u011fal tat ve besleyici de\u011fer sunar.\",\n  \"keywords\":[\"domates\",\"sebze\",\"likopen\",\"salata\",\"sos\",\"k\u0131rm\u0131z\u0131\",\"besleyici\"]\n}\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.2,
      "position": [
        -864,
        304
      ],
      "id": "9225e3af-f5d2-4e60-9c3a-334a7e293504",
      "name": "AI Agent1",
      "retryOnFail": true,
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {
        "model": "openai/gpt-4.1",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        -864,
        560
      ],
      "id": "8e43f1a5-39dd-4246-b7a1-27fa4af4fb32",
      "name": "OpenRouter Chat Model1",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"keywords\": [\"string\"]\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        -720,
        560
      ],
      "id": "dd5ef115-d3ab-470f-81db-304e342d1ceb",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8",
          "mode": "list",
          "cachedResultName": "ingredients",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sayfa1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Title": "={{ $json.output.title }}",
            "Description": "={{ $json.output.description }}",
            "Keywords": "={{ $json.output.keywords }}",
            "row_number": "={{ $('Get row(s) in sheet').item.json.row_number }}",
            "ProcessEndTime": "={{ new Date().toISOString() }}",
            "ProcessStatus": "COMPLETED",
            "ProcessLastUpdateTime": "={{ new Date().toISOString() }}",
            "ProcessCurrentStage": "AI",
            "Status": "1"
          },
          "matchingColumns": [
            "row_number"
          ],
          "schema": [
            {
              "id": "Order",
              "displayName": "Order",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Name",
              "displayName": "Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Title",
              "displayName": "Title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Description",
              "displayName": "Description",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Keywords",
              "displayName": "Keywords",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessStartTime",
              "displayName": "ProcessStartTime",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "ProcessLastUpdateTime",
              "displayName": "ProcessLastUpdateTime",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessEndTime",
              "displayName": "ProcessEndTime",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessCurrentStage",
              "displayName": "ProcessCurrentStage",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessStatus",
              "displayName": "ProcessStatus",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessErrorDetails",
              "displayName": "ProcessErrorDetails",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        -240,
        288
      ],
      "id": "f35855a2-79cb-4ea5-8a23-9422aac3fd6f",
      "name": "Update row in sheet",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8",
          "mode": "list",
          "cachedResultName": "ingredients",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sayfa1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Status": "-1",
            "row_number": "={{ $('Loop Over Items').item.json.row_number }}",
            "ProcessLastUpdateTime": "={{ new Date().toISOString() }}",
            "ProcessEndTime": "={{ new Date().toISOString() }}",
            "ProcessCurrentStage": "AI",
            "ProcessStatus": "ERROR"
          },
          "matchingColumns": [
            "row_number"
          ],
          "schema": [
            {
              "id": "Order",
              "displayName": "Order",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Name",
              "displayName": "Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Title",
              "displayName": "Title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Description",
              "displayName": "Description",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Keywords",
              "displayName": "Keywords",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "ProcessStartTime",
              "displayName": "ProcessStartTime",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "ProcessLastUpdateTime",
              "displayName": "ProcessLastUpdateTime",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessEndTime",
              "displayName": "ProcessEndTime",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessCurrentStage",
              "displayName": "ProcessCurrentStage",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessStatus",
              "displayName": "ProcessStatus",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessErrorDetails",
              "displayName": "ProcessErrorDetails",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        -224,
        912
      ],
      "id": "93ca896a-6c1d-458e-a729-899bac99b542",
      "name": "Update row in sheet1",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "b61fcdb2-ac30-43ce-ba81-1e8057b3ae2f",
              "leftValue": "={{ $json._shouldContinue }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        -1408,
        -16
      ],
      "id": "1d2644e4-2073-4678-8d68-962efde505b1",
      "name": "If"
    },
    {
      "parameters": {
        "jsCode": "// Code node\nconst items = $input.all();\n\nreturn items.map(item => {\n  const name = item.json.Name?.toString() || '';\n  const status = item.json.Status?.toString() || '';\n  \n  // Name bo\u015f DE\u011e\u0130L VE (Status bo\u015f VEYA -1)\n  const shouldContinue = name !== '' && (status === '' || status === '-1');\n  \n  return {\n    json: {\n      ...item.json,\n      _shouldContinue: shouldContinue\n    }\n  };\n});"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -1792,
        320
      ],
      "id": "2a6a3320-e4ee-47cd-9c89-3097028205d9",
      "name": "Code in JavaScript"
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8",
          "mode": "list",
          "cachedResultName": "ingredients",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sayfa1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1gyQ9yWDir-WXZ-nDJhBFutzsHDuNIGbUUR6jhGreIB8/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "ProcessCurrentStage": "FIELD",
            "ProcessStatus": "COMPLETED",
            "row_number": "={{ $json.row_number }}",
            "ProcessLastUpdateTime": "={{ new Date().toISOString() }}",
            "ProcessStartTime": "={{ new Date().toISOString() }}"
          },
          "matchingColumns": [
            "row_number"
          ],
          "schema": [
            {
              "id": "Order",
              "displayName": "Order",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Name",
              "displayName": "Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Title",
              "displayName": "Title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Description",
              "displayName": "Description",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Keywords",
              "displayName": "Keywords",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "ProcessStartTime",
              "displayName": "ProcessStartTime",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessLastUpdateTime",
              "displayName": "ProcessLastUpdateTime",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "ProcessEndTime",
              "displayName": "ProcessEndTime",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "ProcessCurrentStage",
              "displayName": "ProcessCurrentStage",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "ProcessStatus",
              "displayName": "ProcessStatus",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "ProcessErrorDetails",
              "displayName": "ProcessErrorDetails",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        -1184,
        -224
      ],
      "id": "b3fe65d2-2adf-42a4-a073-7cf87264cb4f",
      "name": "Update row in sheet3",
      "retryOnFail": false,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent1": {
      "main": [
        [
          {
            "node": "Update row in sheet",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update row in sheet1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "Update row in sheet3",
            "type": "main",
            "index": 0
          },
          {
            "node": "AI Agent1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "33f06b98-ac9b-4966-9e53-8faa97587a49",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "j3WeD0aRJkzn2glV",
  "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

recipes-ingredients. Uses googleSheets, agent, lmChatOpenRouter, outputParserStructured. Event-driven trigger; 11 nodes.

Source: https://github.com/kenangundogan/n8n-workflow-automation/blob/a39dbb97f16bbfdc34ad6d19255abef4e163f59b/workflows/recipes-ingredients.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow transforms your Telegram bot into an intelligent creative assistant. It can chat conversationally, fetch trending image prompts from PromptHero for inspiration, or perform a deep "remix"

Telegram Trigger, Output Parser Structured, Telegram +6
AI & RAG

🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.

Output Parser Structured, HTTP Request, OpenAI +10
AI & RAG

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Output Parser Structured, Telegram, N8N Nodes Tesseractjs +14
AI & RAG

YouTube Strategist. Uses formTrigger, splitOut, splitInBatches, agent. Event-driven trigger; 50 nodes.

Form Trigger, Agent, OpenRouter Chat +5
AI & RAG

This advanced multi-phase n8n workflow automates the complete research, analysis, and ideation pipeline for a YouTube strategist. It scrapes competitor channels, analyzes top-performing titles and thu

Form Trigger, Agent, OpenRouter Chat +5