Skip to content

Releases

v3.4.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 07:19
69fee3e

Added

  • get_chat_history — the notebook's whole chat history (questions and
    answers, oldest first, with timestamps and the source passages behind the
    [N] citations) as Markdown or JSON, returned inline or saved to
    destination_dir. NotebookLM loads long chats lazily; the tool follows the
    paging cursor of the data API until the oldest page, so the result is
    complete however long the chat is (max_turns keeps only the newest).
    Read-only; include_citations: false makes a much smaller export.
  • delete_chat_history — permanently deletes the notebook's chat history
    (Notebook menu → Delete chat history) so a new line of work starts without
    the earlier questions as context. Same approval flow as the other deletions:
    the user is asked through elicitation, otherwise confirm: true is required.
    backup_dir saves a Markdown copy first, after the approval. It makes the
    same data-API call as the web app (DeleteChatTurns) and verifies the result
    by reading the conversation back; if the call fails, the Notebook menu and
    its confirmation dialog are used instead.
  • scripts/chat-history-test.mjs — an offline test of the history reader
    (paging, max_turns, citations, exports) against a fake NotebookLM.

Changed

  • reset_session is described for what it does: it reloads the session's tab.
    It never deleted the notebook's stored conversation, which answers asked over
    the data API keep continuing — use delete_chat_history for that.

  • Model labelling: the "Gemini 2.5" text hard-coded since the first release is
    gone. Answers are now marked "Gemini 3.5 family (NotebookLM; Flash or Pro,
    chosen by Google per task)", the _provenance.model value is
    "gemini-3.5-family" (was "gemini-2.5") and the ask_question title and
    description say "Gemini 3.5". Google does not expose the model: the page,
    its scripts and the chat RPC carry no model id, and its documentation names
    only the Gemini 3.5 family (June 2026), with Flash or Pro picked per task
    and the rollout differing by plan. The label is therefore a family, never a
    specific variant. Clients matching on model === "gemini-2.5" must update.

v3.3.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 11:35
21512b6

Added

  • create_notebook — a new, empty notebook in the signed-in account, added
    to the library and selected (no web UI or share-link needed).
  • rename_notebook — renames the notebook in NotebookLM itself; the library
    name follows.
  • delete_notebook — permanently deletes a notebook from the account and
    drops its library entry. Asks the user through elicitation, otherwise
    requires confirm: true; verified by re-reading the account's notebooks.
  • pin_notebook — "Pin to top" / unpin on the homepage.
  • list_collections and manage_collection — the homepage's collections:
    create, rename, add / remove notebooks, delete (notebooks are kept; asks
    the user). Listing reads the collections directly instead of creating a
    throwaway one.
  • share_notebook — read link sharing and the people a notebook is shared
    with; switch "anyone with the link can view" on (asks the user) or off.
  • rename_source and rename_studio_artifact — the Rename entries of the
    source and Studio item menus.
  • get_studio_artifact — "View prompt and sources": the prompt, language,
    report template and sources a Studio output was generated from.
  • Server log file <data dir>/logs/server.log (NOTEBOOKLM_LOG_FILE), with
    the process id on each line.

