notebooklm-memory
Use to query, curate or audit Google NotebookLM research notebooks: market data, tech best practices, industry patterns. Modes QUERY, CURATE (add sources, create/tag notebooks), AUDIT (stale notebooks
SKILL.mdskills/notebooklm-memory/SKILL.md
GitHubnotebooklm-research
description: "Topic-based research library via Google NotebookLM MCP. Query curated domain notebooks for market data, tech best practices, and industry patterns. Three modes: QUERY (ask questions across notebooks), CURATE (add sources, create/tag notebooks), AUDIT (check source counts, surface stale notebooks). All operations use mcp__notebooklm-mcp__* MCP tools — no CLI. Registry-first: every operation starts by reading {agency-root}/memory/notebooklm-registry.md, if it exists."
{agency-root}resolves to$AGENCY_HOME, else$CLAUDE_CONFIG_DIR, else the default Claude Code config directory — seedocs/HOOKS.mdfor the exact resolution order.
Activation
Explicit: User says "/notebooklm-memory", "/notebooklm-research", "query research notebooks", "add source to notebook", "create a research notebook"
Intent detection:
- "What does the research say about Vietnamese SMEs?"
- "Look up AI agent patterns in the notebooks"
- "Add this URL to the market research notebook"
- "Create a new research notebook for fintech"
- "How many sources are in the market notebook?"
- "What do we know about Supabase best practices?"
Prerequisites
- NotebookLM MCP server running (
mcp__notebooklm-mcp__*tools available) - Authenticated via Google OAuth (your Google account)
- Registry at
{agency-root}/memory/notebooklm-registry.md, if it exists (operator-accumulated — no template ships)
Mode 1: QUERY — Ask Questions
Query curated research notebooks for grounded answers with citations.
Single Notebook Query
- Read
{agency-root}/memory/notebooklm-registry.md(if it exists) to find the notebook slug and ID - Call
mcp__notebooklm-mcp__notebook_querywith the notebook ID and question - Return the answer with source citations
Cross-Notebook Query
For questions spanning multiple domains:
- By tag:
mcp__notebooklm-mcp__cross_notebook_query(tags=["vietnam", "sme"], query="...") - All notebooks:
mcp__notebooklm-mcp__cross_notebook_query(all=true, query="...")
Query Tips
- Narrow queries outperform broad ones (NotebookLM uses RAG, not full re-read)
- Ask for citations: "Quote the exact sentence and cite the source"
- Ask for contradictions: "Do any sources disagree on this?"
- Ask for gaps: "What's missing from these sources on this topic?"
Mode 2: CURATE — Manage Sources & Notebooks
Add a Source
- Read registry to get the notebook ID for the target slug
- Check current source count (call
mcp__notebooklm-mcp__notebook_describeor check registry) - If source count >= 45: warn the user and suggest archiving old sources first
- Add the source:
- URL:
mcp__notebooklm-mcp__source_add(source_type="url", url="https://...") - Text:
mcp__notebooklm-mcp__source_add(source_type="text", text="...") - Drive:
mcp__notebooklm-mcp__source_add(source_type="drive", document_id="...") - File:
mcp__notebooklm-mcp__source_add(source_type="file", file_path="...")
- URL:
- Update the source count in
notebooklm-registry.md
Create a New Notebook
mcp__notebooklm-mcp__notebook_create(title="[CATEGORY] Full Title")- Use prefix convention:
[MARKET],[TECH],[SALES],[CONTENT],[AI],[OPS]
- Use prefix convention:
- Tag it:
mcp__notebooklm-mcp__tag(action="add", tags=["tag1", "tag2"]) - Seed with 5-10 initial sources (URL preferred)
- Add entry to
{agency-root}/memory/notebooklm-registry.md(create the file if it doesn't exist yet):- slug, notebook_id, title, tags, source count, project dependencies
- Update
Last updateddate in registry
Source Selection Guidelines
| Priority | Source Type | Example |
|---|---|---|
| Highest | Industry reports, government data (URL) | GSO Vietnam, e-Conomy SEA report |
| High | Official documentation (URL) | Next.js docs, Supabase docs |
| High | Research papers, whitepapers (URL) | Academic papers, policy documents |
| Medium | Curated blog posts, case studies (URL) | Vetted quality articles |
| Medium | Internal synthesis docs (text) | Audience profiles, research summaries |
| Avoid | Session logs, decisions.md, code files | These belong in the wiki (memory files) or the repo |
Mode 3: AUDIT — Check Notebook Health
Quick Health Check
- Read
{agency-root}/memory/notebooklm-registry.md, if it exists - For each active notebook:
- Call
mcp__notebooklm-mcp__notebook_describeto verify it exists and get current state - Compare source count against the 45-source soft limit
- Flag notebooks approaching the limit
- Call
- Report: slug, title, source count, status (healthy / near-limit / stale)
Source Freshness Audit
- For each notebook, call
mcp__notebooklm-mcp__source_addwithsource_type="list"or check source metadata - Flag sources older than the notebook's refresh cadence:
- AI/ML notebooks: monthly refresh
- Market notebooks: quarterly refresh
- Tech stack notebooks: semi-annual refresh
- Recommend: which sources to refresh (re-add URL) or archive
Integration with Direct Lookups
Agents query NotebookLM for research-topic questions only, after the wiki and a shared-memory MCP server (if you run one) miss (order: wiki -> shared-memory MCP server -> NotebookLM; the curator agent was retired 2026-10-12). For a domain-level question (market research, tech best practices, industry patterns), the asking agent, or the one read-only general-purpose (sonnet) synthesis spawn it routes like any spawn:
- Reads the registry to find relevant notebooks
- Matches question domain to notebook tags
- Queries via
mcp__notebooklm-mcp__notebook_query - Returns answer with NotebookLM source citations
This skill covers human-invoked operations and direct agent lookups.
Autonomy Rules
Auto-approve (no confirmation needed):
notebook_query,cross_notebook_query— readsnotebook_list,notebook_describe— readsnotebook_get— readssource_describe,source_get_content— readstag(action="list")— reads- Reading
notebooklm-registry.md— reads
Require user confirmation:
notebook_create— creates new notebooksource_add— modifies notebook contentnotebook_delete— destructivesource_delete— destructivetag(action="add"),tag(action="remove")— modifies organizationstudio_create— long-running generationnotebook_share_*— exposes content externally
Relationship to Other Systems
NotebookLM = research only. It is NOT a memory or lookup layer.
| Need | Where | Rule |
|---|---|---|
| Claude-only memory (prefs, lessons, project notes) | Wiki: MEMORY.md + memory files + project memory/ |
Always first |
| Cross-agent facts, handoffs, task board | A shared-memory MCP server, if you run one | Second |
| Research topics (markets, tech, industry) | NotebookLM | Last, research topics only |
| Code relationships | graphify / tokensave, on demand | Not a lookup step |
Pinecone is retired as a lookup step (2026-10-08).