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 Trigger",
"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スプレッドシートを使ってWebサイトツール分析を自動化
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で表示 →
このワークフローを共有