Communitygithub.com

ZJU-REAL/Easel

Turn a one-sentence topic into a finished short video: automatically chain script → images/AI video → voiceover → subtitles → BGM → assembly, orchestrating Easel's building blocks into a 'one-click video' pipeline. Aimed at single-video, talking-head/informational content: images per sentence by default with Ken Burns motion, only generating video per segment when dynamic motion is needed. Invoked when users say 'one-click video', 'auto short video', 'generate video from topic', 'make me a video', 'all-in-one talking-head video', 'auto-production', 'short video one-click'. For dramatic/character/dialogue/plot-twist/multi-episode content, use short-drama (each shot forced to video generation, no static images); for script-only use video-script; for single clip generation use ai-video-gen.

What is Easel?

Easel is a fully automated short-video production pipeline. It transforms a simple topic or script into a polished, ready-to-use video by orchestrating a chain of specialized AI skills—video-script for copywriting, ai-image-gen or ai-video-gen for visuals, tts-voiceover for narration, auto-subtitle for captions, and ai-music for background music. The final assembly is handled by the scripts/assemble.py composer. The skill enforces a mandatory aspect-ratio confirmation step to prevent mismatches, gracefully degrades when API keys are missing (falling back to template cards or skipping components), and always presents a plan to the user before invoking paid APIs. It's designed for single-video, talking-head or informational content with image-per-sentence visuals and Ken Burns motion by default; for dramatic or multi-episode stories, users should use the short-drama skill instead. Easel also respects user profiles to maintain consistent style and tone, and outputs all intermediate assets for easy manual refinement.

Works with✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ZJU-REAL/Easel/tree/HEAD/skills/openclaw/auto-short-video

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

One-Click Short Video (End-to-End Orchestration)

Input a topic, output a finished short video. This SKILL is the orchestration layer that chains existing building blocks into a pipeline — script (video-script) → per-sentence images (ai-image-gen) or clips (ai-video-gen) → voiceover (tts-voiceover) → subtitles (auto-subtitle) → BGM (ai-music) → assembly (scripts/assemble.py). Inspired by the automated short-video engine approach from Pixelle-Video / MoneyPrinterTurbo.

Input

  • Topic / script (required)
  • Optional: target duration, style, whether to include voiceover/subtitles/BGM, use AI-generated images or user-provided assets
  • Aspect-ratio mandatory confirmation gate: If the user or upstream task has not explicitly specified landscape/portrait (or 16:9/9:16/specific resolution), you must ask for and wait for confirmation before any production/payment calls; do not silently infer from platform, profile, or defaults. If already specified, do not ask again.

Output

The finished short video is written to outputs/<topic>/final.mp4; storyboard images, voiceover, subtitles, and storyboard JSON are written to outputs/<topic>/assets/.

Execution Steps (trim as needed; automatically degrade or query when API keys are missing)

  1. Write script and storyboard: Use video-script to turn the topic into a talking-head script, split into N sentences (each a shot), with a visual description per sentence.

  2. Generate visuals (one image or clip per shot):

    • With image API key → ai-image-gen for per-sentence text2img (using the confirmed aspect ratio)
    • For motion → ai-video-gen text2video/image2video
    • With user-provided assets → Use image-editing pad to match the confirmed aspect ratio
    • Without any → Use template cards scaled to the confirmed aspect ratio (portrait: card-xiaohongshu/poster-hero, landscape: card-quote) then pad, to avoid aspect-ratio mismatch.
  3. Voiceover: tts-voiceover synthesizes the script into narration (outputs SRT alongside). If VOICE_PROVIDER is configured, it defaults to a premium closed-source voice (emotional, human-like); only fall back to edge (robotic) if no key is available — for natural-sounding talking-head audio, always set a closed-source key. Skip if voiceover is not needed.

  4. Subtitles: Use the SRT from TTS, or run auto-subtitle on the voiceover; alternatively, let assemble auto-generate subtitles from each shot's caption.

  5. BGM: ai-music generates music, or use user-provided music. Optional.

  6. Assemble into final video: Write the above assets into a storyboard JSON, then call the composer:

    python skills/openclaw/auto-short-video/scripts/assemble.py assemble \
      --storyboard outputs/<topic>/assets/storyboard.json \
      -o outputs/<topic>/final.mp4
    

    Storyboard structure (choose image or video per shot; narration/bgm/subtitle optional; if duration is omitted, it is evenly split according to voiceover duration):

    {
      "size": "<confirmed dimensions, e.g., 1080x1920 or 1920x1080>",
      "image_motion": "ken-burns",
      "shots": [
        {"image": "outputs/<topic>/assets/shot1.png", "duration": 3, "caption": "First sentence", "motion": "static"},
        {"video": "outputs/<topic>/assets/clip2.mp4", "caption": "Second sentence"}
      ],
      "narration": "outputs/<topic>/assets/voice.mp3",
      "bgm": "outputs/<topic>/assets/bgm.mp3",
      "subtitle": "outputs/<topic>/assets/voice.srt"
    }
    

    image_motion sets the default motion for all images; per-shot motion can override: use ken-burns for photos, must use static for slides/charts/UI with text (proportional scale + padding, no cropping or panning). The composer automatically: generates still frames or Ken Burns based on image_motion, pads to aspect ratio, concatenates, mixes voiceover+BGM (auto-duck BGM), and burns in subtitles.

  7. Deliver: Output final.mp4 with a production note describing which steps were used and which were degraded.

