Skip to main content

NotebookLM Podcast Automation System - Automate podcast creation from documents

Project description

๐ŸŽ™๏ธ DeepDiver - NotebookLM Podcast Automation System

Terminal-to-Web Audio Creation Bridge

Python 3.8+ License


๐ŸŽฏ 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:

  1. ๐Ÿ“– Content Ingestion: Upload documents to NotebookLM automatically
  2. ๐ŸŽ™๏ธ Advanced Audio Generation: Create Audio Overviews with full customization (format, language, length, focus prompts)
  3. ๐ŸŽจ Studio Integration: Access all NotebookLM Studio features via terminal
  4. ๐Ÿ“ฑ Cross-Device Sync: Access generated podcasts anywhere
  5. ๐Ÿ”ฎ Session Management: Track podcast creation sessions with artifact metadata
  6. ๐ŸŒŠ 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:

  1. Explicit path (when using --config flag)
  2. Current directory: ./deepdiver/deepdiver.yaml
  3. User config directory: ~/.config/deepdiver/config.yaml โญ Recommended
  4. Home directory: ~/deepdiver/deepdiver.yaml
  5. Package directory: Where DeepDiver is installed
  6. 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:

  1. Create an Issue: Before starting work, create a GitHub issue
  2. Create a Feature Branch: Use format #123-new-feature
  3. Implement and Test: Make changes and test thoroughly
  4. Submit a Pull Request: Merge your feature branch

๐Ÿ“š Documentation

Core Documentation

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


๐Ÿ“ž Support

For issues:

  1. Check documentation in docs/
  2. Review troubleshooting section
  3. Check session logs in sessions/
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deepdiver-0.1.1.tar.gz (60.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deepdiver-0.1.1-py3-none-any.whl (49.2 kB view details)

Uploaded Python 3

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

Hashes for deepdiver-0.1.1.tar.gz
Algorithm Hash digest
SHA256 cca29a74983f1030a790db312f4cd3f5feb41a5a91d672667dccfddbaab012fc
MD5 5cb00151dccf01d0655bdb7c40379d72
BLAKE2b-256 38eba4cbdff59a612391236f749fb2f2b0fe704839a973adddfbbe34db7bdc59

See more details on using hashes here.

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

Hashes for deepdiver-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c86d54ad03f87a65760cf8b6267c920283bd63083c986ad4355c44a52f3e8524
MD5 cc978c0308eb4210aa49994c613b9463
BLAKE2b-256 390c729ac213d976984173ae55a93ac3d5d72b76d9df82872861635a3b019ca7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page