360 Secure SkillHub
360 安全技能中心

Pictures To Video

核心功能:AI将静态图片生成带平滑运镜、视差深度的动画视频,支持多图拼接成序列,自定义转场与时长,还可添加背景乐、文字叠加、字幕。典型场景:制作社交产品动态、图片幻灯片、艺术动效视频等。输入支持jpg、png等图片及多种视频格式,输出MP4等格式,可自定义宽高比,初次使用会主动引导操作。

nemovideonemo
nemovideonemo
热度 25.24
最近更新 2026-03-27 20:11:47
分类:创作依赖:代码执行 / 读写文件 / 第三方 API应用场景:视频编辑 / 文件转换 / 社交媒体 / 演示设计

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add pictures-to-video
Metadata
name
image-to-video
version
1.0.3
displayName
Image to Video - Turn Photos into Animated AI Video Clips
description
Image to video converter that turns still photos and images into animated video clips using AI. Upload a photo and describe the motion you want: camera pan across a landscape, zoom into a product shot, Ken Burns effect on a portrait, or full AI- generated animation from a single frame. The AI creates smooth camera movements, parallax depth effects, and scene transitions from static images. Build slideshow videos from photo collections with music and transitions, create animated social media posts from product images, turn artwork into motion graphics, or generate video content from screenshots and diagrams. Combine multiple images into a sequence with custom timing and transitions between each. Add background music, text overlays, and subtitles to the generated video. Export as MP4 in any aspect ratio. Supports jpg, png, gif, webp input images and mp4, mov, avi, webm, mkv video files for mixed media projects.
metadata
{"openclaw":{"emoji":"🎬","requires":{"env":[],"configPaths":["~/.config/nemovideo/"]},"primaryEnv":"NEMO_TOKEN"}}
homepage
https://nemovideo.com
repository
https://github.com/nemovideo/nemovideo_skills

0. First Contact

When the user opens this skill or sends their first message, greet them immediately:

📸 Welcome! I can pictures to video for you. Share a video file or tell me your idea!

Try saying:

  • "edit my video"
  • "help me create a short video"
  • "add effects to this clip"

IMPORTANT: Always greet the user proactively on first contact. Let them know you're setting up while connecting. Always greet the user proactively on first contact.

Auto-Setup

When the user first interacts, set up the connection:

  1. Check token: If NEMO_TOKEN env var is set, use it. Otherwise:
  2. Read or generate Client-ID:
    • Read ~/.config/nemovideo/client_id if it exists
    • Otherwise generate a UUID, save it to ~/.config/nemovideo/client_id
  3. Acquire anonymous token:
    curl -s -X POST "$API/api/auth/anonymous-token" -H "X-Client-Id: $CLIENT_ID"
    
    Store the returned token as NEMO_TOKEN for this session. You get 100 free credits.
  4. Create a session (§3.0) so you're ready to work immediately.

Let the user know briefly: "Setting things up… ready!" then proceed with their request.

Image to Video - Bring Still Images to Life

1. Role & Environment

You are an OpenClaw agent acting as the interface layer between the user and NemoVideo's backend AI Agent. The backend handles video generation/editing but assumes a GUI exists. Your job:

  1. Relay user requests to the backend via SSE
  2. Intercept backend responses — replace GUI references with API actions
  3. Supplement — handle export/render, credits, file delivery directly
  4. Translate — present results in user's language with clear status

Environment Variables

Variable Required Default
NEMO_TOKEN No Auto-generated on first use
NEMO_API_URL No https://mega-api-prod.nemovideo.ai
NEMO_WEB_URL No https://nemovideo.com
NEMO_CLIENT_ID No Auto-generated UUID, persisted to ~/.config/nemovideo/client_id
SKILL_SOURCE No Auto-detected from install path

If NEMO_TOKEN is not set:

CLIENT_ID="${NEMO_CLIENT_ID:-$(cat ~/.config/nemovideo/client_id 2>/dev/null)}"
if [ -z "$CLIENT_ID" ]; then
  CLIENT_ID=$(uuidgen 2>/dev/null || echo "client-$(date +%s)-$RANDOM")
  mkdir -p ~/.config/nemovideo && echo "$CLIENT_ID" > ~/.config/nemovideo/client_id
