Agent skill

Blog Notebooklm

by AgriciDaniel in AgriciDaniel/claude-blog

Query Google NotebookLM notebooks for source-grounded, citation-backed answers from user-uploaded documents.

MITAuto-check: warningsKnowledge Management

Install Blog Notebooklm

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add AgriciDaniel/claude-blog --skill blog-notebooklm -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install AgriciDaniel/claude-blog blog-notebooklm --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-blog.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/blog-notebooklm .claude/skills/blog-notebooklm && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
blog-notebooklm
GitHub stars
2.3k
Used in
1 other repo
Token cost
~2.5k tokens
SKILL.md length
820 words
Files
15 (incl. scripts, references)
Skills in repo
39
Repo updated
First seen
Licence
MIT

At a glance

Query Google NotebookLM notebooks for source-grounded, citation-backed answers from user-uploaded documents.

  • Works in 4 steps: Check Auth → Resolve Notebook → Ask the Question → …
  • User says notebooklm
  • SKILL.md covers Quick Reference, Prerequisites, Use the run.py Wrapper and Auth Check (Gate Pattern), plus 9 more sections
  • Runs Python scripts from its folder; calls python3; reaches notebooklm.google.com

What it does

Blog Notebooklm is an agent skill from AgriciDaniel/claude-blog. 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", "document query"…

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files, including scripts and reference files (for example `references/commands.md`, `references/troubleshooting.md` and `scripts/__init__.py`).

It sits in Knowledge Management, covering Source-grounded notebooks. It works with NotebookLM. The repository describes itself as: Claude Code blog skill suite: 30 sub-skills, 5 agents, 5-gate v1.9.0 Blog Delivery Contract, dual-optimized for Google rankings and AI citations. Active development at… The licence is MIT.

When your agent uses it

  • User says notebooklm
  • Notebook research
  • Source grounded research
  • Notebook library

Example prompts

  • “notebooklm”
  • “notebook”
  • “query notebook”
  • “/blog-notebooklm”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Check Auth
  2. Resolve Notebook
  3. Ask the Question
  4. Analyze and Follow Up

What it can do on your machine

Read from SKILL.md and the folder at commit 2500d4c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 12 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • notebooklm.google.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Blog Notebooklm loads about 2.5k tokens when it runs, and up to ~5.2k if it reads all its reference files. Until then it costs about 137 tokens; SKILL.md has 820 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~137
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: warnings

The automated check found patterns that need a careful read before installing.

  • WarningMentions a credentials file (SSH keys, cloud or package-manager tokens)SKILL.md:227
    - `data/browser_state/`: Chrome profile with cookies

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from AgriciDaniel/claude-blog at commit 2500d4c, republished under its MIT licence (© AgriciDaniel). 820 words, ~2,459 tokens.

