owner-clone-ai-mcp 1.82.0 → 1.83.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/video.js +34 -0
- package/package.json +1 -1
package/domains/video.js
CHANGED
|
@@ -217,6 +217,23 @@ const tools = [
|
|
|
217
217
|
id: { type: 'string', description: 'プロジェクトID' },
|
|
218
218
|
}, required: ['id'] },
|
|
219
219
|
},
|
|
220
|
+
{
|
|
221
|
+
name: 'list_video_notes',
|
|
222
|
+
description: 'タイムラインに書き込まれた「修正指示」を取得します。利用者が動画編集画面のタイムライン上に、時刻を指して書いたメモです。各メモには context(その時刻に映っているスライドの枚数目・見出し・クリップ内の経過秒・出現済み要素・表示中のテロップ本文)が付いているので、**どこの話かを推測せずに**直せます。「修正指示を書き込みました」と言われたら、まずこれを読んでください。',
|
|
223
|
+
inputSchema: { type: 'object', properties: {
|
|
224
|
+
id: { type: 'string', description: 'プロジェクトID' },
|
|
225
|
+
include_done: { type: 'boolean', description: 'true=対応済みも含める(省略=未対応のみ)' },
|
|
226
|
+
}, required: ['id'] },
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
name: 'resolve_video_note',
|
|
230
|
+
description: '修正指示を「対応済み」にします(done:false で未対応へ戻せます)。⚠️ 実際に直してから呼んでください。',
|
|
231
|
+
inputSchema: { type: 'object', properties: {
|
|
232
|
+
id: { type: 'string', description: 'プロジェクトID' },
|
|
233
|
+
note_id: { type: 'string', description: '修正指示のID(list_video_notes の id)' },
|
|
234
|
+
done: { type: 'boolean', description: 'true=対応済み(既定)/ false=未対応へ戻す' },
|
|
235
|
+
}, required: ['id', 'note_id'] },
|
|
236
|
+
},
|
|
220
237
|
{
|
|
221
238
|
name: 'restore_video_project',
|
|
222
239
|
description: 'ゴミ箱に入れた動画プロジェクトを復元します(delete_video_project の取り消し)。',
|
|
@@ -340,6 +357,23 @@ const handlers = {
|
|
|
340
357
|
const d = await callApi(`/video/${id}`, { method: 'DELETE' });
|
|
341
358
|
return `✅ ${d.message}`;
|
|
342
359
|
},
|
|
360
|
+
list_video_notes: async ({ id, include_done }) => {
|
|
361
|
+
const d = await callApi(`/video/${id}/notes${include_done ? '?include_done=1' : ''}`);
|
|
362
|
+
if (!d.notes || d.notes.length === 0) return '未対応の修正指示はありません。';
|
|
363
|
+
return d.notes.map(n => {
|
|
364
|
+
const c = n.context || {};
|
|
365
|
+
const where = [
|
|
366
|
+
c.slide ? `スライド${c.slide.slideNumber}枚目${c.slide.title ? `「${c.slide.title}」` : ''}の${c.slide.localSec}秒地点` : null,
|
|
367
|
+
c.telops && c.telops.length ? `表示中のテロップ: ${c.telops.map(t => `「${t.text}」`).join(' ')}` : null,
|
|
368
|
+
c.slide && c.slide.revealedPaths && c.slide.revealedPaths.length ? `出現済み: ${c.slide.revealedPaths.join(', ')}` : null,
|
|
369
|
+
].filter(Boolean).join(' / ');
|
|
370
|
+
return `${n.done ? '✅' : '📝'} [${n.id}] ${n.at}秒 — ${n.text}\n ↳ ${where || '(この時刻に映っているものはありません)'}`;
|
|
371
|
+
}).join('\n');
|
|
372
|
+
},
|
|
373
|
+
resolve_video_note: async ({ id, note_id, done }) => {
|
|
374
|
+
const d = await callApi(`/video/${id}/notes/${note_id}/resolve`, { method: 'POST', body: JSON.stringify({ done: done !== false }) });
|
|
375
|
+
return `✅ ${d.message}(${note_id})`;
|
|
376
|
+
},
|
|
343
377
|
restore_video_project: async ({ id }) => {
|
|
344
378
|
const d = await callApi(`/video/${id}/restore`, { method: 'POST' });
|
|
345
379
|
return `✅ ${d.message}: ${d.title || id}`;
|