nblm-rs
Unofficial NotebookLM Enterprise API client written in Rust, available as:
- 🦀 Rust CLI: Command-line tool for shell scripting and automation
- 🐍 Python SDK: Python bindings for integration in Python applications
[!WARNING] This is an unofficial tool and is not affiliated with or endorsed by Google. Use at your own risk.
Motivation
Why use this CLI instead of direct API calls or web UI?
- Credential caching: Leverages gcloud authentication cache - no need to specify API keys or tokens repeatedly
- Type safety: Rust's type system catches errors at compile time, preventing runtime failures
- Batch operations: Add multiple sources to a notebook in a single command
- Better error handling: Clear, actionable error messages with helpful guidance
- Automatic retries: Built-in retry logic with exponential backoff for transient failures
- JSON output: Machine-readable format for automation and scripting workflows
- Cross-platform: Single binary works on Linux and macOS
- Developer-friendly: Command-line interface integrates seamlessly with shell scripts and CI/CD pipelines
[!NOTE] Windows is not supported.
Features (Verified as of 2025-10-25)
[!NOTE] The NotebookLM API is currently in alpha. Some features may not work as documented due to API limitations. See Known API Issues for details.
Notebooks
| Feature | CLI | Python | Status | Notes |
|---|---|---|---|---|
| Create notebook | ◯ | ◯ | Working | |
| List recent notebooks | ◯ | ◯ | Working | Pagination not implemented by API |
| Delete notebook(s) | ◯ | ◯ | Working | Sequential deletion (API limitation) |
Sources
| Feature | CLI | Python | Status | Notes |
|---|---|---|---|---|
| Add web URL | ◯ | ◯ | Working | |
| Add text content | ◯ | ◯ | Working | |
| Add video (YouTube) | ◯ | ◯ | Working | Uses youtubeUrl field |
| Add Google Drive | ◯ | ✗ | Not Working | API returns HTTP 500 |
| Upload file | ◯ | ◯ | Working | |
| Delete source(s) | ◯ | ◯ | Working | |
| Get source by ID | ◯ | ◯ | Working |
Audio Overview
| Feature | CLI | Python | Status | Notes |
|---|---|---|---|---|
| Create audio overview | ◯ | ◯ | Working | Config fields not supported |
| Delete audio overview | ◯ | ◯ | Working |
Sharing
| Feature | CLI | Python | Status | Notes |
|---|---|---|---|---|
| Share notebook | ◯ | ✗ | Untested | Requires additional users |
Installation
CLI (Rust)
# From crates.io
# Or build from source
Python SDK
Prerequisites: Google Cloud project with NotebookLM API enabled
Detailed Installation Guide: See Installation Documentation for platform-specific instructions and troubleshooting.
Quick Start
CLI
# 1. Authenticate
# 2. Set environment variables
# Get from GCP console
# 3. Create a notebook
# 4. Add a source
Python
# Initialize client
=
# Create a notebook
=
# Add sources
Documentation
Complete guides and API references:
- Getting Started - Installation, authentication, configuration
- CLI Reference - All commands, options, and examples
- Python SDK Reference - API reference and usage patterns
- API Limitations - Known issues and workarounds
Known API Issues
[!NOTE] The NotebookLM API is currently in alpha and has several known limitations. See API Limitations for details.
Related Resources
- NotebookLM API Documentation - Official API documentation
- NotebookLM API Reference - API reference
Contributing
Contributions are welcome! See CONTRIBUTING.md for development setup and guidelines.
[!IMPORTANT] All pull requests must pass
cargo make all(Rust) andcargo make py-all(Python) before being merged.
License
MIT