Token导航 LogoToken导航

Agent Skill · 效率

svg-animator(svg 动画师)

svg-animator 用于辅助视频、动画、脚本化剪辑和多媒体生成流程,适合在 OpenClaw 中需要整理视频素材、生成脚本或维护合成项目时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

svg-animator 是效率类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为可写文件;许可证为 MIT-0,第三方扫描有提醒项,按安装量在效率类的 21,003 个 Skill 里排第 4,496。

总安装 13,176周安装 549GitHub Stars 公开资料未说明下载 4,392核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:svg-animator(svg 动画师)
来源仓库:https://github.com/juliantsaiii/svg-animator
安装命令:
openclaw skills install svg-animator
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install svg-animator

这个 Skill 是做什么的

效率类 Skill 把重复的整理、汇总、转换工作交给助手完成,减少手工复制粘贴。

svg-animator 利用文本 LLM 从 SVG 帧自动生成动画视频。支持动物、人物、抽象艺术等多种主题的无缝转场效果。svg-animator 属于效率类 Skill,可作为该场景下的辅助能力补充。自动计算时长并输出可播放视频文件,适用于宣传片制作。安装前请核实是否具备视频编码库调用权限与存储空间配额。

输出质量受初始描述精度影响,复杂动画需细化提示词输入。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install svg-animator;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要可写文件,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

svg-animator 怎么安装?

在终端执行 openclaw skills install svg-animator。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

svg-animator 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

svg-animator 需要什么权限?

权限级别是可写文件。该 Skill 可能写入或修改本地文件,使用前需要确认目标目录和修改范围。

svg-animator 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

svg-animator 用的人多吗?

公开数据是累计安装 13,176 次,近一周安装 549 次,下载 4,392 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

svg-animator 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理效率类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

效率类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
github

GitHub 代码协作 · OpenClaw

7,632,918545需要联网MIT-0通过
nano-pdf

Nano PDF 文档 · OpenClaw

4,249,476231需要联网MIT-0通过
auto-updater

自动更新程序 · OpenClaw

2,964,063386操作浏览器MIT-0通过
video-frames

视频帧 · OpenClaw

2,621,304112需要联网MIT-0通过
gemini

Gemini 助手 · OpenClaw

2,547,39648需要联网MIT-0有提醒
svg-animator

svg 动画师 · 本页

13,176—可写文件MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
svg-animator
description
Generate animated videos from SVG frames using text LLM. Supports any subject (animals, humans, characters, scenes, abstract art), automatic duration calculation, and multi-scene story animations. Perfect替代 AI 视频生成 API,直接用文本模型生成 SVG 代码然后合成视频。

SVG Animator

用文本模型生成 SVG 代码,逐帧渲染后合成视频。完全不需要视频生成 API!

支持的场景

  • 动物:小狗奔跑、小猫跳跃、鱼儿游泳、鸟儿飞翔
  • 人物:走路、跑步、跳舞、工作场景
  • 场景:日出日落、云彩飘动、树叶落下、雨滴下落
  • 抽象:几何变换、颜色渐变、粒子效果
  • 故事:多场景连续动画(需要多段拼接)

使用流程

用户:生成一个"小猫伸懒腰"的动画
↓
1. 理解需求 → 确定主题、动作、时长
2. 设计帧序列 → 每帧的 SVG 代码
3. 生成帧 → Node.js 生成 SVG → rsvg-convert 转 PNG
4. 合成视频 → ffmpeg 合成 MP4/GIF
5. 输出 → 返回文件路径或 nginx 链接

时长计算规则

需求帧数时长fps
简单动作(伸懒腰、眨眼)8-12帧1秒10
常规动作(走路、跑步)16-24帧2秒12
复杂动作(跳舞、翻滚)30-48帧3-4秒12
短故事(2-3个场景)60-120帧5-10秒12
长故事(5+场景)120+帧10秒+15

动画原理

周期性运动(正弦函数)

// 帧索引 i,总帧数 totalFrames
const t = (i / totalFrames) * Math.PI * 2;  // 0 → 2π 循环

// 腿部摆动
const legOffset = Math.sin(t) * 40;

// 尾巴摇动
const tailAngle = Math.sin(t * 2) * 25;

// 身体上下颠簸
const bodyY = Math.sin(t) * 5;

多元素协调

// 腿、尾巴、身体用同一个 t,但幅度不同
const legPhase = t;           // 腿部周期
const tailPhase = t * 2;      // 尾巴周期快一倍
const bodyPhase = t;          // 身体与腿同步

// 组合使用
legOffset = Math.sin(legPhase) * 40;
tailAngle = Math.sin(tailPhase) * 25;
bodyY = Math.sin(bodyPhase) * 5;

帧生成代码模板

const fs = require('fs');
const { execSync } = require('child_process');

const frames = 24;  // 根据时长需求调整
const size = 400;

for (let i = 0; i < frames; i++) {
  const t = (i / frames) * Math.PI * 2;
  
  // 计算运动参数
  const legOffset = Math.sin(t) * 40;
  const tailAngle = Math.sin(t * 2) * 25;
  // ... 更多参数

  const svg = `<svg width='${size}' height='${size}' xmlns='http://www.w3.org/2000/svg'>
    <!-- 背景 -->
    <rect width='${size}' height='${size}' fill='#87CEEB'/>
    
    <!-- 地面 -->
    <rect x='0' y='${size*0.88}' width='${size}' height='${size*0.12}' fill='#90EE90'/>
    
    <!-- 主体 - 使用运动参数 -->
    <ellipse cx='${200 + legOffset * 0.5}' cy='${250 + Math.sin(t)*5}' ... />
    <!-- 更多元素 -->
  </svg>`;

  fs.writeFileSync(`/tmp/frames/frame_${String(i).padStart(2, '0')}.svg`, svg);
}

