This workflow corresponds to n8n.io template #8162 — we link there as the canonical source.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "zVk8lAovJaOKMXFR",
"name": "Daily Weather Reports with OpenWeatherMap and Telegram Bot",
"tags": [],
"nodes": [
{
"id": "b707258f-7424-4199-887b-20cd21728102",
"name": "Workflow Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
-352
],
"parameters": {
"width": 300,
"height": 392,
"content": "## \ud83e\udd16 Automated Weather Bot\n\n**This workflow:**\n1. Triggers on schedule (daily)\n2. Fetches weather from OpenWeatherMap\n3. Formats data with emojis\n4. Sends to Telegram chat\n\n**Setup needed:**\n- OpenWeatherMap API key\n- Telegram bot token\n- Your chat ID"
},
"typeVersion": 1
},
{
"id": "f55bdbef-30ef-4759-815c-8168bbb0d6b8",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.cron",
"position": [
-624,
64
],
"parameters": {},
"typeVersion": 1
},
{
"id": "1de1ccc6-b87a-4af6-bc11-0903dc740edd",
"name": "Schedule Setup",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
224
],
"parameters": {
"width": 280,
"height": 296,
"content": "\u23f0 **SCHEDULE TRIGGER**\n\nSet when to send weather reports:\n- Default: 8:00 AM daily\n- Change cron: 0 8 * * *\n- Every 6h: 0 */6 * * *\n- Twice daily: 0 8,18 * * *"
},
"typeVersion": 1
},
{
"id": "954baa8c-530b-4bcc-bff9-00e841bdf7dd",
"name": "Get Weather",
"type": "n8n-nodes-base.openWeatherMap",
"position": [
-400,
64
],
"parameters": {
"cityName": "Kielce,PL",
"language": "en"
},
"typeVersion": 1
},
{
"id": "8aed3c70-bc04-4a27-8d1b-46ae41a38bbf",
"name": "Weather API",
"type": "n8n-nodes-base.stickyNote",
"position": [
-496,
224
],
"parameters": {
"width": 248,
"height": 296,
"content": "\ud83c\udf24\ufe0f **WEATHER DATA**\n\n**Required:**\n- OpenWeatherMap credentials\n- Change city: \"YourCity,CountryCode\"\n- Language: en, es, fr, de, pl\n\n**Gets:** temp, humidity, wind, etc."
},
"typeVersion": 1
},
{
"id": "124a7ab9-52a1-4e4c-8735-787bb27083b5",
"name": "Format Weather",
"type": "n8n-nodes-base.function",
"position": [
-176,
64
],
"parameters": {
"functionCode": "const weather = items[0].json;\n\nfunction formatTime(timestamp, timezoneOffset) {\n const date = new Date((timestamp + timezoneOffset) * 1000);\n return date.toISOString().substr(11, 5);\n}\n\nconst city = weather.name;\nconst temp = weather.main.temp.toFixed(1);\nconst tempMin = weather.main.temp_min.toFixed(1);\nconst tempMax = weather.main.temp_max.toFixed(1);\nconst feelsLike = weather.main.feels_like.toFixed(1);\nconst description = weather.weather[0].description;\nconst rain = weather.rain ? weather.rain[\"1h\"] : 0;\nconst windSpeed = weather.wind.speed.toFixed(1);\nconst windDeg = weather.wind.deg;\nconst clouds = weather.clouds.all;\nconst sunrise = formatTime(weather.sys.sunrise, weather.timezone);\nconst sunset = formatTime(weather.sys.sunset, weather.timezone);\n\nconst message = `Weather in ${city}:\n\ud83c\udf21 Temperature: ${temp}\u00b0C (feels like: ${feelsLike}\u00b0C)\n\ud83d\udcc9 Min: ${tempMin}\u00b0C, \ud83d\udcc8 Max: ${tempMax}\u00b0C\n\ud83c\udf27 Precipitation: ${description}, ${rain} mm in the last hour\n\ud83d\udca8 Wind: ${windSpeed} m/s, direction ${windDeg}\u00b0\n\u2601\ufe0f Cloudiness: ${clouds}%\n\ud83c\udf05 Sunrise: ${sunrise}\n\ud83c\udf07 Sunset: ${sunset}`;\n\nreturn [{ json: { message } }];"
},
"typeVersion": 1
},
{
"id": "86c09047-c113-40ca-a606-0225b8ad19f2",
"name": "Message Formatting",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
232
],
"parameters": {
"width": 200,
"height": 288,
"content": "\ud83d\udcdd **FORMAT MESSAGE**\n\n**Converts raw data to:**\n- Human-readable text\n- Emojis for visual appeal\n- Organized layout\n- Local time zones\n\n**Customize:** Edit the message template in function code"
},
"typeVersion": 1
},
{
"id": "494899d5-16e9-44a4-acf9-190087e14bee",
"name": "Send a text message",
"type": "n8n-nodes-base.telegram",
"position": [
64,
64
],
"parameters": {
"text": "={{ $json.message }}",
"chatId": "XXXXXXX",
"additionalFields": {}
},
"typeVersion": 1.2
},
{
"id": "3c32825f-b4c7-4b52-938f-8a158be368aa",
"name": "Telegram Delivery",
"type": "n8n-nodes-base.stickyNote",
"position": [
16,
224
],
"parameters": {
"width": 200,
"height": 296,
"content": "\ud83d\udcf1 **SEND TO TELEGRAM**\n\n**Required setup:**\n1. Create bot via @BotFather\n2. Get bot token\n3. Get your chat ID\n4. Replace XXXXXXX with your chat ID\n\n**Result:** Weather report in your chat!"
},
"typeVersion": 1
},
{
"id": "98652765-0a26-42ea-8773-32431f9e7fbb",
"name": "Quick Start Guide",
"type": "n8n-nodes-base.stickyNote",
"position": [
-352,
-336
],
"parameters": {
"width": 350,
"height": 340,
"content": "\ud83d\ude80 **QUICK START:**\n\n1. **Get OpenWeatherMap API key** (free at openweathermap.org)\n2. **Create Telegram bot** (message @BotFather)\n3. **Find your chat ID** (send message to bot, visit api URL)\n4. **Configure nodes** (add credentials, update chat ID)\n5. **Test workflow** (click test button)\n6. **Activate** (toggle switch ON)\n\n\u2705 Done! You'll get daily weather reports!"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "58aba6a0-c288-45c6-80c0-e1a9f66b21b7",
"connections": {
"Get Weather": {
"main": [
[
{
"node": "Format Weather",
"type": "main",
"index": 0
}
]
]
},
"Format Weather": {
"main": [
[
{
"node": "Send a text message",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get Weather",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Get automated weather updates delivered directly to your Telegram chat at scheduled intervals. This workflow fetches current weather data from OpenWeatherMap and sends formatted weather reports via a Telegram bot. Daily morning weather briefings Regular weather monitoring for…
Source: https://n8n.io/workflows/8162/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This little bot wakes up, checks the weather for you, and builds a super simple summary of your day.
Solo founders and spreadsheet gremlins who track everything in Notion and want crisp Telegram pings without opening a single page.
A robust workflow to back up and synchronize your n8n workflows to a GitHub repository, with intelligent change detection and support for file renames.
With the increasing popularity of stablecoins like USDC, its becoming easier to pay for everyday items with crypto thanks to debit cards from issuers like MetaMask. These solutions work by processing
This workflow continuously monitors the TikTok Ads Library for new creatives from specific advertisers or keyword searches, scrapes them via Apify, logs them into Google Sheets, and sends concise noti