sogni-gen 1.3.4 → 1.4.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/SKILL.md
CHANGED
|
@@ -381,6 +381,41 @@ node {{skillDir}}/sogni-gen.mjs --json --balance
|
|
|
381
381
|
# Then send via message tool with filePath
|
|
382
382
|
```
|
|
383
383
|
|
|
384
|
+
## Animate Between Two Images (First-Frame / Last-Frame)
|
|
385
|
+
|
|
386
|
+
When a user asks to **animate between two images**, use `--ref` (first frame) and `--ref-end` (last frame) to create a creative interpolation video:
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
# Animate from image A to image B
|
|
390
|
+
node {{skillDir}}/sogni-gen.mjs -q --video --ref /tmp/imageA.png --ref-end /tmp/imageB.png -o /tmp/transition.mp4 "descriptive prompt of the transition"
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
### Animate a Video to an Image (Scene Continuation)
|
|
394
|
+
|
|
395
|
+
When a user asks to **animate from a video to an image** (or "continue" a video into a new scene):
|
|
396
|
+
|
|
397
|
+
1. **Extract the last frame** of the existing video:
|
|
398
|
+
```bash
|
|
399
|
+
ffmpeg -y -sseof -0.1 -i /tmp/existing.mp4 -frames:v 1 -update 1 /tmp/lastframe.png
|
|
400
|
+
```
|
|
401
|
+
2. **Generate a new video** using the last frame as `--ref` and the target image as `--ref-end`:
|
|
402
|
+
```bash
|
|
403
|
+
node {{skillDir}}/sogni-gen.mjs -q --video --ref /tmp/lastframe.png --ref-end /tmp/target.png -o /tmp/continuation.mp4 "scene transition prompt"
|
|
404
|
+
```
|
|
405
|
+
3. **Stitch the videos** together with ffmpeg:
|
|
406
|
+
```bash
|
|
407
|
+
ffmpeg -y -i /tmp/existing.mp4 -i /tmp/continuation.mp4 \
|
|
408
|
+
-filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[outv]" \
|
|
409
|
+
-map "[outv]" -c:v libx264 -crf 18 /tmp/full_sequence.mp4
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
This ensures visual continuity — the new clip picks up exactly where the previous one ended.
|
|
413
|
+
|
|
414
|
+
**Always apply this pattern when:**
|
|
415
|
+
- User says "animate image A to image B" → use `--ref A --ref-end B`
|
|
416
|
+
- User says "animate this video to this image" → extract last frame, use as `--ref`, target image as `--ref-end`, then stitch
|
|
417
|
+
- User says "continue this video" with a target image → same as above
|
|
418
|
+
|
|
384
419
|
## JSON Output
|
|
385
420
|
|
|
386
421
|
```json
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "sogni-gen",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
5
5
|
"display_name": "Sogni AI Image & Video Generation",
|
|
6
6
|
"description": "Generate images and videos using Sogni AI's decentralized GPU network",
|
|
7
7
|
"long_description": "Generate images, edit photos, create videos, and transfer faces using Sogni AI. Supports multiple models with different speed/quality tradeoffs. Uses Spark tokens — claim 50 free daily at https://app.sogni.ai/",
|
package/openclaw.plugin.json
CHANGED