Setup (one command)
Get a brand-new user from zero to a working, cited coach. The heavy lifting is in setup.sh; the
only thing you can't do for them is the two Google logins (they open a browser), so you delegate
those via the ! prefix.
Do this, in order
Run the installer's non-interactive parts with Bash (installs uv + the NotebookLM CLIs):
command -v uv >/dev/null || curl -LsSf https://astral.sh/uv/install.sh | sh export PATH="$HOME/.local/bin:$PATH" uv tool install notebooklm-mcp-cli uv tool install "notebooklm-py[browser]" uvx --from "notebooklm-py[browser]" playwright install chromiumHand the two logins to the user. You can't complete a browser login from a tool call, so tell them to paste these into the Claude Code prompt (the
!runs it in their session so the browser opens for them), one at a time, same Google account:! nlm login ! notebooklm loginWait for them to confirm. Verify with
nlm notebook list(an empty[]= logged in).Load the channel + wire the notebook by running the rest of setup:
bash setup.shIt scrapes Jeff's channel, creates the notebook, writes the id to
.notebooklm-id, loads the videos, and runs a citation test. (It skips the install/login steps you already did.) Defaults:@JeffNippard, 300 videos — ask the user if they want a different channel or are on free NotebookLM (then use 50).Confirm it's cited: show them the output of
python3 scripts/ask_cited.py "How much volume does Jeff recommend?"— real titles + quotes.Tell them what's next: "Setup's done — just say interview me and I'll build your program, citing a real Jeff video for every claim." If the
nlmlogin expires (~20 min), they re-run! nlm login.
Notes
- If
.notebooklm-idalready exists, setup is done — skip straight to the interview. - Already have data + a notebook? Don't run setup; just coach.
- Different expert: same flow, give a different channel URL, then
cp CLAUDE.md.template CLAUDE.md.