@mediaproc/cli 0.5.2 → 0.7.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 (78) hide show
  1. package/README.md +202 -1297
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +21 -12
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/add.d.ts.map +1 -1
  6. package/dist/commands/add.js +1 -0
  7. package/dist/commands/add.js.map +1 -1
  8. package/dist/commands/batch.d.ts +3 -0
  9. package/dist/commands/batch.d.ts.map +1 -0
  10. package/dist/commands/batch.js +269 -0
  11. package/dist/commands/batch.js.map +1 -0
  12. package/dist/commands/benchmark.d.ts +3 -0
  13. package/dist/commands/benchmark.d.ts.map +1 -0
  14. package/dist/commands/benchmark.js +124 -0
  15. package/dist/commands/benchmark.js.map +1 -0
  16. package/dist/commands/compare.d.ts +3 -0
  17. package/dist/commands/compare.d.ts.map +1 -0
  18. package/dist/commands/compare.js +102 -0
  19. package/dist/commands/compare.js.map +1 -0
  20. package/dist/commands/detect.d.ts +6 -0
  21. package/dist/commands/detect.d.ts.map +1 -0
  22. package/dist/commands/detect.js +90 -0
  23. package/dist/commands/detect.js.map +1 -0
  24. package/dist/commands/doctor.d.ts +3 -0
  25. package/dist/commands/doctor.d.ts.map +1 -0
  26. package/dist/commands/doctor.js +222 -0
  27. package/dist/commands/doctor.js.map +1 -0
  28. package/dist/commands/history.d.ts +15 -0
  29. package/dist/commands/history.d.ts.map +1 -0
  30. package/dist/commands/history.js +215 -0
  31. package/dist/commands/history.js.map +1 -0
  32. package/dist/commands/remove.js +1 -1
  33. package/dist/commands/remove.js.map +1 -1
  34. package/dist/commands/search.d.ts +3 -0
  35. package/dist/commands/search.d.ts.map +1 -0
  36. package/dist/commands/search.js +193 -0
  37. package/dist/commands/search.js.map +1 -0
  38. package/dist/commands/stats.d.ts +3 -0
  39. package/dist/commands/stats.d.ts.map +1 -0
  40. package/dist/commands/stats.js +155 -0
  41. package/dist/commands/stats.js.map +1 -0
  42. package/dist/commands/template.d.ts +3 -0
  43. package/dist/commands/template.d.ts.map +1 -0
  44. package/dist/commands/template.js +184 -0
  45. package/dist/commands/template.js.map +1 -0
  46. package/dist/commands/watch.d.ts +3 -0
  47. package/dist/commands/watch.d.ts.map +1 -0
  48. package/dist/commands/watch.js +106 -0
  49. package/dist/commands/watch.js.map +1 -0
  50. package/dist/commands/workspace.d.ts +3 -0
  51. package/dist/commands/workspace.d.ts.map +1 -0
  52. package/dist/commands/workspace.js +201 -0
  53. package/dist/commands/workspace.js.map +1 -0
  54. package/dist/utils/branding.d.ts +11 -0
  55. package/dist/utils/branding.d.ts.map +1 -0
  56. package/dist/utils/branding.js +59 -0
  57. package/dist/utils/branding.js.map +1 -0
  58. package/package.json +2 -2
  59. package/dist/commands/convert.d.ts +0 -7
  60. package/dist/commands/convert.d.ts.map +0 -1
  61. package/dist/commands/convert.js +0 -96
  62. package/dist/commands/convert.js.map +0 -1
  63. package/dist/commands/info.d.ts +0 -7
  64. package/dist/commands/info.d.ts.map +0 -1
  65. package/dist/commands/info.js +0 -117
  66. package/dist/commands/info.js.map +0 -1
  67. package/dist/commands/optimize.d.ts +0 -7
  68. package/dist/commands/optimize.d.ts.map +0 -1
  69. package/dist/commands/optimize.js +0 -196
  70. package/dist/commands/optimize.js.map +0 -1
  71. package/dist/commands/run.d.ts +0 -3
  72. package/dist/commands/run.d.ts.map +0 -1
  73. package/dist/commands/run.js +0 -16
  74. package/dist/commands/run.js.map +0 -1
  75. package/dist/commands/validate.d.ts +0 -3
  76. package/dist/commands/validate.d.ts.map +0 -1
  77. package/dist/commands/validate.js +0 -16
  78. package/dist/commands/validate.js.map +0 -1
package/README.md CHANGED
@@ -1,1428 +1,333 @@
1
1
  # MediaProc
2
2
 
