Communitygithub.com

ZJU-REAL/Easel

Un thème en une phrase → une vidéo courte prête à l'emploi : enchaine automatiquement la rédaction du script, la génération d'images/IA vidéo, le doublage, les sous-titres, la musique de fond et le montage final, transformant les briques de création d'Easel en une chaîne de production « une touche pour une vidéo ». Pour les vidéos uniques, de type présentation orale ou information, les images sont par défaut associées phrase par phrase avec un mouvement Ken Burns ; pour le dynamisme, on passe à la génération vidéo par segment. À utiliser lorsque l'utilisateur dit « génère une vidéo en un clic », « fais une courte vidéo automatiquement », « crée une vidéo à partir d'un thème », « fais-moi une vidéo », « présentation orale clé en main », « sortie automatique », « génération rapide de courte vidéo ». Pour les séries scénarisées avec personnages/dialogues/rebondissements/épisodes, utiliser short-drama (chaque plan impose une génération vidéo, pas d'image fixe) ; pour n'écrire que le script, utiliser video-script ; pour générer un seul clip, utiliser ai-video-gen.

Qu'est-ce que Easel ?

Easel est un outil d'orchestration de bout en bout pour la création de vidéos courtes. À partir d'un simple thème ou d'un script, il enchaîne automatiquement les étapes de production : rédaction du script (video-script), génération d'images (ai-image-gen) ou de clips vidéo (ai-video-gen) pour chaque phrase, doublage vocal (tts-voiceover), sous-titrage (auto-subtitle), musique de fond (ai-music), et assemblage final. Il s'appuie sur une pipeline modulaire inspirée des moteurs de vidéo automatique comme Pixelle-Video ou MoneyPrinterTurbo. L'utilisateur peut configurer la durée, le style, le choix des voix (avec accent sur des voix réalistes via clé API payante) et le format (portrait/paysage). Le système gère les dégradations automatiques en cas d'absence de clé API, propose un plan avant toute facturation, et conserve tous les assets intermédiaires dans `outputs/` pour des remplacements ou réassemblages ultérieurs. Il détecte également le profil utilisateur (style, plateformes, préférences) pour adapter la tonalité et les visuels.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Vidéo courte en un clic (orchestration de bout en bout)

Saisissez un thème, une vidéo courte est automatiquement produite. Cette compétence est la couche d'orchestration : elle enchaîne les briques de production existantes — Script (video-script) → Image par phrase (ai-image-gen) ou clip (ai-video-gen) → Doublage (tts-voiceover) → Sous-titres (auto-subtitle) → BGM (ai-music) → Montage (scripts/assemble.py). Issue de l'approche des moteurs de vidéo automatique Pixelle-Video / MoneyPrinterTurbo.

Entrée

  • Thème / Script (obligatoire)
  • Optionnel : durée souhaitée, style, doublage/sous-titres/BGM, images générées par IA ou assets utilisateur
  • Vérification obligatoire du format : si l'utilisateur ou la tâche amont n'a pas précisé l'orientation (paysage/portrait) ou la résolution (16:9/9:16/spécifique), il faut demander et attendre confirmation avant toute génération ou paiement ; ne pas déduire silencieusement de la plateforme, du profil ou d'une valeur par défaut. Si déjà précisé, ne pas redemander.

Sortie

La vidéo finale est écrite dans outputs/nom_du_thème/final.mp4 ; les images storyboard, doublage, sous-titres et le storyboard JSON sont stockés dans outputs/nom_du_thème/assets/.

Étapes d'exécution (ajustables, les étapes sans clé API sont automatiquement dégradées ou demandent confirmation)

  1. Écrire le script et le storyboard : utiliser video-script pour rédiger un script de présentation orale à partir du thème, le découper en N phrases (chaque phrase = un plan) et associer à chaque phrase une description visuelle.

  2. Générer les visuels (une image ou un clip par plan) :

    • Si clé API image disponible → ai-image-gen text2img phrase par phrase (au format confirmé)
    • Si besoin de dynamisme → ai-video-gen text2video/image2video
    • Si assets utilisateur fournis → utiliser image-editing pad pour les adapter au format confirmé
    • Sinon → choisir un modèle de carte adapté au format confirmé (portrait : card-xiaohongshu/poster-hero, paysage : card-quote) puis appliquer pad pour éviter toute incohérence de format.
  3. Doublage : tts-voiceover synthétise le script en voix-off (produit également un fichier SRT). Si VOICE_PROVIDER est configuré, utiliser par défaut une voix premium (expressive, réaliste) ; seulement en l'absence de clé, se rabattre sur edge (voix mécanique). Pour une voix-off naturelle, il est impératif de fournir une clé API premium. Ignorer cette étape si aucun doublage n'est souhaité.

  4. Sous-titres : utiliser le SRT fourni par TTS, ou exécuter auto-subtitle sur le doublage ; on peut aussi laisser l'assembleur générer les sous-titres à partir des légendes de chaque plan.

  5. BGM : générer avec ai-music, ou utiliser une musique fournie par l'utilisateur. Optionnel.

  6. Montage final : assembler les assets dans un storyboard JSON et lancer le composeur :

    python skills/openclaw/auto-short-video/scripts/assemble.py assemble \
      --storyboard outputs/nom_du_thème/assets/storyboard.json \
      -o outputs/nom_du_thème/final.mp4
    

    Structure du storyboard (image ou vidéo, narration/BGM/sous-titres optionnels, durée par défaut répartie également si non précisée) :

    {
      "size": "<format confirmé, ex. 1080x1920 ou 1920x1080>",
      "image_motion": "ken-burns",
      "shots": [
        {"image": "outputs/nom_du_thème/assets/shot1.png", "duration": 3, "caption": "Première phrase", "motion": "static"},
        {"video": "outputs/nom_du_thème/assets/clip2.mp4", "caption": "Deuxième phrase"}
      ],
      "narration": "outputs/nom_du_thème/assets/voice.mp3",
      "bgm": "outputs/nom_du_thème/assets/bgm.mp3",
      "subtitle": "outputs/nom_du_thème/assets/voice.srt"
    }
    

    image_motion définit le mouvement par défaut pour toutes les images ; motion sur un plan peut le surcharger : pour les photos, utiliser ken-burns ; pour les contenus textuels (slides, graphiques, interfaces), utiliser impérativement static (redimensionnement proportionnel + remplissage des bords, sans recadrage ni translation). Le composeur effectue automatiquement : génération d'images fixes ou Ken Burns selon image_motion, remplissage des bords pour correspondre au format, assemblage, mixage doublage+BGM (BGM automatiquement atténué), et incrustation des sous-titres.

  7. Livraison : produire final.mp4, accompagné d'une note précisant les étapes utilisées et celles qui ont été dégradées.

Principes d'orchestration

  • Briques optionnelles : les étapes sans clé API (image, vidéo, TTS) sont automatiquement dégradées (carte de remplacement / pas de doublage) sans bloquer l'ensemble, et l'utilisateur est informé des dégradations effectuées.
  • Plan avant exécution : pour les étapes utilisant plusieurs API payantes (génération d'images, vidéos, musique), présenter à l'utilisateur les API appelées, le temps et le coût approximatifs, et attendre confirmation avant de lancer.
  • Archivage des intermédiaires : les images storyboard, doublage, sous-titres et storyboard JSON sont conservés dans outputs/nom_du_thème/assets/, facilitant les remplacements individuels et le réassemblage ultérieur.

Détection du profil utilisateur

  • Si un profil est présent : utiliser style.md pour la tonalité et le style visuel dans tout le script et les prompts d'images ; platforms.md uniquement pour suggérer le format/durée, mais le format nécessite toujours confirmation ; preferences.md pour filtrer les contenus interdits.
  • Sans profil : demander d'abord l'orientation (paysage/portrait), puis utiliser un style de présentation orale générique.

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

Skills associés