首页 / 全部技能 / 内容创作 / presentation-video
内容创作 · iart-ai/data-animation-skills

presentation-video

This skill should be used when the user asks to "make an animated presentation", "turn a pitch deck into a video", "convert slides/a deck to video", "make a presentation video", "build a deck video", "narrate a slide deck as a video", or "auto-advance slides synced to a voiceover". Covers rebuilding slides as motion graphics with staggered build reveals, slide-to-slide transitions, and timing locked to per-slide narration.

风险提醒:橙色 · 评估后使用AI 侦查报告
作者 iart-aiGitHub iart-ai/data-animation-skills ↗Stars 6许可 MIT(仓库根 LICENSE:「MIT License」/「Copyright (c) 2026 iart.ai」;.claude-plugin/plugin.json 与 README「## License」同声明 MIT)commit 8ce2709c39
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

核心主张是重建而非录屏:录屏继承静态外观、鼠标抖动与硬切,重建才拿到帧确定性、可缓动转场、任意分辨率清晰与音频驱动的时长。

skills/presentation-video/SKILL.md
A screen-recording inherits the deck's static look, mouse jitter, and abrupt slide cuts. Rebuilding in code (Remotion) buys: per-frame-deterministic reveals, transitions that actually ease, text that stays crisp at any resolution, and slide durations driven by audio length.
注:工作模型是「deck 是脚本,视频是新产物」。

叙事优先:先定一句话脊梁,每页只讲一件事,页标题是论断而非标签。

skills/presentation-video/SKILL.md
- **One throughline (the spine).** State the deck's single takeaway in one sentence. Every slide must advance that sentence; if a slide doesn't, cut it or move it to an appendix.
注:自动播放的视频没有主讲人救场,结构必须自己承载逻辑。

唯一铁律:旁白掌控时钟——每页时长=该页音频实测长度+少量 handle,禁止目测。

skills/presentation-video/SKILL.md
**Each slide lasts exactly as long as its narration audio, plus a small handle.** Measure every voiceover clip's real duration, convert to frames, and make that the slide's length.
注:reference 在 calculateMetadata 里并行量测并换算帧数(HANDLE=0.4s)。

每页音频挂在自己组件内:声画由同一 Sequence 定位,物理上不可能漂移。

skills/presentation-video/references/slide-components.md
Because the audio lives inside the same component that draws the visuals, and both are placed by the sequencer at the same start frame, voice and picture physically cannot drift.
注:用结构性论证排除失步,而不是靠人工校准。

转场帧预算要记账:TransitionSeries 的转场是重叠而非新增时间,会吃掉邻页帧。

skills/presentation-video/references/sequencing.md
A `<TransitionSeries.Transition>` does **not** add time — it overlaps its neighbors, consuming frames from the end of the outgoing slide and the start of the incoming one.
注:旁白必须完整播完的页要把转场长度补回预算。

页内 build 揭示要与旁白同步:元素在被念到的时刻出现,读者不领先三行。

skills/presentation-video/SKILL.md
The point of a build is pacing: show each element when the narration reaches it, so the viewer reads the line being spoken — not three lines ahead.
注:因此揭示节奏由旁白派生,而不是固定网格。

可读性是硬线:正文 ≥28–32px @1080p、标题 56–80px、对比 ≥4.5:1、内容留在中心 90%。

skills/presentation-video/SKILL.md
- **Type scale, not deck scale.** A deck viewed on a laptop ≠ a video viewed in a feed. Bump body to ≥ 28–32px at 1080p; titles 56–80px.
注:配套纪律:挤不下就拆页,绝不缩小字号。

验证环:先读 compositions 拿总时长,再从「每页的驻留段」取样而不是在转场上取样。

skills/presentation-video/SKILL.md
- Use `npx remotion compositions` to read the deck's `durationInFrames`/`fps` and pick the end frame; sample a still **inside each slide's hold**, not on a transition, to judge the built state.
注:检查项含越出中心 90%、正文字号过小、对比过低。

转场要承载逻辑(因此/但是/所以),安静的 fade 给「以及」,大 push 只给章节分隔。

skills/presentation-video/SKILL.md
- **Transitions carry logic, not just motion.** The cut between slides should answer "so what's next?" — therefore, but, which means, here's the proof.
注:把转场从装饰升级为论证标记。

2核心能力

01旁白驱动时长(calculateMetadata 并行量测 → 帧 + HANDLE)
02叙事结构工具(spine / 一页一意 / tension→resolution 的 pitch 五幕)
03slide 组件库(useEnter / TitleCard / BulletList / Slide / SectionDivider)
04TransitionSeries 编排(按邻居类型选 fade 或 slide,divider 用大转场)
05转场帧预算记账(把被吃掉的帧补回该页)
06可读性检查清单(字号/对比/安全区/数字用 tabular-nums)
07批量渲染多份 deck(一份模板 × 每客户/地区一个 JSON)
08失败模式清单(猜时长、音频挂在 deck 级、每刀重转场、一页塞太多、字体缺失)

3外部依赖

类型依赖
packageremotion(AbsoluteFill/Sequence/Audio/spring/interpolate)
package@remotion/media-utils(getAudioDurationInSeconds 量测旁白)
package@remotion/transitions(TransitionSeries / linearTiming / fade / slide)
package@remotion/google-fonts(reference 建议的字体加载方式;选择它会在渲染期访问 Google Fonts)
clinpm / npx(安装并运行 Remotion 工程、读 compositions、渲染)
networkiart.ai(reference 尾部推广链接,具 utm 参数;仅读者点击才请求)

4风险提醒 风险提醒:橙色 · 评估后使用

风险提醒:橙色 · 评估后使用
  • 依赖未在 SKILL.md 层声明完整 — @remotion/media-utils / @remotion/transitions / @remotion/google-fonts 只在 reference(或 pitfalls)出现,只读 SKILL.md 无法得到完整依赖面。
  • 渲染期字体出网 — 选用 @remotion/google-fonts 会在渲染期访问 Google Fonts(可用 staticFile 规避),属未声明的出网路径。
  • 旁白素材完全依赖使用者 — skill 不提供 TTS,也不校验音频质量与版权;音频缺失或损坏会直接导致 calculateMetadata 失败。
  • 远程包与本地代码执行 — npm i 安装 remotion 全家桶并执行;Remotion 会 bundle 运行项目代码(框架固有属性)。
  • 商业引流位 — reference 尾部固定 iart.ai 推广段与 utm 链接。
风险提醒:橙色,评估后使用。触发项是分级范式「依赖第三方插件、镜像、远程包」:skill 目录为纯 Markdown(无脚本、无凭证读取、无 env 读取),但交付路径必须安装并执行远程包 remotion + @remotion/media-utils + @remotion/transitions;此外 reference 明确建议用 @remotion/google-fonts 加载品牌字体,选择该路径会在渲染期向 Google Fonts 发起请求。同仓 `remotion-video` 已按同口径判橙,此处与之一致。**明确不成立的项**:无凭证/cookie/环境变量读取(token 扫描零实质命中);不向外部生成服务上传素材(旁白与画面全程本地);无 TLS 降级、无 `--no-verify`、无沙箱关闭、无反自动化绕过。触发条件:仅在安装工程、渲染视频或选用 Google Fonts 字体时发生。

5第二遍独立确认

  • [ok] 音频量测与 HANDLE 数值是否两处一致 — SKILL.md 代码块 `const HANDLE = 0.4; // breathing room after the voice ends` 与 sequencing.md 的 `const HANDLE = 0.4; // seconds of breathing room after each voice line` 同值。
  • [ok] theme 数值是否与 reference 一致 — SKILL.md 示例 theme(bg #0B0B12 / fg #F5F5F7 / accent #6C5CE7 / titlePx 72 / bodyPx 30 / maxWidthPct 90)与 slide-components.md 的 theme.ts 逐项相同。
  • [ok] 转场帧预算的声明与实现 — SKILL.md「A transition borrows frames from both neighbors, so add its length back into the slide budget」与 sequencing.md 的记账规则(slide.durationInFrames += TRANSITION)同口径。
  • [discrepancy] @remotion/google-fonts 的声明层级 — @remotion/google-fonts 只出现在 sequencing.md 的 pitfalls(作为可选建议),SKILL.md 既未列入依赖面、也未提示渲染期可能访问 Google Fonts;照抄该建议会产生未声明的出网行为。
  • [ok] SKILL.md 内联组件与 reference 组件是否冲突 — SKILL.md 的 Bullet 用 spring(...durationInFrames: 12) + interpolate(p,[0,1],[18,0]),reference 用 useEnter() 封装同一动效;属精简版与封装版的关系,非矛盾。
  • [unlocatable] 旁白生成方式是否被声明 — SKILL.md workflow 第 2 步写「Generate/record narration per slide.(One audio file per slide (TTS or recorded).)」但未指名任何 TTS 服务或端点——属用户自备素材;「无 TTS 端点」这一结论无法在源码内定位到明确声明,故记 unlocatable(非档位依据)。

6结论

  • 时长来自音频实测而非目测,从根上避免旁白被截断或留白
  • 声画同步靠结构保证(音频挂在页组件内),不靠人工校准
  • 叙事结构被当成一等公民(spine、一页一意、转场承载逻辑)
  • 转场帧预算有记账规则,避免静默吃掉旁白时间
  • 可读性有可判定硬线,并给出「拆页而不是缩字」的处置
  • 适合:把 pitch deck、webinar、课程模块转成自动播放旁白视频的场景:需要时长严格跟随旁白、每页一个论点、品牌锁、可按客户/地区批量出片。
    不适合:没有旁白音频(本 skill 全部时长逻辑建立在音频上)或只需要一页式信息图/图表视频(用 animated-infographic、chart-animation);纯录屏需求。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-28
    方式 A · 人下载镜像包下载 presentation-video.tar.gz
    sha256: c9a450ffb476b92f…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit 8ce2709c39;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库iart-ai / iart-ai/data-animation-skills
    Stars6
    最近推送2026-06-22
    本 skill commit8ce2709c39
    许可MIT(仓库根 LICENSE:「MIT License」/「Copyright (c) 2026 iart.ai」;.claude-plugin/plugin.json 与 README「## License」同声明 MIT)
    本站信息
    收录日期2026-09-06
    分类内容创作
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近