Gathers and normalizes meeting transcripts from Fireflies, Otter, Gemini, Notion, or local files into a unified format. Activates when the user has a transcript to import, wants to pull meeting notes from a service, or provides a file to analyze. Auto-detects the source format and normalizes speaker labels, dates, and structure for downstream analysis.
From founder-osnpx claudepluginhub thecloudtips/founder-os --plugin founder-osThis skill uses the workspace's default tool permissions.
references/source-formats.mdDesigns and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Gather meeting transcripts and notes from multiple sources, normalize them into a unified NormalizedTranscript structure, and pass the result downstream to the meeting-analysis skill. Support five source adapters: Fireflies.ai file exports, Notion meeting notes pages, Otter.ai file exports, Gemini transcripts from Google Drive, and generic local files. When the user does not specify a source type, auto-detect from content patterns.
For detailed format detection patterns, signature strings, and example content per source, see ${CLAUDE_PLUGIN_ROOT}/skills/meeting/source-gathering/references/source-formats.md.
When processing a source, follow this decision tree in order:
--source=fireflies|otter|gemini|notion|auto, use that adapter directly. Skip to the adapter section.--notion, route to the Notion adapter. If a file path or pasted text, proceed to content-based detection.| Priority | Source | Detection Signals |
|---|---|---|
| 1 | Fireflies.ai | Header containing "Fireflies.ai", speaker labels in Speaker Name: format, timestamp format HH:MM:SS |
| 2 | Otter.ai | Footer containing "Otter.ai" or "Transcribed by Otter", SRT subtitle format with sequential numeric IDs |
| 3 | SRT/VTT subtitle | .srt extension with --> timestamp arrows, or .vtt extension with WEBVTT header |
| 4 | Generic text/markdown | .txt or .md with no recognized service signatures |
Apply first-match-wins: stop at the first matching signature. When no signature matches, fall back to the Generic Local Files adapter.
.srt file with "Otter.ai" in the footer), prefer the more specific adapter (Otter.ai over generic SRT).Report the detected source before processing: "Detected source: [Fireflies.ai/Otter.ai/Notion/Gemini/Local File]".
All source adapters produce output conforming to this schema. Downstream skills (meeting-analysis) depend on this structure.
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Meeting title. Infer from filename or metadata if not explicit. |
date | string (ISO 8601) | Yes | Meeting date in YYYY-MM-DD format. Parse from metadata, filename, or file modified date as fallback. |
duration | string | No | Meeting length (e.g., "45 minutes"). Compute from first/last timestamp when available. |
attendees | string[] | Yes | List of participant names. Empty array [] when participants cannot be determined. |
source_type | enum | Yes | One of: fireflies, otter, notion, gemini, local_file |
source_path | string | Yes | Absolute file path, Notion page URL, or Drive document URL. |
transcript_text | string | Yes | Full transcript with speaker labels and timestamps preserved where available. |
For each field, attempt extraction in this order and use the first successful result:
Each adapter handles source-specific ingestion and maps output to the NormalizedTranscript schema. Detailed format patterns and example content live in ${CLAUDE_PLUGIN_ROOT}/skills/meeting/source-gathering/references/source-formats.md.
Read .txt or .json exports from local disk via Filesystem MCP.
Speaker Name: format, timestamps in HH:MM:SS format..json, parse structured fields directly: title, date, duration, attendees, transcript.segments[].speaker, transcript.segments[].text.Speaker Name: text patterns. Compute duration from first and last HH:MM:SS timestamps.Search Notion for meeting note pages via Notion MCP.
--date is provided, filter results to pages with a Date property or Created time matching that date. When no date filter, return the most recent 5 matching pages and prompt the user to select.source_path.Read .txt or .srt exports from local disk via Filesystem MCP.
--> timestamp separators.Speaker Name HH:MM:SS or Speaker Name: patterns. Extract meeting title and date from the header if present.HH:MM:SS,mmm --> HH:MM:SS,mmm, text lines). Convert timestamps to HH:MM:SS format. Join text lines per block. Strip HTML formatting tags (<b>, <i>, etc.) from subtitle text.Search Google Drive for Gemini-generated meeting transcripts via Google gws CLI (Drive).
source_path.Accept .txt, .md, .srt, .vtt files from local disk via Filesystem MCP.
[HH:MM:SS] text.-->, optional cue settings). Strip VTT headers and metadata. Convert to plain text with inline timestamps..md files as-is. Extract title from the first # heading. Treat the body as transcript text..txt files as-is. Attempt speaker label detection (patterns: Name:, [Name], SPEAKER_N:). When no speaker labels are found, treat entire content as a single-speaker transcript.When --source=auto (the default) and the input is a file path, apply this procedure:
.srt and .vtt files through format-specific parsing regardless of content signatures.Maintain a lookup of signature patterns per source. The primary patterns:
/Fireflies\.ai/i in first 20 lines, HH:MM:SS timestamps preceding or following speaker names./Otter\.ai|Transcribed by Otter/i anywhere in file, or SRT format with speaker prefixes in subtitle text.^\d+$ followed by lines matching \d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}$.WEBVTT header line.For the full pattern catalog with examples, see ${CLAUDE_PLUGIN_ROOT}/skills/meeting/source-gathering/references/source-formats.md.
Transcripts from different sources use inconsistent speaker label formats. Normalize all speaker labels before producing the NormalizedTranscript.
Meeting dates appear in varied formats across sources and metadata.
YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS.MM/DD/YYYY, Month DD, YYYY.DD/MM/YYYY (use locale context to disambiguate from US format; default to US when ambiguous).YYYY-MM-DD from filename strings like meeting-2026-03-05.txt.Always output dates in YYYY-MM-DD format in the NormalizedTranscript.
| Server | Purpose | Required | Degradation |
|---|---|---|---|
| Notion | Search for meeting notes pages, save intelligence output to "[FOS] Meetings" | Required | Abort with error if unavailable |
| Filesystem | Read local transcript files (.txt, .json, .srt, .vtt, .md) | Required | Abort with error if unavailable |
| Google Drive | Search for Gemini-generated meeting transcripts | Optional | Skip Gemini adapter. Report: "Drive not connected -- Gemini source unavailable." |
| Gmail | Enrich meeting context with related email threads | Optional | Skip email enrichment. Report: "Gmail not connected -- email context unavailable." |
When an optional MCP source is unavailable, continue the pipeline with remaining sources. Never fail the entire gathering process due to an optional source being offline.
attendees to [] and proceed. The meeting-analysis skill handles unlabeled transcripts.The NormalizedTranscript output feeds directly into the meeting-analysis skill. Ensure:
transcript_text preserves speaker labels in a consistent Speaker Name: text format per line or paragraph.[HH:MM:SS] format preceding the associated text.source_type field provides context about transcript origin quality. Professional transcription services (Fireflies, Otter) typically produce more accurate speaker labels and timestamps than generic local files.attendees list enables the meeting-analysis skill to attribute decisions and follow-ups to specific people.Consult this reference file for detailed implementation guidance:
${CLAUDE_PLUGIN_ROOT}/skills/meeting/source-gathering/references/source-formats.md -- Detailed format detection patterns per source, example file headers and footers, JSON schema examples for Fireflies exports, SRT/VTT format specifications, Notion page structure patterns, and Gemini transcript format samples.