1What it does
A Python automation harness that drives NotebookLM's Audio Overview (the "podcast" generator) without clicking through the web app. Where the official path is manual — upload sources, open the notebook, hit generate, wait, download — this project scripts the session so an audio overview can be produced as part of a pipeline: feed it a source set, get an MP3 out the other side. It's aimed at repeatable production — daily briefings, batch-converting a reading list, generating episodes on a schedule — the jobs where the manual UI loop is the bottleneck. The repo bundles the session handling and download logic; the trade-off is that it automates a consumer UI, so it's inherently more brittle than a supported API.
2When to use it
Reach for it when audio overviews are a production artifact rather than a one-off — if you generate more than a handful a week, the manual loop stops being charming. It fits personal pipelines (reading-list → daily audio), not enterprise deployments: for a supported path, Google now ships a NotebookLM Enterprise API that generates audio overviews programmatically, and that is the right tool for anything with an SLA. Skip it if you make one overview a month, or if your flow needs customization the automation can't pass through — some Audio Overview options still live in the UI dialog and the script can only carry what it can express.
3How to get started
Clone the repo, install the Python dependencies per the README, and authenticate — the script drives a Google session, so you'll provide account credentials through the documented mechanism (browser cookie/session export is the common pattern for this class of tool). Run against a test notebook first: pass a source or notebook reference, let the pipeline generate, and confirm the MP3 lands where you expect. Expect an interactive first-run auth dance (Google sign-in, possibly 2FA) before the pipeline becomes hands-off.
4Configuration
Configuration is the session credentials plus the generation parameters the tool exposes — source selection, output path, any customization string it passes into the audio dialog. The auth material is the sensitive piece: it grants the script the same access your Google session has, so treat it like a password — local-only, never committed, expired deliberately. Because it rides the consumer UI, a NotebookLM interface change can break a selector overnight; pin to a known-good commit and test after any visible UI update before a scheduled run.
5Things to know
- UI automation, not an API — it can break on a NotebookLM front- end change with no deprecation notice; that's the price of automating a consumer surface.
- Credential handling is the risk surface — the script needs real Google access; a throwaway/test account is the sane posture for automation.
- For supported programmatic generation, the NotebookLM Enterprise API is the official route — use it where it fits; this tool exists for the gap the API doesn't cover (consumer accounts, no enterprise contract).
- Pairs naturally with a scheduler (cron + the script = a daily audio briefing from a fixed source set).
- Output lands as a standard MP3 — the pipeline hands you a file, so downstream steps (RSS feed, transcription, archive) are ordinary file plumbing.
- Generation time is the pacing constraint — an audio overview takes minutes server-side, so a batch run of ten notebooks is an hour-long job, not a ten-minute one; schedule accordingly.
- Keep the UI path as a fallback — when automation breaks on a front-end change, the manual flow still works; the tool is a convenience layer, not the only way in.
- Customization strings pass through where the UI allows it — the audio-overview "focus" field is the highest-value knob, and feeding it a source-scoped directive changes output more than any post-processing will.
6Related on the map
NotebookLM SDK
Unofficial Python SDK for consumer NotebookLM
NotebookLM Automation
Pipeline scripts for scheduled NotebookLM runs
ankiNLM
One-click CSV export from NotebookLM's flashcard panel to Anki