Skip to content

Daily

Get summaries of yesterday's calendar meetings from Zoom

Every morning you get an email listing yesterday's calendar meetings, each with a summary and action items from its Zoom recording.

Runs
Daily
Apps
Google Calendar, Zoom
AI
Yes, uses the built-in AI allowance
Access
Calendar read; Zoom cloud_recording:read

Send this to your assistant

Create a ClickRuntime automation: every weekday at 7, take yesterday's meetings from my calendar, find each one's Zoom recording transcript, and email me a summary and action items per meeting.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A sales lead's calendar is a wall of back-to-back calls. They want a record of each meeting under its real name, with who attended, but Zoom recordings are labelled with generic topics and are hard to match to the right customer.

Each morning yesterday's calendar events are matched to their Zoom recordings by time and link. The email lists each meeting by its calendar title, with a short summary and the action items, so follow-ups go to the right customer.

What you get out of it

  • Summaries under the right names

    Each summary uses the meeting's calendar title, so 'Northwind renewal' doesn't show up as 'Personal Meeting Room'.

  • Follow-ups go to the right people

    Attendees from the calendar invite are listed with each summary.

  • Meetings without recordings are flagged

    Calls that weren't recorded are listed too, so you know what to write up yourself.

  • One morning email

    All of yesterday's calls arrive together, ready to read before the first call of the day.

How it works

What happens, step by step

  1. Every weekday morning, ClickRuntime lists yesterday's meetings from your calendar.

  2. It finds the Zoom recording for each one by its meeting link or start time.

  3. AI reads each transcript and writes a short summary with action items.

  4. You get one email with every meeting under its calendar title, including any that weren't recorded.

Before it runs live

  • Connect Google Calendar
  • Connect Zoom

What you get

RunsDaily
Get summaries of yesterday's calendar meetings from Zoomtoday, 9:00Succeeded
Email · Yesterday's meetingsNorthwind renewal: they want a two-year term with quarterly billing. Action: send revised quote by Wednesday.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Slack
  • Combine it with other Google Calendar and Zoom steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
daily_zoom_meeting_summaries_matched_to_calendar_events.pyexample
from datetime import datetime, timedelta, timezone
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, ai, notify

@on_trigger
def run(event):
    end = datetime.now(timezone.utc).replace(hour=0, minute=0, second=0, microsecond=0)
    cal = build("calendar", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
    events = cal.events().list(calendarId="primary", timeMin=(end - timedelta(days=1)).isoformat(), timeMax=end.isoformat(),
                               singleEvents=True).execute().get("items", [])
    zoom = {"Authorization": f"Bearer {credentials.connection('zoom', 'work')}"}
    day = (end - timedelta(days=1)).date().isoformat()
    recs = {str(m["id"]): m for m in http.get("https://api.zoom.us/v2/users/me/recordings", headers=zoom,
                                               params={"from": day, "to": day}).json()["meetings"]}
    parts = []
    for e in events:
        text = f"{e.get('location', '')} {e.get('description', '')}"
        rec = next((m for mid, m in recs.items() if mid in text.replace(" ", "")), None)
        files = [f for f in (rec or {}).get("recording_files", []) if f["file_type"] == "TRANSCRIPT"]
        if not files:
            parts.append(f"{e.get('summary')}: no recording")
            continue
        transcript = http.get(files[0]["download_url"], headers=zoom).text[:20000]
        parts.append(f"{e.get('summary')}\n" + ai.generate(f"Summary and action items:\n{transcript}", max_output_tokens=400).text)
    notify.email_me(f"Yesterday's meetings ({len(parts)})", "\n\n".join(parts) or "No meetings yesterday.")
    return {"meetings": len(parts)}

FAQ

Common questions

How are recordings matched to events?
By the Zoom meeting id in the event's link, or by start time when the link isn't there.
What if a meeting wasn't recorded?
It's listed in the email as having no recording, so you can add your own notes.
Are other attendees sent the summary?
No, it only goes to you by default. You can forward it, or ask for a version that emails attendees.
What permissions does it need?
Calendar read; Zoom cloud_recording:read. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it runs (daily). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Get summaries of yesterday's calendar meetings from Zoom” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.