Communitygithub.com

ia-content-maker

一整套白标动画解说视频制作系统,从脚本到MP4全流程自动化,支持竖版Reels/TikTok/Shorts或横版YouTube视频。

ia-content-maker 是什么?

IA Content Maker 是一款专门用于生成 1–10 分钟扁平矢量 2D 动画解说视频的 AI 技能。它完全基于代码渲染,不依赖任何 AI 视频生成模型,而是通过 Python 引擎逐帧绘制 Canvas 画面。该技能支持竖版(1080×1920)和横版(1920×1080)格式,适合 Reels、TikTok、Shorts 和 YouTube 等平台。 其核心特色是“白标”机制:每个频道的视觉风格(调色板、字体、角色画风、卡片、转场、节奏、旁白)由代码随机生成并固化在 `dna.json` 中。即使两个频道使用同一套技能,最终输出的视频也会截然不同。用户只需提供主题和时长,AI 便会自动完成脚本撰写、角色设计、语音合成(默认免费 Kokoro)、动画编排、渲染和封面生成。 该技能运行在任意支持终端命令的 AI 智能体上(如 Claude Code、Codex、Gemini CLI、Cursor 等),支持通过命令行交互完成每一步。系统内置了丰富的规则引擎,确保视频质量:所有动画采用弹簧/弹跳/膨胀等动态入场,角色持续有微动作,每两秒呈现新元素,并遵循垂直安全区域、色彩限制和对比度校验等硬性规范。最终交付物包括 MP4 视频、封面图和带话题标签的文案。

兼容平台✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI
npx skills add https://github.com/GMendes18/ia-content-maker/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

IA Content Maker — 白标视频制作机

本技能将 AI 智能体转变为整个解说视频频道的团队:脚本、美术、角色切割与骨架、配音、动画、配乐、渲染、封面和字幕。所有运动都是代码(画布逐帧渲染);没有 AI 生成的视频。

白标: 频道的视觉身份(调色板、字体、画风、卡片、转场、节奏、旁白)由代码每个频道随机生成一次,并记录在 dna.json 中。两个使用同一技能的频道会输出不同的视频。引擎不依赖任何特定的调色板、字体或主题。

可在任何运行终端命令的 AI 智能体上工作(Claude Code、Codex、Gemini CLI、Cursor……)。原始完整规范在 referencia/especificacao-original.md;此文件记录了经过验证的流程以及实践中的所有变更。如有冲突,以此文件为准。

0. 首先:查找或创建工作区

代码运行在一个工作区中(包含 engine/、dna.json、videos/、library/ 的文件夹)。

  1. 查找现有工作区(与 engine/mv.py 同目录的 dna.json;用户可指定位置)。
  2. 如果没有:运行 bash <技能所在目录>/scripts/setup.sh [文件夹](默认为 ~/ia-content-workspace)。 安装 venv、Kokoro、faster-whisper、Playwright/Chromium、OpenCV。要求 Python ≥3.10 和 ffmpeg。
  3. 如果已有工作区但技能版本更新:同样运行 setup.sh <工作区> — 它只更新 engine/ 和 templates/,永远不会修改 dna.json、videos/ 或 library/。

以下所有命令都在工作区内运行,使用 .venv/bin/python(此处简写为 py)。

1. 频道设置(一次)

  1. 询问:频道名称(如果没有,建议 5 个与以后随机的 DNA 匹配的名称)、主格式(竖版或 16:9)、可用的配音(免费 Kokoro、ElevenLabs/其他,或用户自己的录音)以及是否已有 dna.json(若有则复制到工作区)。
  2. 运行 py engine/mv.py dna — 使用 os.urandom 种子随机生成 DNA,解决冲突的组合,验证色彩对比度,保存 dna.json + 备份并下载字体。显示身份卡(py engine/mv.py cartao)。用户可以锁定(--lock traço=índice)或重新随机某个特征(py engine/roll_dna.py --reroll <traço>)。绝不要手动选择特征。
  3. 将频道名称写入 dna.json → channel.name。
  4. 没有图像模型的美术路线:只有“圆角方形头部”画风已在代码中绘制(engine/art/characters.py)。如果随机出其他画风,要么锁定 --lock build=3,要么按照 _head/_torso/_legs 风格在 characters.py 中实现新画风,要么使用图像模型。
  5. 设置完成后,频道的 DNA 被冻结。每个视频只会重新随机每个视频特有的特征。

