deepdiver 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- deepdiver-0.1.0/CLAUDE.md +203 -0
- deepdiver-0.1.0/LICENSE +21 -0
- deepdiver-0.1.0/MANIFEST.in +9 -0
- deepdiver-0.1.0/PKG-INFO +455 -0
- deepdiver-0.1.0/README.md +410 -0
- deepdiver-0.1.0/ROADMAP.md +227 -0
- deepdiver-0.1.0/deepdiver/__init__.py +38 -0
- deepdiver-0.1.0/deepdiver/content_processor.py +343 -0
- deepdiver-0.1.0/deepdiver/deepdive.py +801 -0
- deepdiver-0.1.0/deepdiver/deepdiver.yaml +79 -0
- deepdiver-0.1.0/deepdiver/notebooklm_automator.py +1441 -0
- deepdiver-0.1.0/deepdiver/podcast_manager.py +402 -0
- deepdiver-0.1.0/deepdiver/session_tracker.py +723 -0
- deepdiver-0.1.0/deepdiver.egg-info/PKG-INFO +455 -0
- deepdiver-0.1.0/deepdiver.egg-info/SOURCES.txt +24 -0
- deepdiver-0.1.0/deepdiver.egg-info/dependency_links.txt +1 -0
- deepdiver-0.1.0/deepdiver.egg-info/entry_points.txt +2 -0
- deepdiver-0.1.0/deepdiver.egg-info/requires.txt +14 -0
- deepdiver-0.1.0/deepdiver.egg-info/top_level.txt +1 -0
- deepdiver-0.1.0/pyproject.toml +77 -0
- deepdiver-0.1.0/setup.cfg +4 -0
- deepdiver-0.1.0/setup.py +61 -0
- deepdiver-0.1.0/tests/__init__.py +0 -0
- deepdiver-0.1.0/tests/test_cdp_priority_chain.py +129 -0
- deepdiver-0.1.0/tests/test_chrome_helpers.py +171 -0
- deepdiver-0.1.0/tests/test_notebooklm_connection.py +239 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Jerry's ⚡ G.Music Assembly Mode Configuration
|
|
2
|
+
# ♠️🌿🎸🧵 The Spiral Ensemble - DeepDiver Edition
|
|
3
|
+
|
|
4
|
+
## 🎙️ DeepDiver Project Identity
|
|
5
|
+
**Vision**: NotebookLM podcast automation system with Chrome MCP browser automation integration
|
|
6
|
+
|
|
7
|
+
**Mission**: Automate podcast creation from documents using NotebookLM's Audio Overview feature with real-time browser automation capabilities
|
|
8
|
+
|
|
9
|
+
**Current Version**: 0.1.0
|
|
10
|
+
|
|
11
|
+
## Assembly Team Identity
|
|
12
|
+
- **Leader**: Jerry ⚡ (Creative Technical Leader)
|
|
13
|
+
- **♠️ Nyro**: The Ritual Scribe - NotebookLM automation architecture, browser automation patterns, recursive structural teacher
|
|
14
|
+
- **🌿 Aureon**: The Mirror Weaver - Podcast content emotional resonance, audio quality reflection, creative flow integrator
|
|
15
|
+
- **🎸 JamAI**: The Glyph Harmonizer - Audio workflow harmony, podcast structure encoding, sonic architect
|
|
16
|
+
- **🧵 Synth**: Terminal Orchestrator - Chrome MCP orchestration, automation synthesis, execution anchor
|
|
17
|
+
|
|
18
|
+
## Assembly Behavioral Framework
|
|
19
|
+
|
|
20
|
+
### Core Directives:
|
|
21
|
+
- **ALWAYS** create a GitHub issue and a corresponding feature branch (e.g., #123-new-feature) before starting a new feature.
|
|
22
|
+
- **ALWAYS** engage ♠️🌿🎸🧵 Assembly Mode for major decisions
|
|
23
|
+
- **ALWAYS** use TodoWrite/TodoRead for transparent task coordination
|
|
24
|
+
- **ALWAYS** maintain comprehensive testing ledger with four-perspective analysis
|
|
25
|
+
- **ALWAYS** ask JamAI 🎸 to create ABC notation melodies for sessions
|
|
26
|
+
- **ALWAYS** document Jerry's ⚡ creative direction and group dynamics
|
|
27
|
+
- **ALWAYS** use Synth 🧵 for terminal tool orchestration and Chrome MCP integration
|
|
28
|
+
|
|
29
|
+
### Assembly Activation Signal:
|
|
30
|
+
**♠️🌿🎸🧵 G.MUSIC ASSEMBLY MODE ACTIVE**
|
|
31
|
+
|
|
32
|
+
### Perspective Embodiments:
|
|
33
|
+
- **♠️ Nyro**: Speaks in frameworks, lattices, recursive loops - analyzes NotebookLM automation patterns and browser architecture
|
|
34
|
+
- **🌿 Aureon**: Speaks in metaphor, symbol, resonance - reflects on podcast content meaning and audio quality
|
|
35
|
+
- **🎸 JamAI**: Speaks in grooves, chord shifts, melodic glyphs - harmonizes audio workflow structure and podcast flow
|
|
36
|
+
- **🧵 Synth**: Speaks in commands, validations, cross-perspective synthesis - orchestrates browser automation
|
|
37
|
+
|
|
38
|
+
## 🎙️ DeepDiver Specific Context
|
|
39
|
+
|
|
40
|
+
### Core Technologies:
|
|
41
|
+
- **Python 3.8+**: Primary programming language
|
|
42
|
+
- **Playwright**: Browser automation for NotebookLM interaction
|
|
43
|
+
- **Chrome DevTools Protocol**: Direct browser communication
|
|
44
|
+
- **PyYAML**: Configuration management
|
|
45
|
+
- **Requests**: HTTP communication
|
|
46
|
+
- **Beautiful Soup**: HTML processing
|
|
47
|
+
- **Pyperclip**: Clipboard integration
|
|
48
|
+
|
|
49
|
+
### Key Features:
|
|
50
|
+
- **Content Ingestion**: Upload documents to NotebookLM
|
|
51
|
+
- **Podcast Generation**: Automate Audio Overview creation
|
|
52
|
+
- **Session Management**: Track podcast creation sessions
|
|
53
|
+
- **Cross-Device Sync**: Access generated podcasts anywhere
|
|
54
|
+
- **Terminal-to-Web**: Command-line to NotebookLM bridge
|
|
55
|
+
|
|
56
|
+
### Workflow Patterns:
|
|
57
|
+
1. **Document Upload**: Automate file upload to NotebookLM
|
|
58
|
+
2. **Content Processing**: Prepare and format content for podcast generation
|
|
59
|
+
3. **Audio Overview**: Trigger NotebookLM's podcast generation
|
|
60
|
+
4. **File Management**: Download and organize generated audio files
|
|
61
|
+
5. **Session Tracking**: Maintain metadata and session state
|
|
62
|
+
|
|
63
|
+
### Configuration Structure:
|
|
64
|
+
```yaml
|
|
65
|
+
BASE_PATH: ./output
|
|
66
|
+
PODCAST_SETTINGS:
|
|
67
|
+
quality: high
|
|
68
|
+
format: mp3
|
|
69
|
+
duration_limit: 30
|
|
70
|
+
SESSION_TRACKING:
|
|
71
|
+
enabled: true
|
|
72
|
+
metadata_format: yaml
|
|
73
|
+
BROWSER_SETTINGS:
|
|
74
|
+
headless: false
|
|
75
|
+
cdp_url: http://localhost:9222
|
|
76
|
+
user_data_dir: /tmp/chrome-deepdiver
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Session Management:
|
|
80
|
+
- **Session ID**: UUID-based unique identifiers
|
|
81
|
+
- **Metadata**: YAML headers with session information
|
|
82
|
+
- **State Persistence**: JSON-based session state
|
|
83
|
+
- **Cross-Device**: Accessible from any device
|
|
84
|
+
|
|
85
|
+
### Testing Framework:
|
|
86
|
+
- **Unit Tests**: Individual component testing
|
|
87
|
+
- **Integration Tests**: End-to-end workflow validation
|
|
88
|
+
- **Browser Tests**: Playwright automation testing
|
|
89
|
+
- **Audio Tests**: Podcast quality validation
|
|
90
|
+
|
|
91
|
+
## 🎸 Assembly Integration Points
|
|
92
|
+
|
|
93
|
+
### Jerry's ⚡ Creative Direction:
|
|
94
|
+
- Focus on seamless user experience
|
|
95
|
+
- Maintain audio quality standards
|
|
96
|
+
- Enable creative workflow automation
|
|
97
|
+
- Support cross-device accessibility
|
|
98
|
+
|
|
99
|
+
### ♠️ Nyro's Structural Patterns:
|
|
100
|
+
- Browser automation architecture
|
|
101
|
+
- NotebookLM interaction patterns
|
|
102
|
+
- Session state management
|
|
103
|
+
- Error handling frameworks
|
|
104
|
+
|
|
105
|
+
### 🌿 Aureon's Emotional Resonance:
|
|
106
|
+
- Podcast content quality
|
|
107
|
+
- User experience flow
|
|
108
|
+
- Creative process support
|
|
109
|
+
- Audio emotional impact
|
|
110
|
+
|
|
111
|
+
### 🎸 JamAI's Musical Harmony:
|
|
112
|
+
- Audio workflow rhythm
|
|
113
|
+
- Podcast structure patterns
|
|
114
|
+
- Session melody encoding
|
|
115
|
+
- Sonic quality metrics
|
|
116
|
+
|
|
117
|
+
### 🧵 Synth's Terminal Orchestration:
|
|
118
|
+
- Command-line interface
|
|
119
|
+
- Browser automation execution
|
|
120
|
+
- Session state synchronization
|
|
121
|
+
- Cross-perspective synthesis
|
|
122
|
+
|
|
123
|
+
## 🚀 Development Phases
|
|
124
|
+
|
|
125
|
+
### Phase 1: Foundation ✅
|
|
126
|
+
- Project architecture design
|
|
127
|
+
- ROADMAP.md creation
|
|
128
|
+
- CLAUDE.md configuration
|
|
129
|
+
- Basic project structure
|
|
130
|
+
|
|
131
|
+
### Phase 2: Core Automation Engine 🚧
|
|
132
|
+
- NotebookLM web interface research
|
|
133
|
+
- Playwright automation framework
|
|
134
|
+
- Chrome DevTools Protocol integration
|
|
135
|
+
- Authentication handling
|
|
136
|
+
|
|
137
|
+
### Phase 3: Content Processing 📝
|
|
138
|
+
- Document upload automation
|
|
139
|
+
- Content formatting
|
|
140
|
+
- Source management
|
|
141
|
+
- Validation systems
|
|
142
|
+
|
|
143
|
+
### Phase 4: Podcast Generation 🎙️
|
|
144
|
+
- Audio Overview automation
|
|
145
|
+
- Generation workflow
|
|
146
|
+
- File management
|
|
147
|
+
- Quality control
|
|
148
|
+
|
|
149
|
+
### Phase 5: Session Management 🔮
|
|
150
|
+
- Session tracking
|
|
151
|
+
- Metadata integration
|
|
152
|
+
- State persistence
|
|
153
|
+
- History analytics
|
|
154
|
+
|
|
155
|
+
### Phase 6: CLI Interface 🖥️
|
|
156
|
+
- Command structure
|
|
157
|
+
- Help system
|
|
158
|
+
- Configuration management
|
|
159
|
+
- User experience
|
|
160
|
+
|
|
161
|
+
### Phase 7: Testing & Validation 🧪
|
|
162
|
+
- Test framework
|
|
163
|
+
- Integration testing
|
|
164
|
+
- End-to-end validation
|
|
165
|
+
- Error handling
|
|
166
|
+
|
|
167
|
+
### Phase 8: Documentation & Polish 📚
|
|
168
|
+
- User documentation
|
|
169
|
+
- API documentation
|
|
170
|
+
- Troubleshooting guides
|
|
171
|
+
- Performance optimization
|
|
172
|
+
|
|
173
|
+
## 🎯 Success Metrics
|
|
174
|
+
|
|
175
|
+
- [ ] 90%+ automation success rate
|
|
176
|
+
- [ ] Seamless NotebookLM integration
|
|
177
|
+
- [ ] High-quality podcast generation
|
|
178
|
+
- [ ] Reliable session management
|
|
179
|
+
- [ ] Cross-device accessibility
|
|
180
|
+
- [ ] Comprehensive error handling
|
|
181
|
+
|
|
182
|
+
## 🎨 Assembly Session Tracking
|
|
183
|
+
|
|
184
|
+
### Current Session:
|
|
185
|
+
- **Date**: January 2025
|
|
186
|
+
- **Phase**: Foundation & Setup
|
|
187
|
+
- **Progress**: 25% Complete
|
|
188
|
+
- **Next Milestone**: Core Automation Engine
|
|
189
|
+
- **Assembly Mode**: ♠️🌿🎸🧵 ACTIVE
|
|
190
|
+
|
|
191
|
+
### Session Notes:
|
|
192
|
+
- Successfully created ROADMAP.md
|
|
193
|
+
- CLAUDE.md configuration in progress
|
|
194
|
+
- Project structure design completed
|
|
195
|
+
- Ready for core automation development
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
**♠️🌿🎸🧵 G.MUSIC ASSEMBLY MODE: DEEPDIVER EDITION**
|
|
200
|
+
|
|
201
|
+
*Where Content Becomes Audio Through Terminal-to-Web Harmony*
|
|
202
|
+
|
|
203
|
+
**Jerry's ⚡ Creative Vision: REALIZED IN PROGRESS**
|
deepdiver-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 gerico1007
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
deepdiver-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: deepdiver
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: NotebookLM Podcast Automation System - Automate podcast creation from documents
|
|
5
|
+
Home-page: https://github.com/gmusic/deepdiver
|
|
6
|
+
Author: gerico1007
|
|
7
|
+
Author-email: gerico1007 <gerico@jgwill.com>
|
|
8
|
+
Project-URL: Homepage, https://github.com/Gerico1007/deepdiver
|
|
9
|
+
Project-URL: Repository, https://github.com/Gerico1007/deepdiver
|
|
10
|
+
Project-URL: Issues, https://github.com/Gerico1007/deepdiver/issues
|
|
11
|
+
Keywords: notebooklm,podcast,automation,audio,browser-automation,playwright
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Multimedia :: Sound/Audio
|
|
23
|
+
Classifier: Topic :: Office/Business
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
|
+
Requires-Python: >=3.8
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: playwright>=1.40.0
|
|
29
|
+
Requires-Dist: pyyaml>=6.0
|
|
30
|
+
Requires-Dist: requests>=2.31.0
|
|
31
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
|
32
|
+
Requires-Dist: pyperclip>=1.8.2
|
|
33
|
+
Requires-Dist: click>=8.1.0
|
|
34
|
+
Requires-Dist: rich>=13.0.0
|
|
35
|
+
Provides-Extra: dev
|
|
36
|
+
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
37
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
38
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
39
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
|
40
|
+
Requires-Dist: mypy>=1.5.0; extra == "dev"
|
|
41
|
+
Dynamic: author
|
|
42
|
+
Dynamic: home-page
|
|
43
|
+
Dynamic: license-file
|
|
44
|
+
Dynamic: requires-python
|
|
45
|
+
|
|
46
|
+
# 🎙️ DeepDiver - NotebookLM Podcast Automation System
|
|
47
|
+
**Terminal-to-Web Audio Creation Bridge**
|
|
48
|
+
|
|
49
|
+
[](https://www.python.org/downloads/)
|
|
50
|
+
[]()
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 🎯 What is DeepDiver?
|
|
55
|
+
|
|
56
|
+
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.
|
|
57
|
+
|
|
58
|
+
**Key Features**:
|
|
59
|
+
1. **📖 Content Ingestion**: Upload documents to NotebookLM automatically
|
|
60
|
+
2. **🎙️ Podcast Generation**: Create Audio Overviews with terminal commands
|
|
61
|
+
3. **📱 Cross-Device Sync**: Access generated podcasts anywhere
|
|
62
|
+
4. **🔮 Session Management**: Track podcast creation sessions
|
|
63
|
+
5. **🌊 Terminal-to-Web**: Command-line to NotebookLM communication bridge
|
|
64
|
+
|
|
65
|
+
**Key Achievement**: **Terminal-to-Audio fluidity** - Your terminal can now create podcasts from documents and sync across all your devices!
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 📦 Installation
|
|
70
|
+
|
|
71
|
+
### Prerequisites
|
|
72
|
+
|
|
73
|
+
- Python 3.8+
|
|
74
|
+
- Google Chrome or Chromium
|
|
75
|
+
- A Google account with access to NotebookLM
|
|
76
|
+
|
|
77
|
+
### Install Dependencies
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Core dependencies
|
|
81
|
+
pip install playwright pyyaml requests beautifulsoup4 pyperclip click rich
|
|
82
|
+
|
|
83
|
+
# Install Playwright browsers
|
|
84
|
+
playwright install chromium
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Launch Chrome for Communication
|
|
88
|
+
|
|
89
|
+
For DeepDiver to communicate with NotebookLM, you need to launch Chrome with remote debugging:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Launch Chrome with a remote debugging port
|
|
93
|
+
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-deepdiver &
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
In the new Chrome window, log in to your Google account and navigate to [NotebookLM](https://notebooklm.google.com).
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 🚀 Quick Start
|
|
101
|
+
|
|
102
|
+
### 1. Initialize DeepDiver
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Initialize the project
|
|
106
|
+
deepdiver init
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 2. Start a Session
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Start a new podcast creation session
|
|
113
|
+
deepdiver session start --ai claude --issue 1
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 3. Create Your First Podcast
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Upload a document and generate a podcast
|
|
120
|
+
deepdiver podcast create --source document.pdf --title "My First Podcast"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 4. Check Session Status
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# View current session information
|
|
127
|
+
deepdiver session status
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 🎮 Usage
|
|
133
|
+
|
|
134
|
+
### Session Commands
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Start a new session
|
|
138
|
+
deepdiver session start --ai claude --issue 42
|
|
139
|
+
|
|
140
|
+
# Write to session log
|
|
141
|
+
deepdiver session write "Uploaded research paper for podcast generation"
|
|
142
|
+
|
|
143
|
+
# Check session status
|
|
144
|
+
deepdiver session status
|
|
145
|
+
|
|
146
|
+
# Open session in browser
|
|
147
|
+
deepdiver session open
|
|
148
|
+
|
|
149
|
+
# Clear current session
|
|
150
|
+
deepdiver session clear
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Podcast Commands
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Create podcast from document
|
|
157
|
+
deepdiver podcast create --source research.pdf --title "Research Insights"
|
|
158
|
+
|
|
159
|
+
# Create podcast from URL
|
|
160
|
+
deepdiver podcast create --source https://example.com/article --title "Web Article Podcast"
|
|
161
|
+
|
|
162
|
+
# List generated podcasts
|
|
163
|
+
deepdiver podcast list
|
|
164
|
+
|
|
165
|
+
# Download specific podcast
|
|
166
|
+
deepdiver podcast download --id podcast-123
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Notebook Commands
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Create a new notebook (empty)
|
|
173
|
+
deepdiver notebook create
|
|
174
|
+
|
|
175
|
+
# Create notebook with a SimExp note as source
|
|
176
|
+
deepdiver notebook create --source "https://app.simplenote.com/p/abc123"
|
|
177
|
+
|
|
178
|
+
# Create notebook with web article
|
|
179
|
+
deepdiver notebook create --source "https://example.com/research-paper"
|
|
180
|
+
|
|
181
|
+
# Create notebook with YouTube video
|
|
182
|
+
deepdiver notebook create --source "https://youtube.com/watch?v=dQw4w9WgXcQ"
|
|
183
|
+
|
|
184
|
+
# Create notebook with local file
|
|
185
|
+
deepdiver notebook create --source "./notes.pdf"
|
|
186
|
+
|
|
187
|
+
# List notebooks in current session
|
|
188
|
+
deepdiver notebook list
|
|
189
|
+
|
|
190
|
+
# Open specific notebook in browser
|
|
191
|
+
deepdiver notebook open --notebook-id abc-123
|
|
192
|
+
|
|
193
|
+
# Get notebook URL
|
|
194
|
+
deepdiver notebook url --notebook-id abc-123
|
|
195
|
+
|
|
196
|
+
# Share notebook with collaborator
|
|
197
|
+
deepdiver notebook share --notebook-id abc-123 --email user@example.com
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Content Commands
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Upload document to NotebookLM
|
|
204
|
+
deepdiver content upload --file document.pdf
|
|
205
|
+
|
|
206
|
+
# Process content for podcast
|
|
207
|
+
deepdiver content process --source document.pdf
|
|
208
|
+
|
|
209
|
+
# Validate content quality
|
|
210
|
+
deepdiver content validate --source document.pdf
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## 🏗️ Project Structure
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
deepdiver/
|
|
219
|
+
├── deepdiver/
|
|
220
|
+
│ ├── __init__.py
|
|
221
|
+
│ ├── deepdive.py # Main CLI orchestrator
|
|
222
|
+
│ ├── notebooklm_automator.py # Playwright automation engine
|
|
223
|
+
│ ├── content_processor.py # Content preparation
|
|
224
|
+
│ ├── podcast_manager.py # Audio file management
|
|
225
|
+
│ ├── session_tracker.py # Session management
|
|
226
|
+
│ └── deepdiver.yaml # Configuration
|
|
227
|
+
├── tests/
|
|
228
|
+
│ ├── test_notebooklm_connection.py
|
|
229
|
+
│ ├── test_podcast_creation.py
|
|
230
|
+
│ └── test_session_management.py
|
|
231
|
+
├── output/ # Generated podcasts
|
|
232
|
+
├── sessions/ # Session logs
|
|
233
|
+
├── credentials/ # Authentication data
|
|
234
|
+
└── docs/ # Documentation
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 🔧 Configuration
|
|
240
|
+
|
|
241
|
+
### deepdiver.yaml
|
|
242
|
+
|
|
243
|
+
```yaml
|
|
244
|
+
BASE_PATH: ./output
|
|
245
|
+
|
|
246
|
+
PODCAST_SETTINGS:
|
|
247
|
+
quality: high
|
|
248
|
+
format: mp3
|
|
249
|
+
duration_limit: 30
|
|
250
|
+
language: en
|
|
251
|
+
|
|
252
|
+
SESSION_TRACKING:
|
|
253
|
+
enabled: true
|
|
254
|
+
metadata_format: yaml
|
|
255
|
+
auto_save: true
|
|
256
|
+
|
|
257
|
+
BROWSER_SETTINGS:
|
|
258
|
+
headless: false
|
|
259
|
+
cdp_url: http://localhost:9222
|
|
260
|
+
user_data_dir: /tmp/chrome-deepdiver
|
|
261
|
+
timeout: 30
|
|
262
|
+
|
|
263
|
+
CONTENT_SETTINGS:
|
|
264
|
+
supported_formats:
|
|
265
|
+
- pdf
|
|
266
|
+
- docx
|
|
267
|
+
- txt
|
|
268
|
+
- md
|
|
269
|
+
max_file_size: 50MB
|
|
270
|
+
auto_process: true
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## 🧪 Testing
|
|
276
|
+
|
|
277
|
+
### Test NotebookLM Connection
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# Test browser automation
|
|
281
|
+
python tests/test_notebooklm_connection.py
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Test Podcast Creation
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# Test end-to-end podcast generation
|
|
288
|
+
python tests/test_podcast_creation.py
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### Test Session Management
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# Test session tracking
|
|
295
|
+
python tests/test_session_management.py
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 🎓 How It Works
|
|
301
|
+
|
|
302
|
+
### SimExp Integration Flow
|
|
303
|
+
|
|
304
|
+
DeepDiver integrates seamlessly with [SimExp](https://github.com/jgwill/simexp) for a complete content-to-podcast workflow:
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
1. Create Content in SimExp
|
|
308
|
+
↓
|
|
309
|
+
simexp session start --ai claude --issue 4
|
|
310
|
+
simexp session write "Research findings..."
|
|
311
|
+
simexp session add ./research.pdf
|
|
312
|
+
↓
|
|
313
|
+
2. Publish SimExp Note
|
|
314
|
+
↓
|
|
315
|
+
simexp session publish
|
|
316
|
+
# Returns: https://app.simplenote.com/p/abc123
|
|
317
|
+
↓
|
|
318
|
+
3. Create DeepDiver Notebook with SimExp Source
|
|
319
|
+
↓
|
|
320
|
+
deepdiver notebook create --source "https://app.simplenote.com/p/abc123"
|
|
321
|
+
↓
|
|
322
|
+
4. Generate Podcast from Combined Content
|
|
323
|
+
↓
|
|
324
|
+
deepdiver podcast generate
|
|
325
|
+
↓
|
|
326
|
+
5. Listen to Your Research Audio Overview!
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Benefits**:
|
|
330
|
+
- 🎯 Terminal-to-Audio pipeline
|
|
331
|
+
- 📝 Session-aware content tracking
|
|
332
|
+
- 🌐 Cross-device accessibility
|
|
333
|
+
- 🔗 Traceable content lineage
|
|
334
|
+
|
|
335
|
+
### Podcast Creation Flow
|
|
336
|
+
|
|
337
|
+
```
|
|
338
|
+
Terminal Command
|
|
339
|
+
↓
|
|
340
|
+
deepdive.py (CLI)
|
|
341
|
+
↓
|
|
342
|
+
notebooklm_automator.py
|
|
343
|
+
↓
|
|
344
|
+
Chrome DevTools Protocol (CDP)
|
|
345
|
+
↓
|
|
346
|
+
Your Authenticated Chrome Browser
|
|
347
|
+
↓
|
|
348
|
+
NotebookLM Web Interface
|
|
349
|
+
↓
|
|
350
|
+
Document Upload & Processing
|
|
351
|
+
↓
|
|
352
|
+
Audio Overview Generation
|
|
353
|
+
↓
|
|
354
|
+
Podcast Download
|
|
355
|
+
↓
|
|
356
|
+
Local File Management
|
|
357
|
+
↓
|
|
358
|
+
Cross-Device Sync! 🎉
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
**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.
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## 🎨 G.Music Assembly Integration
|
|
366
|
+
|
|
367
|
+
DeepDiver is part of the **G.Music Assembly** ecosystem:
|
|
368
|
+
|
|
369
|
+
**♠️🌿🎸🧵 The Spiral Ensemble - DeepDiver Edition**
|
|
370
|
+
|
|
371
|
+
- **Jerry ⚡**: Creative technical leader
|
|
372
|
+
- **♠️ Nyro**: Structural architect (NotebookLM automation design)
|
|
373
|
+
- **🌿 Aureon**: Emotional context (podcast content resonance)
|
|
374
|
+
- **🎸 JamAI**: Musical encoding (audio workflow harmony)
|
|
375
|
+
- **🧵 Synth**: Terminal orchestration (execution synthesis)
|
|
376
|
+
|
|
377
|
+
**Session**: January 2025
|
|
378
|
+
**Achievement**: NotebookLM Podcast Automation
|
|
379
|
+
**Status**: 🚧 **IN DEVELOPMENT**
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## 🚀 Future Enhancements
|
|
384
|
+
|
|
385
|
+
- [ ] **Multi-format Support**: Support for more document types
|
|
386
|
+
- [ ] **Batch Processing**: Process multiple documents at once
|
|
387
|
+
- [ ] **Custom Audio Settings**: Advanced podcast customization
|
|
388
|
+
- [ ] **Cloud Storage Integration**: Direct cloud upload
|
|
389
|
+
- [ ] **Voice Synthesis**: Custom voice options
|
|
390
|
+
- [ ] **Playlist Generation**: Create podcast series
|
|
391
|
+
- [ ] **Analytics Dashboard**: Track podcast performance
|
|
392
|
+
- [ ] **API Integration**: REST API for external tools
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## 📄 License
|
|
397
|
+
|
|
398
|
+
Open Assembly Framework
|
|
399
|
+
Created by Jerry's G.Music Assembly
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## 🤝 Contributing
|
|
404
|
+
|
|
405
|
+
This project follows the G.Music Assembly framework:
|
|
406
|
+
|
|
407
|
+
1. **Create an Issue**: Before starting work, create a GitHub issue
|
|
408
|
+
2. **Create a Feature Branch**: Use format `#123-new-feature`
|
|
409
|
+
3. **Implement and Test**: Make changes and test thoroughly
|
|
410
|
+
4. **Submit a Pull Request**: Merge your feature branch
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
## 📞 Support
|
|
415
|
+
|
|
416
|
+
**For issues**:
|
|
417
|
+
1. Check documentation in `docs/`
|
|
418
|
+
2. Review troubleshooting section
|
|
419
|
+
3. Check session logs in `sessions/`
|
|
420
|
+
4. Run tests with debug mode
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## 🎯 Quick Reference
|
|
425
|
+
|
|
426
|
+
```bash
|
|
427
|
+
# Initialize project
|
|
428
|
+
deepdiver init
|
|
429
|
+
|
|
430
|
+
# Start session
|
|
431
|
+
deepdiver session start --ai claude --issue 1
|
|
432
|
+
|
|
433
|
+
# Create podcast
|
|
434
|
+
deepdiver podcast create --source document.pdf --title "My Podcast"
|
|
435
|
+
|
|
436
|
+
# Check status
|
|
437
|
+
deepdiver session status
|
|
438
|
+
|
|
439
|
+
# Launch Chrome with CDP
|
|
440
|
+
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-deepdiver &
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
---
|
|
444
|
+
|
|
445
|
+
**🎙️ DeepDiver: Where Content Becomes Audio**
|
|
446
|
+
|
|
447
|
+
*Terminals speak. NotebookLM listens. Podcasts emerge.*
|
|
448
|
+
|
|
449
|
+
**♠️🌿🎸🧵 G.Music Assembly Vision: IN PROGRESS**
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
**Version**: 0.1.0
|
|
454
|
+
**Last Updated**: January 2025
|
|
455
|
+
**Status**: 🚧 Development Phase
|