Query Google NotebookLM for source-grounded, citation-backed answers from uploaded documents. Reduces hallucinations through Gemini's document-only responses...
Query Google NotebookLM notebooks for source-grounded answers exclusively from your uploaded documentation, drastically reducing hallucinations.
Trigger when user:
https://notebooklm.google.com/notebook/...)NEVER call scripts directly. ALWAYS use python scripts/run.py [script]:
# ✅ CORRECT
python scripts/run.py auth_manager.py status
python scripts/run.py ask_question.py --question "..."
# ❌ WRONG - Fails without venv!
python scripts/auth_manager.py status
The run.py wrapper auto-creates .venv, installs dependencies, and executes properly.
python scripts/run.py auth_manager.py status
python scripts/run.py auth_manager.py setup
Tell user: "A browser window will open for Google login"
Smart Add: Query first to discover content:
# Step 1: Discover content
python scripts/run.py ask_question.py --question "What topics does this notebook cover?" --notebook-url "[URL]"
# Step 2: Add with discovered metadata
python scripts/run.py notebook_manager.py add --url "[URL]" --name "[Based on content]" --description "[From discovery]" --topics "[From discovery]"
Manual Add: Only if user provides all details:
python scripts/run.py notebook_manager.py add \
--url "https://notebooklm.google.com/notebook/..." \
--name "Descriptive Name" \
--description "What this contains" \ # REQUIRED
--topics "topic1,topic2,topic3" # REQUIRED
NEVER guess metadata! Use Smart Add if details unknown.
# Uses active notebook
python scripts/run.py ask_question.py --question "Your question"
# Specific notebook
python scripts/run.py ask_question.py --question "..." --notebook-id ID
# Direct URL
python scripts/run.py ask_question.py --question "..." --notebook-url URL
Every answer ends with: "Is that ALL you need to know?"
Required behavior:
python scripts/run.py ask_question.py --question "Follow-up with context..."
# Authentication
python scripts/run.py auth_manager.py status|setup|reauth|clear
# Library management
python scripts/run.py notebook_manager.py list|search --query QUERY|activate --id ID|stats
# Cleanup (preserves library)
python scripts/run.py cleanup_manager.py --preserve-library --confirm
| Error | Solution |
|---|---|
| ModuleNotFoundError | Use run.py wrapper |
| Authentication failed | Browser must be visible for setup |
| Rate limit (50/day) | Wait or switch Google account |
| Browser crashes | cleanup_manager.py --preserve-library |
~/.claude/skills/notebooklm/data/
├── library.json # Notebook metadata
├── auth_info.json # Auth status
└── browser_state/ # Browser cookies (NEVER commit)
All sensitive data protected by .gitignore.