Token导航 LogoToken导航TokenDH.com
研究检索敏感数据clawhub未标认证来源可访问clear审计提醒

code2animationcode2animation 视频

Agent Skill

用于辅助视频生成、动画合成、脚本化剪辑或 Remotion 等视频项目开发。它适合让 Agent 组织镜头、生成素材说明、维护合成代码或排查渲染问题。使用时需要确认分辨率、时长、素材路径和导出格式;涉及外部素材、人物肖像或商业发布时,应先核对版权授权和内容审核要求。

总安装

18,107

周安装

747

GitHub Stars

2

下载量

5,916
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

ClawHubOpenClaw
openclaw skills install code2animation

简介

code2animation 用于辅助视频生成和动画项目开发,支持脚本化剪辑与素材合成。

  • 适合在 OpenClaw 中组织镜头、生成旁白或维护 Remotion 项目时使用。
  • 可创建视觉资产并渲染 MP4 视频,适用于自动化内容制作场景。
  • 安装命令:openclaw skills install code2animation,需注意分辨率和导出格式设置。
  • 涉及外部素材或人物肖像时,应提前核对版权授权和内容审核要求。

SKILL.md

AgentSaaS Video Editor Skill

A comprehensive video editing and rendering skill that enables AI agents to create code-driven animations with text-to-speech narration and smooth transitions.

Purpose

This skill allows agents to:

  • Create and preview interactive video projects with animations
  • Generate TTS audio narration using Microsoft Edge TTS
  • Render complete videos with synchronized audio and visual effects
  • Support both portrait and landscape video formats
  • Apply smooth transition effects between media elements

Core Capabilities

1. Interactive Video Preview

  • Real-time preview of video projects in the browser
  • Playback controls for testing and debugging
  • Support for transitions, media clips, and timing adjustments
  • Frame-by-frame seeking for precise editing
  • Live transition preview with easing effects

2. Transition System

  • transitionIn: Each media defines its own entrance animation
  • Supported transitions: fade, zoom, slide2Left, slideUp, none
  • Easing: Built-in easeOutCubic for smooth slide and zoom animations
  • stayInClip: Media can persist throughout entire clip duration
  • Cross-clip transitions: Automatic handling of clip boundaries

3. TTS Audio Generation

  • Automated text-to-speech using Microsoft Edge TTS (msedge-tts)
  • Support for multiple voices (English and Chinese)
  • Word-level timing metadata for lip-sync and animations
  • Audio file caching for faster previews

4. Video Rendering

  • Automated frame-by-frame rendering using Puppeteer
  • FFmpeg integration for video encoding and audio mixing
  • 30 FPS output at 1920x1080 (landscape) or 1080x1920 (portrait)
  • Deterministic rendering for consistent results
  • Transition effects preserved in final output

Project Configuration Format

Media Item Properties

  • src: HTML filename in the footage directory
  • words: Trigger phrase from speech that activates this media
  • transitionIn: Entrance animation type (optional)
  • transitionDuration: Duration in seconds (optional, default: 0.6s)
  • stayInClip: If true, media remains visible until clip ends (optional)

Transition Types

  • fade: Opacity transition (0 → 1)
  • zoom: Scale transition (2x → 1x) with opacity
  • slide2Left: Horizontal slide from right (100% → 0%)
  • slideUp: Vertical slide from bottom (100% → 0%)
  • none: No transition effect

Transition Behavior

  • transitionIn: Defines how this media enters the scene
  • transitionDuration: Duration in seconds (default: 0.6s)
  • stayInClip: If true, media remains visible until clip ends
  • Easing: slide2Left and slideUp use easeOutCubic for smooth deceleration

Reference Implementation

See public/projects/agentSaasPromoVideo.json for a complete working example demonstrating all transition types and stayInClip behavior.

Technical Requirements

System Dependencies

  • Node.js: 18 or higher
  • FFmpeg: Required for video encoding and audio mixing
  • Chromium/Chrome: Used by Puppeteer for headless rendering

Node.js Dependencies

  • React & Vite: Frontend framework and build tool
  • Puppeteer: Headless browser for frame capture
  • msedge-tts: Microsoft Edge TTS for audio generation
  • Express: Optional HTTP server (for TTS API endpoint)
  • Motion (Framer Motion): Animation library
  • Tailwind CSS: Styling framework

Shell Commands Used

This skill executes the following shell commands:

Audio Generation

npx tsx scripts/generate-audio.ts <projectId>
  • Reads project JSON configuration
  • Generates MP3 audio files using Edge TTS
  • Saves word-level timing metadata

Video Rendering

node scripts/render.js <projectId> [--portrait]
  • Starts a local Vite dev server
  • Launches Puppeteer to capture frames
  • Uses FFmpeg to encode video and mix audio
  • Cleans up temporary files

FFmpeg Operations

  • Frame encoding: ffmpeg -framerate 30 -i frames/frame-%05d.jpg -c:v libx264 ...
  • Audio mixing: ffmpeg -i video.mp4 -i audio1.mp3 -i audio2.mp3 -filter_complex ...

Browser Detection

  • Uses which command to find Chrome/Chromium on Linux/macOS
  • Respects PUPPETEER_EXECUTABLE_PATH environment variable

API Endpoints (Optional)

The skill may expose an HTTP endpoint for TTS generation:

POST /api/tts
Content-Type: application/json

{
  "text": "Text to speak",
  "voice": "en-US-GuyNeural",
  "rate": "+0%",
  "pitch": "+0Hz"
}

