This workflow corresponds to n8n.io template #9819 — we link there as the canonical source.
This workflow follows the Google Calendar → HTTP Request recipe pattern — see all workflows that pair these two integrations.
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": "RoQ9cIHyWJOc3u8Y",
"name": "Personal Daily Morning Briefing Automation",
"tags": [],
"nodes": [
{
"id": "7dead07a-d3e8-425f-9a49-6503c8b29358",
"name": "Daily Morning Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-448,
192
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "6dab103c-bbc6-4967-a417-76c83a8c9244",
"name": "Workflow Configuration",
"type": "n8n-nodes-base.set",
"position": [
-224,
192
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-5",
"name": "rssUrl",
"type": "string",
"value": "https://news.google.com/rss?hl=ja&gl=JP&ceid=JP:ja"
},
{
"id": "id-6",
"name": "weatherApiUrl",
"type": "string",
"value": "https://wttr.in/Tokyo?format=j1"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "6da03f8b-179c-4ca0-850f-12e9e5e8c0b0",
"name": "Get Today's Calendar Events",
"type": "n8n-nodes-base.googleCalendar",
"position": [
0,
0
],
"parameters": {
"limit": 10,
"options": {},
"timeMax": "={{ $now.endOf('day') }}",
"timeMin": "={{ $now.startOf('day') }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "YOUR_CALENDAR_ACCOUNT"
},
"operation": "getAll"
},
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "cdb324a8-a60f-4afd-97d6-b0250627486f",
"name": "Get Weather Forecast",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
192
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.weatherApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "9829c6af-0e49-4580-84d0-2c963738da12",
"name": "Get Top News from RSS",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
0,
384
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.rssUrl }}",
"options": {}
},
"typeVersion": 1.2
},
{
"id": "baadb772-ec4e-48a0-8dcd-128b48753bf8",
"name": "Format Briefing Message",
"type": "n8n-nodes-base.set",
"position": [
448,
192
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "briefingMessage",
"type": "string",
"value": "=*\ud83d\udcc5 Daily Morning Briefing*\n\n*\ud83d\udcc6 \u4eca\u65e5\u306e\u4e88\u5b9a*\n{{ $('Get Today\\'s Calendar Events').all().length > 0 ? $('Get Today\\'s Calendar Events').all().map(event => '\u2022 ' + event.json.summary + ' - ' + new Date(event.json.start.dateTime).toLocaleTimeString('ja-JP', { hour: '2-digit', minute: '2-digit' })).join('\\n') : '\u4eca\u65e5\u306e\u4e88\u5b9a\u306f\u3042\u308a\u307e\u305b\u3093' }}\n\n*\ud83c\udf24\ufe0f \u5929\u6c17\u4e88\u5831*\n\u2022 {{ $('Get Weather Forecast').first().json.current_condition[0].weatherDesc[0].value }} / \u6c17\u6e29: {{ $('Get Weather Forecast').first().json.current_condition[0].temp_C }}\u00b0C\n\n*\ud83d\udcf0 \u30c8\u30c3\u30d7\u30cb\u30e5\u30fc\u30b9*\n{{ $('Get Top News from RSS').all().length > 0 ? $('Get Top News from RSS').all().slice(0, 3).map(article => '\u2022 <' + article.json.link + '|' + article.json.title + '>').join('\\n') : '\u30cb\u30e5\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093' }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "e1f10241-c557-4cf8-ba3f-6b5b4595dbf2",
"name": "Post to Slack",
"type": "n8n-nodes-base.slack",
"position": [
736,
192
],
"parameters": {
"text": "={{ $('Format Briefing Message').first().json.briefingMessage }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09M5L3UB8U",
"cachedResultName": "n8nlifework"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"typeVersion": 2.3
},
{
"id": "b38c371a-842c-4484-bf7a-1c377010321f",
"name": "Wait for All Data",
"type": "n8n-nodes-base.merge",
"position": [
224,
176
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "54d2f891-ed19-4466-9e6e-86dabcff91c5",
"name": "Template Description",
"type": "n8n-nodes-base.stickyNote",
"position": [
-976,
-80
],
"parameters": {
"width": 496,
"height": 784,
"content": "## Personal Daily Morning Briefing Automation\n\n### Who\u2019s it for\nBusy professionals who want a quick daily update combining their calendar, weather, and top news.\n\n### How it works\nEvery morning at 7 AM, this workflow gathers:\n- Today\u2019s Google Calendar events\n- Current weather for Tokyo\n- Top 3 news headlines (from Google News RSS)\nThen it formats everything into a single Slack message.\n\n### How to set up\n1. Connect your **Google Calendar** and **Slack** accounts in the Credentials section.\n2. Update `rssUrl` or `weatherApiUrl` if you want different sources.\n3. Set your Slack channel in the \"Post to Slack\" node.\n\n### Requirements\n- Google Calendar and Slack accounts\n- RSS feed and weather API (no authentication required)\n\n### How to customize\nYou can modify:\n- The trigger time (in the Schedule Trigger node)\n- City for the weather\n- RSS feed source\n- Message format in the \u201cFormat Briefing Message\u201d node"
},
"typeVersion": 1
},
{
"id": "b74c8ea3-1def-4e46-aa0c-a300cf40ee22",
"name": "Weather Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
-64
],
"parameters": {
"content": "Fetches current weather data from wttr.in (Tokyo)."
},
"typeVersion": 1
},
{
"id": "e785463c-6d68-4027-b78c-12fee710b78e",
"name": "News Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
-64
],
"parameters": {
"content": "Reads top 3 headlines from Google News RSS feed."
},
"typeVersion": 1
},
{
"id": "55af8a49-f7db-415b-a77c-7c375dc0b585",
"name": "Slack Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-64
],
"parameters": {
"content": "Sends the compiled morning briefing message to your selected Slack channel."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "22e5200b-1dab-41da-a43d-0e8bd62160ea",
"connections": {
"Wait for All Data": {
"main": [
[
{
"node": "Format Briefing Message",
"type": "main",
"index": 0
}
]
]
},
"Get Weather Forecast": {
"main": [
[
{
"node": "Wait for All Data",
"type": "main",
"index": 1
}
]
]
},
"Daily Morning Trigger": {
"main": [
[
{
"node": "Workflow Configuration",
"type": "main",
"index": 0
}
]
]
},
"Get Top News from RSS": {
"main": [
[
{
"node": "Wait for All Data",
"type": "main",
"index": 2
}
]
]
},
"Workflow Configuration": {
"main": [
[
{
"node": "Get Today's Calendar Events",
"type": "main",
"index": 0
},
{
"node": "Get Weather Forecast",
"type": "main",
"index": 0
},
{
"node": "Get Top News from RSS",
"type": "main",
"index": 0
}
]
]
},
"Format Briefing Message": {
"main": [
[
{
"node": "Post to Slack",
"type": "main",
"index": 0
}
]
]
},
"Get Today's Calendar Events": {
"main": [
[
{
"node": "Wait for All Data",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleCalendarOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Busy professionals who want a quick daily update combining their calendar, weather, and top news.
Source: https://n8n.io/workflows/9819/ — 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.
Who’s it for
This workflow is an automated employee time tracking and reporting system that monitors weekly work hours via TMetric, then delivers personalized summaries directly to each team member on Slack. It co
Import Productboard Notes Companies And Features Into Snowflake. Uses stickyNote, httpRequest, splitOut, snowflake. Scheduled trigger; 35 nodes.
Import Productboard Notes, Companies and Features into Snowflake. Uses stickyNote, httpRequest, splitOut, snowflake. Scheduled trigger; 35 nodes.
This workflow imports Productboard data into Snowflake, automating data extraction, mapping, and updates for features, companies, and notes. It supports scheduled weekly updates, data cleansing, and S