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.3.4",
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/",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sogni-gen-desktop-server",
3
- "version": "1.3.4",
3
+ "version": "1.4.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "engines": {
@@ -2,7 +2,7 @@
2
2
  "id": "sogni-gen",
3
3
  "name": "Sogni Image & Video Generation",
4
4
  "description": "Generate images and videos using Sogni AI via the sogni-gen skill.",
5
- "version": "1.3.4",
5
+ "version": "1.4.0",
6
6
  "skills": [
7
7
  "."
8
8
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sogni-gen",
3
- "version": "1.3.4",
3
+ "version": "1.4.0",
4
4
  "description": "Sogni AI image & video generation — OpenClaw plugin and MCP server for Claude Code / Claude Desktop",
5
5
  "type": "module",
6
6
  "main": "sogni-gen.mjs",