npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

meeting-diary

v0.0.1

Published

Quickly diarize and transcribe meetings with AssemblyAI

Readme

Meeting Diary

A powerful CLI tool to transcribe and diarize audio/video files using AssemblyAI. Automatically identifies speakers and generates transcripts in multiple formats.

Features

  • 🎙️ Automatic speaker diarization
  • 👥 Interactive speaker identification with context
  • 📝 Multiple output formats (Markdown, SRT, TXT, JSON)
  • 🕒 Timestamps for each segment
  • 🔑 Secure API key management
  • 💾 Smart caching for faster processing
  • 💻 Cross-platform support

Installation & Usage

Quick Start (Recommended)

You can use meeting-diary directly without installation using npx or bunx:

# Using npx (Node.js)
npx meeting-diary input.mp4

# Using bunx (Bun)
bunx meeting-diary input.mp4

Global Installation (Alternative)

If you prefer to install the tool globally:

# Using npm
npm install -g meeting-diary

# Using yarn
yarn global add meeting-diary

# Using bun
bun install -g meeting-diary

Then use it as:

meeting-diary input.mp4

Usage

Basic Usage

meeting-diary input.mp4

This will:

  1. Transcribe and diarize your audio/video file
  2. Help you identify each speaker by showing their most significant contributions
  3. Generate a timestamped transcript in markdown format

Output Formats

meeting-diary input.mp4 -f txt  # Simple text format
meeting-diary input.mp4 -f srt  # SubRip subtitle format
meeting-diary input.mp4 -f json # JSON format with detailed metadata
meeting-diary input.mp4 -f md   # Markdown format (default)

Markdown Format (Default)

The markdown format includes:

  • Timestamp for each segment
  • Speaker list
  • Chronological transcript with speaker attribution
  • Processing metadata

Example:

# Meeting Transcript

_Processed on 2/10/2024, 3:43:26 PM_
_Duration: 5 minutes_

## Speakers

- **Hrishi**
- **Alok**

## Transcript

[0:00] **Hrishi**: Yeah, didn't have a chance yet...
[0:15] **Alok**: No engagement in terms of my Mushroom photos.
[0:18] **Hrishi**: Basically Samsung phones have the ability...

Speaker Identification

You can identify speakers in two ways:

  1. Interactive identification (default):
meeting-diary input.mp4

The tool will:

  • Show you the most significant contributions from each speaker
  • Display context (what was said before and after)
  • Show previously identified speakers for context
  • Ask you to identify each speaker in turn
  1. Specify speakers up front:
meeting-diary input.mp4 -s "John Smith" "Jane Doe"

All Options

Options:
  -o, --output <file>     Output file (defaults to input file name with new extension)
  -f, --format <format>   Output format (json, txt, srt, md) (default: "md")
  -s, --speakers <names>  Known speaker names (skip interactive identification)
  --skip-diarization     Skip speaker diarization
  -v, --verbose          Show verbose output
  --api-key <key>        AssemblyAI API key (will prompt if not provided)
  --no-cache            Disable caching of uploads and transcripts
  --cache-dir <dir>     Directory to store cache files
  --no-interactive      Skip interactive speaker identification
  -h, --help             display help for command

Caching

The tool automatically caches uploaded audio files and transcripts to avoid unnecessary re-processing. This is especially useful when:

  • Experimenting with different output formats
  • Re-running transcription with different speaker names
  • Processing the same file multiple times

Cache files are stored in your system's temporary directory by default. You can:

  • Disable caching with --no-cache
  • Change cache location with --cache-dir
  • Cache is enabled by default for faster processing
  • Cache files are automatically cleaned up by your OS's temp file management

API Key

You'll need an AssemblyAI API key to use this tool. You can:

  1. Set it as an environment variable: ASSEMBLYAI_API_KEY=your-key
  2. Pass it via the command line: --api-key your-key
  3. Let the tool prompt you for it (it can be saved for future use)

Development

# Clone the repository
git clone https://github.com/southbridgeai/meeting-diary.git
cd meeting-diary

# Install dependencies
bun install

# Build
bun run build

# Run tests
bun test

# Development mode
bun run dev

License

Apache-2.0 - see LICENSE for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.