Query and manage Google NotebookLM notebooks from your AI coding assistant.
- Query notebooks with natural language questions
- Batch questions (
q1||q2||q3) and question files - Multi-notebook comparison across notebooks
- Manage notebook library (add, list, search, activate)
- Remote operations: create notebooks, add/delete/sync sources
- Source sync with hash-based deduplication
- Directory uploads with filters (extensions, size, modified date)
- Dry-run mode for all destructive operations
- Multiple auth profiles (work, personal, etc.)
- Exports to JSON or Markdown
- Headless Playwright automation (
--show-browserfor debug)
/plugin marketplace add sanjay3290/notebooklm-skillnpx skills add sanjay3290/notebooklm-skillpip install -r requirements.txt
python -m playwright install chromiumpython scripts/auth_manager.py setup --profile workThis opens a browser window for Google sign-in. Your session is stored persistently at ~/.config/claude/notebooklm-skill/ (override with NOTEBOOKLM_DATA_DIR).
python scripts/notebook_manager.py add \
--url "https://notebooklm.google.com/notebook/..." \
--name "My Notebook" \
--description "What this notebook contains" \
--topics "topic1,topic2"# Ask a single question against the active notebook
python scripts/ask_question.py --question "What are the key implementation details?"
# Ask by notebook ID or 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 questions (pipe-separated)
python scripts/ask_question.py --questions "q1||q2||q3" --notebook-id notebook-id
# Questions from a file (one per line)
python scripts/ask_question.py --questions-file ./questions.txt --notebook-id notebook-id
# Compare one question across multiple notebooks
python scripts/ask_question.py --question "What changed this week?" --compare-notebook-ids "notebook-a,notebook-b"
# Export answer as Markdown
python scripts/ask_question.py --question "Summarize" --notebook-id notebook-id --export-format markdown --save-notes
# Upload a directory of sources with filters
python scripts/remote_manager.py add-source --notebook-id notebook-id --dir ./docs --recursive --include-ext "md,txt" --max-size "10MB"
# Sync local files to notebook (add new, optionally delete removed)
python scripts/remote_manager.py sync-sources --notebook-id notebook-id --dir ./docs --recursive --delete-missing --dry-run
# List all notebooks in your library
python scripts/notebook_manager.py list# Check auth status
python scripts/auth_manager.py status --profile default
# Initial setup (opens browser for Google sign-in)
python scripts/auth_manager.py setup --profile work
# Re-authenticate an expired session
python scripts/auth_manager.py reauth --profile work
# Clear a specific profile
python scripts/auth_manager.py clear --profile work
# Clear all profiles
python scripts/auth_manager.py clear --all-profiles
# List all profiles
python scripts/auth_manager.py profiles# List all registered notebooks
python scripts/notebook_manager.py list
# Add a notebook to the library
python scripts/notebook_manager.py add \
--url "https://notebooklm.google.com/notebook/..." \
--name "Notebook Name" \
--description "What this notebook contains" \
--topics "topic1,topic2"
# Set active notebook
python scripts/notebook_manager.py activate --id notebook-id
# Search notebooks by keyword
python scripts/notebook_manager.py search --query "keyword"
# Remove a notebook from the library
python scripts/notebook_manager.py remove --id notebook-id
# Show library statistics
python scripts/notebook_manager.py stats# Single question (active notebook)
python scripts/ask_question.py --question "What are the key implementation details?"
# Ask by notebook ID or 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 questions (pipe-separated)
python scripts/ask_question.py --questions "q1||q2||q3" --notebook-id notebook-id
# Questions from a file
python scripts/ask_question.py --questions-file ./questions.txt --notebook-id notebook-id
# Compare one question across multiple 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# List all notebooks in your Google account
python scripts/remote_manager.py list-remote --profile work
# Create a new notebook remotely
python scripts/remote_manager.py create-remote --name "My Notebook" --description "Description" --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 in a notebook
python scripts/remote_manager.py list-sources --notebook-id notebook-id
# Add sources (text, URL, file, or directory)
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/folder" --recursive
python scripts/remote_manager.py add-source --notebook-id notebook-id --dir "/path/to/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/folder" --copy-to-temp
python scripts/remote_manager.py add-source --notebook-id notebook-id --dir "/path/to/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 directory to notebook (add new, optionally remove deleted)
python scripts/remote_manager.py sync-sources --notebook-id notebook-id --dir "/path/to/folder" --recursive
python scripts/remote_manager.py sync-sources --notebook-id notebook-id --dir "/path/to/folder" --recursive --delete-missing
python scripts/remote_manager.py sync-sources --notebook-id notebook-id --manifest ./source-manifest.json --dry-runThese flags work with ask_question.py and remote_manager.py:
--profile work # Named auth profile
--retries 3 # Retry transient browser failures
--artifacts-dir /tmp/x # Screenshot/HTML dump directory
--show-browser # Show browser window for debuggingThis skill is also available in the ai-skills collection with 20+ other skills for databases, research, image generation, Google Workspace, and more.
Apache-2.0