Google Workspace CLI (gws)
googleworkspace/cliA command-line tool for Drive, Gmail, Calendar, Sheets, Docs and Chat that builds its commands from Google's Discovery Service, plus about 40 thin agent skills.
Unofficial Python API, CLI and agent skill for Google's NotebookLM (now Gemini Notebook), built on undocumented endpoints.
Thorough and well tested, but unofficial, built on undocumented endpoints, and it handles Google session cookies or a master token.
notebooklm-py lets a script or an agent drive NotebookLM, which Google has rebranded as Gemini Notebook. It exposes a typed async Python API and a notebooklm command-line tool, and the SKILL.md teaches the agent to use the CLI with --json and explicit IDs. With it you can create notebooks, add sources (files, URLs, deep research), ask grounded questions with citations, and generate or download artifacts that the web UI may not expose. The README pitches a token-saving pattern: let NotebookLM do the heavy reading of many documents while the agent only orchestrates and polishes the result. Authentication is the unusual part. The library supports an interactive Playwright login (the first run downloads about 170 MB of Chromium), importing cookies from a signed-in Chrome profile, or a durable master token that can mint fresh sessions unattended. The project is large for a single skill: a 16 KB SKILL.md, hundreds of reference and script files, and over 700 test files with CI. The README is upfront that it relies on undocumented Google APIs that can break without notice.
A 16 KB SKILL.md in a repo of about 2,200 files with roughly 180 reference files, hundreds of scripts, over 700 test files and CI.
Counted from the repository file tree. How we score depth.
The SKILL.md requires Python 3.10+ and splits the package into extras, so install only what your login method needs:
pip install "notebooklm-py[browser]"
pip install "notebooklm-py[cookies]" # optional browser-cookie extraction
The [browser] extra covers the default Playwright login. [cookies] adds extraction from a signed-in browser (notebooklm login --browser-cookies chrome, or 'chrome::Profile 1' for one Chromium profile). [headless] is for master-token setups. The README also shows notebooklm login --browser msedge.
If system pip stops with externally-managed-environment, the skill tells the agent not to use --break-system-packages. For CLI-only use it suggests uv tool install "notebooklm-py[browser]" or the pipx equivalent. For application code, install into your active project environment instead. The skill also says to install from PyPI or a release tag, not an unreleased main checkout.
For agents, the repo ships a root SKILL.md that npx skills add can find, a local notebooklm skill install command for Claude Code and .agents skill directories, and an AGENTS.md for Codex. notebooklm agent show codex prints the instructions it gives each agent.
For servers and scheduled jobs, the skill prefers master-token auth over a copied cookie snapshot. You run the one-time capture on a trusted workstation, and it needs both [headless] and [browser]:
notebooklm login --master-token --account you@example.com
Then you copy master_token.json to the target machine's profile, not storage_state.json. NOTEBOOKLM_HOME sets the private base directory and NOTEBOOKLM_PROFILE picks the profile. The default path is ~/.notebooklm/profiles/default/master_token.json.
CI has one detail that is easy to get wrong. NOTEBOOKLM_MASTER_TOKEN_JSON is only a naming convention for your secret, and the package does not read it. Write the secret's exact value to the profile's master_token.json with mode 0600, unset the variable, and run notebooklm auth refresh to mint storage_state.json. With a master token next to the cookie file, the tool can re-mint expired cookies on its own. Inline NOTEBOOKLM_AUTH_JSON also works, but the skill calls it a short-lived fallback because it skips that recovery path.
The README's token-saving loop is create, then source add, then ask. Gemini does the reasoning on Google's side, and the agent only passes IDs and JSON between steps. Prompts that fit this pattern:
source add-research "your topic" --mode deep.Artifacts include Audio Overviews, videos, slide decks, quizzes, flashcards, infographics, data tables, mind maps and study guides. Downloads come out as MP3, MP4, PDF, PNG, CSV, JSON or Markdown, and you can export to Google Docs or Sheets. The skill tells the agent to use --json and explicit IDs on every call so each step can be inspected and concurrent runs stay safe.
An unofficial Python library, CLI, MCP server and skill for Google NotebookLM that authenticates with your Google session cookies, obtained by Playwright login or by reading them from your signed-in browser, and calls NotebookLM's undocumented endpoints. The package source is installed from PyPI and was not available to review; the files we have are launchers, deploy scripts, examples and CI tooling. The optional deploy can expose a full-account MCP endpoint through a tunnel, protected by a bearer token you generate.
notebooklm login opens a Playwright browser where you sign in and stores the Google session cookies in ~/.notebooklm storage_state.json; optionally (notebooklm login --browser-cookies <browser> via rookie, mainly for headless use) it extracts the cookies from your signed-in browser, and examples/refresh_browser_cookies.py can re-run that extraction via NOTEBOOKLM_REFRESH_CMD.SKILL.md:53notebooklm CLI/Python package installed from PyPI (pip install notebooklm-py[browser], extras cookies/headless/mcp); the package source (src/notebooklm) is not in the files we hold.SKILL.md:19uvx --from notebooklm-py[mcp] notebooklm-mcp, unpinned for stable bundles, and docs/SKILL.md use unpinned pip/uv installs.desktop-extension/run_server.py:131curl -LsSf https://astral.sh/uv/install.sh | sh from uv's vendor host; the repo does not run it itself.desktop-extension/run_server.py:143The repository (2226 files) on Oct 29, 2026. Not a full review: 2104 of 2226 files were not downloaded (large repository; we reviewed the skill folders); we read 6 of 65 code files; it relies on code outside the repository: notebooklm-py package source (src/notebooklm: auth, cookie extraction, RPC client, CLI, MCP server) installed from PyPI; Playwright/Chromium, rookie (browser cookie reader), uv, Docker images, Cloudflare/Tailscale tunnels; About 2,100 repo files (library source, docs, workflows, cassettes) are not in our copy, and 59 of the 65 listed code files (scripts/, tests/, other examples) were only pattern-searched, not read.
NVIDIA SkillSpector static scan: 201 pattern hits (Privilege Escalation 40, Dangerous Code Execution 32, Excessive Agency 27, Data Exfiltration 12, Anti-Refusal 12, Rogue Agent 12). The 'info_stealer' YARA hits and credential hits are README, CHANGELOG and docs passages describing the tool's own documented cookie-import and login flows. SSRF/metadata strings and '/etc/passwd' are changelog notes about hardening; 'curl | sh' is the uv installer line in docs.
A review, not a certification. Skills change after we check them — read the files before installing.
MIT — commercial use allowed. Use of the underlying Google service is subject to Google's terms.
Yes. Master-token auth and an auth refresh command are designed for cron or systemd keepalive, so scripted notebook jobs can run unattended.
A command-line tool for Drive, Gmail, Calendar, Sheets, Docs and Chat that builds its commands from Google's Discovery Service, plus about 40 thin agent skills.
A single research skill with an 8-phase pipeline, parallel search, source scoring, claim and citation checks, and report output in Markdown, HTML and PDF.
Academic research plugin with 15 skills; literature reviews check citations and quotes against OpenAlex, arXiv and Europe PMC.
notebooklm-py is an unofficial Python library, CLI and agent skill that gives programmatic access to Google's NotebookLM, now called Gemini Notebook. It uses undocumented APIs, so features can change or break.
Install the package with pip, preferably inside a virtualenv, then run notebooklm login. The first login downloads Chromium and opens a Google sign-in. The README also describes installing the agent skill so Claude Code or Codex can call the CLI.
The code is open and well tested, but it authenticates as you with browser cookies or a master token. Use a dedicated Google account, protect the profile directory, and expect Google could change or restrict the endpoints.
No. The README states it is not affiliated with Google and recommends it for prototypes, research and personal projects.
The troubleshooting docs attribute this to Google detecting automation. The first step they list is deleting the browser profile at ~/.notebooklm/profiles/<profile>/browser_profile/ and then signing in again.
Run pip uninstall notebooklm-py. If you also want to delete stored auth state, including cookies and any master token, remove the ~/.notebooklm directory.
Not by default. According to the changelog, localhost, 127.0.0.1, RFC-1918 hosts and the 169.254.169.254 metadata address are rejected unless you pass the --allow-internal flag.