Agent skill
mindwork-transcribe
Transcribe therapy session recordings to formatted text. Converts audio to clean, speaker-labeled transcripts (Me/Therapist format) with grammar correction and English translation. Use when processing therapy recordings, session audio, or any two-person conversation recording.
Install this agent skill to your Project
npx add-skill https://github.com/tolgaio/mindwork/tree/main/skills/mindwork-transcribe
SKILL.md
Therapy Session Transcriber
Part of the mindwork suite. Converts therapy session recordings into clean, formatted transcripts.
What It Does
- Chunks large audio files at natural silence points (sentence boundaries)
- Transcribes using OpenAI Whisper API
- Formats as two-person conversation with Me: / Therapist: labels
- Corrects grammar and transcription errors
- Translates to English (for non-English sessions)
Prerequisites
- Docker installed and running
OPENAI_API_KEYenvironment variable set- The
mindwork-transcribeDocker image built (see Setup)
Setup (One-Time)
Build the transcription Docker image from the plugin's transcribe directory:
# Find the mindwork plugin location and build the image
docker build -t mindwork-transcribe ~/src/mindwork/transcribe
Or if installed as a plugin, find the plugin path first:
# The transcribe tool is in the 'transcribe/' directory of this plugin
docker build -t mindwork-transcribe /path/to/mindwork/transcribe
Usage
Full Therapy Session Processing (Recommended)
Transcribe, format as conversation, and translate to English:
docker run --rm \
-e OPENAI_API_KEY \
-v $(pwd):/data \
mindwork-transcribe /data/session.m4a --format-conversation --output /data/transcript.txt
Raw Transcription Only
Just transcribe without formatting or translation:
docker run --rm \
-e OPENAI_API_KEY \
-v $(pwd):/data \
mindwork-transcribe /data/session.m4a --output /data/transcript.txt
With Speaker Diarization
For automatic speaker detection (alternative to --format-conversation):
docker run --rm \
-e OPENAI_API_KEY \
-v $(pwd):/data \
mindwork-transcribe /data/session.m4a --diarize --output /data/transcript.txt
Only Chunk (No Transcription)
Split a large file into chunks for later processing:
docker run --rm \
-v $(pwd):/data \
mindwork-transcribe /data/session.m4a --no-transcribe --keep-chunks
Process Existing Chunks
Resume from previously created chunks:
docker run --rm \
-e OPENAI_API_KEY \
-v $(pwd):/data \
mindwork-transcribe /data/chunks/ --format-conversation --output /data/transcript.txt
Options Reference
| Option | Description |
|---|---|
--output FILE |
Save transcript to file (default: stdout) |
--format-conversation |
Format as Me/Therapist dialogue + translate to English |
--diarize |
Auto-detect speakers (uses gpt-4o-transcribe-diarize) |
--no-transcribe |
Only chunk, skip transcription |
--keep-chunks |
Preserve chunk files after processing |
--model MODEL |
whisper-1 (default, fast) or gpt-4o-transcribe (better accuracy) |
Supported Audio Formats
mp3, mp4, m4a, wav, webm, ogg, flac
Configuration (mindwork.yaml)
If a mindwork.yaml config file exists, use it to determine output paths:
vault: ~/Therapy
sources:
recordings:
paths: [recordings/]
outputs:
transcriptions: transcriptions/
Config locations (checked in order):
./mindwork.yaml(current directory)~/.config/mindwork/config.yaml~/.mindwork.yaml
Default behavior (no config):
- Save to current directory or user-specified
--outputpath
With config:
- Save to
{vault}/{outputs.transcriptions}/{date}-{filename}.md - Example:
~/Therapy/transcriptions/2024-01-15-session-001.md
See config/mindwork.example.yaml for full configuration options.
Output Format
With --format-conversation, output looks like:
**Me:** I've been feeling anxious about work lately. The deadlines keep piling up.
**Therapist:** That sounds overwhelming. Can you tell me more about what specifically triggers that anxiety?
**Me:** It's mostly when I have multiple projects due at the same time...
Cost Estimate
OpenAI Whisper API: ~$0.006/minute of audio GPT-4o for formatting/translation: ~$0.01-0.02 per session (varies by length)
A typical 50-minute session costs approximately $0.30-0.50 total.
Troubleshooting
"Docker image not found" Build the image from the plugin's transcribe directory:
docker build -t mindwork-transcribe /path/to/mindwork/transcribe
"OPENAI_API_KEY not set"
export OPENAI_API_KEY="sk-..."
"File not found" Ensure you're in the directory containing your audio file, or use absolute paths.
Transcription quality issues
Try --model gpt-4o-transcribe for better accuracy (same price as whisper-1).
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
mindwork-insights
Build and maintain a personal profile from therapy sessions and journal entries. Creates a living document that accumulates self-knowledge about patterns, strengths, coping strategies, and growth over time. Unlike other skills, insights updates an existing profile rather than creating new files.
mindwork-progress
Track progress over time across therapy sessions and journal entries. Supports trend analysis, session comparisons, period summaries, and goal tracking. Reads from analysis files and generates comprehensive progress reports.
mindwork-analyze
Analyze therapy session transcripts or journal entries. Identifies cognitive patterns, emotional themes, and tracks progress over time. Automatically references recent analyses for context. Use for session analysis, journal reflection analysis, or pattern identification.
mindwork-summary
Generate summaries of therapy sessions and journal entries at various lengths and for different audiences. Supports action item extraction, highlights reels, and session prep. Use for quick recaps, sharing with others, or preparing for your next session.
obsidian-vault
Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.
edit-article
Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.
Didn't find tool you were looking for?