2. 每个视频 — 流程

用户启动命令:“做个视频:[主题],[时长]”(或“make a video: …”)。

#步骤命令暂停并展示给用户?
1创建文件夹 + 每个视频的随机化(脚本形式、钩子、动机、封面布局、亮点)py engine/mv.py novo <slug>—
2在 videos/<slug>/script.txt 中编写脚本(纯文本)+ 计划数据(字数、场景数量、角色数量)手动编写是:脚本 + 数据,等待确认
3如果主题需要,在 engine/art/plates.py 和 tiles.py 中添加新的 plates/tiles手动编写—
4美术 → 切割 → 骨架py engine/mv.py arte <slug>显示美术联系表
5配音 + 单词时间py engine/mv.py voz <slug>报告时长和 whisper 的偏差
6编写 video.json + 镜头文件 videos/<slug>/shots/01_story.js(基于 templates/shots_modelo.js)手动编写—
7联系表(每 2 秒一帧)→ 修正 → 重复py engine/mv.py contato <slug>—
8渲染 + 音频 + 质量控制py engine/mv.py render <slug>—
9封面py engine/mv.py capa <slug>—
10日志 + 交付(视频、封面、带话题标签的字幕)py engine/mv.py log <slug>是:交付

在 contato/stills/render 中附加 --formato paisagem 生成 1920×1080;默认为竖版 1080×1920。 如需检查精确时间点:py engine/mv.py stills <slug> 0,3.2,10.5。

2.1 时长(随时长缩放)

  • 字数:约每分钟 205 词(使用 Kokoro 葡萄牙语巴西版,即使速度 1.0 也较快);慢速配音约 175 词。
  • 场景数:分钟 × DNA 中的 pace.places_per_min;竖版中,每约 3 秒切一次(≈每分钟 20 个镜头)。 ~30% 的大场景板(含角色),其余为特写瓷砖(每网格 4 个)。
  • 主要角色:3 分钟以下 1–2 个,3 分钟以上 2–3 个。
  • 章节(脚本中的 ## 行):2 分钟以下无章节;2–5 分钟 3–4 章;5–10 分钟 5–8 章。
  • 渲染:--partes 4(默认)。3 分钟以上的视频:4–6 个部分。

2.2 竖版(Reels/TikTok/Shorts)— 已验证的默认格式

  • 无开场和结束动画: 配音从第 0 帧开始。video.json 不含 title 和 outro_plate。(16:9 使用 DNA 中的动画。)
  • 第 0 帧从不空白: 钩子已经出现在屏幕上(write/number 中 t0 = sh.start - 0.4)。
  • 每个镜头调用 sh.vert({ vw, vf }) — 参见 referencia/motor.md。
  • 仅竖版有烧录字幕(1–3 个词,突出显示正在说的词)。16:9 无字幕。
  • 安全区域:右侧高度 50%–80%(应用按钮)、底部 15% 内无重要元素;HUD 在左侧;动机计数器在右上角。
  • 钩子和结构:遵循 referencia/retencao.md(已验证保持率)。

3. 风格规则(不可妥协)

  • 扁平矢量,无描边,最多一个阴影(同色加深),无渐变,无纹理,无表情符号,无频道徽标,无真实人物照片。
  • 颜色:仅使用调色板的 5 种色 + dna.json 中的 11 种代码色。在镜头中使用 ENGINE.C.<颜色>、ENGINE.font(px) 和 ENGINE.rgba(hex, 透明度) — 绝不使用固定十六进制或字体名称。在代码美术中使用 ROLE["ice"|"stone"|"pine"|"coal"|"berry"](从任何调色板计算出的角色颜色)。
  • 文字只出现在世界中的物体上(黑板、标牌、船体、卡片、屏幕)— 绝不使用悬浮在画面上方的独立卡片,如果场景本身可以承载信息。直接在场景板的空白处书写。
  • 没有任何元素静止超过 1 秒;每个角色呼吸、眨眼并根据自己的台词表演(指、展示、耸肩、庆祝)。每 pace.new_thing_every_s(DNA 中定义)秒出现新事物。
  • 两个连续镜头绝不使用相同场景。缩放不超过原始像素的 1.33 倍。
  • 入场方式:弹簧/弹跳/膨胀,不使用简单的淡入。错误观念上覆盖红色 X 标记。

4. 美术

代码路线(默认,免费): plates 和 tiles 是 engine/art/plates.py 和 tiles.py 中的 SVG 函数,返回 (svg, meta)。Plates:1920×1080 世界坐标,空白,地面在中间,meta 包含 floor_y、blanks(代码书写位置)、portals(≥ 400 像素,用于转场缩放)、anchors。Tiles:物体特写,每网格 4 个(make_art.py 组装 2×2 并带白色间距,切割并转换 meta)。地图:经纬度投影轮廓(参见 pacific_map、brazil_map)。角色:art.json 中每个角色一个字典(调色板颜色,角色间肤色不同)。

图像模型路线(可选): 使用 referencia/especificacao-original.md(<art> 部分)中的核心风格生成图像,保存到 videos/<slug>/art/ 并使用相同名称,编写描述网格中矩形位置的 JSON meta(*_grid.png),管线的其余部分(切割、骨架、动画)相同。前景在绿色(#00B140)或洋红色(如果调色板包含绿色)色键背景上,且无手臂。

5. 配音

  • 默认:Kokoro(mv.py voz),使用 DNA 中旁白表格指定的声音,速度 1.0–1.1(绝不调整时间比例)。
  • 更自然:任何现成音频 → py engine/mv.py voz <slug> --wav 文件.wav(自己的声音、ElevenLabs、Chatterbox……)。脚本必须与朗读文本一致;whisper 会重新对齐时间。
  • 减少“连珠炮”效果:--pausa-max 0.35 --pausa-manter 0.28。
  • 如果超过 5% 的单词未被检测到,voice.py 会报错 — 重新生成配音,不要强制通过。

6. 渲染前检查(联系表)

在渲染前修正:空白或溢出的场景板;文字覆盖脸部;黑色边框;角色脚部悬空;连续两次使用相同场景;超过 DNA 间隔两倍无新元素的片段;第 0 帧空白;竖版中文字被边界裁切;任何不符合 DNA 的元素(字体、颜色、卡片、转场)。 渲染后,质量控制会检测未计划的单帧跳跃 — 逐一排查(使用 stills)。 音频:门控要求配音 ≥ 15 dB 高于音乐+音效,背景音在少于 1% 的帧中过高;输出 -14 LUFS,峰值 -1 dB。

7. 交付

  • 视频:videos/<slug>/<slug>_vertical.mp4(或 16:9 格式下的 <slug>.mp4)和封面图。
  • 准备字幕:第一行 = 钩子;2–3 句包含主题关键词(搜索可读取字幕);引导评论的问题;最多 5 个相关话题标签(Instagram 有限制)。
  • 提醒用户关于简化事实或流行历史版本的情况。
  • mv.py log <slug> — 每个视频的随机化会避免重复最近 5 个视频的形式/钩子/动机/封面。

8. 引擎随每个视频改进

发现 Bug 或限制?在 engine/ 中修复(绝不只修改单个视频的文件),并将经验记录在技能的 referencia/licoes.md 中。大规模补丁前备份镜头文件。长时间渲染:分部分进行,可局部重做。

参考

  • referencia/motor.md — 镜头 API(S、sh.*、角色、姿势、竖版摄像机)。
  • referencia/retencao.md — 钩子结构、结尾引导、节奏。
  • referencia/licoes.md — 所有出过的问题及解决方法。
  • referencia/especificacao-original.md — 完整规范(DNA 特征、骨架、动画、音频)。
  • workspace/exemplos/ — 两个完整视频:el-nino(竖版,神话 vs 现实)和 primeiro-cartao(16:9,时间顺序叙事)。用于学习和重建:复制到 videos/ 然后运行 mv.py arte + mv.py contato(words.js 已准备好)。

相关技能