owner-clone-ai-mcp 1.79.0 → 1.80.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.
Files changed (2) hide show
  1. package/domains/video.js +28 -2
  2. package/package.json +1 -1
package/domains/video.js CHANGED
@@ -32,12 +32,29 @@ const tools = [
32
32
  id: { type: 'string', description: '動画プロジェクトID(list_video_projects で確認)' },
33
33
  position: { type: 'number', description: '何枚目の前に入れるか(1始まり)。省略すると末尾に追加(安全)' },
34
34
  duration: { type: 'number', description: '新しいスライドの尺(秒)。既定4' },
35
- chapter: { type: 'object', description: 'スライドの中身({kind, title, ...})。省略すると空の content スライド。get_slide_schema で形式を確認できる' },
35
+ kind: { type: 'string', description: 'テンプレート(23種)。見出し+箇条書き=content / チェックリスト=checklist / 数字=stats / 比較=compare / 表紙=cover / 引用=quote / 手順=flow / FAQ=faq / 年表=timeline / 料金=services など。省略時は content。⚠️ 中身まで作りたいときは chapter を使う' },
36
+ chapter: { type: 'object', description: 'スライドの中身({kind, title, ...})。指定すると kind より優先。get_slide_schema で形式を確認できる' },
36
37
  base_updated_at: { type: 'string', description: 'get_slide_deck で取得したスライド資料の updated_at。渡すと、その後に人が編集していた場合は挿入せずエラーにする(推奨)' },
37
38
  },
38
39
  required: ['id'],
39
40
  },
40
41
  },
42
+ {
43
+ name: 'delete_video_slide',
44
+ description: `動画が参照しているスライド資料から1枚削除し、タイムラインも同時に詰めます。
45
+ ⚠️ そのスライドに付けていた出現の打点も一緒に消えます。
46
+ ⚠️ スライド資料そのものから消えるため、同じ資料を使う他の動画の表示もずれます。
47
+ ⚠️ 最後の1枚は削除できません。【書き込み権限付きキーが必要】`,
48
+ inputSchema: {
49
+ type: 'object',
50
+ properties: {
51
+ id: { type: 'string', description: '動画プロジェクトID' },
52
+ position: { type: 'number', description: '何枚目を消すか(1始まり・必須)' },
53
+ base_updated_at: { type: 'string', description: 'get_slide_deck で取得したスライド資料の updated_at(推奨)' },
54
+ },
55
+ required: ['id', 'position'],
56
+ },
57
+ },
41
58
  {
42
59
  name: 'get_video_timeline_spec',
43
60
  description: '動画タイムライン(timeline JSON)の仕様を取得します。クリップ形式・transition/animの語彙・reveals(要素の段階出現)の組み方・メディアの結びつけ方・用途別の尺の目安・音声同期のコツ。動画を作る前に必ず一度読んでください。',
@@ -209,10 +226,19 @@ const handlers = {
209
226
  const d = await callApi(`/video/${id}`, { method: 'PATCH', body: JSON.stringify(rest) });
210
227
  return `✅ ${d.message}\nID: ${d.id}\n更新日時: ${d.updated_at}${lintLines(d)}`;
211
228
  },
212
- insert_video_slide: async ({ id, position, duration, chapter, base_updated_at }) => {
229
+ delete_video_slide: async ({ id, position, base_updated_at }) => {
230
+ const body = { at: Math.max(0, Math.round(position) - 1) };
231
+ if (base_updated_at !== undefined) body.base_updated_at = base_updated_at;
232
+ const d = await callApi(`/video/${id}/delete-slide`, { method: 'POST', body: JSON.stringify(body) });
233
+ return `✅ ${d.message}\n全${d.slide_count}枚 / 動画の updated_at: ${d.updated_at}`
234
+ + (d.warning ? `\n${d.warning}` : '');
235
+ },
236
+
237
+ insert_video_slide: async ({ id, position, duration, chapter, kind, base_updated_at }) => {
213
238
  const body = {};
214
239
  if (position !== undefined) body.at = Math.max(0, Math.round(position) - 1);
215
240
  if (duration !== undefined) body.duration = duration;
241
+ if (kind !== undefined) body.kind = kind;
216
242
  if (chapter !== undefined) body.chapter = chapter;
217
243
  if (base_updated_at !== undefined) body.base_updated_at = base_updated_at;
218
244
  const d = await callApi(`/video/${id}/insert-slide`, { method: 'POST', body: JSON.stringify(body) });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "owner-clone-ai-mcp",
3
- "version": "1.79.0",
3
+ "version": "1.80.0",
4
4
  "description": "MCP server for Owner Clone AI — exposes knowledge and agent presets to Claude Code",
5
5
  "main": "index.js",
6
6
  "bin": {