| name | email-meeting-summary |
| description | Use when the user wants to summarize a Google Meet meeting and send the summary by email. Reviews a Google Meet transcript for a specific meeting topic, then composes a Gmail draft summarizing decisions and action items for that topic. Prompts for meeting selection if not specified, and for topic selection before drafting. Stops with a message if the transcript is not yet available. |
| argument-hint | [meeting name] [YYYY-MM-DD] |
| allowed-tools | Bash, AskUserQuestion |
| user-invocable | true |
| metadata | {"author":"dhellman","version":"1.0","tags":"meetings, google-workspace, gmail, calendar, transcript, summary"} |
Email Meeting Summary
Read a Google Meet transcript, identify discussion topics, summarize decisions
and action items for the chosen topic, and compose a Gmail draft for review.
Prerequisites
gws binary must be on $PATH
- Authenticated: run
gws auth login if not already logged in. The --readonly flag is sufficient for reading calendar/docs/drive, but draft creation requires the gmail.compose scope which is included in the default (non-readonly) login.
If gws is not installed or authentication fails, tell the user to follow the
setup instructions in the google-workspace skill.
Helper scripts are located in ${CLAUDE_SKILL_DIR} and require Python 3.10+.
Step 1: Identify the Meeting
Run the search once and save the result to a temp file:
EVENT_FILE=$(mktemp /tmp/meeting_event.XXXXXX)
python3 "${CLAUDE_SKILL_DIR}/scripts/find_meeting.py" --days 7 "<keyword>" > "$EVENT_FILE"
python3 "${CLAUDE_SKILL_DIR}/scripts/find_meeting.py" --days 7 --date "<YYYY-MM-DD>" "<keyword>" > "$EVENT_FILE"
python3 "${CLAUDE_SKILL_DIR}/scripts/find_meeting.py" --days 7 > "$EVENT_FILE"
The script always outputs JSON. Read EVENT_FILE and display the result(s) to
the user as a human-readable list.
The script searches the past 7 days (up to now). When a keyword matches
multiple occurrences of a recurring meeting, it automatically picks the best
one: the occurrence on --date if given, otherwise today's, otherwise the most
recent past one.
Always confirm with the user before proceeding, regardless of how many
results were found. Use AskUserQuestion:
"I found: on <date> at <time>. Is this the meeting you want to
summarize? (yes / no — if no, describe the meeting you meant)"
If the user says no, ask for clarification and re-run find_meeting.py with a
corrected keyword or --date, overwriting EVENT_FILE. If multiple events were
returned, list them and ask the user to pick one by number, then re-run with
--date to narrow to that occurrence.
Step 2: Find the Transcript in Google Drive
Pass the event JSON to find_transcript.py on stdin:
python3 "${CLAUDE_SKILL_DIR}/scripts/find_transcript.py" < "$EVENT_FILE"
The script returns JSON with a source field:
source | Meaning | What to use |
|---|
"attachment" | Found in event attachments | fileId field |
"drive" | Found via Drive search | pick from files array |
"none" | Not found anywhere | inform user and stop |
If source is "none": tell the user the transcript is not yet available
(Gemini may take several minutes after the meeting ends) and stop.
If source is "drive" and files has more than one entry: present a
numbered list (name, created date, link) and use AskUserQuestion to ask which
file to use.
If exactly one result: proceed automatically.
Store the chosen document ID as DOC_ID.
Step 3: Read the Transcript
python3 "${CLAUDE_SKILL_DIR}/scripts/read_doc.py" "<DOC_ID>"
The script outputs the document as plain text. Store this as TRANSCRIPT. If
the script exits with an error or the output is empty, inform the user and stop.
Step 4: Identify Topics and Let the User Choose