Added
- Multi-account profiles - Switch between Google accounts without re-authenticating (#227)
notebooklm profile create/list/switch/rename/deletecommands- Global
--profile/-pflag andNOTEBOOKLM_PROFILEenvironment variable to scope any command to a profile - Per-profile storage paths under
~/.notebooklm/profiles/<name>/ - Implicit default profile preserved for backward compatibility; existing
~/.notebooklm/storage_state.jsonis auto-detected as the default profile (no manual migration needed)
notebooklm doctordiagnostic command -notebooklm doctor [--fix] [--json]checks profile setup, auth, and migration status; reports actionable issues- Microsoft Edge SSO login -
notebooklm login --browser msedgefor organizations that require Edge for SSO (#204) - Browser cookie import - Reuse cookies from your existing browser session without driving Playwright
notebooklm login --browser-cookies <browser>(chrome, edge, firefox, safari, etc.)- New
convert_rookiepy_cookies_to_storage_state()Python helper - Optional
[cookies]extra installsrookiepy(pip install "notebooklm-py[cookies]") - Honors the active profile:
notebooklm --profile <name> login --browser-cookies <browser>writes to that profile'sstorage_state.json. Note that cookie extraction always pulls the source browser's currently-active Google account forgoogle.com/notebooklm.google.com— to populate multiple profiles from the same browser, switch the active Google account in the browser between runs (or use a separate browser per profile).
- EPUB source type - Upload
.epubfiles as notebook sources (#231) - Agent skill installation - Install the bundled NotebookLM skill into local AI agents (#206, #207)
notebooklm skill install- Install into~/.claude/skills/notebooklmand~/.agents/skills/notebooklmnotebooklm skill status- Check installation statenotebooklm agent show codex/notebooklm agent show claude- Print bundled agent templates
- Mind map customization -
client.artifacts.generate_mind_map()now acceptslanguageandinstructionsparameters (#252) note list --json- Machine-readable note listings (#259)- Bare status codes in decoder errors - Decoder surfaces server status codes on null RPC results for clearer diagnostics (#114, #294)
Fixed
- Cross-domain cookie preservation - Login storage state retains cookies across
google.comandnotebooklm.google.comsubdomains, restoring sessions for regional domains - NotebookLM subdomain cookies - Subdomain cookies are no longer dropped during login (#334)
- Video artifact detection - Correctly detect completed video media URLs in polling responses (#333)
- Research import on unavailable snapshots - CLI gracefully handles missing source snapshots during research import (#335)
- Source import retry - Filtered partial-import retry payloads and tightened verification to avoid false positives (#321, #327)
- Server-state verification on timeout - Prevents duplicate inflation when source imports time out (#319)
- Playwright navigation interruption - Handles updated Playwright behavior on already-authenticated sessions (#214, #322)
- Login subprocess on Windows - Use
sys.executablefor Playwright subprocess calls (#279) - Legacy Windows Unicode output - Sanitized output streams for legacy Windows consoles (#324)
- Settings quota errors - Use account limits when reporting create-quota failures (#328)
- Chat references - Emit references only from the winning chunk to avoid >600-element duplication (#300, #310)
- Login retry mechanism - Resolved race conditions and improved error handling on retry (#243)
- Quota detection during polling - Detect quota / daily-limit failures during artifact polling (#240)
- Google account switching - Fixed switching between Google accounts at login time (#246)
- YouTube URL extraction - Extract YouTube URLs at deeply-nested response positions (#265)
- Bare-HTTP URL fallback - Disabled brittle bare-HTTP fallback in
sources.list()(#294) - Logout context cleanup - Clear the active notebook context on
notebooklm logout - Infographic URL extraction - Aligned with download-path logic; added regression test (#229)
- Custom storage path for downloads - Artifact downloads now respect custom auth storage paths (#235)
- Windows file permissions - Skip Unix-only
0o600calls on Windows and rely on Python 3.13+ ACL behavior (#225) - TOCTOU protection - Hardened directory creation in
session.py(#225)
Changed
rookiepyis an optional[cookies]extra - Excluded from[all]to avoid Python 3.13+ install issues; install withpip install "notebooklm-py[cookies]"- Login error detection - Improved detection of missing browser binaries (e.g.,
msedgenot installed) - Skill installation paths - Hardened to handle alternative
~/.claudeand~/.agentslayouts - Deprecation removal deferred to v0.5.0 - The deprecated APIs originally scheduled for removal in v0.4.0 —
StudioContentType,Source.source_type,SourceFulltext.source_type,Artifact.artifact_type,Artifact.variant, andDEFAULT_STORAGE_PATH— continue to work and emitDeprecationWarning. Removal is now planned for v0.5.0 to give downstream users an extra release to migrate.
Infrastructure
- Pinned
ruff==0.8.6in dev deps to match pre-commit configuration - Bumped
python-dotenv(#299) - Bumped
pytestin theuvgroup - Added contribution templates and PR quality guidelines for issues and PRs