Fixed

  • add_source failed on a notebook without sources ("Could not find an input
    field inside the Add-source overlay", or a client timeout). NotebookLM
    returns null instead of an empty source list for such a notebook, which
    the RPC path took for a protocol change and fell back to the UI. The same
    made list_sources read the source list from the UI instead of the RPC.
  • The UI fallback picked the "We're giving you more flexibility…"
    announcement (<accessibility-promo-dialog>) as the Add-source dialog: on
    an empty notebook the auto-opened Add-source modal covers the announcement's
    close button. An announcement that cannot be closed is now marked and
    skipped by the dialog selectors, the close falls back to a DOM click, and
    announcements are swept again right before the dialog is opened.
  • When the RPC path fails and the UI fallback fails too, the add_source
    message now includes the RPC error instead of only logging it.
  • add_source waited up to 90 s for NotebookLM to process new sources and
    hit MCP clients' 60 s request timeout. It now waits up to 40 s with
    progress notifications; sources still processing are reported as pending.

v3.3.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 00:43
9be3561

Source research and vetting, reports from selected sources, and the
notebooklm-workflow agent skill. (3.2.1 was tagged but never published;
its changes are part of this release.)

Added

  • research_sources — NotebookLM's own source search (Fast or Deep Research
    over the web, Fast over Google Drive). It returns candidates only and never
    imports. Every run spends AI usage, so queries under 4 words are refused
    with advice on writing a precise one, a query that already ran in the
    notebook is answered from its research history, and a run in progress is
    reported instead of doubled. Deep runs list the candidates the report
    cites, with the passage it drew from each; the report on request. Drive
    runs (2-word minimum: file titles are precise) return Google Docs, Slides,
    Sheets, PDFs and Word files, listed once each; a run that found nothing
    ends as failed with advice to rephrase.
  • import_research_sources — imports only vetted candidates: each needs a
    reliability of high or medium and a reason. Low-rated, unexplained,
    duplicate and blocked-domain candidates are rejected
    (NOTEBOOKLM_RESEARCH_BLOCKED_DOMAINS). Imported sources come back with
    word counts; fewer than 500 indexed words is flagged as a likely landing
    page, abstract or paywall.
  • get_source — one source in depth: metadata, NotebookLM's source guide
    (summary and keywords) and the indexed text, in pages.
  • Reports from a subset of sources: generate_studio_artifact with
    type: "report" and a document template (briefing_doc, study_guide,
    blog_post, create_your_own) now runs through NotebookLM's data API and
    takes sources — the Reports dialog has no source picker, so this was not
    possible before. New title option.
  • suggest_reports — NotebookLM's source-derived report suggestions (the
    "Suggested Template" cards) for a chosen set of sources, each with a
    ready-made prompt and audience, plus the notebook summary and suggested
    questions.
  • Agent skill notebooklm-workflow (Agent Skills format), shipped in the
    package: npx @arlinamid/notebooklm-mcp skill install detects the agents
    on the machine and copies it only for those (~/.claude/skills,
    ~/.agents/skills, ~/.copilot/skills, ~/.config/opencode/skills);
    skill zip builds the Claude Desktop upload. Plugin manifests for Claude,
    Codex and Cursor and a Gemini CLI extension manifest bundle the server and
    the skill; the Claude and Codex marketplaces install them from the npm
    package. From GitHub: gemini extensions install, npx skills add, or a
    clone and node scripts/skill.mjs install. See the README, "Agent skill
    and plugins".

Changed

  • list_sources also returns type, URL (or YouTube channel), word and
    character counts, status, origin (research or added) and the date
    added.
  • The server instructions open the source section with source quality:
    vet before each phase of work.
  • Tool descriptions and docs use neutral language examples instead of
    Hungarian ones.
  • Prompt templates' rendered instructions (get_prompt_template, MCP
    prompts) now ask for sources scoped to the output instead of advising
    against it, and report templates go to create_your_own.
  • Documentation: README overview and agent-skill section; usage-guide
    recipes for finding and vetting sources, reports from selected sources and
    the skill; troubleshooting for research queries, report sources, tools
    listed twice and skill installs; every tool and parameter in
    docs/tools.md (38 tools).

v3.2.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 21:55

Added

  • NOTEBOOKLM_USE_RPC=false switches every operation that has both paths
    back to the web UI — a kill switch should Google change the protocol.

  • configure_output_language — reads or sets the account's output language
    (Settings → Output language) over the RPC API. It decides the language of
    answers and of Studio outputs that do not name one. With Default,
    NotebookLM uses its interface language, which is English for this server,
    so a user expecting e.g. Hungarian silently got English; the tool says so
    and sets an override. Accepts a code, the listed name or the English name.

  • One browser per Google account across server instances. When several MCP
    clients start the server on the same data directory (e.g. Claude Desktop's
    chat and Code tab), the first instance becomes the leader: it alone opens
    Chrome and writes the library, and serves a token-protected endpoint on
    127.0.0.1. The others forward tool calls to it and relay its elicitation,
    sampling, roots and progress to their own client. Previously the second
    instance fell back to an isolated profile seeded with saved cookies, so one
    Google session ran in two browsers at once. A dead leader is replaced on
    the next call. NOTEBOOKLM_SINGLE_BROWSER=false opts out.

  • download_studio_artifact — saves any finished Studio output: audio
    (.m4a), video (.mp4), infographic (.png), slide deck (.pdf or
    .pptx), report (.md), data table (.csv, .xlsx exports), quiz and
    flashcards (.md, .json or .html) and mind maps (.json). It reads
    NotebookLM's own data API (batchexecute RPCs, called from inside the
    signed-in tab) instead of clicking menus, so it is fast (1–4 s per item)
    and independent of the UI layout. Pick an item by artifact_id (or a
    unique prefix) or the newest finished one of a type. The RPC layer
    follows the protocol mapping of gemini-notebook-mcp-cli (MIT); see
    THIRD_PARTY_NOTICES.md.

