Open NotebookLM
An open-source implementation of NotebookLM\'s podcast feature that turns documents into engaging AI-hosted audio conversations.
Introduction
Open NotebookLM is an open-source implementation of Google NotebookLM's popular Audio Overview feature, created by Gabriel Chua. It processes the content of a PDF or any text source, generates a natural dialogue suitable for an audio podcast, and outputs it as an MP3 file — all using open-source LLMs and text-to-speech models.
Unlike the original NotebookLM which requires Google's proprietary infrastructure, Open NotebookLM runs on your own hardware using open-source alternatives. The project is Apache 2.0 licensed and hosted at github.com/gabrielchua/open-notebooklm. It supports 13 languages and is built with a Gradio web interface for easy interaction.
Installation
Open NotebookLM requires Python 3.10+ and can be installed from source.
Source Installation
git clone https://github.com/gabrielchua/open-notebooklm.git
cd open-notebooklm
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
API Key Configuration
The project uses Fireworks AI for LLM inference (Llama 3.3 70B with JSON mode). Set your API key as an environment variable:
export FIREWORKS_API_KEY="your-api-key-here"
Features
- PDF to Podcast — Upload a PDF and convert its content into an engaging dialogue between two AI hosts
- Web Content Support — Process web pages via URL using Jina Reader for content extraction
- Natural Dialogue Generation — Uses Llama 3.3 70B to generate informative and entertaining conversations
- Multi-language Audio — Available in 13 languages including English, Chinese, Spanish, French, and German
- Two AI Hosts — Distinct voices with natural back-and-forth interaction
- User-friendly Interface — Simple Gradio web UI for easy interaction
- MP3 Output — Downloadable high-quality audio files
Usage Guide
Using Open NotebookLM is straightforward:
- Launch the app: Run
python app.pyto start the Gradio interface - Upload content: Upload a PDF document or paste a URL
- Select language: Choose from 13 supported languages for the podcast
- Generate: Click the button to start the conversion process
- Download: The output is delivered as an MP3 file containing the podcast dialogue
The dialogue generation uses a structured approach: the LLM first analyzes the source content, then generates a script with alternating turns between two hosts, ensuring the conversation is both informative and natural-sounding. The script is then passed to the TTS pipeline for audio generation.
Technical Stack
Open NotebookLM combines several open-source models and tools to create the podcast pipeline:
| Component | Technology | Role |
|---|---|---|
| LLM | Llama 3.3 70B via Fireworks AI | Dialogue script generation with JSON mode |
| Structured Output | Instructor library | Pydantic-based structured response parsing |
| TTS (Primary) | MeloTTS | English text-to-speech synthesis |
| TTS (Alternative) | Bark (Suno) | Alternative TTS with more expressive voices |
| Content Extraction | Jina Reader API | Web page content extraction from URLs |
| Web Framework | Gradio | Interactive web UI |
Deployment
Open NotebookLM can be deployed in several ways. The default Gradio app runs locally and opens in your browser. For production or shared access, it can be deployed to Hugging Face Spaces with a single click. The project includes a pre-configured app.py that works with the Hugging Face Spaces SDK.
The Gradio interface supports sharing via temporary public links (using share=True), making it easy to share with collaborators without setting up a server. The pipeline also supports custom model providers — you can swap Fireworks AI for other providers that support structured JSON output.