Communitygithub.com

LucasLBrito/video-dev

使用Python自动生成纵向编程教学短视频(9:16比例,适配Shorts/Reels/TikTok),包含动画图表、葡萄牙语旁白和背景音乐,无需任何视频编辑软件。

video-dev 是什么?

该技能是一个AI视频生成中心,专为创建9:16比例的编程与技术主题短视频(如Shorts、Reels、TikTok)设计。它能自动引导用户完成视频制作全流程:通过多轮问题明确视频类型(概念讲解、终端教程或混合)、视觉风格(Dracula暗色系或Cream纸感风)、时长(最长3分钟)和背景音乐风格。技能预先集成了Python动画引擎(基于Pillow实现逐帧绘制)、免费神经网络语音合成(edge-tts,需联网)和代码生成音乐(numpy),最终输出1080x1920分辨率30fps的MP4文件。核心工作流包括:AskUserQuestion收集需求 -> 环境检查与自动安装 -> 创建项目结构 -> 语音生成(先于动画以确定每帧时长)-> 编写场景动画代码 -> 预览检查 -> 最终渲染与音频混音。支持技能链调用,参考video-conceito和video-tutorial-terminal等关联技能实现复杂制作。特别适合非专业视频创作者,仅需描述想法即可获得成品。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LucasLBrito/midia-skills/tree/main/skills/video-dev

在你喜欢的 AI 中提问

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

文档

视频制作中心(hub)

路径: ${CLAUDE_PLUGIN_ROOT} 是本插件的根目录。若未定义该变量, 根目录为此技能“基本目录”上方两层文件夹(<根>/skills/<技能>)。若技能被直接复制到 ~/.claude/skills,则用 ~/.claude/skills 替代 ${CLAUDE_PLUGIN_ROOT}/skills。

此技能记录了制作视频 “什么是SSH” 和 “Git与GitHub最佳实践” 过程中积累的经验。 最终输出为1080x1920分辨率、30帧/秒的竖版MP4文件。动画使用Python(Pillow库)逐帧绘制,语音使用免费神经TTS(edge-tts),音乐通过NumPy编程生成。无需After Effects、CapCut等任何付费编辑软件。

请使用简洁的巴西葡萄牙语回复,先说结论。

技能地图

技能使用场景
video-dev(本技能)始终优先:提问、准备工作、创建项目文件夹、最终渲染、交付成品
video-conceito讲解工作原理(如SSH、DNS、HTTPS、Docker、JWT等):包括流程图、数据包传输动画
video-tutorial-terminal教授需要跟随输入的命令(如Git、Docker CLI、npm、Linux等):包含实时键入的终端画面
narracao-voz撰写/调整口头脚本、语音、英文术语发音、各段文字时间校准
trilha-video背景音乐及与语音的混音(闪避效果)

一旦确定视频类型,即可阅读所选类型的技能文档。旁白和音乐部分可在相关阶段再查看。

路径

SK = ${CLAUDE_PLUGIN_ROOT}/skills   (插件根目录;参见下方“路径”说明)
SK/video-dev/scripts/            motor.py, render.py, novo.py, checar.py
SK/video-dev/exemplos/ssh/       SSH视频完整项目(概念类)
SK/video-dev/exemplos/git/       Git视频完整项目(教程类)
SK/narracao-voz/scripts/         narracao.py, pronuncia_base.json
SK/trilha-video/scripts/         trilhas.py, mixar.py
SK/video-dev/references/         elementos.md(API和布局)、licoes.md(已犯错误记录)

步骤1 — 提问(在创建任何文件之前)

使用AskUserQuestion工具一次性提出最多4个问题,推荐选项排首位。跳过用户在请求中已回答的内容。若用户说“你决定”,则使用加粗的默认选项。

第一轮(必问):

  1. 视频类型:概念类(讲解原理,含图表)· 终端教程类(逐步演示命令)· 混合类(概念讲解后用命令实操:使用概念类技能,并借用教程类技能中的终端画面)。
  2. 视觉风格:Dracula(深色背景,霓虹配色,与最终成品一致)· 奶油色(纸张底色,白色卡片,笔记风格)。
  3. 时长:短版,60秒以内(5-6个场景,适合Shorts)· 中等,1分30秒至2分钟(8-10个场景)· 完整版,约3分钟(12-14个场景,与SSH和Git视频相同)。
  4. 配乐:合成器(极简科技风,已用过的)· Lo-fi · 氛围 · 钢琴 · 无配乐。

第二轮(仅当仍有不明确项时):

  • 目标观众:初学者(解释所有术语)或已会编程者(直奔主题)。
  • 语音:pt-BR-AntonioNeural(男声,已使用过)或 pt-BR-FranciscaNeural(女声)。 运行 narracao.py --vozes 查看其他选项。
  • 必讲要点:绝不能遗漏的内容?是否有特定示例、命令或故事?
  • 结尾:总结/清单(默认)、“保存此视频”号召或引导评论的问题。

