ποΈ 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.
- π 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
- 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
- Firefox 57 or later
- Python 3.7 or higher
- Node.js and npm (for development/testing)
-
Clone the repository
git clone https://github.com/yourusername/meeting-transcript-bridge.git cd meeting-transcript-bridge -
Install the native host
macOS/Linux:
cd native-host chmod +x install.sh ./install.shWindows:
cd native-host install.bat -
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
- Open Firefox and navigate to
-
Test with the mock service
- Open
mock-service/index.htmlin Firefox - Click "Start Generation" to see it in action
- Check
~/transcription_output.jsonlfor captured transcriptions
- Open
βββββββββββββββββββββββββββββββββββββββββββ
β Firefox Browser β
β βββββββββββββββ ββββββββββββββββ β
β β Content βββββββΆβ Background β β
β β Script β β Script β β
β βββββββββββββββ ββββββββ¬ββββββββ β
ββββββββββββββββββββββββββββββββββΌβββββββββ
β Native Messaging
βΌ
ββββββββββββββββββββββββββ
β Native Host β
β (Python Application) β
βββββββββββββ¬βββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Transcription File β
β (JSON Lines) β
ββββββββββββββββββββββββββ
- Content Script monitors the webpage DOM for transcription content using MutationObserver
- Background Script coordinates communication and manages the connection to the native host
- Native Host (Python) receives messages and writes transcriptions to a local file
- Your Application reads the JSON Lines file and processes transcriptions
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 timestampsequence- Monotonically increasing sequence numbertext- The transcription text content (trimmed)source- Unique identifier for the transcription session
- Output File:
~/transcription_output.jsonl - CSS Selector:
#transcription-container - Debounce Delay: 100ms
- Retry Interval: 2 seconds
- Max Retries: 15 (30 seconds total)
Set environment variables before starting Firefox:
export TRANSCRIPTION_OUTPUT_FILE=~/my_transcriptions.jsonl
export TRANSCRIPTION_LOG_FILE=~/transcription_host.logFor different transcription services, you may need to update the CSS selector:
- Click the extension icon in Firefox
- Go to Options
- Update the "CSS Selector" field to match your transcription service's HTML structure
- Click Save
# Install dependencies
npm install
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run linter
npm run lintmeeting-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
- Check that the CSS selector matches your transcription container
- Open Firefox Developer Tools (F12) and check the Console for errors
- Verify the extension is enabled in
about:addons
- 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
- macOS: Check
- Check the native host log file:
~/transcription_host.log - Ensure Python 3.7+ is installed and in your PATH
- Check the output file path is valid and writable
- Check native host logs for permission errors
- Ensure the directory exists (the native host will create the file but not the directory)
- Quick Start Guide - Detailed setup and testing instructions
- Contributing Guidelines - How to contribute to the project
- Native Host README - Native host specific documentation
Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Firefox's native messaging API
- Uses MutationObserver for efficient DOM monitoring
- JSON Lines format for easy parsing
- Looking for Chrome support? Check out the Chrome version (coming soon)
- Need a bot to process transcriptions? See our example integrations
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with β€οΈ for better meeting experiences