Quill Meeting Export
Overview
Extract meeting data from Quill (macOS meeting recording app) and generate formatted markdown output with speaker-identified transcripts, meeting metadata, and Quill's AI-generated notes.
This skill provides:
- Database extraction from Quill's SQLite database
- Speaker name mapping from contact records
- Transcript formatting with speaker identification
- Markdown generation with YAML frontmatter
- Meeting search by ID or fuzzy name matching
When to Use This Skill
Activate when working with Quill meeting data:
- Extracting meeting transcripts
- Converting Quill recordings to markdown
- Searching for meetings by name
- Getting meeting metadata and participants
Workflow
Step 1: List Available Meetings
Show recent meetings from Quill:
python3 ~/.claude/skills/quill-export/scripts/export_meeting.py list [limit]
Output (to stderr):
- Meeting ID (UUID)
- Title
- Date and time
- Duration
- Meeting type
Step 2: Export Meeting
Export meeting by ID or search term:
# By exact ID
python3 ~/.claude/skills/quill-export/scripts/export_meeting.py export 76490ffc-d751-4a2a-9ef5-df4d3ddce442
# By fuzzy search term
python3 ~/.claude/skills/quill-export/scripts/export_meeting.py export "orchestrator"
Output (to stdout):
- Complete markdown document
- YAML frontmatter with metadata
- Transcript with real speaker names (if tagged in Quill)
- Original Quill-generated notes
- Audio file links
Fuzzy Search Behavior:
- Case-insensitive partial matching
- If single match: Exports automatically
- If multiple matches: Lists options (stderr) and exits
- If no matches: Error message and exit
Step 3: Use the Markdown Output
The markdown is printed to stdout, allowing flexible usage:
# Save to file
python3 export_meeting.py export "meeting name" > output.md
# Pipe to other tools
python3 export_meeting.py export <id> | pbcopy
# Capture in a variable (from another script/tool)
markdown=$(python3 export_meeting.py export <id>)
Database Schema
The script queries Quill's SQLite database at ~/Library/Application Support/Quill/quill.db.
See references/quill-schema.md for complete schema documentation including:
- Meeting table structure
- Transcript JSON format
- ContactMeeting speaker mapping
- Meeting type classifications
Speaker Name Mapping
The script automatically maps anonymous speaker IDs to real names:
How it works:
- Queries
ContactMeetingtable for speaker IDs - Looks up contact names in
Contacttable - Replaces speaker IDs (e.g.,
SPK-abc123) with real names in transcript
When names are available:
**James LePage:** Hello, how are you?
**Ember:** I'm doing well, thanks!
When names are not available:
**SPK-mvjxhzyf43:** Hello, how are you?
**SPK-h6xiau6chjv:** I'm doing well, thanks!
Meeting Type Classification
Meetings are categorized as work or personal based on type:
Work types:
1on1,internal_product,internal_sync,internal_standupexisting_vendor:customer,other
Personal types:
personal,self_note,medical:patient
Category appears in YAML frontmatter type field.
Markdown Output Format
---
meeting_id: {UUID}
type: work|personal
date: YYYY-MM-DD
start_time: HH:MM
duration: X minutes
participants: ["Name 1", "Name 2"]
tags: ["meeting", "type", ...]
---
# {Meeting Title}
## Summary
_AI summary will be generated here_
## Key Discussion Points
_Key points will be extracted here_
## Action Items
_Action items will be extracted here_
## Related
_Links to related tasks and projects_
## Original Quill Notes
{Quill's AI-generated meeting notes}
## Transcript
**Speaker:** Transcript text...
## Audio
[Recording](file:///path/to/audio.m4a)
Audio File Handling
Audio files remain in Quill's directory:
- Location:
~/Library/Application Support/Quill/meetings/ - Linked using
file://absolute URLs - Only the combined audio file is linked (
*-combined.m4a)
Error Handling
Meeting not found:
- Prints error to stderr
- Exit code 1
Multiple search matches:
- Lists all matching meetings to stderr
- Prompts user to be more specific
- Exit code 1
Database errors:
- Connection failures reported to stderr
- Exit code 1
Usage Examples
List recent meetings:
python3 export_meeting.py list 10
Export by ID:
python3 export_meeting.py export 76490ffc-d751-4a2a-9ef5-df4d3ddce442 > meeting.md
Export by name search:
python3 export_meeting.py export "AI Discussion" > meeting.md
Integration with other tools:
# Copy to clipboard
python3 export_meeting.py export "sync meeting" | pbcopy
# Save with custom filename
python3 export_meeting.py export <id> > ~/Notes/$(date +%Y-%m-%d)-meeting.md
Resources
scripts/export_meeting.py
Python script for extracting meeting data and generating markdown.
Functions:
connect_db()- Connect to Quill databaseget_speaker_names(conn, meeting_id)- Map speaker IDs to nameslist_recent_meetings(conn, limit)- List meetingssearch_meetings(conn, search_term)- Fuzzy search by titleget_meeting(conn, meeting_id)- Fetch meeting dataformat_transcript(transcript, speaker_names)- Format with namesformat_meeting_markdown(meeting)- Generate markdown output
references/quill-schema.md
Complete Quill database schema documentation.
assets/meeting-template.md
Template showing markdown structure and formatting.