Skip to content

Releases: PleasePrompto/notebooklm-skill

v1.3.0 - Timeout Fix & Thinking Detection

21 Nov 17:42

Choose a tag to compare

Changes

Added

  • Modular Architecture - New config.py and browser_utils.py for better maintainability

Fixed

  • Timeout increased from 30s to 120s - Long queries no longer timeout prematurely
  • Thinking Message Detection - Waits for div.thinking-message to disappear before reading answer
  • Correct CSS Selectors - Updated to match current NotebookLM UI
  • Stability Detection - Requires 3 consecutive stable polls instead of 1 second wait

Full Changelog: https://github.com/PleasePrompto/notebooklm-skill/blob/master/CHANGELOG.md

v1.2.0: Major Authentication Reliability Fix

20 Oct 13:24

Choose a tag to compare

NotebookLM Claude Code Skill v1.2.0

Major Authentication Reliability Fix

This release completely refactors the authentication system to fix persistent auth failures reported in Issue #2.

Root Cause Analysis

After extensive testing and analysis of the MCP Server TypeScript implementation, three critical issues were identified:

  1. Playwright Bug #36139: Session cookies don't persist in launch_persistent_context()
  2. Chromium Reliability: Cross-platform issues with default Chromium
  3. Python API Limitation: Can't pass storage_state to launch_persistent_context()

The Solution: Hybrid Authentication

New Architecture:

  • Persistent browser profile (user_data_dir) for consistent fingerprinting
  • Manual cookie injection from state.json for session cookie persistence
  • Real Chrome (channel="chrome") instead of Chromium
  • No automation detection banner (ignore_default_args)

How It Works:

Setup:   Login → Save to browser profile + state.json
Runtime: Load browser profile + inject cookies from state.json

What's New

Authentication Improvements:

  • Hybrid auth approach: Combines browser profile persistence with manual cookie injection
  • Real Chrome required: channel="chrome" for cross-platform reliability
  • Session cookies fixed: Manual injection workaround for Playwright bug #36139
  • Stealth mode: Removed automation detection banner

Technical Changes:

  • scripts/ask_question.py: Hybrid auth + cookie injection
  • scripts/auth_manager.py: Updated setup and validation
  • scripts/setup_environment.py: Installs Chrome instead of Chromium
  • README.md: Chrome installation instructions
  • AUTHENTICATION.md: Complete architecture documentation (NEW)

Developer Experience:

  • Comprehensive auth architecture docs
  • Better error messages
  • Easier testing (just delete .venv and data/browser_state)

Upgrading

cd ~/.claude/skills/notebooklm
git pull
rm -rf .venv data/browser_state  # Fresh start recommended
# Keep data/library if you have notebooks!

First use after upgrade:

# Skill will auto-install Chrome and setup dependencies
# Then: "Set up NotebookLM authentication"

Migration Notes

Chrome Installation:
The skill now requires real Google Chrome (not Chromium):

cd ~/.claude/skills/notebooklm
source .venv/bin/activate
patchright install chrome

Re-authentication Required:
Due to the architecture change, please re-authenticate after upgrading:

"Set up NotebookLM authentication"

Technical Details

Why This Works:

Component Purpose Why Needed
user_data_dir Browser fingerprint + persistent cookies Consistent identity across restarts
state.json injection Session cookies Workaround for Playwright bug #36139
channel="chrome" Real Chrome Cross-platform reliability
ignore_default_args Remove automation banner Stealth mode

Files Changed:

  • 5 files modified, 111 insertions, 21 deletions
  • 1 new file: AUTHENTICATION.md

