Google Calendar Weekly Review
Generates a weekly calendar review: time spent in meetings vs focus work, meeting categories, overload analysis, and improvement recommendations. Prerequisites: gcalcli, gcloud, curl, jq.
MCP get_skill({ skillId: "google-calendar-weekly-review-e7d35a09" })Use this skill with your agent
Create a free account and connect via MCP
# Google Calendar Weekly Review
Analyze the past week's calendar to generate insights on time allocation, meeting load, and schedule optimization opportunities.
## When to Use
- "Review my week"
- "How much time did I spend in meetings this week?"
- "Give me a weekly schedule analysis"
## Requirements
- **gcalcli** or **Google Cloud CLI** with Calendar API
- `jq` for JSON parsing
- `bc` or `python3` for calculations
## Workflow
### Step 1 — Fetch Past Week's Events
```bash
# Using gcalcli
gcalcli agenda "last monday" "next monday" --details all --tsv
# Using Calendar API
ACCESS_TOKEN=$(gcloud auth print-access-token)
TIME_MIN=$(date -d 'last monday' -u '+%Y-%m-%dT00:00:00Z')
TIME_MAX=$(date -d 'next monday' -u '+%Y-%m-%dT00:00:00Z')
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://www.googleapis.com/calendar/v3/calendars/primary/events?timeMin=${TIME_MIN}&timeMax=${TIME_MAX}&singleEvents=true&orderBy=startTime&maxResults=100" | \
jq '[.items[] | {summary: .summary, start: .start.dateTime, end: .end.dateTime, attendees: (.attendees // [] | length), duration_min: (((.end.dateTime | sub("\\.[0-9]+"; "") | strptime("%Y-%m-%dT%H:%M:%S%z") | mktime) - (.start.dateTime | sub("\\.[0-9]+"; "") | strptime("%Y-%m-%dT%H:%M:%S%z") | mktime)) / 60)}]'
```
### Step 2 — Categorize Events
Classify each event:
- **External meetings** — attendees from outside your org
- **Internal meetings** — attendees from your org
- **1:1s** — exactly 2 attendees
- **Focus blocks** — no attendees, or labeled as focus/deep work
- **Personal** — from personal calendar
- **Recurring** — part of a recurring series
### Step 3 — Calculate Metrics
| Metric | Calculation |
|--------|-------------|
| Total meeting hours | Sum of all events with attendees |
| Focus hours | Workday hours minus meeting hours |
| External vs internal ratio | External / total meetings |
| Longest focus block | Largest gap between meetings |
| Busiest day | Day with most meeting hours |
| Meeting-free windows | Gaps > 1 hour |
| Recurring meeting load | % of meetings that are recurring |
### Step 4 — Generate Weekly Report
Save to `outputs/YYYY/weekly/YYYY-WXX-review.md`:
```markdown
# Weekly Review — Week {N}, {YEAR}
## Time Allocation
| Category | Hours | % of Work Week |
|----------|-------|----------------|
| External meetings | 4.5h | 11% |
| Internal meetings | 8.0h | 20% |
| 1:1s | 3.0h | 8% |
| Focus time | 22.5h | 56% |
| Admin/breaks | 2.0h | 5% |
## Daily Breakdown
| Day | Meetings | Focus | Score |
|-----|----------|-------|-------|
| Mon | 3h | 5h | 🟢 |
| Tue | 6h | 2h | 🔴 |
| Wed | 2h | 6h | 🟢 |
| Thu | 4h | 4h | 🟡 |
| Fri | 0.5h | 7.5h | 🟢 |
## Insights
- Tuesday was meeting-heavy (6h) — consider blocking Tuesdays as meeting-lite
- 5 recurring meetings consume 40% of meeting time — review if all are needed
- Longest focus block: 3h on Wednesday afternoon
## Recommendations
1. Decline or shorten [Meeting X] — 1h weekly meeting with 8 attendees, consider async
2. Batch 1:1s onto one day to protect other days
3. Add a "No Meetings Wednesday" policy
```
### Step 5 — Compare to Previous Weeks
If previous reports exist in `outputs/YYYY/weekly/`, compare trends:
- Meeting hours trending up or down?
- Focus time improving?
- Any new recurring meetings added?
## Important Rules
- Read-only — never modify calendar without explicit request
- Don't expose attendee names in shared reports unless asked
- Use 40h work week as baseline for percentages
## Example Prompts
- "Review my calendar this week"
- "How many hours of meetings did I have?"
- "Compare this week's schedule to last week"Related Skills
More skills in Calendar & Scheduling
Google Calendar Availability Finder
Finds mutual free times across multiple Google Calendar users and proposes meeting slots. Generates scheduling links or draft calendar invites. Prerequisites: gcalcli, gcloud, curl, jq.
Google Calendar Daily Planner
Pulls today's or tomorrow's Google Calendar events via gcalcli, analyzes meeting density, identifies focus blocks, and generates a time-blocked daily plan. Prerequisites: gcalcli, gcloud, curl, jq.
Google Calendar Event Creator
Creates Google Calendar events from natural language descriptions using gcalcli or Calendar API. Handles recurring events, attendees, reminders, and conference links. Prerequisites: gcalcli, gcloud, curl, jq.
Google Calendar Meeting Prep
Pulls upcoming meeting details from Google Calendar, researches attendees and topics via Brave Search, and generates a meeting prep brief with talking points. Prerequisites: gcalcli, gcloud, curl, jq, brave-search MCP.
Explore Other Categories
Skills from other categories with shared topics
Code Review Assistant
Reviews code for bugs, security issues, and best practices. Prerequisites: git.
Contract Clause Analyzer
Reads a contract or agreement, identifies key clauses, flags risky or unusual terms, and generates a plain-English summary with recommendations. Researches standard clause language via Brave Search. Prerequisites: brave-search MCP, python3.