Skip to main content

Agent-friendly CLI for Meeting Ink — transcription, summaries, and translations

Project description

meeting-ink-cli

Agent-friendly CLI for Meeting Ink — transcription, summaries, and translations.

Designed for both human users and AI agents (Claude Code, Codex, etc.).

Installation

uv (recommended)

uv tool install meeting-ink-cli
uv tool install 'meeting-ink-cli[audio]'      # audio duration detection
uv tool install 'meeting-ink-cli[mcp]'        # MCP server mode
uv tool install 'meeting-ink-cli[audio,mcp]'  # everything

Homebrew

brew tap DeepWaveLab/mi_cli https://github.com/DeepWaveLab/mi_cli
brew install meeting-ink-cli

pip

pip install meeting-ink-cli
pip install 'meeting-ink-cli[audio]'      # audio duration detection
pip install 'meeting-ink-cli[mcp]'        # MCP server mode

Update

# uv
uv tool upgrade meeting-ink-cli

# Homebrew
brew update && brew upgrade meeting-ink-cli

# pip
pip install --upgrade meeting-ink-cli

Quick Start

# Authenticate (auto-extract from browser cookies)
meeting-ink auth

# Or paste token directly / from stdin
meeting-ink auth eyJhbG...
echo $TOKEN | meeting-ink auth -

# List meetings
meeting-ink list

# Show meeting details
meeting-ink show 123

# View transcript
meeting-ink transcript 123

# Generate summary
meeting-ink summary 123 --generate --language zh-TW

# Translate transcript
meeting-ink translate 123 -l en

# Download artifacts
meeting-ink download 123 -t summary -o summary.md

# Upload audio for transcription
meeting-ink upload recording.mp3

# Import from YouTube
meeting-ink from-url "https://youtube.com/watch?v=..."

# Check quota
meeting-ink quota

Commands

Command Description
auth [token] Save API token (stdin -, browser auto-extract, or interactive prompt)
whoami Show user info and subscription
quota Show transcription quota and usage
list List meetings (--page, --all, --limit)
show <id> Meeting detail with transcripts, summaries, translations
upload <file> Upload audio file (--duration, --name, --wait)
from-url <url> Import from YouTube/podcast URL
transcript <id> View transcript (--output to save to file)
summary <id> View/generate summary (--topic, --template, --language, --generate)
translate <id> View/generate translation (-l language required)
download <id> Download artifacts (-t type, --output, --language, --force)
rename <id> <name> Rename a meeting
delete <id> Delete a meeting (--force for non-interactive)
serve Start MCP server on stdio

Transcripts, Summaries & Translations

# View transcript (checks meeting status first)
meeting-ink transcript 123
meeting-ink transcript 123 -o transcript.json

# View existing summary (pinned first, then most recent)
meeting-ink summary 123

# Generate new summary with template and language
meeting-ink summary 123 --generate --template standup --language en
meeting-ink summary 123 --topic "Action items" --per-speaker

# Translate transcript to another language
meeting-ink translate 123 -l en
meeting-ink translate 123 -l ja --no-wait

# Download any artifact
meeting-ink download 123 -t recording -o meeting.mp3
meeting-ink download 123 -t transcript -o transcript.json
meeting-ink download 123 -t summary -o summary.md
meeting-ink download 123 -t translation -l en -o translation.json

Summary Templates

general_meeting (default), standup, one_on_one, project_team_meeting, investor_update, expert_consultation, customer_discovery, customer_qbr, business_progress, bant, project_kickoff, user_research, ideate, issue_resolution

Supported Languages

en-US, zh-TW, ja-JP, de-DE, fr-FR, ru-RU, es-ES, it-IT, th-TH

Shortcuts: en, zh, ja, de, fr, ru, es, it, th

Upload

Supported formats: mp3, wav, m4a, aac, ogg, flac, wma, webm.

Files over 50 MB are automatically chunked. Maximum file size: 2 GB.

# With automatic duration detection (requires mutagen)
meeting-ink upload recording.mp3

# Manual duration (seconds) if mutagen not installed
meeting-ink upload recording.mp3 --duration 3600

# Custom name, don't wait for transcription
meeting-ink upload recording.mp3 --name "Team standup" --no-wait

Agent Usage

All commands support --json for machine-readable output:

meeting-ink list --json
# {"ok": true, "data": {"total": 5, "data": [...]}}

meeting-ink transcript 123 --json
# {"ok": true, "data": {"meeting_id": 123, "content": [...]}}

meeting-ink summary 123 --generate --json
# {"ok": true, "data": {"meeting_id": 123, "summary_id": 456, "content": "..."}}

Use --help-json for structured command metadata:

meeting-ink --help-json         # all commands
meeting-ink summary --help-json # command params

Environment Variables

Variable Description
MEETING_INK_TOKEN Auth token (takes precedence over config file)
MEETING_INK_OUTPUT Force output mode: json or human

Output Format

{"ok": true, "data": ...}
{"ok": false, "error": {"code": "auth_error", "message": "..."}}

Exit Codes

Code Meaning
0 Success
1 API error (4xx/5xx)
2 Validation error (bad input, missing token)
3 Network error (timeout, unreachable)

MCP Server

Run as a Model Context Protocol server for AI agent integration:

uv pip install 'meeting-ink-cli[mcp]'
meeting-ink serve

Configuration

Token is stored at ~/.config/meeting-ink/config.json with 0600 permissions.

The MEETING_INK_TOKEN environment variable takes precedence over the config file.

Development

git clone <repo>
cd mi_cli
uv sync

# Run tests
uv run pytest -v

# Run linting
uv run ruff check mi_cli/ tests/
uv run ruff format --check mi_cli/ tests/

# Run integration tests (requires MEETING_INK_TOKEN)
MEETING_INK_TOKEN=... uv run pytest -m integration

Architecture

mi_cli/
  cli.py        # Click commands (14 commands)
  client.py     # httpx API client (cookie auth, retry, rate limit)
  config.py     # Token storage, browser cookie extraction
  output.py     # JSON envelope, TTY detection, Rich tables
  validate.py   # Input sanitization, language validation
  upload.py     # Azure Blob upload (single + chunked)
  polling.py    # Adaptive polling for async operations
  help_json.py  # --help-json for agent discoverability
  serve.py      # MCP server (optional)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meeting_ink_cli-0.1.0.tar.gz (101.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meeting_ink_cli-0.1.0-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file meeting_ink_cli-0.1.0.tar.gz.

File metadata

  • Download URL: meeting_ink_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 101.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for meeting_ink_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e62512aacd5fc776f7f2f0ae04a64e9da1424baabf1859530b7eb1368de020c5
MD5 3f0c48a6ff1a58930596801d5538b14c
BLAKE2b-256 4af7d89e1cb927148d39eec1d4052074693ed034ba86827a3fb8819a4d3adaf6

See more details on using hashes here.

File details

Details for the file meeting_ink_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: meeting_ink_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 26.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for meeting_ink_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d8a85d8d65d9d1df3150810faa3ac6db298bb35d70f0c80dc382f3aaacf45046
MD5 4374f50d95d0c7eceb9f7b6981d092aa
BLAKE2b-256 0091cff3298c34da7832f09c6f371e7ae3199ed0dc851e0ca68503454c730449

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page