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
- ๐๏ธ Advanced Audio Generation: Create Audio Overviews with full customization (format, language, length, focus prompts)
- ๐จ Studio Integration: Access all NotebookLM Studio features via terminal
- ๐ฑ Cross-Device Sync: Access generated podcasts anywhere
- ๐ฎ Session Management: Track podcast creation sessions with artifact metadata
- ๐ 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
โ๏ธ Configuration
DeepDiver uses smart configuration file discovery - it automatically searches multiple locations so you can run commands from anywhere!
Configuration File Locations
DeepDiver searches for config files in this priority order:
- Explicit path (when using
--configflag) - Current directory:
./deepdiver/deepdiver.yaml - User config directory:
~/.config/deepdiver/config.yamlโญ Recommended - Home directory:
~/deepdiver/deepdiver.yaml - Package directory: Where DeepDiver is installed
- Built-in defaults: If no config file is found
Creating Your Configuration
The easiest way to set up your configuration:
# Creates ~/.config/deepdiver/config.yaml with default settings
deepdiver init
# Or specify a custom location
deepdiver init --config /path/to/my/config.yaml
Benefits of Smart Config Discovery
- โ Run from anywhere: No need to be in a specific directory
- โ Cross-device consistency: Config stored in standard location
- โ Easy updates: Edit one file that works everywhere
- โ No setup needed: Falls back to sensible defaults
For detailed configuration options and troubleshooting, see CONFIGURATION.md.
๐ฎ 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
Studio Commands
๐ธ NEW: Advanced Audio Overview Generation
DeepDiver now supports NotebookLM's Studio panel with full customization options:
# Basic audio generation (uses defaults: Deep Dive, English, Default length)
deepdiver studio audio --notebook-id abc-123
# Customize format: Deep Dive, Brief, Critique, or Debate
deepdiver studio audio --format deep_dive --notebook-id abc-123
deepdiver studio audio --format brief --notebook-id abc-123
deepdiver studio audio --format critique --notebook-id abc-123
deepdiver studio audio --format debate --notebook-id abc-123
# Customize length: Short, Default, or Long
deepdiver studio audio --length short --notebook-id abc-123
deepdiver studio audio --length default --notebook-id abc-123
deepdiver studio audio --length long --notebook-id abc-123
# Customize language
deepdiver studio audio --language English --notebook-id abc-123
deepdiver studio audio --language Spanish --notebook-id abc-123
deepdiver studio audio --language French --notebook-id abc-123
# Add focus prompts (guide the AI hosts)
deepdiver studio audio \
--focus "Focus on the technical implementation details" \
--notebook-id abc-123
deepdiver studio audio \
--focus "Explain to someone new to this topic" \
--notebook-id abc-123
deepdiver studio audio \
--focus "Discuss only the article about machine learning" \
--notebook-id abc-123
# Full customization example
deepdiver studio audio \
--format critique \
--language English \
--length long \
--focus "Analyze the strengths and weaknesses of the proposed architecture" \
--notebook-id abc-123
Format Options:
- Deep Dive (default): Lively conversation unpacking and connecting topics
- Brief: Bite-sized overview for quick understanding
- Critique: Expert review with constructive feedback
- Debate: Thoughtful discussion of different perspectives
Length Options:
- Short: Quick overview (3-5 minutes)
- Default: Balanced depth (5-10 minutes)
- Long: Comprehensive exploration (10-15 minutes)
Focus Prompts (max 5000 characters):
- Focus on specific source: "only cover the article about Italy"
- Focus on topic: "just discuss the novel's main character"
- Target audience: "explain to someone new to biology"
- Custom instructions: Any guidance for the AI hosts
Session Tracking: All generated Audio Overviews are automatically tracked in your session with complete metadata (format, language, length, focus, generation time).
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)
- ๐ธ Miette: Narrative echo (ceremonial development frameworks)
Session: January 2025 Achievement: NotebookLM Podcast Automation with Studio Integration 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
๐ Documentation
Core Documentation
- CONFIGURATION.md - Configuration file discovery and setup guide
- ROADMAP.md - Project development roadmap and milestones
- CLAUDE.md - Assembly team configuration and workflow
Implementation Guides
- NotebookLM Studio Artifacts - Complete implementation guide for all Studio artifact types:
- โ Phase 1: Audio Overview (Completed)
- ๐ Phase 2: Video Overview (Next Priority)
- ๐ Phase 3: Mind Map
- ๐ Phase 4: Study Guides & Reports
- ๐ Phase 5: Flashcards
- ๐ Phase 6: Quizzes
Getting Started
- Run
deepdiver initto set up configuration - See Quick Start section above
- Check Configuration for advanced setup
๐ 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.1.tar.gz.
File metadata
- Download URL: deepdiver-0.1.1.tar.gz
- Upload date:
- Size: 60.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cca29a74983f1030a790db312f4cd3f5feb41a5a91d672667dccfddbaab012fc
|
|
| MD5 |
5cb00151dccf01d0655bdb7c40379d72
|
|
| BLAKE2b-256 |
38eba4cbdff59a612391236f749fb2f2b0fe704839a973adddfbbe34db7bdc59
|
File details
Details for the file deepdiver-0.1.1-py3-none-any.whl.
File metadata
- Download URL: deepdiver-0.1.1-py3-none-any.whl
- Upload date:
- Size: 49.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c86d54ad03f87a65760cf8b6267c920283bd63083c986ad4355c44a52f3e8524
|
|
| MD5 |
cc978c0308eb4210aa49994c613b9463
|
|
| BLAKE2b-256 |
390c729ac213d976984173ae55a93ac3d5d72b76d9df82872861635a3b019ca7
|