meeting-processor

v2026.09.24

This skill should be used when processing meeting transcripts to auto-detect meeting type (leadgen, partnership, coaching, internal) and extract type-specific structured analysis. Triggers on "process meeting", "analyze meeting", "meeting summary", or after syncing new Fathom/Granola transcripts.

GitHub
安装命令
npx skhub add glebis/meeting-processor
Markdown
SKILL.md

Meeting Processor

Intelligent meeting transcript processor that auto-detects meeting type and applies type-specific extraction with optional interactive clarification.

When to Use

  • After syncing Fathom or Granola transcripts (/fathom --today, /granola export)
  • When asked to process, analyze, or summarize a meeting transcript
  • When a new meeting transcript appears in the vault root matching YYYYMMDD-*.md
  • For coaching sessions, delegate to coaching-session-summarizer skill instead

Prerequisites

pip install openai pyyaml

Requires CEREBRAS_API_KEY environment variable (uses Cerebras API with llama-3.3-70b).

Supported Meeting Types

TypeDescriptionKey Extractions
leadgenSales/business development callsCommitments, pain points, budget, timeline, decision makers, deal stage, sentiment
partnershipCollaboration/partnership explorationOpportunity overview, value proposition, strategic alignment, technical needs, fit assessment
coachingCoaching/mentoring sessionsInsights, decisions, action items, themes, emotional arc, techniques, session quality
internalInternal team meetingsComing soon

Usage

Interactive Mode (default)

Run the processor, which auto-detects meeting type and asks clarifying questions:

python3 ~/.claude/skills/meeting-processor/scripts/process.py <transcript-file> --mode interactive

Interactive flow:

  1. Script analyzes transcript and detects meeting type
  2. Extracts structured data via LLM
  3. Identifies missing/ambiguous fields
  4. Returns questions as JSON (exit code 2 signals interaction needed)
  5. Parse the JSON between __INTERACTIVE_QUESTIONS__ markers
  6. Use AskUserQuestion to collect answers for each question
  7. Save answers to a temp JSON file and re-run with process_with_answers.py

Handling interactive questions:

When the script exits with code 2, parse the output for questions JSON. Each question has:

  • question: The question text
  • header: Short label (used as answer key)
  • options: Array of {label, description} for AskUserQuestion

After collecting answers, create two temp files:

  • questions.json — the original questions context (includes partial_data, meeting_type, transcript_file)
  • answers.json — map of {header_lowercase: selected_label}

Then run:

python3 ~/.claude/skills/meeting-processor/scripts/process_with_answers.py questions.json answers.json

Batch Mode

Extract only high-confidence information without user interaction:

python3 ~/.claude/skills/meeting-processor/scripts/process.py <transcript-file> --mode batch

Force Meeting Type

Skip auto-detection:

python3 ~/.claude/skills/meeting-processor/scripts/process.py <transcript-file> --type leadgen
python3 ~/.claude/skills/meeting-processor/scripts/process.py <transcript-file> --type partnership

Output

Analysis is appended to the transcript file as a ## Meeting Analysis section. Frontmatter is updated with meeting_type, processed_date, and processing_mode.

Leadgen Output Structure

  • Commitments & Actions — with deadlines and owners
  • Follow-up — next meeting date if scheduled
  • Client Context — pain points, budget, timeline, decision makers
  • Deal Assessment — stage (cold/warm/hot), probability (1-5), blocker, sentiment

Partnership Output Structure

  • Opportunity — description and value proposition for both sides
  • Commitments & Actions — with deadlines and owners
  • Follow-up — next meeting date if scheduled
  • Partnership Context — strategic alignment, technical needs, resources, challenges
  • Opportunity Assessment — fit (strong/medium/weak), readiness, success factors, sentiment

Step 2: Auto-Link Prep Notes

After the meeting analysis is complete (Step 1), automatically link any matching meeting-prep notes to the session note. This replaces the need to manually run /meeting-prep link.

How It Works

  1. Derive the meetings directory from the processed session note's parent directory (do not hardcode paths).

  2. Extract session metadata from the processed note:

    • date from frontmatter (YYYYMMDD format)
    • participants from frontmatter (list of names)
    • If no participants field, extract names from the transcript header or attendee list
  3. Search for matching prep notes:

    find <MEETINGS_DIR> -name "YYYYMMDD-prep-*" -type f 2>/dev/null
    

    Where YYYYMMDD is the session date.

  4. Validate the match: For each candidate prep note, read its frontmatter and confirm:

    • The date field matches the session date
    • The participant field matches one of the session's participants (fuzzy: check both full name and first name, case-insensitive)
    • The session_note field is empty ("") — skip already-linked prep notes
  5. Update both files when a match is found:

    In the prep note:

    • Set session_note: "[[session-note-filename]]" (without .md extension)
    • Set status: done

    In the session note:

    • If a ## See also section exists, add - [[YYYYMMDD-prep-participant-slug]] to it
    • Otherwise, append a new section at the end:
      ## Prep Note
      - [[YYYYMMDD-prep-participant-slug]]
      
    • Never create duplicate links — check if the link already exists before adding
  6. Report in the processing output which prep notes were linked, skipped, or not found.

Rules

  • Derive MEETINGS_DIR from the session note path, not from hardcoded values
  • If the meeting-prep config.yaml is available, read prep_notes.prefix (default: prep) and prep_notes.type_tag (default: meeting-prep)
  • This step is non-blocking: if it fails or finds no prep notes, processing still succeeds
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

meeting-processor

默认分支

main

最新提交

d0bc206

Tree SHA

2914a98