继续前,请用2-3行确认:主题、类型、视觉风格、时长、场景数量和配乐。

步骤2 — 准备计算机(每台机器仅需一次)

python SK/video-dev/scripts/checar.py

若缺少组件:python SK/video-dev/scripts/checar.py --instalar(通过pip安装edge-tts、pillow、imageio-ffmpeg和numpy;ffmpeg随imageio-ffmpeg内嵌,无需系统级安装)。Windows系统已预装Bahnschrift和Consolas字体。

需告知用户一次:语音合成需要网络连接。脚本文本将发送至Microsoft语音服务。动画和音乐均在本地计算机上运行。

注意Windows下的长路径问题:Python在过深的文件夹(如Claude的临时目录)会因“File name too long”错误失败。请使用短路径的工作目录。

步骤3 — 创建视频项目文件夹

建议将文件夹建在同步目录之外(如OneDrive、Dropbox、iCloud):渲染过程会生成数千帧画面,同步会导致速度极慢。推荐位置:~/Projetos/videos/<简短名称>/。询问用户是否有其他偏好。

python SK/video-dev/scripts/novo.py <路径> --tipo conceito --titulo "什么是Docker" --tema dracula --cenas 12

项目结构(脚本中的1句话 = 1个场景):

<路径>/
  video.json     标题、文件名、主题、语音、语速、配乐
  roteiro.json   ["场景1的台词", "场景2的台词", ...]
  pronuncia.json 可选:项目术语 -> 发音注音
  cenas.py       def cenas(): return [[场景1元素], ...]
  audio/         场景01.mp3 + 场景01.json(每个单词的时间戳)
  saida/         <文件名>.mp4, <文件名>_trilha.mp4, poster.jpg, preview/

步骤4 — 脚本编写 → 展示给用户 → 获得批准

按照所选视频类型(概念或教程)的规则和narracao-voz技能的发音规则编写脚本。在开始动画前展示脚本:修改文本远比修改场景容易。仅在获得确认后继续。

步骤5 — 语音生成

python SK/narracao-voz/scripts/narracao.py <路径>
python SK/narracao-voz/scripts/narracao.py <路径> --tempos 3     # 场景3中每个单词的发音时间

语音生成必须在动画之前完成,因为每个场景的持续时间等于对应台词时长加上0.7秒,且元素需在对应单词被念出的瞬间出现。

步骤6 — 场景(动画)

使用 from motor import * 编写 cenas.py(完整API见 references/elementos.md)。 每个场景需:运行 --tempos N,决定每个关键词对应的画面元素,并将该时间(或提前0.2秒)作为元素的 t(出现时间)参数。

通过查看生成的帧来验证,而非仅阅读代码:

python SK/video-dev/scripts/render.py <路径> --preview      # 每个场景的最后一帧
python SK/video-dev/scripts/render.py <路径> --cena 4       # 场景4,每秒一帧

使用Read工具打开PNG文件检查:边缘无裁剪、无重叠、文字在手机上足够大、底部250像素区域(TikTok/Reels的标题和按钮区域)无重要内容。

步骤7 — 最终渲染 + 混音

python SK/video-dev/scripts/render.py <路径>                         # 输出 saida/<文件名>.mp4 + poster.jpg
python SK/trilha-video/scripts/mixar.py <路径>/saida/<文件名>.mp4 synth  # 输出 saida/<文件名>_trilha.mp4

一个3分钟的视频渲染约需几分钟:建议在后台运行。

步骤8 — 检查并交付

  • 使用ffmpeg检查时长和音轨(ffmpeg -i 文件名.mp4 可显示流信息)。
  • 从最终MP4的不同时间点提取3-4帧进行人工核查。
  • 使用SendUserFile(display: "render")交付成品,并告知文件所在文件夹路径。
  • 若用户希望创建类似SSH和Git视频的观看/分享页面,可使用Artifact发布,包含MP4和files目录下的脚本。仅当用户要求时才公开。
  • 未经用户授权,不得上传至YouTube/TikTok/GitHub。

发布后的常见修改

需求操作
修改某句台词编辑 roteiro.json → 运行 narracao.py --so N → 调整场景N的时间戳 → 重新渲染
纠正发音在项目中添加 pronuncia.json → 运行 narracao.py --so N(详见narracao-voz文档)
更换视觉风格在渲染时添加 --tema creme,或修改 video.json 中的 tema 字段
调整音量(过大/过小)运行 mixar.py ... --trilha 0.25(详见trilha-video文档)
从长视频生成精简版新建项目,仅复制关键场景和浓缩的脚本内容

开始之前,请阅读 references/licoes.md:记录了前两个视频制作中遇到的错误和成功经验。

Individual skills in this repo

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

相关技能