视频制作中心(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个问题,推荐选项排首位。跳过用户在请求中已回答的内容。若用户说“你决定”,则使用加粗的默认选项。
第一轮(必问):
- 视频类型:概念类(讲解原理,含图表)· 终端教程类(逐步演示命令)· 混合类(概念讲解后用命令实操:使用概念类技能,并借用教程类技能中的终端画面)。
- 视觉风格:Dracula(深色背景,霓虹配色,与最终成品一致)· 奶油色(纸张底色,白色卡片,笔记风格)。
- 时长:短版,60秒以内(5-6个场景,适合Shorts)· 中等,1分30秒至2分钟(8-10个场景)· 完整版,约3分钟(12-14个场景,与SSH和Git视频相同)。
- 配乐:合成器(极简科技风,已用过的)· 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:记录了前两个视频制作中遇到的错误和成功经验。