Keeps the NotebookLM skill usable on the VPS by self-refreshing
its Google session before it expires — no human re-login needed day to day.
- What it does — loads the saved NotebookLM session into a headless Chromium
context, visits NotebookLM → Google Accounts → NotebookLM so Google rotates the
session cookies, verifies it’s still logged in, then saves the refreshed session
back to disk (permissions locked to600). - Method — storage-state round-trip (Playwright). No display, no password, no
persistent profile; it only renews an already-valid session. - Scripts —
~/.notebooklm/refresh_vps.sh(cron wrapper, logs torefresh.log)
→~/.notebooklm/refresh_vps.py(the round-trip). Session lives in
~/.notebooklm/storage_state.json(secret,600; never in git or here). - Schedule — daily 09:00 Asia/Jerusalem (cron) + a Monday 06:00 keep-alive
(notebooklm list). - Exit codes —
0refreshed ·2session expired → re-seed once from a machine
with a display (notebooklm loginon the laptop, then copy the file to the VPS) ·
1error. - Status (2026-06-14) — verified working: last run logged
REFRESH_OK, exit0. - Owner — a Jarvis-tier maintenance job; Fury
flags it in the weekly audit ifrefresh.logshows repeated non-zero exits.
Re-seed is the only manual step, and only when the session fully expires (exit
2).
The daily refresh exists precisely to keep that from happening.