
Notebooklm
Configure and automate Google NotebookLM notebooks, auth, and read-only E2E fixtures for agent-driven research workflows.
Overview
NotebookLM is an agent skill most often used in Idea (also Validate, Build) that configures notebooklm-py auth and notebook IDs for automated Google NotebookLM research and E2E operations.
Install
npx skills add https://github.com/teng-lin/notebooklm-py --skill notebooklmWhat is this skill?
- Environment-driven config for NOTEBOOKLM_HOME and CI auth via NOTEBOOKLM_AUTH_JSON
- Read-only test notebook ID pattern for safe list/get/download E2E flows
- Optional generation notebook auto-provisioning across test runs
- RPC debug logging toggle for integration troubleshooting
- notebooklm-py client alignment for scripted NotebookLM operations
Adoption & trust: 5.2k installs on skills.sh; 16.1k GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want agents to use NotebookLM programmatically but lack a documented auth and notebook ID setup for local and CI runs.
Who is it for?
Solo builders scripting NotebookLM via Python for research notebooks, artifact downloads, or integration tests.
Skip if: Builders not using Google NotebookLM, or teams that forbid storing browser auth state even in CI secrets.
When should I use this skill?
Configuring notebooklm-py environment variables, CI authentication JSON, read-only or generation notebook IDs, or RPC debug for NotebookLM automation.
What do I get? / Deliverables
You get a repeatable .env-style configuration for home paths, auth JSON, debug RPC, and read-only versus generation notebooks for safe automation.
- .env configuration for NotebookLM client
- Documented read-only and optional generation notebook IDs for E2E
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
NotebookLM is where many solo builders gather sources first, even though the Python client is maintained during Build integrations. Listing notebooks, sources, and artifacts supports discovery and synthesis before you commit to a product scope.
Where it fits
Point agents at a read-only notebook to summarize competitor URLs already ingested in NotebookLM.
Reuse a generation test notebook to prototype Q&A against your landing-page research corpus.
Wire NOTEBOOKLM_HOME and auth JSON so CI can run list/get/download tests without manual login.
How it compares
Python client configuration skill—not NotebookLM’s web UI and not a generic RAG vector database integration.
Common Questions / FAQ
Who is notebooklm for?
Developers using notebooklm-py who need agent-friendly setup for NotebookLM authentication, notebook IDs, and E2E test notebooks.
When should I use notebooklm?
In Idea research when consolidating sources in NotebookLM; in Validate when prototyping against a fixed notebook; in Build integrations when wiring the Python client and CI auth.
Is notebooklm safe to install?
It involves network access and cookie-based auth—review the Security Audits panel on this page and never commit NOTEBOOKLM_AUTH_JSON to a public repo.
SKILL.md
READMESKILL.md - Notebooklm
# NotebookLM Configuration # Copy this file to .env and fill in your values # ============================================================================= # Configuration Environment Variables # ============================================================================= # Custom home directory for all config files (optional) # Default: ~/.notebooklm # NOTEBOOKLM_HOME=/custom/path # Inline authentication JSON for CI/CD (optional) # When set, authentication is read from this variable instead of a file # Get the value from: cat $NOTEBOOKLM_HOME/storage_state.json (default: ~/.notebooklm) # NOTEBOOKLM_AUTH_JSON='{"cookies":[...]}' # Enable RPC debug logging (optional) # NOTEBOOKLM_DEBUG_RPC=1 # ============================================================================= # E2E Testing Configuration # ============================================================================= # Required for E2E tests: Your READ-ONLY test notebook ID # Create a notebook at https://notebooklm.google.com with: # - Multiple sources (text, URL, PDF, etc.) # - Some pre-generated artifacts (audio, quiz, etc.) # Copy the notebook ID from the URL: notebooklm.google.com/notebook/YOUR_ID # This notebook is used for READ-ONLY tests (list, get, download operations) NOTEBOOKLM_READ_ONLY_NOTEBOOK_ID=your-notebook-id-here # Optional: Generation test notebook ID # If not set, a notebook will be auto-created and its ID stored in # NOTEBOOKLM_HOME/generation_notebook_id for reuse across test runs. # NOTEBOOKLM_GENERATION_NOTEBOOK_ID=your-generation-notebook-id --- name: Bug Report about: Report a bug in notebooklm-py title: "" labels: bug assignees: "" --- ## Description A clear description of the bug. ## Steps to Reproduce 1. ... 2. ... 3. ... ## Expected Behavior What you expected to happen. ## Actual Behavior What actually happened. Include the full error message or traceback if applicable. ```text Paste error output here ``` ## Environment - OS: (e.g., macOS 15, Ubuntu 24.04, Windows 11) - Python version: (e.g., 3.12) - notebooklm-py version: (run `notebooklm --version`) - Install method: (pip, uv, pipx) ## Debug Output If applicable, run the failing command with `-vv` for verbose logging and paste the relevant output: ```bash notebooklm -vv <your-command-here> ``` ## Checklist - [ ] I verified this bug exists on the latest version of notebooklm-py - [ ] I searched existing issues and this is not a duplicate version: 2 updates: - package-ecosystem: "pip" directory: "/" schedule: interval: "weekly" open-pull-requests-limit: 5 groups: dev-dependencies: patterns: - "pytest*" - "mypy" - "ruff" - "vcrpy" commit-message: prefix: "deps" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" # Group all GitHub Actions updates into a single PR per week. Each PR # touches multiple ``uses:`` lines, so grouping reduces review noise and # keeps SHA-pinned third-party actions (publish/testpypi/claude/rpc-health # /nightly/verify-package) moving together with their first-party # ``actions/*`` peers. See ``scripts/check_action_pinning.py`` for the # invariant Dependabot must keep honoring. groups: actions: patterns: - "*" commit-message: prefix: "ci" ## Summary Brief description of the changes. ## Related Issue Closes #<issue_number> ## Changes - ... ## Test Plan - [ ] I tested these changes locally - [ ] Tests pass (`pytest`) - [ ] Linting passes (`ruff check .`) - [ ] Formatting passes (`ruff format --check .`) - [ ] Type checking passes (`mypy src/notebooklm --ignore-missing-imports`) - [ ] If this PR changes architectural shape, an ADR has been added or updated. ## Notes Any additional context, trade-offs, or design decisions. blank_issues_enabled: false name: CodeQL on: push: branches: [main] pull_request: branches: [mai