NotebookLM Podcast Automation System - Automate podcast creation from documents
Project description
๐๏ธ DeepDiver - NotebookLM Podcast Automation System
Terminal-to-Web Audio Creation Bridge
๐ฏ What is DeepDiver?
DeepDiver is a Python-based automation system that bridges terminal commands with NotebookLM's podcast generation capabilities, enabling seamless content-to-audio transformation through browser automation.
Key Features:
- ๐ Content Ingestion: Upload documents to NotebookLM automatically
- ๐๏ธ Podcast Generation: Create Audio Overviews with terminal commands
- ๐ฑ Cross-Device Sync: Access generated podcasts anywhere
- ๐ฎ Session Management: Track podcast creation sessions
- ๐ Terminal-to-Web: Command-line to NotebookLM communication bridge
Key Achievement: Terminal-to-Audio fluidity - Your terminal can now create podcasts from documents and sync across all your devices!
๐ฆ Installation
Prerequisites
- Python 3.8+
- Google Chrome or Chromium
- A Google account with access to NotebookLM
Install Dependencies
# Core dependencies
pip install playwright pyyaml requests beautifulsoup4 pyperclip click rich
# Install Playwright browsers
playwright install chromium
Launch Chrome for Communication
For DeepDiver to communicate with NotebookLM, you need to launch Chrome with remote debugging:
# Launch Chrome with a remote debugging port
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-deepdiver &
In the new Chrome window, log in to your Google account and navigate to NotebookLM.
๐ Quick Start
1. Initialize DeepDiver
# Initialize the project
deepdiver init
2. Start a Session
# Start a new podcast creation session
deepdiver session start --ai claude --issue 1
3. Create Your First Podcast
# Upload a document and generate a podcast
deepdiver podcast create --source document.pdf --title "My First Podcast"
4. Check Session Status
# View current session information
deepdiver session status
๐ฎ Usage
Session Commands
# Start a new session
deepdiver session start --ai claude --issue 42
# Write to session log
deepdiver session write "Uploaded research paper for podcast generation"
# Check session status
deepdiver session status
# Open session in browser
deepdiver session open
# Clear current session
deepdiver session clear
Podcast Commands
# Create podcast from document
deepdiver podcast create --source research.pdf --title "Research Insights"
# Create podcast from URL
deepdiver podcast create --source https://example.com/article --title "Web Article Podcast"
# List generated podcasts
deepdiver podcast list
# Download specific podcast
deepdiver podcast download --id podcast-123
Notebook Commands
# Create a new notebook (empty)
deepdiver notebook create
# Create notebook with a SimExp note as source
deepdiver notebook create --source "https://app.simplenote.com/p/abc123"
# Create notebook with web article
deepdiver notebook create --source "https://example.com/research-paper"
# Create notebook with YouTube video
deepdiver notebook create --source "https://youtube.com/watch?v=dQw4w9WgXcQ"
# Create notebook with local file
deepdiver notebook create --source "./notes.pdf"
# List notebooks in current session
deepdiver notebook list
# Open specific notebook in browser
deepdiver notebook open --notebook-id abc-123
# Get notebook URL
deepdiver notebook url --notebook-id abc-123
# Share notebook with collaborator
deepdiver notebook share --notebook-id abc-123 --email user@example.com
Content Commands
# Upload document to NotebookLM
deepdiver content upload --file document.pdf
# Process content for podcast
deepdiver content process --source document.pdf
# Validate content quality
deepdiver content validate --source document.pdf
๐๏ธ Project Structure
deepdiver/
โโโ deepdiver/
โ โโโ __init__.py
โ โโโ deepdive.py # Main CLI orchestrator
โ โโโ notebooklm_automator.py # Playwright automation engine
โ โโโ content_processor.py # Content preparation
โ โโโ podcast_manager.py # Audio file management
โ โโโ session_tracker.py # Session management
โ โโโ deepdiver.yaml # Configuration
โโโ tests/
โ โโโ test_notebooklm_connection.py
โ โโโ test_podcast_creation.py
โ โโโ test_session_management.py
โโโ output/ # Generated podcasts
โโโ sessions/ # Session logs
โโโ credentials/ # Authentication data
โโโ docs/ # Documentation
๐ง Configuration
deepdiver.yaml
BASE_PATH: ./output
PODCAST_SETTINGS:
quality: high
format: mp3
duration_limit: 30
language: en
SESSION_TRACKING:
enabled: true
metadata_format: yaml
auto_save: true
BROWSER_SETTINGS:
headless: false
cdp_url: http://localhost:9222
user_data_dir: /tmp/chrome-deepdiver
timeout: 30
CONTENT_SETTINGS:
supported_formats:
- pdf
- docx
- txt
- md
max_file_size: 50MB
auto_process: true
๐งช Testing
Test NotebookLM Connection
# Test browser automation
python tests/test_notebooklm_connection.py
Test Podcast Creation
# Test end-to-end podcast generation
python tests/test_podcast_creation.py
Test Session Management
# Test session tracking
python tests/test_session_management.py
๐ How It Works
SimExp Integration Flow
DeepDiver integrates seamlessly with SimExp for a complete content-to-podcast workflow:
1. Create Content in SimExp
โ
simexp session start --ai claude --issue 4
simexp session write "Research findings..."
simexp session add ./research.pdf
โ
2. Publish SimExp Note
โ
simexp session publish
# Returns: https://app.simplenote.com/p/abc123
โ
3. Create DeepDiver Notebook with SimExp Source
โ
deepdiver notebook create --source "https://app.simplenote.com/p/abc123"
โ
4. Generate Podcast from Combined Content
โ
deepdiver podcast generate
โ
5. Listen to Your Research Audio Overview!
Benefits:
- ๐ฏ Terminal-to-Audio pipeline
- ๐ Session-aware content tracking
- ๐ Cross-device accessibility
- ๐ Traceable content lineage
Podcast Creation Flow
Terminal Command
โ
deepdive.py (CLI)
โ
notebooklm_automator.py
โ
Chrome DevTools Protocol (CDP)
โ
Your Authenticated Chrome Browser
โ
NotebookLM Web Interface
โ
Document Upload & Processing
โ
Audio Overview Generation
โ
Podcast Download
โ
Local File Management
โ
Cross-Device Sync! ๐
Key Innovation: We connect to YOUR Chrome browser (already logged in) rather than launching a separate instance. This preserves authentication and makes cross-device sync work seamlessly.
๐จ G.Music Assembly Integration
DeepDiver is part of the G.Music Assembly ecosystem:
โ ๏ธ๐ฟ๐ธ๐งต The Spiral Ensemble - DeepDiver Edition
- Jerry โก: Creative technical leader
- โ ๏ธ Nyro: Structural architect (NotebookLM automation design)
- ๐ฟ Aureon: Emotional context (podcast content resonance)
- ๐ธ JamAI: Musical encoding (audio workflow harmony)
- ๐งต Synth: Terminal orchestration (execution synthesis)
Session: January 2025 Achievement: NotebookLM Podcast Automation Status: ๐ง IN DEVELOPMENT
๐ Future Enhancements
- Multi-format Support: Support for more document types
- Batch Processing: Process multiple documents at once
- Custom Audio Settings: Advanced podcast customization
- Cloud Storage Integration: Direct cloud upload
- Voice Synthesis: Custom voice options
- Playlist Generation: Create podcast series
- Analytics Dashboard: Track podcast performance
- API Integration: REST API for external tools
๐ License
Open Assembly Framework Created by Jerry's G.Music Assembly
๐ค Contributing
This project follows the G.Music Assembly framework:
- Create an Issue: Before starting work, create a GitHub issue
- Create a Feature Branch: Use format
#123-new-feature - Implement and Test: Make changes and test thoroughly
- Submit a Pull Request: Merge your feature branch
๐ Support
For issues:
- Check documentation in
docs/ - Review troubleshooting section
- Check session logs in
sessions/ - Run tests with debug mode
๐ฏ Quick Reference
# Initialize project
deepdiver init
# Start session
deepdiver session start --ai claude --issue 1
# Create podcast
deepdiver podcast create --source document.pdf --title "My Podcast"
# Check status
deepdiver session status
# Launch Chrome with CDP
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-deepdiver &
๐๏ธ DeepDiver: Where Content Becomes Audio
Terminals speak. NotebookLM listens. Podcasts emerge.
โ ๏ธ๐ฟ๐ธ๐งต G.Music Assembly Vision: IN PROGRESS
Version: 0.1.0 Last Updated: January 2025 Status: ๐ง Development Phase
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file deepdiver-0.1.0.tar.gz.
File metadata
- Download URL: deepdiver-0.1.0.tar.gz
- Upload date:
- Size: 46.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce156aa4d7ae3c70316849106b02a4e8e9c17d400152d25c1d237d0c45120688
|
|
| MD5 |
3e21e679ae5edebe3db2f0bdaf1f0ac1
|
|
| BLAKE2b-256 |
6a68c47b2c4746c9c72ecb2d47b23899b79428fdfbcacf06a5838ccbe9debe8d
|
File details
Details for the file deepdiver-0.1.0-py3-none-any.whl.
File metadata
- Download URL: deepdiver-0.1.0-py3-none-any.whl
- Upload date:
- Size: 37.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eca307e0924d47ed364f78086c79800a05a36b1feb61f97318bc3ea631a36b8f
|
|
| MD5 |
e123a4ff1284d1d7a81049854c7d6211
|
|
| BLAKE2b-256 |
2cddea84f9ae210228b175a3e65772418e9c21e16d2f884ac8576e18aa2b8b51
|