@roomi-fields/notebooklm-mcp 1.7.0 → 1.7.2
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/README.md +13 -1
- package/package.json +3 -1
- package/scripts/sync-version.mjs +95 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Automate Google NotebookLM at scale. 33-endpoint HTTP REST API for n8n / Zapier / Make / curl, plus an MCP server for Claude Code / Cursor / Codex. Citation-backed Q&A, full Studio generation (audio · video · infographic · report · presentation · data table), multi-account rotation with auto-reauth.**
|
|
6
6
|
|
|
7
|
-
> v1.7.
|
|
7
|
+
> v1.7.2 — production-grade, batch-tested on overnight runs of 1 000+ questions. New: `batch_to_vault` is now a first-class MCP tool (no HTTP server required) on top of the existing `POST /batch-to-vault` endpoint. See [RTFM integration](./deployment/docs/14-RTFM-INTEGRATION.md) for the full pattern. [Compare with `PleasePrompto/notebooklm-mcp` v2.0.0](https://roomi-fields.github.io/notebooklm-mcp/compare) to see when this project is the right pick (REST API, full Studio, auto-reauth) and when the MCP-only upstream is.
|
|
8
8
|
|
|
9
9
|
<!-- Badges -->
|
|
10
10
|
|
|
@@ -72,6 +72,17 @@ Generate multiple content types from your notebook sources:
|
|
|
72
72
|
|
|
73
73
|
## Quick Start
|
|
74
74
|
|
|
75
|
+
### Option 0 — Claude Code marketplace (one-liner, recommended for Claude Code users)
|
|
76
|
+
|
|
77
|
+
The fastest way to get NotebookLM into Claude Code. Distributed via the [`roomi-fields/claude-plugins`](https://github.com/roomi-fields/claude-plugins) marketplace alongside [RTFM](https://github.com/roomi-fields/rtfm) (the retrieval companion — see [RTFM integration guide](./deployment/docs/14-RTFM-INTEGRATION.md)):
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
/plugin marketplace add roomi-fields/claude-plugins
|
|
81
|
+
/plugin install notebooklm@roomi-fields
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
That registers the MCP server, runs `npx -y @roomi-fields/notebooklm-mcp` automatically on first use (Node ≥ 18 required), and keeps you in sync with releases via `/plugin update`. Then run `npm run setup-auth` once to log into Google. To install RTFM at the same time: `/plugin install rtfm@roomi-fields`.
|
|
85
|
+
|
|
75
86
|
### Option 1 — HTTP REST API (n8n, Zapier, Make, curl, any HTTP client)
|
|
76
87
|
|
|
77
88
|
```bash
|
|
@@ -163,6 +174,7 @@ See [ROADMAP.md](./ROADMAP.md) for planned features and version history.
|
|
|
163
174
|
|
|
164
175
|
**Latest releases:**
|
|
165
176
|
|
|
177
|
+
- **v1.7.2** — Claude Code plugin manifest (`.claude-plugin/plugin.json`) + cross-file version sync script enforced in CI; README "Install via Claude Code marketplace" one-liner
|
|
166
178
|
- **v1.7.0** — `batch_to_vault` exposed as a first-class MCP tool (parity with the HTTP endpoint, no localhost server required); shared `runBatchToVault` helper deduplicates the loop across both transports
|
|
167
179
|
- **v1.6.0** — `/batch-to-vault` endpoint + RTFM integration (`nblm-answer-v1` JSON Schema published at [schemas.roomi-fields.com/nblm-answer-v1.json](https://schemas.roomi-fields.com/nblm-answer-v1.json)) for caching NotebookLM answers as a searchable markdown vault
|
|
168
180
|
- **v1.5.9** — Restore `mcpName` field for MCP Registry npm-package ownership verification
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@roomi-fields/notebooklm-mcp",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.2",
|
|
4
4
|
"mcpName": "io.github.roomi-fields/notebooklm-mcp",
|
|
5
5
|
"description": "MCP server for NotebookLM API with HTTP REST API - Zero hallucinations from your notebooks",
|
|
6
6
|
"type": "module",
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
"dev:http": "tsx watch src/http-wrapper.ts",
|
|
21
21
|
"dev:proxy": "tsx watch src/stdio-http-proxy.ts",
|
|
22
22
|
"build": "tsc && npm run build:i18n",
|
|
23
|
+
"version:sync": "node scripts/sync-version.mjs",
|
|
24
|
+
"version:check": "node scripts/sync-version.mjs --check",
|
|
23
25
|
"build:i18n": "node -e \"require('fs').cpSync('src/i18n', 'dist/i18n', {recursive: true, filter: (s) => s.endsWith('.json') || require('fs').statSync(s).isDirectory()})\"",
|
|
24
26
|
"watch": "tsc --watch",
|
|
25
27
|
"dev": "tsx watch src/index.ts",
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Sync the version from package.json to every other file that ships it:
|
|
4
|
+
* - .claude-plugin/plugin.json (Claude Code plugin manifest)
|
|
5
|
+
* - website/docusaurus.config.ts (schema.org softwareVersion)
|
|
6
|
+
* - README.md (hero "v1.x.x — ..." line)
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* node scripts/sync-version.mjs # rewrite drifted files in place
|
|
10
|
+
* node scripts/sync-version.mjs --check # exit 1 if anything would change (CI guard)
|
|
11
|
+
*
|
|
12
|
+
* Run after bumping package.json. The CI release workflow runs --check so a
|
|
13
|
+
* release can never ship with a stale plugin manifest or website badge.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
17
|
+
import { fileURLToPath } from 'node:url';
|
|
18
|
+
import { dirname, join } from 'node:path';
|
|
19
|
+
|
|
20
|
+
const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..');
|
|
21
|
+
const checkOnly = process.argv.includes('--check');
|
|
22
|
+
|
|
23
|
+
const pkg = JSON.parse(readFileSync(join(ROOT, 'package.json'), 'utf-8'));
|
|
24
|
+
const VERSION = pkg.version;
|
|
25
|
+
if (!VERSION) {
|
|
26
|
+
console.error('package.json has no version field');
|
|
27
|
+
process.exit(2);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** @type {Array<{path: string, label: string, transform: (s: string) => string}>} */
|
|
31
|
+
const targets = [
|
|
32
|
+
{
|
|
33
|
+
path: '.claude-plugin/plugin.json',
|
|
34
|
+
label: 'plugin manifest',
|
|
35
|
+
// Regex replace (not reparse+reserialize) so prettier-controlled
|
|
36
|
+
// formatting decisions (e.g. keywords array on one line vs many) are
|
|
37
|
+
// preserved between releases and don't trigger phantom drift.
|
|
38
|
+
transform: (s) =>
|
|
39
|
+
s.replace(
|
|
40
|
+
/^(\s*"version":\s*)"\d+\.\d+\.\d+"/m,
|
|
41
|
+
`$1"${VERSION}"`
|
|
42
|
+
),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
path: 'website/docusaurus.config.ts',
|
|
46
|
+
label: 'docusaurus softwareVersion',
|
|
47
|
+
transform: (s) =>
|
|
48
|
+
s.replace(
|
|
49
|
+
/softwareVersion:\s*'[^']+'/,
|
|
50
|
+
`softwareVersion: '${VERSION}'`
|
|
51
|
+
),
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
path: 'README.md',
|
|
55
|
+
label: 'README hero version',
|
|
56
|
+
transform: (s) =>
|
|
57
|
+
s.replace(/(>\s*v)\d+\.\d+\.\d+(\s+—)/, `$1${VERSION}$2`),
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
let drifted = 0;
|
|
62
|
+
for (const target of targets) {
|
|
63
|
+
const fullPath = join(ROOT, target.path);
|
|
64
|
+
const original = readFileSync(fullPath, 'utf-8');
|
|
65
|
+
const updated = target.transform(original);
|
|
66
|
+
|
|
67
|
+
if (original === updated) {
|
|
68
|
+
console.log(`✓ ${target.path} already at ${VERSION} (${target.label})`);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
drifted++;
|
|
73
|
+
if (checkOnly) {
|
|
74
|
+
console.error(`✗ DRIFT in ${target.path} (${target.label})`);
|
|
75
|
+
} else {
|
|
76
|
+
writeFileSync(fullPath, updated, 'utf-8');
|
|
77
|
+
console.log(`→ ${target.path} synced to ${VERSION} (${target.label})`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (checkOnly && drifted > 0) {
|
|
82
|
+
console.error(
|
|
83
|
+
`\n${drifted} file(s) out of sync with package.json@${VERSION}. ` +
|
|
84
|
+
`Run "npm run version:sync" locally and commit.`
|
|
85
|
+
);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (!checkOnly) {
|
|
90
|
+
console.log(
|
|
91
|
+
drifted === 0
|
|
92
|
+
? `\nAll files already at ${VERSION}.`
|
|
93
|
+
: `\nSynced ${drifted} file(s) to ${VERSION}.`
|
|
94
|
+
);
|
|
95
|
+
}
|