Changed

  • Documentation brought up to date: docs/tools.md covers all 34 tools (13
    were missing; parameter tables generated from the tool schemas) and fixes
    the outdated ask_question, add_source, generate_audio and
    download_audio sections; new troubleshooting entries (wrong output
    language, sign-in confirmation, failure replies, RPC kill switch, several
    clients); usage-guide recipes for Studio downloads and output language;
    server instructions no longer claim YouTube / file sources are missing.
  • ask_question asks through NotebookLM's streamed query endpoint instead of
    typing into the chat box and watching the page for the answer: 10–15 s
    instead of 20–25 s, no answer-detection heuristics, and sources scoping
    sends source ids without touching the notebook's checkbox selection. The
    notebook's server conversation is continued with its history, so
    follow-ups keep context and the Q&A appears in NotebookLM's own chat.
    Answers are now Markdown (e.g. **bold**); citation markers stay [N]
    (ranges like [1-3] are expanded). save_answer_as_note reloads the tab
    first so it saves the latest answer. Falls back to typing when the RPC fails.
  • generate_studio_artifact starts audio, video, infographic and slide-deck
    generations through the RPC API (R7cb6c, 4–6 s, no customise dialog) and
    returns the new artifactId. Without a language it uses the account's
    output language; reports, flashcards, quizzes, data tables, mind maps,
    "Generate later" and options without a known code keep using the dialog,
    as does a request when the account language is Default.
  • Studio language accepts a code (hu), the listed name (magyar) or the
    English name (Hungarian) on both paths.
  • add_source adds pasted text, web URLs and YouTube URLs through the RPC
    API (4–6 s including the wait for processing and a tab refresh, instead of
    driving the Add-source dialog) and returns the new sourceIds. Ambiguous
    replies are reconciled against the notebook before anything is retried,
    so a source is never added twice; file uploads and RPC failures use the
    dialog as before.
  • get_usage, configure_chat and import_account_notebooks use
    NotebookLM's data API instead of menus and dialogs, falling back to the UI
    when an RPC id changes: usage takes 0.4 s instead of opening Settings →
    Usage (resets is now an ISO 8601 time), chat settings are read and
    written directly (0.5–1 s, verified by reading them back), and the
    account's notebooks come from one call (≈2 s instead of ≈13 s of homepage
    filtering, with no viewport or filter-state dependence).

Fixed

  • The Studio dialog's language picker matched a bare prefix, so a short
    code could choose the wrong language (ja → Jawa instead of Japanese)
    and the output came out in that language. It now matches exact names or
    name (…) only, after resolving codes and English names.
  • Two tool calls arriving at once on a fresh server both launched the
    browser; the second failed (launchPersistentContext … closed). Browser
    start-up is now shared by concurrent callers.
  • ask_question hung until the timeout when the new answer was word for
    word identical to an earlier one in the chat (asking the same question
    again often gives the same answer): prior answers were recognised by text
    only. A new answer bubble now counts as new even with identical text.
  • Concurrent tool calls on the same session no longer drive its browser tab
    at the same time (two calls clicking in one tab closed each other's
    dialogs and panels). Each session now has a FIFO queue: page interactions
    run one at a time, waiting calls get a "Queued behind …" progress message,
    and list_sessions shows current_operation / queued_operations.
    Long renders do not hold the tab — generate_audio with
    wait_for_completion polls in short queued steps, so chat questions and
    other Studio work can run meanwhile. An answer and its citations are read
    in one step.
  • Two calls that open the same new session_id at once share one tab
    instead of opening two; idle-session cleanup never closes a busy tab.

