Build a Meeting Notes Agent in 20 Minutes

Reading time: 8 minutes | Build time: 20 minutes | Difficulty: Beginner
What you'll build: An OpenClaw agent that transcribes meeting recordings, extracts action items and decisions, identifies speakers, and sends formatted summaries to Slack. Zero manual note-taking.

Contents

Overview

Meeting notes are time-consuming. Recording → transcribing → formatting → distributing takes 30-60 minutes per meeting. This OpenClaw agent automates the entire flow:

  1. Transcribe: Convert audio/video to text using Whisper or AssemblyAI
  2. Structure: Extract action items, decisions, key points, and questions
  3. Identify: Speaker diarization (who said what)
  4. Distribute: Send formatted summary to Slack, email, or Notion
Time saved: 30-60 minutes per meeting × 5 meetings/week = 2.5-5 hours/week = £100-£200/week (at £40/hr consulting rate)

Prerequisites

Cost estimate: 1-hour meeting = £0.36 (Whisper) or £0.37 (AssemblyAI). Monthly cost for 20 meetings/month = £7-£8. Compare to £800/month for a VA doing manual transcription.

Step 1: Create the agent

1 Create a new agent called meeting-notes:

openclaw agent create meeting-notes --description "Transcribes meetings and extracts action items"

This creates ~/.openclaw/agents/meeting-notes/ with these files:

Step 2: Configure transcription

Option A: Whisper API (cheaper, no speaker diarization)

2a Add your OpenAI API key to ~/.openclaw/credentials/openai.json:

{
  "api_key": "sk-..."
}

2b Install the Whisper skill:

openclaw skill install whisper

Option B: AssemblyAI (includes speaker diarization)

2a Add your AssemblyAI API key to ~/.openclaw/credentials/assemblyai.json:

{
  "api_key": "your-assemblyai-key"
}

2b Install the AssemblyAI skill:

openclaw skill install assemblyai

Step 3: Write the prompt

3 Edit ~/.openclaw/agents/meeting-notes/prompt.md:

# Meeting Notes Agent

You are a meeting transcription and summarization specialist.

## Your job

1. Transcribe the uploaded audio/video file
2. Extract structured information
3. Format as a readable summary

## Output format

Use this exact structure:

### Meeting Summary
**Date:** [Extract from filename or content]
**Duration:** [Calculate from audio length]
**Participants:** [List all speakers if diarization available]

### Key Decisions
- [Decision 1]
- [Decision 2]

### Action Items
- [ ] [Action item] - @[Owner] - Due: [Date if mentioned]
- [ ] [Action item] - @[Owner]

### Discussion Points
- **[Topic]:** [Key points discussed]
- **[Topic]:** [Key points discussed]

### Questions Raised
- [Unanswered question 1]
- [Unanswered question 2]

### Next Steps
- [Next meeting date/topic if mentioned]
- [Follow-up actions]

## Instructions

- Use the /whisper or /assemblyai skill to transcribe
- If speaker diarization is available, attribute quotes
- Extract action items even if not explicitly stated (infer from "I'll..." or "We need to...")
- Flag unclear or incomplete action items
- Preserve important quotes verbatim
- Summarize lengthy discussions into key points
- Note any blockers or risks mentioned
- Estimate dates from context (e.g., "next week" → [specific date])

## Examples

**Input:** "So I think we should migrate to the new API by end of month. John, can you handle that?"
**Extract:** Action: Migrate to new API - @John - Due: [Last day of current month]

**Input:** "We decided to go with option B instead of A."
**Extract:** Decision: Selected option B over option A

Step 4: Test the agent

4 Run the agent with a sample meeting recording:

openclaw run meeting-notes --file ~/Downloads/team-standup-2026-03-16.mp3

The agent will:

  1. Transcribe the audio using Whisper/AssemblyAI
  2. Process the transcript through the prompt
  3. Output the structured summary
Expected output: A formatted markdown summary with all sections populated. Save the output to meeting-notes-2026-03-16.md for review.

5 Review the output and refine the prompt if needed:

Step 5: Connect to Slack

6 Create a Slack webhook:

  1. Go to https://api.slack.com/apps
  2. Create new app → From scratch → Name it "Meeting Notes Bot"
  3. Enable "Incoming Webhooks" → Add webhook for your channel
  4. Copy the webhook URL (looks like https://hooks.slack.com/services/...)

7 Add webhook to ~/.openclaw/credentials/slack.json:

{
  "webhook_url": "https://hooks.slack.com/services/..."
}

8 Update your agent prompt to include posting to Slack:

## After generating the summary

Use the /slack skill to post the summary:

/slack post --channel meeting-notes --message "[formatted summary]"

9 Test end-to-end:

openclaw run meeting-notes --file ~/Downloads/client-call-2026-03-16.mp3

You should see the summary posted to your Slack channel within 2-3 minutes.

Automation Options

Option 1: Dropbox/Google Drive trigger

Auto-process recordings when uploaded to a specific folder:

# Add to crontab (check every 5 minutes)
*/5 * * * * openclaw run meeting-notes --watch ~/Dropbox/Meetings/

Option 2: Email attachment trigger

Process meeting recordings sent via email:

openclaw gateway email --agent meeting-notes --filter "subject:meeting recording"

Option 3: Zoom integration

Auto-fetch Zoom cloud recordings:

openclaw skill install zoom
openclaw run meeting-notes --source zoom --auto

Option 4: Manual trigger via Telegram

Upload recording to Telegram, agent processes it:

openclaw gateway telegram --agent meeting-notes

Troubleshooting

Audio file not transcribing

Problem: "Unsupported format" error

Fix: Convert to .mp3 or .wav using ffmpeg:

ffmpeg -i input.m4a -acodec libmp3lame output.mp3

Transcription is gibberish

Problem: Poor audio quality, background noise, multiple speakers talking over each other

Fixes:

Missing action items

Problem: Agent doesn't extract obvious action items

Fix: Add more examples to the prompt:

## Action item extraction rules

Extract action items from:
- "I'll [do thing]" → Action: [do thing] - @[Speaker]
- "Can you [do thing]?" → Action: [do thing] - @[Person asked]
- "We need to [do thing]" → Action: [do thing] - @Team
- "Let's [do thing] by [date]" → Action: [do thing] - @Team - Due: [date]

Slack post failing

Problem: "Webhook not found" or permission error

Fixes:

High costs

Problem: Transcription costs adding up

Optimization strategies:

Strategy Savings How
Use Whisper instead of AssemblyAI ~£0.30/hour If you don't need speaker diarization
Compress audio before transcription 20-40% ffmpeg -i input.mp3 -b:a 64k output.mp3
Skip intro/outro music 10-20% Trim audio: ffmpeg -ss 00:01:00 -to 00:45:00 -i input.mp3 output.mp3
Use local Whisper model 100% Install whisper.cpp locally (slower but free)

Next Steps

You've just built a meeting notes agent! This is one of the "First 3 Projects" covered in Module 3 of the OpenClaw Course.

Enhancements

Related guides

Want to build 10 more agents like this?

The OpenClaw Course teaches you to build a complete 11-agent business automation system. 10 modules, 95,000+ words, real configs and commands. From security to scaling to £500k+.

View Course (£97) Read Free Chapter

Need help getting this working?

Dan offers private 1-hour OpenClaw setup sessions for £1,500. Get your agents running, security locked down, and cost optimized. Book via LinkedIn.


← Back to homepage | View Course | Installation Guide | FAQ