Skip to content

AI-Embedded-Open-Source/Meet-Note-Taker

Meet Live Caption Saver

Chrome extension (Manifest V3) that captures visible Google Meet live captions in real time and exports them to text.

It does not use Meet APIs, microphone capture, or any backend service. It reads caption text that is already rendered in the Meet captions panel.

Status

Active development.

Features

  • Real-time caption capture from Meet captions region.
  • Speaker + text extraction using DOM structure patterns.
  • Auto-enable captions when capture starts.
  • Deduplication and same-speaker continuation merging.
  • Session-based storage: each meeting is saved as a separate transcript session.
  • Global transcript hub with:
    • all sessions list
    • per-session copy/download
    • all-sessions copy/download
    • transcript import from .txt (disabled while live capture is running)
  • Automation toggles in popup:
    • auto-start capture when Meet is detected
    • auto-save transcript on stop/leave/close (silent save)
  • AI handoff from transcript page to:
    • ChatGPT
    • Claude
    • Gemini
  • Custom AI prompt buttons (persisted in local storage).

How to Install the tool

Watch the video on YouTube.

How to use the extension (popup)

Click the extension icon while using Meet (or anytime) to open the popup.

alt

Buttons

  1. Start capture — While you are on a Google Meet tab, starts recording captions into a session. The extension also tries to turn on Meet captions (CC) if they are off.
  2. Stop capture — Stops recording for the current flow; the session stays in the Transcript Hub.
  3. Open transcript hub — Opens the full Transcript Hub page in a new tab (all sessions, import/export, AI handoff).
  4. Download current session — Downloads the transcript for the active Meet tab’s current session as a .txt file (tab-separated format).

Automation toggles

  1. Auto-start on Meet — When enabled, capture starts automatically when you open or land on Google Meet (same idea as pressing Start capture).
  2. Auto-save on stop/leave — When enabled, the extension saves the current session as a .txt file when you stop capture, leave Meet, close the Meet tab, or similar lifecycle events (silent download, no extra prompt if the browser allows it).

Typical flow

  1. Join or start a meeting at https://meet.google.com/.
  2. Click Start capture (or rely on auto-start).
  3. Keep captions visible in Meet.
  4. Click Stop capture when you are done, or leave the meeting.
  5. Use Open transcript hub to review everything, copy, download, import, or send text to an AI provider.

alt

Transcript hub

The Transcript Hub is a dedicated page (opened from Open transcript hub in the popup). Everything is stored locally in the browser unless you explicitly send content to an AI site.

Overview

  • Summary at the top: how many sessions you have, total lines, and whether any live capture is running.
  • Sessions are grouped by meeting (meeting code from the URL) and time. Each session shows its lines with speaker and time, and a Live / Saved / Imported style status when relevant.

Global actions

  • Copy all sessions — Copies a readable plain-text view of every session to the clipboard.
  • Download all sessions — Downloads one .txt file that contains every session (with session headers).
  • Import transcript — Imports a .txt file (same tab-separated export format or simple lines) as a separate Imported session.

Per-session actions

  • Copy — Copy that session only.
  • Download — Save that session as .txt.
  • Use in AI — Selects that session for the AI block below (same as picking it in the session dropdown).
  • Remove / Close — Removes the session from storage. If it was never downloaded or auto-saved, you get a choice to save first or remove without saving.

AI Assistant handoff

  • Choose Provider (ChatGPT, Claude, or Gemini) and Session.
  • Preset buttons run common prompts (summaries, action items, etc.); Add your prompt lets you save custom buttons.
  • Handoff opens the provider in a new tab. For ChatGPT, short payloads may open with a ?q= URL so the prompt is prefilled; longer transcripts use the paste helper (and clipboard fallback if the site UI changes).

Export format (popup downloads and hub downloads use this TSV style):

ISO_TIMESTAMP<TAB>SPEAKER<TAB>TEXT

Example:

2025-02-03T14:30:01.234Z    Speaker Name    Hello, this is caption text.

Installation (From Source)

  1. Clone this repository.
  2. Open chrome://extensions.
  3. Enable Developer mode.
  4. Click Load unpacked and select this repository folder.

