notebooklm · git:20260208.f21eb1a · 2026-02-08 · sha256 5a2d44a88ab0de25

notebooklm git:20260208.f21eb1aA

Immutable. This exact content is served forever at /api/v1/blob/5a2d44a88ab0de25.

---
name: notebooklm
description: "Query and manage Google NotebookLM notebooks with persistent profile auth, source sync, batch/multi queries, and structured exports. Use when user asks to query NotebookLM, manage notebook sources, or automate NotebookLM workflows."
---

# NotebookLM Skill

Use this skill to ask questions against NotebookLM notebooks and manage notebooks/sources through browser automation.

## When to use

- User asks to query NotebookLM or "ask my notebook"
- User shares NotebookLM notebook URLs
- User wants to list/create notebooks or manage sources
- User wants bulk folder sync, dedupe, or audit exports

## Commands

Always run commands from this skill directory.

### Authentication

```bash
python scripts/auth_manager.py status --profile default
python scripts/auth_manager.py setup --profile work
python scripts/auth_manager.py reauth --profile work
python scripts/auth_manager.py clear --profile work
python scripts/auth_manager.py clear --all-profiles
python scripts/auth_manager.py profiles
```

### Notebook Library

```bash
python scripts/notebook_manager.py list
python scripts/notebook_manager.py add --url "https://notebooklm.google.com/notebook/..." --name "Notebook Name" --description "What this notebook contains" --topics "topic1,topic2"
python scripts/notebook_manager.py activate --id notebook-id
python scripts/notebook_manager.py search --query "keyword"
python scripts/notebook_manager.py remove --id notebook-id
python scripts/notebook_manager.py stats
```

### Ask NotebookLM

```bash
# Single ask (active notebook)
python scripts/ask_question.py --question "What are the key implementation details?"

# Ask by notebook ID / URL
python scripts/ask_question.py --question "Summarize auth flow" --notebook-id notebook-id
python scripts/ask_question.py --question "What is covered here?" --notebook-url "https://notebooklm.google.com/notebook/..."

# Batch ask
python scripts/ask_question.py --questions "q1||q2||q3" --notebook-id notebook-id
python scripts/ask_question.py --questions-file ./questions.txt --notebook-id notebook-id

# Compare one question across notebooks
python scripts/ask_question.py --question "What changed this week?" --compare-notebook-ids "notebook-a,notebook-b"

# Save structured export
python scripts/ask_question.py --question "Summarize" --notebook-id notebook-id --export-format markdown --save-notes
```

### Remote NotebookLM operations

```bash
# List account notebooks
python scripts/remote_manager.py list-remote --profile work

# Create notebook remotely
python scripts/remote_manager.py create-remote --name "My Notebook" --description "What this notebook contains" --topics "topic1,topic2"
python scripts/remote_manager.py create-remote --name "My Notebook" --skip-library
python scripts/remote_manager.py create-remote --name "My Notebook" --dry-run

# List sources
python scripts/remote_manager.py list-sources --notebook-id notebook-id

# Add sources
python scripts/remote_manager.py add-source --notebook-id notebook-id --text "Some source text"
python scripts/remote_manager.py add-source --notebook-id notebook-id --url "https://example.com"
python scripts/remote_manager.py add-source --notebook-id notebook-id --file "/path/to/file.pdf"
python scripts/remote_manager.py add-source --notebook-id notebook-id --dir "/path/to/source-folder" --recursive
python scripts/remote_manager.py add-source --notebook-id notebook-id --dir "/path/to/source-folder" --include-ext "md,txt" --exclude "*.tmp" --max-size "10MB" --modified-since "7d"
python scripts/remote_manager.py add-source --notebook-id notebook-id --dir "/path/to/source-folder" --copy-to-temp
python scripts/remote_manager.py add-source --notebook-id notebook-id --dir "/path/to/source-folder" --dry-run

# Delete sources
python scripts/remote_manager.py delete-source --notebook-id notebook-id --source-title "source title"
python scripts/remote_manager.py delete-source --notebook-id notebook-id --source-title "temp" --contains --all-matches
python scripts/remote_manager.py delete-source --notebook-id notebook-id --source-title "temp" --contains --all-matches --dry-run

# Sync local desired state to notebook
python scripts/remote_manager.py sync-sources --notebook-id notebook-id --dir "/path/to/source-folder" --recursive
python scripts/remote_manager.py sync-sources --notebook-id notebook-id --dir "/path/to/source-folder" --recursive --delete-missing
python scripts/remote_manager.py sync-sources --notebook-id notebook-id --manifest ./source-manifest.json --dry-run
```

### Reliability/debug options

Use with `ask_question.py` and `remote_manager.py`:

```bash
--profile work
--retries 3
--artifacts-dir /tmp/notebooklm-artifacts
--show-browser
```

## Expected behavior

- Runs headless by default unless `--show-browser` is set.
- Uses persistent auth profile data for reusable login.
- `add-source` and `sync-sources` support hash dedupe and file filters.
- Batch and multi query modes return structured JSON (and optional markdown exports).
- Failures can emit screenshot/HTML diagnostics for debugging.
- If auth is required, commands tell you to run `auth_manager.py setup`.