Automate / Google Drive
Share meeting notes to Google Drive automatically.
One script, no API. A Markdown note per call lands in a Drive folder your team can already see. Dropbox, OneDrive and iCloud Drive by changing one line.
To save meeting notes to Google Drive automatically, write them into the folder Google Drive for desktop already syncs, and let it do the upload. This recipe is a script that runs when a recording has finished and puts one Markdown note per call — when, how long, a summary if you want one, the full transcript — into My Drive/Meeting notes/. No Drive API, no OAuth, no bot in the call. Share that folder once and every note after it is shared too; the meeting recording itself stays on the Mac unless you say otherwise.
The moment the file lands in that folder it leaves the Mac. That is the point of this recipe, and it happens because you chose the folder. RecordCue itself uploads nothing.
What you get
A file named by date and service, readable in Drive's preview, on a phone, or by anyone who opens the folder:
My Drive/Meeting notes/2026-09-08 Google Meet.md # Google Meet, 2026-09-08 18:07 - When: 2026-09-08 18:07, 54 min - Recording: 2026-09-08 18.07-19.01 Google Meet.m4a (on the Mac that recorded it) ## Summary - Decided: 1.3 ships on the 19th; the onboarding change moves to 1.4. - Action: Mika sends the revised pricing table by Thursday. - Action: Sam files the crash from the demo, with the log attached. - Open: whether the annual plan keeps the 20% discount. - Open: who writes the release notes. ## Transcript … [0:03] Mic: OK, everyone is here. Let's start with the release date. [0:11] System: We said the nineteenth. Does that still hold? [0:14] Mic: It does, if onboarding moves out. …
The summary block is there only when SUMMARISE=1 and a transcript exists. With no transcript at all the note is the heading, the metadata and one line saying so, and the recording is still copied if you turned that on.
Prerequisites
- RecordCue, with automatic transcription on in Settings so the note has text in it.
- The hook from /automate/hooks/. This page is one action in its folder.
- Google Drive for desktop, signed in. Its mirror of My Drive is at
~/Library/CloudStorage/GoogleDrive-<email>/My Drive/;ls ~/Library/CloudStorageshows the exact name. “Stream files” and “Mirror files” both work. - For the summary: Claude Code (
claude) signed in. Or not; see the no-AI variation. Everything else iszsh.
The action
Save as ~/.config/recordcue/actions/50-drive.sh. Set DRIVE to your own mount. The two switches under it are the whole configuration.
#!/bin/zsh
# ~/.config/recordcue/actions/50-drive.sh
# One Markdown note per finished call, written into a folder that Google
# Drive for desktop syncs. Nothing here talks to Google; the file lands in
# the folder and Drive uploads it, under your account.
set -u
# Your Drive mount. `ls ~/Library/CloudStorage` shows the exact name.
DRIVE="$HOME/Library/CloudStorage/GoogleDrive-you@example.com/My Drive"
DEST="$DRIVE/Meeting notes"
SUMMARISE=1 # 1: ask Claude Code for a summary. 0: no AI; the note is
# the metadata and the transcript, nothing else.
COPY_RECORDING=0 # 1: copy the .m4a/.mp4 as well. Off by default: it is
# the whole call, and large.
# Drive for desktop not running, or the address above wrong? Fail, and the
# hook retries next minute. hooks.log says why.
[[ -d "$DRIVE" ]] || { print -u2 -- "50-drive: no such folder: $DRIVE"; exit 1; }
mkdir -p "$DEST"
# A summary needs a transcript. Failure here means "retry", not "skip".
summary=""
if (( SUMMARISE )) && [[ -n "$RC_TRANSCRIPT" ]]; then
summary=$(claude -p "Summarise this call transcript in five bullets: decisions, action items with owners, open questions. Plain text, no preamble." < "$RC_TRANSCRIPT") || exit 1
fi
where="on the Mac that recorded it"
if (( COPY_RECORDING )); then
cp "$RC_MEDIA" "$DEST/" || exit 1
where="in this folder"
fi
# <date> <service>.md; a second call on the same service that day gets the
# start time appended rather than overwriting the first.
note="$DEST/$RC_DATE $RC_SERVICE.md"
if [[ -e "$note" ]]; then
hhmm=${RC_WHEN#* }
note="$DEST/$RC_DATE $RC_SERVICE ${hhmm/:/.}.md"
fi
# Build the note in a temp file and move it in whole, so Drive never syncs
# a half-written one.
tmp=$(mktemp)
{
print -r -- "# $RC_SERVICE, $RC_WHEN"
print
print -r -- "- When: $RC_WHEN, $RC_MINUTES min"
[[ -n "$RC_TITLE" ]] && print -r -- "- Window: $RC_TITLE"
print -r -- "- Recording: ${RC_MEDIA:t} ($where)"
if [[ -n "$summary" ]]; then
print; print -- "## Summary"; print
print -r -- "$summary"
fi
print; print -- "## Transcript"; print
if [[ -n "$RC_TRANSCRIPT" ]]; then
cat "$RC_TRANSCRIPT"
else
print -- "No transcript for this recording."
fi
} > "$tmp"
chmod 644 "$tmp"
mv "$tmp" "$note"What leaves the Mac, and when: with SUMMARISE=1 the transcript goes to Claude Code first — because you sent it, to the AI you chose, under your own account — and the summary comes back. Then the note, transcript included, is written into the Drive folder and Drive uploads it. With COPY_RECORDING=1 the audio or video file goes too. Turn either switch off and that step simply does not happen.
Test it
chmod +x ~/.config/recordcue/actions/50-drive.sh ls ~/Library/CloudStorage # confirm the GoogleDrive-… name in DRIVE # Make one short recording, stop it, wait for the transcript. Then: launchctl kickstart -k gui/$(id -u)/app.recordcue.hooks ls -l "$HOME/Library/CloudStorage/GoogleDrive-you@example.com/My Drive/Meeting notes" tail ~/.config/recordcue/hooks.log # empty when it worked
The note appears in the folder within a minute or two of the transcript, and in Drive on the web a few seconds after that. If hooks.log says no such folder, Drive for desktop is not running or the address in DRIVE is wrong; the action keeps retrying each minute until it is right.
Variations
Dropbox, OneDrive, iCloud Drive, or a shared drive
Every desktop sync app does the same thing with a different folder. Change DRIVE and nothing else:
# Dropbox DRIVE="$HOME/Library/CloudStorage/Dropbox" # OneDrive (personal or work; the suffix is your organisation) DRIVE="$HOME/Library/CloudStorage/OneDrive-Contoso" # iCloud Drive DRIVE="$HOME/Library/Mobile Documents/com~apple~CloudDocs" # A Google shared drive rather than My Drive DRIVE="$HOME/Library/CloudStorage/GoogleDrive-you@example.com/Shared drives/Product"
Your own folder, or the team's
My Drive/Meeting notes is yours until you share it. Share the folder once, with the people or the group, and every note the script writes afterwards inherits that; nobody has to be added per meeting. For a team that already lives in a shared drive, point DRIVE at Shared drives/<name> instead, as in the list above, and the notes are the team's from the first byte. Be deliberate about which: a note with a full transcript in a folder twenty people can read is the intended outcome, not a surprise.
No AI, or a different one
SUMMARISE=0 is the no-AI version: the same script, the same note, minus the summary. Nothing but the sync app touches the network, and the transcript never goes to a model. To use Codex instead of Claude Code, replace the summary=$(claude …) line with:
out=$(mktemp) codex exec -o "$out" "Summarise this call transcript in five bullets: decisions, action items with owners, open questions. Plain text, no preamble." < "$RC_TRANSCRIPT" || exit 1 summary=$(cat "$out")
For a model that runs on the Mac, so nothing but the finished note leaves it:
summary=$(ollama run llama3.2 "Summarise this call transcript in five bullets: decisions, action items with owners, open questions. Plain text, no preamble." < "$RC_TRANSCRIPT") || exit 1
Markdown, or a Google Doc
A .md in Drive is a plain text file: Drive previews it, its contents are searchable, and any editor opens it. If a teammate wants a Google Doc, they can open the file with Google Docs from Drive, which makes a converted copy; the script does not do this, because conversion goes through the Drive API and this recipe avoids the API on purpose. If you want the transcript separate from the summary, write two files: the same block with the ## Transcript part in $RC_DATE $RC_SERVICE (transcript).md.
A Mac with no Drive for desktop
On a headless Mac mini, or when you would rather not run the sync app, brew install rclone, run rclone config once to create a remote named gdrive (it opens a browser to sign in, then stores the token in your home folder), and set DRIVE to any local folder, say $HOME/Meeting notes. Add one line at the end of the script, after the mv: rclone copy "$note" "gdrive:Meeting notes/" || exit 1. The note is now written locally and pushed by rclone; if the push fails the hook retries it next minute. rclone knows Dropbox, OneDrive and most others under the same command.
Have your agent set it up
Paste into Claude Code, Codex or any local agent that can fetch a page and run a shell on this Mac. It will ask for your Drive address and which switches you want.
Read https://www.recordcue.app/automate/google-drive/ and set it up on this Mac exactly as that page describes. Show me every file before writing it, then run the test and show me the result.
Questions
- Can RecordCue save meeting notes to Google Drive automatically?
- Not by itself; RecordCue makes no network requests. This recipe adds a script that runs when a recording has finished and writes a Markdown note into a folder that Google Drive for desktop syncs. The moment the file lands there, Drive uploads it under your own account, to the folder you chose. That is the whole mechanism.
- Do I need the Google Drive API or a service account?
- No. Google Drive for desktop already mirrors My Drive to ~/Library/CloudStorage/GoogleDrive-<email>/, so writing a file into that folder is the upload. The same is true of Dropbox, OneDrive and iCloud Drive; only the path changes. rclone covers a Mac that runs without the desktop app.
- Does the meeting recording itself go to Drive too?
- Only if you set COPY_RECORDING=1 in the script. It is off by default because the recording is the entire call: about a megabyte a minute for audio, far more for screen recordings, and it is the one file that cannot be un-shared once a teammate has heard it. The note records the file name so you can find it on the Mac.
- Can my team read and search the transcript in Google Drive?
- Yes. Drive previews a .md file as text and indexes its contents, so a phrase from the call turns up in Drive search. The transcript is the rough on-device one from macOS: fine for finding a passage, weak on names and jargon. For a cleaner text, run the Whisper recipe first and point the script at that file.