@studiomeyer/mcp-video 1.0.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/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
- package/.github/workflows/ci.yml +34 -0
- package/CHANGELOG.md +24 -0
- package/CONTRIBUTING.md +75 -0
- package/LICENSE +21 -0
- package/README.md +198 -0
- package/USAGE.md +144 -0
- package/dist/handlers/capcut.d.ts +6 -0
- package/dist/handlers/capcut.js +229 -0
- package/dist/handlers/capcut.js.map +1 -0
- package/dist/handlers/editing.d.ts +6 -0
- package/dist/handlers/editing.js +242 -0
- package/dist/handlers/editing.js.map +1 -0
- package/dist/handlers/index.d.ts +2 -0
- package/dist/handlers/index.js +33 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/post-production.d.ts +5 -0
- package/dist/handlers/post-production.js +109 -0
- package/dist/handlers/post-production.js.map +1 -0
- package/dist/handlers/smart-screenshot.d.ts +5 -0
- package/dist/handlers/smart-screenshot.js +83 -0
- package/dist/handlers/smart-screenshot.js.map +1 -0
- package/dist/handlers/tts.d.ts +5 -0
- package/dist/handlers/tts.js +83 -0
- package/dist/handlers/tts.js.map +1 -0
- package/dist/handlers/video.d.ts +5 -0
- package/dist/handlers/video.js +127 -0
- package/dist/handlers/video.js.map +1 -0
- package/dist/lib/dual-transport.d.ts +42 -0
- package/dist/lib/dual-transport.js +208 -0
- package/dist/lib/dual-transport.js.map +1 -0
- package/dist/lib/logger.d.ts +12 -0
- package/dist/lib/logger.js +42 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/types.d.ts +16 -0
- package/dist/lib/types.js +15 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/schemas/capcut.d.ts +608 -0
- package/dist/schemas/capcut.js +411 -0
- package/dist/schemas/capcut.js.map +1 -0
- package/dist/schemas/editing.d.ts +822 -0
- package/dist/schemas/editing.js +466 -0
- package/dist/schemas/editing.js.map +1 -0
- package/dist/schemas/index.d.ts +2366 -0
- package/dist/schemas/index.js +15 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/post-production.d.ts +379 -0
- package/dist/schemas/post-production.js +268 -0
- package/dist/schemas/post-production.js.map +1 -0
- package/dist/schemas/smart-screenshot.d.ts +127 -0
- package/dist/schemas/smart-screenshot.js +122 -0
- package/dist/schemas/smart-screenshot.js.map +1 -0
- package/dist/schemas/tts.d.ts +220 -0
- package/dist/schemas/tts.js +194 -0
- package/dist/schemas/tts.js.map +1 -0
- package/dist/schemas/video.d.ts +236 -0
- package/dist/schemas/video.js +210 -0
- package/dist/schemas/video.js.map +1 -0
- package/dist/server.d.ts +11 -0
- package/dist/server.js +239 -0
- package/dist/server.js.map +1 -0
- package/dist/server.test.d.ts +1 -0
- package/dist/server.test.js +87 -0
- package/dist/server.test.js.map +1 -0
- package/dist/tools/engine/audio-mixer.d.ts +40 -0
- package/dist/tools/engine/audio-mixer.js +169 -0
- package/dist/tools/engine/audio-mixer.js.map +1 -0
- package/dist/tools/engine/audio.d.ts +22 -0
- package/dist/tools/engine/audio.js +73 -0
- package/dist/tools/engine/audio.js.map +1 -0
- package/dist/tools/engine/beat-sync.d.ts +31 -0
- package/dist/tools/engine/beat-sync.js +270 -0
- package/dist/tools/engine/beat-sync.js.map +1 -0
- package/dist/tools/engine/capture.d.ts +12 -0
- package/dist/tools/engine/capture.js +290 -0
- package/dist/tools/engine/capture.js.map +1 -0
- package/dist/tools/engine/chroma-key.d.ts +27 -0
- package/dist/tools/engine/chroma-key.js +154 -0
- package/dist/tools/engine/chroma-key.js.map +1 -0
- package/dist/tools/engine/concat.d.ts +49 -0
- package/dist/tools/engine/concat.js +149 -0
- package/dist/tools/engine/concat.js.map +1 -0
- package/dist/tools/engine/cursor.d.ts +26 -0
- package/dist/tools/engine/cursor.js +185 -0
- package/dist/tools/engine/cursor.js.map +1 -0
- package/dist/tools/engine/easing.d.ts +15 -0
- package/dist/tools/engine/easing.js +100 -0
- package/dist/tools/engine/easing.js.map +1 -0
- package/dist/tools/engine/editing.d.ts +158 -0
- package/dist/tools/engine/editing.js +541 -0
- package/dist/tools/engine/editing.js.map +1 -0
- package/dist/tools/engine/encoder.d.ts +31 -0
- package/dist/tools/engine/encoder.js +154 -0
- package/dist/tools/engine/encoder.js.map +1 -0
- package/dist/tools/engine/index.d.ts +30 -0
- package/dist/tools/engine/index.js +23 -0
- package/dist/tools/engine/index.js.map +1 -0
- package/dist/tools/engine/lut-presets.d.ts +25 -0
- package/dist/tools/engine/lut-presets.js +141 -0
- package/dist/tools/engine/lut-presets.js.map +1 -0
- package/dist/tools/engine/narrated-video.d.ts +63 -0
- package/dist/tools/engine/narrated-video.js +163 -0
- package/dist/tools/engine/narrated-video.js.map +1 -0
- package/dist/tools/engine/scenes.d.ts +17 -0
- package/dist/tools/engine/scenes.js +223 -0
- package/dist/tools/engine/scenes.js.map +1 -0
- package/dist/tools/engine/smart-screenshot.d.ts +80 -0
- package/dist/tools/engine/smart-screenshot.js +744 -0
- package/dist/tools/engine/smart-screenshot.js.map +1 -0
- package/dist/tools/engine/social-format.d.ts +66 -0
- package/dist/tools/engine/social-format.js +107 -0
- package/dist/tools/engine/social-format.js.map +1 -0
- package/dist/tools/engine/template-renderer.d.ts +45 -0
- package/dist/tools/engine/template-renderer.js +233 -0
- package/dist/tools/engine/template-renderer.js.map +1 -0
- package/dist/tools/engine/templates.d.ts +87 -0
- package/dist/tools/engine/templates.js +272 -0
- package/dist/tools/engine/templates.js.map +1 -0
- package/dist/tools/engine/text-animations.d.ts +33 -0
- package/dist/tools/engine/text-animations.js +192 -0
- package/dist/tools/engine/text-animations.js.map +1 -0
- package/dist/tools/engine/text-overlay.d.ts +27 -0
- package/dist/tools/engine/text-overlay.js +84 -0
- package/dist/tools/engine/text-overlay.js.map +1 -0
- package/dist/tools/engine/tts.d.ts +54 -0
- package/dist/tools/engine/tts.js +186 -0
- package/dist/tools/engine/tts.js.map +1 -0
- package/dist/tools/engine/types.d.ts +166 -0
- package/dist/tools/engine/types.js +13 -0
- package/dist/tools/engine/types.js.map +1 -0
- package/dist/tools/engine/voice-effects.d.ts +18 -0
- package/dist/tools/engine/voice-effects.js +215 -0
- package/dist/tools/engine/voice-effects.js.map +1 -0
- package/dist/tools/index.d.ts +32 -0
- package/dist/tools/index.js +23 -0
- package/dist/tools/index.js.map +1 -0
- package/package.json +56 -0
- package/scripts/check-deps.js +39 -0
- package/src/handlers/capcut.ts +245 -0
- package/src/handlers/editing.ts +260 -0
- package/src/handlers/index.ts +34 -0
- package/src/handlers/post-production.ts +136 -0
- package/src/handlers/smart-screenshot.ts +86 -0
- package/src/handlers/tts.ts +103 -0
- package/src/handlers/video.ts +137 -0
- package/src/lib/dual-transport.ts +272 -0
- package/src/lib/logger.ts +59 -0
- package/src/lib/types.ts +25 -0
- package/src/schemas/capcut.ts +418 -0
- package/src/schemas/editing.ts +476 -0
- package/src/schemas/index.ts +15 -0
- package/src/schemas/post-production.ts +273 -0
- package/src/schemas/smart-screenshot.ts +122 -0
- package/src/schemas/tts.ts +197 -0
- package/src/schemas/video.ts +211 -0
- package/src/server.test.ts +99 -0
- package/src/server.ts +289 -0
- package/src/tools/engine/audio-mixer.ts +244 -0
- package/src/tools/engine/audio.ts +115 -0
- package/src/tools/engine/beat-sync.ts +356 -0
- package/src/tools/engine/capture.ts +360 -0
- package/src/tools/engine/chroma-key.ts +202 -0
- package/src/tools/engine/concat.ts +242 -0
- package/src/tools/engine/cursor.ts +222 -0
- package/src/tools/engine/easing.ts +120 -0
- package/src/tools/engine/editing.ts +809 -0
- package/src/tools/engine/encoder.ts +208 -0
- package/src/tools/engine/index.ts +33 -0
- package/src/tools/engine/lut-presets.ts +235 -0
- package/src/tools/engine/narrated-video.ts +267 -0
- package/src/tools/engine/scenes.ts +309 -0
- package/src/tools/engine/smart-screenshot.ts +923 -0
- package/src/tools/engine/social-format.ts +146 -0
- package/src/tools/engine/template-renderer.ts +294 -0
- package/src/tools/engine/templates.ts +370 -0
- package/src/tools/engine/text-animations.ts +282 -0
- package/src/tools/engine/text-overlay.ts +143 -0
- package/src/tools/engine/tts.ts +284 -0
- package/src/tools/engine/types.ts +191 -0
- package/src/tools/engine/voice-effects.ts +258 -0
- package/src/tools/index.ts +67 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +7 -0
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CapCut-tier tool schemas — Phase 1-3: LUT Presets, Voice Effects, Chroma Key,
|
|
3
|
+
* Beat-Sync, Text Animations, Audio Mixer, Templates
|
|
4
|
+
*/
|
|
5
|
+
export const capcutSchemas = [
|
|
6
|
+
// ─── apply_lut_preset ────────────────────────────────────────
|
|
7
|
+
{
|
|
8
|
+
name: 'apply_lut_preset',
|
|
9
|
+
description: 'Apply a cinematic color grade preset to a video. 22 built-in presets from Hollywood blockbuster to vintage film, cyberpunk, noir, and more. Adjustable intensity for blending with original.',
|
|
10
|
+
annotations: {
|
|
11
|
+
title: 'Apply LUT Preset',
|
|
12
|
+
readOnlyHint: false,
|
|
13
|
+
destructiveHint: false,
|
|
14
|
+
openWorldHint: false,
|
|
15
|
+
idempotentHint: true,
|
|
16
|
+
},
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: 'object',
|
|
19
|
+
properties: {
|
|
20
|
+
inputPath: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Path to the input video file',
|
|
23
|
+
},
|
|
24
|
+
outputPath: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Path for the color-graded output video',
|
|
27
|
+
},
|
|
28
|
+
preset: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
description: 'Color grade preset name',
|
|
31
|
+
enum: [
|
|
32
|
+
'cinematic-teal-orange',
|
|
33
|
+
'cinematic-teal-orange-subtle',
|
|
34
|
+
'vintage-film',
|
|
35
|
+
'vintage-kodachrome',
|
|
36
|
+
'cross-process',
|
|
37
|
+
'moody-dark',
|
|
38
|
+
'warm-golden',
|
|
39
|
+
'cold-blue',
|
|
40
|
+
'film-noir',
|
|
41
|
+
'noir-blue-tint',
|
|
42
|
+
'bleach-bypass',
|
|
43
|
+
'cyberpunk-neon',
|
|
44
|
+
'cyberpunk-teal-pink',
|
|
45
|
+
'desaturated-fincher',
|
|
46
|
+
'pastel-dream',
|
|
47
|
+
'matrix-green',
|
|
48
|
+
'sepia',
|
|
49
|
+
'blockbuster-extreme',
|
|
50
|
+
'muted-forest',
|
|
51
|
+
'high-contrast-music',
|
|
52
|
+
'faded-lofi',
|
|
53
|
+
'sunset-magic-hour',
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
intensity: {
|
|
57
|
+
type: 'number',
|
|
58
|
+
description: 'Blend intensity: 0.0 (original) to 1.0 (full effect). Default: 1.0',
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
required: ['inputPath', 'outputPath', 'preset'],
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
// ─── apply_voice_effect ──────────────────────────────────────
|
|
65
|
+
{
|
|
66
|
+
name: 'apply_voice_effect',
|
|
67
|
+
description: 'Apply a voice/audio effect to a video or audio file. 9 effects: echo, reverb, deep voice, chipmunk, robot, whisper, radio, megaphone, underwater. Video stream is preserved when processing video files.',
|
|
68
|
+
annotations: {
|
|
69
|
+
title: 'Apply Voice Effect',
|
|
70
|
+
readOnlyHint: false,
|
|
71
|
+
destructiveHint: false,
|
|
72
|
+
openWorldHint: false,
|
|
73
|
+
idempotentHint: true,
|
|
74
|
+
},
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
inputPath: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
description: 'Path to the input video or audio file',
|
|
81
|
+
},
|
|
82
|
+
outputPath: {
|
|
83
|
+
type: 'string',
|
|
84
|
+
description: 'Path for the output file with voice effect applied',
|
|
85
|
+
},
|
|
86
|
+
effect: {
|
|
87
|
+
type: 'string',
|
|
88
|
+
description: 'Voice effect to apply',
|
|
89
|
+
enum: [
|
|
90
|
+
'echo',
|
|
91
|
+
'reverb',
|
|
92
|
+
'deep',
|
|
93
|
+
'chipmunk',
|
|
94
|
+
'robot',
|
|
95
|
+
'whisper',
|
|
96
|
+
'radio',
|
|
97
|
+
'megaphone',
|
|
98
|
+
'underwater',
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
intensity: {
|
|
102
|
+
type: 'number',
|
|
103
|
+
description: 'Effect intensity: 0.0 (subtle) to 1.0 (extreme). Default: 0.5',
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
required: ['inputPath', 'outputPath', 'effect'],
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
// ─── apply_chroma_key ────────────────────────────────────────
|
|
110
|
+
{
|
|
111
|
+
name: 'apply_chroma_key',
|
|
112
|
+
description: 'Remove green/blue screen background and replace it with a video, image, or solid color. Supports chromakey (YUV, best for green/blue) and colorkey (RGB, any color). Includes despill for clean edges.',
|
|
113
|
+
annotations: {
|
|
114
|
+
title: 'Apply Chroma Key',
|
|
115
|
+
readOnlyHint: false,
|
|
116
|
+
destructiveHint: false,
|
|
117
|
+
openWorldHint: false,
|
|
118
|
+
idempotentHint: true,
|
|
119
|
+
},
|
|
120
|
+
inputSchema: {
|
|
121
|
+
type: 'object',
|
|
122
|
+
properties: {
|
|
123
|
+
inputPath: {
|
|
124
|
+
type: 'string',
|
|
125
|
+
description: 'Path to the input video with green/blue screen',
|
|
126
|
+
},
|
|
127
|
+
outputPath: {
|
|
128
|
+
type: 'string',
|
|
129
|
+
description: 'Path for the composited output video',
|
|
130
|
+
},
|
|
131
|
+
background: {
|
|
132
|
+
type: 'string',
|
|
133
|
+
description: 'Replacement background: path to a video file, image file, or hex color (e.g., "000000" for black, "FFFFFF" for white)',
|
|
134
|
+
},
|
|
135
|
+
keyColor: {
|
|
136
|
+
type: 'string',
|
|
137
|
+
description: 'Key color as 6-digit hex (e.g., "00FF00" for green, "0000FF" for blue). Default: "00FF00"',
|
|
138
|
+
},
|
|
139
|
+
similarity: {
|
|
140
|
+
type: 'number',
|
|
141
|
+
description: 'Color match tolerance: 0.01 (exact match only) to 1.0 (wide match). Default: 0.15',
|
|
142
|
+
},
|
|
143
|
+
blend: {
|
|
144
|
+
type: 'number',
|
|
145
|
+
description: 'Edge softness: 0.0 (hard edge) to 0.1 (soft edge). Keep low! Default: 0.02',
|
|
146
|
+
},
|
|
147
|
+
despill: {
|
|
148
|
+
type: 'boolean',
|
|
149
|
+
description: 'Remove green/blue color contamination on edges. Default: true',
|
|
150
|
+
},
|
|
151
|
+
useColorkey: {
|
|
152
|
+
type: 'boolean',
|
|
153
|
+
description: 'Use colorkey (RGB space) instead of chromakey (YUV space). Better for non-standard key colors. Default: false',
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
required: ['inputPath', 'outputPath', 'background'],
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
// ─── sync_to_beat ────────────────────────────────────────────
|
|
160
|
+
{
|
|
161
|
+
name: 'sync_to_beat',
|
|
162
|
+
description: 'THE CapCut signature feature. Analyzes music/audio for beats, then automatically cuts and syncs video clips to the beat positions. Creates viral-style beat-synced montages. Optional beat effects: flash, zoom pulse.',
|
|
163
|
+
annotations: {
|
|
164
|
+
title: 'Beat-Sync Video',
|
|
165
|
+
readOnlyHint: false,
|
|
166
|
+
destructiveHint: false,
|
|
167
|
+
openWorldHint: false,
|
|
168
|
+
idempotentHint: false,
|
|
169
|
+
},
|
|
170
|
+
inputSchema: {
|
|
171
|
+
type: 'object',
|
|
172
|
+
properties: {
|
|
173
|
+
audioPath: {
|
|
174
|
+
type: 'string',
|
|
175
|
+
description: 'Path to the music/audio file to analyze for beats',
|
|
176
|
+
},
|
|
177
|
+
clips: {
|
|
178
|
+
type: 'array',
|
|
179
|
+
items: { type: 'string' },
|
|
180
|
+
description: 'Array of video clip paths to cut and sync to beats (used in order, cycles if needed)',
|
|
181
|
+
},
|
|
182
|
+
outputPath: {
|
|
183
|
+
type: 'string',
|
|
184
|
+
description: 'Path for the beat-synced output video',
|
|
185
|
+
},
|
|
186
|
+
beatEffect: {
|
|
187
|
+
type: 'string',
|
|
188
|
+
description: 'Effect on beat transitions: "cut" (hard cut), "flash" (white flash), "zoom" (quick zoom pulse). Default: "cut"',
|
|
189
|
+
enum: ['cut', 'flash', 'zoom'],
|
|
190
|
+
},
|
|
191
|
+
sensitivity: {
|
|
192
|
+
type: 'number',
|
|
193
|
+
description: 'Beat detection sensitivity: 0.0 (detect fewer beats) to 1.0 (detect more beats). Default: 0.6',
|
|
194
|
+
},
|
|
195
|
+
minBeatInterval: {
|
|
196
|
+
type: 'number',
|
|
197
|
+
description: 'Minimum seconds between beats (filters false positives). Default: 0.3',
|
|
198
|
+
},
|
|
199
|
+
maxBeats: {
|
|
200
|
+
type: 'number',
|
|
201
|
+
description: 'Maximum number of beats to use (limits output length). Default: 50',
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
required: ['audioPath', 'clips', 'outputPath'],
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
// ─── animate_text ────────────────────────────────────────────
|
|
208
|
+
{
|
|
209
|
+
name: 'animate_text',
|
|
210
|
+
description: 'Add animated text to a video. 15 animation styles: typewriter, pop, slide (up/down/left/right), bounce, fade (in/out/both), glitch, zoom-in, shake, neon-glow, wave. Configurable position, color, font size, timing.',
|
|
211
|
+
annotations: {
|
|
212
|
+
title: 'Animate Text',
|
|
213
|
+
readOnlyHint: false,
|
|
214
|
+
destructiveHint: false,
|
|
215
|
+
openWorldHint: false,
|
|
216
|
+
idempotentHint: true,
|
|
217
|
+
},
|
|
218
|
+
inputSchema: {
|
|
219
|
+
type: 'object',
|
|
220
|
+
properties: {
|
|
221
|
+
inputPath: {
|
|
222
|
+
type: 'string',
|
|
223
|
+
description: 'Path to the input video file',
|
|
224
|
+
},
|
|
225
|
+
outputPath: {
|
|
226
|
+
type: 'string',
|
|
227
|
+
description: 'Path for the output video with animated text',
|
|
228
|
+
},
|
|
229
|
+
text: {
|
|
230
|
+
type: 'string',
|
|
231
|
+
description: 'Text to animate',
|
|
232
|
+
},
|
|
233
|
+
animation: {
|
|
234
|
+
type: 'string',
|
|
235
|
+
description: 'Animation style',
|
|
236
|
+
enum: [
|
|
237
|
+
'typewriter', 'pop', 'slide-up', 'slide-down', 'slide-left', 'slide-right',
|
|
238
|
+
'bounce', 'fade-in', 'fade-out', 'fade-in-out', 'glitch', 'zoom-in',
|
|
239
|
+
'shake', 'neon-glow', 'wave',
|
|
240
|
+
],
|
|
241
|
+
},
|
|
242
|
+
startTime: {
|
|
243
|
+
type: 'number',
|
|
244
|
+
description: 'When the text appears (seconds). Default: 0',
|
|
245
|
+
},
|
|
246
|
+
duration: {
|
|
247
|
+
type: 'number',
|
|
248
|
+
description: 'How long the text is visible (seconds). Default: 3',
|
|
249
|
+
},
|
|
250
|
+
fontSize: {
|
|
251
|
+
type: 'number',
|
|
252
|
+
description: 'Font size in pixels. Default: 48',
|
|
253
|
+
},
|
|
254
|
+
fontColor: {
|
|
255
|
+
type: 'string',
|
|
256
|
+
description: 'Font color as hex (e.g., "FFFFFF" for white, "FF0000" for red). Default: "FFFFFF"',
|
|
257
|
+
},
|
|
258
|
+
position: {
|
|
259
|
+
type: 'string',
|
|
260
|
+
description: 'Text position on screen. Default: "center"',
|
|
261
|
+
enum: ['center', 'top', 'bottom', 'top-left', 'top-right', 'bottom-left', 'bottom-right'],
|
|
262
|
+
},
|
|
263
|
+
shadow: {
|
|
264
|
+
type: 'boolean',
|
|
265
|
+
description: 'Add shadow/outline for readability. Default: true',
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
required: ['inputPath', 'outputPath', 'text', 'animation'],
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
// ─── mix_audio_tracks ────────────────────────────────────────
|
|
272
|
+
{
|
|
273
|
+
name: 'mix_audio_tracks',
|
|
274
|
+
description: 'Mix multiple audio tracks together (voiceover + music + SFX). Supports auto-ducking: music volume automatically reduces when voice is active. Per-track volume, fade in/out, delay.',
|
|
275
|
+
annotations: {
|
|
276
|
+
title: 'Mix Audio Tracks',
|
|
277
|
+
readOnlyHint: false,
|
|
278
|
+
destructiveHint: false,
|
|
279
|
+
openWorldHint: false,
|
|
280
|
+
idempotentHint: true,
|
|
281
|
+
},
|
|
282
|
+
inputSchema: {
|
|
283
|
+
type: 'object',
|
|
284
|
+
properties: {
|
|
285
|
+
tracks: {
|
|
286
|
+
type: 'array',
|
|
287
|
+
items: {
|
|
288
|
+
type: 'object',
|
|
289
|
+
properties: {
|
|
290
|
+
path: { type: 'string', description: 'Path to audio or video file' },
|
|
291
|
+
volume: { type: 'number', description: 'Volume: 0.0-2.0 (1.0 = original). Default: 1.0' },
|
|
292
|
+
fadeIn: { type: 'number', description: 'Fade in duration in seconds. Default: 0' },
|
|
293
|
+
fadeOut: { type: 'number', description: 'Fade out duration in seconds. Default: 0' },
|
|
294
|
+
delay: { type: 'number', description: 'Start delay in seconds. Default: 0' },
|
|
295
|
+
role: { type: 'string', enum: ['voice', 'music', 'sfx'], description: 'Track role for auto-ducking. "voice" triggers ducking on "music" tracks.' },
|
|
296
|
+
},
|
|
297
|
+
required: ['path'],
|
|
298
|
+
},
|
|
299
|
+
description: 'Array of audio tracks to mix (2-8 tracks)',
|
|
300
|
+
},
|
|
301
|
+
outputPath: {
|
|
302
|
+
type: 'string',
|
|
303
|
+
description: 'Path for the mixed audio output',
|
|
304
|
+
},
|
|
305
|
+
autoDuck: {
|
|
306
|
+
type: 'boolean',
|
|
307
|
+
description: 'Enable auto-ducking: music reduces when voice is active. Default: false',
|
|
308
|
+
},
|
|
309
|
+
duckLevel: {
|
|
310
|
+
type: 'number',
|
|
311
|
+
description: 'How much to reduce music during speech: 0.0-1.0 (0.2 = reduce to 20%). Default: 0.2',
|
|
312
|
+
},
|
|
313
|
+
format: {
|
|
314
|
+
type: 'string',
|
|
315
|
+
description: 'Output format. Default: "aac"',
|
|
316
|
+
enum: ['mp3', 'aac', 'wav'],
|
|
317
|
+
},
|
|
318
|
+
duration: {
|
|
319
|
+
type: 'number',
|
|
320
|
+
description: 'Output duration in seconds. Omit to use longest track.',
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
required: ['tracks', 'outputPath'],
|
|
324
|
+
},
|
|
325
|
+
},
|
|
326
|
+
// ─── list_video_templates ────────────────────────────────────
|
|
327
|
+
{
|
|
328
|
+
name: 'list_video_templates',
|
|
329
|
+
description: 'List available video templates with their details. 9 templates across 8 categories: social-reel, product-demo, testimonial, before-after, slideshow, tutorial, announcement, promo. Each template defines clip slots, text placeholders, transitions, and recommended color grades.',
|
|
330
|
+
annotations: {
|
|
331
|
+
title: 'List Video Templates',
|
|
332
|
+
readOnlyHint: true,
|
|
333
|
+
destructiveHint: false,
|
|
334
|
+
openWorldHint: false,
|
|
335
|
+
idempotentHint: true,
|
|
336
|
+
},
|
|
337
|
+
inputSchema: {
|
|
338
|
+
type: 'object',
|
|
339
|
+
properties: {
|
|
340
|
+
category: {
|
|
341
|
+
type: 'string',
|
|
342
|
+
description: 'Filter by category. Omit to list all templates.',
|
|
343
|
+
enum: ['social-reel', 'product-demo', 'testimonial', 'before-after', 'slideshow', 'tutorial', 'announcement', 'promo'],
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
required: [],
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
// ─── render_template ─────────────────────────────────────────
|
|
350
|
+
{
|
|
351
|
+
name: 'render_template',
|
|
352
|
+
description: 'Render a video template with user-provided assets. Provide clips for each slot, customize text placeholders, add music. The pipeline: trim clips → color grade → text animations → concatenate → add music → export. Produces professional video from templates.',
|
|
353
|
+
annotations: {
|
|
354
|
+
title: 'Render Video Template',
|
|
355
|
+
readOnlyHint: false,
|
|
356
|
+
destructiveHint: false,
|
|
357
|
+
openWorldHint: false,
|
|
358
|
+
idempotentHint: false,
|
|
359
|
+
},
|
|
360
|
+
inputSchema: {
|
|
361
|
+
type: 'object',
|
|
362
|
+
properties: {
|
|
363
|
+
templateId: {
|
|
364
|
+
type: 'string',
|
|
365
|
+
description: 'Template ID (use list_video_templates to see available templates)',
|
|
366
|
+
enum: [
|
|
367
|
+
'social-reel-hype',
|
|
368
|
+
'social-reel-aesthetic',
|
|
369
|
+
'product-demo-saas',
|
|
370
|
+
'testimonial-single',
|
|
371
|
+
'before-after-split',
|
|
372
|
+
'slideshow-photo',
|
|
373
|
+
'tutorial-howto',
|
|
374
|
+
'announcement-launch',
|
|
375
|
+
'promo-sale',
|
|
376
|
+
],
|
|
377
|
+
},
|
|
378
|
+
outputPath: {
|
|
379
|
+
type: 'string',
|
|
380
|
+
description: 'Path for the rendered video output',
|
|
381
|
+
},
|
|
382
|
+
clips: {
|
|
383
|
+
type: 'object',
|
|
384
|
+
description: 'Map of slot name → file path. Use list_video_templates to see required slots for each template.',
|
|
385
|
+
},
|
|
386
|
+
texts: {
|
|
387
|
+
type: 'object',
|
|
388
|
+
description: 'Map of placeholder name → custom text. Overrides default template texts.',
|
|
389
|
+
},
|
|
390
|
+
musicPath: {
|
|
391
|
+
type: 'string',
|
|
392
|
+
description: 'Path to background music file (optional)',
|
|
393
|
+
},
|
|
394
|
+
musicVolume: {
|
|
395
|
+
type: 'number',
|
|
396
|
+
description: 'Music volume: 0.0-1.0. Default: 0.3',
|
|
397
|
+
},
|
|
398
|
+
colorGrade: {
|
|
399
|
+
type: 'string',
|
|
400
|
+
description: 'Override color grade preset. Omit to use template default.',
|
|
401
|
+
},
|
|
402
|
+
socialFormats: {
|
|
403
|
+
type: 'boolean',
|
|
404
|
+
description: 'Also export social format variants (Instagram Reel, TikTok, YouTube Short). Default: false',
|
|
405
|
+
},
|
|
406
|
+
},
|
|
407
|
+
required: ['templateId', 'outputPath', 'clips'],
|
|
408
|
+
},
|
|
409
|
+
},
|
|
410
|
+
];
|
|
411
|
+
//# sourceMappingURL=capcut.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capcut.js","sourceRoot":"","sources":["../../src/schemas/capcut.ts"],"names":[],"mappings":"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"}
|