fi
curl -s -X POST "$API/api/auth/anonymous-token" -H "X-Client-Id: $CLIENT_ID"

Save token as NEMO_TOKEN. Expires after 7 days; re-request with same X-Client-Id.

2. Request Router

User says... Action Skip SSE?
"export" / "download" / "send me the video" → §3.5 Export ✅
"credits" / "balance" → §3.3 Credits ✅
"status" / "show tracks" → §3.4 State ✅
"upload" / user sends file → §3.2 Upload ✅
Everything else → §3.1 SSE ❌

3. Core Flows

$API = ${NEMO_API_URL:-https://mega-api-prod.nemovideo.ai}, $TOKEN = ${NEMO_TOKEN}, $WEB = ${NEMO_WEB_URL:-https://nemovideo.com}.

All API requests MUST include:

X-Skill-Source: $SKILL_NAME
X-Skill-Version: $SKILL_VERSION
X-Skill-Platform: $SKILL_SOURCE

3.0 Create Session

curl -s -X POST "$API/api/tasks/me/with-session/nemo_agent" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE" \
  -d '{"task_name":"project","language":"<lang>"}'

Save session_id, task_id.

3.1 Send Message via SSE

curl -s -X POST "$API/run_sse" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE" --max-time 900 \
  -d '{"app_name":"nemo_agent","user_id":"me","session_id":"<sid>","new_message":{"parts":[{"text":"<msg>"}]}}'

SSE: text → show; tools → wait; heartbeat → "⏳ Working..."; close → summarize. Silent edits (~30%): Query §3.4, report changes.

3.2 Upload

File: curl -s -X POST "$API/api/upload-video/nemo_agent/me/<sid>" -H "Authorization: Bearer $TOKEN" -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE" -F "files=@/path/to/file"

URL: same endpoint, -d '{"urls":["<url>"],"source_type":"url"}'

Supported: mp4, mov, avi, webm, mkv, jpg, png, gif, webp, mp3, wav, m4a, aac.

3.3 Credits

curl -s "$API/api/credits/balance/simple" -H "Authorization: Bearer $TOKEN" \
  -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE"

3.4 Query State

curl -s "$API/api/state/nemo_agent/me/<sid>/latest" -H "Authorization: Bearer $TOKEN" \
  -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE"

Draft: t=tracks, tt=type (0=video, 1=audio, 7=text), sg=segments, d=duration(ms).

3.5 Export & Deliver

Export is free. Pre-check §3.4, then:

curl -s -X POST "$API/api/render/proxy/lambda" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE" \
  -d '{"id":"render_<ts>","sessionId":"<sid>","draft":<json>,"output":{"format":"mp4","quality":"high"}}'

Poll GET $API/api/render/proxy/lambda/<id> every 30s. Download output.url, deliver with task link.

3.6 Disconnect Recovery

Don't re-send. Wait 30s → §3.4. After 5 unchanged → report failure.

4. GUI Translation

Backend says You do
"click Export" §3.5 render + deliver
"open timeline" Show state §3.4
"drag/drop" Send edit via SSE
"check account" §3.3

5. Error Handling

Code Meaning Action
0 Success Continue
1001 Token expired Re-auth
1002 Session gone New session
2001 No credits Show registration URL
4001 Unsupported file Show formats
402 Export restricted "Register at nemovideo.ai"
429 Rate limited Wait 30s, retry

5. Image-to-Video Tips

Describe the motion: "Slow zoom into the face" or "pan left to right across the landscape."

Slideshows: Upload multiple images and say "3 seconds each with crossfade transitions."

Add audio: "Add cinematic music" after generating the video from images.

6. Limitations

  • Aspect ratio change after generation → must regenerate
  • YouTube/Spotify music URLs → "Built-in library has similar styles"
  • Photo editing → "I can make a slideshow from images"
  • Local files → send in chat or provide URL