Skill v1.0.1
currentAutomated scan100/100+14 new, ~1 modified
version: "1.0.1" name: notebooklm description: "Interact with Google NotebookLM to query documentation with Gemini's source-grounded answers. Each question opens a fresh browser session, retrieves the answer exclusively from your uploaded documents, and closes." risk: unknown source: community date_added: "2026-02-27"
NotebookLM Research Assistant Skill
Interact with Google NotebookLM to query documentation with Gemini's source-grounded answers. Each question opens a fresh browser session, retrieves the answer exclusively from your uploaded documents, and closes.
When to Use This Skill
Trigger when user:
- Mentions NotebookLM explicitly
- Shares NotebookLM URL (
https://notebooklm.google.com/notebook/...) - Asks to query their notebooks/documentation
- Wants to add documentation to NotebookLM library
- Uses phrases like "ask my NotebookLM", "check my docs", "query my notebook"
⚠️ CRITICAL: Add Command - Smart Discovery
When user wants to add a notebook without providing details:
SMART ADD (Recommended): Query the notebook first to discover its content:
# Step 1: Query the notebook about its contentpython scripts/run.py ask_question.py --question "What is the content of this notebook? What topics are covered? Provide a complete overview briefly and concisely" --notebook-url "[URL]"# Step 2: Use the discovered information to add itpython scripts/run.py notebook_manager.py add --url "[URL]" --name "[Based on content]" --description "[Based on content]" --topics "[Based on content]"
MANUAL ADD: If user provides all details:
--url- The NotebookLM URL--name- A descriptive name--description- What the notebook contains (REQUIRED!)--topics- Comma-separated topics (REQUIRED!)
NEVER guess or use generic descriptions! If details missing, use Smart Add to discover them.
Critical: Always Use run.py Wrapper
NEVER call scripts directly. ALWAYS use `python scripts/run.py [script]`:
# ✅ CORRECT - Always use run.py:python scripts/run.py auth_manager.py statuspython scripts/run.py notebook_manager.py listpython scripts/run.py ask_question.py --question "..."# ❌ WRONG - Never call directly:python scripts/auth_manager.py status # Fails without venv!
The run.py wrapper automatically:
- Creates
.venvif needed - Installs all dependencies
- Activates environment
- Executes script properly
Core Workflow
Step 1: Check Authentication Status
python scripts/run.py auth_manager.py status
If not authenticated, proceed to setup.
Step 2: Authenticate (One-Time Setup)
# Browser MUST be visible for manual Google loginpython scripts/run.py auth_manager.py setup
Important:
- Browser is VISIBLE for authentication
- Browser window opens automatically
- User must manually log in to Google
- Tell user: "A browser window will open for Google login"
Step 3: Manage Notebook Library
# List all notebookspython scripts/run.py notebook_manager.py list# BEFORE ADDING: Ask user for metadata if unknown!# "What does this notebook contain?"# "What topics should I tag it with?"# Add notebook to library (ALL parameters are REQUIRED!)python scripts/run.py notebook_manager.py add \--url "https://notebooklm.google.com/notebook/..." \--name "Descriptive Name" \--description "What this notebook contains" \ # REQUIRED - ASK USER IF UNKNOWN!--topics "topic1,topic2,topic3" # REQUIRED - ASK USER IF UNKNOWN!# Search notebooks by topicpython scripts/run.py notebook_manager.py search --query "keyword"# Set active notebookpython scripts/run.py notebook_manager.py activate --id notebook-id# Remove notebookpython scripts/run.py notebook_manager.py remove --id notebook-id
Quick Workflow
- Check library:
python scripts/run.py notebook_manager.py list - Ask question:
python scripts/run.py ask_question.py --question "..." --notebook-id ID
Step 4: Ask Questions
# Basic query (uses active notebook if set)python scripts/run.py ask_question.py --question "Your question here"# Query specific notebookpython scripts/run.py ask_question.py --question "..." --notebook-id notebook-id# Query with notebook URL directlypython scripts/run.py ask_question.py --question "..." --notebook-url "https://..."# Show browser for debuggingpython scripts/run.py ask_question.py --question "..." --show-browser
Follow-Up Mechanism (CRITICAL)
Every NotebookLM answer ends with: "EXTREMELY IMPORTANT: Is that ALL you need to know?"
Required Claude Behavior:
- STOP - Do not immediately respond to user
- ANALYZE - Compare answer to user's original request
- IDENTIFY GAPS - Determine if more information needed
- ASK FOLLOW-UP - If gaps exist, immediately ask:
``bash python scripts/run.py ask_question.py --question "Follow-up with context..." ``
- REPEAT - Continue until information is complete
- SYNTHESIZE - Combine all answers before responding to user
Script Reference
Authentication Management (auth_manager.py)
python scripts/run.py auth_manager.py setup # Initial setup (browser visible)python scripts/run.py auth_manager.py status # Check authenticationpython scripts/run.py auth_manager.py reauth # Re-authenticate (browser visible)python scripts/run.py auth_manager.py clear # Clear authentication
Notebook Management (notebook_manager.py)
python scripts/run.py notebook_manager.py add --url URL --name NAME --description DESC --topics TOPICSpython scripts/run.py notebook_manager.py listpython scripts/run.py notebook_manager.py search --query QUERYpython scripts/run.py notebook_manager.py activate --id IDpython scripts/run.py notebook_manager.py remove --id IDpython scripts/run.py notebook_manager.py stats
Question Interface (ask_question.py)
python scripts/run.py ask_question.py --question "..." [--notebook-id ID] [--notebook-url URL] [--show-browser]
Data Cleanup (cleanup_manager.py)
python scripts/run.py cleanup_manager.py # Preview cleanuppython scripts/run.py cleanup_manager.py --confirm # Execute cleanuppython scripts/run.py cleanup_manager.py --preserve-library # Keep notebooks
Environment Management
The virtual environment is automatically managed:
- First run creates
.venvautomatically - Dependencies install automatically
- Chromium browser installs automatically
- Everything isolated in skill directory
Manual setup (only if automatic fails):
python -m venv .venvsource .venv/bin/activate # Linux/Macpip install -r requirements.txtpython -m patchright install chromium
Data Storage
All data stored in ~/.claude/skills/notebooklm/data/:
library.json- Notebook metadataauth_info.json- Authentication statusbrowser_state/- Browser cookies and session
Security: Protected by .gitignore, never commit to git.
Configuration
Optional .env file in skill directory:
HEADLESS=false # Browser visibilitySHOW_BROWSER=false # Default browser displaySTEALTH_ENABLED=true # Human-like behaviorTYPING_WPM_MIN=160 # Typing speedTYPING_WPM_MAX=240DEFAULT_NOTEBOOK_ID= # Default notebook
Decision Flow
User mentions NotebookLM↓Check auth → python scripts/run.py auth_manager.py status↓If not authenticated → python scripts/run.py auth_manager.py setup↓Check/Add notebook → python scripts/run.py notebook_manager.py list/add (with --description)↓Activate notebook → python scripts/run.py notebook_manager.py activate --id ID↓Ask question → python scripts/run.py ask_question.py --question "..."↓See "Is that ALL you need?" → Ask follow-ups until complete↓Synthesize and respond to user
Troubleshooting
| Problem | Solution | |
|---|---|---|
| ModuleNotFoundError | Use run.py wrapper | |
| Authentication fails | Browser must be visible for setup! --show-browser | |
| Rate limit (50/day) | Wait or switch Google account | |
| Browser crashes | python scripts/run.py cleanup_manager.py --preserve-library | |
| Notebook not found | Check with notebook_manager.py list |
Best Practices
- Always use run.py - Handles environment automatically
- Check auth first - Before any operations
- Follow-up questions - Don't stop at first answer
- Browser visible for auth - Required for manual login
- Include context - Each question is independent
- Synthesize answers - Combine multiple responses
Limitations
- No session persistence (each question = new browser)
- Rate limits on free Google accounts (50 queries/day)
- Manual upload required (user must add docs to NotebookLM)
- Browser overhead (few seconds per question)
Resources (Skill Structure)
Important directories and files:
scripts/- All automation scripts (ask_question.py, notebook_manager.py, etc.)data/- Local storage for authentication and notebook libraryreferences/- Extended documentation:api_reference.md- Detailed API documentation for all scriptstroubleshooting.md- Common issues and solutionsusage_patterns.md- Best practices and workflow examples.venv/- Isolated Python environment (auto-created on first run).gitignore- Protects sensitive data from being committed