用途
youtube-video-kit 用于为 YouTube 视频制作成套的包装素材,让视频以频道化风格呈现,而不是简单的屏幕录制。模板融合了两种参考风格:电影感静帧配极简文字,以及深色 IDE 截图配超大边框文字、单个强调词、在 320px 宽度下仍可读。它沿用 social-media-kit 技能的深色车道艺术语言。
主要能力
配置
脚本读取环境变量,不硬编码个人信息。可配置项包括:
- 签名文字(左下角):BRAND_URL,默认 yourblog.example
- 白底头像 PNG(可选):AVATAR_PATH,未设置则不绘制头像
- 强调词颜色:ACCENT,默认 D97757(赤陶色)
- 字体:HEADLINE_FONT、MONO_FONT,macOS 默认 Helvetica Neue 和 Menlo,Linux 使用 DejaVu
- 开场眉题与 chip 文字:OPEN_EYEBROW、OPEN_CHIP
- ElevenLabs 密钥:ELEVENLABS_API_KEY,生成音乐时必填
频道 ID、handle 和头像需放在自己的配置中。
缩略图
scripts/ytthumb.py 生成 1280x720 缩略图(先以 2560x1440 渲染再缩小)。同一播放列表保持模板一致,只改变标题、强调词和车道图案。背景为 #0A0B0D,右侧三分之一为车道图案,带绿色和红色端点。若设置头像,会做抠图(白色高于 235 变为透明)、NEAREST 缩放并置于车道右下方。标题最多两行、约 5 个词,粗体无衬线,2x 下约 210px,白色,含一个强调词,须在 320px 宽度下可辨(眯眼测试)。另含一个带真实数字和绿点的等宽 chip,以及左下角签名和光标块。
示例命令: AVATAR_PATH=./avatar.png BRAND_URL=myblog.dev python3 .claude/skills/youtube-video-kit/scripts/ytthumb.py "MY AI TESTS|MY PRODUCT." AI "7 passed · 4 failed" thumb.png
开场标题
scripts/ytopen.py [out.mp4] 以 30fps 渲染 4.2 秒、1920x1080 的开场,用 PIL 帧经管道送入 ffmpeg(rawvideo 到 libx264 crf 19)。序列为:车道错峰绘入(0-1.2s);眉题(0.6s);标题逐行淡入(0.9、1.2、1.5s,强调词着色);chip(2.2s);头像上升(1.6-2.6s);签名与闪烁光标(2.6s);0.5s 淡出至黑。标题在脚本中的 HEAD 处编辑。
与主视频拼接时,可为开场加静音 AAC 音轨(-f lavfi -i anullsrc=r=44100:cl=mono -shortest)匹配主视频音频参数,再用 concat demuxer 配合 -c copy 合并。
ElevenLabs 音乐
通过 POST https://api.elevenlabs.io/v1/music 生成音乐,请求头带 xi-api-key,JSON 体含 prompt 和 music_length_ms,输出 bgm.mp3。使用前需确认当前套餐包含 Music API。作为旁白底乐时,提示词可要求“非常极简、不抢戏、无旋律钩子、无人声”。底乐混音通常比配音低约 20dB,仅在标题段更响,示例 ffmpeg 滤镜链用 atrim、volume、afade 和 amix 实现。可用 volumedetect 检查旁白窗口:平均值接近 -25dB,最大值不低于 -6dB。生成的音轨应持久保存,便于播放列表复用同一音乐家族。
使用方式
分镜:插图化而非幻灯片
原则是每一帧应展示正在讲述的概念,而不是把文字印上去。文字列表帧等同于幻灯片,观众会快速略过。对每句配音问“这个想法的画面是什么”:自我吞噬的循环画成循环,两条车道汇合画成汇合。只在一两个锚点陈述处回退到排版。截图只有在有引导镜头时才算插图:光标移动到所讲元素、点击涟漪、精确包裹该行的highlight、缩放。静态截图只是幻灯片。
配音节奏:在非插图帧(规则、回顾、引用)加快语速、缩短句子或剪掉停顿;只在视觉需要观看时间处(素材、终端回放)放慢。无聊画面加慢速旁白是最大的流失组合。
动画速度:光标跳跃 0.4 秒以内,元素淡入 0.5 秒以内,任何静态帧不超过 2.5 秒且须有东西在动(光标、加载指示、高亮脉冲)。
镜头分段质检
拼接前每段截图须通过检查:高亮使用卡片坐标(截图缩放到卡片宽度),光标路径点使用屏幕坐标,不可混用。高亮应端到端包裹一个真实 UI 行或元素边缘,不得切穿行或浮在空白处,须按从图像读出的真实边界框对齐。渲染前用 PIL 把高亮矩形贴到缩放后的截图上目视检查;渲染后用 ffmpeg -ss <t> -frames:v 1 在每个高亮中点抽帧查看。高亮不得与缩放窗口重叠,高亮矩形不随缩放变化,须在缩放开始前结束。光标路径点和点击涟漪落在所讲元素上,而不是空白处。
上传包与 Studio 发布
每个视频在工具文件夹中保留:最终 mp4、缩略图 PNG 和 youtube-description.txt(钩子句、章节、博客链接在前、技能链接、标签)。标题公式:收益 + 具名产品 + “AI agent”关键词,70 字符以内。播放列表一致性使用相同缩略图模板、相同开场和相同音乐家族。
通过已登录 Chrome 在 YouTube Studio 发布(自己的频道)时:上传对话框的文件输入有时在 shadow DOM 中,可用 cdp("DOM.performSearch", query="input[type=file]") 配合 DOM.setFileInputFiles 按 nodeId 设置;标题和描述框是 #textbox 元素,先全选再输入;缩略图用 input#file-loader;受众通过 JS .click() 点击 VIDEO_MADE_FOR_KIDS_NOT_MFK 单选;播放列表用对话框下拉复选框;推进用 #next-button 三次 JS 点击,可见性用 PUBLIC 单选 JS 点击,最后 #done-button。删除旧上传:视频编辑页、Options、Delete、同意复选框、Delete forever。替换视频文件会生成新视频 ID,需更新所有已发布链接;X 回复须删除重发,LinkedIn 帖子和 Reddit 评论可编辑。
适用场景
适合需要批量制作风格统一 YouTube 视频包装的创作者与频道运营,尤其适合 AI 编程类、技术讲解类频道;也可用于播放列表的品牌一致性维护。
限制
依赖 Python 3 + Pillow、ffmpeg;音乐生成需 ELEVENLABS_API_KEY 且套餐须包含 Music API;发布环节需要 CDP 驱动的已登录 Chrome 和自有频道。头像可选,未提供则绘制。具体定价、套餐差异等资料未详细给出,需以 ElevenLabs 官方为准。