meeting-processor
This skill should be used when processing meeting transcripts to auto-detect meeting type (leadgen, partnership, coaching, internal) and extract typ…
它会碰到什么
逐条看命中(6 条严重或高危)
- 严重
process_interactive.sh:19cred-pathsif [ -f "$SCRIPT_DIR/scripts/.env" ]; then
- 严重
process_interactive.sh:20cred-pathsexport $(cat "$SCRIPT_DIR/scripts/.env" | grep -v '^#' | xargs)
- 高
scripts/detectors.py:22cred-envreadapi_key=os.environ.get('CEREBRAS_API_KEY'), - 高
scripts/extractors/coaching.py:29cred-envreadapi_key=os.environ.get('CEREBRAS_API_KEY'), - 高
scripts/extractors/leadgen.py:29cred-envreadapi_key=os.environ.get('CEREBRAS_API_KEY'), - 高
scripts/extractors/partnership.py:29cred-envreadapi_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-summarizerskill 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:
- Script analyzes transcript and detects meeting type
- Extracts structured data via LLM
- Identifies missing/ambiguous fields
- Returns questions as JSON (exit code 2 signals interaction needed)
- Parse the JSON between
__INTERACTIVE_QUESTIONS__markers - Use AskUserQuestion to collect answers for each question
- 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 textheader: 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 (includespartial_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
- Derive the meetings directory from the processed session note's parent directory (do not hardcode paths).
- Extract session metadata from the processed note:
datefrom frontmatter (YYYYMMDD format)participantsfrom frontmatter (list of names)- If no
participantsfield, extract names from the transcript header or attendee list
- Search for matching prep notes:
find <MEETINGS_DIR> -name "YYYYMMDD-prep-*" -type f 2>/dev/null
Where YYYYMMDD is the session date.
- Validate the match: For each candidate prep note, read its frontmatter and confirm:
- The
datefield matches the session date - The
participantfield matches one of the session's participants (fuzzy: check both full name and first name, case-insensitive) - The
session_notefield is empty ("") — skip already-linked prep notes
- Update both files when a match is found:
In the prep note:
- Set
session_note: "[[session-note-filename]]"(without.mdextension) - Set
status: done
In the session note:
- If a
## See alsosection 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
- Report in the processing output which prep notes were linked, skipped, or not found.
Rules
- Derive
MEETINGS_DIRfrom the session note path, not from hardcoded values - If the meeting-prep
config.yamlis available, readprep_notes.prefix(default:prep) andprep_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 拉。许可未声明的技能只给原始仓库链接,不打包。