Bug Fixes

  • Fixed: Session cookies not persisting after restart (#2)
  • Fixed: Authentication failures on some systems
  • Fixed: "Chrome is being controlled" automation banner

References

Acknowledgments

Special thanks to @howeirdo and @gee842 for reporting the auth issues and helping debug!


Questions or issues? https://github.com/PleasePrompto/notebooklm-skill/issues

Full Changelog: v1.1.0...v1.2.0

Full Changelog: v1.1.0...v1.2.0

v1.1.0: Smart Discovery & Enhanced Robustness

20 Oct 04:30

Choose a tag to compare

NotebookLM Claude Code Skill v1.1.0

What's New

Smart Discovery Feature

  • Automatic content discovery: When adding notebooks, Claude can now query them first to discover their content
  • No more guessing: Automatically extracts name, description, and topics from the notebook itself
  • Usage: "Query this notebook about its content and add it to my library: [URL]"

Active Notebook Support

  • Automatic selection: If no notebook specified, uses the active notebook
  • Better error handling: Shows available notebooks instead of cryptic errors
  • Helpful guidance: Clear instructions on how to select or activate notebooks

Bug Fixes & Improvements

  • Fixed browser parameters: Removed non-existent --headless references
  • Better debugging: Enhanced error messages showing working directory and skill paths
  • Clearer documentation: Resources structure highlighted in SKILL.md
  • Quick workflow: Added streamlined workflow examples

Documentation Updates

  • Honest terminology: Replaced "zero hallucination" claims with accurate "source-grounded" descriptions
  • Smart Add documented: New feature explained in README, SKILL.md, and references
  • Troubleshooting improved: Corrected browser parameter documentation

Upgrading

cd ~/.claude/skills/notebooklm
git pull

That's it! The skill will automatically update dependencies on next use.

Key Improvements in This Release

  1. Smart Discovery - Claude intelligently queries notebooks for their content before adding them
  2. Active Notebook - Automatically uses the active notebook when none specified
  3. Better UX - Shows available notebooks and helpful instructions instead of errors
  4. Accurate Claims - Documentation now correctly describes NotebookLM as "source-grounded" rather than "zero hallucination"

Example: Smart Discovery in Action

User: "Query this notebook and add it to my library: https://notebooklm.google.com/notebook/..."

Claude automatically:
1. Queries the notebook: "What is the content of this notebook?"
2. Extracts topics and description from the response
3. Adds it to library with appropriate metadata

No more asking users "What's in this notebook?" - Claude figures it out!

Acknowledgments

Thanks to the community for feedback and bug reports. Special thanks to those who pointed out the importance of accurate documentation regarding hallucination claims.


Questions or issues? Open an issue on GitHub: https://github.com/PleasePrompto/notebooklm-skill/issues

Full Changelog: v1.0.0...v1.1.0

v1.0.0: NotebookLM Claude Code Skill

19 Oct 16:36

Choose a tag to compare

NotebookLM Claude Code Skill v1.0.0

Let Claude Code chat directly with NotebookLM for zero-hallucination answers based on your own notebooks

This is the first official release of the NotebookLM Skill for Claude Code - a local skill that enables Claude to query your Google NotebookLM notebooks programmatically for source-grounded, citation-backed answers from Gemini.

What This Is

A Claude Code Skill that provides:

  • Direct NotebookLM integration from Claude Code CLI
  • Browser automation for querying your notebooks
  • Persistent authentication with Google
  • Notebook library management
  • Zero hallucinations - all answers backed by your source documents

Important: Local Claude Code Only

This skill works ONLY with local Claude Code installations, NOT in the web UI.

The web UI runs skills in a sandbox without network access, which this skill requires for browser automation. You must use Claude Code locally on your machine.

Installation

# 1. Create skills directory (if it doesn't exist)
mkdir -p ~/.claude/skills

# 2. Clone this repository
cd ~/.claude/skills
git clone https://github.com/PleasePrompto/notebooklm-skill notebooklm

# 3. That's it! Open Claude Code and say:
"What are my skills?"

The skill automatically:

  • Creates an isolated Python environment (.venv)
  • Installs all dependencies
  • Sets up browser automation
  • Everything stays contained in the skill folder

Quick Start

1. Authenticate with Google (one-time)

"Set up NotebookLM authentication"

A browser window opens, log in with your Google account, done.

2. Add your notebooks

"Add this NotebookLM notebook: https://notebooklm.google.com/notebook/..."

Claude will ask for a description and tags to organize your library.

3. Start querying

"Ask my NotebookLM about [your question]"

Claude automatically selects the right notebook and retrieves answers from Gemini.

Key Features

Zero Hallucinations: NotebookLM refuses to answer if information isn't in your docs. No invented APIs.

Direct Integration: No copy-paste between browser and editor. Claude asks and receives answers programmatically.

Smart Library Management: Save NotebookLM links with tags and descriptions. Claude auto-selects the right notebook for your task.

Automatic Authentication: One-time Google login, then authentication persists across sessions.

Self-Contained: Everything runs in the skill folder with an isolated Python environment. No global installations.

Intelligent Follow-ups: Built-in mechanism prompts Claude to ask comprehensive follow-up questions, building complete understanding despite stateless architecture.

Real-World Example

Workshop Manual Query

User asks: "Check my Suzuki GSR 600 workshop manual for brake fluid type, engine oil specs, and rear axle torque."

Claude automatically:

  • Authenticates with NotebookLM
  • Asks comprehensive questions about each specification
  • Follows up when prompted "Is that ALL you need to know?"
  • Provides accurate specifications: DOT 4 brake fluid, SAE 10W-40 oil, 100 N·m rear axle torque

NotebookLM Chat Example

Example showing Claude's automatic follow-up questions to NotebookLM, building comprehensive understanding before responding to the user.

Building Without Hallucinations

You: "I need to build an n8n workflow for Gmail spam filtering. Use my n8n notebook."

Claude's internal process:

→ Loads NotebookLM skill
→ Activates n8n notebook
→ Asks comprehensive questions with follow-ups
→ Synthesizes complete answer from multiple queries

Result: Working workflow on first try, no debugging hallucinated APIs.

Technical Details

Core Technology

  • Patchright: Browser automation library (Playwright-based)
  • Python: Implementation language for this skill
  • Stateless design: Optimized for Claude Skills architecture with intelligent follow-up mechanism

Based on battle-tested technology from the NotebookLM MCP Server (used in production across Claude Code, Codex, and Cursor).

Dependencies

  • Python 3.8+
  • patchright==1.55.2 (browser automation)
  • python-dotenv==1.0.0 (environment configuration)

All dependencies install automatically in an isolated .venv on first use.

Architecture

~/.claude/skills/notebooklm/
├── SKILL.md              # Instructions for Claude
├── scripts/              # Python automation scripts
│   ├── ask_question.py   # Query NotebookLM
│   ├── notebook_manager.py # Library management
│   └── auth_manager.py   # Google authentication
├── .venv/                # Isolated Python environment (auto-created)
└── data/                 # Local notebook library (gitignored)

Data Storage

All data is stored locally:

~/.claude/skills/notebooklm/data/
├── library.json       # Your notebook library
├── auth_info.json     # Authentication status
└── browser_state/     # Browser cookies and session

Security: Automatically excluded from git via .gitignore

Session Model

This skill uses a stateless model optimized for Claude Skills:

  • Each question opens a fresh browser session
  • Asks the question, gets the answer
  • Includes "Is that ALL you need to know?" prompt to encourage comprehensive follow-ups
  • Closes browser immediately

This approach:

  • Keeps the skill simple and reliable
  • Avoids session management complexity
  • Uses Claude's intelligence for multi-step research
  • Maintains notebook library persistence

For persistent chat sessions across multiple tools, see the NotebookLM MCP Server.

Comparison with MCP Server

This skill is based on the NotebookLM MCP Server (https://github.com/PleasePrompto/notebooklm-mcp):

Feature This Skill MCP Server
Protocol Claude Skills Model Context Protocol
Installation Git clone to ~/.claude/skills npm/Claude MCP
Sessions Stateless (fresh per query) Persistent sessions
Compatibility Claude Code only (local) Multiple tools (Claude Code, Codex, Cursor, etc.)
Language Python TypeScript

Choose this skill if:

  • You use Claude Code exclusively
  • You want simple git-based installation
  • You prefer Python-based automation

Choose the MCP server if:

  • You use multiple AI coding tools
  • You want persistent chat sessions
  • You prefer TypeScript/npm ecosystem

Known Limitations

Skill-Specific:

  • Local Claude Code only - Does not work in web UI (sandbox restrictions)
  • No session persistence - Each question is independent
  • No follow-up context - Can't reference "the previous answer" (but intelligent prompting encourages comprehensive questions)

NotebookLM:

  • Rate limits - Free tier has daily query limits
  • Manual upload - You must upload docs to NotebookLM first
  • Share requirement - Notebooks must be shared publicly

Disclaimer

This tool automates browser interactions with NotebookLM to make your workflow more efficient. However, a few friendly reminders:

About browser automation:
While I've built in humanization features (realistic typing speeds, natural delays, mouse movements) to make the automation behave more naturally, I can't guarantee Google won't detect or flag automated usage. I recommend using a dedicated Google account for automation rather than your primary account—think of it like web scraping: probably fine, but better safe than sorry!

About CLI tools and AI agents:
CLI tools like Claude Code and similar AI-powered assistants are incredibly powerful, but they can make mistakes. Please use them with care and awareness:

  • Always review changes before committing or deploying
  • Test in safe environments first
  • Keep backups of important work
  • Remember: AI agents are assistants, not infallible oracles

I built this tool for myself because I was tired of the copy-paste dance between NotebookLM and my editor. I'm sharing it in the hope it helps others too, but I can't take responsibility for any issues, data loss, or account problems that might occur. Use at your own discretion and judgment.

That said, if you run into problems or have questions, feel free to open an issue on GitHub. I'm happy to help troubleshoot!

Documentation

  • README.md: Complete documentation with examples
  • SKILL.md: Skill instructions for Claude
  • references/: Extended guides and troubleshooting
    • api_reference.md: Detailed API documentation
    • usage_patterns.md: Best practices and workflows
    • troubleshooting.md: Common issues and solutions

Links

License

MIT License - see LICENSE file for details


Ready to eliminate hallucinations? Install now and query your NotebookLM knowledge base directly from Claude Code!

cd ~/.claude/skills
git clone https://github.com/PleasePrompto/notebooklm-skill notebooklm
# Open Claude Code: "What are my skills?"