Unofficial Python client for Google NotebookLM API
Project description
notebooklm-py
The missing API for Google NotebookLM. Automate research workflows, generate podcasts from your documents, and integrate NotebookLM into AI agents—all from Python or the command line.
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 research queries, and extract insights programmatically. Build repeatable research pipelines.
🎙️ Content Generation - Generate Audio Overviews (podcasts), videos, quizzes, flashcards, and study guides. Turn your sources into polished content with a single command.
Three Ways to Use
| Method | Best For |
|---|---|
| Python API | Application integration, async workflows, custom pipelines |
| CLI | Shell scripts, quick tasks, CI/CD automation |
| Agent Skills | Claude Code, LLM agents, natural language automation |
Installation
# Basic installation
pip install notebooklm-py
# With browser login support (required for first-time setup)
pip install "notebooklm-py[browser]"
playwright install chromium
See Installation for options or jump to Quick Start.
Quick Start
CLI
# 1. Authenticate (opens browser)
notebooklm login
# 2. Create a notebook
notebooklm create "My Research"
notebooklm use <notebook_id>
# 3. Add sources
notebooklm source add "https://en.wikipedia.org/wiki/Artificial_intelligence"
notebooklm source add "./paper.pdf"
# 4. Chat
notebooklm ask "What are the key themes?"
# 5. Generate a podcast
notebooklm generate audio --wait
notebooklm download audio ./podcast.mp3
Python API
import asyncio
from notebooklm import NotebookLMClient
async def main():
async with await NotebookLMClient.from_storage() as client:
# List notebooks
notebooks = await client.notebooks.list()
# Create notebook and add source
nb = await client.notebooks.create("Research")
await client.sources.add_url(nb.id, "https://example.com")
# Chat
result = await client.chat.ask(nb.id, "Summarize this")
print(result.answer)
# Generate podcast
status = await client.artifacts.generate_audio(nb.id)
await client.artifacts.wait_for_completion(nb.id, status.task_id)
asyncio.run(main())
Agent Skills (Claude Code)
# Install the skill
notebooklm skill install
# Then use natural language in Claude Code:
# "Create a podcast about quantum computing"
# "Summarize these URLs into a notebook"
# "/notebooklm generate video"
Features
| Category | Capabilities |
|---|---|
| Notebooks | Create, list, rename, delete, share |
| Sources | URLs, YouTube, files (PDF/TXT/MD/DOCX), Google Drive, pasted text |
| Chat | Questions, conversation history, custom personas |
| Generation | Audio podcasts, video, slides, quizzes, flashcards, reports, infographics, mind maps |
| Research | Web and Drive research agents with auto-import |
| Downloads | Audio, video, slides, infographics |
| Agent Skills | Claude Code skill for LLM-driven automation |
Documentation
- Getting Started - Installation and first workflow
- CLI Reference - Complete command documentation
- Python API - Full API reference
- Configuration - Storage and settings
- Troubleshooting - Common issues and solutions
- API Stability - Versioning policy and stability guarantees
For Contributors
- Architecture - Code structure
- Testing - Running and writing tests
- RPC Capture - Protocol reference and capture guides
- Debugging - Network capture guide
- Changelog - Version history and release notes
- Security - Security policy and credential handling
Platform Support
| Platform | Status | Notes |
|---|---|---|
| macOS | ✅ Tested | Primary development platform |
| Linux | ✅ Tested | Fully supported |
| Windows | ✅ Tested | Tested in CI |
License
MIT License. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file notebooklm_py-0.1.4.tar.gz.
File metadata
- Download URL: notebooklm_py-0.1.4.tar.gz
- Upload date:
- Size: 967.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
251e341adbe47c9c7c62719d6ade31489188e7555ba9d78ccb993c7dd7d5c1e3
|
|
| MD5 |
a9072b1581150453c652ef862e792398
|
|
| BLAKE2b-256 |
bb1145adc00a2ae9a2e36b217f62f44d429a69bb510923979c1ceda12ce4ca50
|
Provenance
The following attestation bundles were made for notebooklm_py-0.1.4.tar.gz:
Publisher:
publish.yml on teng-lin/notebooklm-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
notebooklm_py-0.1.4.tar.gz -
Subject digest:
251e341adbe47c9c7c62719d6ade31489188e7555ba9d78ccb993c7dd7d5c1e3 - Sigstore transparency entry: 813626829
- Sigstore integration time:
-
Permalink:
teng-lin/notebooklm-py@5dc3cb63e2e23a9333c263c517f148faa6437c6b -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/teng-lin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5dc3cb63e2e23a9333c263c517f148faa6437c6b -
Trigger Event:
push
-
Statement type:
File details
Details for the file notebooklm_py-0.1.4-py3-none-any.whl.
File metadata
- Download URL: notebooklm_py-0.1.4-py3-none-any.whl
- Upload date:
- Size: 101.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d754a88a1ab25591a60b84302bd610cb620c0206b827a6e558098a8eb33c949b
|
|
| MD5 |
9feb9064f524d3707032df20a6837d7f
|
|
| BLAKE2b-256 |
e41d79875bad9c26b677b64b1b6c0ab24acdad01c19cfd1e2ad9882970d19d17
|
Provenance
The following attestation bundles were made for notebooklm_py-0.1.4-py3-none-any.whl:
Publisher:
publish.yml on teng-lin/notebooklm-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
notebooklm_py-0.1.4-py3-none-any.whl -
Subject digest:
d754a88a1ab25591a60b84302bd610cb620c0206b827a6e558098a8eb33c949b - Sigstore transparency entry: 813626830
- Sigstore integration time:
-
Permalink:
teng-lin/notebooklm-py@5dc3cb63e2e23a9333c263c517f148faa6437c6b -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/teng-lin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5dc3cb63e2e23a9333c263c517f148faa6437c6b -
Trigger Event:
push
-
Statement type: