Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[0.3.20] - 2026-03-04
Fixed
- Type errors, thread safety, and silent exceptions (PR #74)
- Added Double-Checked Locking (
threading.Lock) for thread-safe client initialization in MCP tools. - Surfaced previously swallowed exceptions for better debug visibility via
logger.debug(). - Fixed multiple type annotations (
str = None->str | None = None) across the codebase. - Replaced unreachable code with explicit
ValidationErrorthrowing to ensure strict type checking completeness. - Thanks to @adlewis82 for the excellent cleanup and safety improvements!
- Added Double-Checked Locking (
[0.3.19] - 2026-03-02
Fixed
- JSON output word wrapping (Issue #72) — CLI commands using
-jflag (note list,share status,export artifact,config show) were producing invalid JSON due to Rich console wrapping long strings at terminal width. JSON output now bypasses Rich and goes directly to stdout. Thanks to @pjeby for reporting.
[0.3.18] - 2026-03-02
Added
- Infographic visual styles — Infographics now support 11 visual styles matching the NotebookLM web UI:
auto_select,sketch_note,professional,bento_grid,editorial,instructional,bricks,clay,anime,kawaii,scientific. Available via MCP (infographic_styleparameter onstudio_create), CLI (--styleflag onnlm infographic create), and Python API (visual_style_codeoncreate_infographic()). Default isauto_selectfor backward compatibility.
[0.3.17] - 2026-03-02
Added
- Multi-browser support for
nlm login—nlm loginnow detects and launches any Chromium-based browser, not just Google Chrome. Supported browsers (in priority order): Google Chrome, Arc (macOS), Brave, Microsoft Edge, Chromium, Vivaldi, Opera. Checks both system and user-local install paths. Error messages now dynamically list supported browsers per platform. Thanks to @devnull03 for this contribution (PR #70). - Browser preference setting — Users can now control which browser
nlm loginuses vianlm config set auth.browser <name>. Valid values:auto(default, first found wins),chrome,arc,brave,edge,chromium,vivaldi,opera. Falls back to auto-detection if the preferred browser is not installed. Also settable viaNLM_BROWSERenv var.
Fixed
- Deep research task_id mismatch (Issue #69) —
nlm research status <nb> --task-id <id>returned "no research found" for deep research because the backend assigns a new task_id internally. Now falls back to returning the only active task when the original task_id doesn't match. Thanks to @danielbrodie for reporting.
[0.3.16] - 2026-02-28
Fixed
- Chrome profile isolation bug:
nlm logincould reuse a Chrome instance from a different NLM profile. Implemented port-to-profile mapping to guarantee strict cross-profile isolation. - Auto-retry on Google account mismatch: When switching NLM profiles (or when multiple users log in on the same machine), Chrome can cache the wrong Google login. The builtin login provider now detects
AccountMismatchError, automatically clears the stale Chrome user-data-dir, and relaunches Chrome for a fresh Google sign-in. nlm login profile deletevalidation: Profile deletion was failing for broken/invalid profiles because it strictly checked for valid cookies. Now it checks if the profile directory exists, allowing deletion of empty/corrupt profiles.
[0.3.15] - 2026-02-26
Added
nlm setup add json— Interactive JSON config generator — Runnlm setup add jsonto generate an MCP JSON config snippet for any tool not directly supported. Interactive wizard with numbered prompts lets you choose uvx vs regular mode, full path vs command name, and whether to include themcpServerswrapper. Prints syntax-highlighted JSON and offers clipboard copy on macOS.
[0.3.14] - 2026-02-26
Fixed
- MCP server instructions: incorrect parameter names — The consolidated tools summary in the MCP server instructions advertised
type=forsource_add,studio_create, anddownload_artifact, but the actual tool schemas usesource_typeandartifact_type. AI clients reading the instructions would use wrong parameter names, causing validation errors. Also added value parameter hints forsource_add.
[0.3.13] - 2026-02-26
Added
- Bulk Source Add — Add multiple URL sources in a single API call, dramatically reducing round-trips and avoiding rate limits (Issue #57).
- Core:
add_url_sources(notebook_id, urls)onSourceMixin - Service:
add_sources(client, notebook_id, sources)— batches URL sources automatically, falls back to individual calls for other types - MCP:
source_addnow accepts optionalurlslist parameter for bulk URL add - CLI:
nlm source add <notebook> --url https://a.com --url https://b.com(repeatable--urlflag)
- Core:
- Bulk Source Delete — Delete multiple sources in a single API call.
- Core:
delete_sources(source_ids)onSourceMixin - Service:
delete_sources(client, source_ids)with validation - MCP:
source_deletenow accepts optionalsource_idslist parameter for bulk delete - CLI:
nlm source delete <id1> <id2> <id3> --confirm(variadic arguments)
- Core:
- 12 new unit tests for bulk add/delete service functions (total: 443 tests)
[Unreleased / 0.3.12]
Fixed
- Source additions bypassing Token Refresh - Refactored
add_url_source,add_drive_source,add_text_source, and multiple other methods incore/sources.pyto use the unified_call_rpcmechanism instead of rawclient.postrequests. This ensures that adding sources now properly benefits from the automatic session/CSRF token refresh if authentication unexpectedly expires (Issue #62). - Notebook operations bypassing Token Refresh - Refactored
list_notebooksanddelete_notebookincore/notebooks.pyto use_call_rpc, ensuring they recover from expired CSRF tokens just like other core operations. Thanks to @byingyang for identifying this in PR #61. - OpenClaw skill path - Fixed incorrect installation path for OpenClaw skills (
workplace->workspace) in code and documentation. Thanks to @maxcanada for reporting (Issue #63). create slidesdefault format - Fixed a bug wherecreate slideswould error because it used an invalid format fallback. It now correctly defaults todetailed_deck. Added comprehensive tests for all verb defaults. (PR #64)
[0.3.11] - 2026-02-22
Added
- Auto-extract build label (
bl) - TheblURL parameter is now automatically extracted from the NotebookLM page duringnlm loginand CSRF token refresh, instead of using a hardcoded value that goes stale every few weeks. This keeps API requests current with Google's latest build without any manual steps. TheNOTEBOOKLM_BLenv var still works as an override. Thesave_auth_tokensMCP tool also extractsblfrom therequest_urlparameter when provided.
Fixed
sources_usednow populated in query responses - Thesources_usedfield was always returning[]even when the AI's answer contained citation markers like[1],[2]. Google's response includes citation-to-source mapping data that was present but never parsed. Query responses now correctly returnsources_used(list of cited source IDs) andcitations(dict mapping each citation number to its parent source ID). This also enables the REPL's citation legend feature. Thanks to @MinhDung2209 for reporting (issue #57).
[0.3.10] - 2026-02-22
Added
- Source Rename (
source_rename) — Rename any source within a notebook via new RPCb7Wfje.- MCP tool:
source_renamewithnotebook_id,source_id, andnew_titleparams - CLI:
nlm source rename <source-id> <title> --notebook <notebook-id> - Verb-first alias:
nlm rename source <source-id> <title> --notebook <notebook-id>
- MCP tool:
[0.3.9] - 2026-02-22
Added
--clearflag fornlm login- Added a--clearflag that wipes the cached Chrome profile before logging in. This solves an issue wherenlm loginwould auto-login to an old, cached account without letting the user switch profiles or emails.
Fixed
- Accurate Email Extraction - Fixed a bug in
extract_emailwhere the CLI would sometimes grab a shared note author's email off the dashboard instead of the logged-in user. The regex now prioritizes actual internal Google account fields before falling back to generic matching. - Skipping Migration on Clear - Fixed an issue where using
--clearwould cause the CLI to mistakenly run a migration step from older CLI versions, reinstating the wrong account profile.
[0.3.8] - 2026-02-22
Added
- CLI
--debugFlag -nlm --debug <command>enables debug logging across all CLI commands, showing raw API responses and internal state. Useful for diagnosing API issues.
Fixed
- Google API errors no longer silently swallowed - When Google returns an error response (e.g.,
INVALID_ARGUMENT,UserDisplayableError) instead of an answer, the CLI now surfaces a clear error message instead of returning an empty answer. Previously, queries would succeed with{'answer': ''}and no indication of what went wrong. Thanks to @MinhDung2209 for the detailed debugging that uncovered this (issue #57).
[0.3.7] - 2026-02-22
Added
- Configurable Interface Language (
NOTEBOOKLM_HL) - SetNOTEBOOKLM_HLenv var to control both the API'shlURL parameter and the default artifact creation language. Explicit--languageflags still take priority. Thanks to @beausea for this contribution (PR #59, closes #58).
[0.3.6] - 2026-02-22
Added
- Query Timeout Flag -
nlm notebook queryandnlm query notebooknow accept--timeout/-tto set query timeout in seconds (default: 120). Useful for long extraction prompts that need more processing time (closes #57).
[0.3.5] - 2026-02-21
Added
- Slide Deck Revision (
studio_revise) — Revise individual slides in an existing slide deck via new RPCKmcKPe. Creates a new artifact with revisions applied; original is never modified.- MCP tool:
studio_revisewithartifact_id,slide_instructions, andconfirmparams - CLI:
nlm slides revise <artifact-id> --slide '1 Make the title larger' --confirm
- MCP tool:
- PPTX Download Support — Download slide decks as PowerPoint (PPTX) in addition to PDF.
- CLI:
nlm download slide-deck <notebook> --format pptx - MCP:
download_artifactwithslide_deck_format="pptx"
- CLI:
- Login Profile Protection — Account mismatch guard prevents accidentally overwriting a profile with credentials from a different Google account. Use
--forceto override. - Reused Chrome Warning —
nlm loginnow warns when connecting to an existing Chrome instance instead of launching a fresh one.
Changed
- Faster Login — Connection pooling and reduced sleep durations cut
nlm logintime from ~25s to under 3s. Thanks to @pjeby for this contribution (PR #54).
[0.3.4] - 2026-02-19
Fixed
nlm loginhang on fresh install - Optimized Chrome port availability scanning (usingsocket.bindinstead ofhttpx.get) to avoid 20+ second timeouts on systems that drop network packets. Thanks to @pjeby for the diagnosis (closes #52)- Chrome "Restore Pages" Warning -
nlm loginand headless authentication now perform a graceful shutdown of Chrome via CDP (Browser.close) rather than abruptly killing the process, resolving crashes on next browser start. Again, great work by @pjeby (fixes #52)
[0.3.3] - 2026-02-16
Fixed
- OpenClaw skill path - Fixed incorrect installation path for OpenClaw skills. Now correctly uses
~/.openclaw/workspace/skills/instead of~/.openclaw/skills/.
[0.3.2] - 2026-02-14
Added
- Focus Prompt Support - Added
--focusparameter tonlm quiz createandnlm flashcards createcommands to specify custom instructions. - Improved Prompt Extraction -
studio_statusnow correctly extracts custom prompts for all artifact types (Audio, Video, Slides, Quiz, Flashcards).
Fixed
- Quiz/Flashcard Prompt Extraction - Fixed a bug where custom instructions were not being extracted for Quiz and Flashcards artifacts (wrong API index).
[0.3.1] - 2026-02-14
Added
- New AI Client Support — Added
nlm skill installsupport for:- Cline (
~/.cline/skills) - Terminal-based AI agent - Antigravity (
~/.gemini/antigravity/skills) - Advanced agentic framework - OpenClaw (
~/.openclaw/workspace/skills) - Autonomous AI agent - Codex (
~/.codex/AGENTS.md) - Now with version tracking
- Cline (
nlm setupsupport — Added automatic MCP configuration for:- Cline (
nlm setup add cline) - Antigravity (
nlm setup add antigravity)
- Cline (
nlm skill updatecommand - Update installed AI skills to the latest version. Supports updating all skills or specific tools (e.g.,nlm skill update claude-code).- Verb-first alias -
nlm update skillworks identically tonlm skill update. - Version tracking -
AGENTS.mdformats now support version tracking via injected comments.
Fixed
- Skill version validation -
nlm skill listnow correctly identifies outdated skills and prevents "unknown" version status for Codex. - Package version - Bumped to
0.3.1to match release tag.
[0.3.0] - 2026-02-13
Added
- Shared service layer (
services/) — 10 domain modules centralizing all business logic previously duplicated across CLI and MCP:errors.py: Custom error hierarchy (ServiceError,ValidationError,NotFoundError,CreationError,ExportError)chat.py: Chat configuration and notebook query logicdownloads.py: Artifact downloading with type/format resolutionexports.py: Google Docs/Sheets exportnotebooks.py: Notebook CRUD, describe, query consolidationnotes.py: Note CRUD operationsresearch.py: Research start, polling, and source importsharing.py: Public link, invite, and status managementsources.py: Source add/list/sync/delete with type validationstudio.py: Unified artifact creation (all 9 types), status, rename, delete
- 372 unit tests covering all service modules (up from 331)
Changed
- Architecture: strict layering —
cli/andmcp/are now thin wrappers delegating toservices/. Neither imports fromcore/directly. - MCP tools refactored — Significant line count reductions across all tool files (e.g., studio 461→200 lines)
- CLI commands refactored — Business logic extracted to services, CLI retains only UX concerns (prompts, spinners, formatting)
- Contributing workflow updated — New features follow:
core/client.py→services/*.py→mcp/tools/*.py+cli/commands/*.py→tests/services/
[0.2.22] - 2026-02-13
Fixed
- Fail-fast for all studio create commands — Audio, report, quiz, flashcards, slides, video, and data-table creation now exit non-zero with a clear error when the backend returns no artifact, instead of silently reporting success. Extends the infographic fix from v0.2.21 to all artifact types (closes #33)
[0.2.21] - 2026-02-13
Added
- OpenClaw CDP login provider —
nlm login --provider openclaw --cdp-url <url>allows authentication via an already-running Chrome CDP endpoint (e.g., OpenClaw-managed browser sessions) instead of launching a separate Chrome instance. Thanks to @kmfb for this contribution (PR #47) - CLI Guide documentation for
nlm setupandnlm doctor— Added Setup and Doctor command reference sections, updated workflow example, and added tips. Cherry-picked from PR #48 by @997unix
Fixed
- Infographic create false success —
nlm infographic createnow exits non-zero with a clear error when the backend returnsUserDisplayableErrorand no artifact, instead of silently reporting success (closes #46). Thanks to @kmfb (PR #47) - Studio status code 4 mapping — Studio artifact status code
4now maps to"failed"instead of"unknown", making artifact failures visible during polling. By @kmfb (PR #47)
Changed
- CDP websocket compatibility — WebSocket connections now use
suppress_origin=Truefor compatibility with managed Chrome endpoints, with fallback for olderwebsocket-clientversions
[0.2.20] - 2026-02-11
Added
- Claude Desktop Extension detection —
nlm setup listandnlm doctornow detect NotebookLM when installed as a Claude Desktop Extension (.mcpb), showing version and enabled state.
Fixed
- Shell tab completion crash — Fixed
nlm setup add <TAB>crashing withTypeErrordue to incorrect completion callback signature.
[0.2.19] - 2026-02-10
Added
- Automatic retry on server errors — Transient errors (429, 500, 502, 503, 504) are now retried up to 3 times with exponential backoff. Special thanks to @sebsnyk for the suggestion in #42.
--jsonflag for more commands — Added structured JSON output tonotebook describe,notebook query,source describe, andsource content. JSON output is also auto-detected when piping. Thanks to @sebsnyk for the request in #43.
Changed
- Error handling priority — Server error retry now executes before authentication recovery.
- AI docs & Skills updated — specific documentation on retry behavior and expanded
--jsonflags.
[0.2.18] - 2026-02-09
Added
- Claude Desktop Extension (.mcpb) — One-click install for Claude Desktop. Download the
.mcpbfile from the release page, double-click to install. No manual config editing required. - MCPB build automation —
scripts/build_mcpb.pyreads version frompyproject.toml, syncsmanifest.json, and packages the.mcpbfile. Old builds are auto-cleaned. - GitHub Actions release asset —
.mcpbfile is automatically built and attached to GitHub Releases alongside PyPI publish. nlm doctorandnlm setupdocumentation — Added to AI docs (nlm --ai) and skill file.
Changed
- Manifest uses
uvx— Claude Desktop extension now usesuvx --from notebooklm-mcp-cli notebooklm-mcpfor universal PATH compatibility.
Removed
- Cleaned up
PROJECT_RECAP.mdandtodo.md(outdated development artifacts).
[0.2.17] - 2026-02-08
Added
nlm setupcommand - Automatically configure NotebookLM MCP for AI tools (Claude Code, Claude Desktop, Gemini CLI, Cursor, Windsurf). No more manual JSON editing! Thanks to @997unix for this contribution (PR #39)nlm setup list- Show configuration status for all supported clientsnlm setup add <client>- Add MCP server config to a clientnlm setup remove <client>- Remove MCP server config
nlm doctorcommand - Diagnose installation and configuration issues in one command. Checks authentication, Chrome profiles, and AI tool configurations. Also by @997unix (PR #39)
Fixed
- Version check not running - Update notifications were never shown after CLI commands because
typer.Exitexceptions bypassed the check. Movedprint_update_notification()to afinallyblock so it always runs. - Missing import in setup.py - Fixed
import osplacement for Windows compatibility
[0.2.16] - 2026-02-05
Fixed
- Windows JSON parse errors - Added
show_banner=Falsetomcp.run()to prevent FastMCP banner from corrupting stdio JSON-RPC protocol on Windows (fixes #35) - Stdout pollution in MCP mode - Replaced
print()with logging inauth.pyandnotebooks.pyto avoid corrupting JSON-RPC output - Profile handling in login check - Fixed
nlm login --checkto use config'sdefault_profileinstead of hardcoded "default"
[0.2.15] - 2026-02-04
Fixed
- Chat REPL command broken - Fixed
nlm chat startfailing withTypeError: BaseClient.__init__() got an unexpected keyword argument 'profile'. Now uses properget_client(profile)utility and handles dict/list API responses correctly. Thanks to @eng-M-A-AbelLatif for the detailed bug report and fix in issue #25!
Removed
- Dead code cleanup - Removed unused
src/notebooklm_mcp/directory. This legacy code was not packaged or distributed but caused confusion (e.g., PR #29 targeted it thinking it was active). The active MCP server isnotebooklm_tools.mcp.server. Thanks to @NOirBRight for PR #29 which helped identify this dead code.
Changed
- Updated tests - Removed references to deleted
notebooklm_mcppackage from test suite.
Community Contributors
This release also acknowledges past community contributions that weren't properly thanked:
- @latuannetnam for HTTP transport support, debug logging, and query timeout configuration (PR #12)
- @davidszp for Linux Chrome detection fix (PR #6) and source_get_content tool (PR #1)
- @saitrogen for the research polling query fallback fix (PR #15)
[0.2.14] - 2026-02-03
Fixed
- Automatic migration from old location - Auth tokens and Chrome profiles are automatically migrated from
~/.notebooklm-mcp/to~/.notebooklm-mcp-cli/on first use. Users upgrading from older versions don't need to re-authenticate.
[0.2.13] - 2026-02-03
Fixed
- Unified storage location - Consolidated all storage to
~/.notebooklm-mcp-cli/. Previously some code still referenced the old~/.notebooklm-mcp/location, causing confusion. Now everything uses the single unified location. - Note: v0.2.13 was missing migration support - upgrade to v0.2.14 instead.
[0.2.12] - 2026-02-03
Removed
notebooklm-mcp-authstandalone command - The standalone authentication tool has been officially deprecated and removed. Usenlm logininstead, which provides all the same functionality with additional features like named profiles. The headless auth for automatic token refresh continues to work behind the scenes.
Fixed
- Auth storage inconsistency - Previously,
notebooklm-mcp-authstored tokens in a different location thannlm login, causing "Authentication expired" errors. Now there's only one auth path vianlm login. - Documentation typo - Fixed
nlm download slides→nlm download slide-deckin CLI guide.
[0.2.11] - 2026-02-02
Fixed
nlm loginnot launching Chrome - Runningnlm loginwithout arguments now properly launches Chrome for authentication instead of showing help. Workaround for v0.2.10: usenlm login -p default.
[0.2.10] - 2026-01-31
Fixed
- Version mismatch - Synchronized version numbers across all package files
[0.2.9] - 2026-01-31
Changed
- Documentation alignment - Unified MCP and CLI documentation with comprehensive test plan
- Build configuration - Moved dev dependencies to optional-dependencies for standard compatibility
Fixed
- Studio custom focus prompt - Extract custom focus prompt from correct position in API response
[0.2.7] - 2026-01-30
Removed
- Redundant CLI commands - Removed
nlm download-verbandnlm research-verb(usenlm downloadandnlm researchinstead)
Fixed
- Documentation alignment - Synchronized all CLI documentation with actual CLI behavior:
- Fixed export command syntax:
nlm export to-docs/nlm export to-sheets(notdocs/sheets) - Fixed download command syntax: use
-oflag for output path - Fixed slides format values:
detailed_deck/presenter_slides(notdetailed/presenter) - Removed non-existent
nlm mindmap listfrom documentation
- Fixed export command syntax:
[0.2.6] - 2026-01-30
Fixed
- Source List Display: Fixed source list showing empty type by using
source_type_namekey correctly
[0.2.5] - 2026-01-30
Added
- Unified Note Tool - Consolidated 4 separate note tools (
note_create,note_list,note_update,note_delete) into a singlenote(action=...)tool - CLI Shell Completion - Enabled shell tab completion for
nlm skilltool argument - Documentation Updates - Updated
SKILL.md,command_reference.md,troubleshooting.md, andworkflows.mdwith latest features
Fixed
- Fixed
nlm skill install otherautomatically switching to project level - Fixed
research_statushandling ofNonetasks in response - Fixed note creation returning failure despite success (timing issue with immediate fetch)
[0.2.4] - 2026-01-29
Added
- Skill Installer for AI Coding Assistants (
nlm skillcommands)- Install NotebookLM skills for Claude Code, OpenCode, Gemini CLI, Antigravity, Cursor, and Codex
- Support for user-level (
~/.config) and project-level installation - Parent directory validation with smart prompts (create/switch/cancel)
- Installation status tracking with
nlm skill list - Export all formats with
nlm skill install other - Unified CLI/MCP skill with intelligent tool detection logic
- Consistent
nlm-skillfolder naming across all installations - Complete documentation in AI docs (
nlm --ai)
- Integration tests for all CLI bug fixes (9 tests covering error handling, parameter passing, alias resolution)
nlm login profile renamecommand for renaming authentication profiles- Multi-profile Chrome isolation - each authentication profile now uses a separate Chrome session, allowing simultaneous logins to multiple Google accounts
- Email capture during login - profiles now display associated Google account email in
nlm login profile list - Default profile configuration -
nlm config set auth.default_profile <name>to avoid typing--profilefor every command - Auto-cleanup Chrome profile cache after authentication to save disk space
Fixed
- Fixed
console.printusing invaliderr=Trueparameter (now useserr_console = Console(stderr=True)) - Fixed verb-first commands passing OptionInfo objects instead of parameter values
- Fixed studio command parameter mismatches (format→format_code, length→length_code, etc.)
- Fixed studio methods not handling
source_ids=None(now defaults to all notebook sources)
Changed
- Consolidated auth commands under login - replaced
nlm auth status/list/deletewithnlm login --checkandnlm login profile list/delete/rename - Studio commands now work without explicit
--source-idsparameter (defaults to all sources in notebook) - Download commands now support notebook aliases (auto-resolved via
get_alias_manager().resolve()) - Added
--confirmflag tonlm alias deletecommand - Updated all documentation to reflect login command structure
[0.2.0] - 2026-01-25
Major Release: Unified CLI & MCP Package (Code Name: "Cancun Wind")
This release unifies the previously separate notebooklm-cli and notebooklm-mcp-server packages into a single notebooklm-mcp-cli package. One install now provides both the nlm CLI and notebooklm-mcp server.
Added
Unified Package
- Single
notebooklm-mcp-clipackage replaces separate CLI and MCP packages - Automatic migration from legacy packages (Chrome profiles and aliases preserved)
- Three executables:
nlm(CLI),notebooklm-mcp(MCP server),notebooklm-mcp-auth(auth tool)
File Upload
- Direct file upload via HTTP resumable protocol (PDF, TXT, Markdown, Audio)
- No browser automation needed for uploads
- File type validation with clear error messages
--waitparameter to block until source is ready
Download System
- Unified download commands for all artifact types (audio, video, reports, slides, infographics, mind maps, data tables)
- Streaming downloads with progress bars
- Interactive artifact support - Quiz and flashcards downloadable as JSON, Markdown, or HTML
- Alias support in download commands
Export to Google Workspace
- Export Data Tables to Google Sheets (
nlm export sheets) - Export Reports to Google Docs (
nlm export docs)
Notes API
- Full CRUD operations:
nlm note create/list/update/delete - MCP tools:
note_create,note_list,note_update,note_delete
Sharing API
- View sharing status and collaborators (
nlm share status) - Enable/disable public link access (
nlm share public/private) - Invite collaborators by email with role selection (
nlm share invite)
Multi-Profile Authentication
- Named profiles for multiple Google accounts (
nlm login --profile <name>) - Profile management:
nlm login profile list/delete/rename - Each profile gets isolated Chrome session (no cross-account conflicts)
Dual CLI Command Structure
- Noun-first:
nlm notebook list,nlm source add,nlm studio create - Verb-first:
nlm list notebooks,nlm add url,nlm create audio - Both styles work interchangeably
AI Coding Assistant Integration
- Skill installer for Claude Code, Cursor, Gemini CLI, Codex, OpenCode, Antigravity
nlm skill install <tool>adds NotebookLM expertise to AI assistants- User-level and project-level installation options
MCP Server Improvements
- HTTP transport mode (
notebooklm-mcp --transport http --port 8000) - Debug logging (
notebooklm-mcp --debug) - Consolidated from 45+ tools down to 28 unified tools
- Modular server architecture with mixins
Research Improvements
- Query fallback for more reliable research polling
- Better status tracking for deep research tasks
- Task ID filtering for concurrent research operations
Changed
- Storage location moved to
~/.notebooklm-mcp-cli/ - Client refactored into modular mixin architecture (BaseClient, NotebookMixin, SourceMixin, etc.)
- MCP tools consolidated (e.g., separate
notebook_add_url/text/drive→ unifiedsource_add)
[0.1.14] - 2026-01-17
Fixed
- Critical Research Stability:
poll_researchnow accepts status code6(Imported) as success, fixing "hanging" Fast Research.- Added
target_task_idfiltering topoll_researchto ensure the correct research task is returned (essential for Deep Research). - Updated
research_statusandresearch_importto use task ID filtering. research_statustool now accepts an optionaltask_idparameter.
- Missing Source Constants:
- Included the code changes for
SOURCE_TYPE_UPLOADED_FILE,SOURCE_TYPE_IMAGE, andSOURCE_TYPE_WORD_DOCthat were omitted in v0.1.13.
- Included the code changes for
[0.1.13] - 2026-01-17
Added
- Source type constants for proper identification of additional source types:
SOURCE_TYPE_UPLOADED_FILE(11): Direct file uploads (e.g., .docx uploaded directly)SOURCE_TYPE_IMAGE(13): Image files (GIF, JPEG, PNG)SOURCE_TYPE_WORD_DOC(14): Word documents via Google Drive
- Updated
SOURCE_TYPESCodeMapper withuploaded_file,image, andword_docmappings
[0.1.12] - 2026-01-16
Fixed
- Standardized source timeouts (supersedes #9)
- Renamed
DRIVE_SOURCE_TIMEOUTtoSOURCE_ADD_TIMEOUT(120s) - Applied to all source additions: Drive, URL (websites/YouTube), and Text
- Added graceful timeout handling to
add_url_sourceandadd_text_source - Prevents timeout errors when importing large websites or documents
- Renamed
[0.1.11] - 2026-01-16
Fixed
- Close Chrome after interactive authentication - Chrome is now properly terminated after
notebooklm-mcp-authcompletes, releasing the profile lock and enabling headless auth for automatic token refresh - Improve token reload from disk - Removed the 5-minute timeout when reloading tokens during auth recovery. Previously, cached tokens older than 5 minutes were ignored even if the user had just run
notebooklm-mcp-auth
These fixes resolve "Authentication expired" errors that occurred even after users re-authenticated.
[0.1.10] - 2026-01-15
Fixed
- Timeout when adding large Drive sources (fixes #9)
- Extended timeout from 30s to 120s for Drive source operations
- Large Google Slides (100+ slides) now add successfully
- Returns
status: "timeout"instead of error when timeout occurs, indicating operation may have succeeded - Added
DRIVE_SOURCE_TIMEOUTconstant inapi_client.py
[0.1.9] - 2026-01-11
Added
- Automatic re-authentication - Server now survives token expirations without restart
- Three-layer recovery: CSRF refresh → disk reload → headless Chrome auth
- Works with long-running MCP sessions (e.g., MCP Super Assistant proxy)
refresh_authMCP tool for explicit token reloadrun_headless_auth()function for background authentication (if Chrome profile has saved login)has_chrome_profile()helper to check if profile exists
Changed
launch_chrome()now returnssubprocess.Popenhandle instead ofboolfor cleanup control_call_rpc()enhanced with_deep_retryparameter for multi-layer auth recovery
[0.1.8] - 2026-01-10
Added
constants.pymodule as single source of truth for all API code-name mappingsCodeMapperclass with bidirectional lookup (name→code, code→name)- Dynamic error messages now show valid options from
CodeMapper
Changed
- BREAKING:
quiz_createnow acceptsdifficulty: str("easy"|"medium"|"hard") instead ofint(1|2|3) - All MCP tools now use
constants.CodeMapperfor input validation - All API client output now uses
constants.CodeMapperfor human-readable names - Removed ~10 static
_get_*_namehelper methods fromapi_client.py - Removed duplicate
*_codesdictionaries fromserver.pytool functions
Fixed
- Removed duplicate code block in research status parsing
[0.1.7] - 2026-01-10
Fixed
- Fixed URL source retrieval by implementing correct metadata parsing in
get_notebook_sources_with_types - Added fallback for finding source type name in
get_notebook_sources_with_types
[0.1.6] - 2026-01-10
Added
studio_statusnow includes mind maps alongside audio/video/slidesdelete_mind_map()method with two-step RPC deletionRPC_DELETE_MIND_MAPconstant for mind map deletion- Unit tests for authentication retry logic
Fixed
- Mind map deletion now works via
studio_delete(fixes #7) notebook_querynow acceptssource_idsas JSON string for compatibility with some AI clients (fixes #5)- Deleted/tombstone mind maps are now filtered from
list_mind_mapsresponses - Token expiration handling with auto-retry on RPC Error 16 and HTTP 401/403
Changed
- Updated
blversion toboq_labs-tailwind-frontend_20260108.06_p0 delete_studio_artifactnow accepts optionalnotebook_idfor mind map fallback
[0.1.5] - 2026-01-09
Fixed
- Improved LLM guidance for authentication errors
[0.1.4] - 2026-01-09
Added
source_get_contenttool for raw text extraction from sources
[0.1.3] - 2026-01-08
Fixed
- Chrome detection on Linux distros
[0.1.2] - 2026-01-07
Fixed
- YouTube URL handling - use correct array position
[0.1.1] - 2026-01-06
Changed
- Improved research tool descriptions for better AI selection
[0.1.0] - 2026-01-05
Added
- Initial release
- Full NotebookLM API client with 31 MCP tools
- Authentication via Chrome DevTools or manual cookie extraction
- Notebook, source, query, and studio management
- Research (web/Drive) with source import
- Audio/Video overview generation
- Report, flashcard, quiz, infographic, slide deck creation
- Mind map generation