{"nodes":[{"name":"Cron","type":"n8n-nodes-base.cron","position":[440,440],"parameters":{"triggerTimes":{"item":[{}]}},"typeVersion":1,"id":"node-c19887e3"},{"name":"Airtable2","type":"n8n-nodes-base.airtable","notes":"Grab our list of chats from Airtable to send a random recipe","position":[660,440],"parameters":{"table":"Table 1","operation":"list","application":"your_sheet_id","additionalOptions":{}},"credentials":{"airtableApi":{"id":"{{ $credentials.airtableApi.id }}","name":"Airtable account"}},"notesInFlow":true,"typeVersion":1,"id":"node-d51d5ed0"},{"name":"Set","type":"n8n-nodes-base.set","position":[860,600],"parameters":{"values":{"number":[{"name":"chatid","value":"={{$node[\"Airtable2\"].json[\"fields\"][\"chatid\"]}}"}],"string":[]},"options":{}},"typeVersion":1,"id":"node-d5dd8b47"},{"name":"Recipe Photo","type":"n8n-nodes-base.telegram","position":[1240,440],"parameters":{"file":"={{$node[\"Get recipes from API\"].json[\"recipes\"][0][\"image\"]}}","chatId":"={{$node[\"Set\"].json[\"chatid\"]}}","operation":"sendPhoto","additionalFields":{}},"credentials":{"telegramApi":{"id":"{{ $credentials.telegramApi.id }}","name":"Telegram account"}},"typeVersion":1,"continueOnFail":true,"id":"node-ae5be3e9"},{"name":"Recipe URL","type":"n8n-nodes-base.telegram","position":[1420,440],"parameters":{"text":"=\n{{$node[\"Get recipes from API\"].json[\"recipes\"][0][\"title\"]}}\n\n{{$node[\"Get recipes from API\"].json[\"recipes\"][0][\"sourceUrl\"]}}","chatId":"={{$node[\"Set\"].json[\"chatid\"]}}","additionalFields":{}},"credentials":{"telegramApi":{"id":"{{ $credentials.telegramApi.id }}","name":"Telegram account"}},"typeVersion":1,"continueOnFail":true,"id":"node-77408ef9"},{"name":"IF","type":"n8n-nodes-base.if","notes":"If the chat ID isn't in our airtable, we add it. This is to send a new recipe daily. ","position":[860,-80],"parameters":{"conditions":{"number":[],"string":[{"value1":"= {{$node[\"Airtable1\"].parameter[\"fields\"][1]}}","value2":"= {{$node[\"Airtable1\"].parameter[\"fields\"][0]}}","operation":"notEqual"}],"boolean":[]}},"notesInFlow":true,"typeVersion":1,"id":"node-c4937b88"},{"name":"Airtable","type":"n8n-nodes-base.airtable","position":[620,-80],"parameters":{"table":"Table 1","operation":"list","application":"your_sheet_id","additionalOptions":{}},"credentials":{"airtableApi":{"id":"{{ $credentials.airtableApi.id }}","name":"Airtable account"}},"typeVersion":1,"id":"node-ab550197"},{"name":"Airtable1","type":"n8n-nodes-base.airtable","position":[1340,-100],"parameters":{"table":"Table 1","fields":["chatid","={{$node[\"Telegram Trigger - people join bot\"].json[\"message\"][\"chat\"][\"id\"]}}","Name","={{$node[\"Telegram Trigger - people join bot\"].json[\"message\"][\"from\"][\"first_name\"]}}"],"options":{},"operation":"append","application":"your_sheet_id","addAllFields":false},"credentials":{"airtableApi":{"id":"{{ $credentials.airtableApi.id }}","name":"Airtable account"}},"typeVersion":1,"id":"node-5faf12a0"},{"name":"Telegram Recipe Image","type":"n8n-nodes-base.telegram","position":[980,180],"parameters":{"file":"={{$node[\"Get recipes\"].json[\"recipes\"][0][\"image\"]}}","chatId":"={{$node[\"Telegram Trigger - people join bot\"].json[\"message\"][\"chat\"][\"id\"]}}","operation":"sendPhoto","additionalFields":{}},"credentials":{"telegramApi":{"id":"{{ $credentials.telegramApi.id }}","name":"Telegram account"}},"typeVersion":1,"id":"node-a8fb1bab"},{"name":"Telegram Recipe URL","type":"n8n-nodes-base.telegram","position":[1180,180],"parameters":{"text":"=\n{{$node[\"Get recipes\"].json[\"recipes\"][0][\"title\"]}}\n\n{{$node[\"Get recipes\"].json[\"recipes\"][0][\"sourceUrl\"]}}","chatId":"={{$node[\"Telegram Trigger - people join bot\"].json[\"message\"][\"chat\"][\"id\"]}}","additionalFields":{}},"credentials":{"telegramApi":{"id":"{{ $credentials.telegramApi.id }}","name":"Telegram account"}},"typeVersion":1,"id":"node-7d7a84a2"},{"name":"Set1","type":"n8n-nodes-base.set","position":[1120,-100],"parameters":{"values":{"string":[{"name":"chatid","value":"={{$node[\"Telegram Trigger - people join bot\"].json[\"message\"][\"chat\"][\"id\"]}}"},{"name":"Name","value":"={{$node[\"Telegram Trigger - people join bot\"].json[\"message\"][\"from\"][\"first_name\"]}}"}]},"options":{}},"typeVersion":1,"id":"node-2a929885"},{"name":"Get recipes from API","type":"n8n-nodes-base.httpRequest","notes":"https://spoonacular.com/food-api/docs","position":[1080,440],"parameters":{"url":"{{ $env.BASE_URL }}","options":{"fullResponse":false},"queryParametersUi":{"parameter":[]}},"typeVersion":1,"id":"node-c960a1bc"},{"name":"Get recipes","type":"n8n-nodes-base.httpRequest","notes":"https://spoonacular.com/food-api/docs","position":[800,180],"parameters":{"url":"{{ $env.BASE_URL }}","options":{"fullResponse":false},"queryParametersUi":{"parameter":[]}},"typeVersion":1,"id":"node-335ceb1e"},{"name":"Telegram Trigger - people join bot","type":"n8n-nodes-base.telegramTrigger","position":[420,140],"webhookId":"your_bot_id","parameters":{"updates":["message"],"additionalFields":{}},"credentials":{"telegramApi":{"id":"{{ $credentials.telegramApi.id }}","name":"Telegram account"}},"typeVersion":1,"id":"node-db59182e"},{"name":"Telegram - Welcome Message","type":"n8n-nodes-base.telegram","position":[620,180],"parameters":{"text":"=Welcome! This bot will send you one vegan recipe a day. Here is your first recipe!","chatId":"={{$node[\"Telegram Trigger - people join bot\"].json[\"message\"][\"chat\"][\"id\"]}}","additionalFields":{}},"credentials":{"telegramApi":{"id":"{{ $credentials.telegramApi.id }}","name":"Telegram account"}},"typeVersion":1,"id":"node-ee6931fe"},{"id":"error-621ac5b4","name":"Error Handler","type":"n8n-nodes-base.stopAndError","typeVersion":1,"position":[1000,400],"parameters":{"message":"Workflow execution error","options":{}}}],"connections":{},"name":"Production Workflow","settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3},"meta":{"instanceId":"workflow-b186bf9b","versionId":"1.0.0","createdAt":"2025-09-29T07:07:45.674290","updatedAt":"2025-09-29T07:07:45.674306","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"description":"Production-ready workflow: Production Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}