Notebooklm assistant
Skill gfsaaser24/notebooklm-cowork/skills/notebooklm-assistant
This skill provides expertise for working with Google NotebookLM via the notebooklm MCP server. Use when the user says "NotebookLM", "notebook", "create a notebook", "add sources to notebook", "query my notebook", "generate audio overview", "make a podcast", "create flashcards", "research this topic", "studio artifact", "notebook sources", "cross-notebook query", or any request involving NotebookLM features. Also trigger when the user wants to create study materials, AI-generated audio discussions, slide decks, quizzes, mind maps, infographics, or reports from their notebook sources.From its SKILL.md
npx -y skills add gfsaaser24/notebooklm-cowork --skill notebooklm-assistantAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 10 stars10 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
9.9 KB, as published. Nobody here has run it
NotebookLM Assistant
Guide for using the NotebookLM MCP server tools. The server exposes 39 tools across notebooks, sources, chat, research, studio artifacts, sharing, and more.
Updated for
notebooklm-mcp-cliv0.7.7 (June 19, 2026). See "What's new in v0.7.x" below.
What's new in v0.7.x (since the v0.7.1 docs)
- Research auto-import [v0.7.4].
research_status(..., auto_import=True)imports discovered sources into the notebook on completion, so you no longer get an empty notebook shell. Withauto_import=False(default) the response carries anext_actionhint giving the exactresearch_importcall to run. Deep-research polling default raised to 15 minutes (max_wait=900). - Faster Drive listing [v0.7.6 / v0.7.4].
source_list_drive(..., skip_freshness=True)skips the per-source freshness API call on large notebooks. Freshness checks that do run are now parallelized (8 workers) and degrade gracefully (stale: null) on a single-source failure. - Reliable source content right after add [v0.7.2].
source_get_contentnow polls NotebookLM indexing states with backoff, so reads immediately aftersource_addsucceed instead of returning a processing/empty result. - Studio fast-track + cinematic video [v0.7.0]. Agents infer format, style, and prompt and generate immediately; guided preview is reserved for vague or high-stakes requests.
video_format=cinematicis supported (drive it throughfocus_prompt). - Auth health checks [v0.7.0–v0.7.2]. Multi-probe health checker distinguishes
stale(truly expired, re-auth) fromunverified(transient network blip, do not re-auth).server_info,refresh_auth, andstudio_createnow share one auth gate, so they no longer disagree on semi-stale sessions. Result is cached 30s. - RPC resilience [v0.7.4].
NOTEBOOKLM_RPC_OVERRIDESenv var,RPCDriftErroron RPC rotation, and backoff retry on throttling. Restart the server after setting overrides. - SOCKS proxy support [v0.7.7].
ALL_PROXYwithsocks5/socks5hworks (the newsocksiodependency). A remote MCP deployment guide was added for Claude web/mobile connectors. - Reverted, do not use: the v0.7.2 ChatGPT file/artifact bridges and the
/artifacts/{filename}route were rolled back in v0.7.3 for an SSRF and disk-leak issue.
Authentication
Before any operation, confirm auth is working. If tools fail with auth errors:
- Call
refresh_auth()to reload cached credentials. - If that fails, the user needs to provide fresh browser cookies via
save_auth_tokens(cookies="..."), or runnlm loginin a terminal. - Cookies come from Chrome DevTools → Network tab → any request to
notebooklm.google.com→ copy theCookieheader value. - Five cookies are required: SID, HSID, SSID, APISID, SAPISID.
- Tokens are valid for 2-4 weeks before needing refresh.
Reading auth status (v0.7.0+). nlm login --check and server_info run a multi-probe
health check and return one of five stable states. Treat them differently:
stalemeans credentials are genuinely expired or the profile failed to load. Re-auth.unverifiedmeans the check hit a transient network error. Do NOT prompt re-auth; retry shortly.
The check is cached for 30 seconds. refresh_auth() reloads tokens from disk; it cannot revive
genuinely expired credentials, so an expired session still needs nlm login or fresh cookies.
Core Workflow Patterns
Creating and Populating a Notebook
notebook_create(title="Project Research")- Add sources with
source_add():- URLs:
source_add(notebook_id, source_type="url", url="https://...") - Text:
source_add(notebook_id, source_type="text", text="...", title="My Notes") - Files:
source_add(notebook_id, source_type="file", file_path="/path/to/doc.pdf") - Google Drive:
source_add(notebook_id, source_type="drive", document_id="...") - Bulk URLs:
source_add(notebook_id, source_type="url", urls="url1,url2,url3")
- URLs:
- Wait for processing if needed: set
wait=Trueon source_add. Reading content right after add is safe now;source_get_contentpolls indexing states with backoff (v0.7.2).
Querying Notebooks
- Simple query:
notebook_query(notebook_id, query="What are the key findings?") - Filter by sources:
notebook_query(notebook_id, query="...", source_ids="id1,id2") - Follow-up: reuse
conversation_idfrom previous response. - Large notebooks (50+ sources): use
notebook_query_start(...)then pollnotebook_query_status(query_id)to avoid MCP client timeouts. - Cross-notebook:
cross_notebook_query(query="...", all=True)searches everything.
Research (Web/Drive Discovery)
research_start(query="...", source="web", mode="fast")— starts async task.research_status(notebook_id, task_id="...", auto_import=True)— poll until complete. Withauto_import=Truethe sources land in the notebook automatically. With the defaultauto_import=False, read thenext_actionhint and callresearch_importyourself.research_import(notebook_id, task_id, source_indices="0,1,2")— manual import path.
Modes: fast (~30s) or deep (~5min). Sources: web or drive. Deep runs can poll up to
15 minutes by default (max_wait=900).
Studio Artifacts (9 Types)
Create rich outputs from notebook sources. Always pass confirm=True.
| Type | Key Options |
|---|---|
audio | format: deep_dive, brief, critique, debate / length: long, medium, short |
video | format: explainer, brief, cinematic / style presets (style does not apply to cinematic) |
infographic | orientation + detail level |
slide_deck | format: detailed, presenter |
report | type: briefing, study_guide, blog_post |
flashcards | difficulty: easy, medium, difficult |
quiz | quiz_count: number of questions |
data_table | data_table_description for guidance |
mind_map | auto-organized from sources |
Common options for all: language, focus_prompt, source_ids.
Fast-track behavior (v0.7.0). Infer format, style, and prompt from context and generate
immediately with a one-line notice. Show a guided preview (settings plus the full prompt) only
for vague requests, high-stakes output such as cinematic video, or when the user asks to review.
For video_format=cinematic, pass the full creative brief through focus_prompt.
After creation, check with studio_status(notebook_id).
Download with download_artifact(notebook_id, artifact_type, output_path).
Downloading & Exporting
download_artifact(notebook_id, artifact_type="audio", output_path="./podcast.wav")- Formats: quiz/flashcards support "json", "markdown", "html"; slide_deck supports "pdf", "pptx".
export_artifact(notebook_id, artifact_id, export_type="docs")— exports to Google Docs/Sheets.
Tool Quick Reference
For full parameter details on all 39 tools, read references/tools-complete.md.
Notebook Management
notebook_list()/notebook_get(id)/notebook_describe(id)notebook_create(title)/notebook_rename(id, new_title)/notebook_delete(id, confirm=True)
Source Management
source_add(notebook_id, source_type, ...)— unified add (url/text/drive/file)source_list_drive(notebook_id, skip_freshness=False)— list with Drive freshness; passskip_freshness=Trueon large notebooks to skip per-source freshness callssource_sync_drive(source_ids, confirm=True)— refresh stale Drive sourcessource_rename(notebook_id, source_id, new_title)source_delete(notebook_id, source_id, confirm=True)source_describe(source_id)— AI summary + keywordssource_get_content(source_id)— raw indexed text (polls indexing states)
Chat & Query
notebook_query(notebook_id, query, ...)— AI query with citationsnotebook_query_start(notebook_id, query, ...)/notebook_query_status(query_id)— async pair for 50+ source notebookschat_configure(notebook_id, goal, custom_prompt, response_length)
Research
research_start(query, source, mode)/research_status(notebook_id, ..., auto_import)/research_import(notebook_id, task_id, source_indices)
Notes
note(notebook_id, action="create|list|update|delete", ...)
Sharing
notebook_share_status(notebook_id)notebook_share_public(notebook_id, public=True|False)notebook_share_invite(notebook_id, email, role="viewer|editor")
Tags & Organization
tag(action="add|remove|list|select", ...)
Batch & Pipeline
batch(action="query|add_source|create|delete|studio", ...)pipeline(action="run|list", ...)
Safety Rules
Destructive operations require confirm=True:
notebook_delete,source_delete,studio_delete,note(action="delete")source_sync_drive,notebook_share_batch,batch(action="delete")
Always confirm with the user before running destructive operations.
Rate Limits & Constraints
- Free tier: ~50 queries/day (API-enforced)
- Query timeout: 120s default; research polling up to 900s (15 min) for deep runs
- Custom prompt max: 10,000 characters
- Tokens valid: 2-4 weeks
- Uses undocumented Google APIs — may change without notice. If Google rotates RPC IDs, set
NOTEBOOKLM_RPC_OVERRIDESand restart the server; watch forRPCDriftError. - Behind a SOCKS proxy,
ALL_PROXYwithsocks5/socks5his supported (v0.7.7). - For Claude web/mobile connector deployments, see the package's remote MCP deployment guide.