Skip to main content

Lightweight CLI for ingesting, enriching, and storing meeting transcripts

Project description

transcribe-it

A lightweight CLI for ingesting meeting transcripts (Gmail or Slack), enriching them with an LLM, and storing the results as local files.

Source -> Extract -> LLM Enrich -> Local Files

Prerequisites

  • Python 3.12+
  • A Google Cloud project with Gmail API + Google Drive API enabled (for the Gmail source), or a Slack bot token (for the Slack source)
  • An API key for one of the supported LLM providers (Anthropic, OpenAI, or Groq) — only needed if you want LLM enrichment

Install

uv tool install transcribe-it

Or with pipx:

pipx install transcribe-it

Setup

Run the interactive setup from the directory where you want transcripts to be stored:

transcribe-it init

This will:

  • Ask which sources to enable (Gmail, Slack)
  • Prompt for the credentials each source needs
  • Optionally let you pick an LLM provider and store the API key (skip this if you only want raw transcripts)
  • Write .transcripts/config.yaml in the current directory
  • Write secrets to ~/.config/transcript/env

Gmail credentials

For Gmail you'll be asked for GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRET. Two options:

  1. Reuse someone else's OAuth client — ask a teammate for the values and have them add your Google account as a Test user on their OAuth consent screen.
  2. Create your own — in Google Cloud Console, create an OAuth 2.0 Client ID of type Desktop app, then copy the client ID and secret from the resulting credentials.

After init, authenticate:

transcribe-it auth gmail

Slack credentials

For Slack you'll be asked for the channel ID and a bot token (xoxb-...). The bot needs to be a member of the channels you want to ingest from.

Usage

By default, ingestion only extracts the raw transcript — no LLM call, no API key required. Pass --enrich to also generate a summary, topics, and participants via LLM.

# Last N days, raw extraction only (default)
transcribe-it ingest gmail --days 7

# With LLM enrichment
transcribe-it ingest gmail --days 7 --enrich

# Enrichment + cleaned transcript variant (--clean implies --enrich)
transcribe-it ingest gmail --days 7 --clean

# Specific date range
transcribe-it ingest gmail --from 2026-04-01 --to 2026-04-05

# Preview matching emails without fetching or writing
transcribe-it ingest gmail --days 1 --dry-run

# Ingest a single transcript file directly
transcribe-it ingest file path/to/transcript.txt

Output

Raw mode (default) writes a single .txt file per transcript:

.transcripts/
  2026-04-09-ai-labs-daily.txt

With --enrich, each transcript becomes a folder:

.transcripts/
  2026-04-09-ai-labs-daily/
    raw.txt          # Original transcript (immutable)
    metadata.json    # Source, date, participants, topics, summary

With --clean, an additional clean.md is written (structured: title, summary, topics, cleaned transcript).

Prompts

LLM prompts are bundled with the package under transcribe_it/prompts/. To customise, fork the repo and edit prompts/enrich.md.

Commands

Command Description
transcribe-it init Interactive setup for sources, credentials, and LLM
transcribe-it auth gmail Authenticate with Gmail (OAuth)
transcribe-it ingest gmail Ingest transcripts from Gmail
transcribe-it ingest file PATH Ingest a single transcript file

Ingest options (Gmail)

Flag Description
--days N How many days back to search
--from YYYY-MM-DD Start date
--to YYYY-MM-DD End date
--profile NAME Gmail auth profile
--dry-run List matching emails without processing
--enrich Run LLM enrichment (summary, topics, participants)
--clean Also generate a cleaned version of the transcript (implies --enrich)

Configuration files

Path Purpose
.transcripts/config.yaml Per-project: sources, lookback, output destinations
~/.config/transcript/env Global: API keys and OAuth credentials

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

transcribe_it-0.2.1.tar.gz (139.8 kB view details)

Uploaded Source

Built Distribution

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

transcribe_it-0.2.1-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file transcribe_it-0.2.1.tar.gz.

File metadata

  • Download URL: transcribe_it-0.2.1.tar.gz
  • Upload date:
  • Size: 139.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.8

File hashes

Hashes for transcribe_it-0.2.1.tar.gz
Algorithm Hash digest
SHA256 e3b2c842c47491d12d4fae481cd009f4f7ec96a8b91611d68d5cf21b32854d48
MD5 d5ae743a76f65276938040424708de32
BLAKE2b-256 739fe4558b9bb80aaeff3c946dee0b1eacd4215ea6fa22d95699c568b308a1ee

See more details on using hashes here.

File details

Details for the file transcribe_it-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for transcribe_it-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 970cdb10dab91f5825654cabb970790fedf1a186cbdfcddfc8b2af6985938a23
MD5 2513554552c4542e6ab2857ca90a4136
BLAKE2b-256 780f5515857a68517dc349ba4f5d971258e703dd4cee744d8ac8d6fda59964b5

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