record_safer_pro_mcp 1.0.35 → 1.0.36

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 CHANGED
@@ -7,9 +7,19 @@ Language: [中文](#zh-cn) | [English](#english)
7
7
 
8
8
  Record Safer Pro 的官方 MCP Server。它让具备本机执行能力的 AI 客户端,可以直接接入专业多通道录音工作流,完成设备发现、录音准备、开始/停止录音、通道调整、标记管理等核心操作。
9
9
 
10
- 由 **DADAO 大道声学(北京大道创响科技有限公司)** 开发。
10
+ 由 **DADAO 大道声学** 开发。
11
11
  官网:[www.dadaoaudio.com](https://www.dadaoaudio.com)
12
12
 
13
+ > **需要一键复制命令?**
14
+ >
15
+ > README 所在的平台通常不方便给包作者挂自定义复制按钮,所以这个包额外附带了一个可直接点按钮复制的 HTML 快速页。
16
+ >
17
+ > 发布后的在线入口:
18
+ > [UNPKG](https://unpkg.com/record_safer_pro_mcp@latest/quickstart-copy.html) |
19
+ > [jsDelivr](https://cdn.jsdelivr.net/npm/record_safer_pro_mcp@latest/quickstart-copy.html)
20
+ >
21
+ > 仓库内源文件:[`quickstart-copy.html`](./quickstart-copy.html)
22
+
13
23
  ### 给第一次接触 AI 的音乐人:先准备这 3 件事
14
24
 
15
25
  如果你以前没有装过 AI CLI,不要一上来就配置 MCP。先把下面 3 件事准备好,后面会顺很多:
@@ -410,9 +420,19 @@ npx -v
410
420
 
411
421
  The official MCP server for Record Safer Pro. It allows AI clients with local execution capability to connect directly to a professional multichannel recording workflow and handle core tasks such as device discovery, recording preparation, start/stop recording, channel control, and marker management.
412
422
 
413
- Built by **DADAO Audio (Beijing Dadao Chuangxiang Technology Co., Ltd.)**.
423
+ Built by **DADAO Audio**.
414
424
  Website: [www.dadaoaudio.com](https://www.dadaoaudio.com)
415
425
 
426
+ > **Need one-click copy buttons for commands?**
427
+ >
428
+ > README rendering platforms usually do not give package authors reliable custom clipboard buttons, so this package also ships a dedicated HTML quick page with real copy buttons.
429
+ >
430
+ > Published online entry points:
431
+ > [UNPKG](https://unpkg.com/record_safer_pro_mcp@latest/quickstart-copy.html) |
432
+ > [jsDelivr](https://cdn.jsdelivr.net/npm/record_safer_pro_mcp@latest/quickstart-copy.html)
433
+ >
434
+ > Source file in the repo: [`quickstart-copy.html`](./quickstart-copy.html)
435
+
416
436
  ### New To AI Tools? Start Here First
417
437
 
418
438
  If your users are musicians rather than developers, they should prepare these three things before touching MCP setup:
@@ -805,4 +825,4 @@ Because that is the most realistic user path for this product. Compared with man
805
825
 
806
826
  ---
807
827
 
808
- Copyright © DADAO Audio (Beijing Dadao Chuangxiang Technology Co., Ltd.)
828
+ Copyright © DADAO Audio
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "record_safer_pro_mcp",
3
- "version": "1.0.35",
3
+ "version": "1.0.36",
4
4
  "description": "Record Safer Pro MCP Server — 专业多通道录音工作流 AI 控制接口 / AI control interface for professional multichannel recording workflows",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -9,7 +9,8 @@
9
9
  },
10
10
  "files": [
11
11
  "dist",
12
- "README.md"
12
+ "README.md",
13
+ "quickstart-copy.html"
13
14
  ],
14
15
  "scripts": {
15
16
  "build": "tsc",
@@ -0,0 +1,461 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Record Safer Pro MCP - Quick Copy</title>
7
+ <style>
8
+ :root {
9
+ --bg: #f4efe6;
10
+ --panel: #fffdf8;
11
+ --panel-alt: #f8f3ea;
12
+ --ink: #181512;
13
+ --muted: #60574f;
14
+ --line: #ded4c8;
15
+ --accent: #0f7a62;
16
+ --accent-strong: #0a5d4b;
17
+ --button-ink: #ffffff;
18
+ --shadow: 0 18px 40px rgba(24, 21, 18, 0.08);
19
+ --radius: 18px;
20
+ }
21
+
22
+ * {
23
+ box-sizing: border-box;
24
+ }
25
+
26
+ body {
27
+ margin: 0;
28
+ color: var(--ink);
29
+ background:
30
+ radial-gradient(circle at top left, rgba(15, 122, 98, 0.12), transparent 30%),
31
+ radial-gradient(circle at top right, rgba(196, 90, 26, 0.08), transparent 28%),
32
+ linear-gradient(180deg, #fbf8f2 0%, var(--bg) 100%);
33
+ font-family:
34
+ "SF Pro Text",
35
+ "PingFang SC",
36
+ "Hiragino Sans GB",
37
+ "Segoe UI",
38
+ sans-serif;
39
+ line-height: 1.55;
40
+ }
41
+
42
+ a {
43
+ color: var(--accent-strong);
44
+ }
45
+
46
+ .page {
47
+ max-width: 1080px;
48
+ margin: 0 auto;
49
+ padding: 32px 20px 56px;
50
+ }
51
+
52
+ .hero {
53
+ padding: 28px;
54
+ border: 1px solid var(--line);
55
+ border-radius: 28px;
56
+ background: rgba(255, 253, 248, 0.9);
57
+ box-shadow: var(--shadow);
58
+ backdrop-filter: blur(10px);
59
+ }
60
+
61
+ .eyebrow {
62
+ margin: 0 0 10px;
63
+ font-size: 12px;
64
+ font-weight: 700;
65
+ letter-spacing: 0.14em;
66
+ text-transform: uppercase;
67
+ color: var(--accent);
68
+ }
69
+
70
+ h1 {
71
+ margin: 0 0 12px;
72
+ font-size: clamp(32px, 5vw, 54px);
73
+ line-height: 1.02;
74
+ }
75
+
76
+ .lead {
77
+ max-width: 760px;
78
+ margin: 0 0 14px;
79
+ font-size: 18px;
80
+ color: var(--muted);
81
+ }
82
+
83
+ .hero-note {
84
+ margin: 0;
85
+ font-size: 14px;
86
+ color: var(--muted);
87
+ }
88
+
89
+ .links {
90
+ display: flex;
91
+ flex-wrap: wrap;
92
+ gap: 10px;
93
+ margin-top: 20px;
94
+ }
95
+
96
+ .link-pill {
97
+ display: inline-flex;
98
+ align-items: center;
99
+ padding: 10px 14px;
100
+ border: 1px solid var(--line);
101
+ border-radius: 999px;
102
+ background: var(--panel);
103
+ font-size: 14px;
104
+ text-decoration: none;
105
+ }
106
+
107
+ .section {
108
+ margin-top: 28px;
109
+ padding: 24px;
110
+ border: 1px solid var(--line);
111
+ border-radius: 24px;
112
+ background: var(--panel);
113
+ box-shadow: var(--shadow);
114
+ }
115
+
116
+ .section h2 {
117
+ margin: 0 0 10px;
118
+ font-size: 26px;
119
+ }
120
+
121
+ .section p,
122
+ .section li {
123
+ color: var(--muted);
124
+ }
125
+
126
+ .tip {
127
+ margin: 14px 0 0;
128
+ padding: 14px 16px;
129
+ border-radius: 16px;
130
+ background: var(--panel-alt);
131
+ color: var(--ink);
132
+ }
133
+
134
+ .grid {
135
+ display: grid;
136
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
137
+ gap: 16px;
138
+ margin-top: 18px;
139
+ }
140
+
141
+ .card {
142
+ display: flex;
143
+ flex-direction: column;
144
+ gap: 12px;
145
+ padding: 18px;
146
+ border: 1px solid var(--line);
147
+ border-radius: var(--radius);
148
+ background: linear-gradient(180deg, #fffdf9 0%, #f9f4ec 100%);
149
+ }
150
+
151
+ .card h3 {
152
+ margin: 0;
153
+ font-size: 18px;
154
+ }
155
+
156
+ .meta {
157
+ margin: -6px 0 0;
158
+ font-size: 13px;
159
+ color: var(--muted);
160
+ }
161
+
162
+ pre {
163
+ margin: 0;
164
+ padding: 14px;
165
+ overflow-x: auto;
166
+ border-radius: 14px;
167
+ background: #14110f;
168
+ color: #f7f1e6;
169
+ font-size: 14px;
170
+ line-height: 1.55;
171
+ white-space: pre-wrap;
172
+ word-break: break-word;
173
+ }
174
+
175
+ .card-actions {
176
+ display: flex;
177
+ flex-wrap: wrap;
178
+ gap: 10px;
179
+ align-items: center;
180
+ }
181
+
182
+ button {
183
+ appearance: none;
184
+ border: 0;
185
+ border-radius: 999px;
186
+ padding: 10px 14px;
187
+ background: var(--accent);
188
+ color: var(--button-ink);
189
+ font: inherit;
190
+ font-weight: 700;
191
+ cursor: pointer;
192
+ }
193
+
194
+ button:hover {
195
+ background: var(--accent-strong);
196
+ }
197
+
198
+ .status {
199
+ font-size: 13px;
200
+ color: var(--muted);
201
+ }
202
+
203
+ .list {
204
+ margin: 12px 0 0;
205
+ padding-left: 18px;
206
+ }
207
+
208
+ .footer {
209
+ margin-top: 24px;
210
+ font-size: 13px;
211
+ color: var(--muted);
212
+ text-align: center;
213
+ }
214
+
215
+ @media (max-width: 640px) {
216
+ .page {
217
+ padding: 18px 14px 36px;
218
+ }
219
+
220
+ .hero,
221
+ .section {
222
+ padding: 18px;
223
+ }
224
+ }
225
+ </style>
226
+ </head>
227
+ <body>
228
+ <main class="page">
229
+ <section class="hero">
230
+ <p class="eyebrow">Record Safer Pro MCP</p>
231
+ <h1>一键复制命令页</h1>
232
+ <p class="lead">
233
+ 给第一次接触 AI 的音乐人准备。下面的按钮可以直接复制命令或提示词,不用在 README
234
+ 里手动框选。
235
+ </p>
236
+ <p class="hero-note">
237
+ 如果你是从 npm README 过来的,这一页就是专门解决“命令不方便一键复制”的问题。
238
+ </p>
239
+ <div class="links">
240
+ <a class="link-pill" href="https://nodejs.org/zh-cn/download">Node.js 中文下载</a>
241
+ <a class="link-pill" href="https://nodejs.org/en/download">Node.js English Download</a>
242
+ <a class="link-pill" href="https://opencode.ai/docs/">OpenCode Docs</a>
243
+ <a class="link-pill" href="https://opencode.ai/docs/providers/">OpenCode Providers</a>
244
+ <a class="link-pill" href="https://platform.minimaxi.com/">MiniMax China</a>
245
+ </div>
246
+ </section>
247
+
248
+ <section class="section">
249
+ <h2>先打开系统终端</h2>
250
+ <p>这些命令要输入到系统终端里,不是发到 AI 聊天框里。</p>
251
+ <div class="tip">
252
+ macOS:打开“终端 Terminal”,可以按 <strong>Command + Space</strong> 搜索“终端”或
253
+ <strong>Terminal</strong><br />
254
+ Windows:打开 <strong>PowerShell</strong> 或 <strong>Windows Terminal</strong><br />
255
+ Linux:打开系统自带的 <strong>Terminal</strong>
256
+ </div>
257
+ </section>
258
+
259
+ <section class="section">
260
+ <h2>1. 安装并验证 Node.js</h2>
261
+ <p>Record Safer Pro MCP 依赖 <code>node</code> / <code>npx</code>。建议优先安装 LTS。</p>
262
+ <div class="grid">
263
+ <article class="card">
264
+ <h3>macOS + Homebrew</h3>
265
+ <p class="meta">如果你已经装了 Homebrew,最省事的方式就是这一条。</p>
266
+ <pre id="node-brew">brew install node</pre>
267
+ <div class="card-actions">
268
+ <button data-copy-target="node-brew">复制命令</button>
269
+ <span class="status">把命令粘贴到终端里执行</span>
270
+ </div>
271
+ </article>
272
+ <article class="card">
273
+ <h3>验证 Node.js</h3>
274
+ <p class="meta">两个命令都能输出版本号,就说明 Node.js 和 npx 已可用。</p>
275
+ <pre id="node-check">node -v
276
+ npx -v</pre>
277
+ <div class="card-actions">
278
+ <button data-copy-target="node-check">复制命令</button>
279
+ <span class="status">建议在安装完成后立刻执行</span>
280
+ </div>
281
+ </article>
282
+ </div>
283
+ </section>
284
+
285
+ <section class="section">
286
+ <h2>2. 安装 OpenCode</h2>
287
+ <p>这里用 OpenCode 作为 AI CLI 示例,因为它支持终端执行、模型切换和 MCP 接入。</p>
288
+ <div class="grid">
289
+ <article class="card">
290
+ <h3>官方安装脚本</h3>
291
+ <p class="meta">适合大多数用户。直接在终端执行。</p>
292
+ <pre id="opencode-install-script">curl -fsSL https://opencode.ai/install | bash</pre>
293
+ <div class="card-actions">
294
+ <button data-copy-target="opencode-install-script">复制命令</button>
295
+ <span class="status">推荐优先使用这一条</span>
296
+ </div>
297
+ </article>
298
+ <article class="card">
299
+ <h3>如果你已经装好 Node.js</h3>
300
+ <p class="meta">也可以直接用 npm 全局安装。</p>
301
+ <pre id="opencode-install-npm">npm install -g opencode-ai</pre>
302
+ <div class="card-actions">
303
+ <button data-copy-target="opencode-install-npm">复制命令</button>
304
+ <span class="status">需要 Node.js 已就绪</span>
305
+ </div>
306
+ </article>
307
+ </div>
308
+ </section>
309
+
310
+ <section class="section">
311
+ <h2>3. 连接 MiniMax 并选择模型</h2>
312
+ <p>
313
+ 对中国区用户,README 当前用 <code>MiniMax-M2.5</code> 作为上手示例。先登录,再进入
314
+ OpenCode 选模型。
315
+ </p>
316
+ <div class="grid">
317
+ <article class="card">
318
+ <h3>登录 provider</h3>
319
+ <p class="meta">执行后选择 MiniMax,并输入你的 MiniMax API Key。</p>
320
+ <pre id="opencode-auth-login">opencode auth login</pre>
321
+ <div class="card-actions">
322
+ <button data-copy-target="opencode-auth-login">复制命令</button>
323
+ <span class="status">先完成登录,再继续下面的步骤</span>
324
+ </div>
325
+ </article>
326
+ <article class="card">
327
+ <h3>启动 OpenCode</h3>
328
+ <p class="meta">启动后你就进入 AI CLI 界面了。</p>
329
+ <pre id="opencode-run">opencode</pre>
330
+ <div class="card-actions">
331
+ <button data-copy-target="opencode-run">复制命令</button>
332
+ <span class="status">这条命令是在系统终端里执行</span>
333
+ </div>
334
+ </article>
335
+ <article class="card">
336
+ <h3>刷新模型列表</h3>
337
+ <p class="meta">如果想先看外部模型清单,可以在系统终端执行这一条。</p>
338
+ <pre id="opencode-models-refresh">opencode models --refresh</pre>
339
+ <div class="card-actions">
340
+ <button data-copy-target="opencode-models-refresh">复制命令</button>
341
+ <span class="status">可选,但对第一次排查模型是否可见很有用</span>
342
+ </div>
343
+ </article>
344
+ <article class="card">
345
+ <h3>在 OpenCode 里切模型</h3>
346
+ <p class="meta">下面这一条不是在系统终端里,而是在 OpenCode 内部输入。</p>
347
+ <pre id="opencode-models-command">/models</pre>
348
+ <div class="card-actions">
349
+ <button data-copy-target="opencode-models-command">复制指令</button>
350
+ <span class="status">进入 OpenCode 后输入,再选择 MiniMax-M2.5</span>
351
+ </div>
352
+ </article>
353
+ </div>
354
+ </section>
355
+
356
+ <section class="section">
357
+ <h2>4. 安装完成后验证 MCP</h2>
358
+ <p>如果 AI 已经帮你写好了 MCP 配置,建议至少执行一次版本和 doctor 检查。</p>
359
+ <div class="grid">
360
+ <article class="card">
361
+ <h3>版本检查</h3>
362
+ <pre id="mcp-version">npx -y record_safer_pro_mcp@latest --version</pre>
363
+ <div class="card-actions">
364
+ <button data-copy-target="mcp-version">复制命令</button>
365
+ <span class="status">确认 npm 拉到的包可正常启动</span>
366
+ </div>
367
+ </article>
368
+ <article class="card">
369
+ <h3>Doctor 诊断</h3>
370
+ <pre id="mcp-doctor">npx -y record_safer_pro_mcp@latest --doctor</pre>
371
+ <div class="card-actions">
372
+ <button data-copy-target="mcp-doctor">复制命令</button>
373
+ <span class="status">确认 MCP 能否发现并连接桌面端</span>
374
+ </div>
375
+ </article>
376
+ </div>
377
+ </section>
378
+
379
+ <section class="section">
380
+ <h2>5. 一键复制给 AI 的安装提示词</h2>
381
+ <p>如果你想把安装工作直接交给 AI,可以把下面这段提示词复制过去。</p>
382
+ <div class="grid">
383
+ <article class="card" style="grid-column: 1 / -1;">
384
+ <h3>AI Direct Install Prompt</h3>
385
+ <pre id="ai-install-prompt">请按这份 INSTALL_AI.md 为我安装 Record Safer Pro MCP。
386
+ 要求:
387
+ 1. 只配置我当前正在使用或已经安装的 AI 客户端。
388
+ 2. 不要修改我未使用的平台配置。
389
+ 3. 统一使用 npx -y record_safer_pro_mcp@latest。
390
+ 4. 修改 JSON 时保持原文件合法。
391
+ 5. 安装完成后执行 --doctor,并告诉我结果。</pre>
392
+ <div class="card-actions">
393
+ <button data-copy-target="ai-install-prompt">复制提示词</button>
394
+ <span class="status">复制后直接发给你正在使用的 AI 客户端</span>
395
+ </div>
396
+ </article>
397
+ </div>
398
+ <ul class="list">
399
+ <li>MiniMax 中国区当前文档列出了 <code>MiniMax-M2.5</code> 的免费用户限速信息。</li>
400
+ <li>实际费率、模型可用性和账号策略可能变化,请以官方实时页面为准。</li>
401
+ </ul>
402
+ </section>
403
+
404
+ <p class="footer">
405
+ Record Safer Pro MCP quick copy page. If one button fails, manually select the command block and copy it.
406
+ </p>
407
+ </main>
408
+
409
+ <script>
410
+ function fallbackCopy(text) {
411
+ var textarea = document.createElement("textarea");
412
+ textarea.value = text;
413
+ textarea.setAttribute("readonly", "");
414
+ textarea.style.position = "absolute";
415
+ textarea.style.left = "-9999px";
416
+ document.body.appendChild(textarea);
417
+ textarea.select();
418
+ document.execCommand("copy");
419
+ document.body.removeChild(textarea);
420
+ }
421
+
422
+ async function copyText(text) {
423
+ if (navigator.clipboard && window.isSecureContext) {
424
+ await navigator.clipboard.writeText(text);
425
+ return;
426
+ }
427
+ fallbackCopy(text);
428
+ }
429
+
430
+ function getCopyText(button) {
431
+ var targetId = button.getAttribute("data-copy-target");
432
+ if (!targetId) {
433
+ return button.getAttribute("data-copy") || "";
434
+ }
435
+ var target = document.getElementById(targetId);
436
+ return target ? target.textContent.trim() : "";
437
+ }
438
+
439
+ function flashButton(button, label) {
440
+ var original = button.textContent;
441
+ button.textContent = label;
442
+ button.disabled = true;
443
+ window.setTimeout(function () {
444
+ button.textContent = original;
445
+ button.disabled = false;
446
+ }, 1400);
447
+ }
448
+
449
+ Array.from(document.querySelectorAll("button[data-copy-target], button[data-copy]")).forEach(function (button) {
450
+ button.addEventListener("click", async function () {
451
+ try {
452
+ await copyText(getCopyText(button));
453
+ flashButton(button, "已复制");
454
+ } catch (error) {
455
+ flashButton(button, "复制失败");
456
+ }
457
+ });
458
+ });
459
+ </script>
460
+ </body>
461
+ </html>