Download SKILL.mdSave it as .claude/skills/blog-notebooklm/SKILL.md (or your agent's skills folder). This skill also uses 14 other files; get the full folder from GitHub.
name
blog-notebooklm
description
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", "document query", "notebook library".
user-invokable
true
argument-hint
[ask|discover|library|setup|status|cleanup] [question-or-url]
license
MIT
metadata.author
AgriciDaniel
metadata.version
2.2.0
metadata.source
https://github.com/PleasePrompto/notebooklm-skill

Blog NotebookLM: Source-Grounded Research from Your Documents

Query Google NotebookLM notebooks directly from Claude Code for citation-backed answers from Gemini. Each question opens a headless browser session, retrieves the answer from your uploaded documents, and closes. Responses are source-grounded model answers, not proof of truth: uploaded documents may be primary or secondary, and the answer can still omit context.

Answers provide usable provenance only when the returned citation identifies a verifiable underlying source. Record a stable source URL and a publication, study-period, or retrieval date when that detail affects verification or interpretation. Use the underlying source title as the inline citation. Do not cite the private NotebookLM URL as the bibliography entry for public content.

Quick Reference

CommandWhat it does
/blog notebooklm ask <question>Query a notebook for source-grounded answers
/blog notebooklm discover <url>Smart-discover notebook content before cataloging
/blog notebooklm library listList all notebooks in library
/blog notebooklm library add <url>Add a notebook to library
/blog notebooklm library search <query>Search notebooks by keyword
/blog notebooklm library remove <id>Remove a notebook from library
/blog notebooklm setupOne-time Google authentication (browser visible)
/blog notebooklm statusCheck authentication status
/blog notebooklm cleanupClean browser state (preserves library)

Prerequisites

  • Google account with NotebookLM access
  • Python 3.11+ (venv managed automatically by run.py)
  • Google Chrome (installed automatically on first run via Patchright)
  • One-time authentication setup (interactive Google login in visible browser)

Use the run.py Wrapper

Call scripts only through the run.py wrapper: python3 scripts/run.py [script]:

bash
# CORRECT:
python3 scripts/run.py auth_manager.py status
python3 scripts/run.py ask_question.py --question "..."

# Do not call files under scripts/ directly. The wrapper owns venv setup.

The run.py wrapper automatically creates .venv, installs dependencies, sets up Chrome, and executes the target script.

Auth Check (Gate Pattern)

Before any query operation, check authentication:

bash
python3 scripts/run.py auth_manager.py status
  • If authenticated: proceed with the query
  • If not authenticated: inform user and guide to setup: "NotebookLM requires Google login. Run /blog notebooklm setup to authenticate."
  • When called internally (from blog-write or blog-researcher): return silently with no error if not authenticated. Never block the writing workflow.

Setup Workflow

For /blog notebooklm setup:

bash
# Opens a visible browser for manual Google login (one-time)
python3 scripts/run.py auth_manager.py setup

Tell the user: "A browser window will open. Please log in to your Google account." Authentication persists via browser profile + cookie injection (hybrid approach).

Other auth commands:

bash
python3 scripts/run.py auth_manager.py status   # Check auth
python3 scripts/run.py auth_manager.py reauth   # Re-authenticate
python3 scripts/run.py auth_manager.py clear     # Clear all auth data

Query Workflow

For /blog notebooklm ask <question>:

Step 1: Check Auth

Run auth check (see gate pattern above). If not authenticated, guide to setup.

Step 2: Resolve Notebook

Determine which notebook to query:

  • If --notebook-url provided: validate it is a NotebookLM notebook URL, then use it
  • If --notebook-id provided: look up in library
  • If neither: use active notebook from library
  • If no active notebook: show library and ask user to select
Step 3: Ask the Question
bash
# Basic query (uses active notebook)
python3 scripts/run.py ask_question.py --question "Your question here"

# Query specific notebook by ID
python3 scripts/run.py ask_question.py --question "..." --notebook-id notebook-id

# Query by URL directly
python3 scripts/run.py ask_question.py --question "..." --notebook-url "https://..."

# JSON output (for internal/programmatic use)
python3 scripts/run.py ask_question.py --question "..." --json

# Show browser for debugging
python3 scripts/run.py ask_question.py --question "..." --show-browser
Step 4: Analyze and Follow Up

Every response ends with a follow-up prompt. Required behavior:

  1. STOP: do not immediately respond to the user
  2. ANALYZE: compare the answer to the user's original request
  3. IDENTIFY GAPS: determine if more information is needed
  4. ASK FOLLOW-UP: if gaps exist, immediately ask a follow-up question
  5. REPEAT: continue until information is complete
  6. SYNTHESIZE: combine all answers before responding to the user
Show full SKILL.md (324 more words)Show less

Smart Discovery Workflow

For /blog notebooklm discover <url>:

When adding a notebook without knowing its content, query it first:

bash
# Step 1: Discover content
python3 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: Add with discovered metadata
python3 scripts/run.py notebook_manager.py add \
  --url "<URL>" \
  --name "<Based on content>" \
  --description "<Based on content>" \
  --topics "<Extracted topics>"

Do not guess descriptions; discover or ask the user.

Library Management

bash
# List all notebooks
python3 scripts/run.py notebook_manager.py list

# Add notebook (all params required -- discover or ask user!)
python3 scripts/run.py notebook_manager.py add \
  --url "https://notebooklm.google.com/notebook/..." \
  --name "Descriptive Name" \
  --description "What this notebook contains" \
  --topics "topic1,topic2,topic3"

# Search by keyword
python3 scripts/run.py notebook_manager.py search --query "keyword"

# Set active notebook
python3 scripts/run.py notebook_manager.py activate --id notebook-id

# Remove notebook
python3 scripts/run.py notebook_manager.py remove --id notebook-id

# Library statistics
python3 scripts/run.py notebook_manager.py stats

Internal API (for blog-write / blog-researcher)

When invoked as a Task subagent from blog-write or blog-researcher:

Input (provided by calling skill):

  • question: Research question relevant to the blog topic
  • notebook_id or notebook_url: Which notebook to query
  • context: "internal" (signals graceful fallback mode)

Process:

  1. Check auth status: if not authenticated, return empty result silently
  2. Query the notebook with the research question
  3. Parse and return structured response

Output (returned to calling skill):

markdown
### NotebookLM Research
- **Source:** [Notebook name]
- **Question:** [What was asked]
- **Answer:** [Source-grounded response from user's documents]
- **Underlying Source:** [Public source URL or document identifier]
- **Underlying Source Date:** [Publication date or retrieval date]
- **Source Quality:** [Tier 1-3 after classifying the underlying document]

Graceful fallback: If auth is missing or query fails, return immediately with no error. The calling workflow continues with WebSearch-based research. Never block blog-write or blog-rewrite because NotebookLM is unavailable.

Data Storage

All data stored inside the skill directory:

  • data/library.json: Notebook metadata and library
  • data/auth_info.json: Authentication status
  • data/browser_state/: Chrome profile with cookies

Security: All data directories are gitignored. Never commit auth or browser state.

Browser lifecycle and authenticated-context isolation are centralized in scripts/browser_session.py. Command scripts must use that helper instead of opening an additional persistent profile or copying cookies into another file.

Error Handling

ErrorResolution
Not authenticatedRun /blog notebooklm setup
ModuleNotFoundErrorAlways use run.py wrapper
Browser crashcleanup_manager.py --confirm --preserve-library, then re-auth
Rate limit (50/day)Wait until midnight PST or switch Google account
Notebook not foundCheck with notebook_manager.py list
Query timeout (120s)Retry with simpler question or --show-browser to debug
MCP unavailable (internal)Return silently: writing workflow uses WebSearch

Limitations

  • No session persistence (each question = new browser session)
  • Rate limits on free Google accounts (50 queries/day)
  • Manual upload required (user must add docs to NotebookLM web UI)
  • Browser overhead (few seconds per question for launch + teardown)
  • Local Claude Code only (not available in web UI)

Reference Documentation

Load on-demand: do NOT load all at startup:

  • references/commands.md: Full CLI commands, parameters, and workflow patterns
  • references/troubleshooting.md: Error solutions, recovery procedures, debugging

© AgriciDaniel, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 14 other files (scripts, references) in skills/blog-notebooklm of AgriciDaniel/claude-blog.

  • SKILL.md
  • references/commands.md
  • references/troubleshooting.md
  • scripts/__init__.py
  • scripts/ask_question.py
  • scripts/auth_manager.py
  • scripts/browser_session.py
  • scripts/browser_utils.py
  • scripts/cleanup_manager.py
  • scripts/config.py
  • scripts/notebook_manager.py
  • scripts/requirements.lock
  • scripts/requirements.txt
  • scripts/run.py
  • scripts/setup_environment.py

Open the folder on GitHubat commit 2500d4c

Used in 1 other repository

We found 4 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in AgriciDaniel/claude-blog, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Blog Notebooklm next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Blog Notebooklm compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Blog Notebooklm this skillAgriciDaniel/claude-blog2.3k1 repos~2.5kAutomated safety check: WarnMIT
NotebookLM Research AssistantPleasePrompto/notebooklm-skill7.8k14 repos~2.4kAutomated safety check: NotesMIT
NotebookLM Automationteng-lin/notebooklm-py20k—~4.1kAutomated safety check: PassMIT
Zlibrary To Notebooklmzstmfhy/zlibrary-to-notebooklm1.7k1 repos~968Automated safety check: PassMIT
Multi-Source to NotebookLM Processorjoeseesun/qiaomu-anything-to-notebooklm6.2k—~3.6kAutomated safety check: PassMIT
NotebookLM Research Workflowclaude-world/notebooklm-skill467—~1.8kAutomated safety check: PassMIT

Similar skills

  • NotebookLM Research Assistant

    PleasePrompto/notebooklm-skill

    Lets Claude Code ask questions of your Google NotebookLM notebooks through browser automation and return answers grounded in your uploaded sources.

    7.8k GitHub starsUsed in 14 repos~2.4k tokens
    Knowledge ManagementAuto-check: notes
  • NotebookLM Automation

    teng-lin/notebooklm-py

    Installs, authenticates and operates Gemini Notebook (NotebookLM) through the notebooklm-py CLI or its typed async Python API, for notebooks, sources, grounded chat and generated artifacts.

    20k GitHub stars~4.1k tokensUpdated today
    Knowledge ManagementAuto-check passed
  • Zlibrary To Notebooklm

    zstmfhy/zlibrary-to-notebooklm

    自动从 Z-Library 下载书籍并上传到 Google NotebookLM。支持 PDF/EPUB 格式,自动转换,一键创建知识库。

    1.7k GitHub starsUsed in 1 repo~968 tokens
    Knowledge ManagementAuto-check passed
  • Multi-Source to NotebookLM Processor

    joeseesun/qiaomu-anything-to-notebooklm

    Collects content from WeChat articles, web pages, YouTube, podcasts, documents and more, uploads it to NotebookLM and generates podcasts, slides or mind maps.

    6.2k GitHub stars~3.6k tokensUpdated 5 days ago
    Knowledge ManagementAuto-check passed
  • NotebookLM Research Workflow

    claude-world/notebooklm-skill

    Creates NotebookLM notebooks from URLs, text and files, asks cited questions, runs web research and generates audio, slides, quizzes and other artifacts.

    467 GitHub stars~1.8k tokensUpdated 2 mo ago
    Knowledge ManagementAuto-check passed
  • Nlm

    tmc/nlm

    Manages Google NotebookLM notebooks via the nlm CLI. An agent skill from tmc/nlm.

    390 GitHub stars~2.2k tokensUpdated 17 days ago
    Knowledge ManagementAuto-check: notes

More from AgriciDaniel/claude-blog

All 39 skills in this repo
  • Blog Google

    AgriciDaniel/claude-blog

    Google API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity…

    2.3k GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check: notes
  • Blog Audio

    AgriciDaniel/claude-blog

    Generate audio narration of blog posts using Google Gemini TTS.

    2.3k GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check: notes
  • Blog Flow

    AgriciDaniel/claude-blog

    FLOW framework integration for bloggers. An agent skill from AgriciDaniel/claude-blog.

    2.3k GitHub starsUsed in 1 repo~2k tokens
    Auto-check passed
  • Blog Image

    AgriciDaniel/claude-blog

    AI image generation and editing for blog content powered by Gemini via MCP.

    2.3k GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Blog Cluster

    AgriciDaniel/claude-blog

    Semantic topic cluster planning and automated execution engine for claude-blog.

    2.3k GitHub starsUsed in 1 repo~4.9k tokens
    Auto-check passed
  • Blog Discourse

    AgriciDaniel/claude-blog

    Research what people are actually saying about a topic in the last 30 days across Reddit, X / Twitter, YouTube, Hacker News, dev.to, Medium, and other public discourse platforms.

    2.3k GitHub starsUsed in 1 repo~3.4k tokens
    Auto-check: warnings

Works with

Questions about Blog Notebooklm

What does Blog Notebooklm do?

Query Google NotebookLM notebooks for source-grounded, citation-backed answers from user-uploaded documents. Blog Notebooklm is an agent skill from AgriciDaniel/claude-blog. Query Google NotebookLM notebooks for source-grounded, citation-backed answers from user-uploaded documents.

When should I use Blog Notebooklm?

Blog Notebooklm fits situations like: user says notebooklm; notebook research; source grounded research; notebook library.

How do I install Blog Notebooklm in Claude Code?

Run `npx skills add AgriciDaniel/claude-blog --skill blog-notebooklm -a claude-code`. Or copy the skill folder (skills/blog-notebooklm in AgriciDaniel/claude-blog) into .claude/skills/blog-notebooklm in your project. Claude Code loads it when a task matches its description.

How do I install Blog Notebooklm in Codex?

Run `npx skills add AgriciDaniel/claude-blog --skill blog-notebooklm -a codex`. Or copy the skill folder (skills/blog-notebooklm in AgriciDaniel/claude-blog) into .agents/skills/blog-notebooklm in your project. Codex loads it when a task matches its description.

Can I use Blog Notebooklm in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add AgriciDaniel/claude-blog --skill blog-notebooklm -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/blog-notebooklm, .gemini/skills/blog-notebooklm, .github/skills/blog-notebooklm and .opencode/skills/blog-notebooklm in your project.

What does Blog Notebooklm need to run?

Going by SKILL.md and its folder, Blog Notebooklm needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Blog Notebooklm access the network?

SKILL.md names 1 domain. In commands or code: notebooklm.google.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Blog Notebooklm safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Blog Notebooklm use?

Blog Notebooklm is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Blog Notebooklm use?

About 2.5k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.7k tokens, read only when the agent opens those files.

What are the alternatives to Blog Notebooklm?

Skills that share tags, products or a category with Blog Notebooklm: NotebookLM Research Assistant (PleasePrompto/notebooklm-skill, 7.8k stars), NotebookLM Automation (teng-lin/notebooklm-py, 20k stars), Zlibrary To Notebooklm (zstmfhy/zlibrary-to-notebooklm, 1.7k stars) and Multi-Source to NotebookLM Processor (joeseesun/qiaomu-anything-to-notebooklm, 6.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Blog Notebooklm?

AgriciDaniel (a GitHub user) maintains it in AgriciDaniel/claude-blog, which has 2,348 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 9, 2026.

Source: AgriciDaniel/claude-blog on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.