v3.1.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 21:06
6e8d323

Added

  • import_account_notebooks — reads the signed-in account's notebooks from
    the NotebookLM homepage ("My notebooks", optionally "Shared with me") and
    adds the missing ones to the local library without share-links. Supports
    dry_run, a title query and notebook_ids; skips notebooks already in
    the library (matched by UUID) and restores the homepage filter the user had
    selected. Verified live (EN locale) through the MCP server: dry run,
    filtered and full import, and a repeat run that skips everything.

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 20:13
7057b63

First release after taking over development from the archived upstream
(PleasePrompto/notebooklm-mcp),
now at arlinamid/notebooklm-mcp and
published as @arlinamid/notebooklm-mcp. Restores compatibility with the
September 2026 "Gemini Notebook" redesign and adds tools for the features it
introduced.

Upgrading: replace notebooklm-mcp@latest with
@arlinamid/notebooklm-mcp@latest in the MCP client configuration. The
notebooklm-mcp command, tool names, settings and data directory (Chrome
profile, auth state, library) are unchanged, so existing logins carry over.
The major version marks the new package and maintainer; no tool or parameter
was removed.

Verified live against notebook.google.com (EN locale) through the MCP server:
chat, citations, source scoping, every add_source type, Studio generation
(audio, mind map; quiz and report queued via "Generate later"), audio
status/download, notes → sources, configure_chat, get_usage and the
prompt templates. Deletion was verified in a dry run with all writes blocked
and then run live by the user (duplicate sources and notes removed).
Video, slide-deck, infographic and data-table generation share the verified
dialog code but were not submitted live. The MCP protocol features below were
tested with SDK 1.32 client scripts against the live site. These covered tasks
(incl. cancel and a mind-map task), cancellation, progress, roots,
elicitation, sampling, logging, subscriptions and output-schema validation.

The open bug reports against 2.0.0 in the archived upstream tracker were
re-checked against this release:

Upstream issues Problem How it was checked in 3.0.0
#114, #116 Stale answer to an earlier question Nonce test in fresh sessions on a notebook with long chat history: 3 of 3 correct
#48 Citation tooltip blocks a follow-up question Verified live
#45 Startup banner printed to stdout Banner goes to stderr; stdout carries only JSON-RPC
#76, #83, #95, #102, #107, #108, #113 Login detection on the new host Fixed (new host)
#74, #78, #84 Thinking text returned instead of the answer Fixed
#63, #85, #93, #111 Add-source dialog Fixed

