
Takes a single document and turns it into a kawaii NotebookLM slide deck, delivered as both a PDF and a mobile-optimized share link. The workflow is fully async: you kick off generation in the background (takes about 10 minutes), get a live notebook URL to watch progress, and a subagent handles the wait, download, and upload to the WOWerpoint server. The default prompt wraps your content in warm, character-driven storytelling, though you can override it. Setup requires the notebooklm-py CLI and optional environment variables for the share link. If your source document is thin, the skill will write a comprehensive one first using mem-search. One doc in, one deck out, no fuss.
$ npx -y skills add thedotmack/claude-mem --skill wowerpoint --agent claude-codeInstalls into .claude/skills of the current project.
One doc in, one deck out. Slide-deck only — videos and podcasts from the same engine are noticeably worse and out of scope; refer the user to the notebooklm CLI directly if they want those.
If notebooklm auth check returns 0 and command -v jq resolves, skip.
uv tool install --with playwright --force notebooklm-py
$(uv tool dir)/notebooklm-py/bin/playwright install chromium
jq is required by the workflow's JSON parsing; install if missing (brew install jq on macOS, or your distro's package manager).
Then the user authenticates interactively — do not script. Tell them to type ! notebooklm login so the OAuth ENTER lands in their terminal.
You need exactly one source doc. If it doesn't exist or is too thin to carry a deck, write it first — use mem-search and sequential thinking to make it comprehensive (long-form, narrative, several thousand words is normal). Do not paper over a weak source by adding more sources.
notebooklm auth check 2>&1 | tail -5
Exit 1 with Run 'notebooklm login' to authenticate. = halt and tell the user.
NOTEBOOK_ID=$(notebooklm create "<title>" --json | jq -r .notebook.id)
notebooklm source add "<doc-path>" --notebook "$NOTEBOOK_ID" --json
Title: H1 of the source doc, or its filename stem; append a date for dated work.
create returns the id at .notebook.id; a wrong key gives an empty string and a silent downstream failure.
notebooklm generate slide-deck "<PROMPT>" --format detailed --length default --notebook "$NOTEBOOK_ID" --json --retry 2
Print the notebook URL:
https://notebooklm.google.com/notebook/<NOTEBOOK_ID>
NotebookLM sends the user a notification when the deck is ready.
One sentence. Default:
Use kawaii characters to tell the story of <subject>. Keep it warm and clear.
Replace <subject> with a one-phrase description from the source doc's H1 or the user's framing. If the user supplies their own prompt, pass it through verbatim — don't expand it.
pip: command not found — modern macOS doesn't ship pip on PATH. Use uv tool install.Playwright not installed — install notebooklm-py with --with playwright, then playwright install chromium.Run 'notebooklm login' to authenticate — only the user can complete OAuth.GENERATION_FAILED or "No result found for RPC ID") — --retry 2 handles transients; persistent failure means wait 5–10 minutes or fall back to the web UI.--length long does not exist — only default|short. If the user asks for "long slides," use default and explain.--style flag — kawaii lives in the prompt text.NOTEBOOK_ID.Sponsors