Gemini Notebook (NotebookLM) — Printing Press CLI
Prerequisites: Install the CLI
This skill drives the notebooklm-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
- Install via the Printing Press installer. It defaults binaries to
$HOME/.local/binon macOS/Linux and%LOCALAPPDATA%\Programs\PrintingPress\binon Windows:npx -y @mvanhorn/printing-press-library install notebooklm --cli-only - Verify:
notebooklm-pp-cli --version - Ensure the reported install directory is on
$PATHfor the agent/runtime that will invoke this skill.
If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer). This installs into $GOPATH/bin (default $HOME/go/bin), so add that directory to $PATH instead:
go install github.com/mvanhorn/printing-press-library/library/ai/notebooklm/cmd/notebooklm-pp-cli@latest
If --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
When to Use This CLI
Use this CLI to manage Gemini Notebook projects from the terminal: list/create notebooks, add URL sources, ask grounded questions with citations, generate Studio quizzes, cache notebooks locally for search, and run health checks before agent loops. There is no official API key — authenticate once with Chrome session cookies.
Anti-triggers
Do not use this CLI for:
- Official Google-supported NotebookLM APIs (none exist publicly)
- Bulk scraping outside your own notebooks
- Sharing mutation workflows (only
share showis implemented)
Unique Capabilities
These capabilities aren't available in any other tool for this API.
Auth
auth login— Import Google session cookies from Chrome without manual DevTools copying.Use once after logging into Google in Chrome to enable all live commands.
notebooklm-pp-cli auth login --chrome
Local cache
search— Search synced notebooks locally by title or id without another API round-trip.Use when you need fast recall across many notebooks in scripts.
notebooklm-pp-cli sync --json && notebooklm-pp-cli search "quarterly" --json
Chat
chat ask— Ask questions against notebook sources via streamed batchexecute RPC.Use for agent loops that need cited answers from uploaded sources.
notebooklm-pp-cli chat ask "Research" "What are the main themes?" --json
Studio
studio generate-quiz— Kick off NotebookLM Studio quiz artifact generation and optionally wait for completion.Use to produce study materials from a notebook's sources.
notebooklm-pp-cli studio generate-quiz "Research" --wait --json
Operations
doctor— Validate config, cookie presence, and session bootstrap tokens before live calls.Run after auth login or when list commands return empty results.
notebooklm-pp-cli doctor --json
Command Reference
auth — Manage Google session authentication
notebooklm-pp-cli auth login --chrome— Import cookies from Chrome for.google.comnotebooklm-pp-cli auth status --json— Show whether cookies are stored locally
notebook — Manage notebooks
notebooklm-pp-cli notebook list --json— List recently viewed notebooksnotebooklm-pp-cli notebook create "Title" --json— Create a notebooknotebooklm-pp-cli notebook get <id-or-title> --json— Get notebook details and sourcesnotebooklm-pp-cli notebook rename <id-or-title> "New Title" --json— Rename a notebooknotebooklm-pp-cli notebook delete <id-or-title> --json— Delete a notebook
source — Manage notebook sources
notebooklm-pp-cli source list <notebook> --json— List sources in a notebooknotebooklm-pp-cli source add <notebook> <url> --json— Add a URL sourcenotebooklm-pp-cli source delete <notebook> <source-id> --json— Delete a source
chat — Chat with a notebook
notebooklm-pp-cli chat ask <notebook> <question> --json— Ask a grounded questionnotebooklm-pp-cli chat history <notebook> --json— List conversation history
studio — Studio artifacts
notebooklm-pp-cli studio list <notebook> --json— List Studio artifactsnotebooklm-pp-cli studio generate-quiz <notebook> --wait --json— Generate a quiz artifact
share — Notebook sharing
notebooklm-pp-cli share show <notebook> --json— Get sharing status
sync — Refresh local notebook cache
notebooklm-pp-cli sync --json— Sync notebooks to SQLite (use--dbto override cache path)
search — Search cached notebooks
notebooklm-pp-cli search <query> --json— Search local cache (runsyncfirst)
whoami — Show account tier and output language
notebooklm-pp-cli whoami --json
doctor — Health check
notebooklm-pp-cli doctor --json
Recipes
Create notebook and add a URL source
notebooklm-pp-cli notebook create "Agent Research" --json && notebooklm-pp-cli source add "Agent Research" https://en.wikipedia.org/wiki/NotebookLM --json
Bootstrap a fresh notebook with a public web source.
Search cached notebooks
notebooklm-pp-cli search "research" --json
Find notebooks by title after running sync.
Troubleshooting
| Symptom | Fix |
|---|---|
not authenticated |
notebooklm-pp-cli auth login --chrome |
Empty notebook list or null result |
Re-login in Chrome; run doctor --json |
search returns nothing |
Run sync --json first |
Global flags
--json— machine-readable JSON on stdout--dry-run— skip live API calls (for CI and verify)--agent— agent-friendly defaults (--json --no-input --yes)--config— alternate config path