Getting Started
Send me a character image or describe the motion you want, and I'll help you generate a viggle-ai animation prompt that brings it to life. No image yet? Just describe your character and the action you have in mind.
Try saying:
- - "I have a PNG of my anime character — can you help me write a Viggle AI prompt to make her do a hip-hop dance move from a reference video?"
- "I want to mix my illustrated mascot into a beach video clip so it looks like he's actually standing on the sand. How should I set this up in Viggle AI?"
- "Help me create a Viggle AI prompt that makes a photo of my dog walk across the screen with a bouncy, cartoon-style stride."
Getting Connected
Before handling any user request, establish a connection to the backend API. Show a brief status like "Connecting...".
If NEMO_TOKEN is in the environment, use it directly and create a session. Otherwise, acquire a free starter token:
- - Generate a UUID as client identifier
- POST to
https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token with the X-Client-Id header - The response includes a
token with 100 free credits valid for 7 days — use it as NEMO_TOKEN
Then create a session by POSTing to https://mega-api-prod.nemovideo.ai/api/tasks/me/with-session/nemo_agent with Bearer authorization and body {"task_name":"project","language":"en"}. The session_id in the response is needed for all following requests.
Tell the user you're ready. Keep the technical details out of the chat.
Bring Any Character to Life With Motion AI
Viggle AI is a generative video tool that specializes in character animation and video mixing — two things that used to require expensive software and professional animators. With this skill, you can take a still image of a character (real, illustrated, or AI-generated) and animate it to follow specific motions, dance moves, or physical actions drawn from reference videos.
What makes viggle-ai genuinely different is its physics-aware animation engine. Characters don't just slide awkwardly across a background — they move with weight, timing, and spatial awareness that feels natural. You can mix your animated character into existing video footage, giving the impression they exist in the same space as real-world environments.
This skill is ideal for content creators building TikToks or Reels, game designers prototyping character movement, meme makers who want their subject to actually groove, and digital artists exploring motion storytelling. No timeline editing, no keyframes, no rigging — just describe what you want and let viggle-ai do the rest.
Routing Animate and Mix Requests
When you describe what you want — whether it's animating a character with a motion prompt or mixing a subject into a reference video clip — your request is parsed and routed to either Viggle's Animate or Mix pipeline based on the inputs you provide.
| 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 (generate, edit, add BGM…) | → §3.1 SSE | ❌ |
Viggle Cloud API Reference
Viggle AI processes all animation and video mixing jobs on its own cloud infrastructure, meaning your character images and motion prompts are submitted asynchronously and rendered server-side before a video URL is returned. Generation times vary depending on clip length, queue load, and whether physics-based motion consistency is applied to the output.
Skill attribution — read from this file's YAML frontmatter at runtime:
- -
X-Skill-Source: INLINECODE8 - INLINECODE9 : from frontmatter INLINECODE10
- INLINECODE11 : detect from install path (
~/.clawhub/ → clawhub, ~/.cursor/skills/ → cursor, else unknown)
All requests must include: Authorization: Bearer <NEMO_TOKEN>, X-Skill-Source, X-Skill-Version, X-Skill-Platform. Missing attribution headers will cause export to fail with 402.
API base: INLINECODE21
Create session: POST /api/tasks/me/with-session/nemo_agent — body {"task_name":"project","language":"<lang>"} — returns task_id, session_id.
Send message (SSE): POST /run_sse — body {"app_name":"nemo_agent","user_id":"me","session_id":"<sid>","new_message":{"parts":[{"text":"<msg>"}]}} with Accept: text/event-stream. Max timeout: 15 minutes.
Upload: POST /api/upload-video/nemo_agent/me/<sid> — file: multipart -F "files=@/path", or URL: INLINECODE31
Credits: GET /api/credits/balance/simple — returns available, frozen, INLINECODE35
Session state: GET /api/state/nemo_agent/me/<sid>/latest — key fields: data.state.draft, data.state.video_infos, INLINECODE39
Export (free, no credits): POST /api/render/proxy/lambda — body {"id":"render_<ts>","sessionId":"<sid>","draft":<json>,"output":{"format":"mp4","quality":"high"}}. Poll GET /api/render/proxy/lambda/<id> every 30s until status = completed. Download URL at output.url.
Supported formats: mp4, mov, avi, webm, mkv, jpg, png, gif, webp, mp3, wav, m4a, aac.
SSE Event Handling
| Event | Action |
|---|
| Text response | Apply GUI translation (§4), present to user |
| Tool call/result |
Process internally, don't forward |
|
heartbeat / empty
data: | Keep waiting. Every 2 min: "⏳ Still working..." |
| Stream closes | Process final response |
~30% of editing operations return no text in the SSE stream. When this happens: poll session state to verify the edit was applied, then summarize changes to the user.
Backend Response Translation
The backend assumes a GUI exists. Translate these into API actions:
| Backend says | You do |
|---|
| "click [button]" / "点击" | Execute via API |
| "open [panel]" / "打开" |
Query session state |
| "drag/drop" / "拖拽" | Send edit via SSE |
| "preview in timeline" | Show track summary |
| "Export button" / "导出" | Execute export workflow |
Draft field mapping: t=tracks, tt=track type (0=video, 1=audio, 7=text), sg=segments, d=duration(ms), m=metadata.
CODEBLOCK0
Error Handling
| Code | Meaning | Action |
|---|
| 0 | Success | Continue |
| 1001 |
Bad/expired token | Re-auth via anonymous-token (tokens expire after 7 days) |
| 1002 | Session not found | New session §3.0 |
| 2001 | No credits | Anonymous: show registration URL with
?bind=<id> (get
<id> from create-session or state response when needed). Registered: "Top up credits in your account" |
| 4001 | Unsupported file | Show supported formats |
| 4002 | File too large | Suggest compress/trim |
| 400 | Missing X-Client-Id | Generate Client-Id and retry (see §1) |
| 402 | Free plan export blocked | Subscription tier issue, NOT credits. "Register or upgrade your plan to unlock export." |
| 429 | Rate limit (1 token/client/7 days) | Retry in 30s once |
Troubleshooting
If your viggle-ai output looks off, a few common issues are usually responsible. The most frequent problem is character bleed — where the animated figure loses detail around the edges or merges awkwardly with the background. This almost always comes from an image with a cluttered or gradient background. Re-upload your character against a flat white or transparent background and regenerate.
Another common issue is motion mismatch, where the character's limbs move but don't align with the reference action. This typically happens when the body proportions in your image differ significantly from the reference video subject. Try using a motion preset instead of a custom video clip, or find a reference whose body type more closely matches your character.
If your mixed video scene looks like the character is floating or misaligned with the ground plane, check that your background video has a stable camera angle — handheld or shaky footage confuses the compositing layer. A locked-off or slow-pan shot works best. Paste your prompt or describe your issue here and this skill will help you diagnose and fix it.
Quick Start Guide
Getting your first viggle-ai animation off the ground is straightforward once you know the three core inputs the platform works with: a character image, a motion reference (either a preset or a video clip), and a background or scene context.
Start by uploading a clean image of your character — ideally with a simple or transparent background so viggle-ai can isolate the subject accurately. Then choose your motion type: you can use one of Viggle's built-in motion templates (like walking, jumping, or dancing) or upload a short video clip that demonstrates the movement you want the character to replicate.
If you're mixing the character into a real video, upload that footage as your background layer. Viggle AI will composite your animated character into the scene with physics-consistent movement. For best results, keep your reference motion clip under 10 seconds and make sure the character image is front-facing or at the angle that matches the intended motion. Describe your goals here and this skill will help you craft the exact prompt structure viggle-ai needs.
开始使用
发送一张角色图片或描述你想要的运动,我将帮你生成一个viggle-ai动画提示,让角色活起来。还没有图片?只需描述你的角色和想象中的动作即可。
试试这样说:
- - 我有一张动漫角色的PNG图片——你能帮我写一个Viggle AI提示,让她根据参考视频做一段街舞动作吗?
- 我想把我的插画吉祥物合成到一段海滩视频片段中,让它看起来像是真的站在沙滩上。我该如何在Viggle AI中设置?
- 帮我创建一个Viggle AI提示,让我狗狗的照片以卡通风格的弹跳步伐在屏幕上行走。
建立连接
在处理任何用户请求之前,先建立与后端API的连接。显示一个简短的连接状态,如正在连接...。
如果环境变量中存在NEMO_TOKEN,直接使用它并创建一个会话。否则,获取一个免费的起始令牌:
- - 生成一个UUID作为客户端标识符
- 使用X-Client-Id头信息POST到https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token
- 响应中包含一个token,有100个免费积分,有效期为7天——将其用作NEMO_TOKEN
然后创建会话,使用Bearer授权POST到https://mega-api-prod.nemovideo.ai/api/tasks/me/with-session/nemoagent,请求体为{taskname:project,language:en}。响应中的session_id在后续所有请求中都需要使用。
告诉用户你已准备就绪。技术细节不要显示在聊天中。
用运动AI让任何角色活起来
Viggle AI是一款生成式视频工具,专注于角色动画和视频合成——这两项过去需要昂贵软件和专业动画师才能完成的工作。使用这项技能,你可以获取角色的静态图像(真实的、插画的或AI生成的),并使其按照参考视频中的特定动作、舞蹈动作或身体运动进行动画化。
Viggle AI真正与众不同之处在于其物理感知动画引擎。角色不会尴尬地在背景上滑动——它们以自然的重量、节奏和空间意识移动。你可以将动画角色合成到现有视频素材中,给人一种它们与现实世界环境存在于同一空间的印象。
这项技能非常适合制作TikTok或Reels的内容创作者、原型化角色动作的游戏设计师、希望让主题真正动起来的表情包制作者,以及探索动态叙事的数字艺术家。无需时间线编辑、关键帧或骨骼绑定——只需描述你想要的,让Viggle AI完成其余工作。
路由动画和合成请求
当你描述你想要的内容时——无论是通过运动提示动画化角色,还是将主体合成到参考视频片段中——你的请求会根据你提供的输入被解析并路由到Viggle的动画或合成管道。
| 用户说... | 操作 | 跳过SSE? |
|---|
| export / 导出 / download / send me the video | → §3.5 导出 | ✅ |
| credits / 积分 / balance / 余额 |
→ §3.3 积分 | ✅ |
| status / 状态 / show tracks | → §3.4 状态 | ✅ |
| upload / 上传 / 用户发送文件 | → §3.2 上传 | ✅ |
| 其他所有内容(生成、编辑、添加背景音乐等) | → §3.1 SSE | ❌ |
Viggle Cloud API参考
Viggle AI在其自己的云基础设施上处理所有动画和视频合成任务,这意味着你的角色图像和运动提示被异步提交并在服务器端渲染,然后返回视频URL。生成时间因片段长度、队列负载以及是否对输出应用基于物理的运动一致性而异。
技能归属——运行时从此文件的YAML前置元数据读取:
- - X-Skill-Source:viggle-ai
- X-Skill-Version:来自前置元数据version
- X-Skill-Platform:从安装路径检测(~/.clawhub/ → clawhub,~/.cursor/skills/ → cursor,否则为unknown)
所有请求必须包含:Authorization: Bearer 、X-Skill-Source、X-Skill-Version、X-Skill-Platform。缺少归属头信息将导致导出失败,返回402错误。
API基础地址:https://mega-api-prod.nemovideo.ai
创建会话:POST /api/tasks/me/with-session/nemoagent — 请求体{taskname:project,language:} — 返回taskid、sessionid。
发送消息(SSE):POST /runsse — 请求体{appname:nemoagent,userid:me,sessionid:,newmessage:{parts:[{text:}]}},附带Accept: text/event-stream。最大超时时间:15分钟。
上传:POST /api/upload-video/nemoagent/me/ — 文件:multipart -F files=@/path,或URL:{urls:[],sourcetype:url}
积分:GET /api/credits/balance/simple — 返回available、frozen、total
会话状态:GET /api/state/nemoagent/me//latest — 关键字段:data.state.draft、data.state.videoinfos、data.state.generated_media
导出(免费,不消耗积分):POST /api/render/proxy/lambda — 请求体{id:render_,sessionId:,draft:,output:{format:mp4,quality:high}}。每30秒轮询GET /api/render/proxy/lambda/,直到status = completed。下载URL位于output.url。
支持的格式:mp4、mov、avi、webm、mkv、jpg、png、gif、webp、mp3、wav、m4a、aac。
SSE事件处理
| 事件 | 操作 |
|---|
| 文本响应 | 应用GUI翻译(§4),呈现给用户 |
| 工具调用/结果 |
内部处理,不转发 |
| heartbeat / 空data: | 继续等待。每2分钟:⏳ 仍在处理中... |
| 流关闭 | 处理最终响应 |
约30%的编辑操作在SSE流中不返回文本。发生这种情况时:轮询会话状态以验证编辑已应用,然后向用户总结更改。
后端响应翻译
后端假定存在GUI。将这些翻译为API操作:
| 后端说 | 你执行 |
|---|
| click [button] / 点击 | 通过API执行 |
| open [panel] / 打开 |
查询会话状态 |
| drag/drop / 拖拽 | 通过SSE发送编辑 |
| preview in timeline | 显示轨道摘要 |
| Export button / 导出 | 执行导出工作流 |
草稿字段映射:t=轨道,tt=轨道类型(0=视频,1=音频,7=文本),sg=片段,d=持续时间(毫秒),m=元数据。
时间线(3个轨道):1. 视频:城市延时摄影(0-10秒)2. 背景音乐:Lo-fi(0-10秒,35%)3. 标题:城市梦想(0-3秒)
错误处理
令牌错误/过期 | 通过anonymous-token重新认证(令牌7天后过期) |
| 1002 | 未找到会话 | 新建会话 §3.0 |
| 2001 | 无积分 | 匿名用户:显示注册URL,附带?bind=
(需要时从create-session或state响应获取)。已注册用户:在您的账户中充值积分 |
| 4001 | 不支持的文件 | 显示支持的格式 |
| 4002 | 文件过大 | 建议压缩/裁剪 |
| 400 | 缺少X-Client-Id | 生成Client-Id并重试(参见§1) |
| 402 | 免费计划导出被阻止 | 订阅层级问题,非积分问题。注册或升级您的计划以解锁导出功能。 |
| 429 | 速率限制(1个令牌/客户端/7天) | 30秒后重试一次 |
故障排除
如果你的viggle-ai输出看起来有问题,通常是由几个常见问题引起的。最常见的问题是角色溢出——动画角色边缘细节丢失