Telegram AI 요리 레시피 생성기(이미지나 텍스트에서)
고급
이것은자동화 워크플로우로, 16개의 노드를 포함합니다.주로 If, Set, Telegram, Agent, TelegramTrigger 등의 노드를 사용하며. GPT-4 Vision과 Telegram을 사용하여 냉장고 사진에서 요리 생성
사전 요구사항
- •Telegram Bot Token
카테고리
-
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "t0pM31b82LN8h8EX",
"meta": {
"instanceId": "15d6057a37b8367f33882dd60593ee5f6cc0c59310ff1dc66b626d726083b48d",
"templateCredsSetupCompleted": true
},
"name": "AI Recipe Generator for Telegram (from Image or Text)",
"tags": [],
"nodes": [
{
"id": "if_node_001",
"name": "입력 유형 확인",
"type": "n8n-nodes-base.if",
"position": [
400,
-16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition_001",
"operator": {
"type": "string",
"operation": "notExists",
"singleValue": true
},
"leftValue": "={{ $json.message.text }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "ai_agent_vision_001",
"name": "AI Vision Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
704,
-128
],
"parameters": {
"text": "=Please analyze this food image and identify all visible ingredients. List them clearly.\n\nImage URL: {{ $json.body.events[0].message.id }}",
"options": {
"systemMessage": "=You are a food ingredient identification expert. Analyze food images and identify all visible ingredients accurately. Return a structured list of ingredients."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2
},
{
"id": "openai_vision_model_001",
"name": "OpenAI Vision Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
672,
16
],
"parameters": {
"model": "openai/gpt-4-vision-preview",
"options": {
"temperature": 0.3
}
},
"credentials": {
"openRouterApi": {
"id": "D1q69WNrqGh2Tmie",
"name": "OpenRouter 使える"
}
},
"typeVersion": 1
},
{
"id": "output_parser_001",
"name": "재료 파서",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
896,
16
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"ingredients\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"List of identified ingredients\"\n }\n },\n \"required\": [\"ingredients\"]\n}"
},
"typeVersion": 1.2
},
{
"id": "set_ingredients_001",
"name": "재료 형식화",
"type": "n8n-nodes-base.set",
"position": [
1088,
-128
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "assignment_001",
"name": "ingredients_text",
"type": "string",
"value": "={{ $json.output.ingredients.join(', ') }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "set_text_ingredients_001",
"name": "텍스트 재료 가져오기",
"type": "n8n-nodes-base.set",
"position": [
688,
144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "assignment_002",
"name": "ingredients_text",
"type": "string",
"value": "={{ $json.message.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "recipe_generator_001",
"name": "레시피 생성기",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1264,
144
],
"parameters": {
"text": "=Based on these ingredients: {{ $json.ingredients_text }}\n\nPlease suggest 3 delicious recipes that can be made with these ingredients. Consider both Japanese and international cuisine options. Text is Japanese.",
"options": {
"systemMessage": "You are a professional chef and recipe expert. Create detailed, easy-to-follow recipes based on available ingredients. Include both traditional Japanese dishes and international cuisine. Always provide cooking time, difficulty level, and step-by-step instructions."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2
},
{
"id": "openai_recipe_model_001",
"name": "OpenAI Recipe Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
1264,
320
],
"parameters": {
"model": "openai/gpt-4o-mini",
"options": {
"temperature": 0.7
}
},
"credentials": {
"openRouterApi": {
"id": "D1q69WNrqGh2Tmie",
"name": "OpenRouter 使える"
}
},
"typeVersion": 1
},
{
"id": "recipe_parser_001",
"name": "레시피 파서",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1456,
320
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"recipes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Recipe name\"\n },\n \"cuisine\": {\n \"type\": \"string\",\n \"description\": \"Cuisine type (e.g., Japanese, Italian)\"\n },\n \"difficulty\": {\n \"type\": \"string\",\n \"description\": \"Difficulty level (Easy, Medium, Hard)\"\n },\n \"cookingTime\": {\n \"type\": \"string\",\n \"description\": \"Total cooking time\"\n },\n \"servings\": {\n \"type\": \"number\",\n \"description\": \"Number of servings\"\n },\n \"ingredients\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Full ingredient list with quantities\"\n },\n \"instructions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Step-by-step cooking instructions\"\n }\n },\n \"required\": [\"name\", \"cuisine\", \"difficulty\", \"cookingTime\", \"servings\", \"ingredients\", \"instructions\"]\n },\n \"description\": \"Array of recipe suggestions\"\n }\n },\n \"required\": [\"recipes\"]\n}"
},
"typeVersion": 1.2
},
{
"id": "format_response_001",
"name": "응답 형식화",
"type": "n8n-nodes-base.set",
"position": [
1680,
144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "response_004",
"name": "message",
"type": "string",
"value": "={{\n(() => {\n return $json.output.recipes.map((r, index) => {\n return (\n `📖 レシピ${index + 1}:${r.name}\\n` +\n `🌐 ジャンル:${r.cuisine}\\n` +\n `⏱ 調理時間:${r.cookingTime}\\n` +\n `🎚 難易度:${r.difficulty}\\n` +\n `👥 目安人数:${r.servings}人分\\n\\n` +\n `🛒 材料:\\n${r.ingredients.map(i => `- ${i}`).join(\"\\n\")}\\n\\n` +\n `👣 手順:\\n${r.instructions.map((step, i) => `${i + 1}. ${step}`).join(\"\\n\")}`\n );\n }).join(\"\\n\\n------------------------\\n\\n\");\n})()\n}}\n"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "684b387e-b22d-47a2-8db3-5367850fa33d",
"name": "Telegram 트리거",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
176,
-16
],
"webhookId": "76cdce48-d78e-40cd-b034-a0cf3ed053be",
"parameters": {
"updates": [
"message"
],
"additionalFields": {
"download": true
}
},
"credentials": {
"telegramApi": {
"id": "Ikb8BOl71y5C8wqu",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "812b9b19-c320-4a6b-a28f-7bf80a7863bd",
"name": "텍스트 메시지 전송",
"type": "n8n-nodes-base.telegram",
"position": [
1872,
144
],
"webhookId": "fc292b17-c612-4a76-9ad7-c4e1f62cb6e5",
"parameters": {
"text": "={{ $json.message }}",
"chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "Ikb8BOl71y5C8wqu",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "a9e0f1b2-c3d4-e5f6-a7b8-c9d0e1f2a3b4",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
-320
],
"parameters": {
"color": 6,
"width": 500,
"height": 260,
"content": "### Phase 1: User Input via Telegram\n\n- **Telegram Trigger**: Starts the workflow when a user sends a message or image.\n\n- **Check Input Type**: This crucial IF node checks if the message contains text. If not, it assumes an image was sent and routes the flow to the Vision AI path. This allows the workflow to handle both input types."
},
"typeVersion": 1
},
{
"id": "b1c2d3e4-f5a6-b7c8-d9e0-f1a2b3c4d5e6",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
-448
],
"parameters": {
"color": 3,
"width": 500,
"height": 380,
"content": "### Phase 2: Ingredient Extraction (Dual Path)\nThis section's goal is to create a standardized list of ingredients for the next phase.\n\n- **Image Path (Top)**: The `AI Vision Agent` analyzes the photo to identify ingredients. The `Ingredient Parser` then structures this into a clean list, and `Format Ingredients` converts it to a comma-separated string.\n\n- **Text Path (Bottom)**: The `Get Text Ingredients` node simply takes the user's text directly."
},
"typeVersion": 1
},
{
"id": "c3d4e5f6-a7b8-c9d0-e1f2-a3b4c5d6e7f8",
"name": "스티커 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1216,
-192
],
"parameters": {
"color": 5,
"width": 500,
"height": 360,
"content": "### Phase 3: AI Recipe Generation\n\n- **Recipe Generator**: This is the main creative AI. It takes the standardized ingredient list (from either path) and acts as a professional chef to generate 3 detailed recipes.\n\n- **Recipe Parser**: This is critical for reliability. It forces the AI's creative output into a structured JSON format (name, difficulty, instructions, etc.). This ensures the data is clean and predictable for the final formatting step."
},
"typeVersion": 1
},
{
"id": "d5e6f7a8-b9c0-d1e2-f3a4-b5c6d7e8f9a0",
"name": "스티커 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1648,
-128
],
"parameters": {
"color": 4,
"width": 500,
"height": 280,
"content": "### Phase 4: Format & Send Response\n\n- **Format Response**: This node uses a JavaScript expression to transform the structured recipe JSON from the parser into a beautiful, emoji-rich, and easy-to-read message for the user.\n\n- **Send a text message**: The final, formatted text is sent back to the user on Telegram."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"timezone": "Asia/Tokyo",
"errorWorkflow": "",
"executionOrder": "v1",
"saveManualExecutions": true,
"saveExecutionProgress": true,
"saveDataErrorExecution": "all",
"saveDataSuccessExecution": "all"
},
"versionId": "30c406be-b5d8-4ba8-873f-8ae990fdbcb9",
"connections": {
"recipe_parser_001": {
"ai_outputParser": [
[
{
"node": "recipe_generator_001",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"ai_agent_vision_001": {
"main": [
[
{
"node": "set_ingredients_001",
"type": "main",
"index": 0
}
]
]
},
"format_response_001": {
"main": [
[
{
"node": "812b9b19-c320-4a6b-a28f-7bf80a7863bd",
"type": "main",
"index": 0
}
]
]
},
"if_node_001": {
"main": [
[
{
"node": "ai_agent_vision_001",
"type": "main",
"index": 0
}
],
[
{
"node": "set_text_ingredients_001",
"type": "main",
"index": 0
}
]
]
},
"recipe_generator_001": {
"main": [
[
{
"node": "format_response_001",
"type": "main",
"index": 0
}
]
]
},
"684b387e-b22d-47a2-8db3-5367850fa33d": {
"main": [
[
{
"node": "if_node_001",
"type": "main",
"index": 0
}
]
]
},
"output_parser_001": {
"ai_outputParser": [
[
{
"node": "ai_agent_vision_001",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"set_ingredients_001": {
"main": [
[
{
"node": "recipe_generator_001",
"type": "main",
"index": 0
}
]
]
},
"openai_recipe_model_001": {
"ai_languageModel": [
[
{
"node": "recipe_generator_001",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"openai_vision_model_001": {
"ai_languageModel": [
[
{
"node": "ai_agent_vision_001",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"set_text_ingredients_001": {
"main": [
[
{
"node": "recipe_generator_001",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
AI, Apify 및 Telegram 통합을 사용한 도구 평가 자동화
Telegram, Apify, AI 및 Google Sheets를 사용한 웹사이트 도구 분석 자동화
If
Set
Code
+
If
Set
Code
20 노드Mirza Ajmal
AI 요약
LinkedIn 및 X 바이럴 콘텐츠 자동 엔진
사용AI생성및게시자동생성LinkedIn및X의病毒콘텐츠
If
Set
Wait
+
If
Set
Wait
156 노드Diptamoy Barman
콘텐츠 제작
주식 분석 템플릿
기술 분석, AI, Telegram을 결합하여 주식 시장 통찰력 생성
If
Set
Code
+
If
Set
Code
25 노드Sergey Skorobogatov
암호화폐 거래
자동화 X(Twitter) 콘텐츠 엔진
AI 기반 X(Twitter) 콘텐츠 생성 및 스케줄링(LangChain 및 Blotato)
If
Code
Gmail
+
If
Code
Gmail
24 노드YUSUKE YAMAMOTO
AI 자동화 및 에이전트 구축 및 판매
构建与판매AI자동화与스마트体
If
Set
Wait
+
If
Set
Wait
74 노드NICKYAI
기타
Tesseract - 재정 도우미 X
통해Telegram사용Tesseract및Llama에서收据中추출详细信息
If
Set
Code
+
If
Set
Code
27 노드Khairul Muhtadin
금융
워크플로우 정보
난이도
고급
노드 수16
카테고리-
노드 유형8
저자
YUSUKE YAMAMOTO
@yusuke-yamamotoBusiness creator from Tokyo. Designing AI-driven automations that enhance marketing, reporting, and daily operations. I turn complex workflows into simple, elegant automations with n8n.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유