AI Handoff Notes

  • The extension stores pending prompt+transcript in chrome.storage.local.
  • It opens the selected AI provider in a new tab.
  • ai-helper.js tries to insert text and submit.
  • If provider DOM changed and auto-submit fails, text is copied to clipboard as fallback.

Supported providers in current code:

  • https://chat.openai.com/*
  • https://chatgpt.com/*
  • https://claude.ai/*
  • https://gemini.google.com/*

How It Works

  • content.js
    • Locates Meet caption container: [role="region"][aria-label="Captions"]
    • Parses caption rows using profile image + sibling structure
    • Stabilizes rows (STABILITY_MS) before commit
    • Deduplicates with seen-hash TTL cache (SEEN_TTL_MS)
    • Sends LINE and UPDATE_LAST_LINE messages
    • Sends capture lifecycle signals (CAPTURE_STARTED / CAPTURE_STOPPED)
  • background.js
    • Maintains session store in chrome.storage.local
    • Tracks active capture per tab and session rotation on meeting changes
    • Handles auto-start, auto-save, imports, and downloads
  • popup.js
    • Start/stop capture
    • Status/session count
    • Auto-start and auto-save toggles
  • transcript.js
    • Renders all sessions grouped
    • Copy/download/upload
    • AI provider + prompt controls

Project Structure

  • manifest.json: extension config, permissions, content scripts, service worker
  • content.js: Meet caption capture/parsing
  • background.js: transcript storage + download + runtime API
  • popup.html, popup.js, styles.css: extension popup UI
  • transcript.html, transcript.js: transcript page and AI controls
  • ai-helper.js: AI site content script for paste/submit
  • default-prompts.json: built-in AI prompt presets
  • user-prompts.json: optional seed file for custom prompts

Permissions

  • storage: session data, capture state, settings, AI preferences
  • downloads: save transcript .txt
  • clipboardWrite: fallback copy during AI handoff
  • activeTab: popup actions on current tab
  • tabs: detect tab lifecycle for auto-start/session-finalization
  • host_permissions:
    • https://meet.google.com/*
    • https://lh3.googleusercontent.com/*
    • https://chat.openai.com/*
    • https://chatgpt.com/*
    • https://claude.ai/*
    • https://gemini.google.com/*

Troubleshooting

  • Captions not detected, turn CC on
    • Ensure Meet captions are enabled and visible.
    • Reload Meet tab and restart capture.
  • Duplicate/split lines
    • Capture uses row stabilization and merge logic; share a sample transcript in an issue if reproducible.
  • AI auto-paste fails
    • Provider UI likely changed; use clipboard fallback and file an issue.

Security and Privacy

  • Zero-secrets design: this project must run locally without API keys, access tokens, or backend credentials.
  • No microphone or audio recording.
  • No backend upload by this extension.
  • Data stays in browser local extension storage unless you explicitly send content to an AI website.
  • Contributions that introduce mandatory server-side dependencies or required secrets are out of scope.

See SECURITY.md for vulnerability reporting.

Contributing

See CONTRIBUTING.md.

Release Packaging (Maintainers)

Create a package locally:

node ./scripts/release/package-extension.js

Output:

  • dist/meet-live-caption-saver-v<manifest.version>.zip

Platform-specific scripts are also available:

  • Windows: ./scripts/release/package-extension.ps1
  • Linux/macOS: ./scripts/release/package-extension.sh

Automated release flow:

  1. Bump version in manifest.json.
  2. Commit and tag (vX.Y.Z).
  3. Push branch and tag.
  4. GitHub Actions workflow Release Package builds ZIP and attaches it to the GitHub Release.

Code of Conduct

See CODE_OF_CONDUCT.md.

License

See LICENSE.

Disclaimer

  • Use at your own risk.
  • You are responsible for complying with your organization policy and Google Meet terms.
  • Not affiliated with Google or Google Meet.

About

Chrome extension (Manifest V3) that captures visible Google Meet live captions in real time and exports them to text. It does not use Meet APIs, microphone capture, or any backend service. It reads caption text that is already rendered in the Meet captions panel.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors