MCP.Market

google_meet skill

by NousResearch·NousResearch/hermes-agent·263k stars·MIT

Join a Google Meet call, transcribe live captions, optionally speak in realtime, and do the followup work afterwards. Use when the user asks the agent to sit in on a meeting, take notes, summarize, respond in-call, or action items from it.

A97/100content scan

Is the google_meet skill safe?

Clean: nothing in its files matched our rules. We read 18 files in the folder on 2026-11-14.

  • lowSKILL.md:1

    The name should be 1 to 64 lowercase letters, digits or hyphens.

    google_meet

Install the google_meet skill

A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.

git clone --depth 1 https://github.com/NousResearch/hermes-agent.git /tmp/hermes-agent
mkdir -p ~/.claude/skills
cp -r /tmp/hermes-agent/plugins/google_meet ~/.claude/skills/google_meet
available in every project

In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub

The instructions your agent would load

SKILL.md as published, without the frontmatter. Read it on GitHub

google_meet

When to use

The user says any of:

  • "join my Meet at "
  • "take notes on this meeting"
  • "summarize the meeting and send followups"
  • "sit in on my standup"
  • "be a bot in this call and speak up when X"

Two modes

Pick realtime only when the user actually wants the agent to speak. It costs real money (OpenAI Realtime is pay-per-audio-minute) and requires a virtual audio device set up on the machine running the bot.

Two locations

Prerequisites the user must handle once

Easiest path — run the built-in installer:

hermes plugins enable google_meet
hermes meet install                 # PM dependencies + Chromium (transcribe only)
hermes meet install --realtime      # + pulseaudio-utils / brew blackhole+ffmpeg
hermes meet auth                    # optional; skips guest-lobby wait
hermes meet setup                   # preflight checks

hermes meet install --realtime prompts before running sudo apt-get (Linux) or brew install (macOS). Pass --yes to skip the prompt. It will NOT touch your macOS default-input setting — you have to select BlackHole 2ch in System Settings yourself before starting a realtime meeting.

For manual realtime audio setup:

#   Linux:  sudo apt install pulseaudio-utils
#   macOS:  brew install blackhole-2ch ffmpeg
#           → System Settings → Sound → Input → BlackHole 2ch
#   Then set OPENAI_API_KEY or HERMES_MEET_REALTIME_KEY in ~/.hermes/.env

For a remote node:

# on the user's Mac (where Chrome is signed in):
hermes plugins enable google_meet
hermes meet install
hermes meet node run --display-name my-mac    # persistent server
# copy the printed token

# on the gateway:
hermes meet node approve my-mac ws://<mac-ip>:18789 <token>
hermes meet node ping my-mac                   # confirm reachable

Run hermes meet setup to preflight local prereqs.

Flow

  1. Join — call meet_join(url=..., mode=..., node=...). Returns immediately.
  2. Announce yourself — no auto-consent. Say (in whatever channel the user is watching): "A Hermes agent bot is in this call taking notes."
  3. Poll — meetstatus() for liveness, meettranscript(last=20) for recent captions. Don't re-read the whole transcript every turn.
  4. Speak (realtime only) — meet_say(text="...") queues text for TTS. The speech lags by ~2s. Don't spam it.
  5. Leave — meetleave() when done, or set duration="30m" on meetjoin for auto-leave.
  6. Follow up — read meet_transcript() in full, summarize, and use regular tools to send the recap, file issues, schedule followups.

Tool reference

node? on all tools: pass a registered node name (or "auto" for the sole node) to operate a remote bot instead of a local one. Omit for local.

Important limits

  • Captions are only as good as Google Meet's live captions. English-biased, lossy on overlapping speakers.
  • Guest mode sits in the lobby until a host admits. Warn the user; hermes meet auth avoids this.
  • Lobby timeout: if the host doesn't admit the bot within 5 minutes (configurable via HERMESMEETLOBBYTIMEOUT env), the bot leaves and meetstatus reports leaveReason: "lobby_timeout".
  • One active meeting per install per location. A second meet_join leaves the first.
  • Windows not supported.
  • Realtime mode needs a virtual audio device. If the audio bridge setup fails, the bot falls back to transcribe mode and flags it in meet_status().error.
  • meetsay requires mode='realtime' on the originating meetjoin. Calling it against a transcribe-mode meeting returns a clear error.
  • Barge-in is best-effort. When a caption arrives attributed to a real participant while the bot is generating audio, the bot sends response.cancel to OpenAI Realtime. Captions take ~500ms to show up, so the bot will talk over the first second or so of a human interruption.

Status dict reference

meet_status() returns (subset shown, there are more):

Transcript location

Local:

$HERMES_HOME/workspace/meetings/<meeting-id>/transcript.txt

Remote node: transcript lives on the node host's disk. Use meet_transcript(node=...) to read it over RPC.

Safety

  • URL regex: only https://meet.google.com/... URLs pass.
  • No calendar scanning. No auto-dial.
  • Remote nodes use bearer-token auth; tokens are generated on the node (32 hex chars, persisted in $HERMESHOME/workspace/meetings/nodetoken.json) and must be copied to the gateway via hermes meet node approve.
  • meet_say text is rate-limited by the OpenAI Realtime session; spam-protection is the bot's problem, not yours, but still — don't queue hundreds of lines.

More skills from NousResearch/hermes-agent

  • A1passwordSet up op CLI, sign in, and read or inject secrets.
  • A3-statement-modelBuild integrated IS/BS/CF financial workbooks in Excel.
  • AaccelerateRun PyTorch training across GPUs with minimal changes.
  • Cactual-setupSet up Actual Computer (actual.inc) inference in Hermes.
  • Aadversarial-ux-testRoleplay a hostile user to find and triage UX pain points.
  • Aagent-merge-conflict-arbiterNeutral arbiter for merge conflicts between two agents.
  • AagentmailUse when an agent needs AgentMail CLI email inboxes.
  • Aai-presenter-videoMake a verified AI presenter video from script + image.
  • AairtableAirtable REST API via curl. Records CRUD, filters, upserts.
  • AanatomyExplain an idea as an interactive isometric machine figure.
  • Cantigravity-cliOperate the Antigravity CLI (agy): plugins, auth, sandbox.
  • Aapple-notesManage Apple Notes via memo CLI: create, search, edit.

All agent skills → · MCP servers