owner-clone-ai-mcp 1.80.0 → 1.82.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/domains/slides.js +1 -1
- package/domains/video.js +91 -1
- package/package.json +1 -1
package/domains/slides.js
CHANGED
|
@@ -71,7 +71,7 @@ footerText・footerPos・footerSize・footerColor / logo・logoPos・logoSize・
|
|
|
71
71
|
knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '生成元ナレッジID(複数可)' },
|
|
72
72
|
knowledge_folder_ids: { type: 'array', items: { type: 'string' }, description: '生成元ナレッジフォルダID(サブフォルダ含む・複数可)' },
|
|
73
73
|
text: { type: 'string', description: '生成元テキスト(ナレッジ指定と併用可)' },
|
|
74
|
-
format: { type: 'string', enum: ['wide', 'classic', 'square', 'vertical', 'a4'], description: 'スライド比率: wide=16:9(既定・省略可)/ classic=4:3 / square=1:1(SNS投稿) / vertical=9:16縦長(ショート動画/スマホ) / a4=A4縦(書籍・印刷資料)' },
|
|
74
|
+
format: { type: 'string', enum: ['wide', 'classic', 'square', 'portrait45', 'vertical', 'a4'], description: 'スライド比率: wide=16:9(既定・省略可)/ classic=4:3 / square=1:1(SNS投稿) / portrait45=4:5(SNS縦・Instagram/Facebookのフィード) / vertical=9:16縦長(ショート動画/スマホ) / a4=A4縦(書籍・印刷資料)' },
|
|
75
75
|
purpose: { type: 'string', enum: ['document', 'lecture', 'vsl', 'ad', 'free'], description: '用途(省略時 document)' },
|
|
76
76
|
theme: { type: 'string', description: 'デザインテーマID(省略時 light-clean)' },
|
|
77
77
|
instructions: { type: 'string', description: '追加指示(例: 経営者向けのトーンで・料金比較の表を入れて)' },
|
package/domains/video.js
CHANGED
|
@@ -39,6 +39,22 @@ const tools = [
|
|
|
39
39
|
required: ['id'],
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
|
+
{
|
|
43
|
+
name: 'reorder_video_slides',
|
|
44
|
+
description: `動画のスライドの並び順を入れ替えます(スライド資料の順番も一緒に変わります)。
|
|
45
|
+
⚠️ 尺と出現の打点はそのスライドに付いて移動し、時間は先頭から詰め直されます。
|
|
46
|
+
⚠️ スライド資料そのものの順番が変わるため、同じ資料を使う他の動画の表示もずれます。【書き込み権限付きキーが必要】`,
|
|
47
|
+
inputSchema: {
|
|
48
|
+
type: 'object',
|
|
49
|
+
properties: {
|
|
50
|
+
id: { type: 'string', description: '動画プロジェクトID' },
|
|
51
|
+
from: { type: 'number', description: '動かすスライドの位置(1始まり)' },
|
|
52
|
+
to: { type: 'number', description: '移動先の位置(1始まり)' },
|
|
53
|
+
base_updated_at: { type: 'string', description: 'get_slide_deck で取得した updated_at(推奨)' },
|
|
54
|
+
},
|
|
55
|
+
required: ['id', 'from', 'to'],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
42
58
|
{
|
|
43
59
|
name: 'delete_video_slide',
|
|
44
60
|
description: `動画が参照しているスライド資料から1枚削除し、タイムラインも同時に詰めます。
|
|
@@ -195,12 +211,52 @@ const tools = [
|
|
|
195
211
|
},
|
|
196
212
|
{
|
|
197
213
|
name: 'delete_video_project',
|
|
198
|
-
description: '
|
|
214
|
+
description: '動画プロジェクトをゴミ箱に移動します(一覧から消えますが restore_video_project やUIのゴミ箱からいつでも復元できます。タイムライン定義のみで、元スライドや手元の音声ファイルは消えません)。完全削除はUIのゴミ箱からのみ。',
|
|
199
215
|
annotations: { destructiveHint: true },
|
|
200
216
|
inputSchema: { type: 'object', properties: {
|
|
201
217
|
id: { type: 'string', description: 'プロジェクトID' },
|
|
202
218
|
}, required: ['id'] },
|
|
203
219
|
},
|
|
220
|
+
{
|
|
221
|
+
name: 'restore_video_project',
|
|
222
|
+
description: 'ゴミ箱に入れた動画プロジェクトを復元します(delete_video_project の取り消し)。',
|
|
223
|
+
inputSchema: { type: 'object', properties: {
|
|
224
|
+
id: { type: 'string', description: 'プロジェクトID' },
|
|
225
|
+
}, required: ['id'] },
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
name: 'list_video_trash',
|
|
229
|
+
description: 'ゴミ箱に入っている動画プロジェクトの一覧を取得します。',
|
|
230
|
+
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
name: 'archive_video_project',
|
|
234
|
+
description: '動画プロジェクトをアーカイブします(一覧から退避。archived=false で解除)。作り終えたが残しておきたい動画の整理に使います。',
|
|
235
|
+
inputSchema: { type: 'object', properties: {
|
|
236
|
+
id: { type: 'string', description: 'プロジェクトID' },
|
|
237
|
+
archived: { type: 'boolean', description: 'true=アーカイブ(既定)/ false=アーカイブ解除' },
|
|
238
|
+
}, required: ['id'] },
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
name: 'list_video_folders',
|
|
242
|
+
description: '動画のカテゴリ一覧を取得します(一覧画面左サイドバーの分類)。振り分けは set_video_project_folder。',
|
|
243
|
+
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
name: 'create_video_folder',
|
|
247
|
+
description: '動画のカテゴリを新規作成します(例: 「広告用」「セミナー」)。作成後 set_video_project_folder で振り分けできます。',
|
|
248
|
+
inputSchema: { type: 'object', properties: {
|
|
249
|
+
name: { type: 'string', description: 'カテゴリ名' },
|
|
250
|
+
}, required: ['name'] },
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
name: 'set_video_project_folder',
|
|
254
|
+
description: '動画プロジェクトをカテゴリに振り分ける/外します。folder_id 省略で未分類に戻ります。カテゴリIDは list_video_folders で確認してください。',
|
|
255
|
+
inputSchema: { type: 'object', properties: {
|
|
256
|
+
id: { type: 'string', description: 'プロジェクトID' },
|
|
257
|
+
folder_id: { type: 'string', description: 'カテゴリID(UUID)。省略=未分類へ' },
|
|
258
|
+
}, required: ['id'] },
|
|
259
|
+
},
|
|
204
260
|
];
|
|
205
261
|
|
|
206
262
|
const handlers = {
|
|
@@ -226,6 +282,14 @@ const handlers = {
|
|
|
226
282
|
const d = await callApi(`/video/${id}`, { method: 'PATCH', body: JSON.stringify(rest) });
|
|
227
283
|
return `✅ ${d.message}\nID: ${d.id}\n更新日時: ${d.updated_at}${lintLines(d)}`;
|
|
228
284
|
},
|
|
285
|
+
reorder_video_slides: async ({ id, from, to, base_updated_at }) => {
|
|
286
|
+
const body = { from: Math.round(from) - 1, to: Math.round(to) - 1 };
|
|
287
|
+
if (base_updated_at !== undefined) body.base_updated_at = base_updated_at;
|
|
288
|
+
const d = await callApi(`/video/${id}/reorder-slides`, { method: 'POST', body: JSON.stringify(body) });
|
|
289
|
+
return `✅ ${d.message}\n全${d.slide_count}枚 / 動画の updated_at: ${d.updated_at}`
|
|
290
|
+
+ (d.warning ? `\n${d.warning}` : '');
|
|
291
|
+
},
|
|
292
|
+
|
|
229
293
|
delete_video_slide: async ({ id, position, base_updated_at }) => {
|
|
230
294
|
const body = { at: Math.max(0, Math.round(position) - 1) };
|
|
231
295
|
if (base_updated_at !== undefined) body.base_updated_at = base_updated_at;
|
|
@@ -276,6 +340,32 @@ const handlers = {
|
|
|
276
340
|
const d = await callApi(`/video/${id}`, { method: 'DELETE' });
|
|
277
341
|
return `✅ ${d.message}`;
|
|
278
342
|
},
|
|
343
|
+
restore_video_project: async ({ id }) => {
|
|
344
|
+
const d = await callApi(`/video/${id}/restore`, { method: 'POST' });
|
|
345
|
+
return `✅ ${d.message}: ${d.title || id}`;
|
|
346
|
+
},
|
|
347
|
+
list_video_trash: async () => {
|
|
348
|
+
const rows = await callApi('/video/trash');
|
|
349
|
+
if (!rows.length) return 'ゴミ箱は空です。';
|
|
350
|
+
return rows.map(r => `🗑 ${r.title}(id: ${r.id}・削除 ${r.deleted_at})`).join('\n');
|
|
351
|
+
},
|
|
352
|
+
archive_video_project: async ({ id, archived }) => {
|
|
353
|
+
const d = await callApi(`/video/${id}/archive`, { method: 'POST', body: JSON.stringify({ archived: archived !== false }) });
|
|
354
|
+
return `✅ ${d.message}: ${d.title || id}`;
|
|
355
|
+
},
|
|
356
|
+
list_video_folders: async () => {
|
|
357
|
+
const rows = await callApi('/video/folders');
|
|
358
|
+
if (!rows.length) return 'カテゴリはまだありません(create_video_folder で作成できます)。';
|
|
359
|
+
return rows.map(r => `🏷 ${r.name}(id: ${r.id})`).join('\n');
|
|
360
|
+
},
|
|
361
|
+
create_video_folder: async ({ name }) => {
|
|
362
|
+
const d = await callApi('/video/folders', { method: 'POST', body: JSON.stringify({ name }) });
|
|
363
|
+
return `✅ ${d.message}: ${d.name}(id: ${d.id})`;
|
|
364
|
+
},
|
|
365
|
+
set_video_project_folder: async ({ id, folder_id }) => {
|
|
366
|
+
const d = await callApi(`/video/${id}/folder`, { method: 'PUT', body: JSON.stringify({ folder_id: folder_id || null }) });
|
|
367
|
+
return `✅ ${d.message}`;
|
|
368
|
+
},
|
|
279
369
|
};
|
|
280
370
|
|
|
281
371
|
module.exports = { tools, handlers };
|