This endpoint is optional and only used when pre-generated audio files are not available.

Security Considerations

File System Access

  • Reads from: public/projects/<projectId>/
  • Writes to: public/projects/<projectId>/audio/, public/video/
  • Creates temporary directories for frame storage
  • Cleans up temporary files after rendering

Network Access

  • Starts local HTTP server on port 5175+ (configurable)
  • Connects to Microsoft Edge TTS service (external)
  • No external API keys required for basic functionality

Process Execution

  • Spawns child processes for: Vite dev server, FFmpeg encoding
  • Uses execSync for: browser detection, audio generation trigger
  • All commands are predefined and not user-controllable

Environment Variables

Optional configuration:

  • PUPPETEER_EXECUTABLE_PATH: Custom browser path for Puppeteer
  • FASTMCP_LOG_LEVEL: Logging level (default: ERROR)

Project Structure

public/
  projects/
    <projectId>/
      <projectId>.json       # Project configuration
      footage/               # HTML/CSS media components
      audio/                 # Generated TTS audio files
        0.mp3, 1.mp3, ...
        0.json, 1.json, ...  # Word timing metadata
  video/
    render-<projectId>-landscape.mp4
    render-<projectId>-portrait.mp4

Usage Example

# 1. Generate audio for a project
pnpm generate-audio agentSaasPromoVideo

# 2. Preview in browser
pnpm dev

# 3. Render final video
pnpm render agentSaasPromoVideo

# 4. Render portrait version
pnpm render agentSaasPromoVideo --portrait

HTML Animation Guidelines

When creating HTML animations for video rendering, use the CSS variable timeline model.

Core Model

  • Renderer controls time: Puppeteer sets --t every frame.
  • Page only renders state: DOM = f(t).
  • No lifecycle animation APIs (play/start/reset) and no hidden runtime state.
  • Transition system handles entrance effects: Don't implement slide/fade transitions in HTML - use the project's transitionIn property instead.

✅ Required Patterns

  • Define timeline root:
  :root { --t: 0; }
  • Every animated property must derive from --t.
  • Always clamp normalized progress values:
  --p: clamp(0, calc((var(--t) - var(--start)) / var(--duration)), 1);
  • Express initial/ending states directly in CSS (seek-safe at any frame).
  • Use small deterministic JS only for content mapping (e.g., subtitle/text index from t).
  • Let transition system handle entrance: Focus on content animation, not entrance effects.

🚫 Forbidden Patterns

  • transition
  • animation / @keyframes
  • window.registerFrameAnimation(...)
  • requestAnimationFrame loops for timeline progression
  • Implicit time from Date.now() / performance.now() for visual state
  • Manual entrance transitions: Don't implement slide/fade in HTML - use transitionIn in project config
  • Fade-out effects: Elements should not disappear after animation completes. Use opacity: var(--p) instead of opacity: calc(var(--p) * (1 - var(--fade))) to keep elements visible at their final state.

Recommended Template

.element {
  --start: 0.5;
  --duration: 1;
  --p: clamp(0, calc((var(--t) - var(--start)) / var(--duration)), 1);

  opacity: var(--p);
  transform: translateY(calc((1 - var(--p)) * 20px));
}

Easing (without transition)

Use math on progress directly:

--p: clamp(0, calc((var(--t) - var(--start)) / var(--duration)), 1);
--ease-out: calc(1 - (1 - var(--p)) * (1 - var(--p)));
opacity: var(--ease-out);

JS Hook Pattern (text/content only)

<script>
  const labels = ['A', 'B', 'C'];
  const el = document.getElementById('label');

  window.onTimelineUpdate = (t) => {
    const idx = Math.floor(Math.max(0, t) / 1.2) % labels.length;
    el.textContent = labels[idx];
  };
</script>

Time Semantics (t vs globalTime)

  • onTimelineUpdate(t, globalTime) supports two time domains:

- t: clip-local time (resets to 0 when clip changes). This is the default for most HTML animations. - globalTime: continuous timeline across clips. Use only when an element must stay continuous through cross-clip transitions.

  • Do not assume t is media-local. If a media appears mid-clip, t may already be large when it first becomes visible.
  • For media-local behavior (e.g., toggle starts animating when this media appears), anchor from first visible globalTime and derive:

- local = globalTime - mediaStartGlobalTime

  • Keep fallback for compatibility:
  window.onTimelineUpdate = (t, globalTime) => {
    const g = Number.isFinite(globalTime) ? globalTime : t;
    // use `t` for normal clip-local animation, `g` only when continuity is required
  };

Determinism Checklist

  • Seeking to any t yields exactly one deterministic frame.
  • Animation state must not depend on "previous frame".
  • Cross-clip transition visuals should be continuous in both clips.
  • Final frame (t = totalDuration) must remain on the last clip (no wrap to first clip).

Limitations

  • Requires FFmpeg to be installed on the system
  • TTS generation requires internet connection (Microsoft Edge TTS)
  • Rendering is CPU-intensive and may take several minutes
  • Maximum TTS text length: ~1000 characters per clip
  • Frame capture requires sufficient disk space

Transparency Statement

This skill executes shell commands and spawns child processes for video rendering. All operations are limited to:

  1. Starting a local development server (Vite)
  2. Running FFmpeg for video encoding
  3. Launching Puppeteer for frame capture
  4. Detecting browser executables on the system

No arbitrary code execution or user input is passed to shell commands. All file paths and commands are predefined and validated.

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

97.49%
按下载量换算5,768

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

未展示

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills