Agent skill

Wowerpoint Slide Decks

by thedotmack in thedotmack/claude-mem

Renders a single source document as a narrative slide-deck PDF through NotebookLM, saved beside the original file for sharing.

Apache-2.0Auto-check passedDocuments & Office

Install Wowerpoint Slide Decks

skills CLI
$ npx skills add thedotmack/claude-mem --skill wowerpoint -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install thedotmack/claude-mem wowerpoint --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/thedotmack/claude-mem.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugin/skills/wowerpoint .claude/skills/wowerpoint && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
wowerpoint
GitHub stars
99k
Token cost
~2.2k tokens
SKILL.md length
573 words
Files
1
Skills in repo
26
Repo updated
First seen
Licence
Apache-2.0

At a glance

Renders a single source document as a narrative slide-deck PDF through NotebookLM, saved beside the original file for sharing.

  • Works in 5 steps: The source doc → Auth pre-flight → Create notebook, add the source → …
  • Turning a finished report into a shareable slide-deck PDF
  • SKILL.md covers Triggers, Setup (one-time per machine), Workflow and Output path, plus 3 more sections
  • Calls jq, uv and curl; reaches notebooklm.google.com; needs WOWERPOINT_UPLOAD_TOKEN

What it does

You hand the agent one document and get one PDF back. The agent creates a NotebookLM notebook with the `notebooklm` command-line tool, adds the document as the only source, and passes the slow generation step to a background subagent, because rendering takes roughly 10 minutes. It ends its turn by printing the notebook address so you can watch progress.

If the source document is missing or too short to carry a deck, the agent is told to write a long, narrative version first rather than pad the notebook with extra sources. The PDF is named after the source with a -slides suffix and placed in the same folder, falling back to a reports folder. Only slide decks are covered; videos and podcasts are left to the CLI itself. Setup needs `notebooklm-py`, Playwright Chromium and `jq`, plus a login you complete yourself in your own terminal.

When your agent uses it

  • Turning a finished report into a shareable slide-deck PDF
  • Presenting one long markdown document as a narrative deck without building slides by hand
  • Producing a visual summary of a design doc or research write-up for people who will not read it in full

Example prompts

  • “Wowerpoint reports/q3-review.md”
  • “Turn docs/architecture-overview.md into slides I can send to the team.”
  • “Make a slide deck about notes/launch-plan.md and put the PDF next to it.”

Requirements

  • The `notebooklm` CLI (`notebooklm-py`), installed with `uv`
  • Playwright with Chromium
  • `jq`
  • An interactive `notebooklm login` that you run yourself

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. The source doc
  2. Auth pre-flight
  3. Create notebook, add the source
  4. Spawn the subagent
  5. End your turn

What it can do on your machine

Read from SKILL.md and the folder at commit fa8ab09. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • jq
    • uv
    • curl
    • brew

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • notebooklm.google.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • WOWERPOINT_UPLOAD_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Wowerpoint Slide Decks loads about 2.2k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 573 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~58
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from thedotmack/claude-mem at commit fa8ab09, republished under its Apache-2.0 licence (© thedotmack). 573 words, ~2,207 tokens.

