notebooklm · diff
git:20260227.336a326 to git:20260227.1363d91
44 added, 2 removed. Audit A to A.
---
name: notebooklm
description: Enables interaction with Google NotebookLM for advanced RAG (Retrieval-Augmented Generation) capabilities via the notebooklm-mcp-cli tool. Use when querying project documentation stored in NotebookLM, managing research notebooks and sources, retrieving AI-synthesized information, generating audio podcasts or reports from notebooks, or performing contextual queries against curated knowledge bases. Triggers on "notebooklm", "nlm", "notebook query", "research notebook", "query documentation in notebooklm".
allowed-tools: Bash, Read, Write
---
# NotebookLM Integration
Interact with Google NotebookLM for advanced RAG capabilities — query project documentation, manage research sources, and retrieve AI-synthesized information from notebooks.
## Overview
This skill integrates with the [notebooklm-mcp-cli](https://github.com/jacob-bd/notebooklm-mcp-cli) tool (`nlm` CLI) to provide programmatic access to Google NotebookLM. It enables agents to manage notebooks, add sources, perform contextual queries, and retrieve generated artifacts like audio podcasts or reports.
## When to Use
Use this skill when:
- Querying project documentation stored in Google NotebookLM
- Retrieving AI-synthesized information from notebooks (e.g., summaries, Q&A)
- Managing notebooks: creating, listing, renaming, or deleting
- Adding sources to notebooks: URLs, text, files, YouTube, Google Drive
- Generating studio content: audio podcasts, video explainers, reports, quizzes
- Downloading generated artifacts (audio, video, reports, mind maps)
- Performing research queries across web or Google Drive
- Checking freshness and syncing Google Drive sources
- An agent is tasked with using documentation stored in NotebookLM for implementation
**Trigger phrases:** "query notebooklm", "search notebook", "add source to notebook", "create podcast from notebook", "generate report from notebook", "nlm query"
## Prerequisites
### Installation
```bash
# Install via uv (recommended)
uv tool install notebooklm-mcp-cli
# Or via pip
pip install notebooklm-mcp-cli
# Verify installation
nlm --version
```
### Authentication
```bash
# Login — opens Chrome for cookie extraction
nlm login
# Verify authentication
nlm login --check
# Use named profiles for multiple Google accounts
nlm login --profile work
nlm login --profile personal
nlm login switch work
```
### Diagnostics
```bash
# Run diagnostics if issues occur
nlm doctor
nlm doctor --verbose
```
> **⚠️ Important:** This tool uses internal Google APIs. Cookies expire every ~2-4 weeks — run `nlm login` again when operations fail. Free tier has ~50 queries/day rate limit.
## Instructions
### Step 1: Verify Tool Availability
Before performing any NotebookLM operation, verify the CLI is installed and authenticated:
```bash
nlm --version && nlm login --check
```
If authentication has expired, inform the user they need to run `nlm login`.
### Step 2: Identify the Target Notebook
List available notebooks or resolve an alias:
```bash
# List all notebooks
nlm notebook list
# Use an alias if configured
nlm alias get <alias-name>
# Get notebook details
nlm notebook get <notebook-id>
```
If the user references a notebook by name, use `nlm notebook list` to find the matching ID. If an alias exists, prefer using the alias.
### Step 3: Perform the Requested Operation
#### Querying a Notebook
Use this to retrieve information from notebook sources:
```bash
# Ask a question against notebook sources
nlm notebook query <notebook-id-or-alias> "What are the login requirements?"
# The response contains AI-generated answers grounded in the notebook's sources
```
**Best practices for queries:**
- Be specific and detailed in your questions
- Reference particular topics or sections when possible
- Use follow-up queries to drill deeper into specific areas
#### Managing Sources
```bash
# List current sources
nlm source list <notebook-id>
# Add a URL source (wait for processing)
nlm source add <notebook-id> --url "https://example.com/docs" --wait
# Add text content
nlm source add <notebook-id> --text "Content here" --title "My Notes"
# Upload a file
nlm source add <notebook-id> --file document.pdf --wait
# Add YouTube video
nlm source add <notebook-id> --youtube "https://youtube.com/watch?v=..."
# Add Google Drive document
nlm source add <notebook-id> --drive <document-id>
# Check for stale Drive sources
nlm source stale <notebook-id>
# Sync stale sources
nlm source sync <notebook-id> --confirm
# Get source content
nlm source get <source-id>
```
#### Creating a Notebook
```bash
# Create a new notebook
nlm notebook create "Project Documentation"
# Set an alias for easy reference
nlm alias set myproject <notebook-id>
```
#### Generating Studio Content
```bash
# Generate audio podcast
nlm audio create <notebook-id> --format deep_dive --length long --confirm
# Formats: deep_dive, brief, critique, debate
# Lengths: short, default, long
# Generate video
nlm video create <notebook-id> --format explainer --style classic --confirm
# Generate report
nlm report create <notebook-id> --format "Briefing Doc" --confirm
# Formats: "Briefing Doc", "Study Guide", "Blog Post"
# Generate quiz
nlm quiz create <notebook-id> --count 10 --difficulty medium --confirm
# Check generation status
nlm studio status <notebook-id>
```
#### Downloading Artifacts
```bash
# Download audio
nlm download audio <notebook-id> <artifact-id> --output podcast.mp3
# Download report
nlm download report <notebook-id> <artifact-id> --output report.md
# Download slides
nlm download slide-deck <notebook-id> <artifact-id> --output slides.pdf
```
#### Research
```bash
# Start web research
nlm research start "query" --notebook-id <notebook-id> --mode fast
# Start deep research
nlm research start "query" --notebook-id <notebook-id> --mode deep
# Poll for completion
nlm research status <notebook-id> --max-wait 300
# Import research results as sources
nlm research import <notebook-id> <task-id>
```
### Step 4: Present Results
- Parse the CLI output and present information clearly to the user
- For queries, present the AI-generated answer with relevant context
- For list operations, format results in a readable table
- For long-running operations (audio, video), inform the user about expected wait times (1-5 minutes)
## Aliases
The alias system provides user-friendly shortcuts for notebook UUIDs:
```bash
nlm alias set <name> <notebook-id> # Create alias
nlm alias list # List all aliases
nlm alias get <name> # Resolve alias to UUID
nlm alias delete <name> # Remove alias
```
Aliases can be used in place of notebook IDs in any command.
## Examples
### Example 1: Query Documentation for Implementation
**Task:** "Write the login use case based on documentation in NotebookLM"
```bash
# 1. Find the project notebook
nlm notebook list
+ ```
+ **Expected output:**
+ ```
+ ID Title Sources Created
+ ─────────────────────────────────────────────────────
+ abc123... Project X Docs 12 2026-01-15
+ def456... API Reference 5 2026-02-01
+ ```
+
+ ```bash
# 2. Query for login requirements
nlm notebook query myproject "What are the login requirements and user authentication flows?"
+ ```
+ **Expected output:**
+ ```
+ Based on the sources in this notebook:
+
+ The login flow requires email/password authentication with the following steps:
+ 1. User submits credentials via POST /api/auth/login
+ 2. Server validates against stored bcrypt hash
+ 3. JWT access token (15min) and refresh token (7d) are returned
+ ...
+ ```
+
+ ```bash
# 3. Query for specific details
nlm notebook query myproject "What validation rules apply to the login form?"
# 4. Use the retrieved information to implement the feature
```
### Example 2: Build a Research Notebook
**Task:** "Create a notebook with our API docs and generate a summary"
```bash
# 1. Create notebook
nlm notebook create "API Documentation"
- nlm alias set api-docs <returned-id>
+ ```
+ **Expected output:**
+ ```
+ Created notebook: API Documentation
+ ID: ghi789...
+ ```
+
+ ```bash
+ nlm alias set api-docs ghi789
+
# 2. Add sources
nlm source add api-docs --url "https://api.example.com/docs" --wait
nlm source add api-docs --file openapi-spec.yaml --wait
# 3. Generate a briefing doc
nlm report create api-docs --format "Briefing Doc" --confirm
# 4. Wait and download
nlm studio status api-docs
- nlm download report api-docs <artifact-id> --output api-summary.md
+ ```
+
+ **Expected output:**
+ ```
+ Artifact ID Type Status Created
+ ──────────────────────────────────────────────────
+ art123... Report completed 2026-02-27
+ ```
+
+ ```bash
+ nlm download report api-docs art123 --output api-summary.md
```
### Example 3: Generate a Podcast from Project Docs
```bash
# 1. Add sources to existing notebook
nlm source add myproject --url "https://blog.example.com/release-notes" --wait
# 2. Generate deep-dive podcast
nlm audio create myproject --format deep_dive --length long --confirm
# 3. Poll until ready
nlm studio status myproject
# 4. Download
nlm download audio myproject <artifact-id> --output podcast.mp3
```
## Best Practices
1. **Always verify authentication first** — Run `nlm login --check` before any operation
2. **Use aliases** — Set aliases for frequently-used notebooks to avoid UUID management
3. **Use `--wait` when adding sources** — Ensures sources are processed before querying
4. **Use `--confirm` for destructive/create operations** — Required for non-interactive use
5. **Handle rate limits** — Free tier has ~50 queries/day; space out bulk operations
6. **Cookie expiration** — Sessions last ~2-4 weeks; re-authenticate with `nlm login` when needed
7. **Check source freshness** — Use `nlm source stale` to detect outdated Google Drive sources
8. **Use `--json` for parsing** — When processing output programmatically, use `--json` flag
## Constraints and Warnings
- **Internal APIs**: NotebookLM CLI uses undocumented Google APIs that may change without notice
- **Authentication**: Requires Chrome-based cookie extraction — not suitable for headless CI/CD environments
- **Rate limits**: Free tier is limited to ~50 queries/day
- **Session expiry**: Cookies expire every ~2-4 weeks; requires periodic re-authentication
- **No official support**: This is a community tool, not officially supported by Google
- **Stability**: API changes may break functionality without warning — check for tool updates regularly