An n8n workflow that polls Google Calendar every 15 minutes, deduplicates against an existing Notion database, classifies each new event using Gemini 2.5 Flash, and writes the result to the Diary database in Notion.
Workflow name: Google Calendar -> Notion (Diary Sync)
flowchart LR
A["Poll Every 15 Minutes"] --> B["Fetch Future Events"]
B --> C["Loop Through Events"]
C --> D["Extract Event Fields"]
D --> E["Check for Duplicate"]
E --> F{"Is New Event?"}
F -- Yes --> G["Classify Event Type"]
F -- No --> C
G --> H["Parse Classification"]
H --> I["Write to Diary"]
I --> C
| Property | Value |
|---|---|
| Type | n8n-nodes-base.scheduleTrigger v1.3 |
| Interval | Every 15 minutes |
Triggers the workflow on a fixed schedule. No input data.
| Property | Value |
|---|---|
| Type | n8n-nodes-base.googleCalendar v1.3 |
| Operation | Get All |
| Calendar | danny@blk-bx.uk |
| Time Min | Expression (current time) |
| Credential | Google Calendar OAuth2 |
Fetches all future events from the primary calendar. Returns the full Google Calendar event object for each.
| Property | Value |
|---|---|
| Type | n8n-nodes-base.splitInBatches v3 |
| Batch size | 1 (default) |
Processes events one at a time to allow per-event dedup checking and classification.