Metadata-Version: 2.4
Name: notebooklm-py
Version: 0.2.0
Summary: Unofficial Python client for Google NotebookLM API
Project-URL: Homepage, https://github.com/teng-lin/notebooklm-py
Project-URL: Repository, https://github.com/teng-lin/notebooklm-py
Project-URL: Documentation, https://github.com/teng-lin/notebooklm-py#readme
Project-URL: Issues, https://github.com/teng-lin/notebooklm-py/issues
Author-email: Teng Lin <teng.lin@gmail.com>
License: MIT
License-File: LICENSE
Keywords: ai,api,automation,client,google,notebooklm,rpc
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: click>=8.0.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: rich>=13.0.0
Provides-Extra: all
Requires-Dist: mypy>=1.0.0; extra == 'all'
Requires-Dist: playwright>=1.40.0; extra == 'all'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'all'
Requires-Dist: pytest-cov>=4.0.0; extra == 'all'
Requires-Dist: pytest-httpx>=0.30.0; extra == 'all'
Requires-Dist: pytest-rerunfailures>=14.0; extra == 'all'
Requires-Dist: pytest>=8.0.0; extra == 'all'
Requires-Dist: python-dotenv>=1.0.0; extra == 'all'
Requires-Dist: ruff>=0.4.0; extra == 'all'
Requires-Dist: vcrpy>=6.0.0; extra == 'all'
Provides-Extra: browser
Requires-Dist: playwright>=1.40.0; extra == 'browser'
Provides-Extra: dev
Requires-Dist: mypy>=1.0.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest-httpx>=0.30.0; extra == 'dev'
Requires-Dist: pytest-rerunfailures>=14.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: python-dotenv>=1.0.0; extra == 'dev'
Requires-Dist: ruff>=0.4.0; extra == 'dev'
Requires-Dist: vcrpy>=6.0.0; extra == 'dev'
Description-Content-Type: text/markdown

# notebooklm-py
<p align="left">
  <img src="https://raw.githubusercontent.com/teng-lin/notebooklm-py/main/notebooklm-py.png" alt="notebooklm-py logo" width="128">
</p>

**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](https://img.shields.io/pypi/v/notebooklm-py.svg)](https://pypi.org/project/notebooklm-py/)
[![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue)](https://pypi.org/project/notebooklm-py/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Tests](https://github.com/teng-lin/notebooklm-py/actions/workflows/test.yml/badge.svg)](https://github.com/teng-lin/notebooklm-py/actions/workflows/test.yml)

**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](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/docs/troubleshooting.md) for debugging tips.

## What You Can Build

🤖 **AI Agent Tools** - Integrate NotebookLM into Claude Code, or other LLM agents. Ships with [Claude Code skills](#agent-skills-claude-code) 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

```bash
# 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

<p align="center">
  <a href="https://asciinema.org/a/767284" target="_blank"><img src="https://asciinema.org/a/767284.svg" width="600" /></a>
  <br>
  <em>16-minute session compressed to 30 seconds</em>
</p>

### CLI

```bash
# 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

```python
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)

```bash
# 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

- **[CLI Reference](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/docs/cli-reference.md)** - Complete command documentation
- **[Python API](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/docs/python-api.md)** - Full API reference
- **[Configuration](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/docs/configuration.md)** - Storage and settings
- **[Troubleshooting](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/docs/troubleshooting.md)** - Common issues and solutions
- **[API Stability](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/docs/stability.md)** - Versioning policy and stability guarantees

### For Contributors

- **[Development Guide](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/docs/development.md)** - Architecture, testing, and releasing
- **[RPC Development](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/docs/rpc-development.md)** - Protocol capture and debugging
- **[RPC Reference](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/docs/rpc-reference.md)** - Payload structures
- **[Changelog](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/CHANGELOG.md)** - Version history and release notes
- **[Security](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/SECURITY.md)** - 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](https://github.com/teng-lin/notebooklm-py/blob/v0.2.0/LICENSE) for details.
