手把手教你打造专属技能(Skill),让AI帮你做动画视频

  • King
  • 发布于 10小时前
  • 阅读 17

不知道大家有没有发现,最近有一个叫Manim的动画库特别火?它是3Blue1Brown(那个用惊艳动画讲数学的YouTube频道)的创始人GrantSanderson用Python写的数学动画引擎。短短几年,它已经成为技术圈和数学教育领域的"网红工具"——用代码就能做出那

不知道大家有没有发现,最近有一个叫 Manim 的动画库特别火?

它是 3Blue1Brown(那个用惊艳动画讲数学的 YouTube 频道)的创始人 Grant Sanderson 用 Python 写的数学动画引擎。

短短几年,它已经成为技术圈和数学教育领域的"网红工具"——用代码就能做出那种丝滑流畅、知识点一目了然的教学动画。

但问题也随之而来:Manim 虽然强大,完整的视频制作流程却相当繁琐。

从写场景脚本 → 渲染视频 → 配音旁白 → 合成音频 → 添加字幕 → 生成封面... 这一套下来,光是命令行就要敲好几遍,更别说还要调参、调节奏。

那有没有办法,让 AI 一次性把这些流程"封装"起来?你只需要告诉它"我要做一个讲解二次函数顶点式的视频",它就能自动把脚本、分镜、代码、渲染命令、旁白合成全给你搞定?

当然可以。这就是 Skill 的用武之地。


什么是 Skill?

简单说,Skill 是 AI 能力的插件化封装

想象一下:你的 AI 助手本身是一个通用大脑,但它可以通过加载不同的 Skill 来获得特定领域的"专业技能"。比如:

  • 一个"视频制作 Skill"让它学会用 Manim 做动画
  • 一个"数据分析 Skill"让它精通 Python/Pandas
  • 一个"写作助手 Skill"让它帮你润色文案

每个 Skill 都是一个独立的模块,包含:

  1. 描述文件(SKILL.md):告诉 AI 这个技能是干什么的、什么时候用、怎么用
  2. 工具脚本:封装好的 Python/Bash 脚本,实现具体功能
  3. 使用文档:给用户看的安装和使用说明

这样一来,AI 就不再是"一个只会聊天的模型",而是一个可以不断扩展能力的智能代理


以 Video Skills 为例:一步步教你创建自己的 Skill

接下来,我们以 manim-video-teacher 这个 Skill 为例,手把手教你如何从零构建一个视频制作领域的专属 Skill。

第一步:确定 Skill 的定位和目标

在动手写代码之前,先想清楚这个 Skill 要解决什么问题。

对于 manim-video-teacher,我们的目标很明确:

帮助用户用中文提示词,自动生成完整的 Manim 教学视频。

具体来说,用户只需要给出一个需求(比如"做一个 60 秒讲解二次函数顶点式的视频"),Skill 就要能产出:

  • 📝 教学脚本(引入→定义→机制→示例→总结)
  • 🎬 分镜设计(每个镜头的画面目标和动画要点)
  • 💻 可直接运行的 Manim 代码
  • 🔊 旁白音频(用 TTS 合成)
  • 📢 带字幕的最终 MP4 视频
  • 🖼️ 封面图

经验之谈:Skill 的定位要足够聚焦,不要试图做一个"万能工具"。专注一个场景,把它做到极致,比做一个大而全的东西更实用。


第二步:设计 Skill 的目录结构

一个规范的 Skill 通常长这样:

manim-video-teacher/
├── SKILL.md              # 核心描述文件(AI 用的说明书)
├── README.md             # 用户使用文档
└── scripts/              # 工具脚本集合
    ├── tts_generate.py   # 旁白生成
    ├── concat_audio.py   # 音频拼接
    ├── mux_av.py         # 音视频合成
    ├── make_cover.py     # 封面生成
    └── pipeline.py       # 一键执行全部流程

为什么这样设计?

  • SKILL.md 是给 AI 看的,描述这个 Skill 的能力边界和使用方式
  • scripts/ 目录放可执行脚本,AI 可以调用它们完成具体任务
  • 用户只需要看 README.md 就能上手

第三步:编写核心描述文件 SKILL.md

这是整个 Skill 最关键的文件。它决定了 AI 能否正确理解并使用这个 Skill。

一个好的 SKILL.md 应该包含以下几部分:

1. Skill 元信息

---
name: manim-video-teacher
description: 专注于使用 Manim 生成动画教学视频的完整流程与专业建议...
---

