Summary
用 Remotion 制作「小白学AI」系列的手绘故事视频:米白纸底 + 火柴人角色 + Q萌电脑 AI「小智」+ 手绘抖动线框/箭头/红圈动画。当用户要制作该系列新一集(第2集、第3集…)、把一份故事脚本变成手绘风格视频、修改已有集数、或给这套风格的视频加配音时,必须使用这个…
liangdabiao/video-skills-toolkit · Archived
用 Remotion 制作「小白学AI」系列的手绘?
npx skills add liangdabiao/video-skills-toolkit --skill sketch-story-remotion
用 Remotion 制作「小白学AI」系列的手绘故事视频:米白纸底 + 火柴人角色 + Q萌电脑 AI「小智」+ 手绘抖动线框/箭头/红圈动画。当用户要制作该系列新一集(第2集、第3集…)、把一份故事脚本变成手绘风格视频、修改已有集数、或给这套风格的视频加配音时,必须使用这个…
This repository is archived — consider an actively maintained alternative.
用 Remotion 制作「纸片分层动画」视频:把背景、主角、?
4 installsConvert local audio/video files or public media URLs into subtitle files by uploading local fil…
3 installs用 Remotion 制作可复用的口播视频工程:支持口播音频/视频、右下角圆形 PIP、底部同步字幕、顶部章节…
3 installs用 Remotion 制作数学证明/几何动画视频:深底高饱和 + 精准 SVG 几何 + ?
3 installsRelated neighbors and high-traction skills in the same topics — useful to compare before installing.
Router for all Remotion skills
515.3K installsExport a Remotion video
74.7K installsCreate a new Remotion video
74.5K installsTranscribing, displaying and animating captions
72.5K installsContent, animation and effects best practices
70.1K installsStructure Remotion markup for interactivity
68.4K installsOther skills from liangdabiao/video-skills-toolkit.
npx skills add liangdabiao/video-skills-toolkit
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Files included with this skill beyond the listing page.
SKILL.md
14,205 B
SUMMARY.md
491 B
把系列故事脚本(markdown)变成统一手绘风格的 Remotion 视频。风格资产全部是代码生成(无图片素材),只要复用 templates/remotion-project/src/ 里的四个风格文件,任何模型做出来的新集数都和第一集一致。
规范样板:第一集成品工程在 <VIDEO_WORKSPACE>/xiaobai-ai-ep01/,遇到拿不准的排版/节奏问题,先看它的 src/scenes.tsx。
<NOTES_VAULT>/创作/小白学AI第一季/ 下)。以用户指定的最新 markdown 为准,不要沿用旧版大纲。``bash mkdir "<VIDEOWORKSPACE>/xiaobai-ai-epNN" cp -R "./skills/sketch-story-remotion/templates/remotion-project/" \ "<VIDEOWORKSPACE>/xiaobai-ai-epNN/" cd "<VIDEO_WORKSPACE>/xiaobai-ai-epNN" && npm install ` ⚠️ 用原生 npm install,不要 rtk npm install(rtk 会把它翻译成 npm run install` 而报错)。
src/scenes.tsx 和 src/Root.tsx 的 SCENES 表。不要改 theme.ts / sketch.tsx / characters.tsx / ui.tsx(风格锁定文件;如果确实要加新的通用元素,加组件而不是改已有组件的视觉参数)。Root.tsx 的每场 frames,再根据字幕/metadata 调整场景内文字、框线、箭头、表情的出现帧。不要停留在无配音估时版本。- npx tsc --noEmit - 对每个场景渲一张接近结尾的静帧逐一检查:npx remotion still Episode --frame=<场景末帧-30> out/check-N.png,用读图检查文字溢出、元素重叠、遮挡。 - 视频完成后,把每个场景的最终呈现截图交给 Subagent 做独立视觉审核;重点查气泡漂浮/挡人、尾巴没指向说话人、汗滴/怒气线离头太远、文字溢出和误遮挡。按审核结果修改后,重新渲染受影响场景截图复查。 - 抽查字幕/关键词出现帧:话还没说时不能提前出现,话已经说完时不能还没画出来。 - 对流程词、列表词、便签词、金句关键词做关键词级同步抽查:先列 画面文字 -> 对应口播短语 -> 预计源时间,每个关键词至少渲染“出现前 0.5~1 秒”和“出现后 0.5 秒”两帧;前一帧不能露出该词,后一帧只能露出已经说到的词。 - 全部通过后 npx remotion render Episode out/epNN-demo.mp4。
| 项 | 值 |
|---|---|
| 画布 | 1920×1080 @ 30fps,米白纸底 #fbfaf5 |
| 墨色 | #161616(INK),线宽 3~4 |
| 强调色 | 红 #d0402b(标题/警示/圈叉)、蓝 #3a6bc9(标注/人物台词要点)、橙 #e8862e(箭头/流程)、绿 #3f8a3a(对勾/正面) |
| 字体 | macOS 手写体栈:'HanziPen SC','Hannotate SC','Wawati SC','Kaiti SC',cursive(在 theme.ts 的 FONT 里;换渲染机器需自带字体) |
| 线条 | 一切线框都用 sketch.tsx 的 wobbly 系列生成(种子化抖动),禁止用平直的 SVG rect/line 或 CSS border 画图形元素 |
| 动画 | 元素是"被画出来的":strokeDash 描边渐进 + 填充延迟;文字是淡入+轻微上移;没有滑入、弹跳、旋转等现代动效 |
| 素材 | 全部代码绘制,不用任何位图/图标库/emoji |
| 角色 | 组件 | 参数约定 |
|---|---|---|
| 小白(新人主角) | StickMan |
无眼镜,size 170~190,常用 mood:worried / shocked / happy |
| 老吴(老员工导师) | StickMan |
glasses 必开,size 比小白大一号(200~210),旁边常配 ThermosCup(保温杯,放在手边 x±55、y 比地面高 50 左右) |
| 客户/路人 | StickMan |
hair={false} 光头以示区分,生气时 armsUp + mood="shocked" + 头顶三根红色怒气短线 |
| AI 小智(独立形态) | CuteAi |
Q萌小电脑:天线+腮红+大眼,站立场景用它 |
| AI 小智(桌面形态) | AiScreen |
桌上显示器;faceOn 开脸(与 CuteAi 同一张 CuteFace),显示邮件等内容时不开脸、用 children 画内容 |
人类一律 StickMan,AI 一律 CuteAi/AiScreen,不要混用或发明新形象。
| 角色/轨道 | 用途 | MiniMax voice_id |
|---|---|---|
| 旁白 | 叙述、金句、客户/同事等龙套台词转述 | mossaudio2ecaeaac-5e5a-11f1-99fb-96e792fde6a1 |
| 小白 | 小白的直接台词 | Chineseplayfulstreamer_nv1 |
| 老吴 | 老吴的直接台词 | Chinesecasualinstructor_nv1 |
旁白使用上表中的固定 ID;不要使用旧的临时旁白 ID。
<BGM_FILE> 的音频轨,时长不够时循环铺满全片。volume=-34dB,加 highpass=f=80、equalizer=f=500:t=q:w=1.5:g=-3、人声 sidechain duck、首尾淡入淡出;视频流用 copy,避免重压画质。每个场景是一个独立组件,内部 useCurrentFrame() 从 0 开始。常用版式:
RedTitle 顶部居中(y70) → DeskLine 地面线(y800~880) → 角色站地面线上 → Bubble 气泡(左角色 tail="left" 放左上,右角色 tail="right" 放右上)→ Narration 底部旁白(y960)。SketchRect+HandText 排竖列或横排三格,流程用 SketchArrow(橙)串联,强调用 SketchHighlightCircle(红圈)或 SketchUnderline,否定用 SketchCross(红叉)。RedTitle(左黑右红),左侧列条目后整体打大红叉。规则:
<Svg> 外面;图形都在 <Svg> 里。prog(frame, start, duration)(自带 clamp);seed 用场景前缀保证唯一(如 s3box1)。30fps。场景时长按"把屏上文字慢速读一遍再加 1~2 秒"估:纯标题卡 ~130 帧;对话场景 250~350 帧;图解/对比场景 350~450 帧;收尾总结 ~500 帧。场景间由 Root 的 FadeScene 自动做 12 帧淡入淡出,场景内容在最后 30 帧不要再上新元素。
配音按场景分段生成(TTS 见 tts-skill / MiniMax),并且必须在生成音频后再改一版动画:
scripts/generateepNNtts.py),数据结构按 scene → utterances 拆分,每条 utterance 至少包含 role、text。public/audio/scenes/scene-01.mp3 …;同时保留分段音频到 work/audio/generated/。work/captions/epNN.srt 并复制到 public/captions/epNN.srt。sourceFrames = ceil(时长秒 × 30) + 15,最终交付时间轴按 1.2x 压缩为 playbackFrames = ceil(sourceFrames / 1.2)。<Audio src={staticFile('audio/scenes/scene-01.mp3')} playbackRate={1.2} />,并用同样的 1.2x 映射驱动画面。remotion.config.ts 保持默认(音频会自动混入 mp4)。生成配音后,必须检查音频、字幕和动画三者是否对齐:
npm install。\n),其次加大框,不要缩字号到 26 以下。HandText 默认居中锚点(x 是中心);align="left" 时 x 是左缘。Bubble 的 x/y 是左上角,宽度 w 固定、高度随内容撑开,注意别压到角色头。npx tsc --noEmit,Remotion 的运行时报错信息不如 tsc 直观。