Skip to content
Agentmart
Submit a tool

extract-gdrive-transcript

Extracts the full transcript of a Google Meet or other video recording on Google Drive via Chrome MCP.

Skill by RascalTwo

IndexedMIT★ 2
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/rascaltwo-extract-gdrive-transcript

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Extracts the full transcript of a Google Meet or other video recording on Google Drive via Chrome MCP. Use for a Drive recording URL, Meet recordings, meeting captions, or speaker-attributed meeting text, even if the user never says "transcript".

Use cases: productivity, agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/extract-gdrive-transcript

What's inside

Skill name
extract-gdrive-transcript
Description
Extracts the full transcript of a Google Meet or other video recording on Google Drive via Chrome MCP. Use for a Drive recording URL, Meet recordings, meeting captions, or speaker-attributed meeting text, even if the user never says "transcript".
License
MIT
Instructions
191 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Google Drive Video Transcript Extractor

If the recording is already in the steno catalog, use the `steno-transcripts` skill first instead of re-transcribing.

Extract full transcripts from video recordings on Google Drive using Chrome MCP. The transcript includes timestamps and speaker attribution, output as a WebVTT (.vtt) file.

This works because Google Drive's video player has a built-in Transcript panel that shows auto-generated captions with speaker names and timestamps. Rather than downloading the video and processing it offline, this skill reads the transcript directly from the browser — no OAuth, no FFmpeg, no video download.

**See also:** if the video file is already downloaded locally (not in the Drive browser player), use the `extract-video-subtitles` skill instead.

## Requirements

- **Chrome MCP** (Claude in Chrome) must be connected
- The user must be **logged into Google** in Chrome with access to the recording
- The recording must have **captions/subtitles** (Google Meet recordings have these by default)

## Input

A Google Drive recording URL. The user provides this as an argument:

```
$ARGUMENTS
```

If no URL is provided, ask the user for one. The URL looks like:
```
https://drive.google.com/file/d/{fileId}/view
```

## Workflow

### 1. Navigate and start playback

Navigate to the URL. Wait for the page to load and take a screenshot.

If you see a login or access denied screen, stop and tell the user they need to be logged into Google in Chrome.

The transcript panel often doesn't appear or populate until the video has started playing. Click the **play button** on the video player to start playback. Wait 3-5 seconds, then pause the video.

Take a screenshot. You should now see a "Transcript" bar near the top of the page.

### 2. Check whether the Transcript button is enabled

Even when a Transcript bar appears, it can be **disabled (greyed out)** — that means the recording has no captions/transcript at all and there is nothing to extract. Critically, the disabled button still satisfies a `find` query and can still be `left_click`'d, so you must check its enabled state explicitly. Visually, the disabled state shows muted/grey text instead of normal contrast; a screenshot alone is the human cue.

Programmatically, check via JavaScript before attempting to open the panel:

```javascript
const allButtons = Array.from(document.querySelectorAll('button'));
const t = allButtons.find(b => b.textContent.trim() === 'Transcript');
JSON.stringify({
  found: !!t,
  disabled: t?.disabled,
  ariaDisabled: t?.getAttribute('aria-disabled'),
  // any of these "true"/true means no transcript exists for this recording
});
```

If `disabled === true` or `ariaDisabled === "true"`, there is **no Google transcript to
extract** — stop the browser flow (do not attempt clicks, retry, or DOM discovery). But the
recording can still be transcribed by speech: tell the user, and offer the **ASR fallback** —
download the recording from Drive, then run the `transcribe-media` skill on the file:

```bash
~/.agents/skills/transcribe-media/transcribe.sh <downloaded-file> --format vtt
```

That yields a `.vtt` from the audio (no Google speaker names, but the words are there). Only
fall through to this when Google's own captions are genuinely absent.

### 3. Open the transcript panel

Click the **"Transcript" text** near the top-left of the page. This opens a panel on the right side showing timestamped entries with speaker names.

Take a screenshot to confirm the panel is visible. If it doesn't open:
- Try clicking the chevron arrow on the right side of the Transcript bar
- Try playing the video a bit longer, then retry
- If there's no Transcript bar at all, the recording doesn't have captions — tell the user

### 4. Discover the DOM structure

Google uses obfuscated CSS class names that change periodically. Instead of hardcoding them, discover the current class names by inspecting the page.

The transcript panel contains repeating entries, each with: a **timestamp element** (like "0:08"), a **text element** (containing the speaker name in parentheses followed by the spoken text), and sometimes a "Copy link" element.

Find the class names by searching for timestamp-like content:

```javascript
const allElements = document.querySelectorAll('*');
const timestampEls = [];

allElements.forEach(el => {
  if (el.children.length === 0 && /^\d{1,2}:\d{2}$/.test(el.textContent.trim())) {
    timestampEls.push({
      className: el.className,
      parentClassName: el.parentElement?.className,
      siblingClasses: Array.from(el.parentElement?.children || []).map(c => c.className)
    });
  }
});

JSON.stringify({
  found: timestampEls.length,
  samples: timestampEls.slice(2, 5)
}, null, 2);
```

**Important:** Skip the first two results — they're usually the video player's time display, not transcript entries. The transcript entries are the ones where the parent class repeats consistently across many elements.

From the results, identify three class names:
- **ENTRY_CLASS** — the parent element that wraps each transcript entry
- **TIMESTAMP_CLASS** — the child element containing just the timestamp
- **TEXT_CLASS** — the sibling element containing speaker name + transcript text

The text element's content follows this pattern: `(Speaker Name)\nActual spoken text (Speaker Name)\nmore text`. The speaker name appears in parentheses and may repeat — it's a label, not part of the speech.

### 5. Extract and download

Using the discovered class names, extract all entries, convert to WebVTT, and trigger a browser download:

From RascalTwo/ai-setup, MIT.

More from RascalTwo/ai-setup

Signals

Stars
2
Forks
0
Open issues
0
Last commit (this folder)
Oct 24, 2026 (4 days ago)
Last release
Oct 24, 2026 (4 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from RascalTwo

Cite this page

extract-gdrive-transcript skill. Agent Mart. https://agentmart.dev/skills/rascaltwo-extract-gdrive-transcript (last updated 2026-10-24)