Skip to content

Releases: teng-lin/notebooklm-py

v0.3.4

12 Mar 03:05
8f9dd3a

Choose a tag to compare

Added

  • Notebook metadata export - Added notebook metadata APIs and CLI export with a simplified sources list
    • New notebooklm metadata command with human-readable and --json output
    • New NotebookMetadata and SourceSummary public types
    • New client.notebooks.get_metadata() helper
  • Cinematic Video Overview support - Added cinematic generation and download flows
    • notebooklm generate video --format cinematic
  • Infographic styles - Added CLI support for selecting infographic visual styles
  • source delete-by-title - Added explicit exact-title deletion command for sources

Fixed

  • Research imports on timeout - CLI research imports now retry on timeout with backoff
  • Metadata command behavior - Aligned metadata output and implementation with current CLI patterns
  • Regional login cookies - Improved browser login handling for regional Google domains
  • Notebook summary parsing - Fixed notebook summary response parsing
  • Source delete UX - Improved source delete resolution, ambiguity handling, and title-vs-ID errors
  • Empty downloads - Raise an error instead of producing zero-byte files
  • Module execution - Added python -m notebooklm support

Changed

  • Documentation refresh - Updated release, development, CLI, README, and Python API docs for current commands, APIs, and uv workflows
  • Public API surface - Exported NotebookMetadata, SourceSummary, and InfographicStyle

v0.3.3

03 Mar 19:18
abe067a

Choose a tag to compare

[0.3.3] - 2026-03-03

