home / skills / openclaw / skills / meeting-autopilot

meeting-autopilot skill

/skills/tkuehnl/meeting-autopilot

This skill converts meeting transcripts into actionable outputs such as decisions, action items, email drafts, and ticket drafts, not mere summaries.

npx playbooks add skill openclaw/skills --skill meeting-autopilot

Review the files below or copy the command above to add this skill to your agents.

Files (13)
SKILL.md
5.3 KB
---
name: meeting-autopilot
description: >
  Turn meeting transcripts into operational outputs — action items, decisions,
  follow-up email drafts, and ticket drafts. Not a summarizer. An operator.
  Accepts VTT, SRT, or plain text. Multi-pass LLM extraction.
version: 0.1.1
author: Anvil AI
tags: [meetings, productivity, action-items, email-drafts, transcripts, operations, discord, discord-v2]
---

# ✈️ Meeting Autopilot

Turn meeting transcripts into structured operational outputs — NOT just summaries.

## Activation

This skill activates when the user mentions:
- "meeting transcript", "meeting notes", "meeting autopilot"
- "action items from meeting", "meeting follow-up"
- "process this transcript", "analyze this meeting"
- "extract decisions from meeting", "meeting email draft"
- Uploading or pasting a VTT, SRT, or text transcript

## Permissions

```yaml
permissions:
  exec: true          # Run extraction scripts
  read: true          # Read transcript files
  write: true         # Save history and reports
  network: true       # LLM API calls (Anthropic or OpenAI)
```

## Requirements

- **bash**, **jq**, **python3**, **curl** (typically pre-installed)
- **ANTHROPIC_API_KEY** or **OPENAI_API_KEY** environment variable

## Agent Workflow

### Step 1: Get the Transcript

Ask the user for their meeting transcript. Accept any of:
- A **file path** to a VTT, SRT, or TXT file
- **Pasted text** directly in the conversation
- A **file upload**

The skill auto-detects the format (VTT, SRT, or plain text).

**Important:** This skill does NOT do audio transcription. If the user has an audio/video file, suggest they use:
- Zoom/Google Meet/Teams built-in transcription
- Otter.ai or Fireflies.ai for recording + transcription
- `whisper.cpp` for local transcription

### Step 2: Get Optional Context

