Communitygithub.com

ZJU-REAL/Easel

入力された1つのテーマから、完成したショート動画を自動生成します。テキスト(台本)→画像/AI動画→ナレーション→字幕→BGM→合成を順に繋ぎ、Easel の各制作部品を『ワンクリックで動画出力』パイプラインに編成します。

Easel とは?

Easel は、1つのテーマ(トピック)を入力するだけで、自動的に完成度の高いショート動画を生成するエンドツーエンドの AI エージェントスキルです。従来、台本作成、画像生成、動画生成、ナレーション、字幕、BGM の各工程を個別に行う必要がありましたが、Easel はこれらを自動で連携する『オーケストレーション層』として機能します。具体的には、まず video-script スキルで台本を作成し、各シーンごとに適切な画像(ai-image-gen)または動画(ai-video-gen)を生成します。その際、画像には Ken Burns 効果がデフォルトで適用され、動的な表現が必要な場合にのみ図生動画が使用されます。その後、tts-voiceover スキルで高品質なナレーションを合成し、auto-subtitle スキルで字幕を生成、最後に scripts/assemble.py ですべての素材を1本の動画に合成します。このスキルは、口調・ニュース系のショート動画に最適化されており、ユーザーは「ショート動画を1本作って」といった自然言語の指示を与えるだけで、制作の全工程を実行できます。また、APIキーが不足している工程は自動的にスキップまたはフォールバックされるため、ユーザーは実行前に確認と承認を得ることができます。出力は outputs/テーマ名/final.mp4 として保存され、中間生成物も assets/ フォルダに残るため、後から一部を差し替えて再合成することも可能です。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ワンクリックショート動画(エンドツーエンド・オーケストレーション)

1つのテーマを入力すると、自動的にショート動画を生成します。本スキルはオーケストレーション層です。既存の制作部品をパイプラインとして連結します—— 台本(video-script) → シーンごとの画像(ai-image-gen)または動画クリップ(ai-video-gen) → ナレーション(tts-voiceover) → 字幕(auto-subtitle) → BGM(ai-music) → 合成(scripts/assemble.py)。 Pixelle-Video / MoneyPrinterTurbo の自動ショート動画エンジンのコンセプトを基にしています。

入力

  • テーマ / 台本(必須)
  • オプション:目標の尺、スタイル、ナレーション/字幕/BGMの有無、画像生成にAIを使うかユーザー素材を使うか
  • アスペクト比確認は必須:ユーザーまたは上流タスクから横長/縦長(または16:9/9:16/具体的な解像度)が明示されていない場合、制作・課金APIの呼び出し前に必ず確認し、回答を待つこと。プラットフォーム、Profile、デフォルト値から黙って推測してはいけません。既に明示されている場合は再度尋ねない。

出力

完成したショート動画は outputs/テーマ名/final.mp4 に保存されます。各シーンの画像、ナレーション、字幕、storyboard は outputs/テーマ名/assets/ に保存されます。

実行手順(必要に応じてスキップ。APIキー不足の工程は自動的にフォールバックまたはユーザーに確認)

  1. 台本・シーン分割:video-script を使ってテーマからナレーション台本を作成し、N個の文(各文=1シーン)に分割します。各文に対して画面描写を生成します。

  2. 画像・動画の生成(各シーンごとに1枚の画像または1つの動画クリップ):

    • 画像生成APIキーあり → ai-image-gen で文ごとに text2img(確認済みアスペクト比に従う)
    • 動的な映像が必要 → ai-video-gen で text2video / image2video
    • ユーザー提供素材あり → image-editing の pad で確認済みアスペクト比に調整
    • どちらもなし → 確認済みアスペクト比に基づいてテンプレートカード(縦長:card-xiaohongshu/poster-hero、横長:card-quote)を選び、pad で調整。アスペクト比の不整合を防止。
  3. ナレーション:tts-voiceover で台本をナレーション音声に合成(同時にSRT字幕ファイルも出力)。VOICE_PROVIDER が設定されていれば高品質なクローズドソース音声(感情表現があり人間らしい)がデフォルトで使用されます。キーがなければ edge(機械的)にフォールバック。ナレーションを「不自然」にしたくなければ必ずクローズドソースAPIキーを設定してください。ナレーション不要の場合はスキップ。

  4. 字幕:TTSで生成されたSRTを使用するか、ナレーションに対して auto-subtitle を実行します。また、assemble が各シーンのキャプションから自動生成することも可能。

  5. BGM:ai-music で生成するか、ユーザー提供の音楽を使用。オプション。

  6. 動画合成:上記の素材を storyboard JSON にまとめ、合成スクリプトを実行します。

    python skills/openclaw/auto-short-video/scripts/assemble.py assemble \
      --storyboard outputs/テーマ名/assets/storyboard.json \
      -o outputs/テーマ名/final.mp4
    

    storyboard 構造(画像/動画どちらか必須。narration/bgm/subtitle はオプション。duration 未指定の場合はナレーション時間を均等割り):

    {
      "size": "<確認済みサイズ、例:1080x1920 または 1920x1080>",
      "image_motion": "ken-burns",
      "shots": [
        {"image": "outputs/テーマ名/assets/shot1.png", "duration": 3, "caption": "第1文", "motion": "static"},
        {"video": "outputs/テーマ名/assets/clip2.mp4", "caption": "第2文"}
      ],
      "narration": "outputs/テーマ名/assets/voice.mp3",
      "bgm": "outputs/テーマ名/assets/bgm.mp3",
      "subtitle": "outputs/テーマ名/assets/voice.srt"
    }
    

    image_motion は画像全体のデフォルトの動きを設定。個別のシーンで motion を指定すると上書き可能:写真には ken-burns、テキストを含むスライド/グラフ/UI には必ず static(等倍リサイズ+余白補完、トリミングやパンなし)を使用。 合成スクリプトは自動的に:image_motion に従って静止画または Ken Burns アニメーションを生成、アスペクト比に合わせて余白補完、クリップの連結、ナレーション+BGMのミキシング(BGMは自動で音量ダック)、字幕の焼き込みを行います。

  7. 納品:final.mp4 を出力し、使用した工程とフォールバックした工程を説明する簡単な注釈を添付します。

オーケストレーションの原則

  • 部品の欠落を許容:画像/動画/TTSのAPIキー不足の工程は自動的にフォールバック(テンプレートカードで補完 / ナレーションスキップ)し、全体の実行をブロックしません。そして、何がフォールバックされたかをユーザーに正直に通知します。
  • 事前にPlanを提示:複数の課金API(画像生成/動画生成/音楽生成)が関わる場合、事前にユーザーに「何を呼び出すか」「おおよその所要時間/費用」を説明し、確認を得てから実行します。
  • 中間成果物を保存:シーン画像、ナレーション、字幕、storyboard はすべて outputs/テーマ名/assets/ に書き出し、後から個別に差し替えて再合成できるようにします。

Profile 認識

  • Profileあり:style.md からトーン/ビジュアルスタイルを取得し、台本と画像プロンプト全体に反映。platforms.md はアスペクト比や尺の提案のみに使用(アスペクト比自体は依然として確認必須)。preferences.md のフィルターを遵守。
  • Profileなし:まず横長/縦長を確認し、汎用的なナレーションスタイルを使用。

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 写具体某条视频的脚本。

関連スキル