@mrgoonie/multix 0.0.2
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/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +180 -0
- package/dist/cli.js +2234 -0
- package/package.json +71 -0
- package/skill/SKILL.md +156 -0
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mrgoonie/multix",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "AI multimodal CLI — Gemini, MiniMax, OpenRouter, ffmpeg, ImageMagick, doc-to-md",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"multix": "./dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": ["dist", "skill", "README.md", "LICENSE", "CHANGELOG.md"],
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=20"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsup",
|
|
23
|
+
"dev": "tsup --watch",
|
|
24
|
+
"start": "node dist/cli.js",
|
|
25
|
+
"lint": "biome check .",
|
|
26
|
+
"format": "biome format --write .",
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"test": "vitest run",
|
|
29
|
+
"test:watch": "vitest",
|
|
30
|
+
"test:smoke": "vitest run tests/smoke"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"cli",
|
|
34
|
+
"ai",
|
|
35
|
+
"multimodal",
|
|
36
|
+
"gemini",
|
|
37
|
+
"minimax",
|
|
38
|
+
"openrouter",
|
|
39
|
+
"ffmpeg",
|
|
40
|
+
"imagemagick",
|
|
41
|
+
"media",
|
|
42
|
+
"image-generation",
|
|
43
|
+
"video-generation",
|
|
44
|
+
"speech-generation",
|
|
45
|
+
"document-converter"
|
|
46
|
+
],
|
|
47
|
+
"author": "multix-cli contributors",
|
|
48
|
+
"license": "MIT",
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "git+https://github.com/mrgoonie/multix-cli.git"
|
|
52
|
+
},
|
|
53
|
+
"bugs": {
|
|
54
|
+
"url": "https://github.com/mrgoonie/multix-cli/issues"
|
|
55
|
+
},
|
|
56
|
+
"homepage": "https://github.com/mrgoonie/multix-cli#readme",
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"commander": "^12.1.0",
|
|
59
|
+
"dotenv": "^16.4.5",
|
|
60
|
+
"execa": "^9.4.0",
|
|
61
|
+
"undici": "^7.2.0",
|
|
62
|
+
"zod": "^3.23.8"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@biomejs/biome": "^1.9.4",
|
|
66
|
+
"@types/node": "^22.10.0",
|
|
67
|
+
"tsup": "^8.3.5",
|
|
68
|
+
"typescript": "^5.7.2",
|
|
69
|
+
"vitest": "^2.1.8"
|
|
70
|
+
}
|
|
71
|
+
}
|
package/skill/SKILL.md
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multix
|
|
3
|
+
description: AI multimodal CLI — Gemini/MiniMax/OpenRouter image & video generation, ffmpeg/ImageMagick media optimization, document-to-Markdown conversion via Gemini Files API.
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# multix — AI Multimodal CLI
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Activate this skill when the user asks to:
|
|
12
|
+
- Generate, analyze, or describe images or video
|
|
13
|
+
- Transcribe audio or video files
|
|
14
|
+
- Extract structured data from documents (PDF, DOCX, images)
|
|
15
|
+
- Convert documents to Markdown
|
|
16
|
+
- Optimize or split video/audio/image files
|
|
17
|
+
- Generate speech (TTS) or music
|
|
18
|
+
|
|
19
|
+
## Required env (at least one)
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
GEMINI_API_KEY # Google AI Studio — required for analyze/transcribe/doc/generate
|
|
23
|
+
OPENROUTER_API_KEY # OpenRouter — alternative image generation
|
|
24
|
+
MINIMAX_API_KEY # MiniMax — image, video, speech, music generation
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install -g multix
|
|
31
|
+
# or run without installing:
|
|
32
|
+
npx multix --help
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Diagnostics
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
multix check # verify keys, tooling, Gemini connectivity
|
|
39
|
+
multix check --verbose # show install hints
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Command reference
|
|
43
|
+
|
|
44
|
+
### Gemini (analyze / generate)
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Analyze files
|
|
48
|
+
multix gemini analyze --files photo.jpg video.mp4 --prompt "Describe this content" -v
|
|
49
|
+
|
|
50
|
+
# Transcribe audio
|
|
51
|
+
multix gemini transcribe --files recording.mp3 --model gemini-2.5-flash
|
|
52
|
+
|
|
53
|
+
# Extract structured data
|
|
54
|
+
multix gemini extract --files report.pdf --prompt "Extract tables as JSON" --format json
|
|
55
|
+
|
|
56
|
+
# Generate images (Nano Banana — fastest)
|
|
57
|
+
multix gemini generate --prompt "A sunset over mountains" --aspect-ratio 16:9 --size 2K
|
|
58
|
+
|
|
59
|
+
# Generate images (Imagen 4 — production quality)
|
|
60
|
+
multix gemini generate --prompt "Product photo" --model imagen-4.0-ultra-generate-001 --num-images 4
|
|
61
|
+
|
|
62
|
+
# Generate video (Veo — EXPERIMENTAL, requires billing)
|
|
63
|
+
multix gemini generate-video --prompt "Ocean waves at sunset" --resolution 1080p
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### MiniMax
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Generate image
|
|
70
|
+
multix minimax generate --prompt "A cat in space" --aspect-ratio 1:1
|
|
71
|
+
|
|
72
|
+
# Generate video (async, up to 10 min)
|
|
73
|
+
multix minimax generate-video --prompt "A dancer on stage" --duration 6 --resolution 1080P
|
|
74
|
+
|
|
75
|
+
# Text-to-speech
|
|
76
|
+
multix minimax generate-speech --text "Hello, world!" --voice English_expressive_narrator --output-format mp3
|
|
77
|
+
|
|
78
|
+
# Music generation
|
|
79
|
+
multix minimax generate-music --lyrics "Verse 1: Under the stars..." --model music-2.5
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### OpenRouter
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Image generation via OpenRouter
|
|
86
|
+
multix openrouter generate --prompt "Retro robot mascot" --aspect-ratio 3:2
|
|
87
|
+
multix openrouter generate --prompt "Landscape" --model anthropic/claude-3-5-sonnet
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Media optimization
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Optimize single file
|
|
94
|
+
multix media optimize --input video.mp4 --output out.mp4 --target-size 100
|
|
95
|
+
multix media optimize --input audio.mp3 --output out.m4a --bitrate 64k
|
|
96
|
+
multix media optimize --input photo.jpg --output resized.jpg --max-width 1920
|
|
97
|
+
|
|
98
|
+
# Split long video into 1-hour chunks
|
|
99
|
+
multix media split --input long-video.mp4 --output-dir ./chunks --chunk-duration 3600
|
|
100
|
+
|
|
101
|
+
# Batch optimize a directory
|
|
102
|
+
multix media batch --input-dir ./raw --output-dir ./optimized --quality 85
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Document conversion
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Convert PDF to Markdown
|
|
109
|
+
multix doc convert --input document.pdf
|
|
110
|
+
|
|
111
|
+
# Auto-name output from input basename
|
|
112
|
+
multix doc convert --input report.pdf --auto-name
|
|
113
|
+
# Output: multix-output/report-extraction.md
|
|
114
|
+
|
|
115
|
+
# Custom output path
|
|
116
|
+
multix doc convert --input doc1.pdf doc2.docx --output ./combined.md
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Decision tree
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
User wants to generate image?
|
|
123
|
+
├── Has GEMINI_API_KEY? → multix gemini generate
|
|
124
|
+
├── Has OPENROUTER_API_KEY? → multix openrouter generate
|
|
125
|
+
└── Has MINIMAX_API_KEY? → multix minimax generate
|
|
126
|
+
|
|
127
|
+
User wants to generate video?
|
|
128
|
+
├── Gemini/Veo (experimental, billing required) → multix gemini generate-video
|
|
129
|
+
└── MiniMax Hailuo (reliable, async) → multix minimax generate-video
|
|
130
|
+
|
|
131
|
+
User wants to analyze/transcribe a file?
|
|
132
|
+
└── multix gemini analyze|transcribe|extract --files <path>
|
|
133
|
+
|
|
134
|
+
User wants to convert document to Markdown?
|
|
135
|
+
└── multix doc convert --input <file>
|
|
136
|
+
|
|
137
|
+
User wants to optimize media?
|
|
138
|
+
└── multix media optimize|split|batch
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Environment variables (full list)
|
|
142
|
+
|
|
143
|
+
| Variable | Provider | Purpose |
|
|
144
|
+
|---|---|---|
|
|
145
|
+
| `GEMINI_API_KEY` | Gemini | Required for all Gemini operations |
|
|
146
|
+
| `OPENROUTER_API_KEY` | OpenRouter | Image generation via OpenRouter |
|
|
147
|
+
| `MINIMAX_API_KEY` | MiniMax | Image/video/speech/music generation |
|
|
148
|
+
| `MULTIX_OUTPUT_DIR` | Core | Override default output dir (`./multix-output`) |
|
|
149
|
+
| `OPENROUTER_IMAGE_MODEL` | OpenRouter | Default model override |
|
|
150
|
+
| `OPENROUTER_FALLBACK_MODELS` | OpenRouter | Comma-separated fallback model ids |
|
|
151
|
+
| `OPENROUTER_SITE_URL` | OpenRouter | HTTP-Referer header |
|
|
152
|
+
| `OPENROUTER_APP_NAME` | OpenRouter | X-Title header (default: multix) |
|
|
153
|
+
| `IMAGE_GEN_MODEL` | Gemini | Override default image generation model |
|
|
154
|
+
| `VIDEO_GEN_MODEL` | Gemini | Override default video generation model |
|
|
155
|
+
| `MULTIMODAL_MODEL` | Gemini | Override default analysis model |
|
|
156
|
+
| `MULTIX_DISABLE_HOME_ENV` | Core | Set to 1 to skip `~/.multix/.env` loading |
|