Orchestration Principles

  • Missing components allowed: Steps without image/video/TTS API keys automatically degrade (fallback template cards / skip voiceover), do not block the whole pipeline, and truthfully inform the user what was degraded.
  • Show plan first: When multiple paid APIs (image/video/music generation) are involved, first explain to the user which will be called, approximate time/cost, and get confirmation before proceeding.
  • Preserve intermediate artifacts: Storyboard images, voiceover, subtitles, and storyboard JSON are all written to outputs/<topic>/assets/, enabling easy individual replacement and re-assembly.

Profile Awareness

  • With profile: Read style.md for tone/visual style to use throughout the script and image prompts; platforms.md is used only for aspect ratio/duration suggestions (aspect ratio must still be confirmed); preferences.md applies content filters.
  • Without profile: First confirm landscape/portrait mode, then use a generic talking-head style.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

ZJU-REAL/Easel

AI 视频生成:文生视频 / 图生视频 / 数字人首帧驱动。通过可插拔 provider(通义万相 Wan / 火山 Seedance / 快手可灵 / OpenAI 兼容)异步生成视频,用户自备 API key。当用户说 AI 视频生成、文生视频、图生视频、AI 生成视频、AI 短视频、让图片动起来、数字人视频、生成一段视频 时使用。与 video-strategy(选型/策略)、video-editing(剪辑处理)、clipify(切片)区别:本 SKILL 是从 0 用 AI 生成新视频。

ZJU-REAL/Easel

通用音频处理:音频剪辑/裁剪、格式转码(mp3/wav/m4a/aac)、音量归一化、从视频提取音轨、多段拼接、淡入淡出、变速(保音高)。当用户说“剪音频”“裁一段”“转成 mp3”“调音量/响度”“提取音轨/扒音频”“拼接音频”“淡入淡出”“加速/减速音频”“变速不变调”时使用。与 audio-denoise 的区别:audio-denoise 专做降噪,audio-editing 做除降噪外的通用音频操作(也内置 denoise 作为兜底)。

ZJU-REAL/Easel

自动字幕 / 语音转字幕:把音频或视频里的语音识别成字幕文件(SRT/ASS/TXT/JSON),可选把字幕烧录进视频。当用户说自动字幕、语音转字幕、视频加字幕、上字幕、转录、听写、字幕文件、生成字幕、烧字幕时使用。

ZJU-REAL/Easel

音乐卡点视频 / 踩点视频:检测背景音乐的节拍,让图片或片段在节拍点上切换,配推进/白闪特效,做出燃系'卡点'短视频。当用户说 卡点视频、踩点视频、音乐卡点、节奏卡点、按音乐切换、鼓点视频、踩节奏、beat 卡点、图片卡点、卡点混剪 时使用。基于 shared/scripts/beatsync.py(librosa 节拍检测)。与 slideshow-video 区别:slideshow 每图固定时长、柔和转场,本 SKILL 切换点由音乐节拍决定、硬切踩点带特效。

ZJU-REAL/Easel

Easel clipify: long English talk → punchline cuts → optional 16:9→9:16 face-pan/split → opus word-by-word ASS burn. Ships scripts + assets/preview.png. Part of 1.6k★ Easel suite.

ZJU-REAL/Easel

>- 通用图像处理加工:改尺寸/缩放、裁剪、补边适配平台尺寸、格式转换(png/jpg/webp)、 压缩到目标大小、加文字或图片水印、圆角、多图拼接、生成缩略图、读图片信息。 基于 image_ops.py 确定性处理。 使用时机:用户说"改尺寸"、"缩放图片"、"裁剪"、"压缩图片"、"加水印"、"转格式"、 "圆角"、"拼图/多图联排"、"缩略图"、"适配小红书/朋友圈尺寸"、"把图 pad 成 1:1"。 和 card-*(卡片类)的区别:card-* 是"HTML 设计→渲染出图", image-editing 只加工已有图片,不负责视觉设计。

ZJU-REAL/Easel

多角色对话配音:按 cast 和逐行对白为不同角色分配音色与情绪,合成多声线音轨和带角色名字幕。 当用户说“多角色/双人/剧本/对话配音、多人对白、不同角色不同声音、有声剧配音”时使用。 单一公共音色用 tts-voiceover;克隆本人音色用 voice-clone;整部短剧制作由 short-drama 编排。

ZJU-REAL/Easel

Easel video-highlights: CN/livestream highlight extract + stable static vertical reframe (sibling to clipify).

ZJU-REAL/Easel

>- 视频制作策略与工具选型:AI 视频生成模型对比、视频脚本结构设计、制作流程规划,覆盖产品演示/解说/社媒短视频场景。 当用户说"视频怎么做""视频选型""用什么工具做视频""视频制作流程""视频策略""视频系列规划"时使用。 和 video-script 的区别:video-strategy 做内容规划与工具选型,video-script 写具体某条视频的脚本。

Related Skills