Added

  • ask --save-as-note - Save chat answers as notebook notes directly from the CLI (#135)
    • notebooklm ask "question" --save-as-note - Save response as a note
    • notebooklm ask "question" --save-as-note --note-title "Title" - Save with custom title
  • history --save - Save full conversation history as a notebook note (#135)
    • notebooklm history --save - Save history with default title
    • notebooklm history --save --note-title "Title" - Save with custom title
    • notebooklm history --show-all - Show full Q&A content instead of preview
  • generate report --append - Append custom instructions to built-in report format templates (#134)
    • Works with briefing-doc, study-guide, and blog-post formats (no effect on custom)
    • Example: notebooklm generate report --format study-guide --append "Target audience: beginners"
  • generate revise-slide - Revise individual slides in an existing slide deck (#129)
    • notebooklm generate revise-slide "prompt" --artifact <id> --slide 0
  • PPTX download for slide decks - Download slide decks as editable PowerPoint files (#129)
    • notebooklm download slide-deck --format pptx (web UI only offers PDF)

Fixed

  • Partial artifact ID in download commands - Download commands now support partial artifact IDs (#130)
  • Chat empty answer - Fixed ask returning empty answer when API response marker changes (#123)
  • X.com/Twitter content parsing - Fixed parsing of X.com/Twitter source content (#119)
  • Language sync on login - Syncs server language setting to local config after notebooklm login (#124)
  • Python version check - Added runtime check with clear error message for Python < 3.10 (#125)
  • RPC error diagnostics - Improved error reporting for GET_NOTEBOOK and auth health check failures (#126, #127)
  • Conversation persistence - Chat conversations now persist server-side; conversation ID shown in history output (#138)
  • History Q&A previews - Fixed populating Q&A previews using conversation turns API (#136)
  • generate report --language - Fixed missing --language option for report generation (#109)

Changed

  • Chat history API - Simplified history retrieval; improved conversation grouping with parallel fetching (#140, #141)
  • Conversation ID tracking - Server-side conversation lookup via new hPTbtc RPC (GET_LAST_CONVERSATION_ID) replaces local exchange ID tracking
  • History Q&A population - Now uses khqZz RPC (GET_CONVERSATION_TURNS) to fetch full Q&A turns with accurate previews (#136)

Infrastructure

  • Bumped actions/upload-artifact from v6 to v7 (#131)

v0.3.2

26 Jan 15:47
bbc037e

Choose a tag to compare

Fixed

  • CLI conversation reset - Fixed conversation ID not resetting when switching notebooks (#97)
  • UTF-8 file encoding - Added explicit UTF-8 encoding to all file I/O operations (#93)
  • Windows Playwright login - Restored ProactorEventLoop for Playwright login on Windows (#91)

Infrastructure

  • Fixed E2E test teardown hook for pytest 8.x compatibility (#101)
  • Added 15-second delay between E2E generation tests to avoid rate limits (#95)

Full Changelog: v0.3.1...v0.3.2

v0.3.1

23 Jan 22:30
b73829e

Choose a tag to compare

What's Changed

Fixed

  • Windows CLI hanging - Fixed asyncio ProactorEventLoop incompatibility causing CLI to hang on Windows (#79)
  • Unicode encoding errors - Fixed encoding issues on non-English Windows systems (#80)
  • Streaming downloads - Downloads now use streaming with temp files to prevent corrupted partial downloads (#82)
  • Partial ID resolution - All CLI commands now support partial ID matching for notebooks, sources, and artifacts (#84)
  • Source operations - Fixed empty array handling and add_drive nesting (#73)
  • Guide response parsing - Fixed 3-level nesting in get_guide responses (#72)
  • RPC health check - Handle null response in health check scripts (#71)
  • Script cleanup - Ensure temp notebook cleanup on failure or interrupt

Infrastructure

  • Added develop branch to nightly E2E tests with staggered schedule
  • Added custom branch support to nightly E2E workflow for release testing

Full Changelog: v0.3.0...v0.3.1

v0.3.0

21 Jan 15:37
7a40b30

Choose a tag to compare

What's New

New Features

  • Language settings - Configure output language for artifact generation (80+ languages)
  • Sharing API - Programmatic notebook sharing management (client.sharing.*)
  • SourceType and ArtifactType enums - Type-safe source/artifact identification
  • .kind property - Unified type access across Source, Artifact, SourceFulltext
  • --retry flag - Automatic retry with exponential backoff on rate limits
  • Centralized exception hierarchy - All errors inherit from NotebookLMError
  • CLI share command group - Notebook sharing from command line

Deprecated (to be removed in v0.4.0)

  • Source.source_type → use .kind instead
  • Artifact.artifact_type → use .kind instead
  • Artifact.variant → use .kind, .is_quiz, or .is_flashcards instead
  • SourceFulltext.source_type → use .kind instead
  • StudioContentType → use ArtifactType instead

See Migration Guide for upgrade instructions.

Fixed

  • Silent failures in CLI now properly report errors
  • Source type emoji display consistency

Changed

  • Source type detection uses API-provided type codes
  • CLI file handling simplified to use add_file()

Removed

  • detect_source_type() - replaced by Source.kind
  • ARTIFACT_TYPE_DISPLAY - replaced by get_artifact_type_display()

Full Changelog: https://github.com/teng-lin/notebooklm-py/blob/v0.3.0/CHANGELOG.md

Install: pip install notebooklm-py==0.3.0

v0.2.1

15 Jan 17:54

Choose a tag to compare

Added

  • Authentication diagnostics - New notebooklm auth check command for troubleshooting auth issues
    • Shows storage file location and validity
    • Lists cookies present and their domains
    • Detects NOTEBOOKLM_AUTH_JSON and NOTEBOOKLM_HOME usage
    • --test flag performs network validation
    • --json flag for machine-readable output (CI/CD friendly)
  • Structured logging - Comprehensive DEBUG logging across library
    • NOTEBOOKLM_LOG_LEVEL environment variable (DEBUG, INFO, WARNING, ERROR)
    • RPC call timing and method tracking
    • Legacy NOTEBOOKLM_DEBUG_RPC=1 still works
  • RPC health monitoring - Automated nightly check for Google API changes
    • Detects RPC method ID mismatches before they cause failures
    • Auto-creates GitHub issues with rpc-breakage label on detection

Fixed

  • Cookie domain priority - Prioritize .google.com cookies over regional domains (e.g., .google.co.uk) for more reliable authentication
  • YouTube URL parsing - Improved handling of edge cases in YouTube video URLs

Documentation

  • Added auth check to CLI reference and troubleshooting guide
  • Consolidated CI/CD troubleshooting in development guide
  • Added installation instructions to SKILL.md for Claude Code
  • Clarified version numbering policy (PATCH vs MINOR)

Full Changelog: v0.2.0...v0.2.1

v0.2.0

14 Jan 15:18

Choose a tag to compare

[0.2.0] - 2026-01-14

Added

  • Source fulltext extraction - Retrieve the complete indexed text content of any source
    • New client.sources.get_fulltext(notebook_id, source_id) Python API
    • New source fulltext <source_id> CLI command with --json and -o output options
    • Returns SourceFulltext dataclass with content, title, URL, and character count
  • Chat citation references - Get detailed source references for chat answers
    • AskResult.references field contains list of ChatReference objects
    • Each reference includes source_id, cited_text, start_char, end_char, chunk_id
    • Use notebooklm ask "question" --json to see references in CLI output
  • Source status helper - New source_status_to_str() function for consistent status display
  • Quiz and flashcard downloads - Export interactive study materials in multiple formats
    • New download quiz and download flashcards CLI commands
    • Supports JSON, Markdown, and HTML output formats via --format flag
    • Python API: client.artifacts.download_quiz() and client.artifacts.download_flashcards()
  • Extended artifact downloads - Download additional artifact types
    • New download report command (exports as Markdown)
    • New download mind-map command (exports as JSON)
    • New download data-table command (exports as CSV)
    • All download commands support --all, --latest, --name, and --artifact selection options

Fixed

  • Regional Google domain authentication - SID cookie extraction now works with regional Google domains (e.g., google.co.uk, google.de, google.cn) in addition to google.com
  • Artifact completion detection - Media URL availability is now verified before reporting artifact as complete, preventing premature "ready" status
  • URL hostname validation - Use proper URL parsing instead of string operations for security

Changed

  • Pre-commit checks - Added mypy type checking to required pre-commit workflow

Install: pip install notebooklm-py==0.2.0

Full Changelog: v0.1.4...v0.2.0

v0.1.4

11 Jan 12:21

Choose a tag to compare

What's Changed

Added

  • Source selection for chat and artifacts - Select specific sources when using ask or generate commands with the new --sources flag
  • Research sources table - research status now displays sources in a formatted table

Fixed

  • JSON output broken in TTY terminals - --json flag output was including ANSI color codes
  • Warning stacklevel - warnings.warn calls now report correct source location

Infrastructure

  • Windows CI testing - Windows is now part of the nightly E2E test matrix
  • VCR.py integration - Added recorded HTTP cassette support for faster, deterministic integration tests

Full Changelog: v0.1.3...v0.1.4