From NotebookLM Cowork
Provides expertise for Google NotebookLM via the notebooklm MCP server: create notebooks, add sources, query, generate audio overviews, flashcards, study materials, and studio artifacts.
How this skill is triggered — by the user, by Claude, or both
Slash command
/notebooklm-cowork:notebooklm-assistantThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guide for using the NotebookLM MCP server tools. The server exposes 39 tools
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.
research_status(..., auto_import=True) imports discovered sources into the notebook on completion, so you no longer get an empty notebook shell. With auto_import=False (default) the response carries a next_action hint giving the exact research_import call to run. Deep-research polling default raised to 15 minutes (max_wait=900).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.source_get_content now polls NotebookLM indexing states with backoff, so reads immediately after source_add succeed instead of returning a processing/empty result.video_format=cinematic is supported (drive it through focus_prompt).stale (truly expired, re-auth) from unverified (transient network blip, do not re-auth). server_info, refresh_auth, and studio_create now share one auth gate, so they no longer disagree on semi-stale sessions. Result is cached 30s.NOTEBOOKLM_RPC_OVERRIDES env var, RPCDriftError on RPC rotation, and backoff retry on throttling. Restart the server after setting overrides.ALL_PROXY with socks5 / socks5h works (the new socksio dependency). A remote MCP deployment guide was added for Claude web/mobile connectors./artifacts/{filename} route were rolled back in v0.7.3 for an SSRF and disk-leak issue.Before any operation, confirm auth is working. If tools fail with auth errors:
refresh_auth() to reload cached credentials.save_auth_tokens(cookies="..."), or run nlm login in a terminal.notebooklm.google.com → copy the Cookie header value.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:
stale means credentials are genuinely expired or the profile failed to load. Re-auth.unverified means 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.
notebook_create(title="Project Research")source_add():
source_add(notebook_id, source_type="url", url="https://...")source_add(notebook_id, source_type="text", text="...", title="My Notes")source_add(notebook_id, source_type="file", file_path="/path/to/doc.pdf")source_add(notebook_id, source_type="drive", document_id="...")source_add(notebook_id, source_type="url", urls="url1,url2,url3")wait=True on source_add. Reading content right after
add is safe now; source_get_content polls indexing states with backoff (v0.7.2).notebook_query(notebook_id, query="What are the key findings?")notebook_query(notebook_id, query="...", source_ids="id1,id2")conversation_id from previous response.notebook_query_start(...) then poll
notebook_query_status(query_id) to avoid MCP client timeouts.cross_notebook_query(query="...", all=True) searches everything.research_start(query="...", source="web", mode="fast") — starts async task.research_status(notebook_id, task_id="...", auto_import=True) — poll until complete.
With auto_import=True the sources land in the notebook automatically. With the default
auto_import=False, read the next_action hint and call research_import yourself.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).
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).
download_artifact(notebook_id, artifact_type="audio", output_path="./podcast.wav")export_artifact(notebook_id, artifact_id, export_type="docs") — exports to Google Docs/Sheets.For full parameter details on all 39 tools, read references/tools-complete.md.
notebook_list() / notebook_get(id) / notebook_describe(id)notebook_create(title) / notebook_rename(id, new_title) / notebook_delete(id, confirm=True)source_add(notebook_id, source_type, ...) — unified add (url/text/drive/file)source_list_drive(notebook_id, skip_freshness=False) — list with Drive freshness; pass
skip_freshness=True on 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)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_start(query, source, mode) / research_status(notebook_id, ..., auto_import) / research_import(notebook_id, task_id, source_indices)note(notebook_id, action="create|list|update|delete", ...)notebook_share_status(notebook_id)notebook_share_public(notebook_id, public=True|False)notebook_share_invite(notebook_id, email, role="viewer|editor")tag(action="add|remove|list|select", ...)batch(action="query|add_source|create|delete|studio", ...)pipeline(action="run|list", ...)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.
NOTEBOOKLM_RPC_OVERRIDES and restart the server; watch for RPCDriftError.ALL_PROXY with socks5/socks5h is supported (v0.7.7).Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub gfsaaser24/notebooklm-cowork --plugin notebooklm-cowork