{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "3da9ae2c-8134-437b-8ada-dcbee9c7fca5",
      "name": "Route: Check for Help Command",
      "type": "n8n-nodes-base.if",
      "notes": "Checks if incoming message starts with /help command and routes accordingly",
      "position": [
        -1680,
        180
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$json[\"message\"][\"text\"]}}",
              "value2": "/help",
              "operation": "startsWith"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "70602bcc-9395-4fc6-bfbe-e6df5819e6e7",
      "name": "Response: Send Help Menu",
      "type": "n8n-nodes-base.telegram",
      "notes": "Sends formatted help message with available commands and usage examples",
      "position": [
        -1420,
        -220
      ],
      "parameters": {
        "text": "\ud83e\udd16 *Help Menu*\n\nUse `/summary <link>` to summarize an article.\nUse `/img <prompt>` to generate an image.\n\n_Example:_\n/summary https://example.com\n/img a futuristic cityscape",
        "chatId": "={{$json[\"message\"][\"chat\"][\"id\"]}}",
        "additionalFields": {
          "parse_mode": "Markdown"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "df301046-be3d-4612-aeb3-c1138968a32e",
      "name": "Route: Check for Summary Command",
      "type": "n8n-nodes-base.if",
      "notes": "Identifies /summary commands and routes them to the article summarization workflow",
      "position": [
        -1400,
        100
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$json[\"message\"][\"text\"]}}",
              "value2": "/summary",
              "operation": "startsWith"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3c0f03df-5244-48b0-a9f6-249547b4a4a1",
      "name": "Route: Check for Image Command",
      "type": "n8n-nodes-base.if",
      "notes": "Detects /img commands and routes them to the image generation workflow",
      "position": [
        -980,
        340
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$json[\"message\"][\"text\"]}}",
              "value2": "/img",
              "operation": "startsWith"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f182faa1-0171-4794-9735-3c84986754fb",
      "name": "Response: Send Article Summary",
      "type": "n8n-nodes-base.telegram",
      "notes": "Sends the AI-generated article summary back to the user via Telegram",
      "position": [
        -140,
        -80
      ],
      "parameters": {
        "text": "={{$json[\"candidates\"][0][\"content\"][\"parts\"][0][\"text\"]}}",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "additionalFields": {}
      },
      "typeVersion": 1
    },
    {
      "id": "301a03bc-50dc-46fe-b423-039f4e3ea7dd",
      "name": "Response: Send Image Generation Notice",
      "type": "n8n-nodes-base.telegram",
      "notes": "Notifies user that image generation request was processed (placeholder for actual image generation)",
      "position": [
        -20,
        280
      ],
      "parameters": {
        "text": "\ud83d\uddbc\ufe0f Generated image prompt submitted! Gemini image model doesn't return images directly. Use image generation APIs like Stability for actual image URLs.",
        "chatId": "={{$json[\"message\"][\"chat\"][\"id\"]}}",
        "additionalFields": {}
      },
      "typeVersion": 1
    },
    {
      "id": "0204de3d-cfdf-4562-927b-f65777aaaeb1",
      "name": "Trigger: Telegram Webhook",
      "type": "n8n-nodes-base.telegramTrigger",
      "notes": "Listens for incoming messages from Telegram bot and initiates the workflow",
      "position": [
        -1940,
        20
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "caba10fb-e86c-480b-ab81-c6a42976683b",
      "name": "Fetch: Download Article Content",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Downloads the HTML content from the provided URL with proper user agent headers",
      "position": [
        -1040,
        -20
      ],
      "parameters": {
        "url": "={{ $json.message.link_preview_options.url }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a61c2bd8-7b6d-4710-b453-086905aae741",
      "name": "Parse: Extract Text from HTML",
      "type": "n8n-nodes-base.html",
      "notes": "Extracts clean text content from HTML, excluding navigation elements and images",
      "position": [
        -820,
        -20
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "text",
              "cssSelector": "body",
              "skipSelectors": "svg, a"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "318cbba7-3240-44f8-be69-33738db1c97d",
      "name": "AI: Generate Article Summary",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "Uses OpenAI to create a structured summary with 10-12 bullet points from the extracted article text",
      "position": [
        -600,
        -20
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Summarize the entire content provided below into 10\u201312 concise bullet points. Ensure each point captures a unique and important aspect of the information, covering the core ideas, key facts, major findings, and essential takeaways. Avoid repetition and use clear, professional language suitable for quick understanding by a decision-maker.\n\nContent:\n {{ $json.text }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "da0dcfc6-6064-4983-801f-fd45a5034a62",
      "name": "AI: Process Image Generation Request",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "Processes image generation request using OpenAI (currently returns text response instead of actual image)",
      "position": [
        -760,
        240
      ],
      "parameters": {
        "options": {},
        "resource": "image"
      },
      "typeVersion": 1.8
    },
    {
      "id": "50af4fa8-dc8a-4ef6-82b8-f37c17919b2b",
      "name": "StickyNote",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2700,
        -360
      ],
      "parameters": {
        "width": 600,
        "height": 880,
        "content": "# \ud83e\udd16 Telegram Multi-Function Bot Workflow\n\n**Purpose:** This workflow creates a Telegram bot that handles multiple commands for article summarization and image generation.\n\n**Supported Commands:**\n- `/help` - Shows available commands and usage examples\n- `/summary <URL>` - Fetches and summarizes articles from web links\n- `/img <prompt>` - Processes image generation requests (currently placeholder)\n\n**Flow Logic:**\n1. Telegram webhook receives all messages\n2. Command routing checks message content and directs to appropriate handler\n3. Article summarization: URL \u2192 HTTP fetch \u2192 HTML parsing \u2192 AI summary \u2192 Response\n4. Image generation: Prompt processing \u2192 AI handling \u2192 Response notification\n\n**Note:** Image generation currently returns text confirmation instead of actual images. Consider integrating with Stability AI or similar services for real image generation."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Response: Send Help Menu": {
      "main": [
        [
          {
            "node": "Route: Check for Help Command",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trigger: Telegram Webhook": {
      "main": [
        [
          {
            "node": "Route: Check for Help Command",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI: Generate Article Summary": {
      "main": [
        [
          {
            "node": "Response: Send Article Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse: Extract Text from HTML": {
      "main": [
        [
          {
            "node": "AI: Generate Article Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route: Check for Help Command": {
      "main": [
        [
          {
            "node": "Response: Send Help Menu",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Route: Check for Summary Command",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route: Check for Image Command": {
      "main": [
        [
          {
            "node": "AI: Process Image Generation Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch: Download Article Content": {
      "main": [
        [
          {
            "node": "Parse: Extract Text from HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route: Check for Summary Command": {
      "main": [
        [
          {
            "node": "Fetch: Download Article Content",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Route: Check for Image Command",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI: Process Image Generation Request": {
      "main": [
        [
          {
            "node": "Response: Send Image Generation Notice",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}