// 转 PNG
execSync('rsvg-convert frame_*.svg -o frame_%02d.png');

// 合成视频
execSync('ffmpeg -y -framerate 12 -i frame_%02d.png -c:v mpeg4 -q:v 2 output.mp4');

常用动画参数

走路/奔跑

const runCycle = {
  legSwing: Math.sin(t) * 40,      // 腿摆动幅度
  bodyBob: Math.sin(t * 2) * 5,   // 身体颠簸
  tailWag: Math.sin(t * 2) * 30,  // 尾巴摇
  armSwing: Math.sin(t) * 25      // 手臂摆动
};

飞行

const flyCycle = {
  wingUp: Math.sin(t) * -45,      // 翅膀上扬
  wingDown: Math.sin(t) * 45,     // 翅膀下落
  bodyTilt: Math.sin(t) * 10,     // 身体倾斜
  glide: Math.sin(t) * 20         // 滑翔高度变化
};

跳跃

const jumpCycle = {
  yOffset: -Math.abs(Math.sin(t)) * 100,  // 垂直位移
  legTuck: Math.abs(Math.sin(t)) * 30,   // 收腿
  armUp: Math.abs(Math.sin(t)) * -30      // 举手
};

摇摆/晃动

const swayCycle = {
  rotation: Math.sin(t) * 15,     // 整体摇摆角度
  xOffset: Math.sin(t) * 10,     // 水平位移
  wave: Math.sin(t * 3) * 5      // 轻微晃动
};

场景动画示例

日出

// 太阳从地平线升起
const progress = i / frames;
const sunY = size * 0.8 - progress * size * 0.6;  // 从下往上
const skyGrad = `rgb(${255 * progress}, ${200 * progress}, ${100 + 155 * progress})`;

云飘动

const cloudX = (i / frames) * size * 1.5;  // 从左往右
// 云朵透明度随位置变化
const opacity = 1 - (cloudX / size) * 0.5;

雨滴下落

// 多滴雨
for (let drop = 0; drop < 10; drop++) {
  const startFrame = (frames / 10) * drop;
  const dropPos = ((i - startFrame) / frames) * size;
  // 绘制雨滴在 dropPos 位置
}

多场景故事动画

当用户需要"讲一个故事"时,生成多个场景然后拼接:

// 场景1:小猫醒来(12帧)
// 场景2:伸懒腰(12帧)  
// 场景3:玩耍(24帧)
// 场景4:吃饭(16帧)
// 场景5:睡觉(12帧)

// 分别生成后用 ffmpeg 拼接
const scenes = ['scene1.mp4', 'scene2.mp4', 'scene3.mp4'];
const concatList = scenes.map(s => `file '${s}'`).join('\
');
fs.writeFileSync('/tmp/concat.txt', concatList);
execSync(`ffmpeg -y -f concat -safe 0 -i /tmp/concat.txt -c copy story.mp4`);

完整工作流

Step 1: 分析需求

"生成一个小狗追蝴蝶的故事动画"

分解:

  • 主题:小狗 + 蝴蝶
  • 动作:追逐(小狗跑 + 蝴蝶飞)
  • 场景:草地、天空
  • 时长:5-8秒(3个场景)

Step 2: 设计场景

  1. 场景1(0-3秒):小狗看到蝴蝶

- 小狗站立,尾巴摇 - 蝴蝶飞过

  1. 场景2(3-6秒):追逐

- 小狗奔跑(24帧循环) - 蝴蝶飞舞(上下移动)

  1. 场景3(6-8秒):抓到/没抓到

- 小狗停下 - 蝴蝶继续飞 / 小狗开心

Step 3: 生成代码

# 创建帧目录
mkdir -p /tmp/animation_frames

# 用 Node.js 生成 SVG(根据设计的场景)
node generate_story.js

# 转换 PNG
rsvg-convert /tmp/animation_frames/*.svg -o /tmp/animation_frames/frame_%04d.png

# 合成视频
ffmpeg -y -framerate 12 -i /tmp/animation_frames/frame_%04d.png \
  -c:v mpeg4 -q:v 2 /tmp/story.mp4

Step 4: 提供下载

复制到 nginx 目录或直接发送文件路径

注意事项

  1. ffmpeg 必须安装 - dnf install ffmpeg 或 apt install ffmpeg
  2. rsvg-convert 必须 - 用于 SVG → PNG
  3. 帧数不要太多 - 超过 200 帧可能很慢
  4. 复杂故事分场景 - 不要把所有动作放一帧里
  5. 背景简洁 - 复杂背景会影响性能

辅助脚本

使用 scripts/animate.js 简化流程:

# 基本动画
node scripts/animate.js --theme "dog running" --frames 24 --output /tmp/dog.mp4

# 自定义时长(秒)
node scripts/animate.js --theme "cat stretching" --duration 2 --output /tmp/cat.mp4

# 多场景故事
node scripts/animate.js --story "小兔子的一天" --scenes 5 --output /tmp/rabbit_day.mp4

输出格式

  • MP4:适合分享,文件小
  • GIF:适合嵌入网页/文档
  • 链接:部署到 nginx 通过 http 提供
# 转 GIF
ffmpeg -i input.mp4 -vf "fps=12,scale=480:-1:flags=lanczos" output.gif

平台分布

OpenClaw

88.95%
按下载量换算3,907

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

未展示

权限和风险

可写文件

该 Skill 可能写入或修改本地文件,使用前需要确认目标目录和修改范围。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills