| name | elyfinn-voice-notes |
| description | Smart voice memo processor with automatic recording type classification.
Classifies recordings into 7 types and generates type-specific formatted notes.
**MUST use this skill when user mentions:**
- Process/scan voice memos, Voice Memos, recordings
- Convert recordings to notes (meetings, lectures, interviews, etc.)
- Process keynote/lecture/podcast recordings → extracts key insights + quotes
- Process interview recordings → generates evaluation report with scoring
- Process customer/sales call recordings → tracks commitments and follow-ups
- "帮我处理录音"、"语音备忘录"、"录音转笔记"
**Supported recording types (auto-detected):**
- meeting: Internal meetings → TODO list with assignees
- keynote: Lectures/conferences/podcasts → Key insights + quotes
- interview: Job interviews → Evaluation report with 5-dimension scoring
- customer: Sales/BD calls → Commitment tracking
- brainstorm: Brainstorming sessions → Ideas with feasibility analysis
- consult: Expert consultations → Insights summary
- note: Personal voice notes → Clean text formatting
**Do NOT use when:**
- User wants to record audio (use system Voice Memos app)
- Only need raw transcription without formatting (use gemini-transcribe)
- Scan meeting notes or extract TODOs from text files (not voice memos)
|
Elyfinn Voice Notes
Smart voice memo processor that automatically classifies recordings and generates type-specific formatted notes.
Preferences (config.yaml)
Check config file existence (priority order):
test -f ".openclaw/skills/elyfinn-voice-notes/config.yaml" && echo "project"
test -f "$HOME/.openclaw/skills/elyfinn-voice-notes/config.yaml" && echo "user"
| Result | Action |
|---|
| Found | Read and apply settings |
| Not found | MUST run first-time setup (see below) |
config.yaml Supports: Output language | Uncertain handling | Save location | Auto-scan settings
Schema: references/config/config-schema.md
First-Time Setup (BLOCKING)
CRITICAL: When config.yaml is not found, you MUST run the first-time setup before ANY recording processing. This is a BLOCKING operation — do NOT proceed to scan or process recordings until setup is complete.
Full reference: references/config/first-time-setup.md
Use AskUserQuestion to present all questions in ONE message. WAIT for user response before proceeding — do NOT continue until the user has answered.
After user answers, create config.yaml at the chosen location, confirm "✅ Preferences saved to [path]", then continue with processing.
Questions to ask:
🎙️ **Voice Notes Setup**
Let me configure your preferences for processing voice recordings.
**1. Recording Source**
Where are your voice recordings stored?
- 📱 iPhone Voice Memos (Recommended)
macOS: ~/Library/Group Containers/group.com.apple.VoiceMemos.shared/Recordings
- 📂 Custom folder (please specify the full path)
**2. Output Location**
Where should I save the generated notes?
- 📄 ~/Documents/voice-notes (Recommended)
- 📔 Obsidian vault (please specify your vault path, e.g. ~/Documents/Obsidian/meetings)
- 📂 Custom folder (please specify)
**3. Output Language**
What language should the notes be in?
- 🌐 Auto (Recommended) - Follows recording language
- 🇨🇳 Always Chinese
- 🇺🇸 Always English
**4. When AI is Uncertain**
If I'm not sure about the recording type, what should I do?
- ❓ Ask you (Recommended) - Confirm before processing
- 🤖 Auto-process - Trust my best guess
**5. Auto-Scan**
Should I automatically check for new recordings?
- ⏰ Every 30 minutes (Recommended)
- ⏰ Every hour
- ❌ Manual only
After setup: Create ~/.openclaw/skills/elyfinn-voice-notes/config.yaml with user's choices, then proceed.
Quick Start
./skills/elyfinn-voice-notes/scripts/scan-and-dispatch.sh --since-hours 48
./skills/elyfinn-voice-notes/scripts/scan-and-dispatch.sh --all
Output & Side Effects:
@Codex/@Claude → writes to tasks/code-tasks.json (status: "todo")
@article → writes to tasks/content-tasks.json (status: "todo")
@reminder (with cron expression) → writes to config/cron/proactive-reminders.crontab
- Dedup state →
.clawdbot/elyfinn-voice-notes-state.json
- Reminder registry →
.clawdbot/proactive-reminders.json
Data Sources
| Source | Scan Method | Status |
|---|
| Meeting notes | Obsidian meetings/ directory | ✅ Implemented |
| Voice memos | macOS Voice Memos → Gemini transcription | ✅ Implemented |
| Git log | Auto-generate changelog | 🔜 Planned |
| GitHub Issues | gh issue list | 🔜 Planned |
| Code TODOs | grep -r "TODO:" src/ | 🔜 Planned |
| Project BACKLOG | TASKS.md in each project | 🔜 Planned |
Obsidian Configuration
scan-and-dispatch.sh scans by default:
workspace/memory/
~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Obsidian/meetings/ (if exists)
Override with environment variables:
PROACTIVE_OBSIDIAN_MEETINGS=/path/to/meetings
PROACTIVE_SCAN_OBSIDIAN=0 (disable Obsidian scan)
Recording Type Classification
The skill automatically classifies voice recordings into 7 types:
| Type | Characteristics | Output Format |
|---|
meeting | Multiple participants, discussions, task assignments | TODO list with @assignees |
keynote | Single speaker, structured content, insights/quotes | Key points + quotes |
interview | Q&A format, interviewer + candidate | 5-dimension evaluation report |
customer | Business context, requirements, pricing | Commitment tracking |
brainstorm | Divergent thinking, multiple ideas | Ideas with feasibility |
consult | Expert advice, asking for guidance | Insights summary |
note | Personal voice memo, self-talk | Clean formatted text |
Classification Logic
- Participant count: Single → note/keynote, Multiple → meeting/brainstorm/customer
- Dialog pattern: One-way → keynote, Q&A → interview, Discussion → meeting
- Content type: Insights/arguments → keynote, Task assignments → meeting, Business negotiation → customer
- Context clues: "interview"/"candidate" → interview, "customer"/"pricing" → customer
Task Dispatch
⚠️ Important: Confirmation Mechanism
TODOs extracted from voice memos must be discussed with user first before batch dispatch!
Flow:
Transcription complete → Extract all action items → Send to user for review
↓
Discuss & align understanding
↓
Batch dispatch
Purpose: Prevent AI misunderstanding voice content; ensure alignment before action.
Tasks are dispatched based on @tags:
| Tag | Task Type | Execution | Skill/Tool |
|---|
@user | Human task | Push notification | Telegram |
@assistant | Orchestrator task | Direct execution | Built-in tools |
@Codex | Write code | Spawn agent | agent-swarm |
@Claude | Write code (frontend) | Spawn agent | agent-swarm |
@reminder | Set reminder | Create cron/calendar | cron / gcal |
@article | Write article | Draft + publish | baoyu-post-to-* |
@research | Information search | Search & summarize | web_search |
@design | Design/images | Generate image | baoyu-image-gen |
Tag Format (Recommended)
Meeting Template (grouped by assignee)
### @Codex
- [ ] Implement elyfinn-voice-notes scan and dispatch
### @article
- [ ] Write "Agent Swarm Task Discovery" blog post
### @reminder
- [ ] cron: 0 10 * * * Remind to configure Voice Memos disk access
@reminder cron syntax
Only @reminder with cron expression will auto-generate to config/cron/proactive-reminders.crontab:
- Recommended:
cron: 0 10 * * * your reminder content
- Also supported: 5-field cron at the beginning (e.g.,
0 10 * * * your reminder content)
Voice Memos Processing
Prerequisites
macOS System Settings → Privacy & Security → Full Disk Access → Terminal ✅
Processing Flow
Voice file (.m4a/.qta)
↓
Classify recording type (Gemini)
↓
Select type-specific template
↓
Generate formatted notes (Gemini)
↓
Save to Obsidian meetings/
↓
Dispatch tasks by @tags
Scripts
python3 scripts/scan-voice-memos.py
python3 scripts/db.py --stats
python3 scripts/db.py --pending
Data Storage
- Database:
data/elyfinn-voice-notes/proactive.db (SQLite)
- State flow:
pending → processing → processed/failed
- Auto-retry on failure (max 3 times)
Output Templates
Templates for each recording type are in templates/:
meeting.md - Internal meetings (TODO list)
keynote.md - Lectures/conferences (insights + quotes)
interview.md - Job interviews (5-dimension evaluation)
customer.md - Sales/BD calls (commitment tracking)
brainstorm.md - Brainstorming (ideas + feasibility)
consult.md - Expert consultations (insights summary)
note.md - Personal notes (clean text)
Meeting Notes Scanning
Directory Structure
Obsidian/
└── meetings/
├── 2026-02-28-Customer-A.md
└── templates/
└── meeting.md
Scan Script
python3 scripts/scan-meetings.py
python3 scripts/scan-meetings.py --hours 48
python3 scripts/scan-meetings.py --all
python3 scripts/scan-meetings.py --json
Cron Jobs
- Voice memos: Every 30 minutes (OpenClaw cron)
- Meeting notes: Daily at 9:00 AM
Related Skills
| Skill | Relationship |
|---|
agent-swarm | Receives @Codex @Claude tasks, spawns agents |
baoyu-post-to-* | Receives @article tasks, writes & publishes |
gcal | Receives @reminder tasks, creates calendar events |
gemini-transcribe | Used for raw transcription |
This skill discovers tasks; other skills execute them.
Directory Structure
skills/elyfinn-voice-notes/
├── SKILL.md # This file
├── scripts/
│ ├── scan-and-dispatch.sh # Main entry point ⭐
│ ├── scan-voice-memos.py # Voice memo processing ✅
│ ├── scan-meetings.py # Meeting notes scan
│ ├── extract-todos.py # Extract TODOs/@tags
│ ├── db.py # SQLite database
│ └── config.py # User config loading
├── templates/ # Type-specific prompt templates
│ ├── classification.md # Recording type classification
│ ├── meeting.md
│ ├── keynote.md
│ ├── interview.md
│ ├── customer.md
│ ├── brainstorm.md
│ ├── consult.md
│ └── note.md
├── references/
│ └── config/
│ ├── config-schema.md # Config file schema
│ └── first-time-setup.md # First-time setup flow
└── docs/
└── recording-types-design.md
Version History
v0.3.0 (2026-03-19)
- Renamed from
proactive-work to elyfinn-voice-notes
- Added first-time setup with
AskUserQuestion flow
- Config file:
~/.openclaw/skills/elyfinn-voice-notes/config.yaml
- Templates externalized to
templates/ directory
- English SKILL.md with auto-language output
v0.2.0 (2026-03-19)
- Added automatic recording type classification (7 types)
- Type-specific output templates
- Keynote → insights + quotes (no TODOs)
- Interview → 5-dimension evaluation report
- Customer → commitment tracking
v0.1.0 (2026-02-28)
- Initial version (as elyfinn-voice-notes)
- Meeting notes scanning
- Task dispatch logic design