NotebookLM Automation (notebooklm-py)
Operate Gemini Notebook (NotebookLM) end to end via the notebooklm-py CLI or typed async Python API — auth, sources, grounded chat, research, and artifact generation.
AutomationAdvanced★ 19,437⑂ 2,600AI score 9/10Last updated: Sep 23, 2026
What it does
- Drives the
notebooklmCLI (or the typed async Python client) to create notebooks, add sources, wait for readiness, run grounded chat, and generate/download audio, video, slide decks, infographics, reports, mind maps, data tables, quizzes, and flashcards. - Establishes reliable authentication: verify with
notebooklm auth check --test --json, prefer durable profile-backed master tokens over cookie snapshots for headless/CI use, and treat both auth files as bearer credentials. - Enforces automation invariants: always
--json, retain full UUIDs, pass-n <notebook_id>on every scoped command, and isolate concurrent agents withNOTEBOOKLM_PROFILE. - Defines authorization boundaries — deletions, share removal, logout, account-global
language set, downloads,research wait --import-all, and note-creating commands require explicit user confirmation. - Ships a read-only failure-diagnosis routine plus exit-code semantics (0/1/2), timeout handling, and rate-limit guidance.
Who it's for
- Researchers and content/data teams who want scripted NotebookLM workflows instead of manual clicking.
- Engineers building document-summary or podcast pipelines on headless servers and CI.
- Anyone running multiple agents concurrently who must keep credentials and context isolated.
Examples
- "Build a notebook from these three URLs and produce a podcast":
create→source add×3 →source wait→generate audio→artifact wait→download audio ./podcast.m4a. - "Kick off deep research on topic X":
source add-research "..." --mode deep --no-wait --json, keep the run ID, then import only when authorized withresearch wait --import-all. - "Why did that command fail?": read-only triage with
auth check --test --passive --json,source list, andartifact listbefore any state change.
· · · Install guide · · ·
Try it now, no install
Paste this into Claude to use the skill without installing anything.
Read the instructions in this file and follow them to help me: https://raw.githubusercontent.com/teng-lin/notebooklm-py/HEAD/SKILL.md What I want: (describe your task here)
If Claude can't open the link, open it yourself and paste the contents instead.
↓ If it works for you, download the ZIP below and install it. Then it runs on its own — no pasting each time.
Install in the Claude app (no terminal)
- Download the ZIP with the button below.
- In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
- Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
Install in Claude Code
Let Claude do it — paste this into Claude Code
Install the skill I found on Claude Skill Mart. Copy the SKILL.m folder from the GitHub repo teng-lin/notebooklm-py into my ~/.claude/skills/notebooklm/. When it's done, tell me in one line what this skill can do.
Install with a command instead
pip install "notebooklm-py[browser]" && notebooklm skill install⚠ This is a third-party skill. Check the source repository before installing.
- Confirm Python 3.10+:
python3 --version. - Install into your existing environment:
pip install "notebooklm-py[browser]". For CLI-only use,uv tool install "notebooklm-py[browser]"or pipx works well. If pip reportsexternally-managed-environment, avoid--break-system-packagesand use uv/pipx or a virtualenv. - Install the skill into your agent:
notebooklm skill install(in sandboxed environments, build an archive withnotebooklm skill package). - Verify installation:
notebooklm skill status --json. - Authenticate: with a display, run
notebooklm login. For unattended use,pip install "notebooklm-py[headless]", runnotebooklm login --master-token --account <email>on a trusted workstation, and deploy onlymaster_token.jsonto the target profile with mode 0600. - Validate:
notebooklm auth check --test --jsonmust returnstatus == "ok"andchecks.token_fetch == true. - Restart Claude Code and try a prompt like "list my NotebookLM notebooks" to confirm the skill triggers.
View source on GitHub ↗License: MIT