google-veo3-1-mcp-server 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/README.md +257 -0
- package/dist/cli/batch.d.ts +8 -0
- package/dist/cli/batch.d.ts.map +1 -0
- package/dist/cli/batch.js +289 -0
- package/dist/cli/batch.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +372 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/extend.d.ts +14 -0
- package/dist/tools/extend.d.ts.map +1 -0
- package/dist/tools/extend.js +153 -0
- package/dist/tools/extend.js.map +1 -0
- package/dist/tools/generate.d.ts +10 -0
- package/dist/tools/generate.d.ts.map +1 -0
- package/dist/tools/generate.js +210 -0
- package/dist/tools/generate.js.map +1 -0
- package/dist/tools/interpolate.d.ts +12 -0
- package/dist/tools/interpolate.d.ts.map +1 -0
- package/dist/tools/interpolate.js +170 -0
- package/dist/tools/interpolate.js.map +1 -0
- package/dist/types/batch.d.ts +121 -0
- package/dist/types/batch.d.ts.map +1 -0
- package/dist/types/batch.js +37 -0
- package/dist/types/batch.js.map +1 -0
- package/dist/types/tools.d.ts +154 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +134 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/batch-config.d.ts +26 -0
- package/dist/utils/batch-config.d.ts.map +1 -0
- package/dist/utils/batch-config.js +283 -0
- package/dist/utils/batch-config.js.map +1 -0
- package/dist/utils/batch-manager.d.ts +43 -0
- package/dist/utils/batch-manager.d.ts.map +1 -0
- package/dist/utils/batch-manager.js +310 -0
- package/dist/utils/batch-manager.js.map +1 -0
- package/dist/utils/debug.d.ts +16 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +44 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/path.d.ts +36 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +97 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/video.d.ts +44 -0
- package/dist/utils/video.d.ts.map +1 -0
- package/dist/utils/video.js +261 -0
- package/dist/utils/video.js.map +1 -0
- package/docs/GOOGLE_VEO_3.1_API_SPECIFICATION.md +392 -0
- package/examples/batch-config.json +44 -0
- package/package.json +48 -0
package/README.md
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# Google Veo 3.1 MCP Server
|
|
2
|
+
|
|
3
|
+
MCP Server and CLI batch tool for Google Veo 3.1 Video Generation API.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **MCP Server** for integration with Claude Desktop and other MCP clients
|
|
8
|
+
- **Batch CLI Tool** for processing multiple video generation jobs
|
|
9
|
+
- **Text-to-Video**: Generate videos from text prompts
|
|
10
|
+
- **Image-to-Video**: Animate static images
|
|
11
|
+
- **Reference Images**: Use up to 3 images for character/style consistency
|
|
12
|
+
- **Video Extension**: Extend existing videos by 7 seconds
|
|
13
|
+
- **Frame Interpolation**: Generate video between two keyframes
|
|
14
|
+
- **Cost Estimation**: Calculate costs before execution
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install
|
|
20
|
+
npm run build
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Setup
|
|
24
|
+
|
|
25
|
+
1. Get your Google API key from [Google AI Studio](https://aistudio.google.com/app/apikey)
|
|
26
|
+
|
|
27
|
+
2. Create a `.env` file:
|
|
28
|
+
```env
|
|
29
|
+
GOOGLE_API_KEY=your_api_key_here
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Or set the environment variable directly:
|
|
33
|
+
```bash
|
|
34
|
+
export GOOGLE_API_KEY=your_api_key_here
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## MCP Server Usage
|
|
38
|
+
|
|
39
|
+
### Claude Desktop Configuration
|
|
40
|
+
|
|
41
|
+
Add to your Claude Desktop configuration (`%APPDATA%\Claude\claude_desktop_config.json` on Windows):
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"mcpServers": {
|
|
46
|
+
"veo3": {
|
|
47
|
+
"command": "node",
|
|
48
|
+
"args": ["C:/path/to/google-veo3-1-mcp-server/dist/index.js"],
|
|
49
|
+
"env": {
|
|
50
|
+
"GOOGLE_API_KEY": "your_api_key_here"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Or using npx after publishing:
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"mcpServers": {
|
|
61
|
+
"veo3": {
|
|
62
|
+
"command": "npx",
|
|
63
|
+
"args": ["google-veo3-1-mcp-server"],
|
|
64
|
+
"env": {
|
|
65
|
+
"GOOGLE_API_KEY": "your_api_key_here"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Available Tools
|
|
73
|
+
|
|
74
|
+
#### generate_video
|
|
75
|
+
Generate video from text prompt or image.
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"prompt": "A golden retriever running through autumn leaves",
|
|
80
|
+
"model": "veo-3.1-generate-preview",
|
|
81
|
+
"resolution": "1080p",
|
|
82
|
+
"duration_seconds": 8,
|
|
83
|
+
"generate_audio": true,
|
|
84
|
+
"output_path": "./output/video.mp4"
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Parameters:**
|
|
89
|
+
- `prompt`: Text description of the video (required unless image provided)
|
|
90
|
+
- `model`: `veo-3.1-generate-preview` (default) or `veo-3.1-fast-generate-preview`
|
|
91
|
+
- `aspect_ratio`: `16:9` (default) or `9:16`
|
|
92
|
+
- `resolution`: `720p` (default), `1080p`, or `4k` (4k only for standard model)
|
|
93
|
+
- `duration_seconds`: `4`, `6`, or `8` (default: 8)
|
|
94
|
+
- `generate_audio`: Whether to generate audio (default: true)
|
|
95
|
+
- `negative_prompt`: Elements to avoid
|
|
96
|
+
- `image`: Image for Image-to-Video mode
|
|
97
|
+
- `reference_images`: Array of reference images for consistency
|
|
98
|
+
- `output_path`: Path to save the video
|
|
99
|
+
|
|
100
|
+
#### extend_video
|
|
101
|
+
Extend an existing video by 7 seconds.
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"video": "./input/video.mp4",
|
|
106
|
+
"prompt": "Continue with the character walking forward",
|
|
107
|
+
"output_path": "./output/extended.mp4"
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Requirements:**
|
|
112
|
+
- Input video: 1-30 seconds, 24fps, 720p or 1080p
|
|
113
|
+
- Output: 7 seconds at 720p
|
|
114
|
+
|
|
115
|
+
#### interpolate_frames
|
|
116
|
+
Generate video transitioning between two keyframes.
|
|
117
|
+
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"first_frame": "./images/start.jpg",
|
|
121
|
+
"last_frame": "./images/end.jpg",
|
|
122
|
+
"prompt": "Smooth camera pan",
|
|
123
|
+
"duration_seconds": 8,
|
|
124
|
+
"generate_audio": true,
|
|
125
|
+
"output_path": "./output/interpolated.mp4"
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### get_video_status
|
|
130
|
+
Check the status of a video generation operation.
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"operation_name": "models/veo-3.1-generate-preview/operations/abc123"
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Batch CLI Usage
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Estimate costs only
|
|
142
|
+
veo3-batch config.json --estimate-only
|
|
143
|
+
|
|
144
|
+
# Execute batch
|
|
145
|
+
veo3-batch config.json --output-dir ./output
|
|
146
|
+
|
|
147
|
+
# With options
|
|
148
|
+
veo3-batch config.json --max-concurrent 3 --no-audio --format json
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### CLI Options
|
|
152
|
+
|
|
153
|
+
| Option | Description |
|
|
154
|
+
|--------|-------------|
|
|
155
|
+
| `-o, --output-dir <path>` | Output directory for videos |
|
|
156
|
+
| `-f, --format <text\|json>` | Output format (default: text) |
|
|
157
|
+
| `-c, --max-concurrent <n>` | Parallel jobs (1-5, default: 2) |
|
|
158
|
+
| `-p, --poll-interval <ms>` | Polling interval |
|
|
159
|
+
| `-t, --timeout <ms>` | Total batch timeout |
|
|
160
|
+
| `-e, --estimate-only` | Only estimate costs |
|
|
161
|
+
| `--no-audio` | Generate without audio (reduces cost) |
|
|
162
|
+
| `--allow-any-path` | Allow absolute output paths |
|
|
163
|
+
|
|
164
|
+
### Batch Configuration Format
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"jobs": [
|
|
169
|
+
{
|
|
170
|
+
"prompt": "A cat playing piano",
|
|
171
|
+
"duration_seconds": 8,
|
|
172
|
+
"resolution": "1080p",
|
|
173
|
+
"generate_audio": true
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"type": "extend",
|
|
177
|
+
"video": "./videos/source.mp4",
|
|
178
|
+
"prompt": "Continue the scene"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"type": "interpolate",
|
|
182
|
+
"first_frame": "./images/start.jpg",
|
|
183
|
+
"last_frame": "./images/end.jpg"
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"output_dir": "./output",
|
|
187
|
+
"max_concurrent": 2,
|
|
188
|
+
"default_model": "veo-3.1-generate-preview"
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Pricing
|
|
193
|
+
|
|
194
|
+
| Feature | Resolution | With Audio | Video Only |
|
|
195
|
+
|---------|------------|------------|------------|
|
|
196
|
+
| Standard Model | 720p/1080p | $0.40/sec | $0.20/sec |
|
|
197
|
+
| Standard Model | 4K | $0.60/sec | $0.40/sec |
|
|
198
|
+
| Fast Model | 720p/1080p | $0.20/sec | $0.10/sec |
|
|
199
|
+
|
|
200
|
+
> **Note:** Gemini API preview models always generate audio. The `generate_audio` parameter is not currently supported. Use Vertex AI for audio control.
|
|
201
|
+
|
|
202
|
+
### Cost Examples
|
|
203
|
+
|
|
204
|
+
| Video Type | Resolution | Duration | Audio | Cost |
|
|
205
|
+
|------------|------------|----------|-------|------|
|
|
206
|
+
| Text-to-Video | 1080p | 8 sec | Yes | $3.20 |
|
|
207
|
+
| Text-to-Video | 1080p | 8 sec | No | $1.60 |
|
|
208
|
+
| Image-to-Video (Fast) | 720p | 4 sec | Yes | $0.80 |
|
|
209
|
+
| Video Extension | 720p | 7 sec | No | $1.40 |
|
|
210
|
+
| Frame Interpolation | 1080p | 8 sec | Yes | $3.20 |
|
|
211
|
+
|
|
212
|
+
## Models
|
|
213
|
+
|
|
214
|
+
| Model | Description | Resolutions | Speed |
|
|
215
|
+
|-------|-------------|-------------|-------|
|
|
216
|
+
| `veo-3.1-generate-preview` | High quality | 720p, 1080p, 4K | Standard |
|
|
217
|
+
| `veo-3.1-fast-generate-preview` | Faster generation | 720p, 1080p | Fast |
|
|
218
|
+
|
|
219
|
+
## Reference Images
|
|
220
|
+
|
|
221
|
+
Use reference images to maintain consistency:
|
|
222
|
+
|
|
223
|
+
```json
|
|
224
|
+
{
|
|
225
|
+
"prompt": "The character walks through a forest",
|
|
226
|
+
"reference_images": [
|
|
227
|
+
{
|
|
228
|
+
"image": "./character.jpg",
|
|
229
|
+
"reference_type": "asset"
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
- `asset`: For characters/objects (max 3 images)
|
|
236
|
+
- `style`: For visual style (max 1 image)
|
|
237
|
+
|
|
238
|
+
## Environment Variables
|
|
239
|
+
|
|
240
|
+
| Variable | Description | Default |
|
|
241
|
+
|----------|-------------|---------|
|
|
242
|
+
| `GOOGLE_API_KEY` | Google API key (required) | - |
|
|
243
|
+
| `OUTPUT_DIR` | Default output directory | `./output` |
|
|
244
|
+
| `DEBUG` | Enable debug logging | `false` |
|
|
245
|
+
| `VIDEO_POLL_INTERVAL` | Polling interval (ms) | `15000` |
|
|
246
|
+
| `VIDEO_MAX_POLL_ATTEMPTS` | Max polling attempts | `120` |
|
|
247
|
+
|
|
248
|
+
## API Documentation
|
|
249
|
+
|
|
250
|
+
For detailed API specifications, see:
|
|
251
|
+
- [Google Veo 3.1 API Specification](./docs/GOOGLE_VEO_3.1_API_SPECIFICATION.md)
|
|
252
|
+
- [Gemini API Video Generation](https://ai.google.dev/gemini-api/docs/video)
|
|
253
|
+
- [Vertex AI Veo Documentation](https://cloud.google.com/vertex-ai/generative-ai/docs/models/veo)
|
|
254
|
+
|
|
255
|
+
## License
|
|
256
|
+
|
|
257
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/cli/batch.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Google Veo 3.1 Batch CLI Tool
|
|
4
|
+
*
|
|
5
|
+
* Execute multiple video generation jobs from a configuration file
|
|
6
|
+
*/
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import { config } from 'dotenv';
|
|
9
|
+
import { loadBatchConfig, validateBatchConfig, mergeBatchConfig } from '../utils/batch-config.js';
|
|
10
|
+
import { BatchManager } from '../utils/batch-manager.js';
|
|
11
|
+
import { getApiKey } from '../utils/video.js';
|
|
12
|
+
import { errorLog, infoLog } from '../utils/debug.js';
|
|
13
|
+
// Load environment variables
|
|
14
|
+
config();
|
|
15
|
+
function parseArgs(args) {
|
|
16
|
+
const result = {
|
|
17
|
+
configPath: '',
|
|
18
|
+
format: 'text',
|
|
19
|
+
estimateOnly: false,
|
|
20
|
+
noAudio: false,
|
|
21
|
+
allowAnyPath: false,
|
|
22
|
+
help: false
|
|
23
|
+
};
|
|
24
|
+
let i = 0;
|
|
25
|
+
while (i < args.length) {
|
|
26
|
+
const arg = args[i];
|
|
27
|
+
switch (arg) {
|
|
28
|
+
case '-h':
|
|
29
|
+
case '--help':
|
|
30
|
+
result.help = true;
|
|
31
|
+
break;
|
|
32
|
+
case '-o':
|
|
33
|
+
case '--output-dir':
|
|
34
|
+
result.outputDir = args[++i];
|
|
35
|
+
break;
|
|
36
|
+
case '-f':
|
|
37
|
+
case '--format':
|
|
38
|
+
const format = args[++i];
|
|
39
|
+
if (format === 'text' || format === 'json') {
|
|
40
|
+
result.format = format;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new Error(`Invalid format: ${format}. Must be "text" or "json"`);
|
|
44
|
+
}
|
|
45
|
+
break;
|
|
46
|
+
case '-c':
|
|
47
|
+
case '--max-concurrent':
|
|
48
|
+
result.maxConcurrent = parseInt(args[++i], 10);
|
|
49
|
+
if (isNaN(result.maxConcurrent) || result.maxConcurrent < 1 || result.maxConcurrent > 5) {
|
|
50
|
+
throw new Error('max-concurrent must be between 1 and 5');
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
53
|
+
case '-p':
|
|
54
|
+
case '--poll-interval':
|
|
55
|
+
result.pollInterval = parseInt(args[++i], 10);
|
|
56
|
+
if (isNaN(result.pollInterval)) {
|
|
57
|
+
throw new Error('poll-interval must be a number');
|
|
58
|
+
}
|
|
59
|
+
break;
|
|
60
|
+
case '-t':
|
|
61
|
+
case '--timeout':
|
|
62
|
+
result.timeout = parseInt(args[++i], 10);
|
|
63
|
+
if (isNaN(result.timeout)) {
|
|
64
|
+
throw new Error('timeout must be a number');
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
case '-e':
|
|
68
|
+
case '--estimate-only':
|
|
69
|
+
result.estimateOnly = true;
|
|
70
|
+
break;
|
|
71
|
+
case '--no-audio':
|
|
72
|
+
result.noAudio = true;
|
|
73
|
+
break;
|
|
74
|
+
case '--allow-any-path':
|
|
75
|
+
result.allowAnyPath = true;
|
|
76
|
+
break;
|
|
77
|
+
default:
|
|
78
|
+
if (arg.startsWith('-')) {
|
|
79
|
+
throw new Error(`Unknown option: ${arg}`);
|
|
80
|
+
}
|
|
81
|
+
if (!result.configPath) {
|
|
82
|
+
result.configPath = arg;
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
i++;
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
function printUsage() {
|
|
91
|
+
console.log(`
|
|
92
|
+
Google Veo 3.1 Batch Video Generation Tool
|
|
93
|
+
|
|
94
|
+
Usage: veo3-batch <config.json> [options]
|
|
95
|
+
|
|
96
|
+
Options:
|
|
97
|
+
-o, --output-dir <path> Output directory for generated videos
|
|
98
|
+
-f, --format <text|json> Output format (default: text)
|
|
99
|
+
-c, --max-concurrent <n> Maximum concurrent jobs (1-5, default: 2)
|
|
100
|
+
-p, --poll-interval <ms> Polling interval in milliseconds
|
|
101
|
+
-t, --timeout <ms> Total batch timeout in milliseconds
|
|
102
|
+
-e, --estimate-only Only estimate costs, don't execute
|
|
103
|
+
--no-audio Generate videos without audio (reduces cost)
|
|
104
|
+
--allow-any-path Allow absolute output paths outside output_dir
|
|
105
|
+
-h, --help Show this help message
|
|
106
|
+
|
|
107
|
+
Environment Variables:
|
|
108
|
+
GOOGLE_API_KEY Required: Google API key for Veo 3.1
|
|
109
|
+
OUTPUT_DIR Default output directory
|
|
110
|
+
DEBUG Set to "true" for debug logging
|
|
111
|
+
|
|
112
|
+
Example:
|
|
113
|
+
veo3-batch batch-config.json --output-dir ./output --estimate-only
|
|
114
|
+
veo3-batch batch-config.json --max-concurrent 3 --no-audio
|
|
115
|
+
|
|
116
|
+
Configuration File Format:
|
|
117
|
+
{
|
|
118
|
+
"jobs": [
|
|
119
|
+
{
|
|
120
|
+
"prompt": "A cat playing piano",
|
|
121
|
+
"duration_seconds": 8,
|
|
122
|
+
"resolution": "1080p",
|
|
123
|
+
"generate_audio": true
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"type": "interpolate",
|
|
127
|
+
"first_frame": "./images/start.jpg",
|
|
128
|
+
"last_frame": "./images/end.jpg"
|
|
129
|
+
}
|
|
130
|
+
],
|
|
131
|
+
"output_dir": "./output",
|
|
132
|
+
"max_concurrent": 2,
|
|
133
|
+
"default_model": "veo-3.1-generate-preview"
|
|
134
|
+
}
|
|
135
|
+
`);
|
|
136
|
+
}
|
|
137
|
+
// =============================================================================
|
|
138
|
+
// Output Formatting
|
|
139
|
+
// =============================================================================
|
|
140
|
+
function formatCostEstimate(estimate, format) {
|
|
141
|
+
if (format === 'json') {
|
|
142
|
+
return JSON.stringify(estimate, null, 2);
|
|
143
|
+
}
|
|
144
|
+
const lines = [
|
|
145
|
+
'',
|
|
146
|
+
'=== Cost Estimate ===',
|
|
147
|
+
''
|
|
148
|
+
];
|
|
149
|
+
estimate.jobs.forEach((job, index) => {
|
|
150
|
+
lines.push(`Job ${index + 1}:`);
|
|
151
|
+
lines.push(` Type: ${job.job_type}`);
|
|
152
|
+
lines.push(` Model: ${job.model}`);
|
|
153
|
+
lines.push(` Resolution: ${job.resolution}`);
|
|
154
|
+
lines.push(` Duration: ${job.duration_seconds}s`);
|
|
155
|
+
lines.push(` Audio: ${job.generate_audio ? 'Yes' : 'No'}`);
|
|
156
|
+
lines.push(` Cost: $${job.estimated_cost.toFixed(2)}`);
|
|
157
|
+
lines.push('');
|
|
158
|
+
});
|
|
159
|
+
lines.push('---');
|
|
160
|
+
lines.push(`Total Jobs: ${estimate.jobs.length}`);
|
|
161
|
+
lines.push(`Total Duration: ${estimate.total_duration_seconds}s`);
|
|
162
|
+
lines.push(`Total Estimated Cost: $${estimate.total_estimated_cost.toFixed(2)}`);
|
|
163
|
+
lines.push('');
|
|
164
|
+
return lines.join('\n');
|
|
165
|
+
}
|
|
166
|
+
function formatBatchResult(result, format) {
|
|
167
|
+
if (format === 'json') {
|
|
168
|
+
return JSON.stringify(result, null, 2);
|
|
169
|
+
}
|
|
170
|
+
const lines = [
|
|
171
|
+
'',
|
|
172
|
+
'=== Batch Execution Results ===',
|
|
173
|
+
''
|
|
174
|
+
];
|
|
175
|
+
result.jobs.forEach((job) => {
|
|
176
|
+
if (!job) {
|
|
177
|
+
lines.push(`Job (cancelled)`);
|
|
178
|
+
lines.push('');
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
lines.push(`Job ${job.index + 1}:`);
|
|
182
|
+
lines.push(` Status: ${job.success ? 'SUCCESS' : 'FAILED'}`);
|
|
183
|
+
if (job.success) {
|
|
184
|
+
if (job.video_path) {
|
|
185
|
+
lines.push(` Output: ${job.video_path}`);
|
|
186
|
+
}
|
|
187
|
+
if (job.video_url) {
|
|
188
|
+
lines.push(` URL: ${job.video_url}`);
|
|
189
|
+
}
|
|
190
|
+
if (job.estimated_cost !== undefined) {
|
|
191
|
+
lines.push(` Cost: $${job.estimated_cost.toFixed(2)}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
lines.push(` Error: ${job.error || 'Unknown error'}`);
|
|
196
|
+
if (job.failure_reason) {
|
|
197
|
+
lines.push(` Reason: ${job.failure_reason}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (job.duration_ms) {
|
|
201
|
+
lines.push(` Duration: ${(job.duration_ms / 1000).toFixed(1)}s`);
|
|
202
|
+
}
|
|
203
|
+
if (job.retries && job.retries > 0) {
|
|
204
|
+
lines.push(` Retries: ${job.retries}`);
|
|
205
|
+
}
|
|
206
|
+
lines.push('');
|
|
207
|
+
});
|
|
208
|
+
lines.push('---');
|
|
209
|
+
lines.push(`Total Jobs: ${result.total_jobs}`);
|
|
210
|
+
lines.push(`Successful: ${result.successful}`);
|
|
211
|
+
lines.push(`Failed: ${result.failed}`);
|
|
212
|
+
if (result.cancelled > 0) {
|
|
213
|
+
lines.push(`Cancelled: ${result.cancelled}`);
|
|
214
|
+
}
|
|
215
|
+
lines.push(`Total Cost: $${result.total_estimated_cost.toFixed(2)}`);
|
|
216
|
+
lines.push(`Total Duration: ${(result.duration_ms / 1000).toFixed(1)}s`);
|
|
217
|
+
lines.push('');
|
|
218
|
+
return lines.join('\n');
|
|
219
|
+
}
|
|
220
|
+
// =============================================================================
|
|
221
|
+
// Main
|
|
222
|
+
// =============================================================================
|
|
223
|
+
async function main() {
|
|
224
|
+
try {
|
|
225
|
+
// Parse command line arguments
|
|
226
|
+
const args = parseArgs(process.argv.slice(2));
|
|
227
|
+
if (args.help || !args.configPath) {
|
|
228
|
+
printUsage();
|
|
229
|
+
process.exit(args.help ? 0 : 1);
|
|
230
|
+
}
|
|
231
|
+
// Verify API key
|
|
232
|
+
try {
|
|
233
|
+
getApiKey();
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
errorLog('GOOGLE_API_KEY environment variable is not set');
|
|
237
|
+
process.exit(1);
|
|
238
|
+
}
|
|
239
|
+
// Load and validate configuration
|
|
240
|
+
infoLog(`Loading configuration from: ${args.configPath}`);
|
|
241
|
+
const batchConfig = loadBatchConfig(args.configPath);
|
|
242
|
+
const validationErrors = validateBatchConfig(batchConfig);
|
|
243
|
+
if (validationErrors.length > 0) {
|
|
244
|
+
errorLog('Configuration validation failed:');
|
|
245
|
+
validationErrors.forEach(err => console.error(` - ${err}`));
|
|
246
|
+
process.exit(1);
|
|
247
|
+
}
|
|
248
|
+
// Merge options
|
|
249
|
+
const cliOptions = {};
|
|
250
|
+
if (args.outputDir)
|
|
251
|
+
cliOptions.outputDir = args.outputDir;
|
|
252
|
+
if (args.maxConcurrent)
|
|
253
|
+
cliOptions.maxConcurrent = args.maxConcurrent;
|
|
254
|
+
if (args.pollInterval)
|
|
255
|
+
cliOptions.pollInterval = args.pollInterval;
|
|
256
|
+
if (args.timeout)
|
|
257
|
+
cliOptions.timeout = args.timeout;
|
|
258
|
+
cliOptions.estimateOnly = args.estimateOnly;
|
|
259
|
+
cliOptions.format = args.format;
|
|
260
|
+
cliOptions.noAudio = args.noAudio;
|
|
261
|
+
cliOptions.allowAnyPath = args.allowAnyPath;
|
|
262
|
+
const options = mergeBatchConfig(batchConfig, cliOptions);
|
|
263
|
+
const configDir = path.dirname(path.resolve(args.configPath));
|
|
264
|
+
// Create batch manager
|
|
265
|
+
const manager = new BatchManager(batchConfig, options, configDir);
|
|
266
|
+
if (args.estimateOnly) {
|
|
267
|
+
// Cost estimation only
|
|
268
|
+
infoLog('Estimating costs...');
|
|
269
|
+
const estimate = manager.estimateBatchCost();
|
|
270
|
+
console.log(formatCostEstimate(estimate, args.format));
|
|
271
|
+
process.exit(0);
|
|
272
|
+
}
|
|
273
|
+
// Execute batch
|
|
274
|
+
infoLog('Starting batch execution...');
|
|
275
|
+
const result = await manager.executeBatch();
|
|
276
|
+
console.log(formatBatchResult(result, args.format));
|
|
277
|
+
// Exit with error code if any jobs failed
|
|
278
|
+
if (result.failed > 0 || result.cancelled > 0) {
|
|
279
|
+
process.exit(1);
|
|
280
|
+
}
|
|
281
|
+
process.exit(0);
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
errorLog('Batch execution failed', error);
|
|
285
|
+
process.exit(1);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
main();
|
|
289
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/cli/batch.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Google Veo 3.1 MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Provides tools for video generation using Google's Veo 3.1 API:
|
|
6
|
+
* - generate_video: Text-to-Video and Image-to-Video with reference images
|
|
7
|
+
* - extend_video: Extend existing videos by 7 seconds
|
|
8
|
+
* - interpolate_frames: Generate video between first and last frames
|
|
9
|
+
* - get_video_status: Check status of video generation operations
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
|