Thanks to visit codestin.com
Credit goes to github.com

Skip to content

dstaulcu/meeting_transcript_bridge

Repository files navigation

Meeting Transcript Bridge

πŸŽ™οΈ Capture live meeting transcriptions from any web-based service and bridge them to your local filesystem for bot integration, analysis, or archival.

A Firefox browser extension that monitors web-based transcription services (like Skype, Teams, Zoom, etc.) and automatically saves transcriptions to a local file in real-time. Perfect for integrating meeting transcripts with AI assistants, chatbots, or custom automation workflows.

✨ Features

  • πŸ”„ Real-time Capture - Automatically detects and captures transcription text as it appears
  • ⚑ Efficient Monitoring - Uses MutationObserver (no polling) to avoid overloading transcription services
  • πŸ”Œ Native Messaging Bridge - Securely writes to local filesystem via native host application
  • πŸ›‘οΈ Duplicate Detection - Prevents re-capturing the same content
  • πŸ” Auto-Reconnection - Handles connection failures gracefully with automatic retry
  • πŸ“¦ Message Batching - Batches rapid updates for optimal performance
  • 🌍 UTF-8 Support - Handles international characters and emoji
  • πŸ“ JSON Lines Format - Easy-to-parse output format for downstream consumers
  • πŸ§ͺ Fully Tested - 107 passing tests with comprehensive coverage

🎯 Use Cases

  • AI Meeting Assistants - Feed live transcriptions to your chatbot or AI assistant
  • Meeting Analytics - Analyze meeting content in real-time
  • Accessibility - Create custom accessibility tools for hearing-impaired users
  • Compliance & Archival - Automatically archive meeting transcripts
  • Custom Integrations - Build your own tools on top of live transcription data

πŸš€ Quick Start

Prerequisites

  • Firefox 57 or later
  • Python 3.7 or higher
  • Node.js and npm (for development/testing)

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/meeting-transcript-bridge.git
    cd meeting-transcript-bridge
  2. Install the native host

    macOS/Linux:

    cd native-host
    chmod +x install.sh
    ./install.sh

    Windows:

    cd native-host
    install.bat
  3. Load the extension in Firefox

    • Open Firefox and navigate to about:debugging#/runtime/this-firefox
    • Click "Load Temporary Add-on"
    • Navigate to the extension/ directory
    • Select manifest.json
  4. Test with the mock service

    • Open mock-service/index.html in Firefox
    • Click "Start Generation" to see it in action
    • Check ~/transcription_output.jsonl for captured transcriptions

πŸ“– How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         Firefox Browser                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚   Content   │─────▢│  Background  β”‚ β”‚
β”‚  β”‚   Script    β”‚      β”‚    Script    β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚ Native Messaging
                                 β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚    Native Host         β”‚
                    β”‚  (Python Application)  β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚  Transcription File    β”‚
                    β”‚    (JSON Lines)        β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  1. Content Script monitors the webpage DOM for transcription content using MutationObserver
  2. Background Script coordinates communication and manages the connection to the native host
  3. Native Host (Python) receives messages and writes transcriptions to a local file
  4. Your Application reads the JSON Lines file and processes transcriptions

πŸ“„ Output Format

Transcriptions are saved in JSON Lines format (one JSON object per line):

{"timestamp":"2024-02-06T10:30:45.123Z","sequence":1,"text":"Hello, this is a test.","source":"session-abc123"}
{"timestamp":"2024-02-06T10:30:47.456Z","sequence":2,"text":"This is the second line.","source":"session-abc123"}

Each entry contains:

  • timestamp - ISO 8601 formatted timestamp
  • sequence - Monotonically increasing sequence number
  • text - The transcription text content (trimmed)
  • source - Unique identifier for the transcription session

βš™οΈ Configuration

Default Settings

  • Output File: ~/transcription_output.jsonl
  • CSS Selector: #transcription-container
  • Debounce Delay: 100ms
  • Retry Interval: 2 seconds
  • Max Retries: 15 (30 seconds total)

Customizing the Output Path

Set environment variables before starting Firefox:

export TRANSCRIPTION_OUTPUT_FILE=~/my_transcriptions.jsonl
export TRANSCRIPTION_LOG_FILE=~/transcription_host.log

Customizing the CSS Selector

For different transcription services, you may need to update the CSS selector:

  1. Click the extension icon in Firefox
  2. Go to Options
  3. Update the "CSS Selector" field to match your transcription service's HTML structure
  4. Click Save

πŸ”§ Development

Running Tests

# Install dependencies
npm install

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run linter
npm run lint

Project Structure

meeting-transcript-bridge/
β”œβ”€β”€ extension/              # Firefox extension
β”‚   β”œβ”€β”€ manifest.json      # Extension configuration
β”‚   β”œβ”€β”€ background.js      # Background script
β”‚   └── content.js         # Content script
β”œβ”€β”€ native-host/           # Native messaging host
β”‚   β”œβ”€β”€ transcription_host.py    # Python host application
β”‚   β”œβ”€β”€ install.sh         # Linux/macOS installer
β”‚   └── install.bat        # Windows installer
β”œβ”€β”€ mock-service/          # Mock transcription service for testing
β”‚   └── index.html         # Test webpage
β”œβ”€β”€ tests/                 # Test suite
└── README.md             # This file

πŸ› Troubleshooting

Extension Not Capturing Content

  1. Check that the CSS selector matches your transcription container
  2. Open Firefox Developer Tools (F12) and check the Console for errors
  3. Verify the extension is enabled in about:addons

Native Host Connection Failed

  1. Verify the native host is installed:
    • macOS: Check ~/Library/Application Support/Mozilla/NativeMessagingHosts/transcription_host.json
    • Linux: Check ~/.mozilla/native-messaging-hosts/transcription_host.json
    • Windows: Check registry key HKEY_CURRENT_USER\Software\Mozilla\NativeMessagingHosts\transcription_host
  2. Check the native host log file: ~/transcription_host.log
  3. Ensure Python 3.7+ is installed and in your PATH

File Not Being Created

  1. Check the output file path is valid and writable
  2. Check native host logs for permission errors
  3. Ensure the directory exists (the native host will create the file but not the directory)

πŸ“š Documentation

🀝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Built with Firefox's native messaging API
  • Uses MutationObserver for efficient DOM monitoring
  • JSON Lines format for easy parsing

πŸ”— Related Projects

πŸ“§ Support


Made with ❀️ for better meeting experiences

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors