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. ๐ŸŽ™๏ธ Podcast Generation: Create Audio Overviews with terminal commands
  3. ๐Ÿ“ฑ Cross-Device Sync: Access generated podcasts anywhere
  4. ๐Ÿ”ฎ Session Management: Track podcast creation sessions
  5. ๐ŸŒŠ 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:

  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

๐Ÿ“ž 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.0.tar.gz (46.0 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.0-py3-none-any.whl (37.8 kB view details)

Uploaded Python 3

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

Hashes for deepdiver-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ce156aa4d7ae3c70316849106b02a4e8e9c17d400152d25c1d237d0c45120688
MD5 3e21e679ae5edebe3db2f0bdaf1f0ac1
BLAKE2b-256 6a68c47b2c4746c9c72ecb2d47b23899b79428fdfbcacf06a5838ccbe9debe8d

See more details on using hashes here.

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

Hashes for deepdiver-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eca307e0924d47ed364f78086c79800a05a36b1feb61f97318bc3ea631a36b8f
MD5 e123a4ff1284d1d7a81049854c7d6211
BLAKE2b-256 2cddea84f9ae210228b175a3e65772418e9c21e16d2f884ac8576e18aa2b8b51

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