notebooklm · git:20260227.1363d91 · 2026-02-27 · sha256 09680a85e76d203f
notebooklm git:20260227.1363d91A
Immutable. This exact content is served forever at /api/v1/blob/09680a85e76d203f.
--- 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" ``` **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 ``` **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