Users want daily weather updates with clean, readable formatting, automated delivery, and support for multiple cities without manual checks.
The Challenge: Raw API responses are not user-friendly. Static templates are rigid. The system needed to generate dynamic, human-like weather reports automatically for multiple cities.
Goal: Build an automated system that runs daily, fetches weather data for Kyiv and Brno, formats the text using an LLM, and sends a structured message to Telegram.
The workflow is built in n8n. It triggers daily via Cron, creates city items, merges them, and uses the Split in Batches node to process each city sequentially. It fetches data from OpenWeatherMap, passes raw JSON to GPT-4o Mini for formatting, and sends the result via Telegram.
// LLM Prompt Structure
You are a weather assistant.
Generate a concise, friendly weather report for the city.
Input Data:
- City: {{$json.city}}
- Temp: {{$json.main.temp}}°C
- Feels like: {{$json.main.feels_like}}°C
- Wind: {{$json.wind.speed}} m/s
- Humidity: {{$json.main.humidity}}%
- Description: {{$json.weather[0].description}}
Output Format:
City Emoji + Name
Temperature line
Weather description
Advice (e.g., "Take an umbrella" if rain).
Download the ready-to-use n8n workflow JSON file. Import it directly into your n8n instance.