3
- Universal media processing CLI with an extensible plugin architecture. One tool to process all your media - images, videos, audio, documents, and more.
3
+ > Universal media processing CLI with plugin architecture. One tool for images, videos, audio, and more.
4
4
 
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
- [![Version](https://img.shields.io/badge/version-0.5.2-blue.svg)](https://www.npmjs.com/package/@mediaproc/cli)
7
- [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
8
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.3.3-blue)](https://www.typescriptlang.org/)
9
- [![Status](https://img.shields.io/badge/status-beta-green)](https://github.com/0xshariq/mediaproc)
10
- [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
11
-
12
- ---
13
-
14
- ## 📋 Table of Contents
15
-
16
- - [The Problem](#-the-problem)
17
- - [Our Solution](#-our-solution)
18
- - [Current Status](#-current-status)
19
- - [Features](#-features)
20
- - [Quick Start](#-quick-start)
21
- - [Available Plugins](#-available-plugins)
22
- - [Plugin Terminology](#-plugin-terminology)
23
- - [Documentation](#-documentation)
24
- - [Examples](#-examples)
25
- - [Development](#-development)
26
- - [Roadmap](#-roadmap)
27
- - [Contributing](#-contributing)
28
- - [Community](#-community)
29
- - [License](#-license)
30
-
31
- ---
32
-
33
- ## 🎯 The Problem
34
-
35
- Media processing in modern development workflows is **fragmented and complex**:
36
-
37
- ### Current Pain Points
38
-
39
- 1. **Too Many Tools**
40
-
41
- - FFmpeg for videos
42
- - ImageMagick for images
43
- - SoX for audio
44
- - Ghostscript for PDFs
45
- - Different tools for each media type
46
-
47
- 2. **Inconsistent Interfaces**
48
-
49
- - Each tool has different command syntax
50
- - Different parameter names and formats
51
- - Steep learning curve for each tool
52
- - Hard to remember all the commands
53
-
54
- 3. **Complex Workflows**
55
-
56
- - Chaining multiple tools together
57
- - Writing custom shell scripts
58
- - Managing dependencies across tools
59
- - Debugging is painful
60
-
61
- 4. **Lack of Flexibility**
62
-
63
- - Hard to extend with custom processing
64
- - No plugin ecosystem
65
- - Difficult to integrate into CI/CD
66
- - Limited automation capabilities
67
-
68
- 5. **Performance Issues**
69
- - Manual parallelization
70
- - No built-in batch processing
71
- - Memory management challenges
72
- - Inefficient for large files
73
-
74
- ### Real-World Scenarios
75
-
76
- **Web Developer:** "I need to resize 100 images, convert to WebP, and optimize for web. Should I use Sharp? ImageMagick? Write a Node script? Use Gulp/Webpack?"
77
-
78
- **Video Editor:** "I need to transcode videos, extract thumbnails, and create HLS streams. Do I write FFmpeg commands? Use a GUI tool? Build a custom pipeline?"
79
-
80
- **DevOps Engineer:** "I need to automate media processing in CI/CD. How do I make it reliable, fast, and easy to maintain across different media types?"
81
-
82
- **Content Manager:** "I need to batch process documents, add watermarks to images, and compress videos. I don't want to learn 5 different tools."
83
-
84
- ---
85
-
86
- ## 💡 Our Solution
87
-
88
- **MediaProc is a unified CLI that solves these problems:**
89
-
90
- ### Core Philosophy
91
-
92
- 🎯 **One Tool for Everything** - Process any media type with consistent commands
93
- 🔌 **Plugin Architecture** - Extend with official or community plugins
94
- ⚡ **Performance First** - Multi-threaded, streaming, optimized for large files
95
- 🎨 **Simple & Intuitive** - Clear commands, helpful errors, great DX
96
- 🔧 **Automation Ready** - Perfect for scripts, CI/CD, and workflows
97
- 🌍 **Community Driven** - Open source, extensible, third-party plugins welcome
98
-
99
- ### What Makes MediaProc Different
100
-
101
- | Feature | Traditional Tools | MediaProc |
102
- | ------------------ | -------------------------- | ------------------------------- |
103
- | **Interface** | Different for each tool | Unified, consistent CLI |
104
- | **Installation** | Install 5+ separate tools | One tool, add plugins as needed |
105
- | **Learning Curve** | Learn each tool separately | Learn once, use everywhere |
106
- | **Extensibility** | Limited or none | Built-in plugin system |
107
- | **Performance** | Manual optimization | Auto-parallelization, streaming |
108
- | **Automation** | Write custom scripts | Built-in pipeline workflows |
109
- | **Community** | Separate ecosystems | Unified plugin marketplace |
110
-
111
- ### How It Works
112
-
113
- ```bash
114
- # Traditional approach (multiple tools)
115
- convert input.jpg -resize 1920x1080 output.jpg
116
- ffmpeg -i input.mp4 -c:v h264 -crf 23 output.mp4
117
- sox input.wav -r 44100 output.mp3
118
- gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -o output.pdf input.pdf
119
-
120
- # MediaProc approach (one tool, consistent syntax)
121
- mediaproc image resize input.jpg --width 1920 --height 1080
122
- mediaproc video transcode input.mp4 --codec h264 --crf 23
123
- mediaproc audio convert input.wav --samplerate 44100 --format mp3
124
- mediaproc document compress input.pdf --quality high
125
- ```
126
-
127
- ---
128
-
129
- ## 📊 Current Status
130
-
131
- **Version**: 0.5.2 (Beta - Production Ready!)
132
- **Status**: ✅ Image plugin with 49 commands + Universal CLI commands
133
- **Next Release**: Video & Audio plugins (Q1 2026)
134
- **Expected v1.0**: Q2 2026
135
-
136
- ### Plugin Management
137
-
138
- MediaProc provides comprehensive plugin lifecycle management:
139
-
140
- - `mediaproc list` - List all installed plugins with versions
141
- - `mediaproc add <plugin>` - Install plugins from npm registry
142
- - `mediaproc remove <plugin>` - Safely uninstall plugins
143
- - `mediaproc delete <plugin>` - Delete plugins (alias for remove)
144
- - `mediaproc update [plugin]` - Update plugin(s) to latest versions
145
- - Without plugin name: updates all installed plugins
146
- - With plugin name: updates specific plugin
147
- - Shows version changes and update summary
148
- - `mediaproc validate [plugin]` - Validate plugin installation and integrity
149
- - Check plugin structure and dependencies
150
- - Verify command registrations
151
- - Detect issues before execution
152
-
153
- ### Universal Commands (Work Without Plugins)
154
-
155
- Core CLI commands available immediately after installation:
156
-
157
- **Media Operations:**
158
- - `mediaproc convert <input> <output>` - Auto-detect and convert any media file
159
- - `mediaproc info <file>` - Display comprehensive file information
160
- - `mediaproc optimize <file>` - Analyze and suggest optimization strategies
161
-
162
- **Help & Configuration:**
163
- - `mediaproc help [command]` - Show help for commands
164
- - `mediaproc init` - Initialize configuration file
165
- - `mediaproc config` - Manage configuration settings
166
- - `mediaproc run <command>` - Execute plugin commands
167
-
168
- ### Image Processing (@mediaproc/image)
169
-
170
- **Install:** `mediaproc add image`
171
-
172
- **49 Professional Commands Available:**
173
-
174
- **Transform & Resize** (10 commands)
175
-
176
- - `resize` - Resize with fit modes (cover, contain, fill, inside, outside)
177
- - `crop` - Extract rectangular regions with positioning
178
- - `rotate` - Any angle rotation with background control
179
- - `flip` - Vertical mirroring (top-bottom)
180
- - `flop` - Horizontal mirroring (left-right)
181
- - `auto-orient` - Auto-rotate based on EXIF orientation
182
- - `affine` - Apply affine transformation matrix (scale, shear, reflect)
183
- - `trim` - Auto-remove uniform borders
184
- - `extend` - Add padding/borders with custom colors
185
- - `thumbnail` - Generate thumbnails (64px to 512px)
186
-
187
- **Color & Tone** (10 commands)
188
-
189
- - `modulate` - Adjust brightness, saturation, hue
190
- - `gamma` - Gamma correction for midtones (0.1-3.0)
191
- - `tint` - Apply color tint overlays (RGB hex)
192
- - `grayscale` - Convert to black & white
193
- - `negate` - Create negative/inverted images
194
- - `normalize` - Auto-enhance contrast and brightness
195
- - `linear` - Apply linear formula: output = (a \* input) + b
196
- - `recomb` - Recombine RGB channels using matrix
197
- - `flatten` - Remove alpha transparency with background color
198
- - `unflatten` - Add alpha channel (RGB→RGBA)
199
-
200
- **Effects & Filters** (9 commands)
201
-
202
- - `blur` - Gaussian blur (0.3-1000 sigma)
203
- - `sharpen` - Enhance details and edges (flat/jagged modes)
204
- - `median` - Noise reduction filter (1-50 size)
205
- - `sepia` - Vintage sepia tone effect
206
- - `vignette` - Darken edges for artistic focus
207
- - `pixelate` - Retro pixel art effect (custom pixel size)
208
- - `threshold` - Binary black/white conversion (0-255)
209
- - `dilate` - Morphological dilation (expand bright regions)
210
- - `erode` - Morphological erosion (expand dark regions)
211
-
212
- **Advanced Operations** (6 commands)
213
-
214
- - `composite` - Layer images with blend modes (overlay, multiply, screen)
215
- - `extract` - Extract color channels (red, green, blue, alpha)
216
- - `border` - Add decorative frames with custom colors
217
- - `clahe` - Contrast-limited adaptive histogram equalization
218
- - `convolve` - Apply custom convolution kernels (sharpen, emboss, edge)
219
- - `boolean` - Perform boolean operations between images (AND, OR, XOR)
220
-
221
- **Smart/AI Operations** (6 commands)
222
-
223
- - `smart-crop` - Intelligent content-aware cropping (attention/entropy)
224
- - `auto-enhance` - Automatic color and contrast enhancement
225
- - `palette` - Extract dominant color palettes (2-256 colors)
226
- - `dominant-color` - Quick dominant color extraction
227
- - `grid` - Combine images into collage layouts
228
- - `batch` - Process multiple images at once with any operation
229
-
230
- **Utility** (10 commands)
231
-
232
- - `convert` - Format conversion (JPG, PNG, WebP, AVIF, TIFF, GIF)
233
- - `optimize` - Size optimization (up to 70% reduction, lossless/lossy)
234
- - `compress` - Advanced compression with quality control
235
- - `watermark` - Add watermarks with positioning and opacity
236
- - `info` - Display detailed image metadata
237
- - `stats` - Technical image statistics (channels, depth, color space)
238
- - `split` - Split image into grid tiles
239
- - `stack` - Stack images horizontally/vertically
240
- - `mirror` - Create mirror/kaleidoscope effects
241
- - `metadata` - View, export, or remove EXIF data
242
-
243
- **Format Support:**
244
-
245
- - Input: JPG, PNG, WebP, AVIF, TIFF, GIF, SVG, HEIF
246
- - Output: JPG, PNG, WebP, AVIF, TIFF, GIF
247
- - Modern formats: WebP (25-35% smaller), AVIF (50% smaller)
248
-
249
- **Professional Features:**
250
-
251
- - Quality control (1-100)
252
- - Dry-run mode (preview before executing)
253
- - Verbose logging
254
- - Built-in help for every command
255
- - Comprehensive error handling
256
- - File size reporting
257
-
258
- ✅ **Architecture** - Plugin system designed and implemented
259
- ✅ **Core CLI** - Command framework with plugin discovery
260
- ✅ **Built-in Plugin System** - Image plugin ships with CLI
261
- ✅ **Plugin Registry** - Smart plugin management
262
- ✅ **Documentation** - Comprehensive guides and standards
263
- ✅ **Community Guidelines** - Contributing, security, code of conduct
264
-
265
- ### 🚧 In Development
266
-
267
- 🚧 **Video Plugin** - Format conversion, transcoding, frame extraction
268
- 🚧 **Audio Plugin** - Format conversion, normalization, trimming
269
- 🚧 **Testing** - Comprehensive test coverage
270
- 🚧 **Examples** - Real-world usage examples
271
-
272
- ### What's Next
273
-
274
- 📋 **Video Plugin** - Format conversion, transcoding (Q1 2026)
275
- 📋 **Audio Plugin** - Format conversion, normalization (Q1 2026)
276
- 📋 **Document Plugin** - PDF processing, OCR (Q2 2026)
277
- 📋 **Advanced Plugins** - 3D, streaming, AI features (Q2-Q3 2026)
278
- 📋 **Plugin Marketplace** - Community plugin directory (Q3 2026)
279
-
280
- See [Upcoming Features](docs/upcoming-features.md) for detailed roadmap.
281
-
282
- ---
283
-
284
- ## ✨ Features
285
-
286
- ### Core Architecture
287
-
288
- #### 🎁 **Built-in Plugins** (Out of the Box)
289
-
290
- MediaProc ships with essential plugins pre-installed, giving you immediate productivity:
291
-
292
- - **@mediaproc/image** - Professional image processing (40 commands)
293
- - Resize, crop, rotate, flip, convert formats
294
- - Filters: blur, sharpen, tint, grayscale, median
295
- - Color adjustments: modulate, gamma, normalize
296
- - Utilities: thumbnail, watermark, optimize, trim, extend
297
-
298
- _More built-in plugins coming soon: video, audio, document_
299
-
300
- #### 🔌 **Add-on Plugins** (Install as Needed)
301
-
302
- Extend functionality by installing additional plugins from npm:
6
+ [![Version](https://img.shields.io/badge/version-0.6.0--beta-blue.svg)](https://www.npmjs.com/package/@mediaproc/cli)
7
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
303
8
 
304
9
  ```bash
305
- # Add more plugins from npm
306
- mediaproc add animation # GIF, WebP, Lottie optimization
307
- mediaproc add 3d # glTF, OBJ, FBX processing
308
- mediaproc add stream # HLS/DASH streaming
309
- mediaproc add ai # AI-powered enhancements
310
- ```
311
-
312
- #### 💡 **Why This Architecture?**
313
-
314
- **Universal CLI Benefits:**
315
-
316
- - ✅ Get started instantly with built-in plugins
317
- - ✅ Consistent command syntax across all plugins
318
- - ✅ Unified plugin management (`add`, `remove`, `list`)
319
- - ✅ Shared configuration and settings
320
- - ✅ Better integration between different media types
321
- - ✅ One tool to learn instead of many
322
-
323
- **Standalone Plugin Benefits:**
324
-
325
- - ✅ Each plugin can also run independently
326
- - ✅ Lightweight installs (only what you need)
327
- - ✅ Faster startup for single-purpose usage
328
- - ✅ Easy to distribute and share
10
+ # Install
11
+ npm install -g @mediaproc/cli
329
12
 
330
- **Example: Two Ways to Use**
13
+ # Process images
14
+ mediaproc image resize photo.jpg --width 1920 --height 1080
15
+ mediaproc image convert *.jpg --format webp --quality 85
331
16
 
332
- ```bash
333
- # Option 1: Use with universal CLI (recommended)
334
- npm install -g @mediaproc/cli # Includes @mediaproc/image built-in
335
- mediaproc image resize photo.jpg -w 1920
17
+ # Process videos
18
+ mediaproc video compress movie.mp4 --quality high
19
+ mediaproc video trim video.mp4 --start 00:01:30 --end 00:03:45
336
20
 
337
- # Option 2: Use plugin standalone (if you only need images)
338
- npm install -g @mediaproc/image
339
- mediaproc-image resize photo.jpg -w 1920
21
+ # Process audio
22
+ mediaproc audio convert song.wav --format mp3 --quality high
23
+ mediaproc audio normalize podcast.mp3 --target -16
340
24
  ```
341
25
 
342
- ### Current Features (v0.2.0)
343
-
344
- #### Core CLI
345
-
346
- - ✅ Plugin discovery and loading
347
- - ✅ Built-in plugins (ship with CLI)
348
- - ✅ Add-on plugins (install from npm)
349
- - ✅ Smart installation (auto-detects global/local)
350
- - ✅ Plugin registry with short names
351
- - ✅ Configuration management
352
- - ✅ TypeScript with strict mode
353
- - ✅ Cross-platform support
354
-
355
- #### Plugin Management
356
-
357
- - `mediaproc list` - List all plugins (built-in and installed)
358
- - `mediaproc add <plugin>` - Install add-on plugins from npm
359
- - `mediaproc remove <plugin>` - Uninstall add-on plugins
360
- - `mediaproc delete <plugin>` - Delete/uninstall plugins (alias: uninstall)
361
- - `--global` - Delete globally installed plugin
362
- - `--local` - Delete locally installed plugin
363
- - `--yes` - Skip confirmation prompt
364
- - `--verbose` - Show detailed output
365
- - `mediaproc update [plugin]` - Update plugin(s) to latest version
366
- - `--version <version>` - Update to specific version
367
- - `--global` - Update globally installed plugins
368
- - `--verbose` - Show detailed output
369
- - `mediaproc plugins` - Show available plugins
370
- - `mediaproc init` - Initialize configuration
371
- - `mediaproc config` - Manage settings
372
-
373
- #### Universal Commands (Work Without Plugins)
374
-
375
- - `mediaproc convert <input> <output>` - Auto-detect and convert any media file
376
- - `mediaproc info <file>` - Show file information for any media type
377
- - `mediaproc optimize <file>` - Suggest optimization strategy based on file type
378
-
379
- #### Image Processing (@mediaproc/image) ★ BUILT-IN
380
-
381
- **40 Professional Commands Ready to Use:**
382
-
383
- **Transform & Resize** (7 commands)
384
-
385
- - `resize` - Resize with fit modes (cover, contain, fill, inside, outside)
386
- - `crop` - Extract rectangular regions with positioning
387
- - `rotate` - Any angle rotation with background control
388
- - `flip` - Horizontal/vertical/both mirroring
389
- - `trim` - Auto-remove uniform borders
390
- - `extend` - Add padding/borders with custom colors
391
- - `thumbnail` - Generate thumbnails (64px to 512px)
392
-
393
- **Color & Tone** (6 commands)
394
-
395
- - `modulate` - Adjust brightness, saturation, hue
396
- - `gamma` - Gamma correction for midtones (0.1-3.0)
397
- - `tint` - Apply color tint overlays (RGB hex)
398
- - `grayscale` - Convert to black & white
399
- - `negate` - Create negative/inverted images
400
- - `normalize` - Auto-enhance contrast and brightness
401
-
402
- **Effects & Filters** (6 commands)
403
-
404
- - `blur` - Gaussian blur (0.3-1000 sigma)
405
- - `sharpen` - Enhance details and edges (flat/jagged modes)
406
- - `median` - Noise reduction filter (1-50 size)
407
- - `sepia` - Vintage sepia tone effect
408
- - `vignette` - Darken edges for artistic focus
409
- - `pixelate` - Retro pixel art effect (custom pixel size)
410
-
411
- **Advanced Operations** (6 commands)
412
-
413
- - `composite` - Layer images with blend modes
414
- - `extract` - Extract color channels or regions
415
- - `border` - Add decorative frames
416
- - `clahe` - Contrast-limited adaptive histogram equalization
417
- - `convolve` - Apply custom convolution kernels
418
- - `text` - Add text overlays with styling
419
-
420
- **Utility & Metadata** (8 commands)
421
-
422
- - `convert` - Format conversion
423
- - `optimize` - Smart size optimization
424
- - `compress` - Advanced compression control
425
- - `watermark` - Add watermarks with positioning
426
- - `info` - Display image metadata
427
- - `metadata` - Manage EXIF/IPTC data
428
- - `thumbnail` - Generate optimized thumbnails
429
- - `stats` - Technical image statistics
430
-
431
- **Format Support:**
432
-
433
- - Input: JPG, PNG, WebP, AVIF, TIFF, GIF, SVG, HEIF
434
- - Output: JPG, PNG, WebP, AVIF, TIFF, GIF
435
- - Modern formats: WebP (25-35% smaller), AVIF (50% smaller)
436
-
437
- **Professional Features:**
438
-
439
- - Quality control (1-100)
440
- - Dry-run mode (preview before executing)
441
- - Verbose logging
442
- - Built-in help for every command
443
- - Comprehensive error handling
444
- - File size reporting
445
-
446
- See [plugins/image/README.md](plugins/image/README.md) for complete image plugin documentation.
447
-
448
- ### Planned Features (Add-on Plugins)
449
-
450
- #### Video Processing (@mediaproc/video) - Q1 2026
451
-
452
- - Format transcoding (MP4, WebM, AVI, MKV)
453
- - Codec conversion (H.264, H.265, VP9, AV1)
454
- - Quality presets (web, mobile, high-quality)
455
- - Frame extraction
456
- - Trimming and cutting
457
- - Video merging
458
- - Audio track management
459
-
460
- #### Audio Processing (@mediaproc/audio) - Q1 2026
461
-
462
- - Format conversion (MP3, AAC, FLAC, WAV, OGG)
463
- - Normalization and loudness adjustment
464
- - Trimming and splitting
465
- - Audio extraction from video
466
- - Multi-track merging
467
- - Bitrate control
26
+ ## Why MediaProc?
468
27
 
469
- #### Document Processing (@mediaproc/document) - Q2 2026
28
+ **The Problem:** Modern development workflows require multiple tools for media processing:
29
+ - FFmpeg for videos
30
+ - ImageMagick for images
31
+ - SoX for audio
32
+ - Each with different syntax, steep learning curves, and complex workflows
470
33
 
471
- - Bitrate control
34
+ **The Solution:** MediaProc provides a unified CLI with consistent commands across all media types.
472
35
 
473
- #### Document Processing (Q2 2026)
36
+ | Feature | Traditional | MediaProc |
37
+ |---------|------------|-----------|
38
+ | **Tools Needed** | 5+ separate tools | One tool |
39
+ | **Installation** | Complex setup | `npm install -g @mediaproc/cli` |
40
+ | **Syntax** | Different for each | Consistent everywhere |
41
+ | **Extensibility** | Limited | Plugin architecture |
474
42
 
475
- - PDF compression
476
- - Page extraction and splitting
477
- - OCR text extraction
478
- - PDF merging
479
- - Format conversion
480
- - Watermarking
481
-
482
- #### Advanced Features (Q3-Q4 2026)
483
-
484
- - Animation optimization (GIF, WebP, Lottie)
485
- - 3D model optimization
486
- - Metadata management
487
- - HLS/DASH streaming
488
- - AI-assisted processing
489
- - Pipeline workflows
490
-
491
- See [docs/upcoming-features.md](docs/upcoming-features.md) for complete feature list.
492
-
493
- ---
494
-
495
- ## 🚀 Quick Start
496
-
497
- ### Prerequisites
498
-
499
- - **Node.js** >= 18.0.0
500
- - **pnpm** (recommended) or npm
501
- - **System dependencies** (installed as needed by plugins):
502
- - FFmpeg (for video/audio)
503
- - Sharp/libvips (for images)
504
- - Ghostscript (for PDFs)
505
-
506
- ### Installation
507
-
508
- #### From npm (when published)
43
+ ## Quick Start
509
44
 
510
45
  ```bash
511
- # Install the universal CLI (includes built-in plugins)
46
+ # Install CLI
512
47
  npm install -g @mediaproc/cli
513
48
 
514
- # Start using immediately - image plugin is built-in!
515
- mediaproc image resize photo.jpg -w 1920
516
- mediaproc image convert photo.jpg -f webp
49
+ # Install plugins (or use built-in ones)
50
+ mediaproc add image
51
+ mediaproc add video
52
+ mediaproc add audio
517
53
 
518
- # Check version and list plugins
519
- mediaproc --version
54
+ # List available plugins
520
55
  mediaproc list
521
- ```
522
-
523
- #### From Source (current)
524
-
525
- ```bash
526
- # Clone repository
527
- git clone https://github.com/0xshariq/mediaproc.git
528
- cd mediaproc
529
-
530
- # Install dependencies
531
- pnpm install
532
-
533
- # Build all packages (including built-in plugins)
534
- pnpm build:all
535
56
 
536
- # Link globally
537
- cd plugins/image && pnpm link --global
538
- cd ../.. && pnpm link --global
539
-
540
- # Verify
541
- mediaproc --version
542
- mediaproc list # Should show @mediaproc/image as built-in
543
- ```
544
-
545
- ### Basic Usage
546
-
547
- ```bash
548
- # Image processing (built-in - works immediately!)
549
- mediaproc image resize photo.jpg --width 1920 --height 1080
550
- mediaproc image convert photo.jpg -f webp -q 85
551
- mediaproc image thumbnail photo.jpg -s 300
552
-
553
- # Get help anytime
57
+ # Get help
554
58
  mediaproc --help
555
59
  mediaproc image --help
556
- mediaproc image resize --help
557
60
  ```
558
61
 
559
- ### Adding More Plugins
560
-
561
- ```bash
562
- # Install additional plugins from npm
563
- mediaproc add video # Video processing
564
- mediaproc add audio # Audio processing
565
- mediaproc add document # PDF processing
566
-
567
- # Update plugins to latest version
568
- mediaproc update # Update all plugins
569
- mediaproc update image # Update specific plugin
570
-
571
- # View all plugins (built-in + installed)
572
- mediaproc list
573
-
574
- # Example output:
575
- # 📦 Built-in Plugins:
576
- # ✓ image ★ BUILT-IN
577
- #
578
- # 🔌 User-Installed:
579
- # ✓ video
580
- # ✓ audio
581
- ```
582
-
583
- # View installed plugins
584
-
585
- mediaproc list
586
-
587
- ````
588
-
589
- ---
590
-
591
- ## 📦 Available Plugins
592
-
593
- ### Official Plugins
594
-
595
- | Plugin | Commands | Status | Description |
596
- | ---------------------------------- | -------- | -------------- | ---------------------------------------- |
597
- | **[image](plugins/image)** | 10 | 🚧 In Progress | Resize, convert, optimize, filter images |
598
- | **[video](plugins/video)** | 6 | 🚧 In Progress | Transcode, compress, trim, merge videos |
599
- | **[audio](plugins/audio)** | 5 | 🚧 In Progress | Convert, normalize, trim, merge audio |
600
- | **[document](plugins/document)** | 5 | 📋 Planned | Process PDFs and documents |
601
- | **[animation](plugins/animation)** | 2 | 📋 Planned | Optimize GIFs and animations |
602
- | **[3d](plugins/3d)** | 4 | 📋 Planned | Optimize 3D models |
603
- | **[metadata](plugins/metadata)** | 4 | 📋 Planned | Manage media metadata |
604
- | **[stream](plugins/stream)** | 3 | 📋 Planned | HLS/DASH packaging |
605
- | **[ai](plugins/ai)** | 4 | 💡 Concept | AI-powered processing |
606
- | **[pipeline](plugins/pipeline)** | 2 | 📋 Planned | Workflow automation |
607
-
608
- **Legend:** ✅ Complete | 🚧 In Progress | 📋 Planned | 💡 Concept
609
-
610
- ### Community Plugins
611
-
612
- Third-party plugins are welcome! See [Creating Plugins](#-creating-your-own-plugins) below.
613
-
614
- **Plugin Development Resources:**
615
-
616
- - 📖 [Plugin Integration Guide](docs/plugin-integration-guide.md) - Complete tutorial
617
- - 🏗️ [Plugin Template](https://github.com/0xshariq/mediaproc-plugin-template) - Starter template (coming soon)
618
- - 📚 [Example Plugins](https://github.com/0xshariq/mediaproc-examples) - Real examples (coming soon)
619
-
620
- _Coming soon: Browse community plugins at https://plugins.mediaproc.dev_
621
-
622
- ---
623
-
624
- ## � Plugin Terminology
625
-
626
- ### Important: No Plugins Are Pre-Installed!
627
-
628
- MediaProc CLI is lightweight and contains **NO plugin code**. All plugins must be explicitly installed.
629
-
630
- ### Plugin Types
631
-
632
- 1. **Official Plugins** (`@mediaproc/*`) - Maintained by MediaProc team
633
- - Example: `@mediaproc/image`, `@mediaproc/video`
634
- - High quality, regularly updated
635
- - Install: `mediaproc add image`
636
-
637
- 2. **Community Plugins** (`mediaproc-*`) - Community-maintained
638
- - Example: `mediaproc-custom-filter`
639
- - Follow community standards
640
- - Install: `mediaproc add mediaproc-custom-filter`
641
-
642
- 3. **Third-Party Plugins** - Any compatible npm package
643
- - No naming convention required
644
- - Must implement MediaProc plugin interface
645
- - Install: `mediaproc add package-name`
646
-
647
- ### Quick Reference
648
-
649
- ```bash
650
- # Install CLI (no plugins included)
651
- npm install -g @mediaproc/cli
652
-
653
- # Browse available plugins
654
- mediaproc plugins
62
+ ## Available Plugins
655
63
 
656
- # Install official plugins
657
- mediaproc add image # Image processing
658
- mediaproc add video # Video processing
64
+ ### Built-in Plugins
659
65
 
660
- # Check what's installed
661
- mediaproc list
662
-
663
- # Use installed plugins
664
- mediaproc image resize photo.jpg -w 800
665
- ```
666
-
667
- ### Updating Plugins
668
-
669
- Keep plugins up-to-date for latest features and bug fixes:
66
+ Included with CLI installation:
670
67
 
68
+ #### Image Plugin (51 commands)
671
69
  ```bash
672
- # Update all installed plugins
673
- mediaproc update
674
-
675
- # Update specific plugin
676
- mediaproc update image
677
- mediaproc update video
678
-
679
- # Update with scope control
680
- mediaproc update --global # Global plugins only
681
- mediaproc update image --local # Local plugin only
682
-
683
- # Verbose output
684
- mediaproc update --verbose
70
+ mediaproc image resize photo.jpg --width 1920
71
+ mediaproc image convert *.png --format webp
72
+ mediaproc image compress image.jpg --quality 85
73
+ mediaproc image blur photo.jpg --sigma 10
74
+ mediaproc image watermark photo.jpg --text "Copyright 2026"
685
75
  ```
686
76
 
687
- See full documentation for version control and advanced options.
688
- - Example: `mediaproc-custom-filter`
689
- - Full name required: `mediaproc update mediaproc-custom-filter`
690
-
691
- 3. **Third-Party Plugins** - ◇ THIRD-PARTY
692
- - Any other npm package
693
- - Full package name: `mediaproc update @company/plugin-name`
694
-
695
- **What the update command does:**
77
+ **Commands:** resize, crop, rotate, flip, convert, compress, optimize, blur, sharpen, grayscale, tint, watermark, thumbnail, and 36 more...
696
78
 
697
- 1. **Detects Plugin Type**: Identifies official, community, or third-party plugins
698
- 2. **Detects Installation Scope**: Automatically determines if plugins are installed globally or locally
699
- 3. **Fetches Latest Versions**: Checks npm registry for the newest versions (or specific version)
700
- 4. **Updates Dependencies**: Uses the appropriate package manager (npm, pnpm, yarn, bun, deno)
701
- 5. **Shows Changes**: Displays version changes (old → new)
702
- 6. **Auto-Reload**: Plugins are automatically available after update
79
+ **Formats:** JPG, PNG, WebP, AVIF, TIFF, GIF, SVG
703
80
 
704
- **Examples:**
81
+ [Full Image Plugin Documentation →](plugins/image/README.md)
705
82
 
83
+ #### Video Plugin (6 commands)
706
84
  ```bash
707
- # Update all plugins (recommended)
708
- $ mediaproc update
709
- Updating all MediaProc plugins...
710
- All MediaProc plugins updated successfully
711
-
712
- # Update official plugin to latest
713
- $ mediaproc update image
714
- ✓ Detecting plugin type for image...
715
- ✓ image ★ OFFICIAL updated successfully (1.2.0 → 1.2.2)
716
-
717
- # Update to specific version
718
- $ mediaproc update image --version 1.2.1
719
- ✓ image ★ OFFICIAL updated successfully (1.2.0 → 1.2.1)
720
-
721
- # Update community plugin
722
- $ mediaproc update mediaproc-custom-filter
723
- ✓ mediaproc-custom-filter ◆ COMMUNITY updated successfully
724
-
725
- # Update with verbose output
726
- $ mediaproc update image --verbose
727
- ℹ Package manager: pnpm
728
- ℹ Plugin type: ★ OFFICIAL
729
- ℹ Package name: @mediaproc/image
730
- ℹ Current version: 1.2.0
731
- ℹ Running: pnpm add @mediaproc/image
732
- ✓ image ★ OFFICIAL updated successfully (1.2.0 → 1.2.2)
85
+ mediaproc video compress movie.mp4 --quality medium
86
+ mediaproc video transcode video.mp4 --format webm --codec vp9
87
+ mediaproc video trim video.mp4 --start 10 --end 60
88
+ mediaproc video resize 4k-video.mp4 --preset 1080p
89
+ mediaproc video merge video1.mp4 video2.mp4 video3.mp4
90
+ mediaproc video extract movie.mp4 --type audio --output audio.mp3
733
91
  ```
734
92
 
735
- **📘 Full Guide:** See [Plugin Terminology Guide](docs/plugin-terminology.md) for detailed explanations.
736
-
737
- ---
93
+ **Commands:** compress, transcode, trim, resize, merge, extract
738
94
 
739
- ### Deleting Plugins
95
+ **Formats:** MP4, WebM, AVI, MKV, MOV
740
96
 
741
- Remove plugins you no longer need to free up disk space:
97
+ [Full Video Plugin Documentation →](plugins/video/README.md)
742
98
 
99
+ #### Audio Plugin (5 commands)
743
100
  ```bash
744
- # Delete a plugin (auto-detects installation scope)
745
- mediaproc delete image
746
- mediaproc delete video
747
-
748
- # Delete specific scope
749
- mediaproc delete image --global # Delete globally installed
750
- mediaproc delete image --local # Delete locally installed
751
-
752
- # Skip confirmation prompt
753
- mediaproc delete image --yes # No confirmation
754
-
755
- # Verbose output
756
- mediaproc delete image --verbose # Show detailed information
101
+ mediaproc audio convert song.wav --format mp3 --quality high
102
+ mediaproc audio normalize podcast.mp3 --target -16
103
+ mediaproc audio trim audio.wav --start 10 --duration 30
104
+ mediaproc audio merge track1.mp3 track2.mp3 track3.mp3
105
+ mediaproc audio extract video.mp4 --format mp3
757
106
  ```
758
107
 
759
- **Plugin Type Detection:**
760
-
761
- The delete command automatically detects and handles three types of plugins:
108
+ **Commands:** convert, normalize, trim, merge, extract
762
109
 
763
- 1. **Official Plugins** (`@mediaproc/*`) - OFFICIAL
764
- ```bash
765
- mediaproc delete image # Short name
766
- mediaproc delete @mediaproc/image # Full name
767
- ```
110
+ **Formats:** MP3, AAC, WAV, FLAC, OGG, Opus
768
111
 
769
- 2. **Community Plugins** (`mediaproc-*`) - ◆ COMMUNITY
770
- ```bash
771
- mediaproc delete mediaproc-custom-filter # Full name required
772
- ```
112
+ [Full Audio Plugin Documentation →](plugins/audio/README.md)
773
113
 
774
- 3. **Third-Party Plugins** - ◇ THIRD-PARTY
775
- ```bash
776
- mediaproc delete @company/plugin-name # Full package name
777
- ```
114
+ ### Coming Soon
778
115
 
779
- **What the delete command does:**
116
+ - **Document** - PDF processing (Q2 2026)
117
+ - **Animation** - GIF/Lottie optimization (Q2 2026)
118
+ - **3D** - 3D model processing (Q3 2026)
119
+ - **Stream** - HLS/DASH streaming (Q3 2026)
120
+ - **AI** - AI-powered features (Q3 2026)
780
121
 
781
- 1. **Detects Plugin Type**: Identifies official, community, or third-party plugins
782
- 2. **Detects Installation Scope**: Automatically determines if plugin is installed globally or locally
783
- 3. **Confirms Deletion**: Shows confirmation prompt (skip with `--yes`)
784
- 4. **Uninstalls Package**: Uses the appropriate package manager (npm, pnpm, yarn, bun)
785
- 5. **Shows Status**: Displays deletion status with plugin type badge
786
- 6. **Frees Memory**: Removes all plugin files from disk
787
-
788
- **Examples:**
122
+ ## Plugin Management
789
123
 
790
124
  ```bash
791
- # Delete a plugin
792
- mediaproc delete image
793
- mediaproc delete video --global
794
-
795
- # Skip confirmation
796
- mediaproc delete image --yes
797
-
798
- # Alias: uninstall
799
- mediaproc uninstall image
800
- ```
801
-
802
- **📘 Full Guide:** See [Plugin Terminology Guide](docs/plugin-terminology.md) for detailed explanations.
803
-
804
- ---
805
-
806
- ## �📚 Documentation
807
-
808
- Comprehensive documentation is available in the [docs/](docs/) folder:
809
-
810
- ### Core Documentation
811
-
812
- - **[Plugin Terminology](docs/plugin-terminology.md)** - **START HERE!** Clear definitions and common misconceptions
813
-
814
- - Official vs Community vs Third-Party plugins
815
- - No plugins are pre-installed (explained)
816
- - Installation workflow and plugin states
817
- - Best practices and FAQ
818
-
819
- - **[Plugin Architecture](docs/plugin-architecture.md)** - How the plugin system works
820
-
821
- - On-demand loading architecture
822
- - Plugin discovery and lifecycle
823
- - Why no auto-loading
824
- - Technical implementation
825
-
826
- - **[Plugin System](docs/plugin-system.md)** - Complete guide to the plugin architecture
827
-
828
- - How plugins work
829
- - Plugin discovery and loading
830
- - Creating plugins
831
- - **Third-party plugin standards**
832
- - Plugin submission process
833
- - Quality standards
834
- - Testing and publishing
835
-
836
- - **[Configuration](docs/configuration.md)** - Configure MediaProc for your workflow
837
-
838
- - Configuration file format
839
- - Global and project-level settings
840
- - Plugin-specific options
841
- - Environment variables
842
- - Pipeline configuration
843
-
844
- - **[Upcoming Features](docs/upcoming-features.md)** - Roadmap and planned features
845
- - Phase 1: Core plugins (Q1-Q2 2026)
846
- - Phase 2: Advanced plugins (Q3 2026)
847
- - Phase 3: AI & future-proof (Q4 2026)
848
- - Long-term vision (2027+)
849
-
850
- ### Plugin Documentation
851
-
852
- - **[Image Plugin Documentation](docs/image-plugin-documentation.md)** - Complete reference for the Image Plugin
853
- - All 40 commands documented
854
- - Usage examples and workflows
855
- - Best practices and tips
856
- - Social media presets
857
- - Real-world use cases
858
- - Troubleshooting guide
859
-
860
- ### Community Guides
861
-
862
- - **[Contributing](CONTRIBUTING.md)** - How to contribute to MediaProc
863
-
864
- - Reporting bugs
865
- - Suggesting features
866
- - Pull request guidelines
867
- - Development setup
868
- - Plugin development
869
-
870
- - **[Security](SECURITY.md)** - Security policy and vulnerability reporting
871
-
872
- - Supported versions
873
- - Reporting vulnerabilities
874
- - Security best practices
875
- - Disclosure policy
876
-
877
- - **[Code of Conduct](CODE_OF_CONDUCT.md)** - Community guidelines
878
-
879
- - Our pledge
880
- - Standards and expectations
881
- - Enforcement
882
- - Reporting process
125
+ # List installed plugins
126
+ mediaproc list
883
127
 
884
- - **[Changelog](CHANGELOG.md)** - Release history and changes
885
- - **[License](LICENSE)** - MIT License
128
+ # Install plugins
129
+ mediaproc add <plugin-name>
886
130
 
887
- ### External Resources (Coming Soon)
131
+ # Remove plugins
132
+ mediaproc remove <plugin-name>
888
133
 
889
- - 🌐 Website: https://mediaproc.dev
890
- - 📖 Full Docs: https://docs.mediaproc.dev
891
- - 🎓 Tutorials: https://tutorials.mediaproc.dev
892
- - 📦 Plugin Marketplace: https://plugins.mediaproc.dev
893
- - 💻 GitHub: https://github.com/0xshariq/mediaproc
134
+ # Update plugins
135
+ mediaproc update # Update all
136
+ mediaproc update <plugin> # Update specific
894
137
 
895
- ---
138
+ # Browse available plugins
139
+ mediaproc plugins
140
+ ```
896
141
 
897
- ## 💡 Examples
142
+ ## Examples
898
143
 
899
144
  ### Image Processing
900
145
 
901
146
  ```bash
902
- # Resize image
147
+ # Resize for web
903
148
  mediaproc image resize photo.jpg --width 1920 --height 1080 --fit cover
904
149
 
905
- # Convert format
906
- mediaproc image convert photo.jpg --format webp --quality 85
150
+ # Batch convert to WebP
151
+ mediaproc image convert *.jpg --format webp --quality 85
907
152
 
908
- # Apply filter
909
- mediaproc image grayscale photo.jpg --output bw-photo.jpg
153
+ # Create thumbnails
154
+ mediaproc image thumbnail photo.jpg --size 256 --output thumb.jpg
910
155
 
911
- # Watermark
912
- mediaproc image watermark photo.jpg --text "© 2025" --position bottom-right
156
+ # Add watermark
157
+ mediaproc image watermark photo.jpg --text "© 2026" --position southeast
913
158
 
914
- # Batch processing
915
- for img in photos/*.jpg; do
916
- mediaproc image convert "$img" --format webp --quality 85
917
- done
918
- ````
159
+ # Optimize for web
160
+ mediaproc image optimize image.jpg --quality 80
161
+ ```
919
162
 
920
163
  ### Video Processing
921
164
 
922
165
  ```bash
923
166
  # Compress video
924
- mediaproc video compress large-video.mp4 --quality 80 --codec h264
167
+ mediaproc video compress movie.mp4 --quality medium --output compressed.mp4
925
168
 
926
- # Transcode format
927
- mediaproc video transcode input.avi --format mp4
169
+ # Convert to WebM
170
+ mediaproc video transcode video.mp4 --format webm --codec vp9
928
171
 
929
- # Extract frames
930
- mediaproc video extract video.mp4 --fps 1 --format png
172
+ # Cut segment
173
+ mediaproc video trim long-video.mp4 --start 00:10:00 --end 00:15:00
931
174
 
932
- # Trim video
933
- mediaproc video trim video.mp4 --start 00:01:30 --end 00:02:45
175
+ # Scale down
176
+ mediaproc video resize 4k-video.mp4 --preset 1080p
934
177
 
935
- # Merge videos
936
- mediaproc video merge video1.mp4 video2.mp4 video3.mp4 --output combined.mp4
178
+ # Extract audio
179
+ mediaproc video extract movie.mp4 --type audio --output soundtrack.mp3
937
180
  ```
938
181
 
939
182
  ### Audio Processing
940
183
 
941
184
  ```bash
942
- # Convert format
943
- mediaproc audio convert song.wav --format mp3 --bitrate 320k
185
+ # Convert to MP3
186
+ mediaproc audio convert song.wav --format mp3 --quality 320k
944
187
 
945
188
  # Normalize volume
946
- mediaproc audio normalize podcast.mp3 --target -16
947
-
948
- # Extract audio from video
949
- mediaproc audio extract video.mp4 --format flac
189
+ mediaproc audio normalize podcast.mp3 --target -16 --output normalized.mp3
950
190
 
951
- # Trim audio
952
- mediaproc audio trim song.mp3 --start 00:30 --end 03:45
953
- ```
191
+ # Merge tracks
192
+ mediaproc audio merge intro.mp3 main.mp3 outro.mp3 --output complete.mp3
954
193
 
955
- ### Pipeline Workflows
956
-
957
- ```yaml
958
- # workflow.yaml
959
- name: "Optimize Images for Web"
960
- description: "Batch image optimization pipeline"
961
-
962
- steps:
963
- - plugin: image
964
- command: resize
965
- options:
966
- width: 1920
967
- height: 1080
968
- fit: contain
969
-
970
- - plugin: image
971
- command: convert
972
- options:
973
- format: webp
974
- quality: 85
975
-
976
- - plugin: image
977
- command: optimize
978
- options:
979
- level: 9
980
- ```
981
-
982
- ```bash
983
- # Run pipeline
984
- mediaproc run workflow.yaml --input images/ --output optimized/
194
+ # Extract from video
195
+ mediaproc audio extract video.mp4 --format flac
985
196
  ```
986
197
 
987
- _Note: Image processing commands are **fully implemented and ready to use**! Video, audio, and other commands are planned for Q1-Q2 2026. See [Current Status](#-current-status) for details._
988
-
989
- ---
990
-
991
- ## 🔧 Development
992
-
993
- ### Setup Development Environment
198
+ ## CLI Commands
994
199
 
995
- ```bash
996
- # Clone repository
997
- git clone https://github.com/0xshariq/mediaproc.git
998
- cd mediaproc
999
-
1000
- # Install dependencies
1001
- pnpm install
200
+ ### Plugin Management
201
+ - `mediaproc add <plugin>` - Install plugin
202
+ - `mediaproc remove <plugin>` - Uninstall plugin
203
+ - `mediaproc list` - List installed plugins
204
+ - `mediaproc plugins` - Browse available plugins
205
+ - `mediaproc update [plugin]` - Update plugin(s)
1002
206
 
1003
- # Build all packages
1004
- pnpm build
207
+ ### Help & Info
208
+ - `mediaproc --help` - Show help
209
+ - `mediaproc <plugin> --help` - Plugin-specific help
210
+ - `mediaproc --version` - Show version
1005
211
 
1006
- # Link CLI globally
1007
- pnpm link --global
212
+ ## Requirements
1008
213
 
1009
- # Run in dev mode (watch mode)
1010
- pnpm dev
1011
- ```
214
+ - **Node.js** >= 18.0.0
215
+ - **FFmpeg** (for video/audio plugins)
216
+ ```bash
217
+ # macOS
218
+ brew install ffmpeg
219
+
220
+ # Ubuntu/Debian
221
+ sudo apt install ffmpeg
222
+
223
+ # Windows
224
+ choco install ffmpeg
225
+ ```
226
+
227
+ ## Development
1012
228
 
1013
229
  ### Project Structure
1014
230
 
1015
231
  ```
1016
232
  mediaproc/
1017
- ├── src/ # Core CLI source code
1018
- ├── cli.ts # Main entry point
1019
- │ ├── plugin-manager.ts # Plugin discovery & loading
1020
- │ ├── plugin-registry.ts # Plugin name mapping
1021
- ├── types.ts # TypeScript types
1022
- │ └── commands/ # Core commands
1023
-
1024
- ├── plugins/ # Plugin packages
1025
- │ ├── image/ # Image processing plugin
1026
- │ ├── video/ # Video processing plugin
1027
- │ ├── audio/ # Audio processing plugin
1028
- │ └── .../ # More plugins
1029
-
1030
- ├── docs/ # Documentation
1031
- ├── bin/ # Executable files
1032
- ├── CONTRIBUTING.md # Contribution guidelines
1033
- ├── SECURITY.md # Security policy
1034
- ├── CODE_OF_CONDUCT.md # Community guidelines
1035
- ├── CHANGELOG.md # Release history
1036
- └── package.json # Root package config
1037
- ```
1038
-
1039
- ### Building
1040
-
1041
- ```bash
1042
- # Build all packages
1043
- pnpm build
1044
-
1045
- # Build specific plugin
1046
- pnpm --filter @mediaproc/image build
1047
-
1048
- # Clean build artifacts
1049
- pnpm clean
1050
-
1051
- # Clean and rebuild
1052
- pnpm clean && pnpm build
233
+ ├── src/ # Core CLI source
234
+ ├── plugins/ # Official plugins
235
+ │ ├── image/ # Image processing
236
+ │ ├── video/ # Video processing
237
+ └── audio/ # Audio processing
238
+ ├── docs/ # Documentation
239
+ └── web/ # Documentation website
1053
240
  ```
1054
241
 
1055
- ### Testing
242
+ ### Build & Test
1056
243
 
1057
244
  ```bash
1058
- # Run all tests (when implemented)
1059
- pnpm test
1060
-
1061
- # Test specific plugin
1062
- pnpm --filter @mediaproc/image test
1063
-
1064
- # Watch mode
1065
- pnpm test --watch
1066
-
1067
- # Coverage
1068
- pnpm test --coverage
1069
- ```
1070
-
1071
- ---
1072
-
1073
- ## 🎨 Creating Your Own Plugins
1074
-
1075
- MediaProc welcomes third-party plugins! Anyone can create and publish plugins.
1076
-
1077
- ### Quick Start
1078
-
1079
- ```bash
1080
- # Create plugin directory
1081
- mkdir mediaproc-plugin-myprocessor
1082
- cd mediaproc-plugin-myprocessor
1083
-
1084
- # Initialize
1085
- npm init -y
1086
-
1087
245
  # Install dependencies
1088
- npm install --save-peer @mediaproc/cli
1089
- npm install --save-dev typescript @types/node
1090
- npm install chalk commander ora
1091
- ```
1092
-
1093
- ### Plugin Structure
1094
-
1095
- ```typescript
1096
- // src/index.ts
1097
- import { Command } from "commander";
1098
-
1099
- export const name = "myprocessor";
1100
- export const version = "1.0.0";
1101
- export const description = "My custom processor";
1102
-
1103
- export function register(program: Command): void {
1104
- const cmd = program.command(name).description(description);
1105
-
1106
- cmd
1107
- .command("process <input>")
1108
- .description("Process a file")
1109
- .option("-o, --output <path>", "Output path")
1110
- .action(async (input, options) => {
1111
- // Your processing logic
1112
- console.log("Processing:", input);
1113
- });
1114
- }
1115
- ```
1116
-
1117
- ### Publishing
1118
-
1119
- ```bash
1120
- # Build
1121
- npm run build
1122
-
1123
- # Test locally
1124
- npm link
1125
- mediaproc myprocessor process test.jpg
1126
-
1127
- # Publish
1128
- npm publish
1129
- ```
1130
-
1131
- ### Getting Listed
1132
-
1133
- Submit your plugin to be featured in the plugin directory:
1134
-
1135
- 1. Publish to npm
1136
- 2. Open an issue with [Plugin Submission] tag
1137
- 3. We'll review and list it!
1138
-
1139
- **Full Guide:** See [docs/plugin-system.md](docs/plugin-system.md) for complete plugin development guide, including:
1140
-
1141
- - Naming conventions
1142
- - Required exports and structure
1143
- - Quality standards
1144
- - Submission process
1145
- - Testing and best practices
1146
-
1147
- ---
1148
-
1149
- ## 🗺️ Roadmap
1150
-
1151
- ### Q1 2026 - Core Plugins
1152
-
1153
- - ✅ Complete image plugin implementation
1154
- - ✅ Complete video plugin implementation
1155
- - ✅ Complete audio plugin implementation
1156
- - ✅ Performance optimization
1157
- - ✅ Comprehensive testing
1158
- - ✅ Beta release
1159
-
1160
- ### Q2 2026 - Advanced Features
1161
-
1162
- - ✅ Document plugin (PDF processing)
1163
- - ✅ Animation plugin (GIF optimization)
1164
- - ✅ Metadata plugin
1165
- - ✅ Pipeline workflows
1166
- - ✅ Plugin marketplace launch
1167
-
1168
- ### Q3 2026 - Specialized Plugins
1169
-
1170
- - ✅ 3D model optimization
1171
- - ✅ Streaming (HLS/DASH)
1172
- - ✅ GUI wrapper (Electron)
1173
- - ✅ VS Code extension
1174
-
1175
- ### Q4 2026 - AI & Future-Proof
1176
-
1177
- - ✅ AI-assisted features
1178
- - ✅ Background removal
1179
- - ✅ Auto-captioning
1180
- - ✅ v1.0 stable release
1181
-
1182
- ### 2027+ - Long-Term Vision
1183
-
1184
- - Cloud integration (S3, CDN)
1185
- - Serverless function support
1186
- - Enterprise features
1187
- - Mobile SDK
1188
- - WebAssembly support
1189
-
1190
- **Full Roadmap:** See [docs/upcoming-features.md](docs/upcoming-features.md) for detailed feature plans.
1191
-
1192
- ---
1193
-
1194
- ## 🤝 Contributing
1195
-
1196
- We welcome contributions of all kinds! MediaProc is in active development and there are many ways to help:
1197
-
1198
- ### Ways to Contribute
1199
-
1200
- - 🐛 **Report Bugs** - [Open an issue](https://github.com/0xshariq/mediaproc/issues/new?template=bug_report.md)
1201
- - 💡 **Suggest Features** - [Start a discussion](https://github.com/0xshariq/mediaproc/discussions/new?category=ideas)
1202
- - 📝 **Improve Docs** - Fix typos, add examples, clarify explanations
1203
- - 🔧 **Write Code** - Implement features, fix bugs, optimize performance
1204
- - 🧪 **Write Tests** - Improve test coverage
1205
- - 🎨 **Create Plugins** - Build community plugins
1206
- - 💬 **Help Others** - Answer questions in discussions
1207
- - 🌟 **Spread the Word** - Star the repo, share on social media
1208
-
1209
- ### Getting Started
1210
-
1211
- 1. Read the [Contributing Guide](CONTRIBUTING.md)
1212
- 2. Check the [Code of Conduct](CODE_OF_CONDUCT.md)
1213
- 3. Look for [good first issues](https://github.com/0xshariq/mediaproc/labels/good%20first%20issue)
1214
- 4. Join discussions and ask questions
1215
- 5. Submit your first PR!
1216
-
1217
- ### Development Workflow
1218
-
1219
- ```bash
1220
- # Fork and clone
1221
- git clone https://github.com/YOUR_USERNAME/mediaproc.git
246
+ pnpm install
1222
247
 
1223
- # Create branch
1224
- git checkout -b feature/my-feature
248
+ # Build CLI
249
+ pnpm build
1225
250
 
1226
- # Make changes
1227
- # ... edit files ...
251
+ # Build all plugins
252
+ pnpm build:all
1228
253
 
1229
- # Build and test
1230
- pnpm build
254
+ # Test
1231
255
  pnpm test
1232
256
 
1233
- # Commit
1234
- git commit -m "feat(image): add AVIF support"
1235
-
1236
- # Push and create PR
1237
- git push origin feature/my-feature
257
+ # Run locally
258
+ node dist/cli.js
1238
259
  ```
1239
260
 
1240
- **Full Guide:** See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed contribution guidelines.
1241
-
1242
- ---
1243
-
1244
- ## 👥 Community
1245
-
1246
- ### Get Help & Connect
1247
-
1248
- - **💬 GitHub Discussions** - Ask questions, share ideas
1249
- - **🐛 GitHub Issues** - Report bugs, request features
1250
- - **📧 Email** - support@mediaproc.dev (coming soon)
1251
- - **🐦 Twitter** - @mediaproc (coming soon)
1252
- - **💬 Discord** - Join our community (coming soon)
1253
-
1254
- ### Recognition
1255
-
1256
- Contributors are recognized in:
1257
-
1258
- - [CHANGELOG.md](CHANGELOG.md) - Release contributions
1259
- - [GitHub Contributors](https://github.com/0xshariq/mediaproc/graphs/contributors) - Code contributions
1260
- - Social media shoutouts
1261
- - Plugin spotlights
1262
-
1263
- ---
1264
-
1265
- ## 📄 License
261
+ ### Creating Plugins
1266
262
 
1267
- MediaProc is [MIT licensed](LICENSE).
263
+ See [Plugin Integration Guide](docs/plugin-integration-guide.md) for complete documentation on creating your own plugins.
1268
264
 
1269
- ```
1270
- MIT License
265
+ ## Documentation
1271
266
 
1272
- Copyright (c) 2025 0xshariq and MediaProc contributors
1273
-
1274
- Permission is hereby granted, free of charge, to any person obtaining a copy
1275
- of this software and associated documentation files (the "Software"), to deal
1276
- in the Software without restriction...
1277
- ```
267
+ - [Installation Guide](docs/configuration.md#installation)
268
+ - [Plugin Integration Guide](docs/plugin-integration-guide.md)
269
+ - [Plugin System Architecture](docs/plugin-system.md)
270
+ - [Architecture Overview](docs/architecture-decisions.md)
271
+ - [Contributing Guide](CONTRIBUTING.md)
272
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
1278
273
 
1279
- See [LICENSE](LICENSE) for full license text.
274
+ **📚 Full Documentation:** [https://mediaproc.dev](https://mediaproc.dev)
1280
275
 
1281
- ---
276
+ ## Roadmap
1282
277
 
1283
- ## 🙏 Acknowledgments
278
+ **Current (v0.6.0-beta):**
279
+ - ✅ Core CLI with plugin system
280
+ - ✅ Image Plugin (51 commands)
281
+ - ✅ Video Plugin (6 commands)
282
+ - ✅ Audio Plugin (5 commands)
1284
283
 
1285
- MediaProc is built on top of amazing open-source projects:
284
+ **Q1 2026:**
285
+ - 🚧 Document Plugin
286
+ - 🚧 Comprehensive testing
287
+ - 🚧 CI/CD pipeline
1286
288
 
1287
- ### Core Technologies
289
+ **Q2 2026:**
290
+ - 📋 Animation Plugin
291
+ - 📋 Metadata Plugin
292
+ - 📋 v1.0 Release
1288
293
 
1289
- - **[Sharp](https://sharp.pixelplumbing.com/)** - High-performance image processing (libvips)
1290
- - **[FFmpeg](https://ffmpeg.org/)** - Complete multimedia framework
1291
- - **[Commander.js](https://github.com/tj/commander.js)** - Node.js CLI framework
1292
- - **[Chalk](https://github.com/chalk/chalk)** - Terminal string styling
1293
- - **[Ora](https://github.com/sindresorhus/ora)** - Elegant terminal spinners
1294
- - **[Execa](https://github.com/sindresorhus/execa)** - Better child_process
294
+ **Q3-Q4 2026:**
295
+ - 📋 3D Plugin
296
+ - 📋 Stream Plugin
297
+ - 📋 AI Plugin
298
+ - 📋 Plugin Marketplace
1295
299
 
1296
- ### Inspiration
300
+ See [Upcoming Features](docs/upcoming-features.md) for details.
1297
301
 
1298
- - **FFmpeg** - The gold standard for media processing
1299
- - **Sharp** - Blazing fast image processing
1300
- - **ImageMagick** - Comprehensive image manipulation
1301
- - **Homebrew** - Plugin-like package management
1302
- - **VS Code** - Extension architecture
302
+ ## Contributing
1303
303
 
1304
- ---
304
+ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
1305
305
 
1306
- ## 🌟 Star History
306
+ **Ways to contribute:**
307
+ - 🐛 Report bugs
308
+ - 💡 Suggest features
309
+ - 📝 Improve documentation
310
+ - 🔧 Submit pull requests
311
+ - 🎨 Create plugins
1307
312
 
1308
- If you find MediaProc useful, please consider giving it a star ⭐️
313
+ ## Community
1309
314
 
1310
- It helps us grow and shows appreciation for the work!
315
+ - **Issues:** [GitHub Issues](https://github.com/0xshariq/mediaproc-cli/issues)
316
+ - **Discussions:** [GitHub Discussions](https://github.com/0xshariq/mediaproc-cli/discussions)
317
+ - **Twitter:** [@0xshariq](https://twitter.com/0xshariq)
1311
318
 
1312
- ---
319
+ ## License
1313
320
 
1314
- ## 📞 Contact
321
+ MIT © [0xshariq](https://github.com/0xshariq)
1315
322
 
1316
- - **Author**: [@0xshariq](https://github.com/0xshariq)
1317
- - **Email**: support@mediaproc.dev (coming soon)
1318
- - **Website**: https://mediaproc.dev (coming soon)
1319
- - **Issues**: [GitHub Issues](https://github.com/0xshariq/mediaproc/issues)
1320
- - **Discussions**: [GitHub Discussions](https://github.com/0xshariq/mediaproc/discussions)
1321
-
1322
- ---
1323
-
1324
- ## ⚠️ Development Notice
1325
-
1326
- **MediaProc is under active development.**
1327
-
1328
- - API and commands may change before v1.0
1329
- - Not recommended for production use yet
1330
- - Feedback and contributions highly appreciated!
1331
- - Expected stable release: Q4 2026
323
+ See [LICENSE](LICENSE) for details.
1332
324
 
1333
325
  ---
1334
326
 
1335
327
  <div align="center">
1336
328
 
1337
- **Built with ❤️ by [@0xshariq](https://github.com/0xshariq) and [contributors](https://github.com/0xshariq/mediaproc/graphs/contributors)**
1338
-
1339
- [⬆ Back to Top](#mediaproc)
1340
-
1341
- </div>
1342
-
1343
- ---
1344
-
1345
- ## 📖 Plugin Development
1346
-
1347
- ### Creating Third-Party Plugins
1348
-
1349
- Want to extend MediaProc with your own functionality? Follow our comprehensive guide:
1350
-
1351
- **\ud83d\udcd8 [Plugin Integration Guide](docs/plugin-integration-guide.md)** - Complete step-by-step tutorial covering:
1352
-
1353
- - Quick start (5-minute plugin)
1354
- - Plugin architecture explained
1355
- - Step-by-step tutorial with real example
1356
- - Plugin standards and requirements
1357
- - Testing and debugging
1358
- - Publishing to npm
1359
- - Getting your plugin featured
1360
-
1361
- **Additional Resources:**
1362
-
1363
- - \ud83d\udcd6 [Plugin System Architecture](docs/plugin-system.md) - Deep dive into how plugins work
1364
- - \ud83c\udfd7\ufe0f [Plugin Template](https://github.com/0xshariq/mediaproc-plugin-template) - Starter template (coming soon)
1365
- - \ud83d\udcda [Example Plugins](https://github.com/0xshariq/mediaproc-examples) - Real-world examples (coming soon)
1366
-
1367
- ### Plugin Ideas
1368
-
1369
- Need inspiration? Here are some plugin ideas:
1370
-
1371
- - **Filters** - Instagram-style filters, artistic effects
1372
- - **Converters** - Specialized format conversions
1373
- - **Social Media** - Platform-specific optimizations (Twitter, Facebook, Instagram)
1374
- - **Analysis** - Media analysis, quality checking, metadata extraction
1375
- - **Cloud Integration** - S3, Cloudinary, Imgur upload
1376
- - **AI/ML** - Face detection, object recognition, style transfer
1377
- - **Automation** - Batch processing, workflow templates
1378
-
1379
- ---
1380
-
1381
- ## 📄 License
329
+ **Built with ❤️ by [@0xshariq](https://github.com/0xshariq)**
1382
330
 
1383
- MediaProc is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
331
+ Give us a ⭐️ if you find this project useful!
1384
332
 
1385
- ### What This Means
1386
-
1387
- ✅ **You CAN:**
1388
-
1389
- - Use MediaProc commercially
1390
- - Modify the source code
1391
- - Distribute your modifications
1392
- - Use it privately
1393
- - Contribute to the project
1394
-
1395
- ⚠️ **You MUST:**
1396
-
1397
- - Include the original copyright notice
1398
- - Include the license text
1399
- - Give credit to **[@0xshariq](https://github.com/0xshariq)** (original author)
1400
-
1401
- ❌ **We're NOT LIABLE:**
1402
-
1403
- - No warranty is provided
1404
- - Authors are not liable for any damages
1405
-
1406
- ### Attribution
1407
-
1408
- If you use MediaProc in your project, a mention would be appreciated:
1409
-
1410
- ```
1411
- Powered by MediaProc - https://github.com/0xshariq/mediaproc-cli
1412
- Created by @0xshariq
1413
- ```
1414
-
1415
- ---
1416
-
1417
- ## 👥 Credits
1418
-
1419
- **Created and maintained by:**
1420
-
1421
- - **[@0xshariq](https://github.com/0xshariq)** - Original Author & Lead Developer
1422
-
1423
- **Contributors:**
1424
- See [CONTRIBUTORS.md](CONTRIBUTORS.md) for the list of amazing people who have contributed to this project.
1425
-
1426
- Want to be listed here? Check out our [Contributing Guide](CONTRIBUTING.md)!
1427
-
1428
- ---
333
+ </div>