calendar-automation
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCalendar Automation
日历自动化
Automate Google Calendar and Outlook workflows for meeting management, time blocking, daily digests, and cross-platform synchronization. Based on n8n workflow templates.
自动化Google Calendar和Outlook的会议管理、时间块、每日摘要以及跨平台同步工作流。基于n8n工作流模板。
Overview
概述
This skill covers:
- Meeting scheduling automation
- Time blocking strategies
- Daily calendar digests to Slack
- Meeting prep reminders
- Calendar analytics
本技能涵盖:
- 会议日程安排自动化
- 时间块管理策略
- 发送至Slack的日历每日摘要
- 会议准备提醒
- 日历分析
Core Workflows
核心工作流
1. Daily Calendar Digest to Slack
1. 每日日历摘要同步至Slack
yaml
workflow: "Morning Calendar Briefing"
schedule: "6:00 AM daily"
steps:
1. get_today_events:
calendar: primary
time_min: today_start
time_max: today_end
2. categorize_events:
categories:
meetings: has_attendees == true
focus_time: title contains "Focus" OR "Deep Work"
one_on_ones: title contains "1:1" OR "1-on-1"
interviews: title contains "Interview"
3. calculate_stats:
total_meetings: count(meetings)
total_hours: sum(duration)
free_time: 8 - total_hours
back_to_back: count(gap < 15min)
4. format_message:
template: |
☀️ *Good morning! Here's your day:*
📅 *{date}*
*Schedule Overview:*
• {total_meetings} meetings ({total_hours}h)
• {free_time}h of free time
• {back_to_back} back-to-back slots ⚠️
*Today's Events:*
{event_list}
💡 *Tip:* {daily_tip}
5. send_to_slack:
channel: "#daily-schedule" or DM
6. log_to_sheets:
spreadsheet: "Calendar Analytics"
data: [date, meetings, hours, categories]Event List Format:
• 9:00 AM - Team Standup (15m) 📞 Zoom
• 10:00 AM - 1:1 with Sarah (30m) 👥
• 11:00 AM - Focus Time (2h) 🧠
• 2:00 PM - Client Call (1h) 🤝 Google Meet
• 4:00 PM - Interview - PM Role (45m) 🎯yaml
workflow: "Morning Calendar Briefing"
schedule: "6:00 AM daily"
steps:
1. get_today_events:
calendar: primary
time_min: today_start
time_max: today_end
2. categorize_events:
categories:
meetings: has_attendees == true
focus_time: title contains "Focus" OR "Deep Work"
one_on_ones: title contains "1:1" OR "1-on-1"
interviews: title contains "Interview"
3. calculate_stats:
total_meetings: count(meetings)
total_hours: sum(duration)
free_time: 8 - total_hours
back_to_back: count(gap < 15min)
4. format_message:
template: |
☀️ *Good morning! Here's your day:*
📅 *{date}*
*Schedule Overview:*
• {total_meetings} meetings ({total_hours}h)
• {free_time}h of free time
• {back_to_back} back-to-back slots ⚠️
*Today's Events:*
{event_list}
💡 *Tip:* {daily_tip}
5. send_to_slack:
channel: "#daily-schedule" or DM
6. log_to_sheets:
spreadsheet: "Calendar Analytics"
data: [date, meetings, hours, categories]事件列表格式:
• 9:00 AM - Team Standup (15m) 📞 Zoom
• 10:00 AM - 1:1 with Sarah (30m) 👥
• 11:00 AM - Focus Time (2h) 🧠
• 2:00 PM - Client Call (1h) 🤝 Google Meet
• 4:00 PM - Interview - PM Role (45m) 🎯2. Meeting Prep Automation
2. 会议准备自动化
yaml
workflow: "Meeting Preparation"
trigger:
type: calendar_event
time: 1_hour_before_meeting
filter: has_attendees AND duration >= 30min
steps:
1. get_meeting_details:
extract: [title, attendees, description, meeting_link]
2. research_attendees:
for_each: attendee
actions:
- linkedin_lookup: get_title_company
- crm_lookup: get_past_interactions
- email_search: recent_threads
3. generate_prep_doc:
template: |
# Meeting Prep: {title}
**Time:** {start_time}
**Duration:** {duration}
**Link:** {meeting_link}
## Attendees
{attendee_profiles}
## Context
- Last interaction: {last_meeting_date}
- Open items: {open_tasks}
- Recent emails: {email_summary}
## Suggested Agenda
{ai_suggested_agenda}
## Talking Points
{ai_talking_points}
4. send_reminder:
slack_dm:
message: |
⏰ Meeting in 1 hour: *{title}*
📋 [Prep Doc]({prep_doc_link})
🔗 [Join Meeting]({meeting_link})
Quick context: {one_line_summary}yaml
workflow: "Meeting Preparation"
trigger:
type: calendar_event
time: 1_hour_before_meeting
filter: has_attendees AND duration >= 30min
steps:
1. get_meeting_details:
extract: [title, attendees, description, meeting_link]
2. research_attendees:
for_each: attendee
actions:
- linkedin_lookup: get_title_company
- crm_lookup: get_past_interactions
- email_search: recent_threads
3. generate_prep_doc:
template: |
# Meeting Prep: {title}
**Time:** {start_time}
**Duration:** {duration}
**Link:** {meeting_link}
## Attendees
{attendee_profiles}
## Context
- Last interaction: {last_meeting_date}
- Open items: {open_tasks}
- Recent emails: {email_summary}
## Suggested Agenda
{ai_suggested_agenda}
## Talking Points
{ai_talking_points}
4. send_reminder:
slack_dm:
message: |
⏰ Meeting in 1 hour: *{title}*
📋 [Prep Doc]({prep_doc_link})
🔗 [Join Meeting]({meeting_link})
Quick context: {one_line_summary}3. Smart Time Blocking
3. 智能时间块管理
yaml
workflow: "Auto Time Blocking"
schedule: "Sunday 8pm" # Plan for next week
steps:
1. analyze_calendar:
range: next_7_days
identify:
- existing_meetings
- recurring_meetings
- available_slots
2. get_priorities:
source: [todoist, asana, notion]
filter: due_this_week AND high_priority
3. allocate_focus_time:
rules:
- morning_block: 9-11am (deep work)
- afternoon_block: 2-4pm (collaborative)
- minimum_gap: 15min between meetings
- max_meetings_per_day: 5
4. create_blocks:
types:
deep_work:
duration: 2h
frequency: daily
preferred_time: 9-11am
color: blue
admin_time:
duration: 1h
frequency: daily
preferred_time: 4-5pm
color: gray
buffer:
duration: 15min
after: external_meetings
color: yellow
5. notify:
slack: "✅ Weekly time blocks created. {x} hours of focus time protected."yaml
workflow: "Auto Time Blocking"
schedule: "Sunday 8pm" # Plan for next week
steps:
1. analyze_calendar:
range: next_7_days
identify:
- existing_meetings
- recurring_meetings
- available_slots
2. get_priorities:
source: [todoist, asana, notion]
filter: due_this_week AND high_priority
3. allocate_focus_time:
rules:
- morning_block: 9-11am (deep work)
- afternoon_block: 2-4pm (collaborative)
- minimum_gap: 15min between meetings
- max_meetings_per_day: 5
4. create_blocks:
types:
deep_work:
duration: 2h
frequency: daily
preferred_time: 9-11am
color: blue
admin_time:
duration: 1h
frequency: daily
preferred_time: 4-5pm
color: gray
buffer:
duration: 15min
after: external_meetings
color: yellow
5. notify:
slack: "✅ Weekly time blocks created. {x} hours of focus time protected."4. Calendly → Calendar + CRM
4. Calendly → 日历 + CRM
yaml
workflow: "Calendly Booking Handler"
trigger:
type: calendly
event: booking_created
steps:
1. get_booking_details:
extract: [invitee, event_type, scheduled_time, answers]
2. enrich_contact:
clearbit: lookup_by_email
linkedin: get_profile
3. create_calendar_event:
google_calendar:
title: "{event_type} with {invitee_name}"
time: scheduled_time
description: |
**Booked via Calendly**
Name: {invitee_name}
Email: {invitee_email}
Company: {company}
**Pre-meeting questions:**
{calendly_answers}
attendees: [invitee_email, owner_email]
reminders: [1_day, 1_hour, 15_min]
4. update_crm:
hubspot:
create_or_update_contact:
email: invitee_email
properties:
last_meeting_booked: scheduled_time
meeting_type: event_type
create_engagement:
type: MEETING
timestamp: scheduled_time
5. send_confirmation:
email:
to: invitee_email
template: meeting_confirmation
include: [calendar_invite, prep_questions]
6. notify_slack:
channel: "#meetings"
message: "📅 New booking: {event_type} with {invitee_name} on {date}"yaml
workflow: "Calendly Booking Handler"
trigger:
type: calendly
event: booking_created
steps:
1. get_booking_details:
extract: [invitee, event_type, scheduled_time, answers]
2. enrich_contact:
clearbit: lookup_by_email
linkedin: get_profile
3. create_calendar_event:
google_calendar:
title: "{event_type} with {invitee_name}"
time: scheduled_time
description: |
**Booked via Calendly**
Name: {invitee_name}
Email: {invitee_email}
Company: {company}
**Pre-meeting questions:**
{calendly_answers}
attendees: [invitee_email, owner_email]
reminders: [1_day, 1_hour, 15_min]
4. update_crm:
hubspot:
create_or_update_contact:
email: invitee_email
properties:
last_meeting_booked: scheduled_time
meeting_type: event_type
create_engagement:
type: MEETING
timestamp: scheduled_time
5. send_confirmation:
email:
to: invitee_email
template: meeting_confirmation
include: [calendar_invite, prep_questions]
6. notify_slack:
channel: "#meetings"
message: "📅 New booking: {event_type} with {invitee_name} on {date}"5. Calendar Analytics
5. 日历分析
yaml
analytics_workflow:
name: "Weekly Calendar Report"
schedule: "Friday 5pm"
metrics:
time_distribution:
- meetings_total_hours
- focus_time_hours
- admin_time_hours
- 1on1_time_hours
meeting_quality:
- avg_meeting_length
- back_to_back_count
- meetings_with_agenda
- external_vs_internal
productivity:
- longest_focus_block
- fragmentation_score
- after_hours_meetings
output:
format: markdown
destinations: [slack, google_sheets]
report_template: |
# 📊 Weekly Calendar Analytics
## Time Distribution
| Category | Hours | % of Week |
|----------|-------|-----------|
| Meetings | {meetings_hours} | {meetings_pct}% |
| Focus Time | {focus_hours} | {focus_pct}% |
| Admin | {admin_hours} | {admin_pct}% |
| Available | {available_hours} | {available_pct}% |
## Meeting Insights
- Total meetings: {total_meetings}
- Average length: {avg_length} min
- Back-to-back: {b2b_count} ({b2b_pct}%)
- With agenda: {agenda_pct}%
## Productivity Score
🎯 **{productivity_score}/100**
- Longest focus block: {longest_focus}
- Meeting fragmentation: {fragmentation}
- After-hours: {after_hours_count}
## Recommendations
{ai_recommendations}yaml
analytics_workflow:
name: "Weekly Calendar Report"
schedule: "Friday 5pm"
metrics:
time_distribution:
- meetings_total_hours
- focus_time_hours
- admin_time_hours
- 1on1_time_hours
meeting_quality:
- avg_meeting_length
- back_to_back_count
- meetings_with_agenda
- external_vs_internal
productivity:
- longest_focus_block
- fragmentation_score
- after_hours_meetings
output:
format: markdown
destinations: [slack, google_sheets]
report_template: |
# 📊 Weekly Calendar Analytics
## Time Distribution
| Category | Hours | % of Week |
|----------|-------|-----------|
| Meetings | {meetings_hours} | {meetings_pct}% |
| Focus Time | {focus_hours} | {focus_pct}% |
| Admin | {admin_hours} | {admin_pct}% |
| Available | {available_hours} | {available_pct}% |
## Meeting Insights
- Total meetings: {total_meetings}
- Average length: {avg_length} min
- Back-to-back: {b2b_count} ({b2b_pct}%)
- With agenda: {agenda_pct}%
## Productivity Score
🎯 **{productivity_score}/100**
- Longest focus block: {longest_focus}
- Meeting fragmentation: {fragmentation}
- After-hours: {after_hours_count}
## Recommendations
{ai_recommendations}Time Blocking Templates
时间块模板
Maker Schedule (Individual Contributor)
创造者日程(独立贡献者)
┌─────────────────────────────────────┐
│ 9:00 - 11:00 │ Deep Work Block 1 │
├─────────────────────────────────────┤
│ 11:00 - 11:30 │ Email/Slack │
├─────────────────────────────────────┤
│ 11:30 - 12:30 │ Meetings Window │
├─────────────────────────────────────┤
│ 12:30 - 1:30 │ Lunch │
├─────────────────────────────────────┤
│ 1:30 - 3:30 │ Deep Work Block 2 │
├─────────────────────────────────────┤
│ 3:30 - 4:00 │ Buffer/Admin │
├─────────────────────────────────────┤
│ 4:00 - 5:00 │ Meetings Window │
├─────────────────────────────────────┤
│ 5:00 - 5:30 │ Daily Wrap-up │
└─────────────────────────────────────┘┌─────────────────────────────────────┐
│ 9:00 - 11:00 │ 深度工作块1 │
├─────────────────────────────────────┤
│ 11:00 - 11:30 │ 邮件/Slack处理 │
├─────────────────────────────────────┤
│ 11:30 - 12:30 │ 会议时段 │
├─────────────────────────────────────┤
│ 12:30 - 1:30 │ 午餐 │
├─────────────────────────────────────┤
│ 1:30 - 3:30 │ 深度工作块2 │
├─────────────────────────────────────┤
│ 3:30 - 4:00 │ 缓冲/行政事务 │
├─────────────────────────────────────┤
│ 4:00 - 5:00 │ 会议时段 │
├─────────────────────────────────────┤
│ 5:00 - 5:30 │ 每日收尾 │
└─────────────────────────────────────┘Manager Schedule
管理者日程
┌─────────────────────────────────────┐
│ 8:00 - 8:30 │ Daily Planning │
├─────────────────────────────────────┤
│ 8:30 - 9:00 │ Team Standup │
├─────────────────────────────────────┤
│ 9:00 - 12:00 │ 1:1s / Meetings │
├─────────────────────────────────────┤
│ 12:00 - 1:00 │ Lunch │
├─────────────────────────────────────┤
│ 1:00 - 2:00 │ Focus Time │
├─────────────────────────────────────┤
│ 2:00 - 5:00 │ Meetings │
├─────────────────────────────────────┤
│ 5:00 - 5:30 │ Email/Wrap-up │
└─────────────────────────────────────┘┌─────────────────────────────────────┐
│ 8:00 - 8:30 │ 每日规划 │
├─────────────────────────────────────┤
│ 8:30 - 9:00 │ 团队站立会 │
├─────────────────────────────────────┤
│ 9:00 - 12:00 │ 1:1会议 / 其他会议 │
├─────────────────────────────────────┤
│ 12:00 - 1:00 │ 午餐 │
├─────────────────────────────────────┤
│ 1:00 - 2:00 │ 专注时间 │
├─────────────────────────────────────┤
│ 2:00 - 5:00 │ 会议 │
├─────────────────────────────────────┤
│ 5:00 - 5:30 │ 邮件/收尾工作 │
└─────────────────────────────────────┘Output Example
输出示例
Request: "Set up daily calendar digest for my Slack"
Output:
markdown
undefined请求:"为我的Slack设置每日日历摘要"
输出:
markdown
undefinedDaily Calendar Digest Setup
每日日历摘要设置
Workflow Configuration
工作流配置
yaml
name: "Morning Calendar Briefing"
schedule: "6:00 AM weekdays"
timezone: "Asia/Shanghai"
trigger:
type: cron
expression: "0 6 * * 1-5"
actions:
1. fetch_events:
calendar: primary
date: today
2. send_slack:
channel: "@you" # or #your-channelyaml
name: "Morning Calendar Briefing"
schedule: "6:00 AM weekdays"
timezone: "Asia/Shanghai"
trigger:
type: cron
expression: "0 6 * * 1-5"
actions:
1. fetch_events:
calendar: primary
date: today
2. send_slack:
channel: "@you" # 或 #你的频道Sample Output
示例输出
☀️ Good morning! Here's your Thursday:
📅 January 30, 2026
━━━━━━━━━━━━━━━━━━━━━━
📊 Overview:
• 5 meetings (4.5h)
• 3.5h free time
• 1 back-to-back warning ⚠️
━━━━━━━━━━━━━━━━━━━━━━
🗓️ Schedule:
9:00 AM │ Team Standup (15m)
│ 📞 Google Meet
│
10:00 AM │ 1:1 with Sarah (30m)
│ 👥 Conference Room B
│
11:00 AM │ 🧠 Focus Time (2h)
│
1:00 PM │ Lunch
│
2:00 PM │ Client Call - Acme (1h)
│ 🤝 Zoom (link attached)
│
3:30 PM │ Product Review (1h)
│ 📋 Agenda attached
│
5:00 PM │ ✅ Day ends
━━━━━━━━━━━━━━━━━━━━━━
💡 Tip: You have 2h of focus time - tackle your highest priority task!☀️ 早上好!以下是您的周四日程:
📅 2026年1月30日
━━━━━━━━━━━━━━━━━━━━━━
📊 概览:
• 5场会议(4.5小时)
• 3.5小时空闲时间
• 1个连续会议提醒 ⚠️
━━━━━━━━━━━━━━━━━━━━━━
🗓️ 日程安排:
9:00 AM │ 团队站立会(15分钟)
│ 📞 Google Meet
│
10:00 AM │ 与Sarah的1:1会议(30分钟)
│ 👥 B会议室
│
11:00 AM │ 🧠 专注时间(2小时)
│
1:00 PM │ 午餐
│
2:00 PM │ 与Acme客户的会议(1小时)
│ 🤝 Zoom(链接已附)
│
3:30 PM │ 产品评审会(1小时)
│ 📋 议程已附
│
5:00 PM │ ✅ 工作日结束
━━━━━━━━━━━━━━━━━━━━━━
💡 小贴士:您有2小时专注时间——优先处理最高优先级任务!n8n Setup Instructions
n8n设置说明
- Create new workflow
- Add Schedule Trigger node (6am weekdays)
- Add Google Calendar node (Get Events)
- Add Code node (format message)
- Add Slack node (send message)
- Activate workflow
Would you like me to generate the full n8n workflow JSON?
---
*Calendar Automation Skill - Part of Claude Office Skills*- 创建新工作流
- 添加Schedule Trigger节点(工作日早6点)
- 添加Google Calendar节点(获取事件)
- 添加Code节点(格式化消息)
- 添加Slack节点(发送消息)
- 激活工作流
需要我生成完整的n8n工作流JSON吗?
---
*日历自动化技能 - Claude办公技能系列*