跳到主要内容
知仓学习社ZHICANG

meeting-processor

This skill should be used when processing meeting transcripts to auto-detect meeting type (leadgen, partnership, coaching, internal) and extract typ…

读凭据读文件写文件联网严重 2 · 高危 4glebis/claude-skills

它会碰到什么

扫了多少13 个文本文件,46 KB
它会碰到什么读凭据读文件写文件联网
命中总数14 处
命中统计严重 2 · 高 4 · 中 4 · 低 4
逐条看命中(6 条严重或高危)
  • 严重 process_interactive.sh:19cred-paths
    if [ -f "$SCRIPT_DIR/scripts/.env" ]; then
  • 严重 process_interactive.sh:20cred-paths
    export $(cat "$SCRIPT_DIR/scripts/.env" | grep -v '^#' | xargs)
  • scripts/detectors.py:22cred-envread
    api_key=os.environ.get('CEREBRAS_API_KEY'),
  • scripts/extractors/coaching.py:29cred-envread
    api_key=os.environ.get('CEREBRAS_API_KEY'),
  • scripts/extractors/leadgen.py:29cred-envread
    api_key=os.environ.get('CEREBRAS_API_KEY'),
  • scripts/extractors/partnership.py:29cred-envread
    api_key=os.environ.get('CEREBRAS_API_KEY'),

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

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

| Type | Description | Key Extractions |

|------|-------------|-----------------|

| leadgen | Sales/business development calls | Commitments, pain points, budget, timeline, decision makers, deal stage, sentiment |

| partnership | Collaboration/partnership exploration | Opportunity overview, value proposition, strategic alignment, technical needs, fit assessment |

| coaching | Coaching/mentoring sessions | Insights, decisions, action items, themes, emotional arc, techniques, session quality |

| internal | Internal team meetings | Coming 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).
  1. 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
  1. Search for matching prep notes:
   find <MEETINGS_DIR> -name "YYYYMMDD-prep-*" -type f 2>/dev/null

Where YYYYMMDD is the session date.

  1. 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
  1. 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
  1. 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

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。