| name | pp-notebooklm |
| description | Agent-native Gemini Notebook (NotebookLM) CLI with Chrome cookie auth, batchexecute RPC, offline notebook search, grounded chat, and Studio quiz generation. Trigger phrases: `notebooklm`, `use notebooklm-pp-cli`, `ask my notebook`, `notebooklm chat`. |
| author | Som Samantray |
| license | Apache-2.0 |
| argument-hint | <command> [args] | install cli|mcp |
| allowed-tools | Read Bash |
| metadata | {"openclaw":{"requires":{"bins":["notebooklm-pp-cli"]},"install":[{"kind":"go","bins":["notebooklm-pp-cli"],"module":"github.com/mvanhorn/printing-press-library/library/ai/notebooklm/cmd/notebooklm-pp-cli"}]}} |
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/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:
npx -y @mvanhorn/printing-press-library install notebooklm --cli-only
- Verify:
notebooklm-pp-cli --version
- Ensure the reported install directory is on
$PATH for 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.5 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 show is 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.com
notebooklm-pp-cli auth status --json โ Show whether cookies are stored locally
notebook โ Manage notebooks
notebooklm-pp-cli notebook list --json โ List recently viewed notebooks
notebooklm-pp-cli notebook create "Title" --json โ Create a notebook
notebooklm-pp-cli notebook get <id-or-title> --json โ Get notebook details and sources
notebooklm-pp-cli notebook rename <id-or-title> "New Title" --json โ Rename a notebook
notebooklm-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 notebook
notebooklm-pp-cli source add <notebook> <url> --json โ Add a URL source
notebooklm-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 question
notebooklm-pp-cli chat history <notebook> --json โ List conversation history
studio โ Studio artifacts
notebooklm-pp-cli studio list <notebook> --json โ List Studio artifacts
notebooklm-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 --db to override cache path)
search โ Search cached notebooks
notebooklm-pp-cli search <query> --json โ Search local cache (run sync first)
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