← Back to Skills Marketplace
harrylabsj

Minutes Taker

by haidong · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
47
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install minutes-taker
Description
Convert meeting transcripts into structured minutes with decision tracking, task assignment, three-tier summaries, and cross-meeting correlation.
README (SKILL.md)

AI Meeting Minutes (minutes-taker)

Convert meeting transcripts or text into structured, actionable minutes. The skill extracts decisions, action items, risks, and key dates, generates three-tier summaries (one-liner → three-para → full), and tracks decisions and todos across meetings.

Core strengths: Decision chain tracking across meetings, todo lifecycle management (extract → assign → track → remind), and three-level summaries for different consumption contexts.

Audio support: ASR (speech-to-text) is available via plugin backends. See ASR Backends below.

Quick Start

clawhub run minutes-taker --input-type text \
  --content "Zhang: Today we discuss the payment module. Li: I suggest using Stripe. Wang: Agreed. Zhang: OK, Li to deliver the proposal by Friday."

This produces structured minutes with decisions, todos, and a three-level summary.

Features

Feature Description
Input Modes Plain text, chat logs, structured forms. Audio via ASR backend (see below)
ASR (Speech-to-Text) Pluggable: whisper (offline) or SpeechRecognition (Google API). No diarization by default
6 Extractors Decisions, Todos, Dates, Risks, Ideas, Data Points
3-Level Summaries L1 one-liner, L2 three-paragraph, L3 full minutes
Decision Chain Track decisions across meetings with evolution history
Todo Lifecycle Auto-extract, assign, deadline parse, priority infer, track across meetings
Cross-meeting Links Detect recurring topics, link related decisions and todos
Multiple Outputs Markdown, text, HTML, feishu, notion (via extensions)

ASR Backends

The asr.py module auto-detects available backends at runtime:

Backend Quality Offline Requirements
whisper (openai-whisper) ⭐⭐⭐ High ✅ Yes pip install openai-whisper
speech_recognition (Google API) ⭐⭐ Medium ❌ No pip install SpeechRecognition (pre-installed)

Transcription is attempted in priority order: whisper → speech_recognition. Speaker diarization is NOT performed; the system labels all text as a single speaker. For multi-speaker audio, provide a participants list or use post-processing.

Input Format

{
  "input": {
    "type": "text",
    "content": "Zhang: Today we discuss...",
    "format": "chat_log"
  },
  "meeting_context": {
    "title": "Q2 Product Roadmap Review",
    "date": "2026-06-14",
    "participants": [
      {"name": "Zhang San", "role": "PM"},
      {"name": "Li Si", "role": "Frontend Dev"}
    ],
    "agenda": ["Payment module", "Growth tools"]
  },
  "options": {
    "summary_level": "full",
    "extract_todos": true,
    "extract_decisions": true,
    "output_format": "markdown"
  }
}

Sample Prompts

Prompt 1: Text-based Meeting Minutes (Quick Start)

clawhub run minutes-taker --input-type text \
  --content "Zhang: Today we discuss the payment module. Li: I suggest using Stripe. Wang: Agreed. Zhang: OK, Li to deliver the proposal by Friday." \
  --title "Payment Module Discussion" \
  --participants "Zhang San (PM), Li Si (FE), Wang Wu (BE)"

Expected output: Structured minutes with:

  • 📌 Summary: Payment module discussion → Stripe chosen, Li to deliver
  • ✅ Todos: Li Si - deliver Stripe proposal by Friday (🔴 High)
  • 📊 Decisions: Use Stripe SDK (Zhang proposed, unanimous)
  • L1: "Decided to use Stripe for payment module; Li to submit proposal by Friday"
  • L2/L3: Full expanded minutes

Prompt 2: Audio File Processing

clawhub run minutes-taker --input ./meeting-2026-06-14.m4a \
  --title "Q2 Product Roadmap Review" \
  --participants @team.json

Expected output: Transcribed text with structured minutes (decisions, todos, risks, summary). Requires an ASR backend (see ASR Backends). If no backend is available, returns a clear error guiding installation.

Prompt 3: Todo Tracking

clawhub run minutes-taker todos --since last_meeting

Expected output:

📋 Previous Meeting Todo Tracking (2026-06-07)
✅ Complete (3/5):
  ✅ Li Si · Payment frontend tech proposal (PR #2341 submitted)
⏳ In Progress (1/5):
  ⏳ Zhao Liu · Growth tool prototype (60%, due 06/16)
❌ Overdue (1/5):
  ❌ Zhang San · Competitive analysis report (3 days overdue)

Prompt 4: Decision Chain

clawhub run minutes-taker decisions --topic "Payment Module"

Expected output:

📜 Decision Chain: Payment Module Refactor
06/01 Weekly: "We need to refactor payment module" (Zhang)
06/07 Tech Review: Chose Stripe SDK (Wang proposed, 3:2 passed)
06/14 Roadmap Review: Launch date set to July 20, added stress test → [This meeting]

Prompt 5: Three-Level Summary

clawhub run minutes-taker --input-type text --content "$(cat transcript.txt)" \
  --summary-level three_para --output-format text

Expected output: Concise three-paragraph summary ready for WeChat/email.

First-Success Path

Goal: Structured minutes from 3 lines of dialogue within 30 seconds.

Step 1: clawhub install minutes-taker
Step 2: clawhub run minutes-taker --input-type text \
  --content "Zhang: Today we discuss payment. Li: I suggest Stripe. Wang: OK. Zhang: Li, make proposal by Friday."
Step 3: Internal pipeline:
  a. input.py parses text, identifies speakers
  b. segmenter.py (single topic, no split needed)
  c. extractor.py extracts: 1 decision, 1 todo, 0 risks
  d. summarizer.py generates L1/L2/L3 summaries
  e. formatter.py renders Markdown
Step 4: User sees structured minutes with decision + todo
Step 5: Next step: try audio → requires ASR backend (see ASR Backends section)

Architecture

minutes-taker/
├── SKILL.md
├── scripts/
│   ├── asr.py             # ASR audio transcription (pluggable backends)
│   ├── input.py           # Input parsing (audio/text/chat)
│   ├── segmenter.py       # Topic segmentation
│   ├── extractor.py       # Decision/todo/risk/idea/data extraction
│   ├── summarizer.py      # Three-level summary generation
│   ├── decision_chain.py  # Cross-meeting decision tracking
│   ├── todo_tracker.py    # Todo lifecycle management
│   ├── formatter.py       # Minutes formatting
│   └── storage.py         # Local minutes storage & retrieval
└── references/
    └── examples.json       # Sample inputs/outputs

Pipeline

Input (text/audio/chat)
    │
    ▼
input.py ──► Parsed Input (content + speakers)
    │
    ▼
segmenter.py ──► Topic Segments
    │
    ▼
extractor.py ──► Decisions, Todos, Risks, Ideas, Dates, Data
    │
    ▼
summarizer.py ──► L1, L2, L3 Summaries
    │
    ▼
formatter.py ──► Markdown / Text / HTML
    │
    ▼
storage.py ──► Saved to ~/.openclaw/data/minutes-taker/

Error Handling

Code Scenario Action
E001 Audio file not found Error + path check
E002 Unsupported audio format List supported formats + convert via ffmpeg
E003 ASR processing failure Error + offer manual text input; list available backends
E004 LLM timeout Fall back to basic template
E005 LLM format error Retry 1x, then return raw text
E006 Export API unavailable Save locally + retry hint
E007 History data unavailable Skip cross-refs, generate current
E008 Empty participants list Auto-detect from content

Security

  • ASR backends vary: whisper is fully offline (no network upload); Google Speech API sends audio to Google servers
  • Privacy notice: When using speech_recognition backend, audio data is transmitted to Google for transcription
  • Local storage: Minutes stored at ~/.openclaw/data/minutes-taker/ with configurable directory
  • File permissions: Minutes files default to 600 (user-only read/write)
  • Sensitive detection: Marks potential sensitive content (salary, HR topics) with ⚠️
  • LLM context splitting: Sends meeting text by topic segments, not the full transcript at once

Dependencies

  • Python 3.10+
  • ffmpeg (for audio conversion)
  • Optional: openai-whisper for local offline ASR
  • Pre-installed: SpeechRecognition for Google Speech API ASR
Usage Guidance
Install only if you are comfortable with meeting audio potentially being sent to Google when Whisper is unavailable and with minutes, decisions, and todos being stored locally under your home directory. For confidential meetings, use an offline ASR backend, avoid running the helper scripts directly, and periodically review or delete the stored data.
Capability Tags
requires-sensitive-credentials
Capability Assessment
Purpose & Capability
The core capabilities are coherent for meeting minutes: transcription, extraction, summaries, decisions, and todo tracking. The concern is that audio transcription can fall back to Google Web Speech automatically when offline Whisper is unavailable.
Instruction Scope
The README discloses Google ASR and local storage, but the runtime code does not require just-in-time consent before using the remote ASR backend, and todo status mutation is exposed as part of the helper code.
Install Mechanism
No install-time autorun, hidden package-install behavior, background worker, or privilege-escalation mechanism was found in the artifacts or metadata.
Credentials
Processing user-provided meeting text and audio is purpose-aligned, but meeting audio and minutes are sensitive; automatic third-party ASR and broad local history search increase the impact of normal use.
Persistence & Privilege
The skill persistently stores full minutes, decision history, and todos under ~/.openclaw/data/minutes-taker/. This is disclosed, but the code does not enforce the documented 600 file permissions and demo self-test code can delete the production todo file if run directly.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install minutes-taker
  3. After installation, invoke the skill by name or use /minutes-taker
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
AI Meeting Minutes 1.1.0 introduces major capabilities for extracting and tracking decisions, tasks, and summaries from meetings. - Adds support for structured minutes: extract decisions, action items, risks, and key dates from transcripts or audio. - Three-level summaries: auto-generate one-liner, three-paragraph, and full minutes for different use cases. - Decision chain tracking: link related decisions and todos across multiple meetings. - Todo lifecycle management: auto-extract, assign, parse deadlines, infer priorities, and track progress. - Pluggable speech-to-text (ASR) backend: supports both offline (whisper) and Google API transcription. - Output options include Markdown, text, HTML, and integrations (e.g., Feishu, Notion).
Metadata
Slug minutes-taker
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Minutes Taker?

Convert meeting transcripts into structured minutes with decision tracking, task assignment, three-tier summaries, and cross-meeting correlation. It is an AI Agent Skill for Claude Code / OpenClaw, with 47 downloads so far.

How do I install Minutes Taker?

Run "/install minutes-taker" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Minutes Taker free?

Yes, Minutes Taker is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Minutes Taker support?

Minutes Taker is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Minutes Taker?

It is built and maintained by haidong (@harrylabsj); the current version is v1.0.0.

💬 Comments