CLI and library for extracting structured meeting summaries from transcripts.
Project description
meeting-lens
meeting-lens is a Python CLI and library that turns raw meeting transcripts into structured summaries: decisions, action items, open questions, and sentiment.
Why this exists
Meeting notes are painful for engineering managers and team leads: long transcripts are hard to skim, key decisions get buried, and follow-ups are easy to miss. meeting-lens converts transcript exports from common tools into concise, structured outputs that are easy to share or automate.
Quick start
1) Install
pip install "meeting-lens[openai]"
Or install all backends:
pip install "meeting-lens[all]"
2) Set an API key
export OPENAI_API_KEY="your-key"
# or
export ANTHROPIC_API_KEY="your-key"
3) Run your first summary
meeting-lens transcript.vtt
CLI usage
# Basic usage
meeting-lens transcript.vtt
# Specify backend and output format
meeting-lens transcript.txt --backend anthropic --format markdown
# Write to file
meeting-lens transcript.srt --backend openai --format json --out summary.json
# Override model
meeting-lens transcript.vtt --model gpt-4o-mini
# Pipe support
cat transcript.txt | meeting-lens - --backend anthropic
Options:
--backend:openai|anthropic(default:openai)--format:markdown|json(default:markdown)--out: output file path (default: stdout)--model: override backend default model--no-color: disable ANSI color in markdown output
Supported input formats
| Format | Extension | Notes |
|---|---|---|
| Plain text | .txt |
Supports lines like Speaker: message |
| WebVTT | .vtt |
Works with Zoom/Teams-style VTT exports |
| SubRip | .srt |
Parses subtitle blocks and speaker prefixes |
Backend comparison
| Backend | Package extra | API key env var | Default model |
|---|---|---|---|
| OpenAI | meeting-lens[openai] |
OPENAI_API_KEY |
gpt-4o |
| Anthropic | meeting-lens[anthropic] |
ANTHROPIC_API_KEY |
claude-sonnet-4-20250514 |
Markdown output example
# Meeting Summary
**Date:** 2024-03-15
**Participants:** Alice, Bob, Carol
**Sentiment:** 🟡 Mixed — _Some tension around timeline but positive on outcome._
## TL;DR
Two-sentence summary of the meeting.
## ✅ Decisions
- **Alice:** We will migrate to the new auth system by Q2.
- **Team:** Daily standups move to 09:30.
## 📋 Action Items
| Owner | Task | Due |
|-------|------|-----|
| Bob | Write migration runbook | Friday |
| Carol | Schedule design review | — |
## ❓ Open Questions
- What is the rollback plan if migration fails? _(raised by Bob)_
- Who owns the staging environment credentials?
## 📊 Sentiment
**Mixed** — Brief explanation of sentiment rating.
Library usage
import asyncio
from meeting_lens.backends.openai_backend import OpenAIBackend
from meeting_lens.formatters.markdown import MarkdownFormatter
from meeting_lens.lens import MeetingLens
async def run() -> None:
transcript = "Alice: We should ship Friday.\nBob: I will own rollout docs."
lens = MeetingLens(backend=OpenAIBackend())
summary = await lens.run(transcript, source_name="sync.txt")
print(MarkdownFormatter().format(summary))
asyncio.run(run())
Contributing
- Fork and clone the repo.
- Create a virtual environment and install dev dependencies.
- Run tests with
pytest. - Open a PR with clear commit messages and test notes.
Publishing (maintainers)
meeting-lens is published to PyPI using standard Python packaging flow:
python -m pip install --upgrade build twine
python -m build
twine check dist/*
twine upload dist/*
Notes:
- Set
TWINE_USERNAME=__token__ - Set
TWINE_PASSWORDto your PyPI API token - Always bump
versioninpyproject.tomlbefore upload
Related
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meeting_lens-0.1.0.tar.gz.
File metadata
- Download URL: meeting_lens-0.1.0.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be1c21229b6ab443a104add07c2abe64e809ec5eeb3e4dc6ea72a83f9b4d8fdb
|
|
| MD5 |
73542ceb556db3b6fd8b662c14ef7bb4
|
|
| BLAKE2b-256 |
7fcd84e671cb5d9f8777868607950afd267736387d7ea3361616ff57837bdeb8
|
File details
Details for the file meeting_lens-0.1.0-py3-none-any.whl.
File metadata
- Download URL: meeting_lens-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5505a9b0cec3c5861b0709c3da19303fca02390e8a5ab64e674dbbb73e7735fe
|
|
| MD5 |
3fda92a3d5ae08f03354691951b66b6f
|
|
| BLAKE2b-256 |
6b35d6a001901449114a647f78e42d1d3b6d66c84731474a7a3d1262eab4203b
|