Notebooklm
/SKILLAPIs complètes pour Google NotebookLM : accès programmatique complet, y compris aux fonctionnalités non disponibles dans l'interface utilisateur Web. Création de carnets, ajout de sources, génération
name: notebooklm
description: Complete API for Google NotebookLM - full programmatic access including features not in the web UI. Create notebooks, add sources, generate all artifact types, download in multiple formats. Activates on explicit /notebooklm or intent like "create a podcast about X"
NotebookLM Automation
Complete programmatic access to Google NotebookLM—including capabilities not exposed in the web UI. Create notebooks, add sources (URLs, YouTube, PDFs, audio, video, images), chat with content, generate all artifact types, and download results in multiple formats.
Installation
From PyPI (Recommended for AI agents — Python-version-aware):
pip install "notebooklm-py[browser]" # mandatory; errors must propagate
# [cookies] (rookiepy) is optional and known to FAIL TO BUILD on Python 3.13+.
# Skip it deliberately on 3.13+ rather than swallowing the error — that lets
# *real* install failures (typos, network, PyPI outages) surface for the agent.
if python -c "import sys; sys.exit(0 if sys.version_info < (3, 13) else 1)"; then
pip install "notebooklm-py[cookies]" # errors propagate
else
echo "Skipping [cookies] on Python 3.13+ (rookiepy unavailable). Use 'notebooklm login' interactively."
fiFull install matrix (extras, headless servers, contributor flow): Installation guide on GitHub.
From GitHub (use latest release tag, NOT main branch):
# Get the latest release tag (requires curl + jq)
if ! command -v jq >/dev/null; then
echo "jq is required to read the latest release tag" >&2
exit 1
fi
LATEST_TAG=$(
curl -fsSL https://api.github.com/repos/teng-lin/notebooklm-py/releases/latest |
jq -r '.tag_name'
)
# Includes [browser] so the interactive `notebooklm login` flow works.
pip install "notebooklm-py[browser] @ git+https://github.com/teng-lin/notebooklm-py@${LATEST_TAG}"⚠️ DO NOT install from main branch (pip install git+https://github.com/teng-lin/notebooklm-py). The main branch may contain unreleased/unstable changes. Always use PyPI or a specific release tag, unless you are testing unreleased features.
Skill install methods:
notebooklm skill installinstalls this skill into the supported local agent directories managed by the CLI.npx skills add teng-lin/notebooklm-pyinstalls this skill from the GitHub repository into compatible agent skill directories.- If you are already reading this file inside an agent skill directory, the skill is already installed. You only need the Python package and authentication below.
CLI-managed install:
notebooklm skill installPrerequisites
IMPORTANT: Before using any command, you MUST authenticate:
notebooklm login # Opens browser for Google OAuth
notebooklm list # Verify authentication worksIf commands fail with authentication errors, re-run notebooklm login.
CI/CD, Multiple Accounts, and Parallel Agents
For automated environments, multiple accounts, or parallel agent workflows:
| Variable | Purpose |
|---|---|
NOTEBOOKLM_HOME | Custom config directory (default: ~/.notebooklm) |
NOTEBOOKLM_PROFILE | Active profile name (default: default) |
NOTEBOOKLM_AUTH_JSON | Inline auth JSON - no file writes needed |
CI/CD setup: Set NOTEBOOKLM_AUTH_JSON from a secret containing your storage_state.json contents.
Multiple accounts: Use named profiles (notebooklm profile create work, then notebooklm -p work login). Alternatively, use different NOTEBOOKLM_HOME directories per account.
Parallel agents: The CLI stores notebook context per profile (~/.notebooklm/profiles/<profile>/context.json, with a legacy fallback to ~/.notebooklm/context.json for the implicit default profile). Multiple concurrent agents that share a profile and use notebooklm use can overwrite each other's context — use one of the isolation strategies below.
Solutions for parallel workflows:
- Always use explicit notebook ID (recommended): Pass
-n <notebook_id>/--notebook <notebook_id>on notebook-scoped commands instead of relying onuse - Per-agent isolation via profiles:
export NOTEBOOKLM_PROFILE=agent-$ID(each profile gets its own context file) - Per-agent isolation via home: Set unique
NOTEBOOKLM_HOMEper agent:export NOTEBOOKLM_HOME=/tmp/agent-$ID - Use full UUIDs: Avoid partial IDs in automation (they can become ambiguous)
Agent Setup Verification
Before starting workflows, verify auth is in place. **Use --test --json (not bare --json)** — bare --json only proves the cookie file parses; --test makes a network call and proves the cookies still authenticate against Google.
notebooklm auth check --test --json→ require BOTH"status": "ok"AND"checks.token_fetch": true. Bare"status": "ok"(without--test) is a false-positive trap — a stale