Skip to main content

Unofficial Python library for automating Google NotebookLM

Project description

notebooklm-py

notebooklm-py logo

A Comprehensive NotebookLM Skill & Unofficial Python API. Full programmatic access to NotebookLM's features—including capabilities the web UI doesn't expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.

PyPI version Python Version License: MIT Tests

teng-lin%2Fnotebooklm-py | Trendshift

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, Codex, and other LLM agents. Ships with a root NotebookLM skill for GitHub and npx skills add discovery, local notebooklm skill install support for Claude Code and .agents skill directories, and repo-level Codex guidance in AGENTS.md.

📚 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

Method Best For
Python API Application integration, async workflows, custom pipelines
CLI Shell scripts, quick tasks, CI/CD automation
Agent Integration Claude Code, Codex, LLM agents, natural language automation

Features

Complete NotebookLM Coverage

Category Capabilities
Notebooks Create, list, rename, delete
Sources URLs, YouTube, files (PDF, text, Markdown, Word, EPUB, audio, video, images), Google Drive, pasted text; refresh, get guide/fulltext
Chat Questions, conversation history, custom personas
Research Web and Drive research agents (fast/deep modes) with auto-import
Sharing Public/private links, user permissions (viewer/editor), view level control

Content Generation (All NotebookLM Studio Types)

Type Options Download Format
Audio Overview 4 formats (deep-dive, brief, critique, debate), 3 lengths, 50+ languages MP3/MP4
Video Overview 3 formats (explainer, brief, cinematic), 9 visual styles, plus a dedicated cinematic-video CLI alias MP4
Slide Deck Detailed or presenter format, adjustable length; individual slide revision PDF, PPTX
Infographic 3 orientations, 3 detail levels PNG
Quiz Configurable quantity and difficulty JSON, Markdown, HTML
Flashcards Configurable quantity and difficulty JSON, Markdown, HTML
Report Briefing doc, study guide, blog post, or custom prompt Markdown
Data Table Custom structure via natural language CSV
Mind Map Interactive hierarchical visualization JSON

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
  • Multi-account profiles - Switch between Google accounts without re-authenticating
  • Browser cookie import - Reuse cookies from your existing browser session instead of driving Playwright

Installation

# Basic installation
pip install notebooklm-py

# With browser login support (required for first-time setup)
pip install "notebooklm-py[browser]"
playwright install chromium

# Optional: import cookies from your existing browser instead of running Playwright
pip install "notebooklm-py[cookies]"

If playwright install chromium fails with TypeError: onExit is not a function, see the Linux workaround in Troubleshooting.

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
# Or use Microsoft Edge (for orgs that require Edge for SSO)
# notebooklm login --browser msedge
# Or reuse cookies from an already-logged-in browser session
# notebooklm login --browser-cookies chrome
# (combine with --profile to populate a specific profile;
#  cookie import always uses the browser's active Google account
#  for google.com / notebooklm.google.com, so switch accounts in
#  the browser between runs to populate multiple profiles from
#  one browser)

# 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 cinematic-video "documentary-style summary" --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 cinematic-video ./documentary.mp4
notebooklm download quiz --format markdown ./quiz.md
notebooklm download flashcards --format json ./cards.json
notebooklm download slide-deck ./slides.pdf
notebooklm download infographic ./infographic.png
notebooklm download mind-map ./mindmap.json
notebooklm download data-table ./data.csv

Other useful CLI commands:

notebooklm auth check --test         # Diagnose auth/cookie issues
notebooklm agent show codex          # Print bundled Codex instructions
notebooklm agent show claude         # Print bundled Claude Code skill template
notebooklm language list             # List supported output languages
notebooklm metadata --json           # Export notebook metadata and sources
notebooklm share status              # Inspect sharing state
notebooklm source add-research "AI"  # Start web research and import sources
notebooklm skill status              # Check local agent skill installation
notebooklm profile list              # List all Google account profiles
notebooklm profile switch work       # Switch active account profile

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, "Summarize this")
        print(result.answer)

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

        # 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, "quiz.json", output_format="json")

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

asyncio.run(main())

Agent Setup

Option 1 — CLI install:

notebooklm skill install

Installs the skill into ~/.claude/skills/notebooklm and ~/.agents/skills/notebooklm.

Option 2 — npx install (via the open skills ecosystem):

npx skills add teng-lin/notebooklm-py

Fetches the canonical SKILL.md directly from GitHub.

Documentation

For Contributors

Platform Support

Platform Status Notes
macOS ✅ Tested Primary development platform
Linux ✅ Tested Fully supported
Windows ✅ Tested Tested in CI

Star History

Star History Chart

License

MIT License. See LICENSE for details.

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

notebooklm_py-0.4.0.tar.gz (8.1 MB view details)

Uploaded Source

Built Distribution

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

notebooklm_py-0.4.0-py3-none-any.whl (204.6 kB view details)

Uploaded Python 3

File details

Details for the file notebooklm_py-0.4.0.tar.gz.

File metadata

  • Download URL: notebooklm_py-0.4.0.tar.gz
  • Upload date:
  • Size: 8.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for notebooklm_py-0.4.0.tar.gz
Algorithm Hash digest
SHA256 fd4ea614bfc53d124341bb49bce7ea81b35ffd993e94b9293d6e64d5786d9679
MD5 943f41634cc9cca281206e7f00ff7187
BLAKE2b-256 927cb3bc441db03c0dcb82ac90f2724b021110ff3e4f8898447cac8ccc600e8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for notebooklm_py-0.4.0.tar.gz:

Publisher: publish.yml on teng-lin/notebooklm-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file notebooklm_py-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: notebooklm_py-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 204.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for notebooklm_py-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b413108e741e91b3b62d4d2c1acd46ca9cdfa415af6bfb391edd917d91c5819c
MD5 6b5e32d5469b10bb3f85691bb1d5e16a
BLAKE2b-256 6718d52664f0153c823478a10e005a146b6129f6e976ad68e85b03130233dffc

See more details on using hashes here.

Provenance

The following attestation bundles were made for notebooklm_py-0.4.0-py3-none-any.whl:

Publisher: publish.yml on teng-lin/notebooklm-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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