Back to Skills

blog-notebooklm

Query Google NotebookLM notebooks for source-grounded, citation-backed answers from user-uploaded documents. Manages notebook library, handles Google authentication, and supports smart discovery. Works standalone via /blog notebooklm or internally from blog-write and blog-researcher for source-grounded research context. Falls back gracefully when not configured. Use when user says "notebooklm", "notebook", "query notebook", "ask notebook", "notebook research", "source grounded research", "docume

1,560stars274forksUpdated 8/4/2026

Security Assessment

Low Risk(82/100)

Detected risks:

Stealth Browser Automation(The skill automates a service that has no official API by driving a headless browser, and offers optional stealth settings that simulate human-like typing speed to make automated sessions behave like a real user., Authentication is persisted by injecting saved cookies into a browser profile as a workaround for a browser-automation library bug, which touches the user's live Google session state.)
Security Score82/100

About blog-notebooklm

Blog NotebookLM is a Claude Code skill that queries Google NotebookLM notebooks to return source-grounded, citation-backed answers from a user's own uploaded documents. It solves the problem of pulling verifiable, document-grounded research into a blog-writing or research workflow without Claude hallucinating: each question opens a headless browser session against NotebookLM, retrieves Gemini's source-grounded answer, and closes. The skill is careful to frame answers as source-grounded model output, not proof of truth, and instructs recording stable underlying source URLs and dates for citations rather than the private notebook URL.

Because NotebookLM has no public API, the skill drives a real browser. It manages a local notebook library (add, list, search, activate, remove) with metadata, handles one-time interactive Google authentication in a visible browser, and persists auth via a hybrid persistent-browser-profile plus cookie-injection approach that works around a Playwright bug. Chrome is installed automatically on first run via Patchright, and a run.py wrapper owns venv creation and dependency installation. Optional environment variables control browser visibility and enable stealth, human-like typing-speed simulation. It works standalone via /blog notebooklm or internally from blog-write and blog-researcher, falling back silently when not authenticated so it never blocks the writing workflow.

It targets bloggers and researchers who have curated document collections in NotebookLM and want to cite them reliably. Note the ~50 queries/day free-account rate limit and that the browser-automation, stealth-behavior, and cookie-injection mechanics carry some dual-use and account-terms considerations, since they emulate human interaction to keep automated sessions working against a service with no official API.

FAQ

How does it query NotebookLM if there's no API?

It automates a headless Chrome browser. Each question opens a browser session against your notebook, retrieves the source-grounded answer, and closes. Chrome is installed automatically on first run via Patchright, and the run.py wrapper manages the virtual environment and dependencies.

What are the prerequisites?

A Google account with NotebookLM access, Python 3.11+, and a one-time interactive Google login performed in a visible browser during setup. Authentication then persists via a browser profile plus injected cookies.

Are there usage limits?

Yes. Free Google accounts are limited to roughly 50 queries per day, resetting at midnight PST. The docs suggest spacing out batch questions and, if needed, switching accounts via the reauth command.

Can I trust the answers as fact?

The skill explicitly says responses are source-grounded model answers, not proof of truth. Uploaded documents may be primary or secondary and answers can omit context, so it advises recording a stable underlying source URL and date and citing the real source title, never the private notebook URL.

What do the stealth environment variables do?

Optional .env settings such as STEALTH_ENABLED and typing-WPM ranges simulate human-like interaction, and HEADLESS/SHOW_BROWSER control browser visibility. These make automated sessions behave more like a real user against a service that has no official automation API.

All Files

15 files
scripts/__init__.py3.3 KB
View
scripts/cleanup_manager.py10.2 KB
View
scripts/run.py3.5 KB
View
scripts/ask_question.py10.4 KB
View
scripts/config.py2.3 KB
View
scripts/setup_environment.py10.2 KB
View
references/commands.md6.2 KB
View
scripts/browser_session.py8.6 KB
View
scripts/requirements.lock6.6 KB
View
references/troubleshooting.md4.3 KB
View
scripts/browser_utils.py5.0 KB
View
scripts/requirements.txt0.6 KB
View
scripts/auth_manager.py13.2 KB
View
scripts/notebook_manager.py16.1 KB
View
SKILL.md9.4 KB
View

Install blog-notebooklm

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill