quickmagic-cli 1.9.0 → 1.9.1
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 +11 -0
- package/package.json +2 -2
- package/src/commands/tools.js +10 -1
package/README.md
CHANGED
|
@@ -129,6 +129,14 @@ Ghi chú chung trước khi xem bảng:
|
|
|
129
129
|
| `qm cutout` | Tách nền / PNG trong suốt / remix scene | Có |
|
|
130
130
|
| `qm edit <image> --tool <t>` | restore / beauty / muscle / color_boost (upscale → dùng `qm upscale`) | Có |
|
|
131
131
|
| `qm upscale <file...> [--video]` | Upscale ảnh (2k/4k/8k) hoặc video (nâng nét/tăng fps) — 1 lệnh nhiều file = mỗi file 1 job | Có |
|
|
132
|
+
| `qm remove-bg <image>` | Tách nền ảnh → PNG trong suốt | Có |
|
|
133
|
+
|
|
134
|
+
### Model 3D
|
|
135
|
+
|
|
136
|
+
| Lệnh | Mô tả | Credit |
|
|
137
|
+
|---|---|---|
|
|
138
|
+
| `qm 3d create (--image <i>\|--prompt <p>)` | Tạo model 3D (.glb) từ ảnh hoặc mô tả (`--model tripo-v3\|tripo-v2-5`, `--texture standard\|textureless`) | Có |
|
|
139
|
+
| `qm 3d animate <model_url> [--preset <p>]` | Gắn khung xương + chuyển động cho model 3D đã tạo (vd `dance_01`) | Có |
|
|
132
140
|
|
|
133
141
|
### Video quảng cáo / Marketing
|
|
134
142
|
|
|
@@ -148,6 +156,9 @@ Ghi chú chung trước khi xem bảng:
|
|
|
148
156
|
| `qm subtitle <video_url>` | Thêm phụ đề (+ lồng tiếng, dịch) | Có |
|
|
149
157
|
| `qm split <video_url>` | Cắt video dài → clip ngắn | Có |
|
|
150
158
|
| `qm motion <video_url> --image <url...>` | Áp chuyển động video vào ảnh (Kling) | Có |
|
|
159
|
+
| `qm extend-video <video> --duration <s>` | Kéo dài video — sinh tiếp N giây sau khung cuối (wan 3-10s, seedance 4-15s) | Có |
|
|
160
|
+
| `qm talking-photo --image <i> --audio <a>` | Ảnh chân dung + audio → video nói chuyện khớp môi | Có |
|
|
161
|
+
| `qm sfx <prompt> [--duration <s>]` | Tạo hiệu ứng âm thanh từ mô tả (whoosh/nổ/mưa/bước chân…) | Có |
|
|
151
162
|
| `qm tts (--text <t>\|--file <path>) --voice <v>` | Chuyển văn bản → giọng nói (6 model qimi_1.5/2.5/3/3.5/5/5.5; qimi_3.5 có kiểu đọc `--style`) | Có |
|
|
152
163
|
| `qm voices list --model <m>` | Liệt kê giọng theo model + giá (`pricing`) | — |
|
|
153
164
|
| `qm voices clone --audio <file\|url> --name <n>` | Nhân bản giọng riêng (dùng cho qimi_5/5.5) | Có |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quickmagic-cli",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"description": "Quick Magic CLI — generate AI images/videos, product photoshoots, virtual try-on, hook ad videos, subtitles, text-to-speech/voice cloning, AI song generation, image upscaling and more via the Quick Magic REST API, with browser-based OAuth PKCE login (no API keys to manage). Ships with 11 Claude Agent Skills and an MCP server integration.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"quickmagic": "src/index.js",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"LICENSE"
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
|
-
"check": "node --check src/index.js"
|
|
17
|
+
"check": "node --check src/index.js && node scripts/check-command-handlers.js"
|
|
18
18
|
},
|
|
19
19
|
"keywords": [
|
|
20
20
|
"quickmagic",
|
package/src/commands/tools.js
CHANGED
|
@@ -72,9 +72,18 @@ const subtitle = run(async (video_url, o) => jobHint(await call('POST', '/subtit
|
|
|
72
72
|
const split = run(async (video_url, o) => jobHint(await call('POST', '/split', { body: { video_url, clip_mode: o.mode, title_lang: o.titleLang, translate_lang: o.translate, client_request_id: o.crid } })));
|
|
73
73
|
const motion = run(async (video_url, o) => jobHint(await call('POST', '/motion', { body: { video_url, image_urls: await resolveMediaInputs(o.image || []), model: o.model, mode: o.mode, prompt: o.prompt, client_request_id: o.crid } })));
|
|
74
74
|
|
|
75
|
+
// ── Media-tools mở rộng [260902] (SFX / tách nền / 3D / ảnh nói / kéo dài video — cùng kho model Spaces) ──
|
|
76
|
+
// index.js khai báo 6 lệnh này từ v1.8.0 nhưng 6 hàm chưa từng được commit ⇒ v1.9.0 chạy là "Cannot read properties of undefined".
|
|
77
|
+
const sfx = run(async (prompt, o) => jobHint(await call('POST', '/sfx', { body: { prompt, model: o.model, duration_sec: o.duration ? Number(o.duration) : undefined, client_request_id: o.crid } })));
|
|
78
|
+
const removeBg = run(async (image, o) => jobHint(await call('POST', '/remove-bg', { body: { image: await rmi(image), client_request_id: o.crid } })));
|
|
79
|
+
const gen3d = run(async (o) => jobHint(await call('POST', '/3d', { body: { image: await rmi(o.image), prompt: o.prompt, model: o.model, texture: o.texture, client_request_id: o.crid } })));
|
|
80
|
+
const animate3d = run(async (model_url, o) => jobHint(await call('POST', '/3d/animate', { body: { model_url, preset: o.preset, client_request_id: o.crid } })));
|
|
81
|
+
const talkingPhoto = run(async (o) => jobHint(await call('POST', '/talking-photo', { body: { image: await rmi(o.image), audio_url: await rmi(o.audio), model: o.model, resolution: o.resolution, prompt: o.prompt, client_request_id: o.crid } })));
|
|
82
|
+
const extendVideo = run(async (video, o) => jobHint(await call('POST', '/extend-video', { body: { video: await rmi(video), duration: Number(o.duration), model: o.model, resolution: o.resolution, prompt: o.prompt, client_request_id: o.crid } })));
|
|
83
|
+
|
|
75
84
|
// ── Cutout / Hook Studio ──
|
|
76
85
|
const cutout = run(async (o) => jobHint(await call('POST', '/cutout', { body: { operation: o.operation, ref_image_urls: await resolveMediaInputs(o.ref || []), prompt: o.prompt, model: o.model, aspect_ratio: o.aspectRatio, quality: o.quality, num_images: o.n ? Number(o.n) : undefined, transparent_bg: o.transparentBg, client_request_id: o.crid } })));
|
|
77
86
|
const hookPresets = run(async () => out(await call('GET', '/hook/presets')));
|
|
78
87
|
const hookVideo = run(async (o) => jobHint(await call('POST', '/hook/videos', { body: { preset_id: o.preset, character_url: await rmi(o.character), product_url: await rmi(o.product), aspect: o.aspect, speech_lang: o.speechLang, custom_cta: o.cta, location_url: o.location, accessory_url: o.accessory, style: o.style, format: o.format, resolution: o.resolution, client_request_id: o.crid } })));
|
|
79
88
|
|
|
80
|
-
module.exports = { scrape, importSocial, assets, analyze, marketingModes, marketingVideo, product, fashion, edit, upscale, tryon, stt, subtitle, split, motion, cutout, hookPresets, hookVideo };
|
|
89
|
+
module.exports = { scrape, importSocial, assets, analyze, marketingModes, marketingVideo, product, fashion, edit, upscale, tryon, stt, subtitle, split, motion, cutout, hookPresets, hookVideo, sfx, removeBg, gen3d, animate3d, talkingPhoto, extendVideo };
|