2. 快速目标

用一两句话说明这个 Skill 能帮用户达成什么。

## 快速目标

用用户的中文提示语,产出可执行的 Manim 方案:脚本/分镜/代码/渲染命令...

3. 工作流程

告诉 AI 该按什么步骤执行任务:

## 工作流程

1. 把用户提示语改写成教学脚本(结构化段落)
2. 为每段脚本给出分镜(画面目标、关键动画、旁白要点)
3. 设计视觉语言(颜色/字号/对齐/高亮规则)
4. 生成 Manim 代码(Scene 结构清晰、变量命名明确)
5. 给出渲染命令与参数建议
6. 用脚本生成旁白音频,并同步产出字幕
7. 用脚本合成视频与音频,必要时嵌入字幕
8. 用脚本生成单独封面图
9. 简要解释关键教学设计选择

4. 模板和规范

为了让 AI 输出质量稳定的内容,给出模板是很好的做法:

## 教学脚本模板

用短句、可口播的节奏:

1. 引入:问题/现象/动机(1-2 句)
2. 定义:核心概念(1-3 句)
3. 机制:关键步骤或推导(分 2-5 步)
4. 示例:用 1 个具体例子验证
5. 总结:一句话回扣重点

5. 代码约定

如果涉及编程,给出代码风格规范:

## Manim 代码约定

- 使用 `Scene` 或 `MovingCameraScene`,保持单场景可复用
- 把复杂动画拆成小函数(如 `show_definition()`)
- 用 `VGroup` 组织元素,统一对齐与间距
- 用 `FadeIn/FadeOut/Transform` 传达逻辑过渡

6. 脚本调用方式

告诉 AI 如何调用封装好的脚本:

可用脚本:

- `scripts/tts_generate.py`:把旁白文本转为音频,可用 `--subs-output subs.srt` 输出字幕
- `scripts/concat_audio.py`:合并多段旁白
- `scripts/mux_av.py`:合成视频与音频,可用 `--subs subs.srt` 嵌入字幕
- `scripts/make_cover.py`:生成 16:9 封面图
- `scripts/pipeline.py`:一键执行语音、合成与封面生成

示例:

