Turn one document into a kawaii NotebookLM slide deck. Use for "wowerpoint this", "make a deck about <file>", "turn this report into slides", or any request to render a single document as narrative slides.
One doc in, one NotebookLM slide deck started. 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)
Title: H1 of the source doc, or its filename stem; append a date for dated work.
SOURCE_ID=$(notebooklm source add "<doc-path>" --notebook "$NOTEBOOK_ID" --json | jq -r .source.id)
The JSON envelope keys are create → .notebook.id and source add → .source.id. A wrong key produces an empty string and a silent downstream failure.
notebooklm source wait <SOURCE_ID> -n <NOTEBOOK_ID> --timeout 600
notebooklm generate slide-deck "<PROMPT>" --format detailed --length default --notebook <NOTEBOOK_ID> --json --retry 2
After starting generation, print:
https://notebooklm.google.com/notebook/<NOTEBOOK_ID>
Then end the turn.
Adjacent to the source, parallel filename:
<source-dir>/<source-stem>-slides.pdf
If the source isn't somewhere that makes sense as an output location, default to reports/<stem>-slides.pdf.
Only if the user later explicitly asks for the PDF, use the output path above:
notebooklm artifact list -n <NOTEBOOK_ID>
notebooklm artifact wait <artifact_id> -n <NOTEBOOK_ID> --timeout 1800
notebooklm download slide-deck "<OUTPUT_PATH>" -a <artifact_id> -n <NOTEBOOK_ID>
The deck may still be generating, so always wait on the artifact before downloading.
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. If it still fails, report the error and end the turn; retry or use the web UI only on a later user request.--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 and SOURCE_ID.Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/wowerpoint · pinned to the source commit
# Run from your project root
git clone https://github.com/thedotmack/claude-mem.git .skillboard-tmp
git -C .skillboard-tmp checkout b85cd123daf8e5bd59edb2d1c7b98e0bba28b3a0
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/plugin/skills/wowerpoint" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/thedotmack/claude-mem.git .skillboard-tmp
git -C .skillboard-tmp checkout b85cd123daf8e5bd59edb2d1c7b98e0bba28b3a0
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/plugin/skills/wowerpoint" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/wowerpoint
Scanner static-checks@0.1.0 · commit b85cd123daf8. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
Instructs shell/process/package operations that run commands on the host.
Evidence: brew install· fingerprint 1317bb7493250e7f