Download SKILL.mdSave it as .claude/skills/wowerpoint/SKILL.md (or your agent's skills folder).
name
wowerpoint
description
Turn one document into a kawaii NotebookLM slide-deck PDF. Use for "wowerpoint this", "make a deck about <file>", "turn this report into slides", or any request to render a single document as shareable narrative slides.

Wowerpoint

One doc in, one PDF 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.

Triggers

  • "Wowerpoint <file>"
  • "Make a slide deck about <file>"
  • "Turn this report into slides"
  • "Kawaii-deck this"

Setup (one-time per machine)

If notebooklm auth check returns 0 and command -v jq resolves, skip.

bash
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.

Workflow

1. The source doc

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.

2. Auth pre-flight
bash
notebooklm auth check 2>&1 | tail -5

Exit 1 with Run 'notebooklm login' to authenticate. = halt and tell the user.

3. Create notebook, add the source
bash
NOTEBOOK_ID=$(notebooklm create "<title>" --json | jq -r .notebook.id)
SOURCE_ID=$(notebooklm source add "<doc-path>" --notebook "$NOTEBOOK_ID" --json | jq -r .source.id)

Title: H1 of the source doc, or its filename stem; append a date for dated work.

JSON envelope keys differ — create → .notebook.id, source add → .source.id, generate → .task_id. Wrong key = empty string = silent downstream failure.

4. Spawn the subagent

Generation takes ~10 minutes; never block on it. Use the template below with run_in_background: true.

5. End your turn

Print the notebook URL so the user can watch live:

text
https://notebooklm.google.com/notebook/<NOTEBOOK_ID>

The subagent's completion notification fires when the file is on disk.

Output path

Adjacent to the source, parallel filename:

text
<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.

Show full SKILL.md (287 more words)Show less

After the PDF lands on disk, the subagent also POSTs it to the WOWerpoint Server, which converts the 16:9 deck into a 9:16 mobile twin and returns a share URL. The share URL is the primary deliverable to the user; the PDF on disk is the backup.

Required env (exported in the user's shell — the subagent inherits the parent's environment, so plain export is enough; no dotenv loader runs):

bash
WOWERPOINT_API_BASE=https://wowerpoint-api.<subdomain>.workers.dev
WOWERPOINT_VIEWER_BASE=https://wowerpoint-viewer.<subdomain>.workers.dev
WOWERPOINT_UPLOAD_TOKEN=<token>

If any var is missing, skip the share-link step and just hand the PDF over.

Upload pattern (run AFTER the subagent confirms the PDF exists on disk). Capture the full response so empty id and error payloads are handled — jq -r '.id' returns the literal string null on a missing key, so always pipe through .id // empty:

bash
if [ -n "$WOWERPOINT_API_BASE" ] && [ -n "$WOWERPOINT_UPLOAD_TOKEN" ] && [ -n "$WOWERPOINT_VIEWER_BASE" ]; then
  UPLOAD_JSON=$(curl -sS --connect-timeout 10 --max-time 30 -X POST "$WOWERPOINT_API_BASE/api/decks" \
    -H "Authorization: Bearer $WOWERPOINT_UPLOAD_TOKEN" \
    -F "file=@<OUTPUT_PATH>" \
    -F "title=<TITLE>")
  DECK_ID=$(printf '%s' "$UPLOAD_JSON" | jq -r '.id // empty')
  API_ERROR=$(printf '%s' "$UPLOAD_JSON" | jq -r '.error // empty')
  if [ -n "$API_ERROR" ] || [ -z "$DECK_ID" ]; then
    echo "WOWerpoint upload warning: ${API_ERROR:-missing id}"
  else
    echo "Share URL: $WOWERPOINT_VIEWER_BASE/$DECK_ID"
  fi
fi

The returned id is a kebab-case slug derived from the title with a random creature suffix (e.g. tokenrouter-quest-hawk, or velvet-comet-tiger if the title is empty or non-ASCII). The share URL is:

text
$WOWERPOINT_VIEWER_BASE/<id>

It works immediately (shows a "still converting…" page that auto-reloads when ready). Conversion takes ~1–2 min per slide. Print the share URL in your final response.

The prompt

One sentence. Default:

text
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.

Subagent template (copy-paste, parameterize)

text
You're handling NotebookLM slide-deck generation. Work in `<repo-absolute-path>`.

Context:
- The `notebooklm` CLI is installed and authenticated (parent verified with `notebooklm auth check`).
- A notebook and source already exist.

Inputs:
- Notebook ID: `<NOTEBOOK_ID>`
- Source ID: `<SOURCE_ID>`
- Generation prompt: `<PROMPT>`
- Output path: `<OUTPUT_PATH>`
- Deck title: `<TITLE>` (the notebook title, used by the share-link step)

Steps:

1. Wait for source: `notebooklm source wait <SOURCE_ID> -n <NOTEBOOK_ID> --timeout 600`
   Exit 0 = ready, 1 = error, 2 = timeout. On timeout, run `notebooklm source list -n <NOTEBOOK_ID> --json` and report status.

2. Generate: `notebooklm generate slide-deck "<PROMPT>" --format detailed --length default --notebook <NOTEBOOK_ID> --json --retry 2`
   Parse `task_id` from the JSON (key is `task_id` at top level).
   On `GENERATION_FAILED` or "No result found for RPC ID": sleep 300, retry once, then give up.

3. Wait for artifact: `notebooklm artifact wait <task_id> -n <NOTEBOOK_ID> --timeout 1800`

4. Download: `notebooklm download slide-deck <OUTPUT_PATH> -a <task_id> -n <NOTEBOOK_ID>`

5. Verify: `ls -la <OUTPUT_PATH>` confirms the file exists.

6. Upload to WOWerpoint Server for a mobile share link. Skip silently if any of `WOWERPOINT_API_BASE`, `WOWERPOINT_UPLOAD_TOKEN`, or `WOWERPOINT_VIEWER_BASE` is unset. Otherwise:

   ```bash
   if [ -n "$WOWERPOINT_API_BASE" ] && [ -n "$WOWERPOINT_UPLOAD_TOKEN" ] && [ -n "$WOWERPOINT_VIEWER_BASE" ]; then
     UPLOAD_JSON=$(curl -sS --connect-timeout 10 --max-time 30 -X POST "$WOWERPOINT_API_BASE/api/decks" \
       -H "Authorization: Bearer $WOWERPOINT_UPLOAD_TOKEN" \
       -F "file=@<OUTPUT_PATH>" \
       -F "title=<TITLE>")
     DECK_ID=$(printf '%s' "$UPLOAD_JSON" | jq -r '.id // empty')
     API_ERROR=$(printf '%s' "$UPLOAD_JSON" | jq -r '.error // empty')
     if [ -n "$API_ERROR" ] || [ -z "$DECK_ID" ]; then
       echo "WOWerpoint upload warning: ${API_ERROR:-missing id}"
     else
       echo "Share URL: $WOWERPOINT_VIEWER_BASE/$DECK_ID"
     fi
   fi

On warning, the PDF on disk is still a valid deliverable — do not retry the upload.

Report briefly (under 200 words):

  • Final artifact ID
  • Time per phase (source wait, generation, render wait, download)
  • Output file path + size
  • Share URL (if produced)
  • Any retries or warnings
  • Exact error message if any step failed

Do NOT poll status manually. The wait commands handle backoff.


## Failure modes

- **`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.
- **`task_id` parsed as empty string** — wrong JSON envelope key. `generate` returns `{"task_id": "..."}` at top level.
- **Rate-limit (`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.
- **Source upload denied for sensitive docs** — confirm before adding sources containing credentials, customer data, or unreleased product info. NotebookLM is a Google service.
- **`--length long` does not exist** — only `default|short`. If the user asks for "long slides," use `default` and explain.
- **No `--style` flag** — kawaii lives in the prompt text.

## Operational tips

- **Rerun cheaply** — once the notebook + source exist, regenerating with a different prompt only repeats generation + download. Reuse `NOTEBOOK_ID` and `SOURCE_ID`.
- **Web UI fallback** — if generation is rate-limited >30 minutes, open the notebook URL, trigger generation in the UI, then `notebooklm artifact list -n <NOTEBOOK_ID>` and `download`.

© thedotmack, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugin/skills/wowerpoint of thedotmack/claude-mem.

Open the folder on GitHubat commit fa8ab09

Compare with similar skills

Wowerpoint Slide Decks next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Wowerpoint Slide Decks compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Wowerpoint Slide Decks this skillthedotmack/claude-mem99k—~2.2kAutomated safety check: PassApache-2.0
Obsidian Canvas ExportAgriciDaniel/claude-canvas300—~1.2kAutomated safety check: PassMIT
Huashu Markdown Publishing Pipelinealchaincyf/huashu-md-html907—~4.8kAutomated safety check: PassMIT
Paper Deckzsyggg/paper-craft-skills1.3k—~1.4kAutomated safety check: PassNone
Paper2slidesQuZhan51496/paper2anything469—~3.8kAutomated safety check: NotesApache-2.0
Li CarouselJakeschincariol/linkedin-agent-skill1.6k—~715Automated safety check: PassMIT

Similar skills

  • Obsidian Canvas Export

    AgriciDaniel/claude-canvas

    Exports Obsidian Canvas files to PNG, SVG or PDF, using the Advanced Canvas plugin when Obsidian is open and falling back to a Playwright screenshot.

    300 GitHub stars~1.2k tokensUpdated 6 mo ago
    Documents & OfficeAuto-check passed
  • Huashu Markdown Publishing Pipeline

    alchaincyf/huashu-md-html

    Converts files and web pages into clean Markdown, then turns Markdown into polished HTML, Word, PDF and EPUB using four templates.

    907 GitHub stars~4.8k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed
  • Paper Deck

    zsyggg/paper-craft-skills

    将论文、技术文章或知识内容制作成高真实感的 AIGC 幻灯片。先做叙事结构和逐页视觉导演,再调用生图模型生成每一页 16:9 slide image,最后合成为 PPTX/PDF。适合论文汇报、组会、公开课、技术分享、商业化研究展示;当用户提到“论文PPT”“AI生成PPT”“不像AI的PPT”“高质感幻灯片”“逐页生图PPT”时使用。

    1.3k GitHub stars~1.4k tokensUpdated 4 mo ago
    Documents & OfficeAuto-check passed
  • Paper2slides

    QuZhan51496/paper2anything

    Turn an academic paper PDF into a presentation deck (.pptx) end-to-end.

    469 GitHub stars~3.8k tokensUpdated 2 mo ago
    Documents & OfficeAuto-check: notes
  • Li Carousel

    Jakeschincariol/linkedin-agent-skill

    Build a LinkedIn document post (carousel) - slide-by-slide copy, the cover that earns the swipe, and the PDF to upload.

    1.6k GitHub stars~715 tokensUpdated 22 days ago
    Documents & OfficeAuto-check passed
  • PDF Translate

    lxsssssss/pdf-translate

    A skill your agent uses when translating PDF documents between languages while strictly preserving original layout, formatting, typography, tables, and signatures.

    102 GitHub stars~1.6k tokensUpdated yesterday
    Documents & OfficeAuto-check passed

More from thedotmack/claude-mem

All 26 skills in this repo
  • Walks you through creating, installing and verifying a custom claude-mem mode, including note types, tags and optional Telegram alerts for chosen memories.

    99k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Pull Request Babysitter

    thedotmack/claude-mem

    Keeps watching a pull request, fixing real review and CI problems and resolving stale threads, until it is clean and ready to merge.

    99k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Claude-Mem Install for Grok Bot

    thedotmack/claude-mem

    Use this when setting up claude-mem on Grok Bot: local worker plus CMEM Pro observer (default), optional host-login observer, or remote cmem.ai. No Cursor…

    99k GitHub stars~440 tokensUpdated today
    Auto-check passed
  • Claude-Mem Cloud Sync

    thedotmack/claude-mem

    Checks claude-mem cloud sync status and guides you through connecting a cmem.ai Pro account without the sync token ever passing through the chat.

    99k GitHub stars~1k tokensUpdated today
    Auto-check: notes
  • Audits a design against Dieter Rams' ten principles of good design, scores each with evidence, and hands off a make-plan prompt for a new, refined or redesigned outcome.

    99k GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Session Handoff Document

    thedotmack/claude-mem

    Writes a HANDOFF.md capturing goal, state, files, failed attempts and next steps so a fresh agent session can continue exactly where this one stopped.

    99k GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Questions about Wowerpoint Slide Decks

What does Wowerpoint Slide Decks do?

Renders a single source document as a narrative slide-deck PDF through NotebookLM, saved beside the original file for sharing. You hand the agent one document and get one PDF back. The agent creates a NotebookLM notebook with the `notebooklm` command-line tool, adds the document as the only source, and passes the slow generation step to a background subagent, because rendering takes roughly 10 minutes.

When should I use Wowerpoint Slide Decks?

Wowerpoint Slide Decks fits situations like: turning a finished report into a shareable slide-deck PDF; presenting one long markdown document as a narrative deck without building slides by hand; producing a visual summary of a design doc or research write-up for people who will not read it in full.

How do I install Wowerpoint Slide Decks in Claude Code?

Run `npx skills add thedotmack/claude-mem --skill wowerpoint -a claude-code`. Or copy the skill folder (plugin/skills/wowerpoint in thedotmack/claude-mem) into .claude/skills/wowerpoint in your project. Claude Code loads it when a task matches its description.

How do I install Wowerpoint Slide Decks in Codex?

Run `npx skills add thedotmack/claude-mem --skill wowerpoint -a codex`. Or copy the skill folder (plugin/skills/wowerpoint in thedotmack/claude-mem) into .agents/skills/wowerpoint in your project. Codex loads it when a task matches its description.

Can I use Wowerpoint Slide Decks in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add thedotmack/claude-mem --skill wowerpoint -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wowerpoint, .gemini/skills/wowerpoint, .github/skills/wowerpoint and .opencode/skills/wowerpoint in your project.

What does Wowerpoint Slide Decks need to run?

Going by SKILL.md and its folder, Wowerpoint Slide Decks needs the command-line tools its instructions call (jq, uv, curl and brew) and credentials named WOWERPOINT_UPLOAD_TOKEN. Our summary lists: The `notebooklm` CLI (`notebooklm-py`), installed with `uv`; Playwright with Chromium; `jq`; An interactive `notebooklm login` that you run yourself.

Does Wowerpoint Slide Decks access the network?

SKILL.md names 1 domain. In commands or code: notebooklm.google.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Wowerpoint Slide Decks safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Wowerpoint Slide Decks use?

Wowerpoint Slide Decks is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Wowerpoint Slide Decks use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Wowerpoint Slide Decks?

Skills that share tags, products or a category with Wowerpoint Slide Decks: Obsidian Canvas Export (AgriciDaniel/claude-canvas, 300 stars), Huashu Markdown Publishing Pipeline (alchaincyf/huashu-md-html, 907 stars), Paper Deck (zsyggg/paper-craft-skills, 1.3k stars) and Paper2slides (QuZhan51496/paper2anything, 469 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Wowerpoint Slide Decks?

thedotmack (a GitHub user) maintains it in thedotmack/claude-mem, which has 98,732 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on October 9, 2026.

Source: thedotmack/claude-mem on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.