Ask for (but don't require):
- **Meeting title** — helps with email subject lines and report headers
- If not provided, the skill derives it from the filename or uses "Meeting [date]"

### Step 3: Run the Autopilot

Save the transcript to a temporary file if pasted, then run:

```bash
bash "$SKILL_DIR/scripts/meeting-autopilot.sh" <transcript_file> --title "Meeting Title"
```

Or from stdin:
```bash
echo "$TRANSCRIPT" | bash "$SKILL_DIR/scripts/meeting-autopilot.sh" - --title "Meeting Title"
```

The script handles all three passes automatically:
1. **Parse** — normalize the transcript format
2. **Extract** — pull out decisions, action items, questions via LLM
3. **Generate** — create email drafts, ticket drafts, beautiful report

### Step 4: Present the Report

The script outputs a complete Markdown report to stdout. Present it directly — the formatting is designed to look great in Slack, email, or any Markdown renderer.

The report includes:
- 📊 Overview table (counts by category)
- ✅ Decisions with rationale
- 📋 Action items table (owner, deadline, status)
- ❓ Open questions
- 🅿️ Parking lot items
- 📧 Follow-up email draft(s) — ready to send
- 🎫 Ticket/issue drafts — ready to file

### Discord v2 Delivery Mode (OpenClaw v2026.2.14+)

When the conversation is happening in a Discord channel:

- Send a compact first summary (decision count, action-item count, top owners), then ask if the user wants full report sections.
- Keep the first response under ~1200 characters and avoid long tables in the first message.
- If Discord components are available, include quick actions:
  - `Show Action Items`
  - `Show Follow-Up Email Draft`
  - `Show Ticket Drafts`
- If components are not available, provide the same follow-ups as a numbered list.
- Prefer short follow-up chunks (<=15 lines per message) for long reports.

### Step 5: Offer Next Steps

After presenting the report, offer:
1. "Want me to refine any of the email drafts?"
2. "Should I adjust any action item assignments?"
3. "Want to save this report to a file?"
4. "I can also process another meeting — transcripts from different meetings build up a tracking history."

### Error Handling

| Situation | Behavior |
|-----------|----------|
| No API key set | Print branded error with setup instructions |
| Transcript too short (<20 chars) | Suggest pasting more content or checking file path |
| Empty LLM response | Report API issue, suggest checking key/network |
| No items extracted | Report "meeting may not have had actionable content" — still show key points if any |
| Unsupported file format | Suggest --format txt to force plain text parsing |

### Notes for the Agent

- **The report is the star.** Present it in full. Don't summarize the summary.
- **Follow-up emails are the WOW moment.** Highlight them — they're ready to copy and send.
- **Be proactive:** After the report, suggest specific improvements based on what was found.
- **Cross-meeting tracking:** Items are automatically saved to `~/.meeting-autopilot/history/`. Mention this — it's a preview of the v1.1 feature that tracks commitments across meetings.
- If the transcript has no speaker labels, mention that adding "Speaker: text" format improves attribution accuracy.

## References

- `scripts/meeting-autopilot.sh` — Main orchestrator (the only entry point you need)
- `scripts/parse-transcript.sh` — Transcript parser (VTT/SRT/TXT → JSONL)
- `scripts/extract-items.sh` — LLM extraction + classification
- `scripts/generate-outputs.sh` — Operational output generation + report formatting

Overview

This skill turns meeting transcripts into actionable operational outputs — action items, decisions, follow-up email drafts, and ticket drafts. It accepts VTT, SRT, or plain text transcripts and performs a multi-pass LLM extraction to produce a ready-to-use Markdown report. The focus is extraction and operationalization, not summarization.

How this skill works

Give the transcript by file path, upload, or paste; the skill auto-detects VTT, SRT, or plain text and normalizes it. It runs three passes: parse the transcript, extract decisions/action items/questions via an LLM, then generate operational outputs (email drafts, ticket drafts, and a formatted report). The final report is produced as markdown for easy sharing in Slack, email, or ticket systems.

When to use it

  • You have a meeting transcript (VTT/SRT/TXT) and need concrete next steps, not a narrative summary
  • Preparing follow-up emails and ticket drafts immediately after a meeting
  • Extracting decisions, owners, and deadlines for tracking or handoff
  • Creating a reproducible meeting record to save or file into issue trackers
  • Running cross-meeting tracking of action items and commitments

Best practices

  • Provide a short meeting title or allow the skill to derive one from filename/date
  • Supply transcripts that include speaker labels for better owner attribution
  • If you only have audio/video, transcribe first with Zoom/Otter/whisper.cpp before running this skill
  • Review and edit generated email/ticket drafts before sending to ensure tone and context
  • Use the save option to build a history of commitments for cross-meeting tracking

Example use cases

  • Post-standup: convert a short standup transcript into action items and ticket drafts
  • Project review: extract decisions and create follow-up emails assigning owners and deadlines
  • Client call: generate a polished follow-up email summarizing commitments and next steps
  • Engineering retro: produce tickets for improvement items and a concise decision log
  • Onboarding session: create owner-assigned tasks and a recap email for new team members

FAQ

What transcript formats are supported?

VTT, SRT, and plain text are supported; the skill auto-detects format and normalizes it.

Does this skill transcribe audio/video files?

No. It accepts transcripts only; use Zoom/Teams/Otter or local tools like whisper.cpp to create a transcript first.

How are action-item owners determined?

The extractor uses speaker labels when available. If labels are missing, the report notes this and suggests adding 'Speaker: text' for improved attribution.

Can I edit generated email drafts and re-run extraction?

Yes. You can refine drafts and re-run the generator; the workflow supports iterative refinement and saving results to build a history.