No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Teng Lin b01e740fef ci: remove debug code after fixing report download test
The test now passes with the correct notebook ID configured.
Keep test_filter input for running specific tests on demand.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-15 12:13:42 -05:00
.github ci: remove debug code after fixing report download test 2026-01-15 12:13:42 -05:00
docs docs: add installation instructions to SKILL.md 2026-01-15 11:16:22 -05:00
scripts feat: add automated RPC ID monitoring (#32) 2026-01-14 11:51:53 -05:00
src/notebooklm ci: remove debug code after fixing report download test 2026-01-15 12:13:42 -05:00
tests ci: remove debug code after fixing report download test 2026-01-15 12:13:42 -05:00
.env.example docs: sync documentation with E2E fixture redesign 2026-01-08 16:38:05 -05:00
.gitignore docs: major documentation restructure and cleanup for v0.2.0 2026-01-13 23:13:55 -05:00
.pre-commit-config.yaml feat: add ruff linter/formatter and fix Python 3.10 test compatibility 2026-01-09 14:59:47 -05:00
CHANGELOG.md chore: release v0.2.0 2026-01-14 08:21:49 -05:00
CLAUDE.md docs: major documentation restructure and cleanup for v0.2.0 2026-01-13 23:13:55 -05:00
CONTRIBUTING.md refactor: modernize release process with dynamic versioning and CI workflows (#28) 2026-01-14 01:01:59 -05:00
LICENSE Initial commit: Fresh start of notebooklm-client v0.1.0 2026-01-05 01:09:04 -05:00
notebooklm-py.png docs: add project logo to README 2026-01-07 22:28:21 -05:00
pyproject.toml docs: improve package description 2026-01-14 12:04:25 -05:00
README.md docs: major documentation restructure and cleanup for v0.2.0 2026-01-13 23:13:55 -05:00
SECURITY.md docs: comprehensive cleanup for env var documentation 2026-01-08 14:29:49 -05:00
uv.lock docs: major documentation restructure and cleanup for v0.2.0 2026-01-13 23:13:55 -05:00

notebooklm-py

notebooklm-py logo

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.

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 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

Quick Start


16-minute session compressed to 30 seconds

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 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"

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, reports, mind maps, data tables, quizzes, flashcards
Agent Skills Claude Code skill for LLM-driven automation

Documentation

For Contributors

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.