Communitygithub.com

andyluu98/VideoMotion

Montez les images d'un projet VideoMotion avec voix et storyboard déjà prêts : charger les polices du style, appliquer les couleurs, distribuer chaque scène à un agent vm-canh en parallèle, assembler, vérifier la technique, rendre, ajouter l'audio et les sous-titres.

Qu'est-ce que VideoMotion ?

Cette compétence automatise la phase de montage visuel final d'un projet VideoMotion (étape 7 de `/videomotion`). Elle prend en entrée un dossier de projet contenant les fichiers `storyboard.json`, `words.json`, `timeline.json` et `mix.wav`, et produit une vidéo complète avec audio synchronisé et sous-titres. Le processus est entièrement piloté par scripts et agents : téléchargement des polices depuis Google Fonts, génération du thème CSS, assemblage des compositions HTML, distribution parallèle du rendu de chaque scène à un agent spécialisé `vm-canh` (ou via un agent généraliste avec effort Sonnet si l'agent spécialisé n'est pas disponible), vérification technique automatique via `hyperframes`, rendu vidéo final, mixage audio avec les voix préenregistrées, et génération des sous-titres. L'utilisateur peut déclencher cette étape en disant "dựng lại cảnh" (refaire les scènes), "render", "xuất video" (exporter la vidéo) ou "sửa hình cảnh X" (corriger la scène X).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/andyluu98/VideoMotion/tree/HEAD/skills/vm-dung

Demander à votre IA préférée

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

Documentation

Dựng và xuất video

Biến VV, PY như trong skill videomotion. HF là npx -y [email protected]. Đầu vào trong <du-an>: storyboard.json, words.json, timeline.json, mix.wav.

1. Chuẩn bị theo style

  1. Phông của thẻ style (dòng Google Fonts trong thẻ): "$PY" "$VV/tools/fonts.py" <du-an> "VT323" "Be Vietnam Pro:400,700" ra fonts/ và fonts.css.
  2. theme.css: biến :root từ bảng màu thẻ: --bg, --ink, --accent, màu phụ, --cap-bg, --cap-ink (phụ đề đạt tương phản 4,5:1).
  3. Style có nền liền suốt video (bản đồ, giấy, bảng, lưới): viết compositions/_nen.html (id _nen), các cảnh để nền trong suốt.
  4. "$PY" "$VV/tools/assemble.py" <du-an>: tạo index.html, chép phông, tạo file chờ cho cảnh chưa có.
  5. "$PY" "$VV/tools/packets.py" <du-an>: gói giao việc checks/packets/<id>.md cho từng cảnh.

2. Giao cảnh song song

Phát tất cả trong cùng một tin nhắn, mỗi cảnh một agent, agent type videomotion:vm-canh (đã khai model: sonnet, effort: medium: luôn là Sonnet mới nhất). Lời giao ngắn:

Dựng cảnh <id>. Gói giao việc: <du-an>/checks/packets/<id>.md. Khuôn: $VV/templates/scene.html. Viết đúng file <du-an>/compositions/<id>.html.

Phiên chưa có agent vm-canh (cài skill không qua plugin, hoặc công cụ khác): dùng agent đa năng với model: "sonnet", effort: "medium", dặn đọc $VV/agents/vm-canh.md trước. Công cụ không có agent con thì tự dựng lần lượt theo file đó.

Dưới 3 cảnh thì tự dựng, khỏi giao.

3. Ghép và kiểm tra kỹ thuật

"$PY" "$VV/tools/assemble.py" <du-an>
cd <du-an> && npx -y [email protected] check

Sửa đến khi Check passed, 0 error (lỗi ở file cảnh nào thì sửa file đó). Cảnh báo timeline_track_too_dense của phụ đề là bình thường. Không cần tờ duyệt hay người chấm; người dùng muốn xem trước thì npx -y [email protected] preview --background.

4. Render và ghép âm

"$PY" "$VV/tools/assemble.py" <du-an> --no-audio
cd <du-an> && npx -y [email protected] render --output renders/raw.mp4 > renders/render.log 2>&1
"$PY" "$VV/tools/audio/mix.py" srt <du-an>
"$PY" "$VV/tools/audio/mix.py" final <du-an> --video <du-an>/renders/raw.mp4 --name <slug>-<ddmmyyyy>
"$PY" "$VV/tools/assemble.py" <du-an>

Render chạy nền (khoảng 2 giây máy cho mỗi giây video). --no-audio là bắt buộc: mix.py final ghép mix.wav nguyên vẹn. Lệnh assemble cuối trả index.html về bản có tiếng để xem trước.

5. Kiểm một lần

ffprobe renders/<ten>.mp4: đúng kích thước, có luồng âm thanh, thời lượng bằng total trong words.json. Trích một khung giữa video bằng ffmpeg và nhìn qua. Giao renders/<ten>.mp4 và phude.srt.

Individual skills in this repo

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

Skills associés