NOTEBOOKLM-PY(1)

NAME

notebooklm-pyUnofficial Python API for Google NotebookLM

SYNOPSIS

$pip install notebooklm-py

INFO

9.1k stars
1.2k forks
0 views
PythonAI & LLM

DESCRIPTION

Unofficial Python API for Google NotebookLM

README

notebooklm-py

notebooklm-py logo

Comprehensive Python API for Google NotebookLM. Full programmatic access to NotebookLM's features—including capabilities the web UI doesn't expose—from Python or the command line.

PyPI version Python Version License: MIT Tests

Source & Development: https://github.com/teng-lin/notebooklm-py

⚠️ Unofficial Library - Use at Your Own Risk

This library uses undocumented Google APIs that can change without notice.

  • Not affiliated with Google - This is a community project
  • APIs may break - Google can change internal endpoints anytime
  • Rate limits apply - Heavy usage may be throttled

Best for prototypes, research, and personal projects. See Troubleshooting for debugging tips.

What You Can Build

🤖 AI Agent Tools - Integrate NotebookLM into Claude Code or other LLM agents. Ships with Claude Code skills for natural language automation (notebooklm skill install), or build your own integrations with the async Python API.

📚 Research Automation - Bulk-import sources (URLs, PDFs, YouTube, Google Drive), run web/Drive research queries with auto-import, and extract insights programmatically. Build repeatable research pipelines.

🎙️ Content Generation - Generate Audio Overviews (podcasts), videos, slide decks, quizzes, flashcards, infographics, data tables, mind maps, and study guides. Full control over formats, styles, and output.

📥 Downloads & Export - Download all generated artifacts locally (MP3, MP4, PDF, PNG, CSV, JSON, Markdown). Export to Google Docs/Sheets. Features the web UI doesn't offer: batch downloads, quiz/flashcard export in multiple formats, mind map JSON extraction.

Three Ways to Use

MethodBest For
Python APIApplication integration, async workflows, custom pipelines
CLIShell scripts, quick tasks, CI/CD automation
Agent SkillsClaude Code, LLM agents, natural language automation

Features

Complete NotebookLM Coverage

CategoryCapabilities
NotebooksCreate, list, rename, delete
SourcesURLs, YouTube, files (PDF, text, Markdown, Word, audio, video, images), Google Drive, pasted text; refresh, get guide/fulltext
ChatQuestions, conversation history, custom personas
ResearchWeb and Drive research agents (fast/deep modes) with auto-import
SharingPublic/private links, user permissions (viewer/editor), view level control

Content Generation (All NotebookLM Studio Types)

TypeOptionsDownload Format
Audio Overview4 formats (deep-dive, brief, critique, debate), 3 lengths, 50+ languagesMP3/MP4
Video Overview2 formats, 9 visual styles (classic, whiteboard, kawaii, anime, etc.)MP4
Slide DeckDetailed or presenter format, adjustable length; individual slide revisionPDF, PPTX
Infographic3 orientations, 3 detail levelsPNG
QuizConfigurable quantity and difficultyJSON, Markdown, HTML
FlashcardsConfigurable quantity and difficultyJSON, Markdown, HTML
ReportBriefing doc, study guide, blog post, or custom promptMarkdown
Data TableCustom structure via natural languageCSV
Mind MapInteractive hierarchical visualizationJSON

Beyond the Web UI

These features are available via API/CLI but not exposed in NotebookLM's web interface:

  • Batch downloads - Download all artifacts of a type at once
  • Quiz/Flashcard export - Get structured JSON, Markdown, or HTML (web UI only shows interactive view)
  • Mind map data extraction - Export hierarchical JSON for visualization tools
  • Data table CSV export - Download structured tables as spreadsheets
  • Slide deck as PPTX - Download editable PowerPoint files (web UI only offers PDF)
  • Slide revision - Modify individual slides with natural-language prompts
  • Report template customization - Append extra instructions to built-in format templates
  • Save chat to notes - Save Q&A answers or conversation history as notebook notes
  • Source fulltext access - Retrieve the indexed text content of any source
  • Programmatic sharing - Manage permissions without the UI

Installation

# Basic installation
pip install notebooklm-py

With browser login support (required for first-time setup)

pip install "notebooklm-py[browser]" playwright install chromium

Development Installation

For contributors or testing unreleased features:

pip install git+https://github.com/teng-lin/notebooklm-py@main

⚠️ The main branch may contain unstable changes. Use PyPI releases for production.

Quick Start


16-minute session compressed to 30 seconds

CLI

# 1. Authenticate (opens browser)
notebooklm login

2. Create a notebook and add sources

notebooklm create "My Research" notebooklm use <notebook_id> notebooklm source add "https://en.wikipedia.org/wiki/Artificial_intelligence" notebooklm source add "./paper.pdf"

3. Chat with your sources

notebooklm ask "What are the key themes?"

4. Generate content

notebooklm generate audio "make it engaging" --wait notebooklm generate video --style whiteboard --wait notebooklm generate quiz --difficulty hard notebooklm generate flashcards --quantity more notebooklm generate slide-deck notebooklm generate infographic --orientation portrait notebooklm generate mind-map notebooklm generate data-table "compare key concepts"

5. Download artifacts

notebooklm download audio ./podcast.mp3 notebooklm download video ./overview.mp4 notebooklm download quiz --format markdown ./quiz.md notebooklm download flashcards --format json ./cards.json notebooklm download slide-deck ./slides.pdf notebooklm download mind-map ./mindmap.json notebooklm download data-table ./data.csv

Python API

import asyncio
from notebooklm import NotebookLMClient

async def main(): async with await NotebookLMClient.from_storage() as client: # Create notebook and add sources nb = await client.notebooks.create("Research") await client.sources.add_url(nb.id, "https://example.com", wait=True)

    # Chat with your sources
    result = await client.chat.ask(nb.id, &quot;Summarize this&quot;)
    print(result.answer)

    # Generate content (podcast, video, quiz, etc.)
    status = await client.artifacts.generate_audio(nb.id, instructions=&quot;make it fun&quot;)
    await client.artifacts.wait_for_completion(nb.id, status.task_id)
    await client.artifacts.download_audio(nb.id, &quot;podcast.mp3&quot;)

    # Generate quiz and download as JSON
    status = await client.artifacts.generate_quiz(nb.id)
    await client.artifacts.wait_for_completion(nb.id, status.task_id)
    await client.artifacts.download_quiz(nb.id, &quot;quiz.json&quot;, output_format=&quot;json&quot;)

    # Generate mind map and export
    result = await client.artifacts.generate_mind_map(nb.id)
    await client.artifacts.download_mind_map(nb.id, &quot;mindmap.json&quot;)

asyncio.run(main())

Agent Skills (Claude Code)

# Install via CLI or ask Claude Code to do it
notebooklm skill install

Then use natural language:

"Create a podcast about quantum computing"

"Download the quiz as markdown"

"/notebooklm generate video"

Documentation

For Contributors

Platform Support

PlatformStatusNotes
macOS✅ TestedPrimary development platform
Linux✅ TestedFully supported
Windows✅ TestedTested in CI

License

MIT License. See LICENSE for details.

SEE ALSO

clihub3/6/2026NOTEBOOKLM-PY(1)