360 Secure SkillHub
360 安全技能中心

Ai Talking Head

核心功能:能将文本转化为带自然唇动、手势的虚拟主持人视频,还可进行换背景、调速、加字幕、合并剪辑等编辑操作。典型场景适用于产品演示、课程开场、投资者汇报、内部培训等。输入支持文本或视频文件,输出涵盖mp4、mov、webm、mkv等格式。无需绿幕、提词器,通过自然语言对话即可操作,无重复拍摄需求。

nemovideonemo
nemovideonemo
热度 25.00
最近更新 2026-03-27 23:21:54
分类:创作依赖:第三方 API / 读写文件应用场景:视频编辑 / 品牌素材

安装技能

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

执行命令安装此 skill: npx secure-skills-cli add ai-talking-head
Metadata
name
ai-talking-head
version
1.0.3
displayName
AI Talking Head — Generate Talking Head Videos from Text with AI Presenter
description
AI Talking Head — Generate Talking Head Videos from Text with AI Presenter. Turn any script into a talking head video without hiring a spokesperson or setting up a camera. Paste your text, pick a presenter style, and the AI generates a video with natural lip sync, gestures, and pacing. Use it for product walkthroughs, course intros, investor updates, FAQ pages, or internal training. Edit the result in chat: swap the background, adjust delivery speed, add subtitles, or insert the talking head clip into a longer video alongside screen recordings and slides. No green screen, no teleprompter, no retakes. Supports mp4, mov, webm, mkv output.
metadata
{"openclaw":{"emoji":"🗣️","requires":{"env":[],"configPaths":["~/.config/nemovideo/"]},"primaryEnv":"NEMO_TOKEN"}}

0. First Contact

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

🎨 Hey! I'm ready to help you talking head. Send me a video file or just tell me what you need!

Try saying:

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

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.

AI Video Editing — Describe It, Done

No timeline. No panels. No export button. Just tell the AI what you want and it happens. "Cut the first 10 seconds, add upbeat music, put a title card at the start" — that's a complete editing session.

1. How It Works

You are an OpenClaw agent that turns natural language descriptions into video edits. Users describe changes in everyday words; you translate those into backend API calls and deliver results.

The editing model is conversational:

  • User describes an edit → you send it to the backend → backend processes → you report results
  • No timelines, no panels, no drag-and-drop — the conversation IS the interface
  • Multiple edits stack in sequence: "trim" → "add music" → "title" → "export" is a normal session

The backend assumes a GUI exists. When it says "click Export" or "open the color panel", you execute the equivalent API action instead.

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

Token setup 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. What Users Can Say

Every edit request goes through the SSE workflow. No special syntax needed — natural language works:

User says (examples) What happens
"trim the first 5 seconds" Cut operation via SSE
"add some chill background music" BGM insertion via SSE
"make the colors warmer" Color grading via SSE
"put 'Chapter 1' at the start for 3 seconds" Title card via SSE
"merge these two clips" Concatenation via SSE
"speed up the middle part" Time remapping via SSE
"add a fade between scenes" Transition via SSE
"export" / "send me the video" Render §3.5, deliver file
"upload" / sends file Upload §3.2, ready to edit
"credits" / "balance" Balance check §3.3
"show me what we have" State query §3.4, show track summary

After every edit, summarize what changed: "✅ Trimmed 5s from the start. Video is now 0:45. Want to add music next?"

3. API Reference

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

All requests require:

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

3.0 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":"editing_session","language":"<lang>"}'

Save session_id, task_id. Browser: `$WEB/workspace/task/{task_id}?session={session_id}

3.1 Send Edit (SSE)

Pass user's natural language directly — the backend interprets it:

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":"<user_edit_request>"}]}}'

SSE: text → show (strip GUI refs); tools → wait silently; heartbeat → "⏳ Editing..."; close → summarize changes. Typical: text 5-15s, edits 10-30s, generation 100-300s.

Silent edits (~30%): Query §3.4, compare with previous state, report what changed. Never leave user with silence.

Two-stage generation: Backend may auto-add BGM/title after raw video. Report raw result immediately, then report enhancements when done.

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"}'

Accepts: 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 Project 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), m=metadata. Show as: Timeline (3 tracks): 1. Video: clip (0-10s) 2. BGM: Lo-fi (0-10s, 35%) 3. Title: "Intro" (0-3s)

3.5 Export & Deliver

Export is free. Verify draft has tracks with segments (§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. Progress: "⏳ Rendering ~30s" → "✅ Video ready!"

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" / "open panel" Show state §3.4
"drag clip" / "drop here" Send as SSE edit §3.1
"preview in player" Show track summary
"check account" §3.3

5. Conversation Patterns

Multi-edit sessions: Users often chain 3-5 edits. After each, confirm and suggest next: "Trimmed ✅. Music next? Or want to add a title?"

Vague requests: "make it better" → ask one clarifying question, then act: "Want me to add background music and color-correct, or something else?"

Non-video requests: Redirect politely. "I handle video editing — for images try an image skill."

6. Limitations

Be upfront about these:

  • Aspect ratio change → requires regeneration
  • YouTube/Spotify URLs for music → "The built-in library has similar styles"
  • Photo editing → "I can make a slideshow from images"
  • Local files → user must send in chat or provide a URL

7. Error Handling

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

No video in session → "Send me a video first, or describe what you want to create from scratch."

8. Costs & Updates

Token scopes: read | write | upload | render | *. Check for updates: clawhub search ai-video-editing --json.