Not verified, and still possible:

  • orphan Chrome processes after a failed call
    (#94);
  • BROWSER_CHANNEL=chromium login staying on about:blank
    (#112);
  • answer timeouts on very large notebooks
    (#50,
    #103);
  • Korean UI selectors
    (#69,
    #72).

Added

  • generate_studio_artifact — create any Studio output: video, slide
    deck, mind map, report, flashcards, quiz, infographic, data table (and
    audio). Fills the optional focus prompt and submits with "Generate now", or
    "Generate later" (generate_later: true, queued outside the current limit
    window). Returns the usage-meter reading from the dialog.
  • list_studio_artifacts — Studio library with type, title,
    details and status (ready | generating | scheduled).
  • get_usage — reads Settings → Usage: the rolling usage window and the
    weekly limit (percent used + reset time). Replaces the outdated
    "50 queries/day" model in all messages and descriptions.
  • configure_chat — read or set the notebook's persistent system
    instruction ("Configure Chat": goal default / learning guide / custom
    prompt, response length). Shapes every later answer on the notebook.
  • generate_audio: new optional format (deep_dive, brief,
    critique, debate), length, sources and generate_later arguments.
  • Studio options on generate_studio_artifact, mapped to language-free
    anchors (radio values, toggle positions): video/slide formats,
    infographic style/orientation/detail, flashcard & quiz count/difficulty,
    output language, and the report flow (Interactive/Document format,
    templates; a prompt is appended to the template's instructions or used
    alone for create_your_own). Unsupported option/type combinations are
    rejected before anything is clicked.
  • Source scoping (sources) for Studio jobs (per-dialog source picker)
    and for ask_question (sidebar selection, restored after the answer).
    list_sources returns stable source ids for duplicate titles.
  • MCP prompts. The server declared the prompts capability but had no
    prompts/list handler (clients got "method not found"). It now serves
    curated templates from two bundled MIT packs (Prompt Architect for
    NotebookLM, EN + HU; NotebookLM Learner Pack, topic + audience lens) and
    from user directories (NOTEBOOKLM_PROMPT_DIRS, <data dir>/prompt-packs).
    Each renders to one goal-and-contract message naming the tool to call;
    identical / near-identical templates are folded (aliases stay resolvable);
    argument completion covers lang, lens and notebook. Tools
    list_prompt_templates / get_prompt_template expose the same templates
    to clients without prompt support. scripts/import-prompt-packs.mjs
    refreshes the packs (pinned commits, licenses in
    prompts/THIRD_PARTY_NOTICES.md).
  • More source types in add_source: file (local uploads via the
    dialog's file chooser, several files per call), youtube, and several
    URLs per url call. Missing files / empty content fail fast.
  • delete_source and delete_studio_artifact (Studio outputs and
    notes) — permanent. The server asks the user for approval via MCP
    elicitation, naming the resolved entry ("Permanently delete the source
    "X"…?"); decline, dismiss or an unticked box leaves everything untouched,
    even if the caller passed confirm: true. Clients without elicitation
    support must pass confirm: true instead. Entries are addressed by id
    (list_sources, list_studio_artifacts now return ids) so identical
    titles can be told apart. Success is reported only after
    the server acknowledged the request and the entry disappeared (the UI
    removes sources optimistically even when the request fails). Verified in a
    dry run with all writes blocked: each flow reaches the delete request and
    nothing was removed.
  • Notes → sources: save_answer_as_note (latest answer or by question,
    verified against the answer text) and convert_note_to_source (one note
    or all). list_studio_artifacts now lists notes too.

MCP protocol features

Each feature is optional for the client; clients without it behave as before.

  • Tasks (experimental, spec 2025-11-25). ask_question, add_source,
    generate_audio, generate_studio_artifact, download_audio,
    save_answer_as_note and convert_note_to_source declare
    execution.taskSupport: "optional". Called as a task, the tool runs in the
    background with status messages, and supports tasks/get, tasks/result,
    tasks/cancel and tasks/list. Studio tasks complete only when the new
    item is ready in the Studio library (or straight away when queued with
    "Generate later"). This replaces the generate → poll → fetch loop.
  • Cancellation. notifications/cancelled (and tasks/cancel) stop the
    running browser work at the next wait step: answer polling, uploads, Studio
    and audio waits. The session stays usable.
  • Structured output. list_sources, list_studio_artifacts,
    get_usage and list_prompt_templates declare an outputSchema and
    return structuredContent. Failed calls carry isError: true.
  • Elicitation, in addition to the delete approval:
    • ambiguous source or Studio names open a chooser instead of failing;
    • re_auth and cleanup_data(confirm: true) ask the user before deleting
      local login and profile data;
    • generate_studio_artifact(ask_options: true) shows a form with the
      type's options, pre-filled with the given arguments.
  • Sampling. add_notebook no longer requires description and
    topics. When they are omitted, the server reads the notebook's source
    titles and the client's model proposes them through sampling. Clients
    without sampling get metadata derived from the titles. The proposal is
    returned as generated_metadata.
  • Roots. Local paths for add_source(type: "file") and download_audio
    are checked against the client's roots plus NOTEBOOKLM_FILE_ROOTS.
    NOTEBOOKLM_REQUIRE_FILE_ROOTS=true denies file access when no root is
    known. The check follows symlinks (realpath).
  • Logging. Server logs are forwarded as notifications/message. The
    default minimum level is `warni...
Read more