claude-mem 13.0.1 → 13.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codex-plugin/plugin.json +1 -1
- package/dist/npx-cli/index.js +9704 -257
- package/openclaw/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/package.json +1 -1
- package/plugin/scripts/context-generator.cjs +38 -38
- package/plugin/scripts/mcp-server.cjs +45 -45
- package/plugin/scripts/server-beta-service.cjs +479 -365
- package/plugin/scripts/worker-service.cjs +302 -302
- package/plugin/skills/wowerpoint/SKILL.md +143 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wowerpoint
|
|
3
|
+
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.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Wowerpoint
|
|
7
|
+
|
|
8
|
+
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.
|
|
9
|
+
|
|
10
|
+
## Triggers
|
|
11
|
+
|
|
12
|
+
- "Wowerpoint <file>"
|
|
13
|
+
- "Make a slide deck about <file>"
|
|
14
|
+
- "Turn this report into slides"
|
|
15
|
+
- "Kawaii-deck this"
|
|
16
|
+
|
|
17
|
+
## Setup (one-time per machine)
|
|
18
|
+
|
|
19
|
+
If `notebooklm auth check` returns 0 and `command -v jq` resolves, skip.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
uv tool install --with playwright --force notebooklm-py
|
|
23
|
+
$(uv tool dir)/notebooklm-py/bin/playwright install chromium
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`jq` is required by the workflow's JSON parsing; install if missing (`brew install jq` on macOS, or your distro's package manager).
|
|
27
|
+
|
|
28
|
+
Then the user authenticates interactively — do not script. Tell them to type `! notebooklm login` so the OAuth ENTER lands in their terminal.
|
|
29
|
+
|
|
30
|
+
## Workflow
|
|
31
|
+
|
|
32
|
+
### 1. The source doc
|
|
33
|
+
|
|
34
|
+
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.
|
|
35
|
+
|
|
36
|
+
### 2. Auth pre-flight
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
notebooklm auth check 2>&1 | tail -5
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Exit 1 with `Run 'notebooklm login' to authenticate.` = halt and tell the user.
|
|
43
|
+
|
|
44
|
+
### 3. Create notebook, add the source
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
NOTEBOOK_ID=$(notebooklm create "<title>" --json | jq -r .notebook.id)
|
|
48
|
+
SOURCE_ID=$(notebooklm source add "<doc-path>" --notebook "$NOTEBOOK_ID" --json | jq -r .source.id)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Title: H1 of the source doc, or its filename stem; append a date for dated work.
|
|
52
|
+
|
|
53
|
+
JSON envelope keys differ — `create` → `.notebook.id`, `source add` → `.source.id`, `generate` → `.task_id`. Wrong key = empty string = silent downstream failure.
|
|
54
|
+
|
|
55
|
+
### 4. Spawn the subagent
|
|
56
|
+
|
|
57
|
+
Generation takes ~10 minutes; never block on it. Use the template below with `run_in_background: true`.
|
|
58
|
+
|
|
59
|
+
### 5. End your turn
|
|
60
|
+
|
|
61
|
+
Print the notebook URL so the user can watch live:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
https://notebooklm.google.com/notebook/<NOTEBOOK_ID>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The subagent's completion notification fires when the file is on disk.
|
|
68
|
+
|
|
69
|
+
## Output path
|
|
70
|
+
|
|
71
|
+
Adjacent to the source, parallel filename:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
<source-dir>/<source-stem>-slides.pdf
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
If the source isn't somewhere that makes sense as an output location, default to `reports/<stem>-slides.pdf`.
|
|
78
|
+
|
|
79
|
+
## The prompt
|
|
80
|
+
|
|
81
|
+
One sentence. Default:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
Use kawaii characters to tell the story of <subject>. Keep it warm and clear.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
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.
|
|
88
|
+
|
|
89
|
+
## Subagent template (copy-paste, parameterize)
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
You're handling NotebookLM slide-deck generation. Work in `<repo-absolute-path>`.
|
|
93
|
+
|
|
94
|
+
Context:
|
|
95
|
+
- The `notebooklm` CLI is installed and authenticated (parent verified with `notebooklm auth check`).
|
|
96
|
+
- A notebook and source already exist.
|
|
97
|
+
|
|
98
|
+
Inputs:
|
|
99
|
+
- Notebook ID: `<NOTEBOOK_ID>`
|
|
100
|
+
- Source ID: `<SOURCE_ID>`
|
|
101
|
+
- Generation prompt: `<PROMPT>`
|
|
102
|
+
- Output path: `<OUTPUT_PATH>`
|
|
103
|
+
|
|
104
|
+
Steps:
|
|
105
|
+
|
|
106
|
+
1. Wait for source: `notebooklm source wait <SOURCE_ID> -n <NOTEBOOK_ID> --timeout 600`
|
|
107
|
+
Exit 0 = ready, 1 = error, 2 = timeout. On timeout, run `notebooklm source list -n <NOTEBOOK_ID> --json` and report status.
|
|
108
|
+
|
|
109
|
+
2. Generate: `notebooklm generate slide-deck "<PROMPT>" --format detailed --length default --notebook <NOTEBOOK_ID> --json --retry 2`
|
|
110
|
+
Parse `task_id` from the JSON (key is `task_id` at top level).
|
|
111
|
+
On `GENERATION_FAILED` or "No result found for RPC ID": sleep 300, retry once, then give up.
|
|
112
|
+
|
|
113
|
+
3. Wait for artifact: `notebooklm artifact wait <task_id> -n <NOTEBOOK_ID> --timeout 1800`
|
|
114
|
+
|
|
115
|
+
4. Download: `notebooklm download slide-deck <OUTPUT_PATH> -a <task_id> -n <NOTEBOOK_ID>`
|
|
116
|
+
|
|
117
|
+
5. Verify: `ls -la <OUTPUT_PATH>` confirms the file exists.
|
|
118
|
+
|
|
119
|
+
Report briefly (under 200 words):
|
|
120
|
+
- Final artifact ID
|
|
121
|
+
- Time per phase (source wait, generation, render wait, download)
|
|
122
|
+
- Output file path + size
|
|
123
|
+
- Any retries or warnings
|
|
124
|
+
- Exact error message if any step failed
|
|
125
|
+
|
|
126
|
+
Do NOT poll status manually. The `wait` commands handle backoff.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Failure modes
|
|
130
|
+
|
|
131
|
+
- **`pip: command not found`** — modern macOS doesn't ship pip on PATH. Use `uv tool install`.
|
|
132
|
+
- **`Playwright not installed`** — install `notebooklm-py` with `--with playwright`, then `playwright install chromium`.
|
|
133
|
+
- **`Run 'notebooklm login' to authenticate`** — only the user can complete OAuth.
|
|
134
|
+
- **`task_id` parsed as empty string** — wrong JSON envelope key. `generate` returns `{"task_id": "..."}` at top level.
|
|
135
|
+
- **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.
|
|
136
|
+
- **Source upload denied for sensitive docs** — confirm before adding sources containing credentials, customer data, or unreleased product info. NotebookLM is a Google service.
|
|
137
|
+
- **`--length long` does not exist** — only `default|short`. If the user asks for "long slides," use `default` and explain.
|
|
138
|
+
- **No `--style` flag** — kawaii lives in the prompt text.
|
|
139
|
+
|
|
140
|
+
## Operational tips
|
|
141
|
+
|
|
142
|
+
- **Rerun cheaply** — once the notebook + source exist, regenerating with a different prompt only repeats generation + download. Reuse `NOTEBOOK_ID` and `SOURCE_ID`.
|
|
143
|
+
- **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`.
|