```bash
python scripts/pipeline.py \
  --video manim.mp4 \
  --tts-file narration.txt \
  --subs-output subs.srt \
  --cover-title "二次函数顶点式" \
  --cover-subtitle "60 秒掌握" \
  --output output.mp4

核心原则:SKILL.md 写得越详细、越具体,AI 的输出就越符合预期。它本质上是给 AI 的一份"专业培训手册"。


第四步:实现工具脚本

Skill 的价值最终要靠脚本落地。对于视频制作场景,我们需要以下几个核心脚本:

1. 旁白生成(tts_generate.py)

edge-tts 把文字转成语音,同时生成 SRT 字幕:

import argparse
import subprocess
from pathlib import Path

def generate_tts(text_file: Path, output_audio: Path, subs_output: Path = None):
    """调用 edge-tts 生成旁白和字幕"""
    # 读取文本
    text = text_file.read_text(encoding="utf-8")

    # 调用 TTS(示例用 edge-tts)
    cmd = [
        "edge-tts",
        "--voice", "zh-CN-XiaoxiaoNeural",
        "--text", text,
        "--write-media", str(output_audio)
    ]

    if subs_output:
        cmd.extend(["--write-subtitles", str(subs_output)])

    subprocess.run(cmd, check=True)

2. 音视频合成(mux_av.py)

用 ffmpeg 把视频、音频、字幕合并成最终成品:

def mux_video(video_path, audio_path, output_path, subs_path=None):
    """合成视频与音频,可选嵌入字幕"""
    cmd = ["ffmpeg", "-y", "-i", str(video_path), "-i", str(audio_path)]

    if subs_path:
        cmd.extend([
            "-i", str(subs_path),
            "-map", "0:v",
            "-map", "1:a",
            "-map", "2:s",
            "-c:v", "copy",
            "-c:a", "aac",
            "-c:s", "mov_text"
        ])
    else:
        cmd.extend(["-c:v", "copy", "-c:a", "aac"])

    cmd.extend([str(output_path)])
    subprocess.run(cmd, check=True)

3. 封面生成(make_cover.py)

用 Pillow 生成符合 16:9 比例的封面图:

from PIL import Image, ImageDraw, ImageFont

def create_cover(title: str, subtitle: str, output_path: Path):
    """生成 1920x1080 的封面图"""
    img = Image.new("RGB", (1920, 1080), color="#1a1a2e")
    draw = ImageDraw.Draw(img)

    # 绘制标题和副标题
    # ...(具体实现省略)

    img.save(output_path)

4. 一键 pipeline(pipeline.py)

这是最重要的脚本——它把上面所有步骤串联起来,用户只需要一个命令就能跑完整个流程:

def run_pipeline(video, tts_file, cover_title, cover_subtitle, output):
    """一键执行:TTS → 合成 → 封面"""
    # Step 1: 生成旁白和字幕
    audio_path = Path("output/audio.mp3")
    subs_path = Path("output/subs.srt")
    generate_tts(Path(tts_file), audio_path, subs_path)

    # Step 2: 生成封面
    cover_path = Path("output/cover.png")
    create_cover(cover_title, cover_subtitle, cover_path)

    # Step 3: 合成最终视频
    mux_video(Path(video), audio_path, Path(output), subs_path)

封装技巧:每个脚本只做一件事,但提供灵活的参数。这样既可以单独使用,也可以被 pipeline 统一调度。


第五步:制作安装脚本

为了让用户能方便地安装你的 Skill,写一个自动化安装脚本是标准做法:

#!/usr/bin/env bash
# scripts/install_skill.sh

# 自动检测目标目录(支持 CODEX_HOME、环境变量、本地目录等)
# 复制 Skill 到目标位置
# 打印安装成功信息

# 用法示例:
# ./scripts/install_skill.sh --dest ~/codex/skills
# ./scripts/install_skill.sh --list  # 预览安装位置

这个脚本会:

  1. 自动识别用户的技能目录(优先使用 CODEX_HOME,fallback 到 ~/.codex/skills
  2. 支持 --force 强制覆盖安装
  3. 支持 --list 预览安装位置(安装前先确认)

第六步:写好 README.md

README.md 是给人类用户看的,要做到:

  • 快速上手:给一个最简单的例子
  • 依赖说明:列出 Python 版本、ffmpeg 等要求
  • 脚本说明:每个脚本是干什么的、怎么用
  • 示例演示:给一个完整的运行示例
# Manim Video Teacher Skill

一个帮你用 Manim 生成教学视频的 Skill。

## 快速开始

1. 安装依赖:`pip install -r requirements.txt`
2. 运行 pipeline:

```bash
python manim-video-teacher/scripts/pipeline.py \
  --video media/videos/your_scene/1080p60/YourScene.mp4 \
  --tts-file examples/narration.txt \
  --cover-title "二次函数顶点式" \
  --cover-subtitle "60 秒掌握" \
  --output output.mp4

效果演示

当你完成了这个 Skill 之后,用户只需要这样一段提示词:

"用 Manim 做一个 60 秒讲解二次函数顶点式的视频,画面简洁,讲解节奏适中。"

AI 就能自动:

  1. 生成教学脚本(引入→定义→机制→示例→总结)
  2. 写出完整的 Manim 代码
  3. 渲染出动画视频
  4. 用 TTS 生成旁白和字幕
  5. 合成最终带字幕的 MP4
  6. 生成一张 16:9 封面图

整个过程,用户不需要懂 Manim、不需要会 ffmpeg、不需要写任何代码——这就是 Skill 的魔力


总结:创建 Skill 的核心要点

步骤 关键动作
1. 定位 聚焦一个具体场景,不要贪大求全
2. 结构 规范目录结构(SKILL.md + scripts/)
3. 描述 SKILL.md 写得足够详细、具体
4. 脚本 每个脚本做一件事,但可组合使用
5. 安装 提供自动化安装脚本
6. 文档 README.md 让用户能快速上手

写在最后

Manim 让我们看到了"用代码做动画"的无限可能。而 Skill 机制,则把这种可能性扩展到了用自然语言指挥 AI 完成一整套复杂流程

如果你也有某个领域的专业技能想要"AI 化",不妨试试把它封装成一个 Skill。

也许下一个爆款,就是你做的。

Happy Coding! 🎬


最后,欢迎大佬一起来优化:github.com/lispking/video-skills

  • 原创
  • 学分: 0
  • 分类: AI
  • 标签:
点赞 0
收藏 0
分享

0 条评论

请先 登录 后评论
King
King
0x56af...a0dd
擅长Rust/Solidity/FunC/Move开发